x gitflow git add . 放进暂存区,git restore --staged查看修改内容,q退出,git commit提交 自动弹出COMMIT_EDITMSG,第一行空行填入提交信息记录,关闭code编辑器提交成功 git flow init feature功能分支 bugfix bug修复 release 准备发布新版本,这三个都是从develop创建,合并回develop,release再合并回main hotfix 热修复分支,从main创建,合并回main和develop分支
x Scoop安装 12Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserInvoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression scoop将软件包隔离在~\scoop目录中 对于终端应用程序,scoop在~\scoop\shims创建垫片,文件夹自动加入path环境变量, 对于图形应用程序,有scoop apps文件夹 buf安装 buf是protobuf的工具链与生态系统,让protobuf简单安全开发 1scoop instal
工具用suricata suricata规则本质上是一条签名,由action,header,options三部分组成 基本结构 1动作 协议 源ip 源端口 目的ip 目的端口 在kali上安装和使用suricata 更新软件源 12sudo apt updatesudo apt install -y suricata jq -y的意思是自动回答yse jq 不是必须的,但 Suricata 官方 quickstart 推荐安装,因为它方便查看 eve.json 这种 JSON 日志。 检查是否安装成功 1suricata --build-info 检查服务状态 1sudo systemct
x 初始化项目 12345mkdir echo-practicecd echo-practicego mod init echo-practicego get github.com/labstack/echo/v4 连接postgresql和redis 123if databaseURL == "" { databaseURL = "postgres://postgres:Lyx88888888.@@localhost:5432/postgres?sslmode=disable"} echo负责路由和接口,pg用pgxpool连接
x WebSocket协议 websocket是一种在单个TCP连接上建立的全双工通信协议,服务端和客户端可以护发信息,实现异步通信 c2 command and control 攻击者用来远程控制已经攻陷的计算机(肉鸡,僵尸机) 组成部分 c2服务器 发送指令和窃取数据 c2客户端(木马) 运行在受害者电脑上的恶意程序,负责:定期连接服务器,等待服务器指令,执行指令,将数据返回服务器 常见c2通信形式 https,dns,websocket,邮件,网络api,自定义tcp/udp 服务端实现(server.go) 准备工作 安装websocket依赖 1go get gith
x nginx介绍 tomcat在内网里,当我们不想把tomcat端口直接对外网开放,就在前边放一个nginx。 用户浏览器访问公网80/443端口,经过nginx服务器,做一个内网转发,转发到tomcat8080端口 nginx如何解析php 浏览器发起请求到nginx,nginx通过FastCGI协议调用PHP-FPM 12345678server{ listen 80; server_name example.com;//设置该服务器的域名是example.com location / {//匹配所有Url路径 proxy_pass http://192.16
x 幂等性 统一操作执行一次或多次,产生结果一样 OAuth 2.0 通过“授权服务器”给第三方应用发一个访问令牌,让它在限定范围内访问资源 授权码模式 用户访问第三方网站,第三方网站跳转到微信,微信弹出授权页面(假设用户已登录),用户同意授权,微信返回一个code给第三方网站前端,第三方网站后端拿着code去和微信服务器换access_token,第三方网站再用access_token获取用户信息 简化模式 用户访问第三方网站,第三方网站跳转到微信,微信弹出授权页面(假设用户已登录),用户同意授权,微信返回access_token给浏览器,浏览器前端拿access_token请求资源
x 关闭自动补全 ctrl+Alt+s 在设置窗口中,导航到:Editor → General → Code Completion。 在设置窗口中,导航到:Editor → General → Code Completion。 inline最上方关闭 strconv 用于字符串和基本数据类型之间进行相互转换 123456789101112package mainimport ( "fmt" "strconv")func main() { s := strconv.Itoa(123)//"123" n, err := st
x 计网学习的核心内容就是网络协议的学习 看概念太牢了,举个例子辅助记忆和理解,这版没ai纯手打 以TCP/IP五层为例 当访问http://example.com时 应用层:HTTP,DNS 浏览器遵循HTTP 协议,构造了一个GET请求,代理触发DNS查询 1tomcat和Clash等代理的工作都是在HTTP等应用层的反向代理,不是DNS的反向代理 代理是位于客户端与服务器之间的中间实体,代表客户端完成某些请求,常见走正向代理或DNS代理 正向代理代表客户端连接服务器,反向代理代表服务器接收客户端 传输层:TCP 然后遵循TCP三次握手协议 客户端发SYN 服务端回SYN+ACK 客
x 有索引后发生了什么 执行: 1CREATE INDEX idx_users_email ON users(email); 数据库会单独建一张索引目录表: 把所有 email提前排序,并记录好每行数据在磁盘的位置。 结构类似这样: 12345email字段(已排序) 数据物理位置a1@qq.com 第38行a2@qq.com 第105行abc@qq.com 第209行... 查询时变成了: 去索引目录里用二分查找 有序数据里找目标 email,不用逐条遍历 找到后直接拿物理位置,定位到原表那一行 1