- 博客(674)
- 收藏
- 关注
原创 其实你完全不懂Http协议(122页PDF带你深入学习)
HTTP(Hypertext Transfer Protocol)是一种用于在计算机网络上传输超文本的协议。它是互联网上最常用的协议之一,用于客户端和服务器之间的通信。HTTP协议的主要作用是实现Web应用程序的通信和数据传输。具体来说,它定义了客户端和服务器之间交换的消息格式和规则,使得用户通过浏览器向服务器请求Web页面、图像、视频、音频等资源,并获得服务器的响应。也就是说你做web开发是离不开HTTP协议的,可以说web的开发HTTP协议是基础。
2023-09-19 19:36:19
120
原创 搞不懂设计模式还想阅读源码?你在做梦吗?
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。,下面将这份笔记展示出来,感兴趣的小伙伴可以观摩一番:这本宝典通过故事场景+代码+图形的形式带你轻松幽默的学会设计模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。为了帮助小伙伴更好的学习和使用设计模式,今天分享一份。
2023-09-18 20:37:17
51
原创 GitHub爆赞!JVM快速学习手册,终于学懂了JVM!
JVM一直是面试的重点内容,把JVM学好关乎着程序猿们的荷包。对于优秀的开发者JVM一直是他们的研究学习对象。一看是大部分人都是为了应付面试,但是很多人随着深入理解JVM,却恰恰喜欢上了研究它,因为他能提高我们的编码效率并且能够帮助我们理解程序,改代码bug。所以有越来越多的人对它爱不释手。更何况他们能够帮我们增长自己的荷包哈哈~~为了帮助小伙伴更好的学习和使用JVM,今天分享一份“,让人看了直呼“
2023-09-18 20:03:50
69
原创 阿里P8学习笔记!Redis必须掌握的关键技能与学习计划
Redis 是一个开源的,使用 ANSI C 语言编写的,支持网络、可基于内存、分布式、可选持久性的键值对存储数据库,并提供多种语言的 API。Redis 可以用作数据库、缓存和消息中间件。
2023-09-18 19:44:45
111
原创 GItHub霸榜面试资料!在不背java八股文就来不及了!236人已入职。
其实Java面试还是需要背答案的,如果你不背诵Java面试问题的答案,面试很大几率会挂。Java面试题就像我们高考中的文言文,包括古诗词。不背诵是不可能回答出来的!当然,除了背诵,你还得理解,否则对面试后的工作没什么意义,也没什么帮助!虽然背了八股文不一定能找到工作,但是Java面试是有方法的,因为很多Java面试的答案只限于技术理论说辞。掌握一定的面试技巧,能在不提升技术的前提下,大大提升你Java面试的通过率。
2023-09-18 17:27:20
58
原创 Spring Boot集成Redis实现数据缓存
缓存数据的修改也特别简单,重新调用set()方法即可,Redis会判断key是否存在,若存在则更新缓存的数据。通过上面的示例,首先定义key为“ysxq”的BoundValueOperations实例,然后在后续的操作中直接使用定义的boundTemplate实例,操作这个key对应的数据,无须在调用方法中指定key。例如,我们在某个类或方法中需要反复操作某个特定的key中的数据,则可以先定义对应的BoundKeyOperations,然后使用此类重复操作key中的数据,无须再调用方法中指定的key。
2023-09-18 17:06:15
278
原创 MySQL 深度分页性能急剧下降,该如何优化?
例如:select * 的情况下直接⽤limit 600000,10 扫描的是约60万条数据,并且是需要回表60W次,也就是说⼤部分性能都耗在随机访问上,到头来只⽤到10条数据(总共取600010条数据只留10条记录)如果对于有where 条件,又想走索引用limit的,必须设计一个索引,将where 放第一位,limit用到的主键放第2位,而且只能select 主键!入参2:排序索引字段 可以是主键,也可以是其他索引。入参3:主键可手动传入,也可以根据表名计算出来:现在只支持单列主键的。
2023-09-18 16:08:46
113
原创 GitHub start103kJVM底层学习与应用(你不学习就落后啦)
只要是学过Java的都应该知道JVM,很多朋友一直都是停留在使用的程度上,对其源码和底层实现知道的太少,甚至于对源码完全不理解。学Java的朋友一直都有疑问,现在在中国的模式就是“应试”,我只要会用就行了。干嘛要学习框架的源码?如果你这样想那你就大错特错,你的这种想法只是限制了你的和。
2023-09-18 15:33:28
92
原创 8分钟,手撕红黑树源码(从理解到手写)
*** 红黑树节点定义*/// 颜色T key;// 关键字(键值)// 左孩子// 右孩子// 父结点return key;
2023-09-18 14:38:57
132
原创 金九银十!GitHub星标137k霸榜,国外友人直呼太卷了!
有很多朋友都觉的现在Java面试题太难了,而且没有一份比较新的、全面的Java面试题。于是我在牛客上基本上刷完了所有大厂的面试题,然后整理出了一套全能面试题。我尝试着把这份面试题放到GitHub,没想到已经飙升到137k。大部分都是咱们中国的Java选手,外国人看到后都怀疑人生:“中国人这么卷的吗(Is that how the Chinese roll it?)”我再次整理后整理出更方便阅读的文档,有的小伙伴。
2023-09-16 19:49:45
81
原创 详解建造者模式,带一个优雅的封装(jdk8通用)
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。以下是建造者模式的一般流程定义产品类:首先,需要定义一个产品类,它是由多个部分组成的复杂对象。产品类通常具有多个属性和方法。创建建造者类:建造者类负责实际构建产品对象。它提供了一系列方法来设置产品的不同属性。
2023-09-16 19:42:34
180
原创 面试官:从零开始设计个JMM吧,说说你的思路
相信大多数同学都背过JMM的八股,一听到JMM直接开始吟唱:什么重排序,线程本地内存与主存,巴拉巴拉的。这也是本篇文章要强调的,我们只有明白为什么,才能更好地理解JMM定义的规范。
2023-09-16 19:41:29
72
原创 GitHub星标100K!JVM G1源码解析和调优【进阶版】
还是老话:曾经的我很不屑于学 JVM,但是后来发现不学不行。这就像和媳妇吵架之后我不想道歉一样,不道歉那是不可能的,道歉是早晚的事儿,逃不掉。
2023-09-16 16:37:39
228
原创 12张图一次性搞懂高性能并发容器ConcurrentLinkedQueue
在阅读本文前,需要理解CAS、volatile等知识基于单向链表实现,使用volatile保证可见性,使得在读场景下不需要使用其他同步机制;使用乐观锁CAS+失败重试保证写场景下操作的原子性使用延迟更新首尾节点的思想,大大减少CAS次数,提升并发性能;使用哨兵节点,降低代码复杂度,避免一个节点时的竞争在入队操作时,会在循环中找到真正的尾节点,使用CAS添加新节点,再判断是否CAS更新尾节点tail。
2023-09-16 15:59:44
118
原创 GitHub标星100k!JVM从零认识到调优经验实战!【常规工作版】
曾经的我很不屑于学 JVM,但是后来发现不学不行。这就像和媳妇吵架之后我不想道歉一样,不道歉那是不可能的,道歉是早晚的事儿,逃不掉。认怂越晚,结局越惨。
2023-09-16 15:53:51
54
原创 大家都在使用@Builder ,我为什么建议你谨慎使用@Builder
/与chain=true类似,区别在于getter和setter不带set和get前缀//设置chain=true,生成setter方法返回对象,代替了默认的返回void// set、get方法忽略指定的前缀(驼峰式)//注:必须所有字段都有前缀@Builder 是一个好用的工具,但是我们不能滥用。在构建一些长期、固定不可变的对象时我们可以适当使用 @Builder 进行构建;
2023-09-16 15:28:44
214
原创 SpringBoot + Redis + Token 解决接口幂等性问题
SpringBoot实现接口幂等性的方案有很多,其中最常用的一种就是 token + redis 方式来实现。下面我就通过一个案例代码,帮大家理解这种实现逻辑。在处理接口幂等性的问题中,token机制使用最广泛,也是性能比较好的方案。其实,还有一种比较简单的方案,就是使用Redission分布式锁。这种方案的编码非常少,效果也能达到,但上锁必有损耗,所以综合性能是不如本文方案的,但因为封装的好,编码简单,也是企业中很受欢迎的方式。我的过往文章中有关于Redisson配合自定义注解实现防重的文章。
2023-09-16 14:02:16
142
原创 看一遍就理解:MVCC原理详解
事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。假如A转账给B 100 元,先从A的账户里扣除 100 元,再在 B 的账户上加上 100 元。如果扣完A的100元后,还没来得及给B加上,银行系统异常了,最后导致A的余额减少了,B的余额却没有增加。所以就需要事务,将A的钱回滚回去,就是这么简单。为什么要有事务呢?就是为了保证数据的最终一致性。MVCC,即Multi-Version Concurrency Control (多版本并发控制)。
2023-09-16 13:18:25
466
原创 遥遥领先!StackOverflow关于算法和数据结构的提问和答案被我总结成了PDF!
大家应该都知道StackOverflow吧,国外最牛逼的IT问答社区。太多的大佬在这个社区解决问题了。我就不多说了。我在上面找到很多算法和数据结构相关问题,符合中国Java程序员的致命问题,最后被我总结成了PDF。限于文章篇幅原因,只能以截图的形式展示出来,有的小伙伴。
2023-09-15 17:19:52
99
原创 面试官:说说 @Configuration 和 @Component 的区别
就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。调用 @Configuration 类中的 @Bean 注解的方法,返回的是同一个实例;而调用@Component 类中的 @Bean 注解的方法,返回的是一个新的实例。注意: 上面说的调用,而不是从 Spring 容器中获取!见最下面的 示例一 及 示例二。
2023-09-15 17:00:13
41
原创 后端问为什么前端数值精度会丢失?
一眼望上去是不是觉得看不懂,那么这里就来尝试解释一下这个标准的内容吧(掺杂个人理解让x = 目标数字,如:(1.145).toFixed(2)中 x = 1.145让f = 参数,如:(1.145).toFixed(2)中 f = 2若f =undefined,即未传参,则将f = 0若f =Infinite,即传入了无穷值,则抛出RangeError 异常若f 100,即传入了不在 0 - 100之间的值,则抛出RangeError 异常若x =Infinite,即想要对。
2023-09-15 15:59:12
383
原创 绝绝子!阿里p8手写手写Mysql面试题+分析手册(点击量已达1000W)
前两天看到字节一个老哥写的帖子,提到高阶开发者必须掌握的技能,其中他明确提出了“精通MySQL”。
2023-09-15 15:42:55
59
原创 【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
本文通过多个SpringBoot实际项目进行归纳整理,从统一接口返回结果和配置全局异常处理两个方面出发,介绍如何优雅的封装规范后端接口输出,详细刨析@RestControllerAdvice和@ExceptionHandler注解及使用方式,增加后端服务健壮性和与前端对接规范性,希望由此化繁为简,能够帮到博友分毫。作者:JavaDog程序狗链接:https://juejin.cn/post/7278692297012051980来源:稀土掘金。
2023-09-15 15:25:11
886
2
原创 分布式锁的3种实现!附代码
分布式锁是一种用于保证分布式系统中多个进程或线程同步访问共享资源的技术。同时它又是面试中的常见问题,所以我们本文就重点来看分布式锁的具体实现(含实现代码)。在分布式系统中,由于各个节点之间的网络通信延迟、故障等原因,可能会导致数据不一致的问题。分布式锁通过协调多个节点的行为,保证在任何时刻只有一个节点可以访问共享资源,以避免数据的不一致性和冲突。
2023-09-15 15:04:13
44
原创 遥遥领先!阿里P8手写Mysql高级知识笔记阅读量高达1000W
数据库系统作为IT业务系统的核心,其高可用性和容灾能力对整个业务系统的连续性和数据完整性起着至关重要的作用,是企业正常运营的基石Mysql的高级知识不用说,大厂的必考知识,但是有很多人对Mysql只懂基本的语法和索引相关知识。对于Mysql高级知识不明所以,甚至不知道怎么学。这本阿里P8大牛的手写笔记我已经阅读了10遍,写的相当的详细而且容易理解。从Mysql架构体系、存储引擎、锁、事务、业务设计Sql优化等讲的不要太详细了,所以我强烈推荐给想进阶的程序员朋友们。
2023-09-15 14:50:42
64
原创 把月饼放入Springboot启动页面代码
最后祝大家中秋快乐,玩得开心下面是完整的代码java复制代码// ASCII字符集String imageFilePath = "替换成你自己的图片路径";// 替换成你自己的图片路径try {// 将彩色图像的每个像素转换为灰度值,只包含灰度信息,每个像素点都代表图像中对应位置的亮度值y < height;x++) {// 重设图片宽高y < height;
2023-09-15 14:31:07
59
原创 高并发场景下的 HttpClient 优化方案,QPS 大大提升!
关于keep-alive,本文不展开说明,只提一点,是否使用keep-alive要根据业务情况来定,它并不是灵丹妙药。还有一点,keep-alive和time_wait/close_wait之间也有不少故事。在本业务场景里,我们相当于有少数固定客户端,长时间极高频次的访问服务器,启用keep-alive非常合适再多提一嘴,http的keep-alive 和tcp的KEEPALIVE不是一个东西。//如果没有约定,则默认定义时长为60s。
2023-09-14 21:19:21
179
原创 如何正确停止线程?
/ 自定义中断标识符@Override// 如果为 true -> 中断执行while (!// 业务逻辑处理但自定义中断标识符的问题在于:线程中断的不够及时。因为线程在执行过程中,无法调用 while(!isInterrupt) 来判断线程是否为终止状态,它只能在下一轮运行时判断是否要终止当前线程,所以它中断线程不够及时// 自定义的中断标识符// 创建可中断的线程实例while (!isInterrupt) { // 如果 isInterrupt=true 则停止线程。
2023-09-14 21:13:06
326
原创 MySQL 深度分页性能急剧下降,该如何优化?
例如:select * 的情况下直接⽤limit 600000,10 扫描的是约60万条数据,并且是需要回表60W次,也就是说⼤部分性能都耗在随机访问上,到头来只⽤到10条数据(总共取600010条数据只留10条记录)如果对于有where 条件,又想走索引用limit的,必须设计一个索引,将where 放第一位,limit用到的主键放第2位,而且只能select 主键!入参2:排序索引字段 可以是主键,也可以是其他索引。入参3:主键可手动传入,也可以根据表名计算出来:现在只支持单列主键的。
2023-09-14 20:20:18
144
原创 Spring Cloud为啥用HTTP交互?不慢吗?
但如用tcp交互,虽然不用在通讯过程中传输业务无关的http请求头和返回头信息,但开发交互过程中,得自己确保数据的完整性,如用md5],得自己编写数据报文的协议,一般还需要用netty或其它组件的线程模型处理高并发情况下的tcp请求,这些工作的难度就不是初级开发能做。500也可能还过于乐观了,也许是100。应对高并发,其实更在数据库层和业务交互层,如在项目里引入redis或分库组件或再引入kafka业务异步处理,外带3,4个实例,哪怕用http协议的openfeign,应对个2,3k并发量没问题。
2023-09-14 19:21:26
56
原创 金手指!阿里巴巴P7手写197页图文算法笔记+498页题目总汇
入职前,他把他的,作为礼物赠送给他的学弟学妹,希望同学们都能在最短时间内掌握校招常见的算法及解题思路。【emm真的感动死我了 o(╥﹏╥)o】
2023-09-14 19:07:35
76
原创 说透 Nacos 一致性协议
⼀致性协议是为保证数据⼀致,如利用⼀致性协议实现存储,那服务模块以及配置模块,就由原来的依赖⼀致性协议接口转为依赖存储接口,而存储接口后面具体实现就比⼀致性协议丰富,且服务模块、配置模块也无需为直接依赖⼀致性协议而承担多余编码工作(快照、状态机实现、数据同步)。为满足服务发现注册中心的可用性,强⼀致性共识算法不太合适,因为强⼀致性共识算法能否对外提供服务有要求,如当前集群可用节点数没过半,整个算法直接“罢工”,而最终⼀致共识算法更多保障服务可用性,并能保证在⼀定时间内各节点之间数据能达成⼀致。
2023-09-14 19:06:53
90
原创 Git 不要只会 pull 和 push,试试这5条提高效率的命令!
使用 Git 作为代码版本管理,早已是现在开发工程师必备的技能。可大多数工程师还是只会最基本的保存、拉取、推送,遇到一些commit管理的问题就束手无策,或者用一些不优雅的方式解决。本文分享我在开发工作中实践过的实用命令。这些都能够大大提高工作效率,还能解决不少疑难场景。下面会介绍命令,列出应用场景,手摸手教学使用,让同学们看完即学会。本文主要分享了5个在开发中实用的 Git 命令和设置短命令的方式。stash:存储临时代码。:软回溯,回退 commit 的同时保留修改内容。:复制 commit。
2023-09-14 18:59:18
45
原创 一次有意思的 SQL 优化实操,30248.271s 到 0.001s
将会更高,从另外一个角度看,该表的数据是300w,以后会更多,就索引存储而言,都是不小的数目,随着数据量的增加,索引就不能全部加载到内存,而是要从磁盘去读取,这样索引的个数越多,读磁盘的开销就越大,因此根据具体。发现没有用到索引,type全是ALL,那么首先想到的就是建立一个索引,建立索引的字段当然是在where条件的字段。快了3w多倍,大大缩短了查询时间,看来索引能极大程度的提高查询效率,建索引很有必要,很多时候都忘记建。的结果是897,即这两个字段联合起来的区分度是比较高的,因此建立联合索引查询效率。
2023-09-14 16:24:03
75
原创 华为OD面试经验分享|打开进入大厂的通道
众所周知,华为每年都会从合作的外包公司招聘大量人才,这是进入华为大厂的一条大赛道。有些小伙伴好高骛远,总是想着一步登天,但是咱们还是需要好好的扎实基础,一步一个脚印去走进大厂。
2023-09-14 15:21:53
2085
原创 Centos8 安装 kafka + ELK
3.安装 ElasticSearch-head。浏览器打开http://ip:9100/浏览器打开http://ip:5601。1、创建docker网络与相应目录。7、安装 LogStash。8、安装zk与kafka。6、测试kibana。5、安装Kibana。
2023-09-14 14:22:40
157
原创 解锁 Postman 接口测试:完整指南
在现代软件开发生命周期中,接口测试是一个至关重要的部分。使用 Postman 这一工具,可以轻松地进行。以下是一份简单的使用教程,帮助你快速上手。
2023-09-13 21:42:35
321
原创 分布式锁的三种实现方式!
分布式锁是一种用于保证分布式系统中多个进程或线程同步访问共享资源的技术。同时它又是面试中的常见问题,所以我们本文就重点来看分布式锁的具体实现(含实现代码)。在分布式系统中,由于各个节点之间的网络通信延迟、故障等原因,可能会导致数据不一致的问题。分布式锁通过协调多个节点的行为,保证在任何时刻只有一个节点可以访问共享资源,以避免数据的不一致性和冲突。
2023-09-13 21:41:53
203
消息队列入门以及常见面试题
2023-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅