自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 Gitlab安装与部署(Linux)

搭建需要安装下载gitlabCE社区版2.配置Postfix以发送邮件3.配置极狐GitLab软件源镜像。4.执行如下命令开始安装。

2022-07-26 15:39:43 707

原创 下载Chrome历史版本

访问地址。

2022-07-26 10:18:08 944

原创 Git的命令与使用

git基本命令,git使用最佳实践模型,git submodule,git subtree,git rebase

2022-07-25 10:17:37 326

原创 JAVA动态代理实例

1.被动态代理类需要实现一个接口2.创建被动态代理类3.创建动态代理类4.使用动态代理5.控制台打印效果

2022-06-02 10:14:25 308

原创 线程上下文类加载器

当前类加载器(Current Classloader)每一个类都会使用自己的类加载器(即加载自身的类加载器)来去加载其他类(指的是所依赖的类)如果ClassX引用了ClassY,那么ClassX的类加载器就会去加载ClassY(前提是ClassY尚未被加载)线程上下文类加载器(Context Classloader)线程上下文类加载器是由jdk1.2引入的,类Thread中的getContextClassLoader()与setContextClassLoader(ClassLoader c

2022-04-28 14:55:38 2510

原创 类加载器与双亲委托模型

有两种类型的类加载器Java虚拟机自带的加载器 根类加载器(Bootstrap) 扩展类加载器(Extension) 系统(应用)类加载器(System)AppClassLoader 用户自定义的类加载器 Java.lang.ClassLoader的子类 用户可以定制类的加载方式 类加载器并不需要等到某个类被主动使用时再加载它JVM规范允许类加载器再预料某个类将要被使用时就预先加载它,如果再预先加载的过程中遇到了.class文件缺失或者存在的错误,类加载器必须再程序首

2022-04-28 14:49:35 97

原创 使用Netty完成一个简单的聊天室服务器端和客户端

客户端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

2022-04-23 13:00:17 168

原创 JVM类的初始化步骤

假如这个类还没有被加载和连接,那就先进行加载和连接 假如类存在直接父类,并且这个父类还没有被初始化,那么就先初始化直接父类 假如类中存在初始化语句,那就依次执行这些初始化语句类加载的初始化赋值是按照代码声明的顺序进行public class ClassLoadTest { /** * 当调用一个类的静态方法时触发对这个类进行初始化 * @param args */ public static void main(String[] args) { Singleton sing

2022-04-22 11:34:56 445

原创 JVM类加载器

类的加载指的是将类的.class文件中的二进制数据读取到内存中,将其放在运行时数据的方法区内,然后在内存中创建一个java.lang.Class对象(规范并说明Class对象位于在哪里,HotSpot虚拟机将其放在了方法去中)用来封装类在方法去内的数据结构。在java代码中,类型的加载、连接与初始化的过程都是在程序运行期间完成的 提供了更大的灵活性,增加了更多的可能性一.类的五个阶段加载:查找并加载类的二进制数据 连接: 验证:确保被加载类的正确性 准备:为类的静态变量分配内存,并将

2022-04-21 16:56:45 91

原创 简单的protobuf序列化与反序列化的例子

protobuf是一个google提供的序列化与反序列化的项目如果想使用protobuf,首先需要下载protobuf的编译器下载地址:https://github.com/protocolbuffers/protobuf/releaseshttps://github.com/protocolbuffers/protobuf/releases根据系统选择对应的protoc编译器下载完成后,需要在项目中声明一个*.proto的文件作为数据格式的声明文件新建:Student.protos.

2022-04-20 16:25:45 1850

原创 java使用Redisson解决缓存穿透、缓存击穿、缓存雪崩

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

2022-04-16 13:40:59 2613

原创 list并行流parallel的使用,Collectors进行分组分区,自定义Collector的使用方式

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

2022-04-14 21:31:20 1866

原创 java8 使用方法引用(::)的四种方式

在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

2022-04-14 13:10:56 3115 1

原创 Java8使用list.stream操作元素的基本方法

jdk8引入Stream流的概念 流中包含 源、中间过程、终止操作,当流声明源和中间过程时代码并不会执行,只有执行终止操作时才会执行 public static void main(String[] args) { //jdk8引入Stream流的概念 流中包含 源、中间过程、终止操作,当流声明源和中间过程时代码并不会执行,只有执行终止操作时才会执行 //新建一个stream Stream stream1 = Stream.of("hello","world","hello world"

2022-04-14 12:39:45 4300

原创 JDK8提供的基础函数接口Supplier,Function,BiFunction,BinaryOperator,Consumer,Predicate,Optional的使用方法

Supplier<T>为函数式接口 不接受参数返回一个值public class SupplierTest { public static void main(String[] args) { SupplierTest test = new SupplierTest(); Person person = new Person("zhangshan","1"); //以下等价 //1. Supplier<Person> supplier

2022-04-13 09:32:51 462

原创 JDK8使用java.time包简化开发者处理时间类型的数据常用方法

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

2022-04-12 20:18:09 282

Redis-x64-3.2.100安装版和解压包.zip

Redis-x64-3.2.100安装版和解压包 亲测可用。

2020-05-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除