让MySQL支持含数字的自然排序
在实际应用中,我们经常需要对数据进行排序,比较常见的是根据ID、时间进行排序。
另外一种场景,就是当排序的字段是字符串,而且字段值中部分为数字时。
此时,我们希望排序后的结果是,数字部分能够按照数字的自然顺序进行排序。
对于这种场景,MySQL默认的排序方式可能会有问题。 … [阅读文章]
TCP协议之网络延时
《成长型思维》从平凡到优秀的七种思维模式
成长型思维是斯坦福大学行为心理学教授卡罗尔·德韦(Carol Dweck) 在其《终身成长》 (MindSet) 一书中提出的一个概念和一种心智模式,她将人的思维方式区别为“固定型思维” ( Fixed Mindset)和“成长型思维”。
固定型思维 … [阅读文章]《软件随想录》读书笔记
Java普通对象创建之流程图分解
传送门:Java类加载过程之流程图分解
2.为对象分配内存 对象所需内存的大小在类加载完成后便可完全确定。 相当于把一块确定大小的内存从Java堆中划分出来。 指针碰撞(Bump the Pointer)假设将堆划分为两部分,左边为已使用内存,右边为空闲内存。(堆内存规整) … [阅读文章]
Java类加载过程之流程图分解
本篇内容主要是对Java类加载过程的一个整体总结,接下来就直接上图吧。
1.加载 2.链接 1.1 验证 1.2 准备 1.3 解析 3.初始化 参考《深入理解Java虚拟机》第2版
《Java虚拟机规范》Java SE 8 … [阅读文章]
计算机任何工程领域的问题,都可以通过增加一个中间层来解决
计算机任何工程领域的问题,都可以通过增加一个中间层来解决。
例如:
L1、L2、L3解决了CPU访问内存的性能问题;
LVS、Nginx解决了负载均衡,高可用问题;
CDN解决访问量大造成的服务端性能和带宽压力,提升用户访问体验;
Java虚拟机的中间码实现了代码一次编写,可处处运行; … [阅读文章]
掌握这些,你也能徒手实现ArrayList、Vector和Stack
今天我们要学习的,是数组这种数据结构在JDK集合中的应用。
数组作为最简单的一种线性结构,操作也比较简单。虽说简单,但它却是编程语言底层实现不可缺少的。
它的特点是,按索引随机查找快,插入和删除比较慢。因为按照索引可以直接定位到某个元素,而插入或删除通常会涉及到数据的迁移。 … [阅读文章]
Times 33 哈希算法
一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”。理想情况下,散列函数应该把集合中不相等的实例均匀地分布到所有可能的散列值上。要想完全达到这种理想的情形是非常困难的。幸运的是,相对接近这种理想情形则并不太困难。
由Daniel J. … [阅读文章]
五年程序员人生的点点滴滴(旧文)
和大家一样,我也是一名普通的程序员,很快工作五年了。现在依然记得大学时软件工程老师曾说过的一句话,大概是这样的:“工作五年之后,就基本可以分出大家的区别了”,这句话大概有两层意思,第一,大家都基本确定了自己的工作或职业方向;第二,一个人的能力如何基本已经确定了。先抛开这句话的真理性,至少它本身是有些道理的,当然随着时间的迁移,当初的五年时间对于现在可能已经不太准确了。但这句话一直陪伴着我,每过一段时间,我就会想起这句话,因为自己很想知道五年之后自己是什么样子,总告诫自己一定要找准方向,要努力学习,让自己在合适的时间能有质的飞跃,能够在同行同辈之中脱颖而出,在工作或事业上形成一个转折点。愿望总是美好的,而正因为有了美好的愿望,人类才能够不断向前走。 … [阅读文章]
Linux下查找文件的一些应用场景
程序员必备:Linux日常维护命令
Java几种常见的CMS GC Causes
Allocation Failure happens when there isn’t enough free space to create new objects in Young generation. Allocation … [阅读文章]