- 博客(116)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 陆奇——百度内部Engineering Leadership Talk
起因很早的一篇文章了,是我来北京时候(大概在17年)看到的。过了这么久,重新看看这篇文章对自己还是有很大益处的Believe in 技术首先要相信技术,我刚才已经讲了,整个我们工业界,特别是像百度这样的公司,对技术坚定的、不动摇的信念特别重要我也分享一下,盖茨提到微软公司的宗旨就是:写软件代表的是世界的将来为什么?未来任何一个工业都会变成软件工业。盖茨是对的,因为任何工业任何行业自动化的程度会越来越高,最后你所处理的就是信息和知识但现在软件的做法又往前提了一次,因为在人工智能时代,不光是写代码,
2021-02-19 10:28:10
181
转载 【巨人的肩膀】三万字,提炼出 Spring 的 9 个核心功能
本节主要讲了实现 IOC 的几个核心的组件BeanDefinitionReader 和 ClassPathBeanDefinitionScanner:读取资源,生成 BeanDefinitionBeanDefinitionRegistry:存储 BeanDefinitionDefaultListableBeanFactory:IOC 容器,同时实现了 BeanDefinitionRegistry 接口。
2024-05-14 10:55:40
36
原创 IT界常说的六大名言
Stay hungry, stay foolish.You build it, you run it.Talk is cheap. Show me the code.Go big or go home.Done is better than perfect.Eat our own dog food.
2024-05-11 10:50:53
147
转载 【巨人的肩膀】MongoDB常用28条查询语句
默认每页显示 20 条记录,当显示不下的情况下,可以用 it 迭代命令查询下一页数据。注意:键入 it 命令不能带 “;当然 name 也可以用 true 或 false,当用 ture 的情况下和 name:1 效果一样,如果用 false 就是排除 name,显示 name 以外的列信息。skip(), limilt(), sort() 三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()注意多条件间用中括号 [] 包围。
2023-05-06 11:37:03
487
原创 【工作笔记】Http响应头过长
突然有测试小伙伴反馈进公司官网主页会白屏,但只是个例不是普遍现象查监控发现没监控到异常问题查了很久(这个很久单指对于线上问题来说)才定位是请求的异常,因为这套系统的异常用的是 @ExceptionHandler,这也导致问题排查多绕了不少圈子第一次修复不就是响应头嘛,先紧急修复下,直接无限大,再说。。。第二次修复改完紧急发布发现没生效。。。不用说肯定掉坑里了。。。看看代码才发现,-1 这个无限大是 tomcat 的玩法,我 Spring 可不惯着你Spring 底层是根据是不是为 0 做更新的
2023-02-27 16:06:19
674
原创 【操作系统】死锁的四个必要条件
存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。, n-1),Pn等待的资源被P0占有,如图2-15所示。因此,虽然Pn、P0和其他 一些进程形成了循环等待圈,但PK不在圈内,若PK释放了输出设备,则可打破循环等待, 如图2-16所示。进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)
2023-01-24 15:20:50
291
原创 【读书笔记】重构 改善既有代码的设计
重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构
2022-05-31 22:15:55
509
原创 【工作笔记】supervisord.d 中 ‘%t‘ 问题
起因最近新项目上线,通过监控服务发现线上频繁出现 Full GC 情况。于是找运维同学下载 GC 日志。拿来日志才发现 GC 日志只保留了最新启动后的日志从一个 bug 展开无数个 bug 的套路。。。一番探究,新项目通过 supervisor 启动。项目启动命令配置在 supervisord.d 目录下。而 supervisord.d 启动是使用 python 执行的。python 不支持 -Xloggc:/alidata1/admin/logs/hqins-iboss-extracter/hqi
2022-04-18 14:49:17
1017
1
转载 【巨人的肩膀】如何判断单向链表有环
前言链表在开发过程中属于出现频次十分高的一种数据结构,在 java 中,比如我们熟知的 LinkedList、HashMap 底层结构、LinkedHashMap、AQS 等都使用到了链表关于单向链表有几个经典问题如何判断链表有环如果有环,找出入环的节点环的长度是多少问题一:如何判断单向链表有环?首先我们来画一个普通的单向链表和环状链表的结构图可以看出在环形单向链表的 EFGH 形成了一个环状,那么如何用程序判断它成环呢?这里要借助一个跑道的思想:假如有一个环形的跑道,跑道上有两个人
2022-02-06 15:04:22
139
转载 【巨人的肩膀】Spring bean生命周期验证
BeanFactory接口尊重源码,以下摘自 BeanFactory 源码注释翻译:BeanFactory 是获取 spring bean 容器的顶级接口。该接口被持有一系列 bean definitions 的对象所实现。依赖 bean definitions,工厂返回一个原型实例或者一个单例实例通常,BeanFactory 将加载存储在配置中的 bean definitions 资源(例如XML文档)。这些定义没有限制何种方式存储:LDAP, RDBMS, XML,properties file等
2022-02-06 14:05:16
172
转载 【巨人的肩膀】AbstractQueuedSynchronizer框架源码剖析
1 拜神Java.util.concurrent 包都是 Doug Lea 写的,来混个眼熟是的,就是他,提出了 JSR166(Java Specification RequestsJava 规范提案),该规范的核心就是 AbstractQueuedSynchronizer 同步器框架(AQS)。这个框架为构造同步器提供一种通用的机制,并且被 j.u.c 包中大部分类使用包结构如下图,其中 AbstractOwnableSynchronizer 是其父类,而 AbstractQueuedLongSy
2022-02-06 02:38:17
166
转载 【巨人的肩膀】Spring事务详解
引子很多 coder 在不理解事务的原理甚至连基本概念都不清楚的情况下,就去使用数据库事务,是极容易出错,写出一些自己不能掌控的代码。网上很多文章要不就是概念,或者一点源码,或者一点测试验证,都不足以全面了解事务,所以本文出现了全文基于 Mysql innodb 引擎。Mysql 官方文档 ,推荐书籍:《Mysql技术内幕-InnoDB存储引擎》1. 拜神Spring 事务领头人叫 Juergen Hoeller,于尔根·糊了…先混个脸熟哈,他写了几乎全部的 spring 事务代码。读源码先拜神,掌
2022-02-03 16:05:24
1196
转载 【巨人的肩膀】 JUC同步器框架
论文简介闲来无事,看看源码,发现了一篇JDK作者的论文《The java.util.concurrent Synchronizer Framework》主要描述了作者对 AbstractQueuedSynchronizer 同步器框架的设计和实现。权威性毋庸置疑!自然需要拜读一下,配上中文翻译,希望大家能有所收获原文链接论文英文版原文链接老李头的主页中文翻译在 J2SE 1.5 的 java.util.concurrent 包(下称j.u.c包)中,大部分的同步器(例如锁,屏障等等)都是基于 A
2022-02-01 15:02:33
257
转载 【巨人的肩膀】CQRS架构
命令查询的责任分离 Command Query Responsibility Segregation (简称CQRS)模式是一种架构体系模式,能够使改变模型的状态的命令和模型状态的查询实现分离。这属于DDD应用领域的一个模式,主要解决 DDD 在数据库报表输出上处理方式Greg Young 在 infoQ 的采访中 “State Transitions in Domain-Driven Design” 谈到了 CQRS,Greg 解释了把领域模型分为两种:状态校验,以及状态转换,维持当前状态的一个视图
2022-02-01 11:37:10
277
转载 【巨人的肩膀】DDD领域驱动设计落地实践
引子不知今年吹了什么风,忽然 DDD 领域驱动设计进入大家视野。该思想源于 2003 年 Eric Evans 编写的 “Domain-Driven Design领域驱动设计” 简称 DDD,Evans DDD 是一套综合软件系统分析和设计的面向对象建模方法。刚好公司领导强力推荐这个,抱着学习的心态,耗时 5 个月,体验了一把:“DDD从入门到弃坑”思想学习网站服务器后端发展三个阶段服务器后端发展三个阶段:面向过程脚本:初始简单,业务复杂后,维护难度指数上升。–>基本不为主流使用面向
2022-02-01 11:07:17
517
转载 【巨人的肩膀】阿里技术专家详解DDD
导读对于一个架构师来说,在软件开发中如何降低系统复杂度是一个永恒的挑战,无论是 94 年 GoF 的 Design Patterns , 99 年的 Martin Fowler 的 Refactoring , 02 年的 P of EAA ,还是 03 年的 Enterprise Integration Patterns ,都是通过一系列的设计模式或范例来降低一些常见的复杂度。但是问题在于,这些书的理念是通过技术手段解决技术问题,但并没有从根本上解决业务的问题。所以 03 年 Eric Evans 的 D
2022-01-27 23:40:15
1689
1
转载 【巨人的肩膀】领域驱动设计(DDD)编码实践
Martin Fowler 在《企业应用架构模式》一书中写道:I found this(business logic) a curious term because there are few things that are less logical than business logic.初略翻译过来可以理解为:业务逻辑是很没有逻辑的逻辑的确,很多时候软件的业务逻辑是无法通过推理而得到的,有时甚至是被臆想出来的。这样的结果使得原本已经很复杂的业务变得更加复杂而难以理解。而在具体编码实现时,除了应付
2022-01-24 12:35:17
325
转载 【巨人的肩膀】Spring 事务失效的 8 大场景
用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景不知道小伙伴们有没有这样的经历,在自己开心的编写业务代码时候,突然某一个方法里的事务好像失效了。然后 debug 跟踪代码时发现,自己第一步的 insert 或者 update 的数据在语句执行完毕后,数据库中并没有立即出现更改或保存完的新数据。所以一度怀疑 spring 的事务失效了。那么这篇文章就来总结一下,大家给大家造成 “spring事务失效”错觉的 几个常见场景,然后对症下药以本人的经历中遇到的问题,大概分有以下
2022-01-23 12:24:05
99
转载 【巨人的肩膀】工作中常用到哪些设计模式
前言平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式策略模式业务场景假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码if(type=="A"){ //按照A格式解析 }else if(type=="B"){ //按B格式解析}else{ //按照默认格式解
2022-01-22 22:42:01
105
转载 【巨人的肩膀】CDN是什么?使用CDN有什么优势?
起因在知乎看到的问答,下边的淘系的回答阿里巴巴淘系技术的答案淘宝的图片访问,有 98% 的流量都走了 CDN 缓存。只有 2% 会回源到源站,节省了大量的服务器资源但是,如果在用户访问高峰期,图片内容大批量发生变化,大量用户的访问就会穿透 cdn,对源站造成巨大的压力CDN工作原理内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络CDN 应用广泛,支持多种行业、多种场景内容加速,例如:图片小文
2022-01-13 07:52:42
253
转载 【巨人的肩膀】实践出真知:全网最强秒杀系统架构解密
很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了!究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构,结合高并发专题下的其他文章,学以致用电商系统架构在电商领域,存在着典型的秒杀业务场景,那何谓秒杀场景呢。简单的来说就是一件商品的购买人数远远大于这件商品的库存,而且这件商品在很短的时间
2022-01-10 21:31:14
180
转载 【巨人的肩膀】LVS+NGINX为什么会被同时使用
最初的理解(也可以每个 nginx 都挂在上所有的应用服务器)nginx 大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单、配置简单、相关材料也特别多lvs 是国内的章文嵩博士的大作,比 nginx 被广泛接受还要早7年,并且已经被红帽作为了系统内置软件,可谓很牛了。lvs 相对于 nginx 来说配置上就要相对复杂一些但是,有时候我们会看到大牛们分享的经验里面是 lvs+nginx 作为负载均衡了,一直想不明白这是个什么道理为什么会出现两者被同时使用呢?其实,这要从两者的各自优势来说了
2022-01-09 22:28:40
271
转载 【巨人的肩膀】关于 MYSQL 的事务隔离级别
为什么MySQL选择Repeatable Read作为默认隔离级别ANSI/ISO SQL定义的标准隔离级别有四种,从高到底依次为:可序列化(Serializable)、可重复读(Repeatable Reads)、提交读(Read Committed)、未提交读(Read Uncommitted)RU 隔离级别下,可能发生脏读、幻读、不可重复读等问题RC 隔离级别下,解决了脏读的问题,存在幻读、不可重复读的问题RR 隔离级别下,解决了脏读、不可重复读的问题,存在幻读的问题Serializable
2022-01-07 13:07:20
148
转载 【巨人的肩膀】进程调度和阻塞
进程调度计算机中有一个设备,叫定时器,准确说叫可编程定时/计数器而这个滴答将会给 CPU 产生一个时钟中断信号而这个中断信号会使 CPU 查找中断向量表,找到操作系统写好的一个时钟中断处理函数 do_timerdo_timer 会首先将当前进程的 counter 变量 -1,如果 counter 此时仍然大于 0,则就此结束但如果 counter = 0 了,就开始进行进程的调度进程调度就是找到所有处于 RUNNABLE 状态的进程,并找到一个 counter 值最大的进程,把它丢进 swit
2022-01-06 07:52:07
262
转载 【巨人的肩膀】如果让你来设计网络,你会把它弄成啥样?
起因看完《网络是怎样连接的》之后,再看这篇文章,对书里前两章内容理解的更加深刻清晰了。果然动图大法好~~通信你是一台电脑,你的名字叫 A很久很久之前,你不与任何其他电脑相连接,孤苦伶仃直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来用一根网线连接起来怎么就能"通信"了呢?我可以给你讲 IO、讲中断、讲缓冲区,但这不是研究网络时该关心的问题如果你纠结,要么去研究一下操作系统是如何处理网络 IO 的,要么去研究一下包是如何被网卡转换成电信号发送出去的,
2022-01-06 07:27:33
60
转载 【巨人的肩膀】你管这破玩意叫 IO 多路复用?
为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式捧起多路复用 IO 的优势为了方便理解,以下所有代码都是伪代码,知道其表达的意思即可阻塞 IO服务端为了处理客户端的连接和请求的数据,写了如下代码listenfd = socket(); // 打开一个网络通信端口bind(listenfd); // 绑定listen(listenfd); // 监听while(1) { connfd = accept(listenfd)
2022-01-05 07:56:45
113
转载 【巨人的肩膀】最多能创建多少个 TCP 连接?
创建 TCP我是一个 Linux 服务器上的进程,名叫小进老是有人说我最多只能创建 65535 个 TCP 连接我不信这个邪,今天我要亲自去实践一下我走到操作系统老大的跟前,说:“老操,我要建立一个 TCP 连接!”老操不慌不忙,拿出一个表格递给我,“小进,先填表吧”我一看这个表,这不就是经典的 socket 四元组嘛。我只有一块网卡,其 IP 地址是 123.126.45.68,我想要与 110.242.68.3 的 80 端口建立一个 TCP 连接,我将这些信息填写在了表中源端口号填什
2022-01-05 07:13:08
124
转载 【巨人的肩膀】多个线程顺序打印问题,一网打尽
https://www.cnblogs.com/lazyegg/p/13900847.html大家在换工作面试中,除了一些常规算法题,还会遇到各种需要手写的题目,所以打算总结出来,给大家个参考第一篇打算总结下阿里最喜欢问的多个线程顺序打印问题,我遇到的是机试,直接写出运行。同类型的题目有很多,比如三个线程分别打印 A,B,C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC…”的字符串两个线程交替打印 0~100 的奇偶数通过 N 个线程顺序循环打印从 0 至 100多线程按
2021-10-08 20:41:41
100
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人