自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 资源 (2)
  • 收藏
  • 关注

原创 【持续更新】别人总结好的图图图图

图SynchronizedJVM 创建对象

2022-01-28 14:26:51 576

原创 陆奇——百度内部Engineering Leadership Talk

起因很早的一篇文章了,是我来北京时候(大概在17年)看到的。过了这么久,重新看看这篇文章对自己还是有很大益处的Believe in 技术首先要相信技术,我刚才已经讲了,整个我们工业界,特别是像百度这样的公司,对技术坚定的、不动摇的信念特别重要我也分享一下,盖茨提到微软公司的宗旨就是:写软件代表的是世界的将来为什么?未来任何一个工业都会变成软件工业。盖茨是对的,因为任何工业任何行业自动化的程度会越来越高,最后你所处理的就是信息和知识但现在软件的做法又往前提了一次,因为在人工智能时代,不光是写代码,

2021-02-19 10:28:10 139

原创 【持续更新】工作中的小知识点

工作中的小知识点

2020-07-25 23:19:19 207

转载 【巨人的肩膀】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 422

原创 【工作笔记】Http响应头过长

突然有测试小伙伴反馈进公司官网主页会白屏,但只是个例不是普遍现象查监控发现没监控到异常问题查了很久(这个很久单指对于线上问题来说)才定位是请求的异常,因为这套系统的异常用的是 @ExceptionHandler,这也导致问题排查多绕了不少圈子第一次修复不就是响应头嘛,先紧急修复下,直接无限大,再说。。。第二次修复改完紧急发布发现没生效。。。不用说肯定掉坑里了。。。看看代码才发现,-1 这个无限大是 tomcat 的玩法,我 Spring 可不惯着你Spring 底层是根据是不是为 0 做更新的

2023-02-27 16:06:19 621

原创 【操作系统】死锁的四个必要条件

存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。, n-1),Pn等待的资源被P0占有,如图2-15所示。因此,虽然Pn、P0和其他 一些进程形成了循环等待圈,但PK不在圈内,若PK释放了输出设备,则可打破循环等待, 如图2-16所示。进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)

2023-01-24 15:20:50 267

原创 【算法学习】冒泡排序算法

冒泡

2023-01-24 15:00:48 97

转载 【巨人的肩膀】2W 字你全面认识 Nginx

nginx

2022-10-10 22:28:11 130

转载 【巨人的肩膀】谈谈技术能力+技术架构的设计方法

浅谈技术能力

2022-07-03 17:36:50 486

原创 【源码阅读】事务源码

编程式事务源码

2022-06-30 17:59:14 285

转载 【巨人的肩膀】通透~~ThreadLocal夺命11连问

ThreadLocal

2022-06-27 17:50:20 77

原创 【工作笔记】数据库死锁的排查和数据库锁知识记录

数据库 死锁

2022-06-27 09:48:22 1133 1

转载 【巨人的肩膀】缓存和数据库一致性问题,看这篇就够了

缓存一致性

2022-06-24 14:07:30 98

原创 【工作笔记】缓存里的几种模式

缓存

2022-06-23 16:56:09 189

转载 【巨人的肩膀】后端思维之数据库性能优化方案

数据库

2022-06-23 15:49:28 104

原创 【读书笔记】重构 改善既有代码的设计

重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构

2022-05-31 22:15:55 448

原创 【工作笔记】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 992 1

转载 【巨人的肩膀】如何判断单向链表有环

前言链表在开发过程中属于出现频次十分高的一种数据结构,在 java 中,比如我们熟知的 LinkedList、HashMap 底层结构、LinkedHashMap、AQS 等都使用到了链表关于单向链表有几个经典问题如何判断链表有环如果有环,找出入环的节点环的长度是多少问题一:如何判断单向链表有环?首先我们来画一个普通的单向链表和环状链表的结构图可以看出在环形单向链表的 EFGH 形成了一个环状,那么如何用程序判断它成环呢?这里要借助一个跑道的思想:假如有一个环形的跑道,跑道上有两个人

2022-02-06 15:04:22 120

转载 【巨人的肩膀】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 152

转载 【巨人的肩膀】AbstractQueuedSynchronizer框架源码剖析

1 拜神Java.util.concurrent 包都是 Doug Lea 写的,来混个眼熟是的,就是他,提出了 JSR166(Java Specification RequestsJava 规范提案),该规范的核心就是 AbstractQueuedSynchronizer 同步器框架(AQS)。这个框架为构造同步器提供一种通用的机制,并且被 j.u.c 包中大部分类使用包结构如下图,其中 AbstractOwnableSynchronizer 是其父类,而 AbstractQueuedLongSy

2022-02-06 02:38:17 147

转载 【巨人的肩膀】Spring事务详解

引子很多 coder 在不理解事务的原理甚至连基本概念都不清楚的情况下,就去使用数据库事务,是极容易出错,写出一些自己不能掌控的代码。网上很多文章要不就是概念,或者一点源码,或者一点测试验证,都不足以全面了解事务,所以本文出现了全文基于 Mysql innodb 引擎。Mysql 官方文档 ,推荐书籍:《Mysql技术内幕-InnoDB存储引擎》1. 拜神Spring 事务领头人叫 Juergen Hoeller,于尔根·糊了…先混个脸熟哈,他写了几乎全部的 spring 事务代码。读源码先拜神,掌

2022-02-03 16:05:24 1126

转载 【巨人的肩膀】 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 246

转载 【巨人的肩膀】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 270

转载 【巨人的肩膀】DDD领域驱动设计落地实践

引子不知今年吹了什么风,忽然 DDD 领域驱动设计进入大家视野。该思想源于 2003 年 Eric Evans 编写的 “Domain-Driven Design领域驱动设计” 简称 DDD,Evans DDD 是一套综合软件系统分析和设计的面向对象建模方法。刚好公司领导强力推荐这个,抱着学习的心态,耗时 5 个月,体验了一把:“DDD从入门到弃坑”思想学习网站服务器后端发展三个阶段服务器后端发展三个阶段:面向过程脚本:初始简单,业务复杂后,维护难度指数上升。–>基本不为主流使用面向

2022-02-01 11:07:17 481

转载 【巨人的肩膀】阿里技术专家详解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 1506 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 304

转载 【巨人的肩膀】Spring 事务失效的 8 大场景

用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景不知道小伙伴们有没有这样的经历,在自己开心的编写业务代码时候,突然某一个方法里的事务好像失效了。然后 debug 跟踪代码时发现,自己第一步的 insert 或者 update 的数据在语句执行完毕后,数据库中并没有立即出现更改或保存完的新数据。所以一度怀疑 spring 的事务失效了。那么这篇文章就来总结一下,大家给大家造成 “spring事务失效”错觉的 几个常见场景,然后对症下药以本人的经历中遇到的问题,大概分有以下

2022-01-23 12:24:05 92

转载 【巨人的肩膀】工作中常用到哪些设计模式

前言平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式策略模式业务场景假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码if(type=="A"){ //按照A格式解析 }else if(type=="B"){ //按B格式解析}else{ //按照默认格式解

2022-01-22 22:42:01 96

转载 【巨人的肩膀】CDN是什么?使用CDN有什么优势?

起因在知乎看到的问答,下边的淘系的回答阿里巴巴淘系技术的答案淘宝的图片访问,有 98% 的流量都走了 CDN 缓存。只有 2% 会回源到源站,节省了大量的服务器资源但是,如果在用户访问高峰期,图片内容大批量发生变化,大量用户的访问就会穿透 cdn,对源站造成巨大的压力CDN工作原理内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络CDN 应用广泛,支持多种行业、多种场景内容加速,例如:图片小文

2022-01-13 07:52:42 245

转载 【巨人的肩膀】实践出真知:全网最强秒杀系统架构解密

很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了!究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构,结合高并发专题下的其他文章,学以致用电商系统架构在电商领域,存在着典型的秒杀业务场景,那何谓秒杀场景呢。简单的来说就是一件商品的购买人数远远大于这件商品的库存,而且这件商品在很短的时间

2022-01-10 21:31:14 157

转载 【巨人的肩膀】LVS+NGINX为什么会被同时使用

最初的理解(也可以每个 nginx 都挂在上所有的应用服务器)nginx 大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单、配置简单、相关材料也特别多lvs 是国内的章文嵩博士的大作,比 nginx 被广泛接受还要早7年,并且已经被红帽作为了系统内置软件,可谓很牛了。lvs 相对于 nginx 来说配置上就要相对复杂一些但是,有时候我们会看到大牛们分享的经验里面是 lvs+nginx 作为负载均衡了,一直想不明白这是个什么道理为什么会出现两者被同时使用呢?其实,这要从两者的各自优势来说了

2022-01-09 22:28:40 251

转载 【巨人的肩膀】关于 MYSQL 的事务隔离级别

为什么MySQL选择Repeatable Read作为默认隔离级别ANSI/ISO SQL定义的标准隔离级别有四种,从高到底依次为:可序列化(Serializable)、可重复读(Repeatable Reads)、提交读(Read Committed)、未提交读(Read Uncommitted)RU 隔离级别下,可能发生脏读、幻读、不可重复读等问题RC 隔离级别下,解决了脏读的问题,存在幻读、不可重复读的问题RR 隔离级别下,解决了脏读、不可重复读的问题,存在幻读的问题Serializable

2022-01-07 13:07:20 128

转载 【巨人的肩膀】进程调度和阻塞

进程调度计算机中有一个设备,叫定时器,准确说叫可编程定时/计数器而这个滴答将会给 CPU 产生一个时钟中断信号而这个中断信号会使 CPU 查找中断向量表,找到操作系统写好的一个时钟中断处理函数 do_timerdo_timer 会首先将当前进程的 counter 变量 -1,如果 counter 此时仍然大于 0,则就此结束但如果 counter = 0 了,就开始进行进程的调度进程调度就是找到所有处于 RUNNABLE 状态的进程,并找到一个 counter 值最大的进程,把它丢进 swit

2022-01-06 07:52:07 233

转载 【巨人的肩膀】如果让你来设计网络,你会把它弄成啥样?

起因看完《网络是怎样连接的》之后,再看这篇文章,对书里前两章内容理解的更加深刻清晰了。果然动图大法好~~通信你是一台电脑,你的名字叫 A很久很久之前,你不与任何其他电脑相连接,孤苦伶仃直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来用一根网线连接起来怎么就能"通信"了呢?我可以给你讲 IO、讲中断、讲缓冲区,但这不是研究网络时该关心的问题如果你纠结,要么去研究一下操作系统是如何处理网络 IO 的,要么去研究一下包是如何被网卡转换成电信号发送出去的,

2022-01-06 07:27:33 43

转载 【巨人的肩膀】你管这破玩意叫 IO 多路复用?

为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式捧起多路复用 IO 的优势为了方便理解,以下所有代码都是伪代码,知道其表达的意思即可阻塞 IO服务端为了处理客户端的连接和请求的数据,写了如下代码listenfd = socket(); // 打开一个网络通信端口bind(listenfd); // 绑定listen(listenfd); // 监听while(1) { connfd = accept(listenfd)

2022-01-05 07:56:45 81

转载 【巨人的肩膀】最多能创建多少个 TCP 连接?

创建 TCP我是一个 Linux 服务器上的进程,名叫小进老是有人说我最多只能创建 65535 个 TCP 连接我不信这个邪,今天我要亲自去实践一下我走到操作系统老大的跟前,说:“老操,我要建立一个 TCP 连接!”老操不慌不忙,拿出一个表格递给我,“小进,先填表吧”我一看这个表,这不就是经典的 socket 四元组嘛。我只有一块网卡,其 IP 地址是 123.126.45.68,我想要与 110.242.68.3 的 80 端口建立一个 TCP 连接,我将这些信息填写在了表中源端口号填什

2022-01-05 07:13:08 110

转载 【巨人的肩膀】多个线程顺序打印问题,一网打尽

https://www.cnblogs.com/lazyegg/p/13900847.html大家在换工作面试中,除了一些常规算法题,还会遇到各种需要手写的题目,所以打算总结出来,给大家个参考第一篇打算总结下阿里最喜欢问的多个线程顺序打印问题,我遇到的是机试,直接写出运行。同类型的题目有很多,比如三个线程分别打印 A,B,C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC…”的字符串两个线程交替打印 0~100 的奇偶数通过 N 个线程顺序循环打印从 0 至 100多线程按

2021-10-08 20:41:41 90

转载 【巨人的肩膀】-烂大街的 Spring 循环依赖问题,你觉得自己会了吗?

前言循环依赖问题,算是一道烂大街的面试题了,解毒之前,我们先来回顾两个知识点:初学 Spring 的时候,我们就知道 IOC,控制反转么,它将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理,不需要我们手动去各种 new XXX尽管是 Spring 管理,不也得创建对象吗,Java 对象的创建步骤很多,可以 new XXX、序列化、clone() 等等,只是 Spring 是通过反射 + 工厂的方式创建对象并放在容器的,创建好的对象我们一般还会对对象属性进行赋值,才去使用,可以理解是分

2021-10-08 20:41:05 120

原创 【工作笔记】Java:捕获异常时getMessage()、toString()、printStackTrace()等方法的分析

getMessage() /** * Returns the detail message string of this throwable. * * @return the detail message string of this {@code Throwable} instance * (which may be {@code null}). */ public String getMessage() {

2021-09-29 19:23:59 1533

原创 【工作笔记】Spring Data JPA 的 findById()、getOne()和findOne()区别

区别findById 立即访问数据库,并返回和指定 ID 关联的实体对象;如果没有找到,则返回 Optional.empty()findOne 立即访问数据库,返回类型为 Optional ,如果没有检索到,返回 Optional.empty()getOne 是一个延迟加载方法,它并不立即访问数据库,而是返回一个代理(proxy)对象,这个代理对象是对实体对象的引用,仅在使用代理对象访问对象属性时才会去真正访问数据库,如果找不到,则抛出异常源码findById() /** * Ret

2021-09-29 19:20:56 538

如果让你来设计网络,你会把它弄成啥样?015.gif

如果让你来设计网络,你会把它弄成啥样?015.gif

2022-01-06

如果让你来设计网络,你会把它弄成啥样?014.gif

如果让你来设计网络,你会把它弄成啥样?001

2022-01-06

空空如也

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

TA关注的人

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