
Java技术
文章平均质量分 93
Java技术的个人总结记录。
攻城狮Chova
一位有自我修养的攻城狮。
2006年《时代》周刊年度人物,
2008年感动中国组委会特别奖获得者。
展开
-
线程详解之线程池ThreadPoolExecutor
ThreadPoolExecutor基本概念ThreadPoolExecutorThreadPoolExecutor构造方法corePoolSizemaximumPoolSizekeepAliveTimeunitworkQueuethreadFactoryhandlerThreadPoolExecutor重要方法execute()submit()shutdown()shutdownNow()ThreadPoolExecutor工作原理线程池状态基本概念一个ExecutorService执行每一个提交的原创 2022-05-04 19:59:29 · 1235 阅读 · 1 评论 -
Java中类加载器的分析与理解
Java中的类加载器类的加载过程装载链接初始化假如类中有这样的语句: **private static int a = 10 ,** 该语句的执行过程如下:类的加载过程JVM中的类加载过程分为三步:装载: Load链接: Link初始化: Initialize装载查找并加载类的二进制数据链接验证: 确保加载类的正确性准备: 为类的静态变量分配内存,将将这些静态变...原创 2020-01-16 16:47:07 · 718 阅读 · 0 评论 -
Java中的全局异常处理
SpringBoot中的全局异常处理全局异常处理SpringBoot的全局异常处理@ControllerAdvice注解全局异常处理ErrorController接口和 @ControllerAdvice注解比较:相同点:两者都是Spring项目中的全局异常处理方式不同点:捕获异常位置不同:ErrorController接口捕获全局所有的异常,包括控制器方法中抛出的异常@ControllerAdvice注解只能捕获控制器方法中抛出的异常 .@Controller注解无法捕获Fi原创 2021-11-30 08:06:58 · 1535 阅读 · 0 评论 -
Java中的参数校验
Java中的参数校验参数校验规则需要进行参数校验不需要进行参数校验SpringBoot的参数验证Validation自定义参数验证注解参数校验规则需要进行参数校验对外提供的开放接口. 无论是RPC,API还是HTTP接口敏感权限入口需要极高稳定性和可用性的方法调用频次低的方法执行开销很大的方法:参数校验的时间可以忽略不计如果因为参数错误会导致中间执行被退回或者错误时代价很大不需要进行参数校验可能被循环调用的方法不需要进行参数校验,但是需要在方法说明中注明外部参数的检查要求原创 2021-11-29 14:18:53 · 2493 阅读 · 0 评论 -
Java中的Optional类
Optional工具类基本概念Optional类的使用Optioanl对象创建ofofNullableemptyOptional常用方法isPresentgetorElseorElseGet基本概念Optional类:Optional是一个可以为null的容器对象.可以保存指定类型的值,也可以只保存null. 要么有值,要么为nullOptional中提供很多方法来避免显式的进行空值检查.如果值存在则调用isPresent() 方法会返回true, 调用get() 方法就会返回这个对象Opti原创 2021-11-22 10:23:53 · 8346 阅读 · 2 评论 -
Java中的并发计数器LongAdder
并发计数器LongAdder基本概念基本概念原创 2021-08-04 16:50:02 · 735 阅读 · 0 评论 -
Java中HashMap详解
HashMap的扩容原创 2021-07-29 14:41:03 · 5390 阅读 · 1 评论 -
Java中的移位运算
Java中的移位运算<<>>>>>移位运算结果<<<<: 左移运算,左移几位就补几个0>>>>: 右移运算,为算术右移如果数字为正数时,移位后在前面补0如果数字为负数时,移位后在前面补1>>>>>>: 无符号右移,为逻辑右移.忽略符号,空位补...原创 2020-04-15 16:24:46 · 481 阅读 · 0 评论 -
Java中的序列化和反序列化
Java中的序列化和反序列化基本概念基本概念Java中创建对象时,一旦程序终止,创建的对象可能就不存在.要想使得对象能够在程序不运行的状态下依然能够保存对象的信息,这时就需要用到序列化机制序列化机制:一个对象可以被表示为一个字节序列,包括:对象的数据对象的类型信息存储在对象中的数据类型将可序列化对象写入文件后,可以从文件中读取出来,根据对象的各种信息在内存中创建该对象. 这里的读取并创建对象的过程就是反序列化序列化和反序列化的整个过程都是JVM独立的.也就是说,在一个JVM中的序原创 2021-07-14 15:56:46 · 227 阅读 · 0 评论 -
Java中的并发编程Executor
并发编程中的Executor基本概念ExecutorExecutorServiceExecutors基本概念Executor框架:Java 1.5之后引入的,位于java.util.concurrent包内部使用了线程池的机制,可以控制线程的启动,执行和关闭,简化并发线程的操作Executor特点:Executor来启动线程比Thread中的start() 方法启动线程更加易于管理,效率更高,节约开销有助于避免this逃逸问题: 如果在构造器中启动一个线程,因为另一个任务可能会在构造原创 2021-07-01 16:29:42 · 415 阅读 · 0 评论 -
Java中的线程本地变量ThreadLocal
线程本地变量ThreadLocal基本概念基本概念在处理多线程中最常用的方法就是使用锁,通过锁来控制多个不同的线程对临界区的访问,但是锁会在并发冲突时对性能造成影响,这是可以使用线程本地变量ThreadLocal避免锁竞争导致的并发冲突...原创 2021-06-16 09:24:33 · 725 阅读 · 0 评论 -
Java中的MySQL函数的使用
MySQL中函数的使用基本概念字符串函数char_length()length()基本概念MySQL数据库中包含以下七类函数:字符串函数条件函数数学函数日期时间函数格式化函数系统信息函数加密函数字符串函数字符串函数用于处理MySQL中的字符串数据char_length()返回字符串中字符的个数select char_length('Chova')5length()返回字符串的长度...原创 2021-04-06 09:18:45 · 1295 阅读 · 0 评论 -
Java中的正则表达式
Java中的正则表达式正则表达式语法\^$*+?{n}{n,}{n, m}正则表达式语法\将下一个字符标记为:一个特殊字符一个原义字符(12个) : ^, $, (, ), *, +, ?, ., [, , {, |一个向后引用一个八进制转义符示例:\n - 换行符\ \ - \\ ( - (^匹配输入字符串的开始位置如果设置RegExp对象的Multiline属性 , ^ 也匹配 \n 或 \r 之后的位置$匹配输入字符串的结束位置如果设置RegEx原创 2021-02-05 14:49:37 · 638 阅读 · 0 评论 -
Java定时框架Quartz
定时框架Quartz原创 2021-01-21 14:51:08 · 478 阅读 · 0 评论 -
Java线程池之Callable接口
Java中的线程池原创 2020-12-15 10:36:12 · 506 阅读 · 0 评论 -
Java中基本的嵌套类详细解析
Java中的嵌套类基本概念静态成员类非静态成员类静态成员类和非静态成员类比较局部内部类匿名内部类继承式匿名内部类接口式匿名内部类参数式匿名内部类基本概念嵌套类 : nested classes, 在一个类的内部定义另一个类嵌套类有四种:静态成员类成员内部类局部内部类匿名内部类其中,成员内部类,方法内部类和匿名内部类都是非静态嵌套类嵌套类的特点:嵌套类可以访问外部类的所有数据成员和方法,包括私有成员和方法提高程序的可读性和维护性:因为如果一个类只对另一个类可用,那么将这两个原创 2020-10-16 16:11:54 · 863 阅读 · 0 评论 -
Session,Cookie以及Token之间的区别和联系
Session,Cookie以及Token之间的区别和联系HTTP协议基本概念CookieCookie产生过程HTTP协议基本概念访问网页使用的都是HTTP协议,而HTTP协议的每一次访问都是无状态的HTTP协议访问无状态:每一次请求都是没有关联的优点: 快速缺点: 无法将两次请求关联起来为了关联两次请求,使得Web服务器记住关联关系,就出现了CookieCookieCookie是Web服务器产生的,保存在客户端Cookie容易被劫持,是不安全的数据Cookie产生过程原创 2020-10-06 09:47:43 · 535 阅读 · 0 评论 -
Java中使用BigDecimal进行精确运算
使用BigDecimal进行精确运算问题BigDecimal类构建BigDecimal对象BigDecimal计算问题代码示例:public class BigDecimalTest { public static void main(String[] args) { System.out.println(0.06 + 0.01); System.out.println(1.0 - 0.42); System.out.println(4.015 * 100); System.ou原创 2020-08-13 12:37:40 · 453 阅读 · 0 评论 -
Java中的SQL语句基本介绍
Java中的SQL语句SQL基础创建数据库删除数据库备份数据库分离数据库附加数据库修改数据库名称创建新表根据已有的表创建新表删除新表增加一个列添加主键删除主键创建索引删除索引创建视图删除视图基本SQL操作查找选择插入修改删除排序总数求和平均最大最小SQL高级查询UNION运算符EXCEPT运算符INTERSECT运算符LEFT JOINRIGHT JOINFULL JOINGROUP BYSQL提升复制表拷贝表跨数据库之间表的拷贝子查询显示文章,提交人和最后回复时间连接查询视图查询BETWEENINEXIS原创 2020-08-02 09:01:14 · 2090 阅读 · 0 评论 -
Java 8中的Stream基本介绍
Java 8中的StreamStream基本概念生成流forEachmapfilterStream基本概念Stream流是来自数据源的元素队列并支持聚合操作:元素: 是特定类型的对象,是数据源形成的一个队列.Java中的Stream不会存储元素,而是按需计算数据源: Stream流数据的来源.可以是集合,数组,I/O Channel,产生器Generator等聚合操作: 类似SQL语句的一系列操作,比如filter,map,reduce,match和sorted等Stream操作的两个基原创 2020-07-24 13:11:26 · 739 阅读 · 0 评论 -
Java 8中的Lambda表达式详细介绍
Java 8中的Lambda表达式Lambda表达式变量作用域使用示例注意点Lambda表达式Lambda中允许将一个函数作为方法的参数,即函数作为参数传递进方法中使用Lambda表达式可以使代码更加简洁变量作用域Lambda表达式只能引用标记了final的外层局部变量.即不能在Lambda表达式内部修改定义在作用域外的局部变量,否则会导致报错Lambda表达式中可以直接访问外层...原创 2020-07-23 16:20:11 · 2009 阅读 · 0 评论 -
Java中的原子变量之AtomicInteger
AtomicIntegerAtomicInteger基本概念Integer与AtomicInteger的比较AtomicInteger源码AtomicInteger基本概念AtomicInteger:是一个提供原子操作的Integer类通过线程安全的方式操作加减AtomicInteger使用场景: AtomicInteger提供原子操作来进行Integer的使用,适合高并发的场景Integer与AtomicInteger的比较在使用Integer的时候,必须加上synchroniz原创 2020-06-30 13:00:24 · 580 阅读 · 0 评论 -
Java中的输入和输出流
Java中的IO流归纳总结Java IO流基本概念Java IO流结构Java IO流分类字节流和字符流输入流和输出流Java IO流对象输入字节流 - InputStreamJava IO流基本概念流的基本概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象数据在设备间的传输称为流流的本质是数据传输:根据数据传输的特性将流抽象为各种类,方便更直观地进行数据操作Java IO流结构Java中的IO流结构:Java中的常用的IO流操作相关的类:原创 2020-06-29 12:25:05 · 437 阅读 · 0 评论 -
Java中重写equals()和hashCode()方法
重写equals和hashCode基本概念Object源码基本概念Object源码原创 2020-06-12 13:10:31 · 355 阅读 · 0 评论 -
重构if - else语句
对if - else语句代码进行重构优化switchinterfacedb setting总结switchif - else只适合在3层之内使用当条件判断较多时,可以首先考虑使用switchinterface当判断条件还可能动态增加时,可以考虑将switch进一步优化,引入接口interface,将代码与数据分离:创建一个map:key: switch的case值value: 对应的实体类抽象出通用方法,变成一个接口,统一入参和返回值主实现类controller类就是将ty原创 2020-05-23 20:48:32 · 412 阅读 · 0 评论 -
Java中的注解@Xxx
Java中的注解@Target**ElementType取值的类型:**@Target作用: 指明了修饰的这个注解的使用范围, 即被描述的注解可以用在哪里@Target(ElementType.Type)ElementType取值的类型:...原创 2019-12-24 21:31:37 · 1898 阅读 · 0 评论