<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CTO技术的博客]]></title><description><![CDATA[路漫漫其修远兮]]></description><link>https://blog.youkuaiyun.com/MrCoderStack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MrCoderStack]]></copyright><item><title><![CDATA[两个对象List根据属性取交集和差集及并集- 通用plus版]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/132602681</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/132602681</guid><author>MrCoderStack</author><pubDate>Thu, 31 Aug 2023 15:04:22 +0800</pubDate><description><![CDATA[,发现很多小伙伴都有类似的需求, 刚好最近码哥有空了,就着手把之前的简陋方法封装下,  让它更通用些~比对方式可自己定义, 比如多个属性的比对, 老规矩, 给需要的伙伴一个简单的示例, 自行调整。]]></description><category></category></item><item><title><![CDATA[小白的GPT入门指南 - 工具篇]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/131668011</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/131668011</guid><author>MrCoderStack</author><pubDate>Tue, 11 Jul 2023 19:52:24 +0800</pubDate><description><![CDATA[最近几个月，要问最火的是什么？无疑是GPT， IT行内行外，无人不知。码哥就来唠唠GPT的那些个事， 以及分享分享最近几个月实际使用下来的一些技巧。本章简单聊聊上手的方法.]]></description><category></category></item><item><title><![CDATA[小白的GPT入门指南 - 插件篇]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/131462695</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/131462695</guid><author>MrCoderStack</author><pubDate>Tue, 11 Jul 2023 17:19:09 +0800</pubDate><description><![CDATA[GPT爆火小半年了,  早在AI赛道布局的各大厂商也是纷纷宣布产品上线度娘的  “文心一言”腾讯的 “HunYuan”阿里的 “通义”华为 的“盘古”码哥也简单的体验了下已发布的几款AI模型,  实话实讲, 目前还是GPT的更智能一点, 不过GPT需要折腾的问题对小白有点不友好.好在, 目前涌现了不少基于GPT包装后的产品, 所以今天码哥就来聊聊亲自使用过的几款免折腾AI工具.]]></description><category></category></item><item><title><![CDATA[小白的GPT入门指南 - 技巧篇]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/131400434</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/131400434</guid><author>MrCoderStack</author><pubDate>Mon, 26 Jun 2023 16:36:04 +0800</pubDate><description><![CDATA[要想用好ChatGPT, 还是有一些技巧可以让我们是事半功倍的, 下面就列出常见的一些技巧和工具。]]></description><category></category></item><item><title><![CDATA[警惕, 差点着了副业骗局的道]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/130987189</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/130987189</guid><author>MrCoderStack</author><pubDate>Thu, 01 Jun 2023 15:30:58 +0800</pubDate><description><![CDATA[码哥6.1亲身经历副业骗局, 好在及时反应过来, 没有被贪心蒙蔽, 希望大家在这样的环境下, 还是要警惕起来.(PS, 及时留言了公众号, 现在文章已撤回了)]]></description><category></category></item><item><title><![CDATA[摸鱼JVM - 垃圾收集]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/127388835</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/127388835</guid><author>MrCoderStack</author><pubDate>Tue, 18 Oct 2022 14:59:50 +0800</pubDate><description><![CDATA[谈起JVM, 那么就不得不提垃圾收集(Garbage Collection 通常被称为“GC”).什么是垃圾收集呢?想解答这个问题, 我们最好将问题拆解开如何确定垃圾?如何回收垃圾?何时回收垃圾?下面围绕这三件事, 我们站在JVM层面梳理下垃圾收集的机制.]]></description><category></category></item><item><title><![CDATA[摸鱼JVM - 执行引擎]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/126406794</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/126406794</guid><author>MrCoderStack</author><pubDate>Thu, 18 Aug 2022 15:26:51 +0800</pubDate><description><![CDATA[前面介绍过类加载器子系统运行时数据区(也就是内存相关)执行引擎前几章我们简单的梳理了一下JVM的类加载机制及运行时数据区,今天我们来聊聊JVM执行引擎.如无特殊说明, 所有描述JVM的特性均特指HotSpot VMHotSpot中采用的是解释器+JIT即时编译器混合.好处在Java程序运行时,JVM可以快速启动,前期先由解释器发挥作用,不需要等到编译器把所有字节码指令编译完之后才执行,这样可以省去很大一部分的编译时间;...]]></description><category></category></item><item><title><![CDATA[48. 从零开始学springboot: 接入RocketMQ]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/126287453</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/126287453</guid><author>MrCoderStack</author><pubDate>Thu, 11 Aug 2022 16:10:10 +0800</pubDate><description><![CDATA[微服务的架构越来越流行, 很多老旧项目面临着解耦重构, 复杂项目的解耦通常会引入一些中间件来帮助我们更好的完成工作, 本章, 我们就来通过实例了解下消息中间件的用法.市面上比较流行的消息中间件如下因为鱼哥的项目上了阿里的云, 所以选择很简单, 就用RocketMQ即可, 看官们根据实际情况择优选择....]]></description><category></category></item><item><title><![CDATA[47. 从零开始学springboot: spel结合redisson实现动态参数分布式锁]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/126055933</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/126055933</guid><author>MrCoderStack</author><pubDate>Fri, 29 Jul 2022 14:54:37 +0800</pubDate><description><![CDATA[随着分布式服务的烂大街,不可避免的就是公共资源的争用问题,对开发来说,本质上就是如何限流加锁的问题.上章简单介绍了spel表达式的一些应用案例,本章则结合spel和redisson来实现一个分布式锁注解.Redisson是一个高级的、分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象.Redisson、Jedis、Lettuce是三个不同的操作Redis的客户端....]]></description><category></category></item><item><title><![CDATA[46. 从零开始学springboot: spel结合aop实现动态传参]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/125996569</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/125996569</guid><author>MrCoderStack</author><pubDate>Tue, 26 Jul 2022 15:49:46 +0800</pubDate><description><![CDATA[基于SpingBoot框架中,我们随处可以见的便是各种各样的功能注解,注解的实现原理AOP之前有说过(翻看本系列的前面几章即可),这里不过多赘述.那么,你有没有碰到这样一种场景需要动态的传参数进注解,注意是动态的而不是写死在代码里的.针对这种需求,今天,我们就来实现一个简单的案例.正式撸代码之前,先了解下SpEl(SpringExpressionLanguage)表达式,这是Spring框架中的一个利器.//定义了一个表达式。...]]></description><category></category></item><item><title><![CDATA[摸鱼JVM -运行时数据区]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/125643470</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/125643470</guid><author>MrCoderStack</author><pubDate>Wed, 06 Jul 2022 17:01:12 +0800</pubDate><description><![CDATA[前面介绍过JVM被分为三个主要的子系统：前面我们介绍了JVM的类加载机制, 今天我们则重点聊聊JVM的运行时数据区, 即JVM内存相关知识关于JVM内存, 有两个比较重要的概念,这两个概念, 经常会有人搞混, 所以, 顺带来做个梳理.内存模型内存结构Java Memory Model, 就是我们常说的JMM;JMM和JVM内存结构不同, 它只是一个抽象的概念, 描述了一组规则或规范, 这个规范定义了一个线程对共享变量的写入时对另一个线程是可见的。我们知道,  Java的多线程之间是通过共享内存进行通信的，而]]></description><category></category></item><item><title><![CDATA[摸鱼JVM - 类加载机制]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/125641828</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/125641828</guid><author>MrCoderStack</author><pubDate>Wed, 06 Jul 2022 16:06:16 +0800</pubDate><description><![CDATA[我们知道,  在java开发中, .java文件会被编译超成一个个.class文件, 最终被JVM加载和运行.大致流程图如下我们写的java文件保存着业务逻辑代码,java编译器负责将 .java 文件编译成 .class 文件,.class 文件中保存着java文件转换后虚拟机将要执行的指令.当需要某个类的时候, java虚拟机会加载 .class 文件,并创建对应的class对象.将class文件加载到虚拟机的内存, 这个过程被称为类的加载.类加载的最终产品是位于堆区中的Class对象,Class对象封]]></description><category></category></item><item><title><![CDATA[摸鱼JVM - 几个常识概念启蒙 (老鸟请跳过)]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/125641707</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/125641707</guid><author>MrCoderStack</author><pubDate>Wed, 06 Jul 2022 16:02:43 +0800</pubDate><description><![CDATA[JDK, JRE, JVM这几个概念很容易搞晕, 其实, 哪怕是JAVA老手也不一定能理清这些, 所以, 咸鱼还是简单的过下这几个概念.]]></description><category></category></item><item><title><![CDATA[45. 从零开始学springboot撸一个Xss过滤器-注解实现]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/119930349</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/119930349</guid><author>MrCoderStack</author><pubDate>Thu, 26 Aug 2021 14:11:57 +0800</pubDate><description><![CDATA[前言
上章通过Filter实现了Xss全局过滤器
可能小伙伴还有点不满, 全局意味着“一刀切”,
虽然我们也有白名单黑名单设置, 但是, 白名单黑名单针对的是整个方法或整个实体类
举个例子, 我定义了个实体
public class People {
    private String name;
    private String info;
    private String des;
}

可能业务上有限制(比如name限制了只有5个字符长),
那么name其实不可能存在Xss注入风险了,
程序]]></description><category></category></item><item><title><![CDATA[44. 从零开始学springboot撸一个Xss过滤器-Filter实现]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/119930093</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/119930093</guid><author>MrCoderStack</author><pubDate>Thu, 26 Aug 2021 14:00:06 +0800</pubDate><description><![CDATA[前言
项目安全需要, 需要全局对参数进行xss过滤处理.
Xss简介
关于Xss很多人可能都有了解, 出于“礼貌”,
咸鱼君还是简单举个例子
用户注册时可以填写姓名
此时我填写了“” 并提交,
后端呢没有做任何检测就保存了.
那么就可能有问题, 下次再访问这个页面你会发现不停的弹窗“1”!
Xss攻击呢也分很多种, 感兴趣的自行查阅资料, 这里不多说了.
那么如何面对Xss攻击呢?
其实也很好解决, 一句话“不要相信用户的任何输入”!
编程上就是对用户的提交内容进行过滤以及非法字符的“转义”!
Spring]]></description><category></category></item><item><title><![CDATA[一波反向操作, 我把几十个生产库给合了]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/114436412</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/114436412</guid><author>MrCoderStack</author><pubDate>Sat, 06 Mar 2021 11:51:41 +0800</pubDate><description><![CDATA[前言
近三个月没更新文章, 可不是我偷懒, 而是工作太忙,实在没有时间.
时间回到三个月前, 领导突然找到我, 说要准备搞个“大工程”,一起讨论讨论.
什么大工程呢?  简而言之,  合库!
将几十个数据库合并成一个数据库!

我想很多技术人和我一样,  第一反应就是:  啥, 合库?
分库分表大多技术人或多或少都知道一些, 但是对于合库可能就没那么熟悉了.
不过, 仔细一想, 这样的需求还是存在的, 比如游戏常见的“合区服”, 其实技术层面可能就是通过合库合表实现的.
合库背景简介
和相关项目组的人员聊了]]></description><category></category></item><item><title><![CDATA[43. 从零开始学springboot整合feign跨服务调用]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/109443790</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/109443790</guid><author>MrCoderStack</author><pubDate>Mon, 02 Nov 2020 10:23:42 +0800</pubDate><description><![CDATA[介绍
微服务横行的互联网世界, 跨服务调用显得很平凡, 我们除了采用传统的http方式接口调用, 有没有更为优雅方便的方法呢?
答案是肯定的,feign就提供了轻便的方式!
如果你的服务都注册了注册中心,比如nacos, 那么调用会显得很轻松, 只需一个注解, 带上需要调用的服务名即可,**feign + nacos**会帮你做剩余的事.
如果没有注册中心, 也无需担心, feign一样可以以传统的
ip:port

方式进行调用~
下面,我们来实践下吧
springboot整合feign
引入依赖, 这里]]></description><category></category></item><item><title><![CDATA[13. 大佬问我:  notify()会立刻释放锁么?]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/109162176</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/109162176</guid><author>MrCoderStack</author><pubDate>Mon, 19 Oct 2020 15:46:55 +0800</pubDate><description><![CDATA[大佬问我:     notify()会立刻释放锁么?
​
我的内心戏:    肯定会啊! 这么简单的问题?    
聪明如我, 决定装小白, 回答:     不会?
大佬:    很好, 小伙子基础不错!
我:      
大佬:    说说为什么
我:   ………………
于是, 有了这篇文章!
问题的根本原来在于 “立刻”这个描述词!
如果你和咸鱼君一样懵逼, 不妨往下看!
技术大佬可以告辞了!!
接下来, 我们深入的分析分析wait和notify
前言
前面介绍了Synchronized关键词的原理与优]]></description><category></category></item><item><title><![CDATA[42. 从零开始学springboot整合alibaba-nacos做注册/配置中心]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/109052718</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/109052718</guid><author>MrCoderStack</author><pubDate>Tue, 13 Oct 2020 15:34:37 +0800</pubDate><description><![CDATA[前言
随着 服务化 的普及, 你会发现越来越多的公司开始服务化的调整, 那么有哪些变化呢?
你会发现, 原来一个接口就实现了一套逻辑功能, 而服务化后, 服务拆分的维度更细了, 实现一个功能, 可能需要同时协同很多的服务接口!
服务的拆分维度更细当然是有好处的, 服务间耦合度更低, 复用性更强, 但是随之而来的是服务间配置及管理成本的上升!
所以, 为了解决这些服务治理成本, Nacos应运而生.
Nacos 是阿里巴巴的开源项目，其核心定位是 动态服务发现、配置和服务管理平台
简而言之 nacos两个功能]]></description><category></category></item><item><title><![CDATA[12. 面试官不问, 你也不得不知道的锁知识!]]></title><link>https://blog.youkuaiyun.com/MrCoderStack/article/details/108789878</link><guid>https://blog.youkuaiyun.com/MrCoderStack/article/details/108789878</guid><author>MrCoderStack</author><pubDate>Fri, 25 Sep 2020 09:44:13 +0800</pubDate><description><![CDATA[前言
hello, 大家好, 我是咸鱼君, 擅长各种Java摸鱼姿势.

恰逢2020年“金九”月,
今天, 我们就来说一说面试中出现频率极高的锁知识!
ps:说不定可以帮到部分有“想法”的同学

锁的优化
JDK6开始, synchronized的实现机制进行了较大调整,除了使用JDK5引进的CAS自旋之外, 还增加了以下的优化策略.

自适应的CAS自旋
锁消除
锁粗化
偏向锁
轻量级锁
…

这些优化使得synchronized性能获得了极大提高, 所以, 情况允许下, 推荐使用synchronize]]></description><category></category></item></channel></rss>