electron
npm install12345678npm install moduleName # 安装模块到项目目录下 npm install -g moduleName # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。 npm install -save moduleName # -save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。 npm install -save-dev moduleName # -save-dev 的意思是将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖。
npm 文件夹权限右键属性,安全页面给所有用户完全访问权限
【Node.js】Node.js安装及环境配置 - 腾讯云开发者社区-腾讯云 (tencent.com)
安装electronnpm install electron --save-dev
简单构建初始化脚手架12# 新建项目文件夹npm init
这里注意入口需要设为main.js而不是默认的i ...
git
参考资料Git - Book (git-scm.com)
简介概念
仓库:用来保存项目元数据和对象数据库的地方
工作区:对应某个版本,当前的文件状态
暂存区:如果要commit,提交的是这里的内容
分支:把某些工作从开发主线上分离出来,对于协同开发起到重要作用
提交:每次需要修改的内容完成以后,保存一个快照
远程仓库:用来协同的远程仓库,作用为同步本地修改,完成写作需求
版本控制
什么是版本控制
版本控制是一种记录文件内容变化,以便于将来查阅特定版本修订情况的系统.
版本控制其实最重要的是可以记录文件的修改历史, 从而让用户能够查看历史版本, 方便版本切换
git和代码托管中心代码托管中心是基于网络服务器的远程代码仓库,一般我们简单的成为远程库
局域网
GitLab
互联网
GitHub
GItee
分支在版本控制过程中,同时推进多个任务,我们可以为每个任务创建单独的分支,使用分支意味着从主线上离开了,开发分支不会影响主分支的运行
git切换分支本质上是移动Head指针
原理
区域工作区:除去.git文件夹的部分
暂存区:累积修改
本地库:以diff的形式存放历史代 ...
oauth2
基本概念Oauth是一种授权机制,由资源的所有者告诉系统,同意第三方进入系统获取资源,系统会产生一个短期的进入令牌(token)供第三方应用使用
交互角色
资源所有者:即用户,用户在某些情况下会需要访问自己的资源
客户应用:通常是一个web或者无线应用,他需要访问用户的受保护资源
资源服务器:存储受保护的资源,定义了可访问资源的api,接收并验证客户端的访问令牌以决定是否授权访问资源
授权服务器:负责验证资源所有者的身份并向客户端办法访问令牌
使用场景开放系统间的授权社交登录如使用github账号登录gitee
开放api令牌与密码令牌与密码都可以用来进入系统,但有差异
令牌是短期的,到期会自动失效, 用户自己无法修改,密码一般长期有效,用户不修改不会发生变化
令牌可以被资源拥有者撤销,会立即失效
令牌范围有限
授权方式不管哪一种授权方式,第三方应用申请令牌之前,都必须到系统备案。说明自己的身份,然后会拿到两个身份识别码,客户端ID(client ID)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是拿不到令牌的。
授权码 autho ...
algorithm
动态规划
什么是动态规划(Dynamic Programming)?动态规划的意义是什么? - 知乎 (zhihu.com)
最少钞票数量问题引入
假设您是个土豪,身上带了足够的1、5、10、20、50、100元面值的钞票。现在您的目标是凑出某个金额w,需要用到尽量少的钞票。
这里使用贪心算法:首先使用最大面值,直到剩余的金额不满最大面值则依次向下,直到满足w。
但如果面额为1, 5, 11的面额纸币凑15时,贪心算法会得到错误的结果:
11+1+1+1+1 5张
但完全可以 5+5+5 3张
而贪心算法只能考虑眼前利益
那考虑其他办法,比如使用暴力算法,但这样的情况过多,时间无法承受。
重新分析:当我们第一步选用11元面值时,会面对w=4的情况:从上图= f(4)+1.同理,当我们第一步选用1,w=14:cost=f(14)+1,第一步选用5,w=10:cost = f(10)+1.
其中,cost为钞票数量,f为最少钞票数,那此时f(15) = min(以上三种cost情况)
这就是动态规划
动态规 ...
nginx
基本概念反向代理对客户端隐藏服务器的真实位置,与正向代理(vpn)相反
负载均衡轮询,加权轮询,iphash
动静分离动态页面与静态页面交给不同的服务器解析
默认的配置文件123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { w ...
aidlux 配合 nginx 搞一个小服务器用
内网渗透工具选择一款的内网渗透工具,such as 飞鸽,点击注册,注意客户端要下载arm64的免费的基本能用,不过速度比较慢,对速度有要求比如想要远程控制aidlux的建议付费上高速通道。
nginx反向代理aidlux 已经安装了nginx,其配置文件在:/etc/nginx/下我们可以在这个文件夹下创建一个conf结尾的文件:其中末尾斜杠可参考nginx如何配置代理转发
服务自启在/root/下找到 .rc.local文件编辑后台启动部分可以参考Linux nohup 命令
React
虚拟DOM
本质是object类型的一般对象
虚拟DOM属性较少(相对于真实DOM),因为虚拟DOM是React的内部使用,无需真实DOM的那么多属性
虚拟DOM最终会被React转换为真实DOM呈现在页面上
1234567891011121314151617181920<!DOCTYPE html><html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.2/react-dom.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalo ...
office
excelexcel中取消合并单元格并填充
选中区域,点击取消合并单元格
键盘“f5”,定位条件选择空值
此时所选区域为刚才所选区域中的空值区域,也就是取消合并单元格之后空出来的地方
键盘输入“=”,键入公式,点击空值上方单元格(合并单元格中的值)
“ctrl”+“enter”批量赋值
定位快捷键ctrl+G,方便在选中数据集中选出符合条件的单元格
MATCHmatch函数可以比较某个值在某个数据集中是否存在,如果存在返回其行,不存在则显示“#N/A”,藉由此可以筛选出某个数据集中在指定数据集中不存在的值,配合excel的定位功能中的公式部分(错误),可以删除不存在的整行数据。
12=MATCH(A1,J:J,0)=MATCH(要查找的值,数据集:J,J表示整个J列,0表示完全匹配)
excel中生成SQL语句12345678910=CONCAT("UPDATE amer_model SET description='",C6,"',sender='",D6,"',rec ...
aidlux上部署mirai
aidlux上部署miraijdk11安装
注:如果遇到失败的情况可以尝试换源,我没有换源安装成功了
apt-get update
apt install openjdk-11-jdk
安装mirai
(感谢AidLux开发者技术1群的网友 “受、死 ” 提供的思路)
先下载windows版本的iTXTech MCL Installer
运行后会生成这些文件
将这些文件(安装器,文档,cmd文件可以除外)通过aidlux网页端的文件管理器上传到aidlux中
如存入/home/mirai/目录下
前往/home/mirai/目录,运行./mcl执行安装(或者java -jar mcl.jar执行安装)
安装完成(直接启动)
./mcl 启动
自动登录设置
vim打开/home/mirai/config/Console/AutoLogin.yml文件
编辑账号密码,:wq保存退出
滑动验证码问题
参考mirai (mamoe.net ...
Spring
一些经验构造方法注入Spring 团队提倡使用基于构造方法的注入,因为这样一方面可以将依赖注入到一个不可变的变量中 (注: final 修饰的变量),另一方面也可以保证这些变量的值不会是 null。
ApplicationContextAware接口一个bean实现该接口,spring会自动调用该类中实现的setApplicationContext接口。
参考案例:quartz中的AutowiringSpringBeanJobFactory
123456789101112131415161718/** * 负责生成job实例 */public class AutoWiringSpringBeanJobFactory extends SpringBeanJobFactory implements ApplicationContextAware { private AutowireCapableBeanFactory beanFactory; @Override public void setApplicationContext(final Applicatio ...