go微服务框架使用总结

记录下自己使用下来的go微服务框架,kratos go-zero kitex. kratos bilibili公司出品的框架,当年公司内部代码泄漏,现在开源优化已经到了v2版本. 参考了DDD,Clean Architecture 设计理念. 项目结构清晰,每一层级的角色定位清晰,没有全局变量污染,还引入了wire进行依赖倒置. data层暴露了clean up函数对资源句柄进行回收. 框架层与业务层解耦,框架生命周期感知清晰. 组件开放接口设计,扩展性强 服务使用的是GRPC+Protocol Buffer, 同一服务进程下暴露了GRPC端口和HTTP端口. HTTP是通过protoc组件protoc-gen-go-http反射路由到同一RPC方法. 框架整体设计比较轻量,适合自己组合微服务方案. 总结 适合团队有架构组的人使用,前期需要自己组合方案,整合组件.后期基本完善,使用体验良好. HTTP层建议使用gin框架,因为protoc-gen-go-http适合开发阶段调试用,重度需求满足不了,自己做适配一路都是新坑. Go-zero 一个公司CTO主推项目,加入了CNCF. HTTP单独部署一个项目,路由方法定义通过编写.api后缀文件(Go-zero定义的语法)实现. 他们的设计理念是实用性. 总结 生产上能用。对于定制化业务,直接fork他们官方的cli工具,然后公司内部修改维护该仓库. Kitex 字节跳动公司的开源项目,分RPC框架Kitex和HTTP框架Hertz. 2个框架是2个团队的产物,设计规范不一致. 框架替换原有了go/net设计,实现高性能.(生产稳定性需要查阅官方资料验证) IDL支持Thrift,官方对Thrift的支持度很高,因为他们内部使用Thrift,但也支持Protobuf. 他们的设计理念是高性能 总结 Kitex只是cloudwego组织下子项目,Thrift不是特别吸引我, 希望cloudwego/netpoll能封装成一个适配性高组件.

体验switch游戏

主机游戏 steam的单机游戏体验过一段时间后,随后了解到还有塞尔达传说王国之泪这样的游戏存在,有别于艾尔登法环这种 但是他只能在任天堂的switch上可以下载游玩,有别于pc游戏是主机游戏来的. 模拟器 pc上也存在着模拟switch游戏环境的模拟软件,yuzu模拟器和ryujinx模拟器,接下来我将体验下ryujinx模拟器上游玩主机游戏 ryujinx模拟器体验 下载 下载模拟器https://github.com/Ryujinx/release-channel-master/releases 我选了当前最新的1.1.762版本 https://github.com/Ryujinx/release-channel-master/releases/download/1.1.762/test-ava-ryujinx-1.1.762-win_x64.zip 先决 下载安装后,看了一眼官网wikihttps://github.com/Ryujinx/Ryujinx/wiki 在模拟器的目录下新建portable目录,需要导入任天堂switch相关的Keys和Firmware,即密钥和系统固件的意思,2者的版本还必须一致. 游戏格式 接下来就是导入游戏包xci格式的,就可以在模拟器的目录上看到该游戏,点击游玩即可。 游戏DLC或者游戏更新包之类的安装文件大多是nsp格式的,在游戏上进行管理导入即可。 switch游戏的外挂是金手指这个称呼,可以搜switch对应game的cheat code主题。 总结 模拟器比较吃cpu资源,很多时候成为瓶颈.相比于switch游戏画面和帧数比较高,而且还可以开作弊码,省去重复的游戏体验。 switch的优势就是携带游玩方便,类似手机于pc的存在,但是steam deck是linux系统也可以安装模拟器,也有这个优势. 另一个就是switch可以联网官方服务器游玩比较方便,但是局域网联机游玩模拟器似乎也能做到。 随着一款游戏的了解,我慢慢发现任天堂的理念是以游戏趣味性为主导,switch设备为游戏圈子所建立的生态, 其他游戏像是一座座高山,但是switch游戏就像一条弯弯曲曲的河流那样的存在

Synergy启动在登录前

介绍 Synergy是一个模拟键盘和鼠标的软件,我的win和mac都启动时可以用一套键鼠操控。 mac作为Synergy的客户端时,win作为Synergy的服务端使用。 背景 目前Synergy在登录前软件没有启动,只有登录后启动,导致登录时无法输入密码,因为我的键盘鼠标连接在win上。下面是解决办法 原理 软件在mac未登录前是root的身份运行,登录后才是选择的用户,在root身份下将软件加入mac的Launch Daemons就可以解决了 实操 synergy的存放位置是 /Applications/Synergy.app/Contents/MacOS/synergy 运行命令行启动 open /Applications/Synergy.app/Contents/MacOS/synergy 时,可以看到启动参数 /Applications/Synergy.app/Contents/MacOS/synergyc -f --no-tray --debug INFO --name "mac" "192.168.50.59:24800" 修改为Launch Daemons的配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.example.hello</string> <key>ProgramArguments</key> <array> <string>/Applications/Synergy.app/Contents/MacOS/synergyc</string> <string>-f</string> <string>--no-tray</string> <string>--debug</string> <string>INFO</string> <string>--name</string> <string>mac</string> <string>192.168.50.59:24800</string> </array> <key>KeepAlive</key> <true/> </dict> </plist> ProgramArguments对象下是cli启动参数 然后以root身份 放入 /Library/LaunchDaemons/ 下,文件名随便起一个com.example.synergy.plist 这样重启后,就可以在mac上输入密码,当键盘连接在win上时候,因为synergy已经生效 总结 # 敲root密码 sudo su # 切目录 cd /Library/LaunchDaemons/ #创建文件 touch com.

Steam游戏无法识别北通手柄

每当兴冲冲下一个好玩的游戏,进入却发现手柄识别不了,或者识别不全。 一个杂牌的手柄属实是折腾人,网上兜了一圈,方法很多,但是适用自己电脑情况的还是很少。 最佳的解决方案就是买个微软的xbox手柄。 次一点的解决方案就是用软件模拟出xbox360的手柄,然后进入游戏就可以正常游玩了。下面重点写下如何达成 xOutput使用 前提 首先来个前提,游戏必须安装在无中文路径,各种微软的游戏依赖库安装齐全。网络问题的话,下个uu加速器处理下 我自己的电脑系统是win11 我使用的模拟软件是xOutput https://github.com/csutorasa/XOutput 配置 下载安装后,打开xOutput,手柄录入键位映射,把手柄的所有按键都输入一边, 然后方向轴看是否录入是否正确(我遇到一个右键上下的位置对调了,然后这个键位勾选反转就行),接下来下拉绑定选择北通的控制器,然后保存配置。 (这个的使用搜b站的视频比较方便,文字描述这里写不下.) 使用 接下来再关闭,以管理员权限打开xOutput(这点很重要!!)再点击开始,启用这个模拟的控制器 这时一般window的设备管理器,会识别出2个手柄设备,一个是北通自己的原有手柄,另一个是模拟出来的xbox360手柄 此时我们点开steam,通用的手柄管理一般也会识别出2个手柄。 配置steam 这时游戏启用steam手柄输入。 手柄设置那里关闭 playstation,任天堂switch相关。 勾选通用,xbox,xbox扩展支持就行。 这时打开游戏就能完了。如果失败,重启电脑,必须控制软件打开的先后顺序, 先打开 xOutput 以管理员权限, 再打开steam, 再打开游戏。 心得 接下来是坑总结 设备管理器确保是2个,一个北通自带,一个虚拟出来的。我之前安装了ds4windows,勾选了隐藏北通的控制器,导致xOutput失效。 管理员权限运行xOutput这点也很重要 其他软件 x360ce 这个软件我也试过,用起来时灵时不灵。 如果问题还没解决,可以搜下其他的模拟xbox360的软件 https://alternativeto.net/software/x360ce/ 具体可以看这篇文章,我就是在这个文章找到xOutput的 推荐 用了steam 这么久,发现2个好用软件, 一个是steam账号切换器 可以方便的管理多个steam账号,但是记住限制切号器的网络,可以用火绒来控制软件的网络 另一个是msi afterburner 可以用来显示游戏的帧率,显卡内存占用等等

Graylog搭建

克隆项目 https://github.com/Graylog2/docker-compose 配置文件 cd open-core cp .env.example .env 修改.env #.env GRAYLOG_PASSWORD_SECRET="你的16位密码" # 密钥= echo -n 你的16位密码 | shasum -a 256 GRAYLOG_ROOT_PASSWORD_SHA2="密钥" 修改docker-compose.yml # graylog.environment - 位置 GRAYLOG_HTTP_EXTERNAL_URI: "https://你的域名.com/graylog" 启动 docker-compose up -d 配置域名 sudo vi /etc/hosts x.x.x.x graylog 配置nginx location /graylog/ { proxy_pass http://graylog:9000/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 2s; proxy_read_timeout 90s; proxy_send_timeout 90s; } location /graylog1/ { proxy_pass http://graylog:12201/; proxy_redirect off; proxy_http_version 1.

汇编学习

什么是汇编? ruanyifeng-汇编语言入门教程 Decode360’s Blog-汇编基础入门知识 汇编学习 学习材料 Princeton大学汇编教程 Assembly1 Assembly2 AssemblyFunctions 这个pdf做的非常浅显易懂 tcoline.com-汇编语言 tcoline.com-汇编语言 这个网站的教程也不错,纯中文 w3c教程 https://www.w3cschool.cn/assembly/ 函数调用原理 https://gitbook.coder.cat/function-call-principle/ 学习记录 目录 编程语言级别:c语言->汇编语言->机器语言 x86-64汇编介绍 冯诺伊曼架构介绍 主存 寄存器 汇编函数调用过程 主存 0000000000000000 ... TEXT RODATA DATA BSS HEAP STACK ... FFFFFFFFFFFFFFFF 备注 Data Registers RAX: register accumulator // R"注册"意思 RBX:register base RCX:register count RDX:register data Data Registers item detail RAX: register accumulator // R"register" x “extended” [0,63] EAX: extended accumulator // E “extended|enhanced” [0,31] AX: accumulator // [0,15] AH :accumulator higher // [8,15] AL :accumulator lower // [0,7] cont.