![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
Ray丿雷
这个作者很懒,什么都没留下…
展开
-
JDK1.8 Base64解密BUG
Oracle JDK 1.8 Base64解密失败问题偶然发现使用jdk8内置的Base64解码器进行解析的时候,会抛出java.lang.IllegalArgumentException: Illegal base64 character a异常。这非常奇怪,因为原文是使用jdk7里面的编码器进行编码的,理论上不至于发生这种不兼容的状况。解决说明:jdk1.8的Base64不支持换行字符,源码注释如下/** * This class consists exclusively.原创 2021-03-04 11:59:04 · 425 阅读 · 3 评论 -
Java的三种代理实现
Java代理1.静态代理静态代理在开发时需要定义接口或者父类,被代理对象与代理对象一起去实现相同的接口或者是继承相同父类。即程序运行之前,被代理者和代理者的.class文件就已经生成了。1.1简单实现写一个简单例子,班级中需要交班费,班长收齐代理同学老师,这时候班长就是学生的代理。//创建一个Person接口public interface Person { /** * @param * @description 收班费 * @author gml原创 2020-10-21 15:00:34 · 432 阅读 · 0 评论 -
注解的使用
注解的使用1、说明注解是一种元数据形式。即注解是属于java的一种数据类型,和类、接口、数组、枚举类似注解是用来修饰类、方法、变量、参数、包注解不会对所修饰的代码产生直接的影响2、使用范围为编译器提供信息——注解能被编译器检测到错误或抑制警告编译时和部署时的处理——软件工具能处理注解信息从而生成代码、XML文件等运行时处理——有些注解在运行时能被检测到3、如何自定义注解 注解其实就是一种标记,可以在程序代码中的关键节点(类、方法、变量、参数、包)上打上这些标记,然后程序在编译时原创 2020-10-16 11:08:39 · 383 阅读 · 0 评论 -
Spring源码下载并导入Idea
1.首先需要下载源码码云地址:https://gitee.com/mirrors/Spring-Framework.git 很快 推荐GitHub地址:https://github.com/spring-projects/spring-framework.git不推荐然后打开idea,下载源码2.下载并配置gradle环境下载地址:https://services...原创 2020-03-13 14:07:19 · 1486 阅读 · 0 评论 -
深入分布式缓存从原理到实战之无处不在的缓存
缓存分类一.按照所处位置来分:客户端缓存 服务端缓存 网络中缓存二.按照规模和部署方式来分:单体缓存 缓存集群 分布式缓存可见,在软件系统中缓存几乎无处不在!为什么去使用缓存一:提高用户体验二:提升系统性能(响应时间、延迟时间、吞吐量、并发用户数和资源利用率等..)这几个方面。通过缓存机制来减少数据库连接资源的竞争和对数据库读的压力,那么就可以...原创 2020-01-09 11:03:57 · 147 阅读 · 0 评论 -
http1.0 、http1.1和http2.0的区别
http1.0 、http1.1和http2.0的区别一、HTTP1.0 HTTP 1.1主要区别 1.1 长链接 HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。 HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都...原创 2020-01-09 10:57:55 · 139 阅读 · 0 评论 -
Bloom Filter布隆过滤器
Bloom Filter布隆过滤器算法背景 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘,要么是内存。很多时候要么是以时间换空间,要么是以空间换时间。 在响应时间要求比较严格的情况下,如果我们存在内里,那么随着集合中元素的增加,我们需要的...原创 2020-01-09 10:49:08 · 140 阅读 · 0 评论 -
Java中final、finally和finalize的区别
Java中final、finally和finalize的区别1,关键字解读1.1 finalfinal:修饰符,用于修饰属性、方法和类。修饰属性:表示属性是不可变的,是一个常量。修饰方法:表示方法不可被重写(覆盖)。修饰类:表示类没有后代,也就是常说的太监类,不可以被继承。1.2 finallyfinally:是异常处理的一部分,finally中的代码无论发生异常与否,都必须会执行...原创 2020-01-09 10:45:34 · 136 阅读 · 0 评论 -
单例设计模式源码分析
单例模式确保某各类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能,每台计算机可以有若干个打印机,但只能有一个Printer spooler,以避免两个打印作业同时输出到打印机中,每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态原创 2020-01-09 10:41:14 · 267 阅读 · 0 评论 -
SpringBoot全局处理统一返回类型
在日常开发中,我们会定义各种各样的返回类型,不便于后期维护,也不便于前台进行数据处理;有些项目会封装一个统一的返回类型,让开发人员用这个封装类返回,但是随着项目人员的变更,如果没有统一的要求规范,后期也会变得不可控,而且代码的耦合度也太高。 基于此场景,我们封装了一个统一返回类型(响应状态、返回数据等),并设置全局统一处理。 接口调用返回如下所示:...原创 2019-12-02 11:48:52 · 5941 阅读 · 10 评论