emengjzs Blog

...

Better String Split in Java

Better String Split in Java String.split 是Java里很常用的字符串操作,在普通业务操作里使用的话并没有什么问题,但如果需要追求高性能的分割的话,需要花一点心思找出可以提高性能的方法。 String.split方法的分割参数regex实际不是字符串,而是正则表达式,就是说分隔字符串支持按正则进行分割,虽然这个特性看上去非常好,但从另一个角度来说也是...

Useful Utils and Tricks in Spring Framework

Useful Utils and Tricks in Spring Framework 这边总结一下在Spring中比较有意思的工具或扩展,Spring并不只有Ioc框架和Web框架,除此之外,还有一些比较有用的工具或扩展,这些本身应该是实现Spring核心功能所设计和封装的类,但由于良好的抽象和封装设计,使得这些类也能在一些平时开发中单独使用上,或许这些微不足道的工具正好能够解决一些细微...

Some Valuable Blogs/projects I Need to Read...

Here I list some valuable blogs/projects so that I can learn at anywhere at any time when I have to improve myself… こちらはいろいろ素敵なIT 関するブログやプロジェクト。何と言っても、勉強するのは大事なことだ! TCP *Blog auguring about T...

leveldb - Put 操作解读

Objectives 了解leveldb并发写的处理手段,以及提高写吞吐量的Tricks。 DB::Put 这是最高层的API入口,DB Interface 提供了Put和Write方法,前者针对单个KV数据,后者支持批量数据写,接口提供了Put的默认实现,直接复用Write方法,将数据封装成批量对象(其实只有一条)调用Write方法。 了解过Memtable、Interna...

Effective C++ Notes (1)

个人关于Effective C++的笔记。 Note: 未完全根据 C++11\14 进行修正,待更新 01 关于C++ 可以参考怎么样才算是精通 C++? - vzch的回答 - 知乎 02 尽少使用 #define 常量:用 const代替 函数:用inline代替 类常量: 用const, enum代替...

关于一些琐碎配置Tips

在vscode上使用cmder 新建批处理文件start_cmder.cmd,建议放在cmder\bin下,写入如下命令: @echo off SET CMDER_ROOT=X:\path\to\cmder "%CMDER_ROOT%\vendor\init.bat" 在vscode中设置 "terminal.integrated.shellArgs.windows": ["/k...

语言特征与模式- λ演算

语言特征与模式- λ演算 λ演算 wiki定义 Lambda演算可以被称为最小的通用程序设计语言。它包括一条变换规则(变量替换)和一条函数定义方式,Lambda演算之通用在于,任何一个可计算函数都能用这种形式来表达和求值。因而,它是等价于图灵机的。尽管如此,Lambda演算强调的是变换规则的运用,而非实现它们的具体机器。可以认为这是一种更接近软件而非硬件的方式。 λ 表达式通...

express.js路由实现解读

express.js 路由实现解读 关于express.js的实现源码解读,版本为 4.14。主要为路由部分。 一个Web框架最重要的模块是路由功能,该模块的目标是:能够根据method、path匹配需要执行的方法,并在定义的方法中提供有关请求和回应的上下文。 模块声明 express中的路由模块由Router完成,通过完成调用Router()得到一个router的实例,router既...

Basic Algorithms - 1

算法,必须把基础的部分重复再重复,不管喜不喜欢。 等价类 两种算法:QuickFind, QuickUnion 基于数组,权衡合并和查找操作时间复杂度,两者不能兼得。 QuickFind 所有等价类均指向同一个元素,合并时需要遍历修改标记。 QuickUnion 每个类对应一个父节点,形成树。 Weighted qui...