系统的正确性 - 事务及相关
事务这个词在开发世界里默认是和数据库绑定在一起,但其实其他领域里也有事务这个词,比如会计事务所,律师事务所,不同领域的事务所指的意思是不一样的。 这里主要聊聊
- 什么是事务
- 为什么是事务
- 如何实现一个事务
- 总结
事务这个词在开发世界里默认是和数据库绑定在一起,但其实其他领域里也有事务这个词,比如会计事务所,律师事务所,不同领域的事务所指的意思是不一样的。 这里主要聊聊
许多年之后,当讨论起Java开发的时候,可以不讨论安卓开发,可以不讨论多线程,可以不讨论流,可以不讨论JVM, 但Spring是一个绕不过去的话题.
Spring从诞生到现在已经有20年左右的历史,这个生命不如linux, 但也足够长了.
在前端界,还找不到和Spring框架相提并论的框架,Spring的框架在Java领域是没有对手的,可以说找不到竞品,前端至少是React和vuejs两家独大,而且也是最近几年才出来的产物.
这篇文章主要闲聊
做应用开发的朋友大概这辈子不会遇到B+树这个数据结构,它的应用场景更多是在底层。
所有做技术的人有时候会面临一些困惑,有些技术或者理论离应用太远,有点曲高和寡,导致了我们会对这类技术丧失兴趣. 但B+树有时候就像一个幽灵一样出现在一些技术文章中,引起你的关注.
这篇文章主要是浅谈一下我记忆中的B+树.
要了解B+树先得说说B树, 1972年Bayer和mccreight发明了B树,但并没有说明B是什么意思, B可能代表Balance, Bayer或者Boeing,在这里就不深究B的具体含义了. B树首先它是一棵树,然后它是一颗平衡树,所有的结点都能存储数据。
B+树和B树的关系,大体上看就是iPhone6 plus和 iPhone6之间的关系.
注意:不存在B-树,这个“-”其实是个连接符,但会让人误解为是减号,如果出现B-tree其实就是B树.
计算机有两大问题,一个是命名问题,一个是缓存失效。缓存在整个计算机体系里无处不在
这篇文章主要是探讨一下缓存的通用问题以及Redis相关问题
万物互联是现在乃至未来的趋势. 只要互联就需要网络,不管是无线还是有线。只要牵涉到联网,就牵涉到两台机器上的应用程序之间的通信。 只要是通信,我们就需要又快又好的进行通信。那么应该有一个事物来做这样基础的事情,这样开发者可以专注于写业务逻辑.
这个事物就是Netty. 当然Netty不是进行Java进行网络通信的唯一选择,我们自己也可以写一个网络编程框架,但在此刻,它是网络通信框架领域那颗最耀眼的明星,这就是影响力,必须承认它的人气。当我们讨论Java网络编程框架的时候,Netty是一个绕不过去的话题. 让我来沏一杯茶,闲言碎语几句.
一个人抗一个木头会很重,如果两个人一起抗木头,两个人承担的分量会少点,如果三个人呢?那么三个人承担的分量会更少. 换言之,如果从整体上看,三个人的力量要大于两个人
现在的应用的数据变得越来越大,业务的流量越来越多了,分布式成为了一个不可避免的趋势。
这篇文章主要谈谈
I/O顾名思义就是输入输出,I/O设备可以指网卡,键盘,打印机等,在这里为了方便讨论,I/O专门指网络设备.
之前也看过不少专门讲I/O的帖子和文章,其中有不少帖子有误导的嫌疑,比如打一些不恰当的比喻,所以我有了一种想重新梳理一下I/O模型的冲动。
一个系统如果足够稳定,而且客户对它也很满意,我们一般没有去优化它的必要,但如果随着用户量增加,系统变的缓慢,我们就有优化它的必要性了. 借用我前面博文《一种可以衡量事物的指标-快和好》,一个系统追求的目标之一是快,但快的前提的是
好,也就是稳,否则步伐太大了就容易扯着蛋了. 优化系统是大的话题,这里只讨论其中的一个小领域-高并发.
任何一个计算机的问题,都能从现实中找到雏形和模型,高并发也不例外。高并发的内容还是比较多的,所以不同类型的高并发问题需要不同的角度,就好像作战的时候,战斗机需要在高空1万米,也需要突然下降到高空1千米,也有可能是潜艇下沉到水下几千米配合作战. 这种思维模型我给它取了个名字叫“海陆空”模型.

在现实世界里,我们做事是有顺序的,比如做完了事情1,再做事情2, 也有可能是没有顺序的, 事情1和事情2是可以同时进行的. 所以我们在这里看到两个特征
一直以来,JVM是Java开发者进阶过程必然要遇到的一块知识点。JVM离绝大多数开发者的实际工作还是比较远的,让人感觉是一个华而不实的东西。或者说有某一类群体,学习JVM就是为了面试,而且是以机械背诵的方式来学习JVM的,这都已经背离了学习一个知识的初衷.