<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[以后我要当村长]]></title><description><![CDATA[记录学习]]></description><link>https://blog.youkuaiyun.com/qq_42370146</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42370146]]></copyright><item><title><![CDATA[【二本｜面试｜亲身经历｜Java校招干货】二本学校的计算机学生如何拿到30万年薪的大厂Offer？]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/116864911</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/116864911</guid><author>qq_42370146</author><pubDate>Sat, 15 May 2021 22:50:46 +0800</pubDate><description><![CDATA[笔者是一位无名学校的无名学生，在经历疯狂内卷的校招中，也曾受过很过打击，在学历背景下，得到的面试机会寥寥无几，大多在简历关就被淘汰，也曾有过学习的迷茫，下面我将以面向工作的角度，分析我们如何把握学习脉络，让自己在校招的厮杀中拿到一个满意的Offer，希望能够给各位朋友带来一些小小的收获。



一、我在秋招中的收获？

在秋招中，因为准备的比较充足，很幸运的拿到了美团、京东、深信服SP、哈啰出行SP、唯品会、土巴兔、多益网络的Offer，其中美团、哈啰出行、深信服的年薪总包都接近或超过30万，虽然没有进..]]></description><category></category></item><item><title><![CDATA[Maven使用的哪些事：pom继承、私服、镜像]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/109668605</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/109668605</guid><author>qq_42370146</author><pubDate>Fri, 13 Nov 2020 17:02:21 +0800</pubDate><description><![CDATA[Maven我们使用非常广泛的jar管理工具，一个大型的项目往往依赖非常多的jar包，如果需要我们逐个去下载导入将是一件非常繁琐的事情，Maven就能够帮我们集成jar包管理和自动下载导入的工作。

（一）为什么Maven能够帮我们自动下载jar包？

1、pom文件的继承关系

随便打开一个集成了Maven的项目，我们发现都会存在一个pom文件，即使我们pom没有配置任何的jar包下载路径，我们仍然可以自动下载需要的jar包，这是为何？

因为pom文件也有自己的一个继承关系，由此我们可以推知应该存在一个s]]></description><category></category></item><item><title><![CDATA[秒懂JDK14的几个重要特性]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105621802</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105621802</guid><author>qq_42370146</author><pubDate>Sun, 19 Apr 2020 20:52:11 +0800</pubDate><description><![CDATA[一、instanceof（in 死等 of）的模式匹配

Instanceof是java中用于检查对象引用是否为给定Type类型的实例，并返回布尔值。在Java 14之前，我们在完成判断之后，经常需要做一下类型的强制转换，如下：





Java 14增强功能特性：





注意：仅当object不为null时，instanceOf才会匹配，然后仅将其分配给str。在instanceof中...]]></description><category></category></item><item><title><![CDATA[两分钟带你搞定常见垃圾收集器！]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105570283</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105570283</guid><author>qq_42370146</author><pubDate>Thu, 16 Apr 2020 23:52:38 +0800</pubDate><description><![CDATA[（1）JVM的运行模式

Server
	Client
Client的启动比Server模式快，但是长期运行进入稳定期后Server模式的程序运行速度会比Client快，这是因为Server模式启动的是重量级的JVM，对程序进行了更多了优化。

命令行执行java -version即可查询自己电脑上的JVM运行模式：







（2）垃圾收集器之间的联系



不同的垃圾收集器可能针对不...]]></description><category></category></item><item><title><![CDATA[堆内存划分（新生代、老年代）]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105569520</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105569520</guid><author>qq_42370146</author><pubDate>Thu, 16 Apr 2020 23:07:49 +0800</pubDate><description><![CDATA[在 Java 中，堆被划分成两个不同的区域：新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域：Eden、From Survivor、To Survivor。

这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象，包括内存的分配以及回收。

堆的内存模型大致如下图所示：





从图中可以看出： 堆大小 = 新生代 + 老年代。

默认...]]></description><category></category></item><item><title><![CDATA[秒懂ThreadLocal及其引发的内存泄露！]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105562000</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105562000</guid><author>qq_42370146</author><pubDate>Thu, 16 Apr 2020 17:02:56 +0800</pubDate><description><![CDATA[ThreadLocal是Java中的一种线程绑定机制，可以为每一个使用该变量的线程都提供一个变量值的副本，并且每一个线程都可以独立地改变自己的副本，而不会与其它线程的副本发生冲突，解决了变量并发访问的冲突问题。

每个线程内部有一个 ThreadLocal.ThreadLocalMap 类型的成员变量 threadLocals，这个 threadLocals 存储了与该线程相关的所有ThreadL...]]></description><category></category></item><item><title><![CDATA[搞定CAS的原理，看这一篇就够了！]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105559575</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105559575</guid><author>qq_42370146</author><pubDate>Thu, 16 Apr 2020 15:59:45 +0800</pubDate><description><![CDATA[一、什么是CAS？

CAS （compareAndSwap），中文叫比较交换，是一种无锁原子算法，映射到操作系统就是一条CPU的原子指令，其作用是让CPU先进行比较两个值是否相等，然后原子地更新某个位置的值，其实现方式是基于硬件平台的汇编指令，在intel的CPU中，使用的是cmpxchg指令，就是说CAS是靠硬件实现的，从而在硬件层面提升效率。

执行过程是这样：它包含 3 个参数 CAS（V...]]></description><category></category></item><item><title><![CDATA[Redis之集群原理及一致Hash算法]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105536829</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105536829</guid><author>qq_42370146</author><pubDate>Wed, 15 Apr 2020 15:48:59 +0800</pubDate><description><![CDATA[一、如何设计系统，能够从Redis服务器的海量数据中快速找到所需？
我们可以采用分片，按照Hash算法划分数据，分散存储在多个节点上。
但是会涉及到一个问题，如果某个节点失效，那么存储在节点上面的数据也将失效，并且新增定位到该节点的数据将无法存储，容错性很低，利用一致性Hash算法可以解决这个问题。
二、利用一致Hash算法来解决分片的问题
其原理模于某个数（例如2的32次方），将哈希值空间变成虚...]]></description><category></category></item><item><title><![CDATA[JUC下的BlockingQueue阻塞队列详解]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105514460</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105514460</guid><author>qq_42370146</author><pubDate>Tue, 14 Apr 2020 16:24:08 +0800</pubDate><description><![CDATA[一、前言

  在新增的Concurrent包中，BlockingQueue很好的解决了多线程中，如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类，为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员，包括他们各自的功能以及常见使用场景。

二、认识BlockingQueue

阻塞队列，顾名思义，首先它是一个队列，而一个队...]]></description><category></category></item><item><title><![CDATA[什么是线程池？如何创建一个Java线程池？]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105513947</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105513947</guid><author>qq_42370146</author><pubDate>Tue, 14 Apr 2020 16:04:59 +0800</pubDate><description><![CDATA[一个线程池管理了一组工作线程，同时它还包括了一个用于放置等待执行的任务的队列。线程池可以避免线程的频繁创建与销毁，降低资源的消耗，提高系统的反应速度。java.util.concurrent.Executors提供了几个java.util.concurrent.Executor接口的实现用于创建线程池，其主要涉及四个角色：

线程池：Executor
	工作线程：Worker线程，Worker的r...]]></description><category></category></item><item><title><![CDATA[如何让线程返回数据？]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105491081</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105491081</guid><author>qq_42370146</author><pubDate>Mon, 13 Apr 2020 16:15:01 +0800</pubDate><description><![CDATA[从线程中返回数据和向线程传递数据类似，也可以通过类成员以及回调函数来返回数据，但类成员在返回数据和传递数据时有一些区别，下面让我们来看看它们区别在哪。



一、通过类变量和方法返回数据

使用这种方法返回数据需要在调用start方法后才能通过类变量或方法得到数据，让我们先来看看会得到什么结果：


package mythread;

public class MyThread extends...]]></description><category></category></item><item><title><![CDATA[String、StringBuffer、StringBuilder的区别？我懵了！]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105489644</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105489644</guid><author>qq_42370146</author><pubDate>Mon, 13 Apr 2020 15:23:07 +0800</pubDate><description><![CDATA[String 
			
			
			StringBuffer 
			
			
			StringBuilder
			
		
			String的值是不可变的，这就导致每次对String的操作都会生成新的String对象，不仅效率低下，而且浪费大量优先的内存空间
			
			
			StringBuffer是可变类，和线程安全的字符串操作类，任何对它指向的字符串的...]]></description><category></category></item><item><title><![CDATA[你知道StringBuffer是如何扩容的吗？]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105475189</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105475189</guid><author>qq_42370146</author><pubDate>Sun, 12 Apr 2020 21:36:17 +0800</pubDate><description><![CDATA[来看一下源码，在没有传参的情况下默认构造初始容量为16的空字符缓冲区。
public StringBuffer() {
    super(16);
}

有参数的情况下，初始容量是16+字符串的长度，然后用append（）方法将传入的字符放入字符缓冲区中：
public StringBuffer(String str) {
    super(str.length() + 16);
    ap...]]></description><category></category></item><item><title><![CDATA[Class.forName和ClassLoader.loadClass两个方法的区别？]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/105473848</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/105473848</guid><author>qq_42370146</author><pubDate>Sun, 12 Apr 2020 19:24:36 +0800</pubDate><description><![CDATA[一、类的加载过程
类的加载是指将指定的Class文件的二进制数据，加载到JVM的方法区中，并在堆区中创建对应的Class对象，该过程主要分为以下几步：

装载：查找并导入对应的Class文件到JVM中
链接： (1)检查：检查载入的class文件数据的正确性和完整性
           (2)准备：给类的静态变量分配存储空间
            (3)解析：将常量池中的符号引用转化为直接引用...]]></description><category></category></item><item><title><![CDATA[基于NIO的群聊系统简单实现]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/104901654</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/104901654</guid><author>qq_42370146</author><pubDate>Mon, 16 Mar 2020 16:16:26 +0800</pubDate><description><![CDATA[实例要求:
(1)编写一个NIO多人群聊系统，实现服务器端和客户端之间的数据简单通讯（非阻塞）
(2)服务器端：可以监测用户上线、离线，并实现消息转发功能
(3)客户端：通过channel可以无阻塞发送消息给其它所有用户，同时可以接受其它用户发送的消息(都是由服务器转发得到)
(4)目的：进一步理解NIO非阻塞网络编程机制

服务器

package nio.groupchat;

import ...]]></description><category></category></item><item><title><![CDATA[从synchronized关键字谈起的一系列问题]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/104010815</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/104010815</guid><author>qq_42370146</author><pubDate>Thu, 16 Jan 2020 20:38:25 +0800</pubDate><description><![CDATA[若一个方法存在并发安全问题，用synchronized关键字解决最简单的同步问题：
public class Test {
    public static void lockTest(){
        synchronized (Test.class) {
            System.out.println("hello");
        }
    }
}

synchro...]]></description><category></category></item><item><title><![CDATA[跨域请求遇到的问题记录]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/103543714</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/103543714</guid><author>qq_42370146</author><pubDate>Sun, 15 Dec 2019 17:28:39 +0800</pubDate><description><![CDATA[由于浏览器同源策略的存在,在进行前后端分离开发中遇到了一些问题.
(1)前后端无法通信
后台通过过滤器对请求头设置一些字段:
Ajax默认不携带Cookie
合理的创建标题，有助于目录的生成
直接输入1次#，并按下space后，将生成1级标题。
输入2次#，并按下space后，将生成2级标题。
以此类推，我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强...]]></description><category></category></item><item><title><![CDATA[竟然会有这么详细的String源码解析？]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/96858345</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/96858345</guid><author>qq_42370146</author><pubDate>Mon, 22 Jul 2019 14:45:12 +0800</pubDate><description><![CDATA[（一）前言
我在阅读一个类的时候习惯把一个类剖析为以下五个部分，因此我在阅读或者写博客的时候都是按照这个思路进行的：

1.类定义
2.属性字段
3.构造方法
4.普通方法
5.更多扩展

String类同样是lang包下的一个类，也是我们编程中最经常使用的一个类，了解它的内部构造则显得尤其重要。
（二）类定义
public final class String
    implements ja...]]></description><category></category></item><item><title><![CDATA[工厂模式？不会还有人不知道吧？]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/96858257</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/96858257</guid><author>qq_42370146</author><pubDate>Mon, 22 Jul 2019 14:44:37 +0800</pubDate><description><![CDATA[（一）什么是工厂模式？
工厂模式具体包括了简单工厂、工厂方法、抽象工厂，它们是按照从简单到复杂的顺序排列的，属于设计模式中的创建型。
创建型模式将创建对象的过程进行了抽象，也可以理解为将创建对象的过程进行了封装，作为客户程序仅仅需要去使用对象，而不再关心创建对象过程中的逻辑。
其中简单工厂并不属于GOF的23种模式，但是它是理解其它的工厂模式的一个很好的基础，所以我们在讲到工厂模式的时候顺便学习它...]]></description><category></category></item><item><title><![CDATA[你想知道的Object源码都在这！]]></title><link>https://blog.youkuaiyun.com/qq_42370146/article/details/96858172</link><guid>https://blog.youkuaiyun.com/qq_42370146/article/details/96858172</guid><author>qq_42370146</author><pubDate>Mon, 22 Jul 2019 14:43:55 +0800</pubDate><description><![CDATA[Object类是所有类的基类，所有类都默认隐式的继承Object类，该类的背后是面对对象思想的体现。
Object类位于java.lang包中，lang包里包含了java最核心和最重要的类，在编译时会自动导入，下面让我们了解Object有哪些方法和属性吧！
[外链图片转存失败(img-fWR3UcKA-1563777908365)(https://i.loli.net/2019/05/02/5cc...]]></description><category></category></item></channel></rss>