ss命令抓linux下偶发端口访问
Linux服务器一直有个TCP连上来发数据,跑到对应的机器上发现连接已经断了,对应的进程也退出了。估计是某种定时任务。 排查代码无果,只能通过命令行来监控。这里直接上ss命令 while true; do pid=$(ss -tanpe state established 'dst 10.11.22.33:4455' | awk 'match($0,/pid=([0-9]+)/,a){print a[1]}'); [[ -n $pid ]] && tr '\0' ' ' </proc/$pid/cmdline ; sleep 0.2; done; 解释下: while true; do ...; sleep 0.2; done;每0.2s反复刷新执行指定命令。 ss -ta..
更多kcp 与 kcp-go 的设计与实现
引言 最近深入研究了 KCP 的实现,通读了 KCP 原版及其 Go 语言实现(kcp-go)的源码。在阅读代码的过程中,还参考了许多优秀的博客文章,十分感谢这些博主的分享。有了这些珠玉在前,我也整理了一些自己对 KCP 的理解,作为学习过程中的记录和总结。 两个核心数据结构 ikcpcb 是 KCP 的控制块(KCP Control Block)数据结构,包含一条 KCP 连接的所有状态信息和参数。作为 KCP 协议的核心数据结构,它负责管理数据传输、重传机制以及流量控制等功能。 segment 是表示 KCP 数据段的结构体,用于描述一个数据包或控制包。每个 segment 都包含数据段的头部信息和数据部分。 这两个数据结构定义了 KCP 使用的所有关键字段。关于它们的具体含义,Luyu Huang ..
更多

Python gRPC
Foreword gRPC example测试 安装gRPC库 pip install grpcio 安装gRPC工具 pip install grpcio-tools 下载官方例程 git clone -b v1.66.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc 演示用例在这里 grpc/examples/python/helloworld 先启动服务端 python greeter_server.py 可以看到已经在监听了 再启动客户端 python greeter_client.py 正常连接到了服务端 源码分析 服务端 from concurrent impor..
更多

ChatGPT-Mirror部署和体验
Foreword cws一直有问题,而且只支持access token,经常要换很麻烦。之前有关注到dairoot的mirror,这次刚好试一下,发现体验还行 ChatGPT-Mirror https://github.com/dairoot/ChatGPT-Mirror 项目很简单 https://chatgpt.dairoot.cn/ 官方体验站,也可以使用免费账号测试,基本都差不多 部署 脚本内是docker,所以机器需要提前安好docker git clone https://github.com/dairoot/ChatGPT-Mirror.git cd ChatGPT-Mirror/ # 修改管理后台账号密码 cp .env.example .env &a..
更多

STM32 MCU移植SSH
Foreword 给MCU移植Crypto、SSL、SSH、SFTP等库,真的找不到一个例子,目前看到的库大部分都是商用的。 比如wolfssh、CycloneSSH、libssh2、TinySSH、microSSH、Dropbear,这些库可能linux使用比较多,但是那边安装移植也方便多了,降到MCU一库难求,更别说详细的移植文档了,基本没有 wolfssh https://www.wolfssl.com/products/wolfssh/ wolfssh移植 wolfssh的库整个集成到了CubeMX中,简单的几个操作就可以把ssh集成进去 系统时钟不要用systick,留给FreeRTOS用 随便加一个input IO作为SD卡的输入检测 再随便加一个串口作为..
更多

用React实现跟随鼠标的3D透视效果
效果展示在下面的图形上移动鼠标即可看到效果 需要用到的知识 CSS perspective,参考MDN CSS transform-style,同样参考MDN 代码部分其实核心的逻辑和React关联性不大,只是我正好用React来做的,直接参考https://jsfiddle.net/yunyuyuan123/ukqstdw6/95/,主要关注这几个部分: 使用requestAnimationFrame来保证动画过度的流畅性。 通过translateZ来控制Z轴的高度,从而实现层次感。 使用CSS新属性will-change来提升性能。
更多

GitLab联动Jenkins
Foreword GitLab联动Jenkins完成CI\CD流程 webhooks方式 Jenkins Jenkins升级 Jenkins自动升级,完成以后Jenkins就无法启动了,查log可以看到提示说明java版本太老了 Jenkins升级后不再支持java11的,需要安装java17或者21,我这里直接选择21 进入Jenkins目录下,修改jenkins.xml文件,将其中的jdk修改为新安装的jdk,然后重启一点电脑,重启jenkins服务即可 GitLab插件 首先Jenkins需要安装GitLab插件,否则收不到GitLab的请求 然后在Credentials中添加GitLab的账号 用户名和密码的形式即可 这个操作只要做一次即可 Git..
更多

一日一技:Python类型标注的高级用法
假设你正在写后端代码,其中一个函数的功能是传入文章id,返回文章详情。因为项目比较大,因此在定义函数时,把类型标注加上,标明了参数的类型和返回的类型。例如:1234567891011121314151617181920212223242526from typing import Listfrom dataclasses import dataclass@dataclassclass ArticleDetail: id: int title: str content: str tag: List[str]def query_article_detail(article_id: int) -> ArticleDetail: detail = ArticleDetail( ..
更多

遥控和香氛按钮接入米家失败
Foreword 记录一下接入米家失败的几个案例 遥控器接入米家 遥控倒是挺好拆的,经过测试接入按钮是物理的,成功的概率应该很大了 接下来就翻车了,反复测试了好几次发现,直接把按钮接入地或者电源,都不能正常触发按键,被控对象有反应,但是不能正常工作。 仔细查了一下主控芯片:TLSR8366ET24 它实际可以当作GPIO的引脚其实不多,但是结合遥控器,要控的除了13个按键,其实还有5个led灯,不可能接18个GPIO去做独立按键控制的,所以他其实这里用了矩阵键盘,逆向了电路以后,发现他的按键两端IO确实都是接入了主控芯片,而不是地 实际遇到的情况: 由于使用了矩阵键盘,这里又想保留原本的键盘、又想接入米家就无法做到了,除非米家模块支持Bypass模式,在输入的时候可以进行闭合/..
更多

一日一技:如何实现高性能自动补全?
我们知道,在写Python时,使用IDE的自动补全功能,可以大大提高代码的开发效率。使用类型标注功能,可以让IDE知道应该怎么做自动补全。当我们没有类型标注时,IDE并不知道函数的某个参数是什么东西,没有办法做补全,如下图所示。但当我们把类型标注加上以后,IDE就能正常补全了,如下图所示:这样做,需要从另一个文件中,把这个参数对应的类导入到当前文件里面,然后把类作为类型填写到函数参数后面。咋看起来没有什么问题,并且我,还有很多看文章的同学,应该经常这样写类型标注的代码,从而提高代码的开发效率。但如果你的项目规模大起来以后,你就会遇到几个比较麻烦的问题:导入链过长:例如上面截图中的代码,我从model.py中导入了Detail这个类。如果我在model.py文件的开头,还有from aaa import b..
更多