kotlin(Java函数式API的使用)
Java函数式API的使用123public interface OnClickListener{ void onClick(View v);} 这种接口被称为函数式接口,或者 SAM 接口, SAM 代表单抽象方法。 使用函数式接口的前体这里的前提是,使用kotlin去调用java方法,而且java方法是个单抽象接口方法,就可以直接使用函数式API。已知在kotlin中,有很多简单快捷的函数式API操作。例如: 123val list = listOf("Apple","Banana","Orange","Grape","Watermelon")val maxLengthFruit =...
kali中使用clash作为代理
一般的桌面级OS,如ubuntu,centos。他们都会有图形化的代理配置如下图所示。但是,在kali中他并没有这个配置。因此你需要通过命令行界面去配置代理。这里以clash为例clashclash是一个广泛使用的代理工具,可以跨平台使用,兼容windows,linux,mac。 clash的安装你可以在这个链接中获得clash的最新版本这里是dashboard的发行版本 这里演示在linux下安装clash的过程 Linux这次演示使用clash+dashboard作为代理服务并配合机场使用 dashboarddashboard是一个ui界面,用来管理clash,他更多用于云服务器,一般默认为9090端口,可以从外界访问,从而控制代理服务。 先在用户目录下安装一个clash文件夹,并进入到其中 1mkdir clash && cd clash 然后再目录下,把机场给的config.yaml下载下来,可以使用wget 1wget "机场给你的订阅链接" -O...
clash快速开启和关闭代理模式
如何快速开启和关闭代理模式这一步的前提是你已经完成了clash的部署内容上一篇文章当完成了clash的部署后,自然是需要打开代理的简单的方法就是 123export https_proxy=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export all_proxy=socks5://127.0.0.1:7891 但是这只是临时使用。如果每次开关代理都这般麻烦,倒不如不用也可以直接将这个部署到/etc/profile或者/root/.bashrc中。但他是永久性的改变。于是有些情况,他并不适用。国内的网站访问时,如果打开代理会使访问速度大大降低。得不偿失。 所以要设计一个便捷的开关方式,用来便捷的打开或者关闭代理。 第一种简洁方式(但是并不太符合所期望的简洁模式) 设计两个sh脚本分别为open.sh和close.sh 先在目录下建一个目录switch1mkdir switch && cd...
快速便捷开关代理模式
如何快速开启和关闭代理模式这一步的前提是你已经完成了clash的部署内容上一篇文章当完成了clash的部署后,自然是需要打开代理的简单的方法就是 123export https_proxy=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export all_proxy=socks5://127.0.0.1:7891 但是这只是临时使用。如果每次开关代理都这般麻烦,倒不如不用也可以直接将这个部署到/etc/profile或者/root/.bashrc中。但他是永久性的改变。于是有些情况,他并不适用。国内的网站访问时,如果打开代理会使访问速度大大降低。得不偿失。 所以要设计一个便捷的开关方式,用来便捷的打开或者关闭代理。 第一种简洁方式(但是并不太符合所期望的简洁模式) 设计两个sh脚本分别为open.sh和close.sh 先在目录下建一个目录switch1mkdir switch && cd...
Linux 四个目录命令用途和区别
Linux下 /bin、/sbin、/usr/sbin、/usr/bin 目录的作用和区别首先区别/sbin,/bin/sbin 下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统 /bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到 无论是/bin、/sbin、/usr/sbin、/usr/bin他们都是全局可以执行的命令
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...