后端
varphp
干货字字珠玑 一语击中
水文千言万语 不知所言
大道至简:真传一句话,假传万卷书
展开
-
私有云NAS千万别用铁威马TNAS,不管是用群晖还是其他私有云都可能比这个好
私有云NAS千万别用铁威马TNAS,不管是用群晖还是其他私有云都可能比这个好原创 2022-07-28 16:24:31 · 2725 阅读 · 4 评论 -
go使用结构体导出函数使用时的一个注意点
如果确实需要有这种在结构体中定义字段且用于多个函数那么就模拟New的方式,实际上就是通过一个新的函数去生成一个新的内存丢到外部去,如下代码。这种做法就可以避免开发人员在调用时因为聚焦于业务,偶尔可能会忽略这种情况,而导致产生一些难以预计的后果,降低开发人员的心智负担。其实第二种方式如果结构体中没变量,直接用没问题,每个函数运行时都是有各自的运行堆栈不会有变量污染的情况。第一种情况就需要每个人都要知道使用前必须复制一份使用,否则会造成变量无法释放,加锁都没意义。1.定义一个新的变量赋值一份出来使用。...原创 2022-07-15 02:13:52 · 257 阅读 · 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 · 2984 阅读 · 1 评论 -
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 · 910 阅读 · 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 评论 -
go语言打包生成更小的体积
压缩go程序体积原创 2022-04-08 18:29:37 · 1507 阅读 · 0 评论 -
golang和软件基本原理简介
堆栈、进程、虚拟地址、逃逸、锁、临界区的简单介绍原创 2022-04-06 22:21:31 · 483 阅读 · 0 评论 -
go语言里的指针变量地址和指针变量指向地址
指针变量地址和指针变量指向地址原创 2022-04-06 21:49:36 · 894 阅读 · 0 评论 -
python bottle框架跨域,使用*星号跨域无效
对于浏览器跨域尽量不使用*号,不论是否安全,跨域可能是依然无效。最重要的是要能回复浏览器的OPTIONS预请求。使用@hook('after_request')+@hook('before_request')每个接口使用@route('/xxxxx',method=("POST","OPTIONS"))在尝试before_request的时候 发现效果不大好 会直接因为请求不使用OPTIONS方式而出现错误,也没研究这么多了。直接为请求增加预请求方式即可。可以单独为接口判断 如果是预..原创 2022-03-03 15:33:36 · 626 阅读 · 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 · 3212 阅读 · 0 评论 -
商品和属性的条件查询sql,解决根据属性查询商品筛选,通过having实现
SELECTwst_jxc_goods.goodsId,wst_jxc_goods.goodsName,wst_jxc_screening_goods_relation.relation_id,count(wst_jxc_screening_goods_relation.goods_id) countTmpFROMwst_jxc_screening_goods_relationINNER JOIN wst_jxc_goods ON wst_jxc_goods.goodsId = wst_jx.原创 2022-01-01 02:21:57 · 841 阅读 · 0 评论 -
mysql多个不同表不同结构合并查询,并集查询多个不同表结构数据,部分表结构相同,部分表结构不同的查询方式union All的实现
需求背景商品表分为三个:基础商品表【aidong_goods】、一存多品商品表【aidong_goods_unit_sku】、一品多存商品表【aidong_goods_specs_sku】基础商品表和其他两张表有关联id,并三张表部分字段不同,部分字段相同,需要根据条件过滤聚合查询出三张表的商品数据并合并!实现方式1.通过查询主商品后再查询其他关联商品缺点是不方便分页查询,还需要循环,速度和性能都可能受到较大影响2.关联查询缺点是无法直接并集拿到数据3.通过union all原创 2021-12-31 17:34:28 · 2195 阅读 · 1 评论 -
Charles或Fiddler抓包时部分应用无法正常抓包?使用proxifier可以轻松解决我们的协议抓包问题
Charles或Fiddler部分抓包正常,部分无法抓包!这样使用proxifier可以解决我们的问题!原创 2021-12-29 08:00:00 · 1352 阅读 · 0 评论 -
java的“看门狗”锁续期可以用php redis这样实现【php锁续期、分布式锁、无锁请求队列超卖】解决【商家超卖(商品库存控制)、用户超买(秒杀订单控制)】问题。非demo 线上一直在用
要求与痛点描述1.不允许使用库存创建队列因为库存如果是10w难道要创建一个10w长度的队列吗2.不允许对整个业务过程加锁可能业务执行时间很长 导致锁粒度太大 影响并发量3.如果业务时间大于锁时间 会造成锁失效需要实现锁续期4.需要解决“超买”问题对于秒杀除了库存并发问题 还有单用户购买问题限制 例如同一个不能多生成多笔相同订单5.“超卖”问题主要解决库存不能为负数或订单总量库存大于销售库存6.需要支持连接池下也能正常使用7.获取锁自动重试8.代码异常出错导原创 2021-06-26 22:30:55 · 648 阅读 · 1 评论 -
Goland编辑器 提示 Unresolved type xxxxxx类似的错误
多数可能为编辑器文件内的索引缓存问题在File->Invalidate Caches.. 中如下操作等待重启后即可恢复正常原创 2021-05-26 01:06:03 · 5133 阅读 · 0 评论 -
php个推sdk报错 Cannot modify header information - headers already sent by (output started at ...
报错如下think\exception\ErrorException: Cannot modify header information - headers already sent by (output started ati/vendor/getuilaboratory/getui-pushapi-php-client/igetui/IGt.AppMessage.php:2解决方式第一种方式 打开 php.ini 然后把 output_buffering 设为 on 重启we...原创 2021-05-24 15:15:35 · 421 阅读 · 1 评论 -
redis中的两个坑 一个随机性写入被拒绝 二是增减指定数值
1.在redis中使用脚本 调用 redis.call('time')[1] 报错如下ERR Error running script (call to f_e745355f11745192bd45376618a34bec9145653b): @user_script:1: @user_script: 1: Write commands not allowed after non deterministic commands原因与解决Redis内嵌了Lua环境来支持用户扩展功能,但是出于数据一原创 2021-05-24 12:53:56 · 1446 阅读 · 4 评论 -
redis替代mysql里token表进行登陆过期、单点登陆、更新数据、主动退出
需求需支持多终端系统的登陆有商家后台、运营后台、用户app单点登陆主动退出 清理token定时过期在token未过期时 账号基本信息变更时需及时更新token中的数据实现考虑到能通过userid反查redis中的token 并对token value值更新 需要考虑使用keys来匹配查找,但是听说keys性能不是非常好对于keys命令的性能情况 建议看下这两位大佬的文章Redis5.0改进了keys算法吗?python redis的scan_iter性能真的很差...原创 2021-05-20 00:39:58 · 641 阅读 · 1 评论