Node.js 工具集:npm、npx、nrm、nvm
node:是一个基于 Chrome V8 引擎的 JS 运行环境。 npm:是 node.js 默认的包管理系统(用 JavaScript 编写的),在安装的 node 的时候,npm 也会跟着一起安装,管理 node 中的第三方插件。 npx:npm 从 v5.2.0 开始新增了 npx 命令,>= 该版本会自动安装 npx,附带:npx 有什么作用跟意义?为什么要有 npx?什么场景使用?。 nrm:是一个 npm 源管理工具,使用它可以快速切换 npm 源,默认是官方源,当 npm 下载包过慢时,可能需要切换到第三方源(例如:淘宝、科大…),还有公司私有源地址等等。 nvm:node 版本管理器,也就是说:一个 nvm 可以管理多个 node 版本(包含 npm 与 npx),可以方便快捷的 安装、切换 不同版本的 node。 安装nvm的安装只需要执行以下一条命令linux下 1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh |...
Nginx URI 匹配和位置配置
location配置 匹配 URI 类型,有四种参数可选,当然也可以不带参数。 命名location,用@来标识,类似于定义goto语句块。1234561. location = # 精准匹配2. location ^~ # 带参前缀匹配3. location ~ # 正则匹配(区分大小写)4. location ~* # 正则匹配(不区分大小写)5. location /a # 普通前缀匹配,优先级低于带参数前缀匹配。6. location / # 任何没有匹配成功的,都会匹配这里处理
Ubuntu上轻松安装Nginx
在ubuntu下按照nginx,只需要使用简单的命令 1apt install nginx nginx的配置目录都在/etc/nginx下。 主要的 Nginx 配置文件是/etc/nginx/nginx.conf。
SQLite:单线程数据库,适用于小型项目
SQLite是一个嵌入式数据库引擎,它被设计为单线程访问。这意味着在默认情况下,SQLite不支持多线程并发访问同一个数据库连接。当多个线程尝试同时访问同一个数据库连接时,可能会导致数据库文件损坏或产生不可预测的结果。但是其实作为嵌入式数据库,他本身已经可以支撑的起小型项目了。前期都可以用sqlite来维系数据库
协程异步并发及结构化
协程(3)默认顺序1234567891011121314151617181920212223import kotlinx.coroutines.*import kotlin.system.*fun main() = runBlocking<Unit> { //sampleStart val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() println("The answer is ${one + two}") } println("Completed in $time ms") //sampleEnd }suspend fun doSomethingUsefulOne(): Int { delay(1000L) // pretend we...
Dockerfile指令指南
FROM:指定基础镜像,例如 FROM Ubuntu:18.04RUN:执行命令,在dockerfile中,他每次执行RUN命令都会分层。镜像会分层。这会造成镜像臃肿,因此常用&&来一次执行多次命令。COPY:他会从宿主机复制文件到镜像中。例如COPY app.py /app/这个命令就会将app.py复制到镜像的app目录下,当然,这个目录你可以自己指定ADD:类似于COPY,但是他支持URL(包括其他位置和网络部分)和自动解压WORKDIR:指定工作目录,如:workdir:/app,如果没有指定的话,他就会默认在这个目录下执行。EXPOSE:暴露端口,比如EXPOSE...
JAR包中资源访问与Class访问
在java使用以及部署应用时,经常会打一个jar包并将他安置在服务器上运行,而当你将配置文件放在resources目录下时,他将会被一起打包成一个class的类。并保存在jar包中,此时你无法通过相对路径来获取你放在resources目录下的文件,而需要通过Class.getResource()或Class.getResourceAsStream()来获取resources下的文件的访问。 请注意,jar文件中包含的资源是只读的。您将无法保存对数据库的任何更改。
自给自足的 SQLite 轻量级数据库
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。SQLite 是自给自足的,这意味着不需要任何外部的依赖。 sqlite的使用第一步,你需要安装sqlite,他与mysql的安装并不一样,他只有sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件三个文件,所以他是极为轻量级的。(windows中)linux中的话,直接apt或者yum安装会更快一些他的下载地址为(下载)[http://www.sqlite.org/download.html]安装后,添加到PATH路径,他便可以基本使用了,在本笔记里,不细讲他的各种细节,只为快速使用而写。然后了解一些基本命令 基本命令12345C:\>sqlite3SQLite version 3.7.15.2 2013-01-09 11:53:05Enter ".help" for instructionsEnter SQL...
协程取消与异常处理
协程(2)当我们需要取消协程时,我们可以通过对launch的返回值Job对象执行cancel()方法来取消协程。但是当协程中正在执行计算相关的事件时,协程将不会被取消,而是会执行下去。因此即便取消了协程,任然要添加一个join()方法,避免协程没有正确取消和结束,而直接执行后面的操作。有一个简单的方法即cancelAndjoin()可以直接结合两个方法,取消并阻塞。例如: 12345678910111213141516171819202122import kotlinx.coroutines.*fun main() = runBlocking { //sampleStart val startTime = System.currentTimeMillis() val job = launch(Dispatchers.Default) { var nextPrintTime = startTime var i = 0 while (i < 5) { // computation...
repeat函数循环执行函数体
关键字kotlinrepeat(3){ println(“hello,world”)} 他会将repeat中的函数体执行3遍