<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LingHu66的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LingHu66</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LingHu66]]></copyright><item><title><![CDATA[Dubbo 支持哪些序列化协议？说一下 Hessian 的数据结构？PB 知道吗？为什么 PB 的效率是最高的？]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110953520</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110953520</guid><author>LingHu66</author><pubDate>Thu, 10 Dec 2020 15:11:46 +0800</pubDate><description><![CDATA[面试题
dubbo 支持哪些通信协议？支持哪些序列化协议？说一下 Hessian 的数据结构？PB 知道吗？为什么 PB 的效率是最高的？
面试官心理分析
上一个问题，说说 dubbo 的基本工作原理，那是你必须知道的，至少要知道 dubbo 分成哪些层，然后平时怎么发起 rpc 请求的，注册、发现、调用，这些是基本的。
接着就可以针对底层进行深入的问问了，比如第一步就可以先问问序列化协议这块，就是平时 RPC 的时候怎么走的？
面试题剖析
序列化，就是把数据结构或者是一些对象，转换为二进制串的过程，而反序]]></description><category></category></item><item><title><![CDATA[大学四年自学编程，总结了这四条不外传的学习经验！]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110947674</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110947674</guid><author>LingHu66</author><pubDate>Thu, 10 Dec 2020 10:29:46 +0800</pubDate><description><![CDATA[今天我主要分享的就是：我个人在自学编程过程中的得与失，简单来说就是自己的学习感悟，以及总结的编程学习经验，方法和技巧之类的。
同时，我个人会不断的进行自学，掌握更多的编程知识，然后会把自己所学，所领悟到的东西整理编写成适合新手小白学习的入门教程，希望达到的目的就是帮助那些想要学习的新手小白更快更高效的入门。
因为我深知自学编程的不容易，尤其是自己刚开始，什么也不懂，遇到问题无从下手，那种感觉真的很难受，所以我刚开始学习编程的时候，真的希望能有个人随时问一问，请教一下，或者有些人可以分享一些编程的学习经验，方]]></description><category></category></item><item><title><![CDATA[什么是TCP/IP?-四张图解释TCP/IP四层协议模型]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110877890</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110877890</guid><author>LingHu66</author><pubDate>Tue, 08 Dec 2020 17:33:29 +0800</pubDate><description><![CDATA[什么是四层模型
第一层：应用层，主要有负责web浏览器的HTTP协议， 文件传输的FTP协议，负责电子邮件的SMTP协议，负责域名系统的DNS等。
第二层：传输层，主要是有可靠传输的TCP协议，特别高效的UDP协议。主要负责传输应用层的数据包。
第三层：网络层，主要是IP协议。主要负责寻址（找到目标设备的位置）
第四层：数据链路层，主要是负责转换数字信号和物理二进制信号。
为什么是四层模型
通过四层模型可以将应用层的具体数据传输给对应设备
例子：
我们需要发送一个index.html。
两台电脑在应用层..]]></description><category></category></item><item><title><![CDATA[Java程序员必修内功心法！（内功修炼第四层）]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110852734</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110852734</guid><author>LingHu66</author><pubDate>Tue, 08 Dec 2020 10:37:55 +0800</pubDate><description><![CDATA[1. 基础
1.1. 正确使用 equals 方法
Object的equals方法容易抛空指针异常，应使用常量或确定有值的对象来调用 equals。
举个例子：
// 不能使用一个值为null的引用类型变量来调用非静态方法，否则会抛出异常
String str = null;
if (str.equals("SnailClimb")) {
  ...
} else {
  ..
}

运行上面的程序会抛出空指针异常，但是我们把第二行的条件判断语句改为下面这样的话，就不会抛出空指针异常，else 语句块得到执]]></description><category></category></item><item><title><![CDATA[Java程序员必修内功心法！（内功修炼第三层）]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110639236</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110639236</guid><author>LingHu66</author><pubDate>Fri, 04 Dec 2020 14:54:45 +0800</pubDate><description><![CDATA[Java 核心技术
1.1. 反射机制
JAVA 反射机制是在运行状态中，对于任意一个类，都能够知道这个类的所有属性和方法；对于任意一个对象，都能够调用它的任意一个方法和属性；这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。
1.1.1.静态编译和动态编译
1，静态编译： 在编译时确定类型，绑定对象
2，动态编译： 运行时确定类型，绑定对象
1.1.2.反射机制优缺点
优点： 运行期类型的判断，动态加载类，提高代码灵活度。
缺点： 1,性能瓶颈：反射相当于一系列解释操作，通知 ]]></description><category></category></item><item><title><![CDATA[Java程序员必修内功心法！（内功修炼第二层）]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110476496</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110476496</guid><author>LingHu66</author><pubDate>Wed, 02 Dec 2020 12:18:42 +0800</pubDate><description><![CDATA[1，Java 面向对象
1.1类和对象
1.1.1. 面向对象和面向过程的区别
1，面向过程 ：面向过程性能比面向对象高。 因为类调用时需要实例化，开销比较大，比较消耗资源，所以当性能是最重要的考量因素的时候，比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。但是，面向过程没有面向对象易维护、易复用、易扩展。
2，面向对象 ：面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性，所以可以设计出低耦合的系统，使系统更加灵活、更加易于维护。但是，面向对象性能比面向过程低。]]></description><category></category></item><item><title><![CDATA[转行程序员，报班？自学？你真的了解培训机构吗？]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110423941</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110423941</guid><author>LingHu66</author><pubDate>Tue, 01 Dec 2020 10:55:39 +0800</pubDate><description><![CDATA[培训机构，套路满满，这些坑你不能不知道。
大家好，我是令狐，很多小伙伴给我留言，希望我讲一讲IT线下培训机构，今天我就满足你们大家的心愿，跟你们聊一聊IT培训机构那些你们不知道的内幕。

一提到IT培训机构呢很多人都会觉得不靠谱，感觉很坑，确实我有很多学生跟我讲过自己被坑的经历，有的一年时间就花了七八万，到最后什么也没有学会，工作也没有找到，确实是很坑人。
看过我之前的文章的都知道，目前我也正是一名线上一对一培训的Java老师，我之前接触过很多培训机构，所以多多少少知道一些大家不知道的事情，今天这篇文章就给]]></description><category></category></item><item><title><![CDATA[Java程序员必修内功心法！（内功修炼第一层）]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110387701</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110387701</guid><author>LingHu66</author><pubDate>Mon, 30 Nov 2020 15:19:30 +0800</pubDate><description><![CDATA[1. Java 基本功
1.1. Java 入门（基础概念与常识）
1.1.1. Java 语言有哪些特点?
简单易学；
面向对象（封装，继承，多态）；
平台无关性（ Java 虚拟机实现平台无关性）；
可靠性；
安全性；
支持多线程（ C++ 语言没有内置的多线程机制，因此必须调用操作系统的多线程功能来进行多线程程序设计，而 Java 语言却提供了多线程支持）；
支持网络编程并且很方便（ Java 语言诞生本身就是为简化网络编程设计的，因此 Java 语言不仅支持网络编程而且很方便）；
编译与解释并存；
]]></description><category></category></item><item><title><![CDATA[关于 Spring Boot 注解你了解多少？]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110385982</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110385982</guid><author>LingHu66</author><pubDate>Mon, 30 Nov 2020 13:38:20 +0800</pubDate><description><![CDATA[一、注解(annotations)列表
@SpringBootApplication：包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
@Configuration 等同于spring的XML配置文件；使用Java代码可以检查类型安全。
@EnableAutoConfiguration 自动配置。
@ComponentSca]]></description><category></category></item><item><title><![CDATA[原创 | 万万没想到，HashMap默认容量的选择，竟然背后有这么多思考！？]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110276587</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110276587</guid><author>LingHu66</author><pubDate>Sat, 28 Nov 2020 15:02:27 +0800</pubDate><description><![CDATA[集合是Java开发日常开发中经常会使用到的，而作为一种典型的K-V结构的数据结构，HashMap对于Java开发者一定不陌生。
在日常开发中，我们经常会像如下方式以下创建一个HashMap：
Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();

但是，大家有没有想过，上面的代码中，我们并没有给HashMap指定容量，那么，这时候一个新创建的HashMap的默认容量是多少呢？为什么呢？本文就来分析下这个问题。
什么是容量
在]]></description><category></category></item><item><title><![CDATA[一道“史上最难”java面试题引发的线程安全思考]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110188254</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110188254</guid><author>LingHu66</author><pubDate>Thu, 26 Nov 2020 15:12:42 +0800</pubDate><description><![CDATA[1.前言
最近偶然间看见一道名为史上最难的java面试题，这个题让了我对线程安全的有了一些新的思考，给大家分享一下这个题吧:
public class TestSync2 implements Runnable {
    int b = 100;         
 
    synchronized void m1() throws InterruptedException {
        b = 1000;
        Thread.sleep(500); //6
        System]]></description><category></category></item><item><title><![CDATA[无锁队列Disruptor]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110134923</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110134923</guid><author>LingHu66</author><pubDate>Wed, 25 Nov 2020 16:44:29 +0800</pubDate><description><![CDATA[1.何为队列
听到队列相信大家对其并不陌生，在我们现实生活中队列随处可见，去超市结账，你会看见大家都会一排排的站得好好的，等待结账，为什么要站得一排排的，你想象一下大家都没有素质，一窝蜂的上去结账，不仅让这个超市崩溃，还会容易造成各种踩踏事件，当然这些事其实在我们现实中也是会经常发生。
当然在计算机世界中，队列是属于一种数据结构，队列采用的FIFO(first in firstout)，新元素（等待进入队列的元素）总是被插入到尾部，而读取的时候总是从头部开始读取。在计算中队列一般用来做排队(如线程池的等待排]]></description><category></category></item><item><title><![CDATA[Java虚拟机：怎么确定对象已经死了？]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110124856</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110124856</guid><author>LingHu66</author><pubDate>Wed, 25 Nov 2020 13:33:42 +0800</pubDate><description><![CDATA[怎么确定对象已经死了？
怎么确定对象已经死了？怎么确定一个对象已经死了？
引用计数算法
给对象中添加一个引用计数器，每当有个地方引用它，计数器值就加1，引用失效，计数器减1，任何时刻计数器为0的对象就不能再应用了。
很难解决对象之间的相互循环引用。
引用计数收集器可以很快的执行，并且交织在程序运行中，对程序需要不被长时间打断的实时环境比较有利，但其很难解决对象之间相互循环引用的问题。如下面的程序和示意图所示，对象objA和objB之间的引用计数永远不可能为 0，那么这两个对象就永远不能被回收。

publi]]></description><category></category></item><item><title><![CDATA[学员故事｜土木男零基础转行Java，一年月薪翻三倍！]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/110039104</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/110039104</guid><author>LingHu66</author><pubDate>Tue, 24 Nov 2020 09:37:40 +0800</pubDate><description><![CDATA[“所谓界限，就是到那里为止的意思。守住那界限，就是继续现在所熟悉的感觉，那意味着维持那里的世界、那里的规则和关系，那也代表着，如果不越界，就无法遇见另一个世界的规则和关系。”
越界对于很多人来说，是一件艰难而又纠结的事情，或许缺乏勇气，或许缺乏魄力，或许内心深处不愿打破平衡。可对于有些人来说，越界是一件不可不为的事情，因为那意味着新的希望。
我再次遇见到阿中的时候，他已经是一个意气风发的Java小组长了，当时我简直要认不出他来！因为一年前的他，胡子拉碴、不修边幅、满脸沧桑，完全不像一个正常的25岁小伙子。也]]></description><category></category></item><item><title><![CDATA[成为java顶尖程序员，看这几本书就够了！]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/109901770</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/109901770</guid><author>LingHu66</author><pubDate>Sat, 21 Nov 2020 16:50:56 +0800</pubDate><description><![CDATA[很多程序员们往往有看书的冲动，但不知道看哪些书，下面博主就给各位Java程序猿们推荐一些好书，其中绝大多数都是我自己平时在看的书，也算是我对于平时读的书做一个小总结和读后感吧。
个人认为看书有两点好处：
1.能出版出来的书一定是经过反复的思考、雕琢和审核的，因此从专业性的角度来说，一本好书的价值远超其他资料
2.对着书上的代码自己敲的时候方便
“看完书之后再次提升自我的最好途径是看一些相关的好博文“，我个人认为这是学习的第二步，因为一本书往往有好几百页，好的博文是自己看书学习之后的一些总结和提炼，对于梳理学]]></description><category></category></item><item><title><![CDATA[自定义注解！绝对是程序员装逼的利器！！]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/109900134</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/109900134</guid><author>LingHu66</author><pubDate>Sat, 21 Nov 2020 16:04:59 +0800</pubDate><description><![CDATA[相信很多人对Java中的注解都很熟悉，比如我们经常会用到的一些如@Override、@Autowired、@Service等，这些都是JDK或者诸如Spring这类框架给我们提供的。
在以往的面试过程中，我发现，关于注解的知识很多程序员都仅仅停留在使用的层面上，很少有人知道注解是如何实现的，更别提使用自定义注解来解决实际问题了。
但是其实，我觉得一个好的程序员的标准就是懂得如何优化自己的代码，那在代码优化上面，如何精简代码，去掉重复代码就是一个至关重要的话题，在这个话题领域，自定义注解绝对可以算得上是一个大]]></description><category></category></item><item><title><![CDATA[面试官所认为的单例模式]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/109839163</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/109839163</guid><author>LingHu66</author><pubDate>Fri, 20 Nov 2020 09:37:52 +0800</pubDate><description><![CDATA[单例模式是23种GOF模式中最简单，也是最经常出现的一种设计模式，也是面试官最常爱考的一种模式，为什么呢？ 因为单例模式足够简单，编写一个单例模式代码几分钟就能搞定，所以设计模式中面试官通常会选取单例模式作为出题。 下面把单例模式分几个点，分别说说哪些地方面试官能考你？
单例模式的意义
通常面试官会很笼统的问你，什么是单例模式？单例模式用来解决了什么痛点？没有单例模式我们会怎么办？单例模式他有什么缺点吗？
单例模式是最简单的设计模式之一，属于创建型模式，它提供了一种创建对象的方式，确保只有单个对象被创建。这]]></description><category></category></item><item><title><![CDATA[你应该知道的乐观锁-高效控制线程安全的手段]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/109744680</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/109744680</guid><author>LingHu66</author><pubDate>Tue, 17 Nov 2020 15:56:15 +0800</pubDate><description><![CDATA[1.背景
最近在修改Seata线程并发的一些问题，把其中一些经验总结给大家。先简单描述一下这个问题，在Seata这个分布式事务框架中有个全局事务的概念，在大多数情况下，全局事务的流程基本是顺序推进不会出现并发问题，但是当一些极端的情况下，会出现多线程访问导致我们全局事务处理不正确。 如下面代码所示： 在我们全局事务commit阶段，有一个如下代码：
  if (status == GlobalStatus.Begin) {
        globalSession.changeStatus(GlobalS]]></description><category></category></item><item><title><![CDATA[异步技巧之CompletableFuture]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/109737992</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/109737992</guid><author>LingHu66</author><pubDate>Tue, 17 Nov 2020 11:03:15 +0800</pubDate><description><![CDATA[1.Future接口
1.1 什么是Future?
在jdk的官方的注解中写道
A {@code Future} represents the result of an asynchronous
 * computation.  Methods are provided to check if the computation is
 * complete, to wait for its completion, and to retrieve the result of
 * the computation]]></description><category></category></item><item><title><![CDATA[一个JIT激进优化引起的可见性误解]]></title><link>https://blog.youkuaiyun.com/LingHu66/article/details/109716382</link><guid>https://blog.youkuaiyun.com/LingHu66/article/details/109716382</guid><author>LingHu66</author><pubDate>Mon, 16 Nov 2020 11:02:09 +0800</pubDate><description><![CDATA[背景
这篇文章最开始再我的群里面有讨论过，当时想写的这篇文章的，但是因为一些时间的关系所以便没有写。最近阅读微信文章的时候发现了一篇零度写的一篇文章《分享一道阿里Java并发面试题》，对于有关Java并发性技术的文章我一般还是挺感兴趣的，于是阅读了一下，整体来说还是挺不错的，但是其中犯了一个验证可见性的问题。由于微信文章回复不方便讨论，于是我便把之前一些和群友的讨论在这里写出来。
如何测试可见性问题
因为在群里面我们习惯的有每周一问，也就由我或者群友发现一些由意思的问题然后提问给大家，让大家参与讨论，当时我]]></description><category></category></item></channel></rss>