
底层服务/编程功底系列
文章平均质量分 92
用「道术法器」为题写这个分享有着极大的风险,一是这个被各种领域用烂的话题很容易被视为套路水文,二是老祖宗传承下来的这个哲学理解蕴含着大智慧,害怕自己理解尚浅,不仅对这个哲学理解尚浅,对数据思维的理解也尚浅,何能有深刻的感悟呢?但话说回来,so what?每一份沉淀都是一种成长,欢迎指正。
码界西柚
优酷资深工程师 | INTJ | 狮子座 | 高洞察力理性自律小i人,
著作《深入浅出Java虚拟机—JVM原理与实战》,
10年以上开发经验,参与设计过多个大型互联网项目,定期分享技术干货和项目经验,
希望大家可以多多支持我,点赞关注一下
展开
-
【技术白皮书】外功心法 | 第四部分 | 数据结构与算法基础(常用的数据结构)
算法是解决计算问题的一系列步骤或规则。计算问题是计算机可能能够解决的问题的集合。} else{原创 2025-04-08 19:30:00 · 1000 阅读 · 0 评论 -
【技术白皮书】外功心法 | 第三部分 | 计算机运行原理(精通运用内存管理技巧)
计算机是执行数据处理任务的核心装置,而程序则承载着处理流程与数据架构的蓝图。确保数据处理的流畅与高效,还能在遇到存储相关的问题时,迅速定位症结所在,采取针对性的解决措施。鉴于处理对象——数据,主要栖息于内存与磁盘之中,程序必须能够灵活且高效地在这两大存储媒介间穿梭作业。故而,深入理解内存与磁盘的构造,无论是从物理层面(即硬件视角)还是逻辑层面(即软件视角),都显得尤为重要且不可或缺。原创 2025-03-14 20:53:02 · 756 阅读 · 0 评论 -
【技术白皮书】内功心法 | 第二部分 | Telnet远程登录的工作原理
绝大多数计算机都是运行多用户操作系统的中小型机,这些中小型机通常由一台主机和多个终端组成,主机的计算资源被多个终端用户共享。系统为每个用户分配一个账号,规定了用户对系统的访问权限。用户通过自己的账号在某个终端登录后,可以访问系统的部分或全部资源。原创 2025-03-11 20:28:20 · 936 阅读 · 0 评论 -
【技术白皮书】外功心法 | 第二部分 | 数据结构与算法基础(算法及性能分析)
算法设计是极具创造性的工作之一,几乎所有问题的解决思路、方法和步骤都可以视为算法。人们处理问题的方式质量不一,因此算法在性能上也存在差异。本节将首先给出算法的定义,随后介绍分析算法性能的理论方法。原创 2025-03-11 08:50:46 · 991 阅读 · 0 评论 -
【技术白皮书】内功心法 | 第一部分 | IP协议的目的与工作原理(IP地址)
IP协议是整个TCP/IP协议族中最为关键的协议。它位于物理链路层之上,能够识别多种不同类型的物理链路,从而实现不同媒体网络的互联。在互联网中,所有传输的数据都以IP数据包的形式进行传递。IP协议提供了一种不可靠、无连接的数据包传送服务,这意味着它无法保证数据包能够成功到达目的地。IP的服务质量被称为“最佳努力”(best-effort),即它尽力提供传输服务,但不对传输的成功性做出保证。IP地址的分类机制导致了地址资源的非均匀分配和潜在浪费。原创 2025-03-08 23:10:22 · 1138 阅读 · 0 评论 -
【技术白皮书】外功心法 | 第二部分 | 计算机运行原理(数据是用二进制数表示的)
要想对程序的运行机制有一个基本的理解,首先需要了解信息(数据)在计算机内部是如何表现的,以及它们是如何进行运算的。在使用C、Java等高级语言编写的程序中,数值、字符串和图像等信息在计算机内部都是以二进制形式表示的。换句话说,只要掌握了用二进制表示信息的方法及其运算机制,就能更好地理解程序的运行机制。那么,为什么计算机要使用二进制来处理信息呢?接下来,我们将探讨这个问题的原因。什么是二进制数?为了更好地理解二进制数的运作机制,我们可以将二进制数 00100111 转换为十进制数。原创 2025-03-08 19:37:35 · 952 阅读 · 0 评论 -
零基础网络编程 | 带你全方位学习探索Email的实现原理(全)
并发性作为软件设计中一个核心且富有深度的概念性属性,其本质在于程序执行过程中能够同时处理多个任务或操作,而这些任务或操作在逻辑上可能并行进行,但在物理层面上可能因资源限制(如处理器时间、内存访问等)而采用交替执行的方式。并发程序的设计与实施涉及到一个微妙的平衡:它们既可以确实地实现多任务的同时处理(在资源充足且调度得当的情况下),也可能因为资源竞争、同步问题或设计不当而未能充分展现预期的并行优势,甚至在某些情况下退化为看似并行实则串行的执行模式。原创 2025-03-03 16:54:34 · 920 阅读 · 0 评论 -
彻底认识和理解探索分布式网络编程中的SSL安全通信机制
在网络环境中,信息在从发送端传输到接收端时,通常会途径多台计算机。在常规情况下,这些中间的计算机并不会对经过的数据进行监听。然而,当我们进行网上银行交易或信用卡支付时,存在潜在的风险,即网络上的敏感信息可能被恶意第三方截获,进而引发个人隐私的泄露风险。鉴于Internet和Intranet的体系结构并非无懈可击,存在一些安全漏洞,这使得不法分子有机会截获并篡改用户发送的原始信息。随着电子商务的蓬勃发展,用户对信息安全的需求日益增强。原创 2024-12-21 20:07:59 · 1200 阅读 · 0 评论 -
【技术白皮书】外功心法 | 第一部分 | 计算机运行原理(对程序员来说CPU是什么)
答案会在最后揭晓!首先,让我们讨论解释和运行程序的中央处理器(CPU)。如同计算机的大脑,CPU的全称是Central Processing Unit,它的内部由数百万到数亿个晶体管构成,这一点大家可能都很熟悉。CPU用以描绘计算机内部组件的功能特性。诸如奔腾、赛扬以及因特尔之类的半导体芯片,普遍被认知为微处理器。然而,鉴于多数计算机系统中通常仅配备一个微处理器来执行CPU的核心职能,CPU的构建基础是具有开启/关闭(ON/OFF)功能的晶体管。原创 2024-12-21 14:02:45 · 986 阅读 · 0 评论 -
【技术白皮书】内功心法 | 第一部分 | 数据结构与算法基础(数据结构)
数据结构与算法的基础知识概览。我们深入而细致地引入了数据结构与算法领域的一系列基本概念,旨在为读者铺设一条理解之路。具体而言,本篇文章的首要目标是阐释数据结构的本质及其研究范畴,使读者能够清晰把握数据结构这一术语背后的深刻含义及其所涵盖的广泛议题。同时,也着重介绍了算法的概念,并深入探讨了如何评价一个算法的性能,包括效率、稳定性等多个维度,帮助大家建立起对算法性能评估的全面认知。当人们运用计算机来解决现实世界中具体面临的挑战时,其过程往往遵循一套系统而严谨的流程。原创 2024-10-08 11:03:54 · 892 阅读 · 0 评论 -
【Git技术专题】如何使用git中的tag进行版本开发控制?
git仓库的tag是git版本库的一个标记,指向某个commit id标记的快照记录指针,所以,标签也是版本库的一个快照。tag主要用于发布版本的管理一个当版本发布后,可以为git当前的HEAD(commit id)打上 v.1.0.1、v.1.0.2等这样的标签。tag感觉跟branch有点相似,但是本质上和分工上是不同的。git push origin v1.0-beta # 推送到远程仓库。原创 2024-04-21 21:16:49 · 897 阅读 · 0 评论 -
【YAML语法规范指南】从入门到精通,揭秘神秘语法,引领配置文件解析指南(基础结构篇)
YAML利用这些原语,并添加了一个简单的类型系统和别叠机制,以形成一种用于序列化任何数据结构的完整语言。虽然大多数编程语言都可以使用YAML来进行数据序列化,但YAML擅长于那些从基本意义上讲是围绕这三个基本原语构建的语言。这些语言包括新一波的敏捷语言,如:Java、Perl、Python、PHP、Ruby和Javascript等。原创 2024-02-04 21:34:27 · 1607 阅读 · 1 评论 -
【深入浅出Java性能调优】「底层技术原理体系」详细分析探索Java服务器性能监控Metrics框架的实现原理分析(Dropwizard度量基础案例指南)
在应用在线上运行时,经常需要处理大量的数据。在业务代码中,我们通常会非常关注某些方法的调用次数和响应时间等信息。这种场景通常需要使用metrics统计来实现。为了实现这样的功能,我们可以使用现有的度量工具库,而不必自己编写度量插件。其中,一个常用的度量工具库是Dropwizard Metrics。Metrics的核心是MetricRegistry类,它是应用程序的所有指标的容器。首先,我们需要定义并创建一个核心注册组件服务,用于管理和注册Metric度量组件。原创 2024-02-03 16:40:48 · 1846 阅读 · 1 评论 -
【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑
SAML(Security Assertion Markup Language)是由OASIS制定的基于XML的开放标准。它用于在身份提供者(IdP)和服务提供者(SP)之间交换身份验证和授权数据,从而支持跨域单点登录,提高身份认证和授权管理的安全性和效率。原创 2024-02-02 19:54:57 · 1822 阅读 · 0 评论 -
【分布式技术专题】「分布式技术架构」 探索Tomcat技术架构设计模式的奥秘
Pipeline 就是连接每个子容器的管子,里面传递的 Request 和 Response 对象好比管子里流的水,而 Valve 就是这个管子上开的一个个小口子,让你有机会能够接触到里面的水,做一些额外的事情。Tomcat 中观察者模式也有多处使用,前面讲的控制组件生命周期的 Lifecycle 就是这种模式的体现,还有对 Servlet 实例的创建、Session 的管理、Container 等都是同样的原理。接口代表的是抽象主题,它定义了管理观察者的方法和它要所做的其它方法。原创 2024-01-22 14:51:05 · 1272 阅读 · 2 评论 -
【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南
Ø EasyExcel入口类,用于构建开始各种操作Ø ExcelReaderBuilder ExcelWriterBuilder 构建出一个 ReadWorkbook WriteWorkbook,可以理解成一个excel对象,一个excel只要构建一个Ø ExcelReaderSheetBuilder ExcelWriterSheetBuilder 构建出一个 ReadSheet WriteSheet对象,可以理解成excel里面的一页,每一页都要构建一个。原创 2024-01-18 19:22:52 · 1277 阅读 · 1 评论 -
推荐收藏 | 【Git实战专题】「必坑宝典」带你深入剖析Git操作指令下的奥秘原理和运作机制
Git是一个分布式版本控制系统,它可以跟踪文件的修改、记录历史版本,并支持多人协作开发。上面是Git中最常用的命令,用于在工作目录、暂存目录(也称为索引)和仓库、远程仓库之间复制文件。命令可以用于从历史提交中获取文件的副本,并将其放入工作目录和暂存区域。这对于恢复特定版本的文件或者查看历史文件的内容非常有用。同时,也可以用于切换分支,但在这种情况下,需要使用不同的参数和选项。原创 2024-01-17 17:55:51 · 984 阅读 · 1 评论 -
【数据结构专题】「基础数据算法」史上手把手带你认识一下数据结构的基本概念与术语
C是含两个实数的集合{c1,c2};R={P},而P是定义在集合C上的一种关系{},其中有序偶表示c1是复数的实部,c2是复数的虚部。数据对象:D={e1,e2,e3 l e1,e2,e3 -> ElemSet(定义了关系运算的某个集合) }数据关系:R1={,}基本操作:操作结果:构造了三元组T,元素e1,e2和e3分别被赋以参数vl,v2和v3的值。操作结果:三元组T被销毁。初始条件:三元组T已存在,1≤i≤3。原创 2024-01-09 14:03:48 · 1279 阅读 · 0 评论 -
作者推荐 |【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(方案分析篇)
性能调优是个很复杂、很细致的过程,要根据实际情况调整,不同的机器、不同的应用、不同的性能要求调优的手段都是不同的。也没有一个放之四海而皆准的配置或者公式。再比如操作系统工具,和操作系统本身相关的所谓大页机制,都需要大家平时去积累,去观察,去实践。原创 2023-12-17 11:01:15 · 1036 阅读 · 0 评论 -
【算法技术专题】精彩解密KMP算法之跃进式搜索的深度探索
KMP算法(Knuth-Morris-Pratt算法)是一种字符串匹配算法,用于在一个字符串S内查找另一个字符串P的出现位置。KMP算法的核心思想是利用已经匹配过的部分信息,尽量减少不必要的字符比较,从而提高匹配效率。原创 2023-12-13 15:45:40 · 1068 阅读 · 1 评论 -
【底层服务/编程功底系列】「网络通信体系」带你攻克网络技术之TCP协议的三次握手和四次链接的技术盲区
无论进行多少次握手,都无法百分之百地确保成功建立连接,因为最后一次报文可能会丢失,或者出现延迟等各种情况。成功进行三次握手只能说明双方现在以相当高的概率可以进行正常通信。原创 2023-12-11 17:12:30 · 504 阅读 · 1 评论 -
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
{x}表示前面的字符或字符组恰好出现 x 次。{x,}表示前面的内容出现 x 或更多的次数。{x,y}表示前面的内容至少出现 x 次,但不超过 y 次。这种形式的花括号可以帮助我们更精确地控制重复内容的匹配次数,并满足特定的需求。^[a-zA-Z0-9_]{1,}$ //所有包含一个或多个字母、数字或下划线的字符串^[0-9]{1,}$ //所有的正数^\-{0,1}[0-9]{1,}$ //所有的整数^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ //所有的小数。原创 2023-12-08 21:52:34 · 938 阅读 · 0 评论 -
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则表达式定义 )
目前的软件世界中广泛应用着正则表达式,包括*nix(Linux、Unix等)、HP等操作系统,以及PHP、C#、Java等开发环境和许多其他应用软件。无论是在哪个领域,你都能看到正则表达式发挥重要作用的踪影。使用正则表达式可以通过简洁的代码实现强大的功能。然而,为了追求简洁和强大,正则表达式代码的复杂性较高,从而给学习者带来了一定的困难。因此,学习正则表达式需要付出一些努力,但一旦入门后,并参照一定的参考指南,使用它就会变得相对简单有效。,很多人可能被这样的代码吓到过。原创 2023-12-08 21:50:35 · 1054 阅读 · 0 评论 -
【编程基础心法】「创建模式系列」让我们一起来学编程界的“兵法”设计模式(工厂模式)
首先我们先定义一个接口Product,作为我们的产品模型。void use();接下来我们定义一下对应的实现类,作为不同产品的一个实现实体,方便我们用工厂方法去调用进行构建。@Override@Override接下来我们定一下关于对应的工厂方法,这个工厂方法作为构建对象的一个工厂类。} else {在上面的代码中,我们定义了一个简单工厂类SimpleFactory,它有一个静态方法createProduct,根据传入的参数type来创建不同的产品对象。原创 2023-12-06 19:43:20 · 383 阅读 · 0 评论 -
【编程基础心法】「设计模式系列」让我们一起来学编程界的“兵法”设计模式(序章)
总之,设计模式是一种非常有用的技术,它可以帮助开发人员更好地组织和管理代码,提高代码的可读性和可维护性。在实际开发中,开发人员应该根据具体的需求选择合适的设计模式来解决问题。原创 2023-12-06 19:40:00 · 804 阅读 · 0 评论 -
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
服务器收到SYN报文后,会发送一个SYN+ACK报文作为响应,表示接受连接请求,并确认客户端的SYN报文。这是为了确保连接的正常关闭,并防止可能丢失的报文段导致的连接问题。服务器收到客户端发送的SYN包后,会发送一个带有SYN和ACK(Acknowledgment)标志的TCP报文段作为响应,这个报文段被称为SYN-ACK包。在TCP连接中,已经在上面的【TCP之保活计时器(keepalive timer)】的内容中,全面介绍过了,主要的目的是为了帮助检测连接,释放一些宕机或者出现问题的客户端服务。原创 2023-10-24 15:44:38 · 217 阅读 · 0 评论 -
作者推荐 | 【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服务调优)
为了应对将来的高业务量,目前需要扩容服务器,将2台服务器扩容至4台服务器,然后将服务器由2核4G升级成为4核8G。因此在升级过程中对于参数的调整也存在了一定的迷惑期。原创 2023-08-07 18:56:58 · 282 阅读 · 0 评论 -
作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角方式进行深入探索Linux零拷贝技术原理及实现
现在,零拷贝功能在Linux下几乎家喻户晓,但仍有很多人对其了解有限。为了解开这个功能的神秘面纱,我决定撰写一篇关于深入探讨的文章。本文将从用户模式应用程序的角度出发,介绍零拷贝的概念,省略了内核级的技术细节。希望通过本篇文章,可以帮助大家能更好地理解这个有用功能。为了更好地解释问题和解决方案,我们首先需要了解零拷贝是什么。让我们以网络服务器守护进程向客户端提供存储在文件中的数据为例,来说明这个过程中涉及的操作。上面的代码看起来比较简单,但是实际情况比表面看起来要复杂得多。原创 2023-08-04 15:57:20 · 1495 阅读 · 0 评论 -
【分布式技术专题】「架构设计方案」盘点和总结RBAC服务体系的功能设计及注意事项技术体系
权限管理是后台系统的重要组成部分,主要目的是控制不同人对资源的访问权限,以避免操作错误和隐私数据泄露等风险问题。我在公司负责权限管理,对该领域的设计很熟悉。公司采用微服务架构,因此权限系统独立于其他业务系统,包括商品中心、订单中心、用户中心、仓库系统、小程序和多个APP等十几个系统和终端。页面权限:用户登录系统后可见的页面,通过菜单进行控制。菜单分为一级和二级分类。只要用户拥有一级和二级菜单权限,就可以访问相应的页面。操作权限:页面的功能按钮,包括查看、新增、修改、删除、审核等。原创 2023-07-27 14:13:10 · 337 阅读 · 2 评论 -
【底层服务/编程功底系列】「手把手教学系列」带你打造一个属于自己的规则引擎服务,打破任何业务难题(逻辑模型和API设计)
以下是规则引擎的核心逻辑模型的大概架构图,如下所示:接下来我们,针对于Rule规则模型以及RuleEngine运作引擎模型的大概行为以及服务能力进行相关的介绍和说明。原创 2023-07-24 11:36:12 · 134 阅读 · 0 评论 -
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
人工智能是一个庞大的研究领域。虽然我们已经在人工智能的理论研究和算法开发方面取得了一定的进展,但是我们目前掌握的能力仍然非常有限。机器学习是人工智能的一个重要领域,它研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,并通过重新组织已有的知识结构来不断提高自身的性能。深度学习是机器学习中的一个研究方向,通过多层处理,将初始的“低层”特征表示逐渐转化为“高层”特征表示,从而可以用“简单模型”完成复杂的分类等学习任务。深度学习在人工智能的各个领域都有广泛的应用。原创 2023-06-20 19:47:33 · 667 阅读 · 0 评论 -
【开发者必备学习档案】梳理和统计相关的开发者资源大全
Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。就是 kahun 发起维护的 系统管理员 资源列表,内容包括:备份/克隆软件、云计算/云存储、协作软件、配置管理、日志管理、监控、项目管理。从下面的目录来看,本项目的工作量小不了,所以非常期待能有更多程序员一起来参与。HDFS:Java编写的,用于Hadoop框架的分布式、可伸缩、可移植文件系统。TahoeLAFS:安全、分散、容错、点对点分布式数据存储和分布式文件系统。原创 2023-04-15 16:53:16 · 587 阅读 · 0 评论 -
【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(下)
链表数据-主要用于存储每个延时任务节点。tasks也可以改成双向链表数组的结构:即节点存贮的对象中有指针,组成环形,可以通过数组的下标灵活访问每个节点,类似 LinkedHashMap。游标指针索引时间轮轮盘的容量大小,如果是分钟级别,一般就是60个格时间轮轮盘的层级,如果是一级,它的上级就是二级init初始化时间轮轮盘对象模型,主要用于分配分配每一个轮盘上面元素的TimewheelTask,用于延时队列的执行任务线程,已经分配对应的每一个节点的延时时间节点数据。原创 2023-04-08 19:19:38 · 4139 阅读 · 3 评论 -
【AIGC未来的发展方向】面向人工智能的第一步,一文告诉你人工智能是什么以及未来的方向分析
深度学习是机器学习的一种更高级的形式,它模仿人类神经元的运作模式,通过神经网络层层递归,将输入的数据不断地处理和推理以达到最终的输出结果。通过机器学习,计算机可以不断地 “感知” 与之相关的数据,并从中不断学习、发掘数据中的规律和关联,最终能够生成预测模型,并在接受新的数据时,更新和优化模型。未来,随着技术的不断发展,ChatGPT也将会不断更新和升级,为用户带来更多的惊喜和便捷。1. 更高效的机器学习算法和技术:机器学习是AI的基石,未来的AI将会拥有更高效、更强大的机器学习算法和技术。原创 2023-04-08 16:16:13 · 957 阅读 · 3 评论 -
【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)
最近大家都相比遇到了就业瓶颈了,很多公司要不就是不招人了,要不就是把门槛抬的很高,所以针对于一些分布式角度而言的技术知识点,更是必备条件以及重中之重了。那么今天笔者就针对于分布式协议以及一些算法原理进行详细的分析和原理介绍。使基于分布式架构下的所有节点在进行事务处理过程中保持原子性与一致性而设计的一种算法。2PC的改进版本,将2PC二阶段提交的过程一分为二, 形成了Can Commit, Pre Commit, Do Commit三个阶段组成的事务协议。调度模型。原创 2023-04-05 18:46:43 · 343 阅读 · 2 评论 -
精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南
时间轮的介绍时间轮的作用高效处理批量任务降低时间复杂度高效管理延时队列缺点:时间精确度的问题时间轮的使用场景时间轮的实现方案减少线程分配CPU的负载和资源浪费减少延时任务或定时任务实现原理时间轮功能设计时间轮的数据结构单时间轮基本逻辑模型时间轮数据结构模型时间轮处理逻辑计算延时时间存储读取延时数据任务队列单时间轮的问题和弊端内存和资源的消耗巨大轮询线程仍然还会慢慢的出现遍历效率低问题浪费内存空间问题轮数时间轮基本逻辑模型主要由一下两个字段组成执行bucket下的延时逻辑轮数计算的公式。原创 2023-02-25 18:19:53 · 1143 阅读 · 1 评论 -
【并发技术系列】「多线程并发编程」技术体系和并发模型的基础探究(夯实基础)
让我们通过本篇文章一同进入并发编程技术的世界里面,相信通过这篇文文章一定会对话你的并发技术体系有一定帮助以及夯实你的基础功底。原创 2023-01-12 19:56:07 · 2277 阅读 · 1 评论 -
【并发编程技术】「技术辩证分析」在并发编程模式下进行线程安全以及活跃性问题简析
线程安全,有两个重要的特征说明:“共享”和“可变共享是指可以被多个线程同时访问;可变是指变量的值在生命周期内是可以变化的;CAS有人翻译为Compare And Set或Compare And Swap都是正确的。多线程并发执行的状态下,锁的状态改变,基本都是使用CAS原理,它有一个比较别扭的叫法“CPU硬件同步原语”,算法是基于CPU硬件的,原子性操作,不会被其他线程打断。CAS的算法,比较当前值和期望的值是否相等,如果相等,则将当前值赋予一个新值。原创 2023-01-12 19:47:42 · 612 阅读 · 1 评论 -
我人生的里程碑之【作为独立开发者,第一次承接外包项目的心得经历,也许说出你的心声哦!】
说起来不怕大家笑话,当时的我们人员并不是很充足,总体下来,包含项目的组织者(Eric本人)一共只有4.5个人,为什么有0.5呢,那是因为有一个人是兼职(平时百分之50的经历需要应付考研)。因为此项目当时还属于一个类似于前后端一体化的项目,后续被我们优化成为了前后端分离的项目,前端采用的快速集成的UI框架,所以不需要过多专业的前端开发人员介入。考虑到了项目的过于复杂和庞大以及客户要求的水平和服务能力过高,所以针对于本项目而言却是是一个很大的调整哦。客户本身对于项目的需求认识不是很清晰、并且需求调整的频率过高,原创 2023-01-11 20:47:54 · 606 阅读 · 0 评论 -
编程基础心法「IO模型原理分析」彻底明白网络IO模型的原理(夯实基础)
最后,再举几个不是很恰当的例子来说明这四个IO Model,有A,B,C,D四个人在钓鱼:A用的是最老式的鱼竿,所以呢,得一直守着,等到鱼上钩了再拉杆;(同步阻塞)B的鱼竿有个功能,能够显示是否有鱼上钩,所以呢,B就和旁边的MM聊天,隔会再看看有没有鱼上钩,有的话就迅速拉杆;(非阻塞)C用的鱼竿和B差不多,但他想了一个好办法,就是同时放好几根鱼竿,然后守在旁边,一旦有显示说鱼上钩了,它就将对应的鱼竿拉起来;(io多路复用机制)原创 2023-01-06 23:06:55 · 231 阅读 · 1 评论