- 博客(227)
- 收藏
- 关注
原创 我用ChatGPT,给RabbitMQ加了个连接池
上次我把 RabbitMQ 集成到项目中,但是每次使用 RabbitMQ 时都去 New 一个连接,导致并发起不来,所以这次我们就给 RabbitMQ 加一个连接池。为了偷个懒,我直接用 ChatGPT 教我加。
2023-05-23 13:26:04
475
2
原创 2023年Java学习步骤及路线(超详细)
学习是有顺序的,不要太跳脱,这样到头来反而是最慢的。很多东西真的都是基础阶段已经讲过的,只是你没意识到。希望可以通过这篇文章给大家带来帮助!
2023-05-23 13:19:42
734
原创 记一次redis主从切换导致的数据丢失与陷入只读状态故障
总的来看这次故障的根本原因还是个人对于redis的配置、操作经验不足,如果在调整运行时maxmemory时能做到以下二者之一,这次故障就不会出现了:调整运行时maxmemory时同时调整配置文件maxmemory保持一致。将配置文件maxmemory设置为0–表示不限制内存使用。正是因为对redis的认识和经验不足,没有想过到运行时配置与静态配置不一致可能导致的问题,这次不可避免的踩坑了。
2023-05-23 13:04:45
263
原创 救命稻草,阿里P8耗时5月打造的架构师速成手册,千金难求
本篇从架构设计的基本概念出发,阐述架构设计的理论体系。接着引出架构师角色,从架构师的活动、分类、技能和职责等角度对架构师的角色做了深度剖析,并对普通开发人员和架构师的区别进行了全面比较。成为一名架构师前,需要明确架构师所需掌握的视图和视角。这些视图和视角是架构师手上的武器。最后本章对“程序员如何向架构师成功转型”这个话题进行展开,提出转型成功所需的三段式模型,并提供了转型所需的思维导图。
2023-05-23 11:48:36
170
原创 系统梳理面试6大专题,阿里最新出产Java面试速成笔记也太香了
我们做技术的,职业生涯中会遇到很多大大小小的面试。每次面试前的查漏补缺跟面试后的复盘总结都是我们提升的机会。
2023-05-22 14:10:59
64
原创 面试官:你能和我说一下 CMS 垃圾回收器吗?
所以,CMS 是一款比较经典的低停顿收集器,但也存在一定的缺陷, v在JDK9后G1成为了更好的选择。候选人: 是的,CMS 收集器提出了并发收集和低停顿的理念,其中的并发标记清除算法也为之后G1等收集器奠定了基础。候选人: CMS 收集器的主要优点是并发收集、低停顿,适用于对响应时间有要求的场景。CMS 收集器虽然有缺陷,但它的并发标记清除思想影响了后续的垃圾回收算法。但由于算法的限制,CMS仍无法完全解决碎片空间问题,这也是它被G1等收集器替代的原因之一。面试官: 说说CMS 收集器的“碎片化”问题?
2023-05-22 13:08:53
84
原创 太爆了!阿里最新出品2023版JDK源码学习指南,Github三天已万赞
工作年限不等于工作经验,希望看到这里的粉丝们都能坚持不断提升自己的核心竞争力,让自己在公司更有价值,增强自己的不可替代性(拿下源码就是一块不错的加分项)。
2023-05-22 13:05:40
88
原创 学会这招,来给你的 SpringBoot 工程部署的 jar 包瘦瘦身吧!
使用瘦身部署,方便每次的迭代更新,不用每次都上传一个很大的 jar 包,从而节省部署时间。
2023-05-22 11:53:20
129
原创 太爆了,阿里最新出品2023版JDK源码学习指南,Github三天已万赞
工作年限不等于工作经验,希望看到这里的粉丝们都能坚持不断提升自己的核心竞争力,让自己在公司更有价值,增强自己的不可替代性(拿下源码就是一块不错的加分项)。
2023-05-20 09:27:10
112
原创 【Netty】从0到1(五):NIO-多线程优化
这前几篇文章中,都是采用单线程进行设计,虽然可以运行,但是没有充分利用 CPU 的性能,并且如果有一个事件的处理时间较长,则会影响其他事件的处理。例如,开发一个项目,如果团队只有一个全栈工程师,那么他需要先完成前端,再完成后端,只能按部就班的完成任务,如果前端开发遭遇困难,花费了很多时间,则会大大拉长项目开发周期,而如果一个团队里有前端工程师和后端工程师,则前后端的开发能同步进行,这样会大大提高开发效率。
2023-05-20 09:22:34
164
1
原创 全靠这份阿里最新出品的“Java进阶面试手册”收获蚂蚁金服Offer
都2023年了,你的工资涨了吗?对于即将到来的金三银四跳槽涨薪季,我想很多小伙伴都已经摩拳擦掌了吧!当然,我猜也有很多小伙伴是下图的状态吧!毕竟面试一年比一年难**【落泪】**,这些也被圈内人调侃为面试必问“面试造火箭工作拧螺丝是目前Java程序员面试的现状,不管是单个领域逐层递进的灵魂连环追问还是“八股文”广度的随机抽取提问,我们没法改变只能接受。
2023-05-19 10:43:04
74
原创 一个线上全文索引BUG的排查:关于类阿拉件数字的分词与检索
说到全文检索的分词,多半讲到的是中(日韩)文分词,少有英文等拉丁文系语言,因为英语单词天然就是分词的。但更少讲到阿拉伯数字。比如金额,手机号码,座机号码等等。以下不是传统的从0开始针对mysql全文索引前世今生讲起。我更喜欢从一个小问题入手,见缝插针的将相关的知识点,以非时间线性顺序零散穿插起来。
2023-05-19 10:14:13
107
原创 阿里P8总结春招Java面试核心手册,Github上获赞65.7K
背八股文的方式当然枯燥了!我的建议是你时间比较充足的话,你可以通过实战项目的方式进行学习。先去实战,再去看对应的八股文,两者相辅相成。举个例子:你在项目中需要用到 Redis 来做缓存,你对照着官网简单了解使用了 Redis 之后你再去看 Redis 对应的八股文。在 Redis 八股文中,你知道了 Redis 集群的概念,你直呼好家伙,这不能解决单点风险和内存不够用的问题嘛!然后,你可以紧接着为自己的项目搭建一个 Redis 集群。我一直觉得面试八股文最好是和实践相结合。
2023-05-19 09:55:46
80
原创 Spring 中的 @Transactional 注解
在数据库操作中,我们经常会遇到需要执行多个操作,但这些操作必须是一个整体,要么全部成功,要么全部失败。这就是事务的概念。在Spring框架中,我们可以通过@Transactional注解来声明事务。@Transactional注解是Spring提供的一种声明式事务管理方式。它可以在类或者方法级别使用,表示当前方法或者类中的所有方法都需要在一个事务中执行。如果方法中出现异常,那么事务就会被回滚,否则就会被提交。
2023-05-19 09:42:52
280
原创 Github点击破百万,这分从零开始学架构手册就此霸榜
成为架构师是程序员进阶不可或缺的一条路径,尤其在当今愈加智能化的社会,对每位程序员的架构能力都提出了新的要求。书中自有颜如玉书中自有黄金屋,只有不断学习,才能摆脱35年龄下岗的梗!,但在管理的道路上已经近乎饱和,大部分程序员的选择就是:往架构师方向发展!今天作者就给大家带来一份,耐心看完,你会收获更多的感悟。“架构”到底指啥,很多人不一定能够准确地回答。例如: 架构和框架是什么关系?有什么区别?
2023-05-19 09:34:57
80
原创 被遗忘的Java关键字:transient!
transient 关键字只是暂时地在序列化过程中忽略了该字段,而不是永久性地从对象中删除该字段。在反序列化时,该字段将被恢复为其默认值。因此,如果需要永久地从对象中删除一个字段,直接将其从类中完全删除。应该很少有人,会在项目中使用这个关键字吧,所以它值得被遗忘。
2023-05-19 09:18:34
77
原创 一文讲清楚Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用
一文讲清楚Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用
2023-05-18 11:45:15
411
原创 面试宝典:java常见面试46题,含答案福利
spring是一个开源框架,处于MVC模式中的控制层,它能应对需求快速的变化,其主要原因它有一种面向切面编程(AOP)的优势,其次它提升了系统性能,因为通过 依赖倒置机制(IOC),系统中用到的对象不是在系统加载时就全部实例化,而是在调用到这个类时才会实例化该类的对象,从而提升了系统性能。另一种是引用类型:如String等,其实是对象的引用,JVM中虚拟栈中存的是对象的地址,创建的对象实质在堆中,通过地址来找到堆中的对象的过程,即为引用类型。当然,此算法的缺点也是很明显的,就是需要两倍内存空间。
2023-05-17 16:39:29
141
原创 TCP 三次握手八股文,完美解决线上事故
简单分享了一点TCP全连接队列、半连接队列的相关内容,讲的比较浅显,如果有不严谨的地方欢迎留言指正,毕竟还是个老菜鸟。全连接队列、半连接队列溢出是比较常见,但又容易被忽视的问题,往往上线会遗忘这两个配置,一旦发生溢出,从CPU、线程状态、内存看起来都比较正常,偏偏连接数上不去。定期对系统压测是可以暴露出更多问题的,不过话又说回来,就像我和小伙伴聊的一样,即便测试环境程序跑的在稳定,到了线上环境也总会出现各种奇奇怪怪的问题。
2023-05-17 14:12:16
96
原创 日常开发中,程序员如何提升技术?这13个点一定要做到!
优秀的程序员,之所以优秀,是因为他会总结踩过的坑,避免重蹈覆辙。所以,田螺哥建议你,日常开发中,如果你踩了哪些坑,就需要总结下来.茶余饭后,再温习温习Redis分布式锁使用,可能会有哪些坑嘛?线程池使用有哪些坑?Java日期处理有哪些坑嘛?Arrays.asList使用可能有哪些坑?这些都是我工作总结出来的,也希望你们日常开发中,遇到哪些坑,都总结下来哈。在日常工作中呢,注意整理一些通用的技术方案。比如。
2023-05-17 13:44:01
1224
1
原创 清华大佬首推“中高级Java程序员进阶小册“,程序员架构进阶必备
希望能帮助到你面试前的复习,进阶提升自己,提高自己的技术,找工作的话找到一个好的工作,也节省你在网上搜索资料的时间来学习。最主要的是给自己增加知识的储备,有备无患。
2023-05-17 13:23:53
44
原创 阿里 推荐的 Redis 使用规范,太优雅了
非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查)),查找方法和删除方法。关注公众号小黄鸭编程社区,回复关键字手册,获取最新开发手册。默认策略是volatile-lru,即超过最大内存后,在过期键中使用lru算法进行key的剔除,保证不过期数据不被删除,但是可能会出现OOM问题。
2023-05-16 14:27:52
320
原创 百万年薪专家甩出的SpringBoot趣味实战手册,GitHub标星81.6K
本书内容很全面,囊括了Spring生态的常用技术,如MVC、持久化、 Redis、定时任务、消息队列、搜索引擎。本书知识讲解由浅到深,循序渐进,从Hello World讲到Spring核心原理;技术讲解深入浅出,总能以“接地气”的例子,把抽象的技术讲述得妙趣横生,把技术学习变得像和朋友聊天 一样轻松愉快。本书的内容设计由易到难,图文并茂,再加上丰富的实例, 可以让初级人员非常轻松地入门。同时,作者对技术独树一帜的理解还可以让中、高级的技术人员受到很多启发。
2023-05-16 13:35:24
261
原创 消息推送平台有没有保证数据不丢?
现在austin接入层是把消息发到mq,下发逻辑层从mq消费数据,随后调用来下发消息。消息推送平台推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。消息丢弃一般我们考虑的是,于是重点看的是下发逻辑层。(因为对于mq使用方来说:生产端只要配置mq相关的参数,在调用下发时有回调重试机制。那就足够了,生产端能做的东西确实不多)目前为止,下发逻辑层(消费端)使用的是策略。只要消费端存在系统重启或者进程被kill掉,那就会有丢消息的情况。
2023-05-16 13:23:54
179
原创 GitHub万赞,不愧是腾讯高级专家总结的操作系统笔记,面面俱到太全了
最后,我想说的是,学习并非难事,而贵在坚持,尤其是在我们参与工作之后,要继续坚持学习就更不容易了。但对于程序员来说,学习是立业之根本,如若放弃学习,被市场淘汰是迟早的事情。所以,学习更多新的知识对于自己来说才是一种更大的投资。
2023-05-16 11:57:02
127
原创 面试官:断网了,还能 ping 通 127.0.0.1 吗?
由于回显请求是在本地计算机上发送和接收的,所以我们将收到回显响应消息,从而确认本地网络接口的正常运行。这种能够在断网的情况下通过 Ping 命令与本地进行通信的特性,使得本地回环地址成为了诊断网络问题的有用工具。通过向 127.0.0.1 发送 Ping 请求,我们可以确认计算机上的网络接口是否工作正常,以及操作系统的网络协议栈是否正常运行。本地回环地址是一个特殊的地址,指向我们所在计算机上的网络接口卡,通过它可以在本机上进行网络通信。因此,即使外部网络连接中断,我们仍然能够与本地进行通信。
2023-05-16 11:49:49
577
原创 霸榜Github三个月的「架构师成长手册」,成为架构师也有捷径
架构师”我想应该没有程序员会陌生了吧,作为程序员技术追求的一个里程碑,有多少程序员想转型架构师而不得门路,其实架构师比较抽象的拆解能力就两方面 技术+项目。足够的技术栈深度和广度再加上足够的项目经验其实是完全可以驾驭架构师的岗位的。但是我们想要达到要求需要多久呢十年?二十年?而且真的就一定能转型成功吗?又怎么样才能保证自己不走弯路呢?其实想通这些方向就很清楚了,你需要从架构设计的基本概念出发,阐述架构设计的理论体系。
2023-05-15 15:05:03
33
原创 终于升上P7了,揭开阿里的晋升方法论
虽然阿里 P7 职称叫专家,但估计大家都不会把这个专家二字当真吧,在我心中起码阿里 P9 或者腾讯 T4 这种级别才能真正称得上行业中的专家。所以阿里 P7,其实还不能称之为严格意义的专家,但即使不是真正的专家,那也是相当牛逼了!阿里 P7 是行业的硬通货,也是一般程序员工作 5~10 年后的职业发展分水岭,如果是在阿里工作过几年没有得过低绩效的 P7,起码是技术靠谱、勤奋度高的工程师了,如果情商也 ok 的话,去中小公司做技术经理、架构师都是绰绰有余。
2023-05-15 14:50:51
350
原创 记录一次解决Maven依赖冲突的过程
在项目中screw-core依赖时发生了冲突,控制台指出是log4j产生的依赖冲突,导致程序报错无法运行,是一个典型的maven依赖冲突,基于这个问题进行处理。
2023-05-15 14:37:51
30
原创 23年最新Java岗常见面试题及答案(1000道),Github疯抢的面试题
你的技术配得上你的薪水吗?并发编程、分布式、微服务、缓存数据库、消息引擎、关系型数据库、JVM、分库分表、搜索引擎、算法、架构设计、容器化相关技术,这些主流技术你都掌握到什么程度了?基于对IT招聘市场的深度调研,发现用工单位对学员的技能精度要求提高、职场综合能力要求提高。因此IT行业正在发生历史性的变革要想突围而出,只能高效提升技术,我用了十五天的时间整理了今年我认为Java就业的主流技术栈面试题,由于内容实在太多,整理成了完整版的PDF了,下面分享部分内容,完整版可见文末。
2023-05-15 13:55:47
118
原创 从原理到实战,手把手教你在项目中使用RabbitMQ
RabbitMQ 的文章之前写过,但是当时给的示例是 Demo 版的,这篇文章主要是结合之前写的理论知识,将 RabbitMQ 集成到技术派项目中。话不多说,上文章目录:下面我们先回顾一下理论知识,如果对这块知识已经清楚的同学,可以直接跳到实战部分。
2023-05-15 13:45:24
350
原创 Java面试通关:阿里内部实战模拟面试精讲题库,竟被上传GitHub
最近收到小伙伴的反馈:事实也确实是这样,如今不像从前,会个CRUD就可以随随便便找个10几k的工作,现在面试中级的话都从底层问到框架,从jvm,juc底层问到消息队列高并发了,还问SQL的调优。至于高级都是对于消息队列、缓存、分布式等各种主流技术还需要知道原理!其实这些技术在真正的实际开发环境中真的用得到吗?不一定的,但是没办法,环境就是如此,能做的也就只有不断提升自己,去适应市场环境,提高自身技术水平!我的建议,不管自己现在是个什么境况,是躺平还是互卷,如果你想在这个动荡的市场中稳坐钓鱼台,就。
2023-05-13 13:43:53
63
原创 90%的程序员在编写登录接口时犯了这个致命错误
在众多程序员中,存在一个令人头痛的问题:为什么90%的人编写的登录接口都存在安全风险?这个问题很值得探讨。或许是因为这些开发者过于自信,认为自己的代码无懈可击,或者是因为他们缺乏安全意识,未意识到安全问题的重要性。然而,这种做法是非常危险的,因为一个不安全的登录接口可能会威胁用户的安全和隐私。那么,为什么在编写登录接口时总容易出现安全漏洞呢?很可能是因为这些程序员过于注重代码的功能性和实现细节,却忽视了安全问题的重要性,或者对安全措施缺乏足够的了解。
2023-05-13 13:32:32
66
原创 牛客竞赛必刷,GitHub顶级“2023并发编程全优笔记”晋升公司架构组
在很多人的认知中对多线程并发编程都认为不简单需要有强大的底层知识,而今天结合我自己的经验再加上我朋友们的帮助特意给大家分享这份“2023并发编程全优笔记”绝对可以让大家加深对多线程的理解,也能让学习效率大大提升。相信在金三银四面试的小伙伴应该最近有不少,很多小伙伴也跟我说过现在的问题问的是越来越底层。问题肯定是有很多的,但统一都认为很难的的一个就是多线程并发编程!到这文章也就结束了,希望能帮到在it路上砥砺前行的你们。
2023-05-13 13:27:24
85
原创 事务注解@Transactional又失效了
声明式事务实现原理是面向切面编程,通过cglib创建代理proxy,当我们访问带 @Transactional方法,如果通过spring容器获取bean,实际访问的是代理对象,代理对象已经在带 @Transactional方法前后增加了事务相关的逻辑。而当调用带 @Transactional方法的调用方是同类方法时,调用的是this对象的方法,没有通过spring容器获取bean,就无法访问到代理对象,事务也就没有生效。基于2.3的例子,假如把方法B中的异常catch了却没有抛出异常,事务也是不会回滚的。
2023-05-13 13:15:56
108
原创 23年最新Java岗常见面试题及答案(1000道),90% 的公司都会问到
好了,今天就先聊到这吧,朝着自己学习的方向奋斗,总有一天你也会拿着别人羡慕的工资,而每天再多努力一点,你就会让这一天提前一点到来。相信自己,我能行!
2023-05-13 13:08:35
79
原创 使用Spring Boot接入ChatGPT
generateText 方法接受一个 prompt(即输入文本)、一个 model(即 ChatGPT 的模型名称)和一个 maxTokens(即生成文本的最大长度),并返回一个 CompletionResponse 对象,其中包含了 ChatGPT生成的文本。我们创建了一个名为 ChatGPTClient 的客户端来连接到 ChatGPT 服务,然后创建了一个 REST 接口,通过这个接口可以接收输入文本,并返回 ChatGPT 生成的文本。然后,选择项目的名称和位置,以及需要添加的依赖项。
2023-05-13 11:54:24
1737
原创 阿里专家手码23版Java面试三件套,Github星标直线狂飙
最近看到某脉上的一个动态让我思考许久:不禁感叹到在如今这大行业里,找到一份满意的工作可真的太不容易了。随着今年铜三铁四的落幕,大伙都在感叹Java程序员的工作真的不好找,分分钟一个岗位上百人或者上千人去竞争。甚至有时候觉得自己Offer稳拿准备跳槽涨薪的时候,结果半路就杀出个程咬金,把到嘴边的鸭子抢走了,自己只能默默忍受去接着投下一份简历。为什么同是程序员,有些人面试却屡受打击呢?1. 知识储备不够2. 开发经验不足3. 年龄过大问题于是乎,为了帮助大伙在就业环境逆袭成为黑马。
2023-05-13 11:50:14
44
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人