相关分享
聊聊 Go 的边界检查消除技术
在翻译的从慢速到SIMD一文中, SourceGraph工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题:
为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?
本文第一部分先回答这个问题。 第二部分介绍更好的边界检查消除方法。 第三部分再全面梳理Go的边界检查消除技术。
短 ID hash 映射的问题
我们正在开发的游戏中,会用一个 id 来表示一个游戏对象到底是什么。比如,“铁片” 是 1 ,“煤” 是 2 ,“采矿机” 是 3 …… 这样,在运行时,C 代码可以根据对象的类型方便的查询对象的属性。而对象的属性则是用 Lua 配置好,在运行期不变的。例如每燃烧一个单位的“煤”,可以产生 100KJ 的热量;一箱“铁片”有 100 个。
为了在 C 和 Lua 间快速共享这些配置数据,我还专门写了一个 cache 模块 。
问题出在 ID 的持久化上。因为游戏中的物品种类并不是特别多,出于时间以及空间性能的考量,我把 ID 设计为 16bits 。64K 种物品种类的上限看起来足够了。但 ID 的分配却比较麻烦。
使用 ZoomEye 找到未启用身份验证的 Jupyter 服务器
在使用Jupyter Notebook和JupyterLab 的过程中,有些用户缺乏安全意识,未启用身份验证功能,导致任何用户都可以直接访问自己的Jupyter服务器,并查看其服务器上的代码和文档。
我们使用ZoomEye 网络空间搜索引擎,通过特定搜索关键词,可以找到互联网上那些未启用身份验证的Jupyter服务器。这些服务器上泄露的代码和文档,若被不法分子利用,可能会造成数据泄露和资产损失。
我们建议全部Jupyter用户,在启动Jupyter服务的时候,遵循官方安全建议,设置成必须通过token或者password登录。
How to find the corresponding session in MogDB/openGauss from OS thread ID
当MogDB数据库由于某种原因占用了较大的系统负载,比如CPU占用接近100%,那么如何知道到底是数据库里的哪个会话或者哪些会话占用了资源?
在Oracle数据库中,这样的问题诊断,通常都会关联 v$session, v$process, 以及操作系统top命令或者ps命令中查到的操作系统进程ID。
但是MogDB本身是线程模型,在操作系统上只能看到一个进程号,那么该如何定位问题?
公司接口裸奔10年了,有必要用API接口签名验证吗?
请求身份
为开发者分配AccessKey(开发者标识,确保唯一)和SecretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)。
基于 Kotlin 特性实现的验证框架
本文介绍了一个基于 Kotlin 特性的验证框架,这些特性包括范型、DSL、扩展函数、带接收者的函数类型等等。因此,它使用起来简洁,也有具有很好的可读性。
弘康人寿基于 RocketMQ 构建微服务边界总线的实践
随着互联网+和平台化战略的兴起,各个行业的 IT 系统都在向互联网架构发展,涉及的主要技术包括微服务、消息和弹性计算等,采用微服务架构实现服务高内聚、低耦合,通过异步消息完成交易快速响应和高并发。由于微服务和消息是企业应用架构中用的比较多的,故希望通过本文探讨以下问题:
不就是个短信验证嘛,还真挺复杂的
支撑子域是为了项目成功必须要处理的问题,但由于没有现成、成熟的解决方案,必须要定制,费时费力。
如果能恰当地识别支撑子域的边界,形成”可复用”的”解决方案”,就可以将其从支撑子域简化为通用子域,降低成本和风险
如何获取 MySQL innodb 的 B+tree 的高度
MySQL 的 innodb 引擎之所以使用 B+tree 来存储索引,就是想尽量减少数据查询时磁盘 IO 次数。树的高度直接影响了查询的性能。一般树的高度在 3~4 层较为适宜。数据库分表的目的也是为了控制树的高度。那么如何获取树的高度呢?下面使用一个示例来说明如何获取树的高度。
使用 gorilla/mux 进行 HTTP 请求路由和验证
gorilla/mux 包以直观的 API 提供了 HTTP 请求路由、验证和其它服务。
Go 网络库包括 http.ServeMux 结构类型,它支持 HTTP 请求多路复用(路由):Web 服务器将托管资源的 HTTP 请求与诸如 /sales4today 之类的 URI 路由到代码处理程序;处理程序在发送 HTTP 响应(通常是 HTML 页面)之前执行适当的逻辑。
