<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ InkGenius]]></title><description><![CDATA[Good developers who are familiar with the entire stack know how to make life easier for those around]]></description><link>https://blog.youkuaiyun.com/Insert_day</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Insert_day]]></copyright><item><title><![CDATA[Java 常量池总结]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/96435691</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/96435691</guid><author>Insert_day</author><pubDate>Thu, 18 Jul 2019 17:11:25 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

对于Java中的常量池，一直有点困惑，看完网上的一些相关博客后，也似懂非懂，于是自己总结一下。关于常量池带着以下几个问题来逐步解答。

1什么是常量池？

常量池毫无疑问是用来存放常量的，那么那些是常量呢？

常量池主要用于存...]]></description><category></category></item><item><title><![CDATA[阻塞非阻塞与同步异步的区别？]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/94431846</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/94431846</guid><author>Insert_day</author><pubDate>Tue, 02 Jul 2019 11:17:29 +0800</pubDate><description><![CDATA[之前一直对阻塞非阻塞与同步异步这两对概念理解不深，总是把它们搞混。看了网上一些相关的解释之后，发现大家站在不同的角度得出了不同的理解，这个问题没有确切的答案，只能根据场景不同做出解释。

进程间的通信

进程间的通信时通过 send() 和 receive() 两种基本操作完成的。具体如何实现这两种基础操作，存在着不同的设计。
消息的传递有可能是阻塞的或非阻塞的，也被称为同步或异步的：

阻塞式发...]]></description><category></category></item><item><title><![CDATA[不可不说的Java“锁”事]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/91644753</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/91644753</guid><author>Insert_day</author><pubDate>Wed, 12 Jun 2019 22:41:28 +0800</pubDate><description><![CDATA[转自美团技术团队：https://tech.meituan.com/2018/11/15/java-lock.html

前言

Java提供了种类丰富的锁，每种锁因其特性的不同，在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码（本文中的源码来自JDK 8和Netty 3.10.6）、使用场景进行举例，为读者介绍主流锁的知识点，以及不同的锁的适用场景。

Java中往往是按照是否含有某一...]]></description><category></category></item><item><title><![CDATA[【微服务】Dubbo 和 Spring Cloud 比较]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/91466523</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/91466523</guid><author>Insert_day</author><pubDate>Tue, 11 Jun 2019 22:16:22 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】
当前开源上可选用的微服务框架主要有Dubbo、Spring Cloud等，下面对这两个框架做一个简单对比介绍。

1概念

Dubbo：Apache Dubbo是一款高性能Java RPC框架，之前由阿里巴巴开源，现已成为 Ap...]]></description><category></category></item><item><title><![CDATA[Spring MVC 中web容器和IOC容器启动过程]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/91050014</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/91050014</guid><author>Insert_day</author><pubDate>Thu, 06 Jun 2019 22:45:09 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

1 概念

web容器：可以部署多个WEB应用程序的环境，例如Tomcat、weblogic、JBoss等。

IOC容器：Inversion of Control容器，是Spring的两大基本功能之一（还有AOP），用来管理...]]></description><category></category></item><item><title><![CDATA[J2EE 简介]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/90813102</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/90813102</guid><author>Insert_day</author><pubDate>Tue, 04 Jun 2019 21:11:42 +0800</pubDate><description><![CDATA[简介

Java Platform, Enterprise Edition (Java EE) 是社区驱动的企业软件标准。Java EE 是利用Java Community Process开发的，业界专家、商业组织和开源组织、Java 用户组以及数不清的个人为此做出了巨大贡献。每个版本都集成了符合业界需求的新特性，提高了应用可移植性，提高了开发人员的工作效率。

JavaEE是一组建立在Jav...]]></description><category></category></item><item><title><![CDATA[Java 集合常见面试题]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/90344199</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/90344199</guid><author>Insert_day</author><pubDate>Sun, 19 May 2019 16:47:21 +0800</pubDate><description><![CDATA[1、ArrayList和LinkedList区别？

ArrayList是容量可以改变的非线程安全集合。内部实现使用数组进行存储，集合扩容时会创建更大的数组空间，把原有数据复制到新数组中。ArrayList支持对元素的快速随机访问，但是插入与删除时速度通常很慢，因为这个过程很有可能需要移动其他元素。

LinkedList的本质是双向链表。与ArrayList相比，LinkedList的插入和删除...]]></description><category></category></item><item><title><![CDATA[JDK 8 ConcrrentHashMap 源码解析]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89853945</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89853945</guid><author>Insert_day</author><pubDate>Sun, 05 May 2019 21:51:35 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

0存储结构

从底层实现来看，ConcurrentHashMap和HashMap一样都是数组+链表+红黑树（JDK1.8为了优化链表查询性能新增红黑树）实现的。



1 类定义




public class Concu...]]></description><category></category></item><item><title><![CDATA[JDK 8 TreeMap 源码解析]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89460238</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89460238</guid><author>Insert_day</author><pubDate>Mon, 22 Apr 2019 22:43:16 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

0存储结构

TreeMap是一个有序的Map，内部按照Key的排序结果来组织。一般如果没有需要排序的情况下，我们都使用HashMap或者多线程下使用ConcurrentHashMap，因为TreeMap的插入和删除的效率没...]]></description><category></category></item><item><title><![CDATA[计算无线信号的传输距离]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89381214</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89381214</guid><author>Insert_day</author><pubDate>Thu, 18 Apr 2019 16:51:31 +0800</pubDate><description><![CDATA[【译自https://www.electronicdesign.com/communications/understanding-wireless-range-calculations，水平有限，望指正】

目录

为什么实际通信距离可能不等于声称的距离

功率和dBm计算

路径损耗

解释经验结果

天线高度和菲涅耳区

总结



无线通信设计中的关键计算之一是通信距离，即使得无线通信能够...]]></description><category></category></item><item><title><![CDATA[数据结构之红黑树Java实现]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89342943</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89342943</guid><author>Insert_day</author><pubDate>Tue, 16 Apr 2019 22:01:23 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

1 红黑树的进化历程

1.1 第一阶段：树

树是一种常用的数据结构，它是一个由有限节点组成的一个具有层次关系的集合，数据就存在树的这些节点中。最顶层只有一个节点，称为根节点。在分支处有一个节点，指向多个方向，如果某节点下方没...]]></description><category></category></item><item><title><![CDATA[JDK 8 HashSet 源码解析]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89341110</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89341110</guid><author>Insert_day</author><pubDate>Tue, 16 Apr 2019 21:00:54 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

0存储结构

从底层实现来看，HashSet调用了HashMap来存储元素，不过之用到了Key，Value则用一个固定对象替代。由于Map中的key是不可重复的，这和Set不存在重复元素的特点刚好契合。使用HashMap也意...]]></description><category></category></item><item><title><![CDATA[JDK 8 LinkedList 源码解析]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89320505</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89320505</guid><author>Insert_day</author><pubDate>Mon, 15 Apr 2019 22:05:48 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

0存储结构

从底层实现来看，LinkedList是链表实现的，其本质是双向链表。与ArrayList相比，LinkedList的插入和删除速度更快，但是随机访问速度则很慢。LinkedList的优点在于可以将零散的内存单元通...]]></description><category></category></item><item><title><![CDATA[JDK 8 ArrayList 源码解析]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89256634</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89256634</guid><author>Insert_day</author><pubDate>Fri, 12 Apr 2019 21:59:28 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

0存储结构

从底层实现来看，Array是数组实现的，与数组不同的是，其容量是可以改变的。集合扩容的时候会创建更大的数组空间，把原有数据复制到新数组中。ArrayList支持对元素的快速随机访问，但是插入和删除时速度通常很慢...]]></description><category></category></item><item><title><![CDATA[JDK 8 HashMap 源码解析]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/89107703</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/89107703</guid><author>Insert_day</author><pubDate>Mon, 08 Apr 2019 22:34:24 +0800</pubDate><description><![CDATA[【本文是为了梳理知识的总结性文章，总结了一些自认为相关的重要知识点，只为巩固记忆以及技术交流，忘批评指正。其中参考了很多前辈的文章，包括图片也是引用，如有冒犯，侵删。】

目录

0存储结构

1 类定义

2静态常量

3 属性

4构造函数

5 链表节点

6 功能方法

确定哈希桶数组索引位置

hash扰动函数计算方法

取模运算优化

7 常用方法

get方法

put方法

...]]></description><category></category></item><item><title><![CDATA[Leetcode-494-Target-Sum]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/88018466</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/88018466</guid><author>Insert_day</author><pubDate>Thu, 28 Feb 2019 11:05:57 +0800</pubDate><description><![CDATA[Leetcode-494-Target-Sum

题目如下：


You are given a list of non-negative integers, a1, a2, …, an, and a target, S. Now you have 2 symbols + and -. For each integer, you should choose one from + and - as ...]]></description><category></category></item><item><title><![CDATA[LeetCode 39. Combination Sum 题解]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/85682855</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/85682855</guid><author>Insert_day</author><pubDate>Thu, 03 Jan 2019 11:24:13 +0800</pubDate><description><![CDATA[

这题有几个主要的点，

首先，题目要求输出所有的组合数，而不是数据所有组合总的个数，如果是求个数用动态规划更好解决。但是要输出所有的组合数的话使用回溯法更容易处理。

其次，题目要求不能包含有重复的组合，这是解决这个题目的一个难点。

最后，保存解决方案的时候要注意Java里List的浅拷贝和深拷贝，不然浅拷贝最后得到空值。

解法：

其实回溯的方法还是比较简单的，为了后面处理的适合容易去重...]]></description><category></category></item><item><title><![CDATA[Java new 背着我们干了什么]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/70849094</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/70849094</guid><author>Insert_day</author><pubDate>Thu, 27 Apr 2017 12:14:09 +0800</pubDate><description><![CDATA[new是 Java 最常用的关键字之一，我们使用new创建对象。

我们经常像下面代码一样创建一个对象：



Dogdog=newDog();



只需一行代码，我们就能创建出一只狗，是不是很简单！为什么这么简单？

答：不简单就没人用。

Java 作为面向对象语言，提倡封装，如果自己的语法设计都做不到，那还怎么要求程序员们做到。

创建对象这么常用而且模板化的操作，如...]]></description><category></category></item><item><title><![CDATA[【单例深思】枚举实现单例原理]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/70832185</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/70832185</guid><author>Insert_day</author><pubDate>Wed, 26 Apr 2017 20:49:58 +0800</pubDate><description><![CDATA[单例的枚举实现在《Effective Java》中有提到，因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点，单元素的枚举类型被作者认为是实现Singleton的最佳方法。

其实现非常简单，如下：



public enum Singleton {

    INSTANCE;
    private Singl]]></description><category></category></item><item><title><![CDATA[【单例深思】单例与序列化]]></title><link>https://blog.youkuaiyun.com/Insert_day/article/details/70755990</link><guid>https://blog.youkuaiyun.com/Insert_day/article/details/70755990</guid><author>Insert_day</author><pubDate>Tue, 25 Apr 2017 17:21:09 +0800</pubDate><description><![CDATA[在前面的文章中提到，序列化会破坏单例模式，下面用静态内部类的实现方式，说明序列化对单例的影响：



public class Singleton implements Serializable{
    private static class SingletonHolder {
        private static final Singleton INSTANCE = ne]]></description><category></category></item></channel></rss>