编程概念
文章平均质量分 81
椰汁菠萝
在循环中进步
展开
-
CAP介绍及思考
CAP定理:前提是分布式系统中,CAP三个只能满足两个,不能同时满足三个特性。原创 2023-03-17 12:28:31 · 349 阅读 · 0 评论 -
数据结构--树
一、树的概念这是一颗大自然的树这是数据结构中的树二者看起来是如此的相像,现实中的树是根在地上,枝干往上长,叶子在整颗树的最顶端。而数据结构中的树如此相似却又刚好相反,树的根在上面,枝干往下长,叶子在树的最底端。先在脑子里有这么个概念,具体有关于树的术语在下文详细提及。定义树是一种非线性结构,由n(n >= 0)个结点组成,当n=0的时候,此时的树被称为空树。当n>0时,此时的树存在一个结点被称为根结点(如上图的A结点),而除根结点外的其它结点可以分为m个集合,每个集合本身又是一颗树原创 2022-05-05 18:41:04 · 1244 阅读 · 0 评论 -
并发和并行的区别(图解)
在学习多线程/进程编程时,我们经常会遇到并发和并行这两个名词,它们看起来是一个概念,都是“多个线程/进程同时执行”的意思,但实际上它们是有区别的,甚至说不是一码事。很多教材也都解释了并发和并行的区别,例如:并行是指两个或者多个事件在同一时刻发生,而并发是指两个或多个事件在同一时间间隔发生。并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。不过这种解释非常晦涩难懂,估计只有作者自己才能搞明白。这篇文章,我将站在一个大龄程序员的视角,使用通俗易懂的语言来重新剖析并发和并行的区别,并配上优雅原创 2022-04-18 18:16:32 · 3496 阅读 · 5 评论 -
什么是自旋锁?自旋的好处和后果是什么呢?
什么是自旋“自旋”可以理解为“自我旋转”,这里的“旋转”指“循环”,比如 while 循环或者 for 循环。“自旋”就是自己在这里不停地循环,直到目标达成。而不像普通的锁那样,如果获取不到锁就进入阻塞自旋和非自旋的获取锁的流程自旋锁,它并不会放弃 CPU 时间片,而是通过自旋等待锁的释放,也就是说,它会不停地再次地尝试获取锁,如果失败就再次尝试,直到成功为止非自旋锁,非自旋锁和自旋锁是完全不一样的,如果它发现此时获取不到锁,它就把自己的线程切换状态,让线程休眠,然后 CPU 就可以在转载 2022-04-11 17:19:10 · 762 阅读 · 0 评论 -
计算机系统基础---浮点数
简单回顾一下,简单来说,用定点数表示数字时,会约定小数点的位置固定不变,整数部分和小数部分分别转换为二进制,就是定点数的结果。但用定点数表示小数时,存在数值范围、精度范围有限的缺点,所以在计算机中,我们一般使用「浮点数」来表示小数。这篇文章,我们就来详细看一下浮点数到底是如何表示小数的,以及浮点数的的范围和精度有多大。什么是浮点数?首先,我们需要理解什么是浮点数?之前我们学习了定点数,其中「定点」指的是约定小数点位置固定不变。那浮点数的「浮点」就是指,其小数点的位置是可以是漂浮不定的。这怎么理解转载 2022-04-07 16:51:26 · 5376 阅读 · 1 评论 -
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses /alphabetical)。我们在常见的开源协议如BSD,GPL,LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。这里我们来看四种最常用的开源协议及它们的适用范围,供那些转载 2020-05-21 19:19:43 · 409 阅读 · 0 评论 -
软件版本GA、RC、beta等含义
GAGeneral Availability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。RELEASE正式发布版,官方推荐使用的版本,有的用GA来表示。比如spring。Stable稳定版,开源软件有的会用stable来表示正式发布的版本。比如Nginx。Final最终版,也是正式发布版的一种表示方法。比如Hibernate。...转载 2019-07-18 17:55:11 · 2289 阅读 · 0 评论 -
GNU通用公共许可协议--GPLV3中文翻译
第三版,2007年6月29日版权所有 © 2007 自由软件基金会 http://fsf.org/任何人皆可复制和发布本协议的完整副本,但不得修改【译者声明】 This is an unofficial translation of the GNU General Public License into Chinese. It was not published by the Free Software Foundation, and does not legally state the dis.翻译 2022-01-04 16:38:23 · 3096 阅读 · 0 评论 -
什么是DevOps?
提到DevOps这个词,我相信很多人一定不会陌生。作为一个热门的概念,DevOps近年来频频出现在各大技术社区和媒体的文章中,备受行业大咖的追捧,也吸引了很多吃瓜群众的围观。那么,DevOps是什么呢?有人说它是一种方法,也有人说它是一种工具,还有人说它是一种思想。更有甚者,说它是一种哲学。越说越玄乎,感觉都要封神啦!DevOps这玩意真的有那么夸张吗?它到底是干嘛用的?为什么行业里都会对它趋之如骛呢?今天这篇文章,小枣君就和大家好好聊一聊这个DevOps。DevOps的转载 2021-07-12 18:00:43 · 428 阅读 · 0 评论 -
六大设计原则--依赖倒置(依赖反转)
定义在面向对象编程领域中,依赖倒置原则(Dependency inversion principle,DIP)是指一种特定的解耦(传统的依赖关系创建在高层次上,而具体的策略设置则应用在低层次的模块上)形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。规定该原则规定:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口。抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口。图解图1中,高层对象A依赖原创 2021-07-08 17:35:48 · 494 阅读 · 0 评论 -
TCP协议及三路握手
TCP协议原文RFC793第一次A向B发送,B接收到;A不知道A-->B是否是通的,B收到A,B知道A-->B是通的;(SYN=1)第二次B向A发送响应,A接收到;A知道A-->B是通了,否则B不可能发回对应ack的响应,同时A也知道B-->A是通的;而B此时还停留在知道A-->B是通的,B-->A是否通B还不知道;第三次A向B发送确认,B收到;B知道B-->A是通的;(ACK=1)通过三步握手,A和B双方都确认了A-->B和B-->A两个链路的连通性;自此稳定连接建立,A开始向B发送真正数据;原创 2021-06-22 19:30:02 · 249 阅读 · 1 评论 -
语义化版本 2.0.0
语义化版本 2.0.0摘要版本格式:主版本号.次版本号.修订号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。简介在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷,系统规模越大,加入的包越多,你就越有可能在未来的某一天发现自己已深陷绝望之中。在依赖高的系统中发布新版本包可能很快会成为噩梦。如果依赖关转载 2021-04-21 16:40:15 · 113 阅读 · 0 评论 -
5分钟了解一致性哈希算法
前言一致性哈希算法(Consistent Hashing)在分布式系统的应用还是十分广泛的,本文尽量结合业务场景快速讲解一致性哈希算法的应用及与其相关的话题。1 分布式缓存随着业务的扩展,流量的剧增,单体项目逐渐划分为分布式系统。对于经常使用的数据,我们可以使用Redis作为缓存机制,减少数据层的压力。因此,重构后的系统架构如下图所示:优化最简单的策略就是,把常用的数据保存到Redis中,为了实现高可用使用了3台Redis(没有设置集群,集群至少要6台)。每次Redis请求会随机发送到其中一转载 2020-12-07 19:42:20 · 434 阅读 · 0 评论 -
访问者模式一篇就够了
访问者模式介绍最复杂的设计模式,并且使用频率不高,《设计模式》的作者评价为:大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了。访问者模式是一种将数据操作和数据结构分离的设计模式。(觉得太抽象,可以看下面的例子)。访问者模式的使用场景对象结构比较稳定,但经常需要在此对象结构上定义新的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要...转载 2019-11-18 15:00:09 · 413 阅读 · 0 评论 -
函数和方法区别
类外叫函数,类内叫方法在javascript中的解释为: 函数(function)是可以执行的javascript代码块,由javascript程序定义或javascript实现预定义。函数可以带有实际参数或者形式参数,用于指定这个函数执行计算要使用的一个或多个值,而且还可以返回值,以表示计算的结果。 方法(method)是通过对象调用的javascript函数。也就是说,方法也是函数,...原创 2019-09-26 14:48:53 · 626 阅读 · 0 评论