<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[aaa_aaa_aaa_aa的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aaa_aaa_aaa_aa]]></copyright><item><title><![CDATA[Gitlab安装与部署（Linux）]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125996038</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125996038</guid><author>aaa_aaa_aaa_aa</author><pubDate>Tue, 26 Jul 2022 15:39:43 +0800</pubDate><description><![CDATA[搭建需要安装下载gitlabCE社区版2.配置Postfix以发送邮件3.配置极狐GitLab软件源镜像。4.执行如下命令开始安装。]]></description><category></category></item><item><title><![CDATA[下载Chrome历史版本]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125989192</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125989192</guid><author>aaa_aaa_aaa_aa</author><pubDate>Tue, 26 Jul 2022 10:18:08 +0800</pubDate><description><![CDATA[访问地址。]]></description><category></category></item><item><title><![CDATA[Git的命令与使用]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125969517</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125969517</guid><author>aaa_aaa_aaa_aa</author><pubDate>Mon, 25 Jul 2022 10:17:37 +0800</pubDate><description><![CDATA[git基本命令，git使用最佳实践模型，git submodule，git subtree，git rebase]]></description><category></category></item><item><title><![CDATA[JAVA动态代理实例]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125095775</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/125095775</guid><author>aaa_aaa_aaa_aa</author><pubDate>Thu, 02 Jun 2022 10:14:25 +0800</pubDate><description><![CDATA[1.被动态代理类需要实现一个接口


2.创建被动态代理类


3.创建动态代理类


4.使用动态代理


5.控制台打印效果]]></description><category></category></item><item><title><![CDATA[线程上下文类加载器]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124473994</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124473994</guid><author>aaa_aaa_aaa_aa</author><pubDate>Thu, 28 Apr 2022 14:55:38 +0800</pubDate><description><![CDATA[当前类加载器（Current Classloader）

每一个类都会使用自己的类加载器（即加载自身的类加载器）来去加载其他类（指的是所依赖的类）如果ClassX引用了ClassY，那么ClassX的类加载器就会去加载ClassY（前提是ClassY尚未被加载）



线程上下文类加载器（Context Classloader）

线程上下文类加载器是由jdk1.2引入的，类Thread中的getContextClassLoader()与setContextClassLoader(ClassLoader c]]></description><category></category></item><item><title><![CDATA[类加载器与双亲委托模型]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124473897</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124473897</guid><author>aaa_aaa_aaa_aa</author><pubDate>Thu, 28 Apr 2022 14:49:35 +0800</pubDate><description><![CDATA[有两种类型的类加载器

Java虚拟机自带的加载器

	根类加载器（Bootstrap）
		扩展类加载器（Extension）
		系统（应用）类加载器（System）AppClassLoader
	
	用户自定义的类加载器
	Java.lang.ClassLoader的子类
		用户可以定制类的加载方式
	


类加载器并不需要等到某个类被主动使用时再加载它

JVM规范允许类加载器再预料某个类将要被使用时就预先加载它，如果再预先加载的过程中遇到了.class文件缺失或者存在的错误，类加载器必须再程序首]]></description><category></category></item><item><title><![CDATA[使用Netty完成一个简单的聊天室服务器端和客户端]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124362493</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124362493</guid><author>aaa_aaa_aaa_aa</author><pubDate>Sat, 23 Apr 2022 13:00:17 +0800</pubDate><description><![CDATA[客户端


import java.io.BufferedReader;
import java.io.InputStreamReader;

import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEven]]></description><category></category></item><item><title><![CDATA[JVM类的初始化步骤]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124341616</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124341616</guid><author>aaa_aaa_aaa_aa</author><pubDate>Fri, 22 Apr 2022 11:34:56 +0800</pubDate><description><![CDATA[假如这个类还没有被加载和连接，那就先进行加载和连接
	假如类存在直接父类，并且这个父类还没有被初始化，那么就先初始化直接父类
	假如类中存在初始化语句，那就依次执行这些初始化语句
类加载的初始化赋值是按照代码声明的顺序进行


public class ClassLoadTest {

	/**
	 * 当调用一个类的静态方法时触发对这个类进行初始化
	 * @param args
	 */
	public static void main(String[] args) {
		Singleton sing]]></description><category></category></item><item><title><![CDATA[JVM类加载器]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124325837</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124325837</guid><author>aaa_aaa_aaa_aa</author><pubDate>Thu, 21 Apr 2022 16:56:45 +0800</pubDate><description><![CDATA[类的加载指的是将类的.class文件中的二进制数据读取到内存中，将其放在运行时数据的方法区内，然后在内存中创建一个java.lang.Class对象（规范并说明Class对象位于在哪里，HotSpot虚拟机将其放在了方法去中）用来封装类在方法去内的数据结构。

在java代码中，类型的加载、连接与初始化的过程都是在程序运行期间完成的
	提供了更大的灵活性，增加了更多的可能性


一.类的五个阶段

加载：查找并加载类的二进制数据
	连接：
	验证：确保被加载类的正确性
		准备：为类的静态变量分配内存，并将]]></description><category></category></item><item><title><![CDATA[简单的protobuf序列化与反序列化的例子]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124300505</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124300505</guid><author>aaa_aaa_aaa_aa</author><pubDate>Wed, 20 Apr 2022 16:25:45 +0800</pubDate><description><![CDATA[protobuf是一个google提供的序列化与反序列化的项目

如果想使用protobuf，首先需要下载protobuf的编译器

下载地址：https://github.com/protocolbuffers/protobuf/releaseshttps://github.com/protocolbuffers/protobuf/releases

根据系统选择对应的protoc编译器下载完成后，需要在项目中声明一个*.proto的文件作为数据格式的声明文件

新建：Student.proto


s.]]></description><category></category></item><item><title><![CDATA[java使用Redisson解决缓存穿透、缓存击穿、缓存雪崩]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124212406</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124212406</guid><author>aaa_aaa_aaa_aa</author><pubDate>Sat, 16 Apr 2022 13:40:59 +0800</pubDate><description><![CDATA[Redisson是架设在Redis基础上的一个Java驻内存数据网格（In-Memory Data Grid）。

Redisson在基于NIO的Netty框架上，充分的利用了Redis键值数据库提供的一系列优势，在Java实用工具包中常用接口的基础上，为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力，大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务，更进一步简化了分布式环境中程序相互之间的协作。

在]]></description><category></category></item><item><title><![CDATA[list并行流parallel的使用，Collectors进行分组分区，自定义Collector的使用方式]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124182306</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124182306</guid><author>aaa_aaa_aaa_aa</author><pubDate>Thu, 14 Apr 2022 21:31:20 +0800</pubDate><description><![CDATA[list并行流parallel的使用，Collectors进行分组分区


	public static void main(String[] args) {
		Student s1 = new Student("zhangsna",90);
		Student s2 = new Student("wang",45);
		Student s3 = new Student("zhaosl",50);
		Student s4 = new Student("zhaosl",50);
		Student s5]]></description><category></category></item><item><title><![CDATA[java8 使用方法引用（::）的四种方式]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124169476</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124169476</guid><author>aaa_aaa_aaa_aa</author><pubDate>Thu, 14 Apr 2022 13:10:56 +0800</pubDate><description><![CDATA[在java8中提供了方法引用的方式，简化了lambda表达式写法，方法引用本质上是lambda表达式的语法糖 并没有提供新的功能和特性，写法为两个冒号 "::"



import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.BiFunction;

public class MethodReferenceTest {

	public static void]]></description><category></category></item><item><title><![CDATA[Java8使用list.stream操作元素的基本方法]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124168900</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124168900</guid><author>aaa_aaa_aaa_aa</author><pubDate>Thu, 14 Apr 2022 12:39:45 +0800</pubDate><description><![CDATA[jdk8引入Stream流的概念 流中包含 源、中间过程、终止操作，当流声明源和中间过程时代码并不会执行，只有执行终止操作时才会执行


	public static void main(String[] args) {

		//jdk8引入Stream流的概念 流中包含 源、中间过程、终止操作，当流声明源和中间过程时代码并不会执行，只有执行终止操作时才会执行
		//新建一个stream
		Stream stream1 = Stream.of("hello","world","hello world"]]></description><category></category></item><item><title><![CDATA[JDK8提供的基础函数接口Supplier，Function，BiFunction，BinaryOperator，Consumer，Predicate，Optional的使用方法]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124140513</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124140513</guid><author>aaa_aaa_aaa_aa</author><pubDate>Wed, 13 Apr 2022 09:32:51 +0800</pubDate><description><![CDATA[Supplier&lt;T&gt;为函数式接口 不接受参数返回一个值


public class SupplierTest {

	public static void main(String[] args) {
		
		SupplierTest test = new SupplierTest();
		
		Person person = new Person("zhangshan","1");
		
		//以下等价
		//1.
		Supplier&lt;Person&gt; supplier ]]></description><category></category></item><item><title><![CDATA[JDK8使用java.time包简化开发者处理时间类型的数据常用方法]]></title><link>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124131003</link><guid>https://blog.youkuaiyun.com/aaa_aaa_aaa_aa/article/details/124131003</guid><author>aaa_aaa_aaa_aa</author><pubDate>Tue, 12 Apr 2022 20:18:09 +0800</pubDate><description><![CDATA[JDK8发布之前日期处理方式，如下


		//java8之前日期解决方案
		//SimpleDateFormat为线程不安全
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(sdf.format(new Date()));
		String dateStr = "2022-04-12 19:18:06";
		Date date;
		try {
			date = sd]]></description><category></category></item></channel></rss>