清朝程序猿
码龄2年
  • 173,699
    被访问
  • 201
    原创
  • 8,036
    排名
  • 2,167
    粉丝
关注
提问 私信

个人简介:不定时分享技术文章

  • 加入CSDN时间: 2019-12-08
博客简介:

weixin_45987961的博客

查看详细资料
  • 6
    领奖
    总分 2,044 当月 40
个人成就
  • 获得323次点赞
  • 内容获得151次评论
  • 获得902次收藏
创作历程
  • 63篇
    2022年
  • 141篇
    2021年
成就勋章
TA的专栏
  • java
    165篇
  • 面试
    57篇
  • 程序人生
    28篇
兴趣领域 设置
  • 后端
    spring架构
  • 微软技术
    c#asp.net.net
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

对标阿里P5-P8Java高级技术专家学习路线

引言最近很多读者朋友问老猿如何能够进行Java入门学习以及构建自己的技术体系,总感觉Java技术知识浩如烟海,网上资料又多如牛毛,根本不知道应该从哪里入手进行学习,另外觉得自己学习的内容零零碎碎不成体系,感觉十分的迷茫。为了解答大家的疑惑,老猿特意梳理了Java小白到高级技术专家成长过程中必备的技术体系(这次可是拿出来压箱底的技术总结思维导图)。希望这份技术成长路线总结可以对大家在学习Java的过程中有所帮助,在学习上可以做到有的放矢。技术体系(P5-P6)高级开发工程师-(P7)高级架构师前置知
原创
发布博客 2022.05.13 ·
150 阅读 ·
0 点赞 ·
0 评论

JVM系列之:日志分析工具:GCViewer、VisualVM、GCeasy

GCViewerGCViewer 是一个可以将 JVM 中的 gc log 可视化的工具,使用该工具可以帮助你充分的发现 JVM 垃圾回收中的潜在问题,让你可以更加准确的做出关于 JVM GC 优化的决策。安装并启动git clone https://github.com/chewiebug/GCViewer.git//或者用 IDEA打开项目后,用 maven进行打包mvn clean pacakge//得到一个 jar包cd targetjava -jar gcvie...
原创
发布博客 2022.04.01 ·
111 阅读 ·
0 点赞 ·
0 评论

JVM系列之:GC调优基础以及初识jstat命令

影响垃圾收集性能有三个主要的属性,垃圾收集调优又有三个基本原则,以及垃圾收集调优时需要采集的信息。如果想要对垃圾收集进行调优,则需要根据实际场景对不同属性做出取舍,理解调优的原则以及收集什么信息。性能属性吞吐量吞吐量是评价垃圾收集器能力的重要指标之一,指不考虑垃圾收集引起的停顿时间或内存消耗,每单位时间可以执行的工作量的指标。通常,吞吐量的增加是以延迟增加和/或内存占用增加为代价的。一般吞吐量需求(Generic requirements for throughput) 类似这样:每..
原创
发布博客 2022.04.01 ·
40 阅读 ·
0 点赞 ·
0 评论

2022年春招,Java后端开发最全面试攻略,程序员求职必看

前言时间过的真快,转眼就2022了,现在面临年底裁员,公司跳槽,不论是校招还是社招都避免不了各种面试,如何去准备面试就变得格外重要了,相信一些小伙伴也在为自己的技术,薪资,发展做提升的准备。小编这次会从11个Java专题技术进行分享,大致的目录可以看看↓↓↓ 1、JAVA基础2、JAVA并发3、JVM4、MySQL5、Redis6、开发框架7、分布式8、微服务9、消息队列10、网络11、ES&项目实战一、JAVA基础1、==和equals.
原创
发布博客 2022.02.27 ·
187 阅读 ·
1 点赞 ·
0 评论

聊聊消息队列,通俗易懂

前言关于消息队列,断断续续的也看了很多资料,正好所在的项目在实际业务中使用到了消息队列,今天就来简单将消息队列方面的知识梳理一下,希望对各位小伙伴有点帮助!我们从三个方面也聊聊消息队列,什么是消息队列?消息队列的使用场景,使用消息队列有哪些弊端?什么是消息队列对于传统的应用程序,如果需要向另一个应用程序发送信息,只需要向其发出请求即可!这种方式虽然简单直接,但是如果应用程序2突然挂了,应用程序1可能会因为服务异常,而无法继续提供服务!设想一下,在应用程序1和应用程序2之间,插入一
原创
发布博客 2022.02.19 ·
46 阅读 ·
0 点赞 ·
0 评论

接口使用额外重写的无关方法太多?优化它

.前言平常我们可能面对这样一个场景:系统的某个接口有很多方法,而我们业务需要实现这个接口,真正需要的只有该接口的几个方法而已,但是又不得不重写实现该接口其他无用的方法,以至于产生了大量无用代码堆积,比如:public interface Way { void solve2(); void solve1(); void solve3(); void solve4();}/*** 其实我们真正需要该接口的方法只有solve2,但是接口的其他三个接口还得重写* 然后
原创
发布博客 2022.02.19 ·
1210 阅读 ·
0 点赞 ·
0 评论

一个北漂程序员,告诉你什么是有效跳槽

B哥(这里且叫他B哥)是我的学长兼老乡,因为比我大几岁,我一直喊他B哥。B哥大学学的是计算机专业,本科毕业以后就进入了一家公司,成为一名光荣的“程序猿”。刚毕业那段时间,程序员跳槽是非常经常的一件事,B哥的同事就经常地跳槽。看着身边的同事一个个跳槽以后不断加薪,B哥也打算跳一跳试试。没想到,还真跟同事说的一样,每跳槽一次,工资都有增长。从24岁本科毕业开始,斌哥几乎每隔1年多都要跳槽一次。他的工资也真的是在水涨船高,在他32岁的时候,已经拿到了年薪40万。要知道,我们当时的工资很多才不到7000。斌
原创
发布博客 2022.02.18 ·
49 阅读 ·
0 点赞 ·
0 评论

从源码分析线程池(池化技术)的实现原理

线程池是一个非常重要的知识点,也是池化技术的一个典型应用,相信很多人都有使用线程池的经历,但是对于线程池的实现原理大家都了解吗?本篇文章我们将深入线程池源码来一探究竟。线程池的起源背景: 随着计算机硬件的升级换代,使我们的软件具备多线程执行任务的能力。当我们在进行多线程编程时,就需要创建线程,如果说程序并发很高的话,我们会创建大量的线程,而每个线程执行一个时间很短的任务就结束了,这样频繁创建线程,会极大的降低系统性能,增加服务器开销,因为创建线程和销毁线程都需要额外的消耗。这时我们就可以...
原创
发布博客 2022.02.11 ·
6430 阅读 ·
0 点赞 ·
0 评论

字节跳动最爱问的智力题你会几道?

1. 只有两个无刻度的水桶,一个可以装6L水,一个可以装5L水,如何在桶里装入3L的水提示:这个问题的本质就是利用两个水桶的已知容量倒来倒去,问题的解法并不唯一。先将5L的桶装满,将5L的桶的水倒入6L的桶中。这时5L的桶是空的,6L的桶中有5L的水 再将5L的桶装满,倒入6L的桶中。这时5L的桶有4L的水,6L的桶是满的 将6L的桶中的水倒掉,5L的桶的水倒入6L的桶中。这时5L的桶是空的,6L的桶中有4L的水 将5L的桶装满,倒入6L的桶中。这时5L的桶还有3L的水,6L的桶是满的..
原创
发布博客 2022.02.10 ·
86 阅读 ·
0 点赞 ·
0 评论

一个小插件引起的性能问题排查和解决过程

事情是这样的过年期间闲的没事,用MyBatis的拦截器插件做了一个小功能,来专门处理新项目中的审计字段。本来还在开开心心地摸鱼,结果压测团队的同事就找上门来啦,说我的的应用接口的TPS突然降低很多,是不是有BUG呀~ 是有BUG呀~ BUG呀~ 呀~emmm...大过年的,晦气!最近也没上啥特殊的功能呀,就搞了一个插件,还能出这问题?于是,就开始排查呗。问题定位工具jvisualVm因为我们有一套专门的压测环境,并且是开启JMX配置的,所以我直接本地连上压测环境的JV..
原创
发布博客 2022.02.10 ·
8231 阅读 ·
0 点赞 ·
0 评论

微服务实战:如何测试基于OAuth认证的微服务

背景正如微服务实战:基于Spring Cloud Gateway + AWS Cognito 的BFF案例一文中所介绍的,我司的微服务群采用了Spring Cloud Gateway作为API认证网关,利用Spring Security为API认证网关和后端微服务提供了OAuth认证功能。我们想做什么想测试单个微服务 想测试OAuth认证流程我们不想做什么不想为了测试部署所有的微服务 不想在测试中连接真实的OAuth认证服务器相关测试类型当我们尝试测试与其他服务存在通信的微服..
原创
发布博客 2022.02.08 ·
52 阅读 ·
0 点赞 ·
0 评论

2022年了,密码该如何保存都不会?

我们在开发应用时,只要涉及到用户,登录注册功能则是必不可少的。 但是,并不是所有人都能做好登录注册功能。比如最基本的密码应该如何保存?应该用哪种加密方式对密码进行加密都不是很清楚。一旦出现数据库泄漏,密码外泄等问题,会对用户造成极大的损失。密码该如何保存?如果我们要在服务器中对用户进行身份验证,我们需要完成以下的步骤:获取到要登录用户的用户名和密码; 根据用户名在数据库中查找到用户; 比较用户提供的密码和数据库中的密码是否一致。那我们应该如何存储用户的密码呢?我们来看看都有哪些方式..
原创
发布博客 2022.02.07 ·
7353 阅读 ·
1 点赞 ·
0 评论

神奇,同样执行1,000,000次循环的时间居然会不一样?

场景事情是这样的,我先来还原一下场景,有如下图中的一段代码,这段代码的逻辑很简单。先生成一个0-top范围的有序集合,比如top=100,那么就是生成[0,1,2,3,...99,100]; 如果shuffle=true,则将这个集合顺序打乱,相当于洗牌; 然后遍历这个集合,统计出集合中数值小于top/2的数量,这个结果不管是否洗牌都是top的一半; 记录循环开始和结束的时间,看看循环总共花费多少时间。按理说,不管这个集合有多大,都会执行top次的循环,每个循环里都要执行if判断,所以花
原创
发布博客 2022.02.07 ·
392 阅读 ·
0 点赞 ·
0 评论

JVM线程源码浅析-JVM线程如何映射到操作系统线程

创建一个Java线程的路径:我们模糊掉内部的控制逻辑,首先聚焦于线程创建的主流程:创建不同层级的线程对象(由Java语言层向下传递)创建Java语言层面的Thread对象,调用start()方法后;会调用JVM的JVM_StartThread()方法创建JavaThread对象,并按照当前虚拟机所处的操作系统创建不同的OSThread对象(操作系统核心级线程);不同层级的线程依次启动(从OS层开始向上传递)核心级线程创建成功后,会调用入口函数:thread_native_entry方
原创
发布博客 2022.02.07 ·
745 阅读 ·
1 点赞 ·
0 评论

微服务实战:基于Spring Cloud Gateway + AWS Cognito 的BFF案例

背景微服务架构的分布式特性可以带来很多好处,但是单个微服务并不能独立对外提供服务,一个微服务群组需要作为一个整体对外提供完整的服务体验,而如何实现支撑整体的通用功能就需要好好考虑一番了。就我司的需求来说,我们需要实现的通用功能包括路由(Routing)、认证(Authorization)、鉴权(Authentication),以及后端API的组合(API Composition)。我们计划在同一个地方即API Gateway,部署这一组功能,而不是在每个微服务都重复部署。ℹ️ 在[微服务/..
原创
发布博客 2022.02.04 ·
147 阅读 ·
0 点赞 ·
0 评论

线程池异常如何处理你都了解吗?

大家在开发的过程中是否发现,我们使用线程池的时候很少去处理运行过程中出现的错误,不处理错误这样没关系吗?不处理会不会导致线程池结束?如果需要处理错误我们应该如何进行处理呢?那么今天从以下几个方面来看一下1.线程池异常通过代码来演示三种异常线程池的情况。1.1Runable执行异常(业务异常)测试代码:public class ThreadPoolExceptionTest { public static void main(String[] args) {
原创
发布博客 2022.02.04 ·
5501 阅读 ·
1 点赞 ·
0 评论

快速排序实现(Java)

文字描述:1、每一轮排序选择一个基准点(pivot)进行分区(1)让小于基准点的元素的进入一个分区,大于基准点的元素进入另一个分区(2)当分区完成后时,基准点元素的位置就是其最终位置2、在子分区内重复以上过程,直至子分区元素个数少于等于 1,这体现的是分而治之的思想(divide-and-conquer)实现方式:1、单边循环快排(1)选择最右元素作为基准点元素(2)j 指针负责找到比基准点小的元素,一旦找到则与 i 进行交换(3)i 指针维护小于基准点元素的边界,也就是
原创
发布博客 2022.01.25 ·
29 阅读 ·
0 点赞 ·
0 评论

Kafka丢数据、重复消费、顺序消费的问题

面试官:今天我想问下,你觉得Kafka会丢数据吗?候选者:嗯,使用Kafka时,有可能会有以下场景会丢消息候选者:比如说,我们用Producer发消息至Broker的时候,就有可能会丢消息候选者:如果你不想丢消息,那在发送消息的时候,需要选择带有 callBack的api进行发送候选者:其实就意味着,如果你发送成功了,会回调告诉你已经发送成功了。如果失败了,那收到回调之后自己在业务上做重试就好了。候选者:等到把消息发送到Broker以后,也有可能丢消息候选者:一般我们的线上环境都..
原创
发布博客 2022.01.24 ·
89 阅读 ·
0 点赞 ·
0 评论

消息推送接口设计(内含源码)

今天要做的就是实现austin-api和austin-api-impl模块的部分代码,这块完成了之后模块之间的一整条链路就打通咯austin项目核心功能:发送消息项目出现意义:只要公司内有发送消息的需求,都应该要有类似austin的项目,对各类消息进行统一发送处理。这有利于对功能的收拢,以及提高业务需求开发的效率不多BB,开始今天的正题01、接口设计在austini-api模块下定义发送消息的接口,在austin-api-impl下实现具体的逻辑。我的接口实现定义:pu
原创
发布博客 2022.01.24 ·
802 阅读 ·
0 点赞 ·
0 评论

面试官:order by 是怎样排序的?怎么优化?

01 前言刚换了新工作,用了两周时间准备,在 3 天之内拿了 5 个 offer,最后选择了广州某互联网行业独角兽 offer,昨天刚入职。这几天刚好整理下在面试中被问到有意思的问题,也借此机会跟大家分享下。这家企业的面试官有点意思,一面是个同龄小哥,一起聊了两个小时(聊到我嘴都干了)。二面是个从阿里出来的架构师,视频面试,我做完自我介绍之后,他一开场就问我:对 MySQL 熟悉吗?我一愣,随之意识到这是个坑。他肯定想问我某方面的原理了,恰好我研究过索引。就回答:对索引比较熟悉。
原创
发布博客 2022.01.24 ·
73 阅读 ·
0 点赞 ·
0 评论
加载更多