自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(334)
  • 资源 (4)
  • 收藏
  • 关注

原创 在软件工程学中“聪明”是一种指控

如果单纯在编程领域,如果说聪明是一种褒奖的话。一般来讲,在软件工程领域,聪明更像是一种控诉。因为在这个领域,更重要的是维护性。下面是3个典型的靠小聪明实现功能的案例。把主逻辑放到SQL里在编程中,很多时候我们在和数据库进行交互。有些用程序写会很繁杂的操作,用一个复合SQL或者存储过程就可以简洁的实现。这种实现方式需要一天的开发工作缩短到一个小时就可以搞定。但是这种开发方式有可能造成两个问题:第一是...

2023-01-18 17:27:14 8

原创 工作中需要听懂的三句话

引子我婆婆从外面买来现成的食品,为了防止变凉。会把包装塑料袋和食物一起加热。本着沟通使用感情牺牲成本小的原则,到这种情况我都是用闲唠嗑的方式暗示这种方式对孩子将来有危害:“妈呀,塑料袋加热对孩子身体不好,现在看不出来,将来你抱不到重孙子你就想哭了吧。”这时候婆婆就会打开自己的话匣子老生常谈的说自己不想活那么久什么的。我的重点是想让她改正现在的做法,但是她说话给人的感觉就是:“反正自己也看不到,孩子...

2023-01-17 17:23:34 14

原创 怎样写好绩效总结

引子其实不太好意思写这一块的内容,因为我这块一向做的不是一般的糟糕。但是我认识很多优秀的人,比如之前有一个带100多人团队的运维老大。运维的事情一般特别琐碎,能把这些琐碎的事情总结成让人认可的业绩,确实很值得学习。这种总结不单是为了述职,也是用一个整体的视角来自行总结,夯实能力。绩效总结根据公司不同,主要板块也不同。一般分为工作职责、个人业绩、软素质、未来规划、个人建议等。根据职位和级别不同还可能...

2023-01-12 11:40:49 12

原创 以动物命名的软件品牌盘点

任何东西一旦成为产品,名字就异常重要。软件也不例外,以动物命名因为以下几个优势颇受青睐:1、利用动物名称的易记性,有助于品牌的传播。2、利用动物名称的亲和力,有助于拉近网站与用户之间的距离。3、利用动物特性与品牌特点之间的相似联系,有助于宣传品牌的显着特征和亮点。4、使用动物的logo标志,也让公司企业后续的品牌形象推广,使用吉祥物变得有关联性。5、想开拓领域,旗下其他品牌也用动物来命名,可选择余...

2022-11-10 22:15:13 324

原创 工程师常用的6种最佳实践

一、约定大于配置泰思勒定律也被称为复杂度守恒定律。该定律指出每一个过程都有其固有的复杂性,存在一个临界点,超过了这个点过程就不能再简化了,你只能将固有的复杂性从一个地方移动到另外一个地方。根据这个定律,在做系统设计时,默认会给用户一个“套餐”,这个套餐会满足多数人的需求。实在不满足需求再特殊配置。比如:springboot、JVM的默认值。二、随时保存在如火如荼的编辑文档时,电脑突然死机只能重启,...

2022-11-07 13:22:15 42

原创 工程师都应该了解的10个定律

一、海勒姆法则内容当一个 API 有足够多的用户,你在契约中承诺了什么并不重要:系统中所有看得见的行为都会有某个人依赖……案例现在有两个系统A和B,B的一个接口返回一个列表。A系统的开发人员发现返回的列表都是按照ID正向排序的。本身A系统正好需要其按照正序排序,于是直接自己没有做排序就直接使用了。实际B返回的列表是直接从数据库取出来的,自身没有做排序,并不知道自己的返回列表顺序被依赖了。有一天,...

2022-10-26 12:41:12 135

原创 谷歌味儿

咱们从小就被教育过,决定一个人成败的最重要因素不是智商、暂时的能力,而是性格和品质。这是如此的正确,以至于很多公司暗暗将这个作为候选人的衡量标准。比如咱们常听到的“X里味儿”。今天咱们看看“谷歌味儿“。谷歌内部明确要求的三大品质:谦虚、尊重、信任谦虚内心是谦虚的,下面的事情就不会去做:假装吃惊:啥?你竟然不知道什么是堆栈?内心是谦虚的,很多事情不需要有明确的指导就能按照正确的行为来做。比如下表中在...

2022-10-03 18:02:35 218

原创 谷歌的两个经典事件案例

案例一:黑猩猩事件2015年,一个叫杰克的软件工程师指出他的一个黑人朋友在谷歌相册中被谷歌算法分类为:大猩猩。谷歌对此反应缓慢,造成了一定的舆情。这个事件让我想起之前看到的视频,黑人看大张伟唱《果汁分你一半》:原因是“内个”听起来很像下面这个单词。很多白人不敢说这个单词,实在要给别人讲不能用这个单词的时候,他们会说:“那个带N的词”。一个好的软件工程同时需要是一个好产品,能够对产品问题有一定的洞察...

2022-09-16 23:49:42 328

原创 【网络容灾失败案例】三种HTTP请求重试导致重复提交

使用一些类库进行http请求时,比如使用Apache HttpComponents 库。默认的, HttpClient 尝试自动从 I/O 异常恢复。这种自动恢复机制仅限于一些被认为是安全的异常,比如套接字被重置或者套接字被关闭。但是有些场景重试会造成重复请求风险。一般来讲,重复请求比网络异常直接返回失败对用户是更差的体验。因为重复请求,实际造成了影响,但是给上游返回是成功,这样实际结果和给上游的...

2022-09-08 22:37:56 294

原创 工作中常见的两种谬误

谬误一一个人写的烂代码会给另一个人带来一份全职的工作变体:别人看不出做什么用又不敢删、不敢改的代码是维护者的核心竞争力解析:在早几年或者一些非常老旧的系统可能经常会存在这些难以维护的代码。但是越来越重视软件工程的如今,这些问题代码不太可能是长久的饭碗。主要有两个原因:巴士指数(bus factor)巴士指数是美国硅谷流行起来的对团队容灾的一种民间定义。意思是团队中某人被车...

2022-08-04 23:39:32 72

原创 聊聊内存泄露及实际案例

内存泄露科普内存泄露概念内存泄露(Memory Leak)是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况。内存泄露影响内存浪费,从而影响程序运行速度,严重时导致内存溢出错误。内存泄露分类1、常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。2、偶发性内存泄漏。发生内存泄漏的代码只有在某些特...

2022-07-07 21:04:46 397

原创 技术沟通遇到3个为什么背后的逻辑

为什么过去的方案被否定了?不确定性如果方案中引入了一些不确定因素,比如不成熟的组件,会增加整个产品的不确定性。这种成熟度需要自己把握好,一些大公司,公司明确要求主推的组件一般是经过长期验证的,或者确实有些失败的案例,但是白纸黑字证明了是政治任务,不用不行。这样,使用了一般短时间不会再次更换或者很快公司将不再能称为是大公司。但是小公司的情况会复杂些,对于一些稳定性要求高的系...

2022-06-26 02:02:28 80

原创 数据库连接数设置多少合适?

引子很多工程师习惯于使用一个组件时,参数设置依赖于默认值。或者有时候希望依赖数据分析获取到更合适的值,最终发现考虑的数据过于片面或者数据难以收集最终还是拍脑袋决定了参数的大小。今天咱们就以数据库连接数参数为例说明怎么去设计参数。前提知识先说明一下数据库连接数大小是什么概念。数据库连接数一般指数据库连接池。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用...

2022-06-12 11:11:39 5593

原创 技术沟通的4个技巧

当别人主动找你沟通当别人找你说一件事情,需要你帮忙的时候。要确保问清楚以下信息:1、事件背景是什么?2、遇到的问题是什么?3、都涉及哪些团队或哪些人?4、有什么风险?当方案没有取得共识当两个人方案不一致时,自己提出了方案A,领导提出方案B。A和B都有一定的问题,是一道取舍题。这时候与其讨论取谁舍谁,不如这么回答:我再回去想想有没有更好的方案。如果自己是领导,《神盾局特工》...

2022-05-24 18:18:52 180

原创 程序设计的2个技巧

善用本地缓存7年前见过一个别人做的项目:因为公司的视频和专辑这些媒体资讯信息属于基础数据,非常重要。有个基础服务专门将这些基础数据提供给全公司使用。这些数据都是从后台信息中录入的,全量数据数据库中有存储,并全量存到了集中式缓存中。全量数据大概不到500M。但是存在一些大专辑,就是说有的数据一条就占几M。所以在查询时,特别是请求多的时候遇到很多超时现象。毕竟像redis等集...

2022-05-16 20:07:05 116

原创 GitHub的4个神技,同桌直呼666

神技一:高级搜索有过这样的经验:想搜索一个差不多的项目改改自己用,结果搜索框输入后出来一堆,无从下手。遇到这种情况我都是闭上眼睛,先自己想好怎样从中选择,最终我想到自己想要的是日期比较新、最好是团队而不是个人维护(持续性会好一些)、语言和框架和自己的技术更贴合。大佬们通常会根据想好的要求输入一串神秘代码,比如上图。直接定位想要的结果。其实这是利用了GitHub的高级搜索功...

2022-05-08 10:28:08 165

原创 DevOps从持续开发到持续部署

DevOps与 CICD 的关系DevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。虽然名字中没有体现,但是DevOps仍包括测试。DevOps 是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。以期打破传统开发和运营之间的壁垒和鸿沟。其本质就是人...

2022-05-02 12:49:45 381

原创 connection reset案例的穿越之旅

事情要从周五晚上说起,好学的朋友在群里问我有没有能够通过框架和项目能对IO有深入学习的。我当时正照例刷着电影解说,感受着逻辑的力量。等看到消息时,已经看到其他朋友热心得给出了神回复:在我进行了仔细阅读之后,断线一秒钟,之后由衷感叹自己技术不精,没有弄懂问题和回答之间的逻辑关系。于是给出了自己的回复:通信框架都需要IO知识,服务治理框架、redis和mysql等存储中间件、...

2022-04-25 20:04:00 151

原创 Java9中2个被废弃的使用方法

背景在openjdk官网有一些废弃方法的解释:https://cr.openjdk.java.net/~iris/se/9/latestSpec/api/deprecated-list.html今天介绍用的较多的2种。解决大家被要求做代码坏味道整改时不知所以然的问题。Class.newInstance()方法被弃用类的实例化有以下6种方式:用new语句创建对象,这是最常见...

2022-04-23 13:16:36 329

原创 系列文章分类汇总(第二期)

总结归纳排查线上问题的9种方式系统设计的11个考虑系统架构的11条原则四种常用的微服务架构拆分方式开发者必装的软件工具总结写出结构优雅代码的4个技巧工作中沟通的4点感悟技术境界的二三四工作中常见的五种技术leader管理者的四种不同授权风格代码评审的三怕项目改进的四个抓手程序员工作中的三个锦囊源码元宇宙mybatis的本质和原理手撕spring核心源码,彻底搞懂sprin...

2022-04-20 19:44:05 89

原创 尤娜故事-迷雾-springboot扮酷小技巧

前情回顾从前,有一个简单的通道系统叫尤娜……尤娜系统的第一次飞行中换引擎的架构垂直拆分改造四种常用的微服务架构拆分方式尤娜,我去面试了正文我回到日常的尤娜系统建设中,最近事情比较少,总有一种迷茫感,不知道下一步要做什么。晚上做梦,经常梦到自己独自一人,身处迷雾当中找不到方向。我跟尤娜诉说了自己的迷茫,干练的尤娜立即帮我预约了一个参加技术沙龙的名额,让我去听听别人公司在做什...

2022-04-20 19:44:05 238

原创 源码元宇宙-lambda表达式底层执行解析

背景3月28日那天,咱们用户群里,朋友让我写篇lambda表达式的底层执行解析。拖了快20天了,今天就来聊聊这个问题。《深入理解函数式编程》里讲到lambda表达式本质是一个匿名的内联函数。不从Java角度,Lambda本身是计算机编程语言,Lambda 表达式是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。那篇文章讲解了匿名内部类与函数...

2022-04-17 01:11:21 319

原创 系统设计的11个考虑

有了《系统架构的11条原则》,真正到设计阶段还有另外11个考虑。系统正确性考虑一:负负得正假如我们看到某个代码,明显有逻辑错误,想随手改改。你就要考虑一件事情:这段明显有问题的代码为什么在线上运行着没有人来报bug?有一种正常运行叫做【负负得正】。如果把错误的逻辑改对了反而可能引起问题。这种问题要避免最好的时机是初版设计和开发阶段就避免。除了设计阶段逻辑要清晰,代码要做好...

2022-04-13 19:45:00 1060

原创 生日快乐

小鲜肉过生日,我都让他用自己喜欢的方式过。我们都是给他打杂的。只负责后勤。我看到周围邻居家是这么过的:因为小鲜肉过生日都是他自己招呼的小伙伴。这些小伙伴过生日的时候也想找小鲜肉过去。但是他们的家长可能是怕麻烦,都是带着去下馆子。找个和自己要好的大人,带着自己的孩子。这中间他们有很多考虑。这件事情我是这么考虑的,在这个时刻,就让孩子们自己做回主角,在平等的氛围里过好这一天。...

2022-04-10 16:28:42 96

原创 Spring容器组件添加的五驾马车

这段时间也陆续给大家带来了一些Spring系列相关的文章。可以从《Spring源码的学习方法和知识地图》入手,看看自己处于哪个阶段,更关注哪些方面。再进行系统性的学习。今天咱们从另外一个角度对Spring容器的组件注入做一个总结性的学习。Spring容器组件添加有五驾马车,本文主要以注解驱动做讲解,配置文件注入原理也是一样的:包扫描+组件标注注解包扫描+@Bean@Imp...

2022-04-10 16:28:42 108

原创 甲骨文严查Java授权,换openJDK要避坑

背景外媒The Register报道,甲骨文稽查企业用户,近期开始将把过去看管较松散的Java授权加入。甲骨文针对标准版Java(Java SE)有2种商业授权。2019年4月甲骨文宣布Java SE用户需要付费订阅,才能取得授权及更新,包括Java SE 7、8或11、12。但到同年9月该公司又宣布了免费Java授权方案,针对Java 17版本提供每季更新,并在2021...

2022-04-09 15:20:31 543

原创 为什么同一个岗位不同面试者的题目难易不同?

之前有出过《面试题总结》的文章,这些面试八股文可以应对很多公司的技术面试。但是面试中还存在像《小公司比较吃亏的两道微服务面试题》这种题目难易因人而异的现象。面试者的题目可能会像《惊艳面试官-Java中关于随机数生成8种方式的思考》这样刁钻。今天咱们就来剖析一下其背后的原因。面试官的难言之隐有些情况下,面试官开始面试没多久,就能观察到面试者的价值观与公司不匹配。比如:面试者...

2022-04-06 19:40:00 470

原创 开发者必装的软件工具总结

在一家公司工作很多年了,办公电脑很陈旧,想申请一台新的。但是总会一拖再拖。想到要重装软件,很多数据有可能丢就很头疼。如果咱们平时对数据养成及时备份的好习惯,换新电脑的成本可能并没有想象中的那么高。咱们今天从软件开发生命周期的角度进行一次梳理。立项阶段一个软件最初先要进行充分沟通,才能立项。沟通至少需要foxmail等邮件工具和微信或者是内部的企业微信或者钉钉等IM工具。当...

2022-04-05 11:45:26 346

原创 谈谈我看到的《喜剧之王》

一直很想看到一部电影或者电视剧,主角没有过人的天赋、不靠优越的外貌、没有过硬的资源,更没有百年不遇的机缘而成功的故事。但是,很遗憾,咱们在荧幕中更多看到的主角的成长都是带外挂的,非常人可及。实际上普通人成功的例子比比皆是。我其实特别羡慕其他博主写这种经历的。我自己写不出来,因为我没有成功,没道理站在成功人士的视角鼓励别人成功。要说我自己唯一成功的,那就是选老公选的比较成功...

2022-04-05 11:45:26 96

原创 Spring源码里开天辟地的五个Bean,再介绍一个学习方法

引子在《Spring源码的学习方法和知识地图》里,我提到如果一开始就研究Spring源码会被Spring源码中的细枝末节带偏,脱离主线。因为其中99%的代码是为了解决1%的问题。所以我写了三篇手撕Spring源码的文章:《手撕spring核心源码,彻底搞懂spring流程》《手撕Spring源码(二),彻底理解Spring后置处理器》《手撕Spring源码(三),彻底理解...

2022-04-04 15:42:18 504

原创 Spring源码的学习方法和知识地图

目的意义Spring对于Java工程师的重要地位可参考语文、数学在小学课程里地位。当然啊,学不好也不是不行。说这个又不得不提我老公。人家凭借自己是东北人,比我这个山东人高考少一百多分。相当于一科没考嘛!人家不也工作的挺好嘛。老公为了向我体现实力说:那年数学特别难,自己考了100(满分150)呢。我无奈的摇摇头:我考了130多。工作了,咱们终于摆脱了地域上的歧视。渐渐淡忘不...

2022-04-03 13:35:05 1487

原创 手撕Spring源码(三),彻底理解Spring循环依赖原理

很多朋友大概有注意到,我写过一些文章解释清楚了一些:全网没有其他文章解释清楚,或者大多数文章都是错误的问题。比如:《说透分布式事务》里BASE理论和分布式事务到底是什么关系。本篇文章我在动笔之前也搜索了一下,包含文章和收费视频。发现自己花了钱学习的东西老师(还是这个方面口碑很好的老师)在翻来覆去啰嗦那么几句话,就是没把问题讲透。为啥呢?我分析了一下,因为老师从一开始没有说...

2022-03-31 16:08:33 228

原创 排查线上问题的9种方式

德国科技管理专家斯坦门茨早年移居美国,他以非凡的才能成为美国企业界的佼佼者。一次,美国著名的福特公司的一组电机发生故障,在束手无策之时,公司请斯坦门茨出马解决问题。斯坦门茨在电机旁仔细观察,经过计算,用粉笔在电机外壳划了一条线,说:“从这里打开,把里面的线圈减少16圈。”工人们照他说的一试,电机果然运转如初,福特公司给他酬金时,他索价一万美元。公司老板觉得一条线要一万美元...

2022-03-30 19:45:00 1883

原创 手撕Spring后置处理器源码,彻底理解Spring核心

上篇回顾承接上篇《手撕spring核心源码,彻底搞懂spring流程》。由于上下文之间的逻辑关系,没看过上篇的朋友强烈建议先看上篇。简单对上篇做个总结:首先咱们一起写了一个HelloWorld版本的Spring。因为Spring核心是控制反转,就是Bean对象都交给Spring来管理。开发者使用时只需要获取即可。在使用时分为两步:第一步,通过注解配置创建Spring上下文...

2022-03-27 21:49:49 402

原创 手撕spring核心源码,彻底搞懂spring流程

引子十几年前,刚工作不久的程序员还能过着很轻松的日子。记得那时候公司里有些开发和测试的女孩子,经常有问题解决不了的,不管什么领域的问题找到我,我都能帮她们解决。但是那时候我没有主动学习技术的意识,只是满足于解决问题,错过了能力提升最好的阶段。老公是个截然相反的类型,我就看他天天在宿舍里学习。学来学去也就那样了。他不陪我玩,我虽然心里不乐意,但是还好那时候未卜先知:知道自己...

2022-03-26 19:50:00 672 1

原创 为什么面试官对“我不会我可以学”不买账?

13年前,我从沈阳来北京的时候。去互联网公司面试,因为和之前的技术栈完全不同,所以问题都答不上来。后来,来了一个漂亮姐姐,用日语跟我面试,最后反馈因为我日语特别好,然后就过了,去了当时的一家知名互联网公司当程序员。但是现在,去大厂当程序员只凭着【我不会但我可以学】的上进心就很难通过面试了。原因有两点:我不会我可以学是个悖论现在的面试流程越来越正规化,一般大厂都会有招聘JD...

2022-03-22 20:45:05 1072

原创 TiDB的逸闻趣事

周末了,来轻松一下。聊聊TiDB的逸闻趣事。TiDB 是什么?TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL...

2022-03-19 22:54:25 460

原创 网络通信知识地图

我在之前一段时间做过网络通信的系列文章,但是文章还是偏散,没有一个整体脉络,本篇就以知识地图的形式来进行梳理。知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。本篇主要就...

2022-03-16 20:07:14 1207

转载 Tomcat 架构原理解析到架构设计借鉴

Tomcat 架构原理解析到架构设计借鉴Tomcat 发展这么多年,已经比较成熟稳定。在如今『追新求快』的时代,Tomcat 作为 Java Web 开发必备的工具似乎变成了『熟悉的陌生人...

2022-03-14 20:51:23 200

原创 我踢了儿子

周六吃了烧烤的外卖,留下了烤串的签子。小鲜肉突发奇想,用来做弓箭的箭。我原本反复告诉过他手拿这种尖锐的物品要非常小心,不要拿着乱跑。这次他不但置若罔闻,而且还差点伤到了奶奶的眼睛。奶奶这次...

2022-03-14 20:51:23 137

阿里技术参考手册研发篇

阿里技术开放的三份资料:《阿里巴巴Java开发手册》《阿里技术参考图册》(研发篇)《阿里技术参考图册》(算法篇)

2018-04-25

用pinyin4j来给excel数据注音的实例

用pinyin4j来给excel数据注音的实例

2014-09-16

计算机组成电子教案:清华大学计算机系列教材王爱英主编

计算机组成电子教案 ,ppt的 清华大学计算机系列教材王爱英主编 总 目 录 第1章 计算机系统概论 第2章 计算机的逻辑部件 第3章 运算方法和运算部件 第4章 主存储器 第5章 指令系统 第6章 中央处理部件CPU 第7章 存储系统 第8章 辅助存储器 第9章 输入输出(I/O)设备 第10章 输入输出(I/O)系统 第11章 计算机系统 第12章 计算机硬件设计和实现导论

2010-08-28

spring aop学习实例

包内是aop入门的一些小例子。包括java代码和其中用到的xml文件。一个子包(如aop包)里有一个可执行应用程序。

2008-01-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除