笔记
varphp
干货字字珠玑 一语击中
水文千言万语 不知所言
大道至简:真传一句话,假传万卷书
展开
-
私有云NAS千万别用铁威马TNAS,不管是用群晖还是其他私有云都可能比这个好
私有云NAS千万别用铁威马TNAS,不管是用群晖还是其他私有云都可能比这个好原创 2022-07-28 16:24:31 · 2725 阅读 · 4 评论 -
go使用结构体导出函数使用时的一个注意点
如果确实需要有这种在结构体中定义字段且用于多个函数那么就模拟New的方式,实际上就是通过一个新的函数去生成一个新的内存丢到外部去,如下代码。这种做法就可以避免开发人员在调用时因为聚焦于业务,偶尔可能会忽略这种情况,而导致产生一些难以预计的后果,降低开发人员的心智负担。其实第二种方式如果结构体中没变量,直接用没问题,每个函数运行时都是有各自的运行堆栈不会有变量污染的情况。第一种情况就需要每个人都要知道使用前必须复制一份使用,否则会造成变量无法释放,加锁都没意义。1.定义一个新的变量赋值一份出来使用。...原创 2022-07-15 02:13:52 · 256 阅读 · 0 评论 -
nginx反向代理之后,被代理的应用服务设置响应头无效,反向代理导致响应头header在后端服务设置响应头后无效或被覆盖
如下图注释代理设置内的这俩类似的不要手动设置 add_header Cache-Control no-cache; 这样会被nginx覆盖,也就是会在你的后面加上这句,也就是重复的一个头,会以最后一次为准语法:expires [time|@time-of-day|epoch|max|off]默认值:expires off使用字段:http, server, location这个指令控制是否在应答中标记一个过期时间,如果是,如何标记。·off 将禁止修改头部中的 Expires和Cache-Contr原创 2022-06-15 06:49:35 · 2981 阅读 · 1 评论 -
前端使用js将json字符串转为token分词解决雪花ID丢失精度问题,替换json字符串中的所有数字为字符串数字,非正则直接替换
作用:将json字符串通过分隔为tokens后,将数字转为字符串数字 用于前端使用js进行本地处理雪花ID精度丢失问题由于之前的解决方式是通过正则实现的批量替换,难免在复杂的json数据结构处理时出现错误,比如json中又包含了json字符串,直接通过正则就不是很好解决了,此时完全可以通过json AST语法树或Token分词直接进行数字替换即可。js处理雪花算法ID在前端丢失精度溢出的问题_varphp的博客-CSDN博客这是一个正则方式 不能更好解决复杂的情况如果实现token分..原创 2022-05-31 03:28:08 · 479 阅读 · 0 评论 -
go语言+lua5.1语言同步到es中遇到大数字导致精度丢失问题
lua5.3之前都会有这个问题。但是目前我们使用的go嵌入lua使用的解释器只有5.1所以这个只能靠自己转换解决。目前是用在go+lua同步es的工具上。解决方式分这几个步骤:1.go将传递给lua的14-20位的数字转换为字符串2.lua调用go往es中塞数据时再次逆转为数字,便可以保证es中 本地数据库中都是数字了,而且不丢失精度。比较简单。以下给部分代码demogo往lua中传值类型的处理func paddingTable(l *lua.LState, table..原创 2022-05-07 07:00:00 · 909 阅读 · 0 评论 -
go语言接口服务中雪花算法id在js中丢失精度,这三种方式都行
js最大支持 9007199254740991 超过后就不正确了。所以接口在返回的时候转换为字符串给到前端即可避免前端精度丢失问题。这里处理了多种情况,根据长度可自定调整【16,,20】正则截止目前我们系统运行正常,暂未发生无法转换的问题如果本身系统设计使用的id就是字符串就不需要处理//将需要返回的对象转为字符串 if b, err := json.Marshal(responseData); err != nil { panic(err) } else { reg :..原创 2022-05-06 18:38:15 · 461 阅读 · 0 评论 -
python协程asyncio+gevent+jpype协程并发调用java
使用不同的方式协程并发调用java测试原创 2022-05-06 15:56:12 · 776 阅读 · 0 评论 -
go语言中json.Unmarshal导致大数字溢出精度问题
目前问题是出现在使用了uint64的雪花算法ID中发生的问题,在解析出数据的时候导致精度丢失。以下demo并不是使用转换为字符串方式解决。package mainimport ( "encoding/json" "fmt")func main() { var myjson string myjson = `{"id":9723275009654785}` fmt.Println("期望结果:", myjson) type myjsonStruct struct {..原创 2022-05-06 11:19:03 · 1157 阅读 · 0 评论 -
golang中的new()到底是什么意思?
go语言中的new()函数具体起到什么作用,还是和指针变量内存地址以及指针变量指向的内存地址有关原创 2022-04-16 15:40:32 · 955 阅读 · 0 评论 -
HAVING 多条件多字段连接,结合 and、or、>、=等等实现
需求描述:单规格商品在添加了多规格后,单规格需要排除,但是单规格和多单位商品依然是同时存在,仅单规格和多规格不能同时存在,需要剔除规格并以多规格为准HAVING ((t.sku_id>0 and t.goods_type=3) or (t.sku_id=0 and t.goods_type=1 or t.goods_type=2))具体还需要大家根据自己的需求修改,然后并测试保证正常使用...原创 2022-01-18 16:59:35 · 3210 阅读 · 0 评论 -
社交客户端离线与在线的会话列表场景设计
### 离线与在线的会话列表场景设计用户行为在对话框时进入对话框时进入会话列表时删除会话时本地系统主动行为主动拉取离线消息或会话上报到服务端变更会话为已读更新本地未读数 或删除会话更新服务端未读数 或删除服务端会话写入本地消息或更新会话本地系统状态有网/再次联网无网/失败本地系统数据存储【增加或减少】本地未读数值字段记录网络离线的事务数据对话消息存储用户会话存储本地系统数据状态更新会话状态【删除状态或可用状态】...原创 2021-06-03 13:12:10 · 384 阅读 · 1 评论