![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
道以明向
文章平均质量分 68
道是核心思想、理念、本质规律。万物变迁循环中亘古不变的规律,在个人层面就是人生境界和价值观,判断坏美丑喜的标准,是生来就有的天赋,不易改变,只能靠长期修养去领悟。
程序猿KIMI
爱狗、爱生活、爱编码的退役程序猿
展开
-
三万字长文 | 以架构视角解读银行数字化转型的两份重磅指导文件
2021年12月和2022年1月,两份关于银行数字化转型的重量级指导文件——中国人民银行的《金融科技发展规划(2022—2025年)》(以下简称“发展规划”)和银保监会的《关于银行业保险业数字化转型的指导意见》(以下简称“指导意见”)先后印发,这对在积极筹备数字化转型工作的各类银行而言,正是2022年开年布局的最好指导。两份文件都对银行的数字化转型提出了具体要求,二者各有侧重、相辅相成、有机融合。这两份文件不是孤立的,是国家数字化转型文件体系的一部分,因此,对这两份文件的解读,需要综合背景信息,清楚文件立足转载 2022-12-03 15:32:17 · 1513 阅读 · 1 评论 -
傅雷家书与互联网从业者的思考
每个人都有一个觉醒期,但觉醒的早晚决定个人的命运。就像工作中遇到的问题一样,每个问题都有一个原因,之前我很多时候想不清楚,犯了很多工作中的大忌。比如焦虑、急于求成、顾左右而言他,没想清楚就汇报,帕拉帕拉,和老板沟通出问题,为什么会这样呢,患得患失,完了,想到这我真的完了。这几天在看“傅雷家书”,看些技术博客,在我看来,技术不仅仅是吃饭养家的工具,也有很多...原创 2021-03-14 12:20:28 · 217 阅读 · 1 评论 -
人生的意义
最近在 YouTube 看了个演讲分享,关于人生的意义,深有感触,所以简单翻译并分享记录在这里。让我们一劳永逸地找出生命的意义,在20分钟之内,好吗?LIFE IS______你觉得这个空格里该是什么词?人生是什么?有什么想法吗?让我们先来看看哲学家和聪明人说过的一些不同选择。LIFE IS TIME(人生是时间)有人说生命就是时间,生活就是时间,人生的定义是你从出生到死亡之间的时间。因此,人生的字面意义就是时间。如果人生就是时间,那么拥有美好生活的方法就是明智地利用时间。你如何能明转载 2021-07-29 21:08:27 · 217 阅读 · 1 评论 -
人件的思考
人件提到了一个观点。“我们的工作中的问题更多属于社会学范畴,而非技术范畴。”这点在大多数时候,是一种不能拿到明面上说的话术,比较适合言传身教。但是在经历的项目多了以后,相信每一个人都会有这种经历。1 项目愿景规划很美好,可是就是做不成。2 涉及关联方太多,软硬兼施都没用,只能上升了 3 技术水平残次不齐,定义的规范模板没法执行。记得启示录这本书提过,会议更大的作用是就议题和结论达成一致,而很多是需要线下沟通的,否则在会上有人跳出来就很难搞了。有人会说,你说的简单,大家kpi都不一致,咋整。这种我遇到的太原创 2021-03-15 00:03:08 · 93 阅读 · 1 评论 -
麦肯锡和互联网到底什么关系
最近看了两本关于麦肯锡的书籍,大家都知道麦肯锡是咨询公司,那比如就需要极强的思维逻辑能力+成型的方法论才能,我从两个角度思考麦肯锡的哲学,一是如何的高效可持续发展,二是和其他的工作模型相比,有什么可比性。先简单介绍一下者两本书的核心观点。麦肯锡的思考武器第一句真理,不要用勤奋和努力来安慰自己,因为工作是为了创造价值,这个价值必须是双向的,即公司和个人相互成长并创建价值。so,假设你身在996的环境里,那么在工作占满的时候,更需要停下来思考每分钟每一行代码到底给我带来了什么,重复的工作能否...原创 2021-02-19 00:54:42 · 124 阅读 · 0 评论 -
处理一份内心煎熬的工作有两种方法——只有一种是正确的
你知道他们说什么。假如你有个工作,意味着你只是破产了。你在用时间换钱,你在为别人工作。你读过的博客告诉你要辞职,创业才是未来的潮流。社会把工作变成了敌人。我们抱怨我们的工作,指责我们的工作是问题所在,并且迫切希望摆脱工作,以减轻我们的焦虑。我有个消息给你,你的工作不是问题...你才是。1 你对工作的态度是一种选择我需要跑鞋,所以我去了商场,走进一家鞋店。我希望有一位店员会来问我是否需要帮助,但没有人来。反之,我看到两名店员靠在柜台前在聊天。他们在聊他们不喜欢在一家鞋店工作,他们的工资为什么这么低转载 2021-07-29 18:59:27 · 70 阅读 · 0 评论 -
从30岁到35岁:为你的生命多积累一些厚度
标题和内容是网上看到的,从中自己的感触很深,读研的时候,工作的时候,对自己的定位和职业发展其实没有更多的思考,总是在用忙碌来让自己停止思考,这种很要不得,而现在已经31了,年龄、精力都不允许我轻易犯错了。只是有一句话要不断告诉自己,有担当+要坚持。常常思考一个问题:是不是考虑做2年开发,打2年酱油,然后结婚生子,这样到底行不行?无论你是男是女,人生是一场独自修行的道路。如果在可以选的时候,还是选择靠自己吧。无论你是要养家还是要实现人生价值,如果你处在迷茫之中,希望这篇文章可以传达一些正能量,可以帮到你转载 2021-03-30 13:02:21 · 93 阅读 · 0 评论 -
DDD那些事,多思比。
、原创 2021-08-22 15:52:50 · 86 阅读 · 0 评论 -
程序员说“是”和“否”,代码整洁之道。
“ 能就是能,不能就是不能,不要说试试看”-尤达大师。专业书有两种,一种教我们“战术”,一种教我们“战略”。代码整洁之道,让我影响最深的话,也是工作这么多年最深刻的理解,承诺与言行一致,是一个人最重要的口碑。代码整洁之道这本书很棒,一个专业的人并不是技能专业,还应该是职业专业,态度专业,所以我会结合自己这几年的工作经历和一些案例,与本书结合起来,希望能得到反思收获。说是,说否,坚持原则,坚持底线正如引言一样,这点每一个职场人第一时间会想到的是,“老板让我做这,我能不做吗,我怎么拒绝。”原创 2021-02-21 19:55:27 · 377 阅读 · 3 评论 -
是真的吗?蚂蚁的LDC架构,到底是干嘛的,真的那么牛吗
参考文章:http://www.dockone.io/article/9970原创 2021-06-02 22:39:24 · 6142 阅读 · 3 评论 -
阿里不拔:分享 2 种规划思维和 4 个规划方法
阿里不拔:分享 2 种规划思维和 4 个规划方法中生代技术3天前以下文章来源于阿里巴巴中间件,作者不拔阿里巴巴中间件Aliware阿里巴巴中间件官方账号每年各个部门都要进行规划,规划能让目标更聚焦,让我们清晰地知道今后我们要做什么、如何去做。并非每个人都会参与规划中去,但需要掌握规划的方法,否则让你来做规划时,你会发现很痛苦,找不到什么头绪,要么规划出来的内容都是散点,要么规划出来的太抽象。在本篇文章中,提到了规划的 2 种思维模式,并分享自己在规划中用到的 4 个规..转载 2021-08-30 08:59:11 · 136 阅读 · 0 评论 -
康威定律的各种解读 - ThinkingLabs
随着时间的推移,不同的人以各种不同的方式阐明了康威定律。这是我最近在阅读康威定律文献时发现的变化的概述。Melvin Conway对康威定律的原始定义:设计系统的组织被限制生产设计,这些设计是这些组织的通信结构的副本。尤尔登和康斯坦丁更坚定地重新表述了康威定律:组织设计的任何系统的结构都与组织的结构同构。– Edward Yourdon 和 Larry L. Constantine,结构化设计,1979埃里克·雷蒙德 (Eric Raymond) 重申了康威定律如下:软.转载 2021-08-19 22:09:37 · 654 阅读 · 0 评论 -
谋略那些事,汉成帝鸿嘉三年所思,职场以退为进策略
最近看到一篇文章,讲婕妤的推让,我觉得很有意思,就写了一些自己的思考。以下是作者的分析,总集一句是利益的体现永远是多维度的,多变的,自己的不可替代性,好好想想,这是最重要的,100%同意的。以史为鉴是个好东西,历史的故事,工作中其实也很常见,功高盖主,权力斗争,平衡制衡都是常见套路,很多人说这些只能私底下说,我是特别见不惯那些满口仁义道德用价值观来管理人,同时背地一套阳奉阴违的某些人,但是往往是他们,才能让你长记性。言归正传,这里我想说的是,如果坐了,会发生什么。可能性一,引得皇后嫉妒,两方原创 2021-09-01 00:15:57 · 581 阅读 · 0 评论 -
新晋 CTO 的工作总结:我在第一年学到了 14 个经验教训
新年好!对我们很多人来说,2020 年是艰难的一年,我们与 COVID-19 战斗,并开启了远程办公模式。这一年,因为我们所有人只能呆在自己家里,几乎没有去旅行,所以我们有了大把的时间。我们认为理所当然的东西被夺走了,我们担忧会失去亲人朋友。希望 2021 年,我们能自由地生活。但现在更需要我们的责任感和警惕性。在现在的公司,我担任首席技术官(CTO)已经有一年有余。值此岁末之际,对我这一年的工作做简单总结。回顾这一年的历程,过程很艰难,收获也很大。有些时候,我会认为我不具有领导能力,应该回.翻译 2021-07-30 09:07:22 · 497 阅读 · 1 评论 -
既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?
其实这就是协议和实现的关系,MESI 只是缓存一致性协议,每种语言都有不同的对 MESI 的实现方式,在 Java 中是借助了 volatile 关键字来实现的,也就是说 volatile 关键字的底层原理是使用 MESI 来保证可见性。既然聊到了 volatile 这个关键字,我就来和你聊一下为什么 volatile 用到了 MESI 协议,这就要从 JMM 来谈起了。在说 JMM 之前,你还得需要先了解一下计算机中的内存模型先从内存模型谈起计算机在执行程序时,会从内存中读取数据,然后..转载 2021-08-04 14:14:12 · 1116 阅读 · 2 评论 -
JVM优化调试使用心得与线上CPU100%原因分析
因为线上系统遇到CPU100%的问题,这种问题在流量较大时比较常见,因为JDK自身有很多JVM调试工具,如jps、jstack、jmap、jhat、jstat等使用工具,在实际工作中使用这些工具进行调试是十分必要的,一般通过以下步骤就能定位并解决CPU100%的问题,文章是自己很早写的,现在重拾一下,下面只做简单介绍,这些都可以在线上服务器上执行。一、 jstack jstack用来查Jav...原创 2018-02-28 15:14:52 · 2773 阅读 · 0 评论 -
深入理解JVM之垃圾回收详解
一、 垃圾收集的意义在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放转载 2016-03-01 10:18:07 · 142 阅读 · 0 评论 -
Linux 环境Runtime.getRuntime().exec()执行报文件无权限
问题最近项目使用了Runtime.getRuntime().exec()方法,这个方法返回的返回值的含义如下。在使用过程中,发现直接exec(cmd)执行scp命令没问题,但是执行ssh命令时报错比如 scp local remote,scp remote local都成功。ssh root@ip "cp a1 a2" 报错解决办法String[] cmds ={"/bin/sh"."-c",cmd};Runtime.getRuntime().exec(cmds);原因这原创 2021-09-02 17:02:45 · 7630 阅读 · 0 评论 -
Spring Boot引起的“堆外内存泄漏”排查及经验总结
背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPreTouch -XX:ReservedCodeCacheSize=128m -XX:InitialCodeCach转载 2021-06-16 21:14:37 · 197 阅读 · 0 评论 -
sbt构建scala时scalacOptions参数
sbt构建scala项目时,scalacOptions选项的几个参数设置, scalacOptions ++= Seq( “-deprecation”, “-Xfatal-warnings”, ) 其中如果加了-Xfatal-warnings,则类似deprecated的这种编译警告将转为错误信息,编译无法通过。 -deprecation则可以在编译时提供编译详情。原创 2017-10-20 15:43:56 · 698 阅读 · 0 评论 -
Mysql关键参数详解
tmp_table_size :这个配置限制了内存临时表的大小,默认值是 16M。如果临时表大小超过了 tmp_table_size,那么内存临时表就会转成磁盘临时表。internal_tmp_disk_storage_engine :磁盘临时表使用的引擎默认是 InnoDB,是由参数 internal_tmp_disk_storage_engine 控制的。max_length_for_sort_data :排序字段最大长度,超过后MySQL根据max_length_for_sort_data变量原创 2021-08-12 09:51:18 · 251 阅读 · 0 评论 -
对于零拷贝、mmap、sendfile的理解和思考
零拷贝说白了,其实就是传统 IO 的性能实在有点拉胯,所以搞出来一个零拷贝机制提升一下效率。要了解零拷贝的话,首先得先了解一下传统 IO 的执行流程,这里举个例子,通过传统的 IO 进行网络传输来传输一个文件。相关参考文章:尽情阅读,技术进阶,详解mmap原理一文带你,彻底了解,零拷贝Zero-Copy技术相关学习视频:c/c++Linux后台服务器开发高级架构师(免费订阅报名,每晚 20 点大佬直播公开课)手写用户态协议栈,udpipeth数据包的封装,零拷贝的实现,.转载 2021-06-17 10:44:56 · 168 阅读 · 0 评论 -
Mybatis plus插件Postgresql报错, No operator matches the given name and argument types
public static Timestamp valueOf(String s) { final int YEAR_LENGTH = 4; final int MONTH_LENGTH = 2; final int DAY_LENGTH = 2; final int MAX_MONTH = 12; final int MAX_DAY = 31; String date_s; String ti.原创 2021-08-24 09:05:03 · 2379 阅读 · 0 评论 -
数据库研究资料,不定期更新中
我不生产知识,只是知识的搬运工。写作本小册的时间主要用在了两个方面:搞清楚事情的本质是什么。 这个过程就是研究源码、书籍和资料。 如何把我已经知道的知识表达出来。 这个过程就是我不停的在地上走过来走过去,梳理知识结构,斟酌用词用句,不停的将已经写好的文章推倒重来,只是想给大家一个不错的用户体验。这两个方面用的时间基本上是一半一半吧,在搞清楚事情的本质是什么阶段,除了直接阅读MySQL的源码之外,查看参考资料也是一种比较偷懒的学习方式。本书只是MySQL进阶的一个入门,想了解更多关于MySQL的知原创 2021-03-07 21:59:50 · 118 阅读 · 0 评论 -
你设计索引的原则是什么?怎么避免索引失效?
之前我们已经详细介绍了关于索引的原理和索引的查询的原则,所谓工欲善其事必先利其器,各位在学习阶段一定要要循序渐进的来学习这块知识,千万不要眼高手低,一定要不急不躁,争取一个萝卜一个坑,学完后能一次性拿下这些知识点,然后再加以运用。前面的文章我们讨论过,索引的设计要根据 WHERE 条件和 ORDER BY 还有 GROUP BY 后面的字段进行设计,至于原因具体在我前面的文章MySQL索引的原理有详细介绍。这里我们再简单概述下。MySQL针对主键索引会维护一个B+树的结构,这个我们称之为聚簇索...转载 2021-06-02 15:06:26 · 89 阅读 · 0 评论 -
两小无猜系列。B-tree,LSM-tree,到底谁更牛逼。
结论先行:B-tree索引必须至少写两次数据:一次是预写日志,一次写入树的页本身(还可能发生页分裂)。即使只有几个字节更改,也必须承受写整个页的开销。一些存储yi原创 2021-06-02 23:10:15 · 142 阅读 · 0 评论 -
ShardingSphere设计总览
本来想写一篇ShardingJdbc相关的文章,现在互联网时代,创业真难,想写的一搜都有人写了,但是还是得写啊。这里先收集了一些别人的优秀文章,站在巨人的肩膀上。从源码看ShardingSphere设计-总览篇 - 简书 (jianshu.com)蚊子squirrel - 简书 (jianshu.com)...原创 2021-09-03 09:56:14 · 90 阅读 · 0 评论 -
MySQL文件排序有两种算法
MySQL文件排序有两种算法第一种排序算法1)读取 固定长度的排序列 + rowid组成元组,放入sort buffer2) 如果sort buffer满, 根据排序列执行一次quicksort, 将其写入临时文件3)重复1 2 步骤直到文件结束,4)对临时文件执行归并排序5)根据排序好的rowid 读取查询需要的行第二种算法,1)读取<固定长度的排序列, 需要返回的列> 组成元组,放入sort buffer2) 如果sort buffer满, 根据排序列执行一次quicks原创 2021-08-12 09:52:24 · 452 阅读 · 0 评论 -
mysql数据库BKA算法详解
BKA算法详解Batched Key Access理解了 MRR 性能提升的原理,我们就能理解 MySQL 在 5.6 版本后开始引入的 BatchedKey Access(BKA) 算法了。这个 BKA 算法,其实就是对 NLJ 算法的优化。我们再来看看上一篇文章中用到的 NLJ 算法的流程图:图 4 Index Nested-Loop Join 流程图NLJ 算法执行的逻辑是:从驱动表 t1,一行行地取出 a 的值,再到被驱动表 t2 去做join。也就是说,对于表 t2 来说,每.原创 2021-08-16 21:03:56 · 1382 阅读 · 0 评论 -
mybatis-plus插件使用derby数据库Ipage分页插件报错
现象:因为做了一个单体的项目,项目从postgresql迁移到derby单体数据库,在之前mybatis-plus分页插件直接报错。报错原因:原因定位,mybatis支持的数据库类型不包括derby,所以在derby数据库会统一识别为OTHER方言UnknownDialect,在使用Ipage分页的时候,看源码UnknownDialet会抛出MabatisPlusException异常。解决方法:有几种方法,一种就是重写一个UnkonwDialect类,类名...原创 2021-09-01 15:12:23 · 814 阅读 · 0 评论 -
Mysql实战45讲问答
如何避免长事务对业务的影响?这个问题,我们可以从应用开发端和数据库端来看。首先,从应用开发端来看:1. 确认是否使用了 set autocommit=0。这个确认工作可以在测试环境中开展,把MySQL 的 general_log 开起来,然后随便跑一个业务逻辑,通过 general_log 的日志来确认。一般框架如果会设置这个值,也就会提供参数来控制行为,你的目标就是把它改成 1。2. 确认是否有不必要的只读事务。有些框架会习惯不管什么语句先用 begin/commit 框起来。我见过有些是业原创 2021-08-10 00:03:34 · 238 阅读 · 0 评论 -
MySQL · Semi-join原理及源码分析
Semi-join 语义在MySQL中,semi-join是专门针对SPJ(没有group by/order by等操作) 的IN/Exists子查询进行优化的一种join语义,起到了对外层表的过滤作用,通过将相关/非相关subquery转换为semi join来充分利用join reordering的灵活性,以期获取最高的执行效率。MySQL的开发历史中重度依赖于nested-loop join这唯一一种join方式,这导致了其在做join ordering优化时采用了greedy search的转载 2021-06-24 15:50:54 · 1528 阅读 · 0 评论 -
Mysql那些事整理
MySQL 8.0 版本直接将查询缓存的整块功能删掉你一定会问,回滚日志总不能一直保留吧,什么时候删除呢?答案是,在不需要的时候才删除。也就是说,系统会判断,当没有事务再需要用到这些回滚日志时,回滚日志会被删除。什么时候才不需要了呢?就是当系统里没有比这个回滚日志更早的 read-view 的时候。基于上面的说明,我们来讨论一下为什么建议你尽量不要使用长事务。长事务意味着系统里面会存在很老的事务视图。由于这些事务随时可能访问数据库里面的任何数据,所以这个事务提交之前,数据库里面它可能用到的回滚记..原创 2021-08-09 23:51:36 · 97 阅读 · 0 评论 -
Pull or Push?监控系统如何选型
一 形形色色的监控系统监控一直是IT系统中的核心组成部分,负责问题的发现以及辅助性的定位。无论是传统运维、SRE、DevOps、开发者都需要关注监控系统并参与到监控系统的建设和优化。从最开始大型机的作业系统、Linux基础指标,监控系统就已经开始出现并逐渐演进,现阶段能够搜索到的监控系统不下于上百种,按照不同类别也有非常多的划分方式,例如: 监控对象:通用型(通用的监控方式,适应于大部分的监控对象),专一型(为某一功能定制,例如Java的JMX系统、CPU的高温保护、硬盘的断电保护、UP.转载 2021-08-30 12:53:14 · 343 阅读 · 0 评论 -
为什么 Linux 需要虚拟内存
为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。操作系统中的 CPU 和主内存(Main memory)都是稀缺资源,所有运行在当前操作系统的进程会共享系统中的 CPU 和内存资源,操作系统会使用 CPU 调度器分配 CPU 时间[^1]并引入虚拟内存系统以管理物理内存,本文会分析操作系统为什么需要虚拟内.转载 2021-03-22 08:23:38 · 75 阅读 · 0 评论 -
Linux下netstat命令详解
一、介绍Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。二、输出信息描述执行netstat后输出如下:[root@sy-suz-srv51 ~]# netstatActive Internet connections (w/o servers)Proto Recv-Q Send-Q Loc.转载 2021-09-02 22:20:49 · 226 阅读 · 0 评论