cfanzp 发布于 2022-08-01 收录于 linux linux-计算器命令bc 基本用法 查看版本 1 2 3 $ bc -v bc 1.07.1 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc. 查看帮助 1 2 3 4 5 6 7 8 9 $ bc -h usage: bc [options] [file ...] -h --help print this usage and exit -i --interactive force interactive mode -l --mathlib use the predefined math routines -q --quiet don't print initial banner -s --standard non-standard bc constructs are errors -w --warn warn about non-standard bc constructs -v --version print version information and exit 支持的运算 +:加 -:减 *:乘 /:除 ^:指数 %:求余数 sqrt:开方 ibase:输入进制 obase:输出进制 ;要计算多个结果用分号分隔 scale:小数部分位数 1.
cfanzp 发布于 2022-08-01 收录于 linux xfreerdp 使用举例 远程192.168.2.3这台机器并挂载/home/admin/share目录 1 xfreerdp +clipboard /w:1920 /h:1050 /u:Administrator /p:admin1234567890 /v:192.168.2.3:3389 /drive:share,/home/admin/share 使用帮助 xfreerdp –help 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 [zp@zp-pc dev]$ xfreerdp --help FreeRDP - A Free Remote Desktop Protocol Implementation See www.
cfanzp 发布于 2022-08-01 收录于 开发手册 开发手册汇总 mysql8.0中文参考手册: https://mysql.bookhub.tech/#/README mysql5.7: https://www.docs4dev.com/docs/zh/mysql/5.7/reference/ mysql5.6:https://dev.mysql.com/doc/refman/5.6/en/ redis命令手册: https://www.redis.net.cn/order/ nginx官网:https://nginx.org/en/docs/ 语言 golang:https://go.dev/doc/ 在线运行golang程序 lua5.3开发手册: https://cloud.tencent.com/developer/doc/1141 lua5.4 官网英文版: http://www.lua.org/manual/5.4/manual.html rust: https://github.com/rust-lang/reference 工具 neovim:https://neovim.io/ markdown-GFM: https://gfm.docschina.org/zh-hans/ 印记中文: https://docschina.org/ 正则表达式: https://github.com/any86/any-rule
skynet升级到1.5.0 skynet升级到1.5.0 对应lua版本:lua5.4.3 skynet地址 https://github.com/cloudwu/skynet/releases/tag/v1.5.0 下载地址:https://github.com/cloudwu/skynet/archive/refs/tags/v1.5.0.tar.gz 加速地址:https://github.91chi.fun//https://github.com//cloudwu/skynet/archive/refs/tags/v1.5.0.tar.gz 升级步骤 创建分支skynet1.5 删除skynet目录的所有文件,解压或同步skynet1.5.0的代码到skynet目录 1 rm ./skynet/* -rf 初始化skynet 1 git submodule update --init jemalloc库若未初始化成功,可手动克隆到3rd/jemalloc目录中 1 git clone https://gitee.com/mirrors/jemalloc.git 编译报错 1 2 skynet-src/spinlock.h:50:23: fatal error: stdatomic.h: No such file or directory 升级Gcc值4.9及以上版本 gcc多版本共存。 devtoolset对应gcc版本 1 2 3 4 5 6 7 devtoolset-3对应gcc4.x.x版本 devtoolset-4对应gcc5.x.x版本 devtoolset-6对应gcc6.x.x版本 devtoolset-7对应gcc7.x.x版本 devtoolset-8对应gcc8.x.x版本 devtoolset-9对应gcc9.x.x版本 devtoolset-10对应gcc10.x.x版本 https://www.cnblogs.com/jixiaohua/p/11732225.html 1 sudo yum install centos-release-scl 安装devtoolset,注意,如果想安装11.版本的,就改成devtoolset-11-gcc 1 sudo yum install devtoolset-11-gcc* 激活对应的devtoolset,可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本 这仅仅在当前bash生效,如果需要永久生效,可以请自行添加环境变量。 1 2 3 scl enable devtoolset-11 bash #或 source /opt/rh/devtoolset-8/enable gcc版本永久生效 1 echo "source /opt/rh/devtoolset-11/enable" >>/etc/profile 查看gcc版本号 1 gcc -v gcc安装报错 报错问题: 1 2 3 4 Transaction check error: file /usr/lib/debug/usr/lib64/libitm.
skynet热更新-clearcache的使用体会 skynet 热更新主要有2种方法 第一种:使用clearcache 第二种:使用console inject lua脚本 动态创建的服务的热更新 如果一个skynet服务是在业务流程中动态创建的,那么在修改代码后,使用clearcache就可以保证下次再创建的新的服务是使用的新的代码。 创建后长期不销毁重建的服务,如何热更新? 如果是在进程启动时创建,或创建后就一直存在的服务需要热更新怎么办呢?
方法1: 对于这种情况目前inject是首选。但是有时候需要修改的代码量比较大,inject 脚本的方式就非常复杂且容易出错。
方法2: 当然,还有一种方式就是采用轮服的机制解决。从进程级别解决问题。但是这个代价又太大了,比clearcache的成本还高。
这里我们还有一个思路就是可以在业务服前加一个管理调度服务。例如A1 skynet服务需要发消息给B1 skynet服务来实现某个功能。消息流为:
1 A1 ---> B1 我们可以在B1前加一个B_manager服务,A服务通过B_manager服来传递消息给B1服务, 消息流为: 1 A1 ---> B_Manager ---> B1 这个时候如果B1的业务有大量需要修改的。只需要clearcache一下,然后创建一个新的B1服务,这里称为B2,B_Manager再将A1的请求转发到B2即可,这个时候的消息流为: 1 A1 ---> B_Manager ---> B2 这个时候B1就不会接收到新的消息了。介意B1的存在可以销毁它,如果资源占用不大,也可以不销毁。
当然这里有几个必须要注意的问题:
如果B1服务是有状态的,那么这个方法是有很大限制的,需要把B1服务的数据通过消息或共享内存,缓存等方式转移到B2服务上。
如果B1服务上有定时器等可能会影响业务的逻辑时时,必须要关闭定时器或销毁B2服务。
如果B1是无状态的那就简单多了,创建新的服务B2后,B_mananger将所有需要转发给B1的请求全都转发给B2即可。
消息中间多了一层B_Manager会不会损失性能,这个需要视业务要求来具体分析,大部分情况,这点性能损失都可以忽略不计的;当然如果你很介意的话,还是建议业务刚上线时使用B_Manager,业务稳定后,可以在某次更新时将这层转发层去掉。
上面的方法也是一种折中的方法,个人感觉还是比较好用的,但也是不完美的。
总结 关于skynet的热更新,如果你有什么更好的方案,希望能够指点一二! 个人的一点想法,分享给大家!如果你也在使用skynet,关注我,一起学习,交流一下!
skynet:debug console添加搜索功能 为什么要给skynet的debug console添加搜索功能? 使用skynet一段时间后,发现,在动态创建skynet service的情况下,如果service很多,有时很难找到我们想要找到我们要找的那个skynet服务,用skynet的list命令会罗列所有的服务,因此我们需要像grep,ag这样的命令功能来搜索skynet的服务。 实现搜索命令ag 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 local function get_all_list(key_string) local table_list={} local all_services = skynet.call(".launcher", "lua", "LIST") local count = 0 for k,v in pairs(all_services) do if string.match(k, key_string) or string.match(v, key_string) then table_list[k] = v count = count + 1 end end table_list["total_count"] = count return table_list end function COMMAND.