- 博客(68)
- 问答 (2)
- 收藏
- 关注
原创 认知是门槛、红利和自己人生的奇异点
如果你觉得有时候对方没有和你说真话,很可能是你的认知比对方低。高维度干涉低维度通常只会让前者持续浪费能量,所以现在越来越多的人说“修身”、“节劳”、“避谶”。提升自己最终落到了提升自己认知的关键节点。
2024-07-26 23:36:28
805
原创 20.教皇?他能有几个师?!——命令模式详解
军迷程序员在自嗨的同时,既能让你指挥千军万马斩将破阵,也让你进一步熟悉命令模式,还能让你了解命令模式在spring源码中的应用。不妨进来瞅一眼。
2024-03-31 20:00:00
1091
原创 19.严丝合缝的文明——模板方法模式详解
你了解设计模式吗?spring框架中IOC初始化是怎么回事?钩子方法了解过吗?你用过哪些钩子?如果金三银四的面试中这些问题问倒了你,抑或是晦涩的八股背的让你发疯,那么也许你可以点进来听我讲一讲模板方法模式,或许会对迷茫的你有些许助力。
2024-03-24 19:00:00
1548
原创 18.古今成大事者,必以多选替身为第一要义——代理模式详解
古今成大事者,必以多选替身为第一要义。人生如此,编程亦然。如果你觉得我是在谈人生,那我就是在聊设计模式;如果你觉得我在聊设计模式,那我实则是在谈人生。今天,师承薛定谔的段子手就来好好摆摆代理模式这些事儿。
2024-03-16 20:30:00
1057
原创 17.来自Sora的夺舍妄想——享元模式详解
如果Sora模拟的视频是下一维度世界的剪影,那么我们所在的世界会不会是上一维度世界的投影呢?我们玩的游戏中有大量可操控的NPC,那么我们有没有可能是上一层世界控制的NPC呢?今天,IT界的科幻妄想家Wayne带你从Sora开始闲扯,讲讲享元模式那些事。
2024-03-02 22:50:29
1167
原创 16.沙箱里的秩序——外观模式
从《三体》的“人列计算机”开始,我们来看看这个世界藏在沙箱之中的“秩序”。希望在我的笔下,会让你觉得设计模式是一门生动可爱的学科。这一次我们来聊聊外观模式。
2024-02-25 19:30:00
2858
原创 15.一种坍缩式的简单——组合模式详解
当曾经的孩子们慢慢步入社会才知道,那年味渐淡的春节就像是疾驰在人生路上的暂停键。它允许你在隆隆的鞭炮声中静下心来,瞻前顾后,怅然若失。也允许你在寂静的街道上屏气凝神,倾听自己胸腔里的那团人声鼎沸。孩子们会明白的,就像他们步入大学校园时候渐渐明白家乡只有冬夏,再无春秋一样。人生这场旅途,就是无数个后知后觉的组合。提前看到一些东西不会让我们清醒半分,相反,反而容易让人愈发的沉溺于那来势汹汹的纸醉金迷…
2024-02-18 20:45:00
1994
原创 13.从桥接模式细品人生的几座桥
就像过河需要的是桥,而不是一直尝试走到河的尽头。有时候勤奋并不是勤奋,而是在还设计阶段偷懒的债。方向错了,执行的再努力也是徒劳。千万不要用自以为是的勤奋感动自己。
2024-02-04 18:26:25
1188
原创 12.从项目经理的生存哲学到适配器模式(Adapter Pattern)
开发者看了会沉默,项目经理看了会流泪。从故事到springMVC源码,IT界的散文小哥通过讲述项目经理的辛酸让你理解什么是适配器模式。
2024-01-28 19:00:46
1008
原创 10.抽象工厂模式
原本秘籍只有一本,所以抢秘籍是大侠们的游戏。后来,有个老六把秘籍复印成三块钱一本,内卷就开始了。在简单工厂模式和工厂方法模式之后的抽象工厂模式,可能就是三块钱里的一部分。
2024-01-14 23:25:12
1145
原创 09.简单工厂模式与工厂方法模式
最近小米新车亮相的消息可以说引起了不小的轰动,我们在感慨SU7充满土豪气息的保时捷设计的同时,也深深的被本土品牌的野心和干劲所鼓舞。今天我们就接着这个背景,开启造车的终极幻想,尝试拆解一下工厂模式中最基础的两部分:简单工厂模式和工厂方法模式。
2024-01-07 19:00:00
1245
原创 08.哲说建造者模式(Builder Pattern)
天下万物生于有,有生于无”。如果现在我告诉你,你可以创建一个世界,你是一个造物主,但是你要把自己藏起来,不能让这个世界的小生命知道你的存在,你会以什么样的逻辑来设计第一个模型?有人说,我要信“码”由缰,懒得装;有人说,我要挖空细节演好上帝。这其实就是设计模式有趣的地方,它松散无骨,语气平和,不按它的来这个世界的太阳照常升起,但按它的要求做,这个世界会和谐的像假的一样。这一次,我想让屏幕前的你和我一起演一次“造物主”,从神的角度,俯视设计模式中的“建造者模式”。
2023-12-30 19:52:41
1168
原创 05.开闭原则(Open Closed Principle)
在编程领域,也许我们都是章北海。段子手携反骨仔带你从《三体》思想钢印的设定聊到软件设计的OCP原则。
2023-12-06 22:00:00
1873
原创 03.依赖倒置原则(Dependence Inversion Principle)
高层模块不应依赖低层模块,二者都应该依赖其抽象。而抽象不应依赖细节,细节应该依赖抽象。依赖倒置原则的中心思想其实就是。相对于细节的多变性,抽象的东西会稳定的多。
2023-11-24 19:15:00
1072
原创 0.专栏概述与几句闲话
犹记得一位身在广州的老前辈在我初入职场时的教诲:“数据结构和算法、设计模式是一个程序员的内功,内功从短期来看往往也是鸡肋。掌握它们、了解它们对于你眼前的CRUD也许没有丝毫帮助,但这些东西却决定了一个程序员的上限。只做CRUD,做了再多年也不过是从初级程序员变成了资深初级程序员,这些内功就摆在那里,谁能吸收的越多,谁就越有可能真正读懂、理解到主流框架的源码。而不是书到用时去背八股,自己成长的越多,也就越能把命运握在自己手里,越能自己做出一些选择。
2023-11-04 19:22:32
330
原创 40.弗洛伊德(Floyd)算法
我们此前拆解过迪杰斯特拉(Dijkstra)算法,与它一样,弗洛伊德(Floyd)算法也是用于寻找给定的加权图中顶点间最短路径的算法。该算法是1978年图灵奖获得者、斯坦福大学计算机科学系教授及其团队发现的,以主要创始人 弗洛伊德 命名。迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点的最短路径,而弗洛伊德算法中每一个顶点都是出发访问点,所以需要将每一个顶点看做被访问顶点,求出从每一个顶点到其他顶点的最短路径。
2023-10-29 19:00:00
336
原创 38.迪杰斯特拉(Dijkstra)算法
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。
2023-10-14 14:00:00
246
原创 37.普利姆(Prim)算法
要想富,先修路”,郝乡长最近为了德胜乡修路的事情愁白了头。得胜乡有A、B、C、D、E、F、G七个村子,现在需要修路把7个村庄连通,但是又想要耗费的公路建材最少(修建公路的总里程最短),聪明的你是否有什么好办法呢?注:各个村庄的距离用边线(权值)来表示。我们可以帮助郝乡长想想这个问题的解。思路上,尽可能选择少的路线,并且每条路线最小,是不是就能保证总里程数最小呢?
2023-10-08 20:39:23
165
原创 36.骑士周游算法及其基于贪心算法的优化
骑士周游算法,叫做“马踏棋盘算法”或许更加直观。在国际象棋8x8的棋盘中,马也是走“日字”进行移动,相应的产生了一个问题:“如果要求马 在每个方格只能进入一次,走遍全部的64个方格需要如何行进?”这就是著名的 骑士周游算法的由来。
2023-10-01 10:18:59
594
原创 35.浅谈贪心算法
相信大家或多或少都对贪心算法有所耳闻,今天我们从一个应用场景展开。假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号?
2023-09-24 15:40:13
4005
原创 34.KMP算法,拒绝暴力美学
今天我们来聊一聊字符串匹配的问题。比如有字符串str1 = “豫章故那,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。”,字符串str2 = “襟三江而带五湖”。现要判断str1是否含有str2,如果有则的返回第一次出现的位置,如果没有返回-1。面对字符串匹配问题,我们通常都会直观的选择暴力匹配算法来解决,这固然能够满足业务要求但不可否认,它效率极低。
2023-09-17 11:08:30
93
原创 33.二分查找算法(非递归)与分治算法
分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题…直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,比如我们此前说过的快速排序归并排序,以及著名的傅立叶变换(快速傅立叶变换)等等。
2023-09-03 19:00:00
137
2
原创 32.图的存储形式及深度优先算法与广度优先算法
前面我们讲了线性表和树,线性表局限于一个直接前驱和一个直接后继的关系。同时树也只能有一个直接前驱,也就是父节点。当我们需要表示多对多关系时,就需要用到图。
2023-08-27 13:22:44
100
原创 31.图解B树、B+树、B*树
B-tree即B树,B即Balanced,平衡。这里需要强调,B树及其常见的变体有三种,即B树、B+树、B*树。没有B-树,有些资料将B-tree翻译为B-树,很容易引起误解,以为B-树是一种树而B树是另一种树,这是错误的。B-tree就是B树。Balanced Tree 首先是平衡树,同时要求必须是一棵搜索树,也就是我们常说的排序树。
2023-08-20 19:00:00
83
原创 30.B树之2-3树
我们在理解B树之前不妨先回忆下,似乎我们在前面几篇一直都在说二叉树的优点,那么二叉树是否存在致命的缺陷呢?又是否有什么办法可以解决呢?
2023-08-12 19:38:21
75
原创 你真的了解List的remove()与removeAll()吗?
对于List接口及其实现是日常开发中最常用的容器之一,对于List集合的并集、差集等操作也同样是频率极高。但是往往越是简单、常用的内容越容易让人放松警惕。
2023-08-06 12:25:48
2275
原创 29.平衡二叉树(AVL树)的左旋、右旋与双旋转
上一篇我们着重了解了何为二叉排序树(BST),那么我们不妨来看下面这一棵BST有什么问题:它完全符合BST的要求,但是也很明显,它不对劲,它的左子树全部为空,从形式上看它其实更像一个单链表;插入速度没有影响,但查询速度完全没有体现出BST的树结构的优势,甚至比单链表还慢,因为它每次还需要比较已经为空的左子树;那么就不得不提到我们今天的主角 —— 平衡二叉树(AVL)
2023-07-30 13:39:15
155
原创 28.二叉排序树(BST)
前阵子和久未见面的朋友线上闲聊,说起了关于程序员市场供求关系的话题。我觉得这几点都凝聚了很多思考,这些担忧也不无道理。其实各行各业都是一样,只不过十几年来互联网风口安逸的风吹的太多程序员躺在红利上忘了还债。似乎这个行业动动脑子手指就可以轻松高薪。我记得小时候在老家有一个“全市连锁”的大超市,生意越来越红火,结账的售货员也越招越多,后来扫码结账的机器出现了,大量的售货员被辞退,仅留了一两个值守,而他们无一例外都要会操作那台机器甚至是排障。
2023-07-22 19:25:41
60
原创 26.哈夫曼编码树与哈夫曼编码表
其实很多同学可能会与我有相同的疑问,哈夫曼树的实现似乎有它独特的道理,甚至在软件设计师考试中也是每年的必考题目,但是它究竟可以做什么呢?
2023-07-08 18:27:48
390
空空如也
关于ElasticSearch7.x 异步并发读写的一些疑问
2022-08-03
Condition实现类中注入bean
2022-07-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人