TBOX的内存管理模型,参考了linux kernel的内存管理机制,并在其基础上做了一些改进和优化。
内存整体架构
large_pool
整个内存分配的最底层,都是基于large_pool的大块内存分配池,类似于linux的基于page的分配管理,不过有所不同的是,large_pool并没有像linux那样使用buddy算法进行(2^N)*page进行分配,这样如果需要2.1m的内存,需要分配4m的内存块,这样力度太大,非常浪费。
因此large_pool内部采用N*page的基于page_size为最小粒度进行分配,因此每次分配顶多浪费不到一页的空间。
而且如果需要的内存不到整页,剩下的内存也会一并返回给上层,如果
继续阅读 »
新特性
自动检测所有系统libc接口,优先使用系统版本
支持自定义内存分配器,并且能够在debug模式下,获取每次分配的代码位置信息,用于自定义追踪
增加轻量级static_pool来维护整块buffer的内存分配,适合局部管理部分内存,pool虽然也能维护,但是底层基于large_pool,比较重量级,适合全局管理内存
增加stream快速读取全部数据到string的接口
增加adler32 hash算法
增加tb_memmem接口
采用pcre/pcre2/posix regex实现正则表达式库
改进
优化stream,支持对字符设备文件的读写
修改tb_init接口,增加allocator自定义内存分配器参数,实现用户的侵
继续阅读 »
今天在批量插入数据的时候遇到了奇怪的现象,明明 60 多行数据 id 居然到了 105,搞得我还以为是数据重复插入了呢。
Check 之后才知道,原来是自增 id 不连续。
more
Google 一番才知道,这是 Mysql 的优化策略。
继续阅读 »
文/Robin
本站推广
币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。
币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872
邀请码: 11190872
年末了,互联网充斥着各色总结。笔者也不免俗,决定写一篇所谓的总结吧。不过,这篇文章,比较杂乱,看似总结,实则自省。
苏格拉底曾说:「未经反思自省的人生不值得活。」每隔一段时间,需要放空自己,思考自己的思考过程,是否有值得改善优化的地方。接下来,笔者从几个方面对自己进行「解剖」,试图发现过去和未来的自己。
15 年年初,笔者正式开通了独立博客,并且对历史文章
继续阅读 »
玩家数据的loader优化
由于历史原因, 最早的时候玩家数据是在2个独立的服务进程中都存在, 游戏场景服务A, 和游戏数据逻辑服务B, A中的数据来自于B, A服务会根据某些逻辑, 触发数据回存, 将数据回存到B, 达到数据一致性要求, 但是随着游戏过程中, 会积累资源比如金币之类的, 这个积累的数据暂时只会存在场景服务A中,后面的运营过程中证明, 这种数据分两份的做法, 是个非常大的坑, 有很多理论上的机会导致数据不一致, 丢数据的问题。
继续阅读 »
一群恶魔的猪从无辜的小鸟那里偷走了所有的前端架构,现在它们要夺回来。一对特工英雄(愤怒的小鸟)将攻击那些卑鄙的猪,直到夺回属于他们的前端架构。(译者注:本系列是关乎前端架构的讨论,作者借用当前最风靡的游戏 - 愤怒的小鸟,为我们揭开了前端架构的真实面目。)
小鸟们最终能取得胜利吗?它们会战胜那些满身培根味的敌人吗?让我们一起来揭示 JavaScript 之愤怒的小鸟系列的另一个扣人心弦的章节!
阅读本系列的介绍文章,查看所有小鸟以及它们的进攻力量。
战况
红色大鸟 - 立即调用的函数表达式
蓝色小鸟 - 事件
黄色小鸟 - 模块化、依赖管理、性能优化
黑色小鸟 - 前端分层架构
白色小鸟 - 代码质量和代码分析
绿色小鸟 -
继续阅读 »
训练阶段我们采用了分批处理,可以优化部分内存。
原先我们的代码使用一次性载入数据,然后开始若干次迭代,直至收敛。这样保存image与shape的数据矩阵Data就一直占用内存,但实际上,数据集的image与shape 的作用仅仅是计算$\Delta X$和$\Phi$,两变量的定义参考《 Supervised Descent Method and its Applications to Face Alignment》,其实也就是init shape与true shape的差值以及init shape的特征向量。计算完了,Data就没用了。于是我们设想分批处理,每次迭代载入一次数据,用完了就clear。这样就需要载入多次,可能时间上
继续阅读 »
界面优化
需要注意的点总结如下
采用硬件加速,在androidmanifest.xml中application添加 android:hardwareAccelerated="true"。不过这个需要在android 3.0才可以使用。
继续阅读 »
highlight.js是一款功能强大的代码高亮Javascript工具,支持162程序语言,自带74种高亮样式,支持自动侦测语言类型,几乎所有的markdown都支持highlight.js。Hexo在syntax-highlighting-with-highlightjs的基础上成功实现对代码行号的添加,并且做了一些优化和改进。
注:阅读本文需要一定的前端基础知识。
加载highlight.js
使用highlight.js非常简单,只需引入highlight.js的css及js(推荐在主题模板中作为全局css和js引入,引入的位置在之间)。
html
highlight.js有许多代码风格,我在这里使用的是git
继续阅读 »
本书第四章的读书笔记, 本章主要阐述: 如何使用Lambda表达式.
基本类型
考虑到装箱类型过于占用内存, JDK提供了针对基本类型的操作, 以达到优化的效果, 如mapToLong方法.
对基本类型做特殊处理的方法在命名上有明确规范:
继续阅读 »