11 2023 档案

摘要:1. 服务器 listen 时,计算了全/半连接队列的长度,还申请了相关内存并初始化。 2. 客户端 connect 时,把本地 socket 状态设置成了 TCP_SYN_SENT,选则一个可用的端口,发出 SYN 握手请求并启动重传定时器。 3. 服务器响应 ack 时,会判断下接收队列是否满了 阅读全文
posted @ 2023-11-29 16:21 朝阳1 阅读(31) 评论(0) 推荐(0)
摘要:参考连接 注意 hard nofile 一定要比 fs.nr_open 要小,否则可能导致用户无法登陆。 临时修改 + 永久修改 第一种:在终端直接运行 ulimit -HSn 102400 这只是在当前终端有效,退出之后,open files 又变为默认值。 第二种:在/etc/profile文件 阅读全文
posted @ 2023-11-24 14:00 朝阳1 阅读(40) 评论(0) 推荐(0)
摘要:之前go写的,转成了python版本,日志是json格式的,按行读取 {"aid":"1111","cid":"2222","callback_url":"http:\/\/ad.toutiao.com\/track\/activate\/?callback=B.eDCQxxxxxGCB&os=0& 阅读全文
posted @ 2023-11-23 12:00 朝阳1 阅读(209) 评论(0) 推荐(0)
摘要:安装 pip install pyinstaller 执行 pyinstaller --onefile xxxxx.py 会在当前文件的同级目录生成dist文件夹,可执行文件就在里面 阅读全文
posted @ 2023-11-23 11:37 朝阳1 阅读(31) 评论(0) 推荐(0)
摘要:iptables -A INPUT -s 192.168.1.2 -j DROP 阅读全文
posted @ 2023-11-22 16:20 朝阳1 阅读(129) 评论(0) 推荐(0)
摘要:go build -ldflags="-s -w" -o server main.go 阅读全文
posted @ 2023-11-22 15:04 朝阳1 阅读(52) 评论(0) 推荐(0)
摘要:首先在app目录下创建Task.php <?php namespace app; use Workerman\Connection\TcpConnection; class Task { /** * 只会执行一次 * @return void */ public function onWorkerS 阅读全文
posted @ 2023-11-20 13:59 朝阳1 阅读(513) 评论(0) 推荐(0)
摘要:<?php // 定义扇形的圆心坐标和半径 $centerX = 0; // 扇形圆心X坐标 $centerY = 0; // 扇形圆心Y坐标 $radius = 10; // 扇形半径 // 定义子弹的起始坐标和速度 $startX = 5; // 子弹起始X坐标 $startY = 5; // 阅读全文
posted @ 2023-11-17 15:49 朝阳1 阅读(49) 评论(0) 推荐(0)
摘要:import os import subprocess def play_videos_in_folder(folder_path): # 获取所有视频文件 files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) 阅读全文
posted @ 2023-11-16 14:58 朝阳1 阅读(331) 评论(0) 推荐(0)
摘要:最近有个需求是把看广告的日志转成excel package main import ( "bufio" "encoding/json" "flag" "fmt" "github.com/xuri/excelize/v2" "os" "time" ) // Ad 广告 type Ad struct { 阅读全文
posted @ 2023-11-16 11:49 朝阳1 阅读(183) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/disk" "github.com/shirou/gopsutil/host" "github.com/shirou/go 阅读全文
posted @ 2023-11-16 11:26 朝阳1 阅读(63) 评论(0) 推荐(0)
摘要:先通过命令行进入mysql的root账户: 更改加密方式 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 更改密码 ALTER USER 'root'@'localhost' IDENTIFI 阅读全文
posted @ 2023-11-16 09:46 朝阳1 阅读(147) 评论(0) 推荐(0)
摘要:package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "math/big" "net" "os" "time" ) func main() { max := n 阅读全文
posted @ 2023-11-16 09:39 朝阳1 阅读(74) 评论(0) 推荐(0)
摘要:1:有账号的情况下 use mysql; update user set Host = '%' where User='root'; flush privileges; 2:无账号的情况下,grant 命令重新创建一个用户 grant all privileges on *.* to root @" 阅读全文
posted @ 2023-11-16 09:30 朝阳1 阅读(20) 评论(0) 推荐(0)
摘要:XA的性能很低,但是没得选的时候,也是个方案 <?PHP $dbtest1 = new mysqli("127.0.0.1","public","public","dbtest1")or die("dbtest1 连接失败"); $dbtest2 = new mysqli("127.0.0.1pub 阅读全文
posted @ 2023-11-15 10:38 朝阳1 阅读(46) 评论(0) 推荐(0)
摘要:编辑 以下命令在命令模式执行 i,a,r:在光标的前,后,上方插入字符命令(i=insert,a=append,r=replace) O,o:在当前行前面,后面插入一空行 cw,dw:改变(置换)/删除光标所在处的单词的命令 (c=change,d=delete) x,d$,dd:删除光标处,光标之 阅读全文
posted @ 2023-11-15 09:23 朝阳1 阅读(89) 评论(0) 推荐(0)
摘要:创建 myworkspace 主项目 mkdir myworkspace cd myworkspace 创建 common 子项目 mkdir common && cd common go mod init common vim common.go myworkspace/common/common 阅读全文
posted @ 2023-11-14 16:57 朝阳1 阅读(86) 评论(0) 推荐(0)
摘要:反射的结构体 //reflect/type.go type Type interface { // 该类型内存分配大小(内存对齐单位子节) Align() int // 该类型作为结构体字段时内存分配大小(内存对齐单位子节) FieldAlign() int // 根据index in [0, Nu 阅读全文
posted @ 2023-11-14 16:24 朝阳1 阅读(32) 评论(0) 推荐(0)
摘要:写锁需要阻塞写锁:一个协程拥有写锁时,其他协程写锁定需要阻塞 写锁需要阻塞读锁:一个协程拥有写锁时,其他协程读锁定需要阻塞 读锁需要阻塞写锁:一个协程拥有读锁时,其他协程写锁定需要阻塞 读锁不能阻塞读锁:一个协程拥有读锁时,其他协程也可以拥有读锁 阅读全文
posted @ 2023-11-14 09:27 朝阳1 阅读(16) 评论(0) 推荐(0)
摘要:需要下载graphviz package main import ( "math/rand" "os" "runtime/pprof" "time" ) func generate(n int) []int { rand.Seed(time.Now().UnixNano()) nums := mak 阅读全文
posted @ 2023-11-13 15:28 朝阳1 阅读(58) 评论(0) 推荐(0)
摘要:需要下载graphviz package main import ( "log" "os" "runtime/trace" ) func main() { file, err := os.Create("trace.out") if err != nil { log.Fatal(err) } def 阅读全文
posted @ 2023-11-13 15:26 朝阳1 阅读(114) 评论(0) 推荐(0)
摘要:每一个 OS 线程都有一个固定大小的内存块(一般会是 2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量。 这个固定大小的栈同时很大又很小。因为 2MB 的栈对于一个小小的 goroutine 来说是很大的内存浪费,而 对于一些复杂的任务(如深度嵌套的递归)来 阅读全文
posted @ 2023-11-13 11:14 朝阳1 阅读(95) 评论(0) 推荐(0)
摘要:nats自行安装 消费端 package main import ( "fmt" "github.com/nats-io/nats.go" ) ////nats-server 在管理 subject 的时候是通过’.’ 进行分割的,server 底层是使用 tree module 分层管理 subj 阅读全文
posted @ 2023-11-10 14:21 朝阳1 阅读(428) 评论(0) 推荐(0)
摘要:golang主要有两种锁:互斥锁和读写锁 互斥锁 Mutex 用于提供一种加锁机制(Locking Mechanism),保证同一时刻只有一个goroutine在临界区运行 package main import ( "fmt" "sync" "time" ) func main() { var m 阅读全文
posted @ 2023-11-10 11:28 朝阳1 阅读(66) 评论(0) 推荐(0)
摘要:断线重连的逻辑很简单,就是把用户存到服务器内存中,当客户端再次登录的时候,判断内存中是否有用户的值,有的话替换 package main import ( "fmt" "github.com/gorilla/websocket" "log" "net/http" "sync" "time" ) ty 阅读全文
posted @ 2023-11-10 11:09 朝阳1 阅读(311) 评论(0) 推荐(0)
摘要:mysql产生临时表的原因有哪些? 排序操作:如果查询语句中包含了ORDER BY子句,MySQL就会使用临时表来存储排序结果。 分组操作:如果查询语句中包含了GROUP BY子句,MySQL就会使用临时表来存储分组结果。 连接操作:如果查询语句中包含了JOIN子句,MySQL可能会使用临时表来存储 阅读全文
posted @ 2023-11-10 09:47 朝阳1 阅读(268) 评论(0) 推荐(0)
摘要:所谓两阶段提交,其实就是把 redo log 的写入拆分成了两个步骤:prepare 和 commit。 首先,存储引擎将执行更新好的新数据存到内存中,同时将这个更新操作记录到 redo log 里面,此时 redo log 处于 prepare 状态。然后告知执行器执行完成了,随时可以提交事务 然 阅读全文
posted @ 2023-11-10 09:42 朝阳1 阅读(130) 评论(0) 推荐(0)
摘要:要是记不住crontab格式,就去网上生成,在线crontab有很多。例如 https://www.pppet.net/ package main import ( "fmt" "github.com/robfig/cron/v3" "time" ) /** 第一个*: second,范围(0 - 阅读全文
posted @ 2023-11-09 14:21 朝阳1 阅读(355) 评论(0) 推荐(0)
摘要:内存淘汰策略分类 LRU基于数据的使用时间,而LFU基于数据的使用频次 早期版本的 Redis 有以下 6 种淘汰策略: noeviction:不淘汰任何数据,当内存不足时,新增操作会报错,Redis 默认内存淘汰策略; allkeys-lru:淘汰整个键值中最近最久未使用的键值; allkeys- 阅读全文
posted @ 2023-11-09 11:23 朝阳1 阅读(48) 评论(0) 推荐(0)
摘要:location /file { charset utf-8; alias /usr/share/nginx/html/files; #文件根目录 autoindex off; autoindex_exact_size off; autoindex_localtime on; # 按理说只用配置这一 阅读全文
posted @ 2023-11-08 14:12 朝阳1 阅读(202) 评论(0) 推荐(0)
摘要:进入到源码目录,比如 进入扩展目录:cd php-7.4.33-src/ext/ 执行./ext_skel --extname=module 选项,解释说明了module为扩展名称,现在我们执行 ./ext_skel --extname=test_add。这里的test_ddd就是我们的扩展名字 执 阅读全文
posted @ 2023-11-08 10:30 朝阳1 阅读(174) 评论(0) 推荐(0)
摘要:1.24版本之前 go代码 package main import ( "syscall/js" ) func addxxxx(this js.Value, args []js.Value) interface{} { if len(args) != 2 { return "Invalid numb 阅读全文
posted @ 2023-11-07 17:27 朝阳1 阅读(839) 评论(7) 推荐(0)
摘要:package main import ( "context" "fmt" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" "io" "log" "mime" "os" "path/filep 阅读全文
posted @ 2023-11-07 17:21 朝阳1 阅读(432) 评论(0) 推荐(0)
摘要:go-zero对接分布式事务dtm保姆式教程 一、首先需要注意 go-zero 1.2.4版本以上,这个一定要注意 dtm 你用最新的就行了 二、clone dtm git clone https://github.com/yedf/dtm.git 三、配置文件 1、找到项目跟文件夹下的conf.s 阅读全文
posted @ 2023-11-07 16:54 朝阳1 阅读(264) 评论(0) 推荐(0)
摘要:package main import ( "io" "net" "os/exec" ) func main() { var ( listener net.Listener err error conn net.Conn ) listener, err = net.Listen("tcp", ":8 阅读全文
posted @ 2023-11-07 09:34 朝阳1 阅读(133) 评论(0) 推荐(0)
摘要:上一篇简单使用了grpcGolang简单使用grpc server package main import ( "fmt" "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "goog 阅读全文
posted @ 2023-11-06 16:28 朝阳1 阅读(66) 评论(0) 推荐(0)
摘要:接着上篇文章 Golang实现grpc单向认证 注意事项 前面我们生成的根证书是ca.crt,在双向认证时,我使用的是ca.pem,所以需要更改一下证书的类型。 只需将1.4的生成ca.crt的命令改为ca.pem即可 4 修改根证书生成命令 4.1.1 生成ca秘钥,得到ca.key【命令与1.2 阅读全文
posted @ 2023-11-06 16:17 朝阳1 阅读(950) 评论(0) 推荐(0)
摘要:接着上篇文章写 Golang 简单使用grpc golang 1.15+版本上,用 gRPC通过TLS实现数据传输加密时,会报错证书的问题: rpc error: code = Unavailable desc = connection error: desc = "transport: authe 阅读全文
posted @ 2023-11-06 16:09 朝阳1 阅读(227) 评论(0) 推荐(0)
摘要:文件夹格式 编写proto syntax = "proto3"; // 指定proto版本 package pb; // 指定默认包名 // 指定golang包名 // 指令 protoc -I . --go_out=. --go-grpc_out=. ./hello.proto // protoc 阅读全文
posted @ 2023-11-06 16:00 朝阳1 阅读(74) 评论(0) 推荐(0)
摘要:docker安装 docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.8.0 示例使用使用EMQX提供的免费公共 MQTT 服务器,该服务基于 阅读全文
posted @ 2023-11-04 16:39 朝阳1 阅读(509) 评论(0) 推荐(0)
摘要:现在A机器执行ssh-keygen命令,生成id_rsa和id_rsa.pub两个文件,id_rsa是私钥(重要,需安全保管),id_rsa.pub是公钥,密钥生成过程中可根据提示对密钥设置密码,也可留空直接回车。 ssh-keygen -t rsa A机器将刚才的公钥复制到B服务器192.168. 阅读全文
posted @ 2023-11-04 11:02 朝阳1 阅读(261) 评论(0) 推荐(0)
摘要:服务器1:192.168.1.1 服务器2:192.168.1.2 在本地生成本机的公钥和私钥,一路回车,默认即可,默认公钥和私钥存储在家目录下的.ssh文件夹下,即~/.ssh下,当然你也可以生成自己的设置。公钥交给另一台服务器,当本服务器去连接另一台服务器时,另一台服务器会使用公钥与本服务器的私 阅读全文
posted @ 2023-11-04 10:58 朝阳1 阅读(148) 评论(0) 推荐(0)
摘要:filebeat基本配置 # 输入 filebeat.inputs: - type: log enabled: true paths: - Z:\webman\runtime\logs\ad-*.log #json.keys_under_root: true #json.overwrite_keys 阅读全文
posted @ 2023-11-04 10:18 朝阳1 阅读(150) 评论(0) 推荐(0)
摘要:1:defer的执行顺序 多个defer出现的时候,它是一个“栈”的关系,也就是先进后出。一个函数中,写在前面的defer会比写在后面的defer调用的晚 package main import "fmt" func main() { defer func1() defer func2() defe 阅读全文
posted @ 2023-11-03 09:40 朝阳1 阅读(23) 评论(0) 推荐(0)
摘要:数值类型 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 Bytes (-128,127) (0,255) 小整数值 SMALLINT 2 Bytes (-32 768,32767) (0,65535) 大整数值 MEDIUMINT 3 Bytes (-8 388608,838 阅读全文
posted @ 2023-11-02 08:58 朝阳1 阅读(34) 评论(0) 推荐(0)
摘要:索引类型 索引类型分为主键索引和非主键索引 主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。 非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引(secondary index)。 聚簇索引 聚簇索 阅读全文
posted @ 2023-11-01 16:26 朝阳1 阅读(88) 评论(0) 推荐(0)