<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[你要悄悄的拔尖，然后惊艳所有人]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CoderBruis</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CoderBruis]]></copyright><item><title><![CDATA[向Chat GPT提问：“作为一个Java后端开发工程师，在这个极度内卷的社会如何提升自己的竞争力？”]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/130123364</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/130123364</guid><author>CoderBruis</author><pubDate>Thu, 13 Apr 2023 10:02:40 +0800</pubDate><description><![CDATA[总之，要提高自己的竞争力，就需要不断学习、积累经验、不断提升自己的技术能力和综合素质。作为一个Java后端开发工程师，在这个极度内卷的社会如何提升自己的竞争力。向Chat GPT提问得出几个要点，非常有参考意义。]]></description><category></category></item><item><title><![CDATA[MacPro M1 搭建kafka2.8.0源码环境]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/128945978</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/128945978</guid><author>CoderBruis</author><pubDate>Fri, 17 Feb 2023 00:42:26 +0800</pubDate><description><![CDATA[MacPro M1搭建kafka2.8.0源码环境并调试]]></description><category></category></item><item><title><![CDATA[RocketMQ底层源码解析——事务消息的实现]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/128913888</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/128913888</guid><author>CoderBruis</author><pubDate>Sat, 11 Feb 2023 23:37:50 +0800</pubDate><description><![CDATA[RocketMQ事务消息原理分析]]></description><category></category></item><item><title><![CDATA[项目开发中代码风格以及规范总结（持续更新...）]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/122543540</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/122543540</guid><author>CoderBruis</author><pubDate>Mon, 17 Jan 2022 17:09:49 +0800</pubDate><description><![CDATA[文章目录前言1. 长函数2. 重复代码
前言
已经有小半年没有更新博客了，这小半年时间了完成了许多的人生大事，为2022年开了一个好头，忙完过后也该继续进行自己的技术沉淀、技术“修炼之路”。
相信许多人都将技术学习放在第一位，疯狂的学习框架、技术、原理，但是不要忘了代码coding，工程能力也要跟上，本文将总结工作中的“代码异味”，时刻提醒自己规范代码风格，本文将持续更新，希望有同感的小伙伴留言共同讨论，共同进步。
1. 长函数
在实际工作中，对于代码的业务开发有点“平铺直叙”的感觉，即1. a做了什么，2]]></description><category></category></item><item><title><![CDATA[Git通过配置config维护多个账号，区分个人账号和公司账号]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/120674608</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/120674608</guid><author>CoderBruis</author><pubDate>Sat, 09 Oct 2021 16:52:13 +0800</pubDate><description><![CDATA[1. 生成多个不同的sshkey秘钥
1.1 生成新的id_rsa公钥（个人）
ssh-keygen -t rsa -C "youremail@xxx.com" -f ~/.ssh/id_rsa

1.2 生成新的tc_pub公钥（公司）
ssh-keygen -t rsa -C "youremail@xxx.com" -f ~/.ssh/tc_pub

2. 在.ssh目录下新建一个config（无后缀文件）
(.ssh目录一般在C:/Users/xxx/.ssh目录)
# 个人account

Host]]></description><category></category></item><item><title><![CDATA[【Netty源码分析一】初识Netty以及Netty线程模型]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/119728509</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/119728509</guid><author>CoderBruis</author><pubDate>Mon, 16 Aug 2021 11:16:23 +0800</pubDate><description><![CDATA[好久没在优快云发表博客了，前端时间一直在研究学习中间件原理，经过一段时间的“艰难”地啃源码，算是理清了Netty的大致流程，接下来将开始Netty相关的源码分析文章系列，用于自己巩固Netty底层原理的知识，文中有描述不对或者理解错误之处，还望各位读者多多指教。
1. 回顾BIO和NIO
BIO流程图如下：

BIO缺陷：

BIO中，作为服务端开发，使用ServerSocket 绑定端口号之后会监听该端口,等待accept事件，accept是会阻塞当前线程；
当我们收到accept事件的时候，程序就会拿]]></description><category></category></item><item><title><![CDATA[一篇文章彻底弄懂零拷贝底层原理]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/114155953</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/114155953</guid><author>CoderBruis</author><pubDate>Sat, 27 Feb 2021 09:35:32 +0800</pubDate><description><![CDATA[前言
零拷贝是网络编程的关键，很多性能优化都离不开零拷贝，很多优秀的开源框架底层都用的零拷贝，如Netty、RocketMQ、Spark等
正文
1. 再看IO
在深入零拷贝机制之前，先来了解下传统BIO通信底层发生了什么，为什么会这么“消耗资源”。Linux服务器是现在绝大多数系统的首选，它的优点就不再赘述，下面的分析都基于Linux环境来进行。作为一台服务器，最常见的功能就是
获取客户端发送过来的请求，然后再去查数据库DB获取到想要的数据，再将数据以一定的业务逻辑处理后传回给客户端，这一过程主要会调用L]]></description><category></category></item><item><title><![CDATA[SpringBoot 内部方法调用，事务不起作用的原因及解决办法]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/112308884</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/112308884</guid><author>CoderBruis</author><pubDate>Thu, 07 Jan 2021 14:26:04 +0800</pubDate><description><![CDATA[在做业务开发时，遇到了一个事务不起作用的问题。大概流程是这样的，方法内部的定时任务调用了一个带事务的方法，失败后事务没有回滚。查阅资料后，问题得到解决，记录下来分享给大家。
场景
我在这里模拟一个场景，大概的调用方式就如下面的代码这样。
@Override
@Transactional(rollbackFor = RuntimeException.class)
public void insertUser(User user) {
    userMapper.insertUser(user);
    t]]></description><category></category></item><item><title><![CDATA[【同程艺龙面经】一年Java开发经验面经（部门老大面）]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/108427861</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/108427861</guid><author>CoderBruis</author><pubDate>Sun, 06 Sep 2020 09:28:39 +0800</pubDate><description><![CDATA[公司：同程艺龙成都BU
现场部门老大面
之前的同程艺龙电话一面过了，然后通知到同程艺龙成都办公地点现场进行部门老大面，面经如下：

你在项目中学习到了哪些？或者是遇到了哪些困难？怎么解决的？
如何保证你的调用链路的稳定性？如何保证服务调用链路请求的幂等性？
mq消息的幂等性如何保证？
mq如何保证顺序消费？
线程池创建有哪几种方式？
线程池核心参数有哪些？
线程池中拒绝策略有几种？分别说一下各自的作用？
Redis都用到了哪些场景？除了缓存还有其他场景吗？
缓存雪崩、穿透、击穿是什么？如何解决？
对于穿透解]]></description><category></category></item><item><title><![CDATA[【同程艺龙面经】一年Java开发经验面经]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/108376726</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/108376726</guid><author>CoderBruis</author><pubDate>Thu, 03 Sep 2020 10:07:57 +0800</pubDate><description><![CDATA[公司：同程艺龙成都BU
电话面试大约1h
直接上面经内容：

请求响应断链如何解决？请求下单之后，网络断开了，我们这边请求没接收到下单的结果怎么办？
重复出票怎么处理？重复下单怎么处理？
分布式锁如何实现的？redis分布式锁和zk分布式锁有什么区别？
redis分布式锁实现的话，setnx和expire命令，如果A线程将expire操作操作到了B线程了，也就是expire了另一个线程的资源，这种怎么避免？
线程池是什么？
Future是什么？有什么作用？
线程池核心数是20个，最大线程数是40个，讲一下任]]></description><category></category></item><item><title><![CDATA[面试官，请不要再问我MySQL InnoDB B+树底层原理了]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/108351571</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/108351571</guid><author>CoderBruis</author><pubDate>Tue, 01 Sep 2020 22:18:48 +0800</pubDate><description><![CDATA[文章目录1. InnoDB页结构2. InnoDB行格式3. InnoDB数据页结构4. B+树索引4.1 InnoDB中B+树索引原理4.2 聚镞索引4.3 如何正确使用索引呢？4.4 浅谈InnoDB的二级索引（辅助索引）以及联合索引等概念4.5 InnoDB中的页分裂参考

只有学习底层原理才能变得更强

1. InnoDB页结构
InnoDB是用于将表中的数据存储到磁盘上的一款存储引擎。

更大维度了解MySQL内部组成结构

MySQL其实就是一款软件，可以分为客户端、服务器端以及引擎层。服务器端]]></description><category></category></item><item><title><![CDATA[【东信北邮成都研发中心】一年Java开发经验面经]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/108285715</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/108285715</guid><author>CoderBruis</author><pubDate>Fri, 28 Aug 2020 19:44:53 +0800</pubDate><description><![CDATA[记一年Java开发面经，公司为东信北邮成都研发中心，直接上面经：
一面1h40min：

线程池核心参数有哪些？
线程池线程数该怎么分配？依据是什么？
Future、FutureTask、Runnable、Callable有什么区别？
你们线上处理数据的服务有多少台？分配了多少内存？
你们系统中下单的时候为什么要用线程池？可以用其他的实现方案吗？
搜索时延这么高，该如何进行优化？如何提高响应速度？如何优化以提升用户体验度？
规定给出的并发量外，如果有额外的流量访问进来了，如何做熔断处理？
Redis基础数据]]></description><category></category></item><item><title><![CDATA[深入浅出SpringBoot源码——启动加载器]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/108116599</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/108116599</guid><author>CoderBruis</author><pubDate>Thu, 20 Aug 2020 22:26:18 +0800</pubDate><description><![CDATA[前言
在SpringBoot中，启动加载器的作用是，当SpringBoot程序执行后立马需要执行其他回调程序时，就可以通过SpringBoot的启动类加载器来实现。
正文
1. CommandLineRunner
SpringBoot的CommandLineRunner是一个启动加载器的核心，CommandLinerRunner是一个接口，该接口定义如下：
@FunctionalInterface
public interface CommandLineRunner {

	// 启动加载器的回调方法
	v]]></description><category></category></item><item><title><![CDATA[深入浅出SpringSecurity和OAuth2（四）—— SecurityContextPersistenceFilter以及ExceptionTranslationFilter]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/108090929</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/108090929</guid><author>CoderBruis</author><pubDate>Wed, 19 Aug 2020 11:58:00 +0800</pubDate><description><![CDATA[前言
相信了解过SpringSecurity或者是OAuth2的读者，会发现网上会有非常多的相关文章，或是纯概念的，或是带有demo的，无论是哪种类型的文章，本人去阅读之后，对于整个框架的概念还是一知半解，也仅仅是实现了某些功能、某些效果而已，若遇到某些问题时无从下手，只能去百度去Google。这是因为对于SpringSecurity和OAuth2的知识没有一个整体概念的把握，知识体系没有形成系统，遂决定写一个关于SpringSecurity和OAuth2的系列专栏，在建造自己知识体系的同时还希望能帮助有同]]></description><category></category></item><item><title><![CDATA[深入浅出SpringSecurity和OAuth2（三）—— WebSecurity建造核心逻辑]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/107664465</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/107664465</guid><author>CoderBruis</author><pubDate>Mon, 10 Aug 2020 14:10:40 +0800</pubDate><description><![CDATA[文章目录前言正文
前言
相信了解过SpringSecurity或者是OAuth2的读者，会发现网上会有非常多的相关文章，或是纯概念的，或是带有demo的，无论是哪种类型的文章，本人去阅读之后，对于整个框架的概念还是一知半解，也仅仅是实现了某些功能、某些效果而已，若遇到某些问题时无从下手，只能去百度去Google。这是因为对于SpringSecurity和OAuth2的知识没有一个整体概念的把握，知识体系没有形成系统，遂决定写一个关于SpringSecurity和OAuth2的系列专栏，在建造自己知识体系的同]]></description><category></category></item><item><title><![CDATA[深入浅出SpringSecurity和OAuth2（二）—— 安全过滤器FilterChainProxy]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/107604400</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/107604400</guid><author>CoderBruis</author><pubDate>Tue, 28 Jul 2020 17:26:41 +0800</pubDate><description><![CDATA[文章目录前言正文1.  FilterChainProxy什么时候注入Spring容器中的2. springSecurityFilterChain()方法的作用3.
前言
相信了解过SpringSecurity或者是OAuth2的读者，会发现网上会有非常多的相关文章，或是纯概念的，或是带有demo的，无论是哪种类型的文章，本人去阅读之后，对于整个框架的概念还是一知半解，也仅仅是实现了某些功能、某些效果而已，若遇到某些问题时无从下手，只能去百度去Google。这是因为对于SpringSecurity和OAuth]]></description><category></category></item><item><title><![CDATA[深入浅出SpringSecurity和OAuth2（一）—— 初识SpringSecurity]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/107297547</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/107297547</guid><author>CoderBruis</author><pubDate>Mon, 27 Jul 2020 10:26:48 +0800</pubDate><description><![CDATA[文章目录前言正文1. 初识SpringSecurity2. Spring Security项目核心jar包介绍3. SpringSecurity核心注解3.1 @EnableWebSecurity3.2 @EnableGlobalMethodSecurity总结参考
前言
相信了解过SpringSecurity或者是OAuth2的读者，会发现网上会有非常多的相关文章，或是纯概念的，或是带有demo的，无论是哪种类型的文章，本人去阅读之后，对于整个框架的概念还是一知半解，也仅仅是实现了某些功能、某些效果而已，]]></description><category></category></item><item><title><![CDATA[实战电商后端系统（三）—— 以vue-element-admin为基础的前端项目对接后端接口]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/107596735</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/107596735</guid><author>CoderBruis</author><pubDate>Sun, 26 Jul 2020 18:41:09 +0800</pubDate><description><![CDATA[文章目录前言正文1. 项目初始化2. 精简项目3. 替换mock接口，对接后端接口3.1 修改/src/api/user.js3.2 修改项目中请求方式4. 效果展示参考相关文章
前言
本系统技术栈用到了Dubbo、Zookeeper、SpringBoot、Oauth2、Swagger、Nginx，项目刚开始起步，每完成一个大功能都会专门写一篇博文来记录技术细节以及遇到的技术难点，如项目中有哪些设计或者架构不太正确的地方，请大家在留言区中提出，互相学习~
前两篇博文已经详细讲解了如何搭建项目基础架构以及My]]></description><category></category></item><item><title><![CDATA[实战电商后端系统（二）——  将OAuth2认证和权限信息存入MySQL数据库]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/107564953</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/107564953</guid><author>CoderBruis</author><pubDate>Fri, 24 Jul 2020 19:17:32 +0800</pubDate><description><![CDATA[文章目录前言正文一、关键表结构二、添加MySQL方式获取授权信息2.1 添加数据相关驱动以及插件依赖
前言
本系统技术栈用到了Dubbo、Zookeeper、SpringBoot、Oauth2、Swagger、Nginx，项目刚开始起步，每完成一个大功能都会专门写一篇博文来记录技术细节以及遇到的技术难点，如项目中有哪些设计或者架构不太正确的地方，请大家在留言区中提出，互相学习~
上一章中，已经搭建好了项目的基础环境，则本文章则将OAuth2和MySQL集成起来，方便在认证和授权时能从MySQL数据库中读取c]]></description><category></category></item><item><title><![CDATA[后端学习Vue系列之——Vuex]]></title><link>https://blog.youkuaiyun.com/CoderBruis/article/details/107206943</link><guid>https://blog.youkuaiyun.com/CoderBruis/article/details/107206943</guid><author>CoderBruis</author><pubDate>Wed, 08 Jul 2020 15:29:34 +0800</pubDate><description><![CDATA[前言
作为一个内心骚动想做点小系统的后端来说，学习Vue是过不去的一个坎，毕竟香嘛~
遂写一篇博文用于记录在Vue中用的比较多的，且不容易记的知识点，方便自己在需要使用时能够查找到相关知识点以及如何快速使用。
在基础篇中，已经介绍了关于Vuex中的一些基础知识点，下面就会陆续介绍Vuex中进阶的一些知识点，总结出来方便自己随时查阅。
正文
在官网上，对于Vuex的介绍为，Vuex是一个专为Vue.js应用程序开发的状态管理模式，说白了就是为了实现组件之间数据的共享。对于Vue来说，组件之间共享数据的方式：
]]></description><category></category></item></channel></rss>