- 博客(31)
- 收藏
- 关注
原创 java程序中不用switch的打工人不是好程序员
呸,标题党简单使用 switch的case语句可以处理int,short,byte,char类型的值,枚举类型(JDK1.5支持)String(JDK1.7支持),但是不能处理long、Double,等类型,因为short,byte,char都会转换成int进行处理,这一点也可以从生成的字节码看出。 @Test public void test05(){ int i=0; switch (i){ case 0:
2020-12-10 19:20:20
1121
2
原创 过滤器、拦截器、切面之间的比较
过滤器、拦截器、切面之间的比较一、过滤器(Filter)实现原理过滤器是基于函数回调来实现使用场景过滤url级别权限、过滤敏感词、设置字符编码等具体使用实现javax.servlet.Filter接口,重写init()、doFilter()、destroy()方法具体解释在代码注释中/** * @author lqh * @date 2020/12/3 */@Component@WebFilter(urlPatterns = "/**" , f
2020-12-04 14:22:24
1379
原创 SpringBoot源码~揭秘异常处理过程BasicErrorController
揭秘异常处理过程BasicErrorController 话不多说直接上图 根据上面两张图片,我们提出两个问题为什么请求地址/error和/error1返回的状态码和消息种类不同呢?为什么在浏览器发送请求和postman发送的请求返回消息格式不同呢? 继续上图为什么在Templates中有error.html页面自动跳转?为什么在Templates中有error/404.html会自动跳转?答案在BasicErrorController类中 BasicErrorCon
2020-11-27 20:45:04
2126
原创 SpringBoot项目中使用Redis+注解+拦截器实现接口幂等性校验
一、概念1. 幂等性定义 幂等性原本是数学上的概念,公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。举个简单例子来说,就是我们在添加一个学生信息的时候,由于某种原因(网络抖动之类),导致发送多次请求,只能保存一次提交的信息。2. 幂等性需注意的问题幂等性的实质是一次或多次请求同一个资源,其结果是相同的。其关注的是对资源产生的影响(副作用)而不是结果,结果可以不同网络超时、服务宕机等问题,不是
2020-09-25 20:28:03
847
1
原创 java优雅的处理程序中的异常
java优雅的处理程序中的异常一、自定义异常类(1)继承 Exception 或 RuntimeException(2)定义构造方法/** * @author lqh * @date 2020/9/22 * 业务逻辑异常 */public class ServiceException extends RuntimeException{ private String code; private String msg; public ServiceException
2020-09-23 13:19:57
1542
2
原创 Apache POI Excel 速度相关
Apache POI Excel速度POI基本概念 1. POI针对目前存在的两种版本的Excel有不同的实现方式.而对于相同版本的Excel又分为Dom解析和Sax解析两种.而这两种在内存使用,性能各方面均有不同.usermodel,它是基于DOM的文档驱动,读写都支持,基于内存的,总之就是很垃圾SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的
2020-09-10 10:08:13
2198
原创 SpringBoot项目中使用WebSocket实现服务端推送消息
SpringBoot项目中使用WebSocket实现服务端推送消息 之前了解过使用webSocket实现服务端消息推送,一直没有真正实践过,上周公司有一个后端新消息推送的业务需要处理,立即想到使用WebSocke做,由于项目大体结构采用SpringBoot+SpringSecurity+solr做的,看到网上有好多相关的示例不能满足需要,自己总结一波,关于webSocket的基本了解,请自行百度,本文重点贴出如何使用,以及业务处理。一、使用场景数据流状态: 比如说上传下载文件,文件进度,文件是
2020-09-08 15:53:48
1216
原创 集合顶层接口Collection和Map以及相关数据结构
Collection和Map以及相关数据结构工欲善其事,必先利其器。本片内容讲述java中的Collection和Map所用到的数据结构以及相关结构。数据结构顺序存储结构(用一段地址连续的存储单元一次存储线性表的数据元素) 数组:相同数据类型的元素按一定顺序排列的集合。 特点: 1.数组的内存是连续的,想要访问那个元素直接从数组的首地址向后偏移就可以访问到 2.数组插入和删除数据效率低,如果在头部删除,插入,时间复杂度是O(n):
2020-08-04 13:25:04
940
1
原创 Calendar类日常使用
Calendar简介Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。Java官方推荐使用Calendar来替换Date的使用Calendar类的实例 该类是一个被abstract修饰的抽象类,且构造方法被protected修饰,因此不能直接通过new创建对象,而是通过静态方法创建,返回一个Calendar对象(该对象为Calendar的子类对象)
2020-07-27 18:11:21
690
原创 ConcurrentModificationException异常之iterator和Iterable
##ConcurrentModificationException异常之iterator和Iterable本文将介绍iterator和Iterable的联系,以及由迭代器遍历对集合操作产生的问题 首先有必要说一下的是for-each也叫增强for循环(JDK1.5提出的),for-each其实是for循环的一个特殊简化版,专门用来操作数组和集合,其内部原理其实是迭代器。一、异常下面我们来看两个抛出异常的例子 Map<Integer,String> map=new
2020-07-20 10:44:23
722
原创 遍历HashMap的6种方式,不信你全都了解
遍历HashMap 本文将介绍遍历HashMap的六种方式,jdk版本1.8。HashMap的使用频率在所有map中确实属于比较高的。因为它可以满足我们大多数的场景了。 首先,介绍几个本文中所涉及到的属性values():方法是获取集合中的所有的值----没有键,没有对应关系,KeySet():将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。entrySet():Set<Map.Entry<
2020-07-17 17:37:23
703
原创 阿里开发手册:使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查
使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查一、问题来源自阿里开发手册 出现此问题肯定与String的split方法有关,首先介绍下String的split方法的使用二、正则表达式用法单正则表达式构造方法 public String[] split(String regex) { return split(regex, 0); } 该方法就是给定的表达式和限制参数0来调用两参数split方法。
2020-07-16 20:11:44
2000
原创 UnsupportedOperationException之数组和List集合之间的转换
UnsupportedOperationException之数组和List集合之间的转换
2020-07-09 11:11:50
958
原创 集合排序涉及到的接口Comparable and Comparator
Comparable and Comparator一、Comparable1. API解释(源码翻译神器电梯直达) 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。 对于类 C 的每一个 e1 和 e2 来说,当且仅当 e1
2020-06-24 13:59:17
778
原创 java-IO基本知识点
IO 本节内容在我们开发需求中十分常见,我个人认为理解java IO知识点的重中之重在于理解java.io包下每一种流之间存在的关系。下面我将关系图、基本操作放出(自己敲一遍,且找一下各类存在的关系有助于加深印象)。一、字节流 1.关系图 2.使用代码package com.example.io;import org.junit.jupiter.api.Test;import java.io.*;/** * @author lqh * @date 2020/6/10 */pu
2020-06-11 11:35:51
763
原创 复习使用~File操作
File操作 /** * 通过“user.dir”获取jvm的当前工作目录 */ String workingDir=System.getProperty("user.dir"); System.out.println(workingDir); /** * 使用System.setProperty可以更改当前工作目路 */ System.setPropert
2020-06-10 16:55:57
702
原创 复习使用~java泛型
java泛型 package com.example.generic;import org.junit.jupiter.api.Test;import java.util.ArrayList;import java.util.List;/** * @author lqh * @date 2020/6/9 */public class GenericMethodTest { @Test public void testGenericWildcard(){
2020-06-09 19:58:19
606
原创 复习使用~java枚举类的使用(接口,自定义,enum,map)
今天复习枚举类时,印象不是很深刻,通过查找资料,重新整理了一下枚举类具体的使用。由于懒的原因(就像java中的语法糖的出现),直接上传代码,注释直接放在代码中,不再进行排版,谅解。枚举类 枚举值的定义package com.example.enumpackage;/** * @author lqh * @date 2020/6/9 */public class EnumCreateTest { /** * 枚举类 * 类的对象只有有限个,确定.
2020-06-09 15:14:31
959
转载 后端所有知识点
https://blog.youkuaiyun.com/qq_35190492/article/details/105992063
2020-06-09 10:42:53
756
原创 复习使用:抽象类、接口、jdk1.8新增静态方法和默认方法
抽象类、接口、jdk1.8新增静态方法和默认方法抽象类package com.example.abstractandinterface;public abstract class Employee { private int id; private String name; private int age; public Employee(int id,String name,int age){ this.id=id; this.nam
2020-06-08 17:53:03
1333
原创 浅谈java中的内部类
内部类一、什么是内部类?在java中允许在类的内部再定义一个类,这个定义在类内部的类称之为内部类,包含内部类的类称之为外部类。java中的内部类只是java编译器的概念,对于java的虚拟机而言,它是没有java内部类的概念的,也就是说java中的内部类最后也会被编译成一个独立的class文件。二、为什么使用内部类? 在《Think in java》一书中提到 —— 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内
2020-06-08 15:56:35
152
转载 看完让你彻底搞懂Websocket原理
好文,转到我博客里,分享一下。一、websocket与httpWebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有 1.1 和 1.0 之说,也就是所谓的 keep-alive ,把多个HTTP请求合并为一个,但是 Websocket 其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解有交集,但是并不
2020-06-04 14:46:14
176
原创 java中各代码块执行的顺序
代码块的执行顺序 在java中,类是按需加载的,只有当用到这个类时,JVM才会加载这个类,并且只会加载一次。1.概念根据其声明的位置分为:静态代码块:由static修饰的代码块,对象实例化时只执行一次构造代码块:对象实例化一次就执行一次构造方法:这个应该都知道吧。。。另外还有两类代码块,局部代码块和同步代码块,和本题目无关,暂不说明。2.执行顺序public class Buildingblocks { public Buildingblocks(){ S
2020-05-28 18:19:04
143
原创 包装类(Integer、Long...)中的数据缓冲
面试时经常被问到Integer i=127和Integer j=127的区别? java 1.5 的自动装箱拆箱机制是编译特性还是虚拟机运行时特性?分别是怎么实现的? 本文章以Integer为例说明java包装类缓存池的问题(摘自JDK1.8源码)1. 打印输出Integer(有) Integer a=1; Integer b=1; Integer a1=new Integer(1); Integer b1=In..
2020-05-15 17:45:05
348
原创 Java源码阅读神器之Translation翻译插件
Translation插件主要是用来翻译工作的,我们学习源码时,遇到注释有不认识的单词时需粘贴到某某翻译查看,使用此插件在当前界面通过快捷键或鼠标右击的方式即可完成翻译工作中。
2020-05-13 23:14:54
6952
2
原创 java源码分析~浅谈String源码
String源码学习 本篇文章讨论String的源码,所有涉及到的源代码都是基于JDK1.8。 对于java程序员来说,String类再熟悉不过了,面试中也经常会被问到。但是,会用不是目的,我们要了解它其中的奥妙(设计思想),以方便在技术上有进一步的提高。String设计中的享元模式一、实现接口public final class String implements java.io.Serializable, Comparable<String>, CharSequ
2020-05-12 15:46:58
350
1
原创 java源码分析~一文看懂java数组复制(原始方法,Arrays.copyOf(),System.arraycopy(),Object.clone(),遍历)
Arrays.copyOf()、System.arraycopy()本文是基于jdk1.8源码分析Arrays.copyOf() /*此方法是一个静态方法,所以可以通过Arrays类名直接调用 *数组拷贝时先创建一个的数组,再调用System.arraycopy()方法。 *参数解析:original:要复制的数组;newLength:返回副本的长度若该值比要复制的数组original的长度更大,则将多余的结果设置为0或false */ public static in
2020-05-12 10:56:48
296
原创 java源码分析~String,StringBuilder(jdk1.5)以及StringBuffer(jdk1.0)这三个类之间有什么区别?
String,StringBuilder(jdk1.5)以及StringBuffer(jdk1.0)这三个类之间有什么区别?共同点:都实现了描述字符串结构的接口可读可写字符串 CharSequence [ length(),chartAt(int index),subSequence(int start,int end)]都实现了Serializable接口类都被final修饰String继承自Object类StringBuilder和StringBuffer继承自AbstractS
2020-05-12 10:12:49
294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人