Java知识点
rickiyang
这个作者很懒,什么都没留下…
展开
-
Java 中的Lambda表达式
Java 目前已经出到13的版本,但是国内大部分公司应该都停留在 Java 8 的版本(不敢承担升级带来的风险)。在Java8中给我们带来了 Lambda表达式和Stream流式操作,提供了函数式编程和简化批处理操作。可能大家日常使用很多,但是很少去关注Lambda 和 Stream实现。本篇就带着大家一起关注这两块知识,搬好小板凳我们一起看电视。什么是Lambda简单来说,编程中提到的 la...原创 2019-12-17 00:18:05 · 205 阅读 · 0 评论 -
Spring 中的事件机制
说到事件机制,可能脑海中最先浮现的就是日常使用的各种 listener,listener去监听事件源,如果被监听的事件有变化就会通知listener,从而针对变化做相应的动作。这些listener是怎么实现的呢?说listener之前,我们先从设计模式开始讲起。观察者模式观察者模式一般包含以下几个对象:Subject:被观察的对象。它提供一系列方法来增加和删除观察者对象,同时它定义了通知方...原创 2019-12-07 11:23:56 · 195 阅读 · 0 评论 -
Java SPI机制分析
SPI 全称为(Service Provider Interface),是 JDK 内置的一种服务发现机制。它可以动态的为某个接口寻找服务实现,有点类似 IOC(Inversion of Control)的思想,将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。使用 SPI 机制需要在 classpath 下的 META-INF/services/ 目录里创建一个以服务接口命名的文件,...原创 2019-09-15 11:27:52 · 147 阅读 · 0 评论 -
加解密算法分析
日常开发中,无论你是使用什么语言,都应该遇到过使用加解密的使用场景,比如接口数据需要加密传给前端保证数据传输的安全;HTTPS使用证书的方式首先进行非对称加密,将客户端的私匙传递给服务端,然后双方后面的通信都使用该私匙进行对称加密传输;使用MD5进行文件一致性校验,等等很多的场景都使用到了加解密技术。很多时候我们对于什么时候要使用什么样的加解密方式是很懵的。因为可用的加解密方案实在是太多,大家对...原创 2019-09-14 21:46:10 · 886 阅读 · 0 评论 -
Java类加载器和加载机制
类加载器负责在运行时将Java类动态加载到JVM(Java虚拟机)。此外,它们是JRE(Java运行时环境)的一部分。因此,由于类加载器,JVM不需要知道底层文件或文件系统以运行Java程序。此外,这些Java类不会同时加载到内存中,而是在应用程序需要时。这就是类加载器的用武之地,他们负责将类加载到内存中。1. 类加载器的层级结构让我们首先学习如何使用各种类加载器使用,一个简单示例加载不同的...原创 2019-09-10 13:26:08 · 247 阅读 · 0 评论 -
javaagent使用指南
今天打算写一下 Javaagent,一开始我对它的概念也比较陌生,后来在别人口中听到 字节码插桩,bTrace,Arthas后面才逐渐了解到Java还提供了这么个工具。JVM启动前静态InstrumentJavaagent 是什么?Javaagent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求:这个 jar 包的 MA...原创 2019-08-17 14:59:59 · 2727 阅读 · 0 评论 -
javassist使用全解析
Java 字节码以二进制的形式存储在 .class 文件中,每一个 .class 文件包含一个 Java 类或接口。Javaassist 就是一个用来 处理 Java 字节码的类库。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,并且不需要对字节码方面有深入的了解。同时也可以去生成一个新的类对象,通过完全手动的方式。1. 使用 Javassist 创建一个 class 文件首先...原创 2019-08-11 19:22:36 · 622 阅读 · 0 评论 -
Java中的魔法类-Unsafe
Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但是,这个类的作者不希望我们使用它,因为我们虽然我们获取到了对底层的控制权,但是也增大了风险,安全性正是Java相对于C++/C的优势。因为该类在sun.misc包下,默认是...原创 2019-08-11 14:12:36 · 331 阅读 · 0 评论 -
Caffeine Cache-高性能Java本地缓存组件
前面刚说到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。本篇博文主要介绍Caffine Cache 的使用方式,以及Caffi...原创 2019-06-15 19:26:17 · 2667 阅读 · 0 评论 -
Guava cache使用总结
缓存分为本地缓存和远端缓存。常见的远端缓存有Redis,MongoDB;本地缓存一般使用map的方式保存在本地内存中。一般我们在业务中操作缓存,都会操作缓存和数据源两部分。如:put数据时,先插入DB,再删除原来的缓存;ge数据时,先查缓存,命中则返回,没有命中时,需要查询DB,再把查询结果放入缓存中 。如果访问量大,我们还得兼顾本地缓存的线程安全问题。必要的时候也要考虑缓存的回收策略。今天说的...原创 2019-06-13 00:33:38 · 1755 阅读 · 0 评论