JAVA核心技术系列
pNull
这个作者很懒,什么都没留下…
展开
-
Java提供了哪些IO方式?
首先,需要理解一些基本概念:区分同步和异步: 简单来说,同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;而异步则相反,当其他任务不需要等待当前调用返回,通常依靠事件、回调等机制来实现任务间次序关系。区分阻塞和非阻塞: 在进行阻塞操作时,当前线程会处于阻塞状态,无法从事其他任务,只有当条件就绪才能继续,比如 ServerSocket 新连接建立完毕,或数据读取、写入操作完成;而非阻塞则是不管 IO操作是否结束,直接...原创 2020-11-30 19:01:41 · 1095 阅读 · 0 评论 -
谈谈你知道的设计模式?Spring 等框架中使用了哪些设计模式?
之前总结过关于单例设计模式的几种写法,参见:手把手教你写单例模式的几种写法本文旨在从面试的角度,尝试去回答标题提出的问题。原创 2020-08-06 11:42:36 · 152 阅读 · 0 评论 -
Exception和Error的比较&自定义全局异常处理
目录1理解 Throwable、Exception、Error 的设计和分类2 异常处理机制2.1 异常抛出 throws2.2 异常捕获 catch3 自定义全局异常处理(springBoot)本文主要想解释两个问题:1、对比Exception 和 Error2、运行时异常和一般的异常有什么区别?3、如何处理运行时异常?回答1:Exception 和 E...原创 2019-08-19 22:27:57 · 627 阅读 · 0 评论 -
抽丝剥茧 volatile 关键字
在之前的手把手教你写单例的文章中,我们了解到,DCL单例代码中,需要使用volatile 关键字来保证变量对所有线程可见,且禁止指令重排优化。关键字volatiale 可以说是Java 虚拟机提供的最轻量级的同步机制。说到同步机制,可能第一想到的是,在处理多线程数据竞争问题的时候,会使用synchronized来进行同步,很少去使用volatile。那什么场景下可以使用volatil...原创 2019-08-14 23:10:22 · 146 阅读 · 0 评论 -
浅谈 线程安全 和 java锁的分类及实现
目录1 线程安全1.1线程生命周期1.2解决共享资源竞争2 锁2.1 锁的分类2.2 悲观锁VS乐观锁2.2.1 概念介绍2.2.2版本号机制 modCount2.2.3CAS 算法2.3 可重入锁VS非可重入锁2.4 使用场景总结3 锁的实现原理3.1synchronized 底层实现原理3.2Monitor (监视器锁)3...原创 2019-08-12 17:03:56 · 239 阅读 · 0 评论 -
线程、多线程和线程池
1 创建多线程1.1 继承Thread 类1.2 实现Runnable 接口2Executor框架2.1 线程池的优点2.2Executors 提供四种线程池2.3 自定义线程池ThreadPoolExecutor2.4 线程池大小在文章线程安全和锁的分类中有讲过线程相关的基础概念,本文不再赘述。 ...原创 2019-08-21 22:51:04 · 214 阅读 · 0 评论 -
collection java集合框架&hashmap源码解析
前言1 接口和抽象类2 集合框架类图2.1 List:比较 ArrrayList、LinkedList2.2 Set:比较 TreeSet 、HashSet、LinkedHashSet2.3 Map:比较 Hashtable、HashMap、TreeMap3 HashMap 源码分析3.1 HashMap 内部结构3.2 来解释一下Node<k,v...原创 2019-08-22 23:09:52 · 204 阅读 · 0 评论 -
JVM 内存模型
目录1 JVM 内存模型2 OOM3 堆内部的结构4 Java 常见的垃圾收集器4.1 垃圾收集的算法有哪些? 如何判断一个对象是否可以回收?4.2 垃圾收集器工作的基本流程1 JVM 内存模型 程序计数器(PC,Program Counter Register):在JVM规范中,每个线程都有它...原创 2019-08-27 22:04:15 · 208 阅读 · 0 评论 -
一起探索ThreadLock吧
ThreadLocal是用来解决什么问题的? 如何使用ThreadLocal? ThreadLocal的实现原理是什么? 可否举几个实际项目中使用ThreadLocal的案例?1. ThreadLocal是用来解决什么问题的?ThreadLocal是线程局部变量,和普通变量的不同在于:每个线程持有这个变量的一个副本,可以独立修改(set方法)和访问(get方法)这个变量,并且线程之间不...原创 2019-09-21 19:01:18 · 878 阅读 · 0 评论 -
mvn 打包命令
打包到本地:target:cmd\mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true1.cd到需要打包项目的pom.xml文件下 运行:mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true代码意思代表:Clean 跳过测...原创 2017-06-21 00:19:16 · 4333 阅读 · 0 评论 -
手把手教你写单例模式的几种写法
目录0 什么是单例模式1 饿汉法2 懒汉法3 双重校验锁3.1 volatile关键字的作用及原理4 枚举法 (Effective Java推荐)5 总结本文旨在学习总结不同的单例模式写法,并做优缺点分析。0 什么是单例模式在《Design Patterns:Elements of Resuable Object-Oriented Software》中的定义...原创 2019-08-08 22:24:14 · 226 阅读 · 0 评论 -
Effective Java 学习笔记
【第一条】 考虑用静态工厂方法代替构造器常见的静态工厂方法名这里附上静态工厂方法的一些约定俗成的名称:valueOf/Of——类型转换,返回的实例和入参具有相同的值,比如Boolean.valueOf()、EnumSet.valueOf()getInstance——返回一个预先创建好的实例newInstance——返回一个新的实例 总结静态工厂方法具有三大优势——具名、...原创 2018-11-05 21:09:58 · 133 阅读 · 0 评论 -
final、finally、finalize 有什么不同?
1. final在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。final修饰的class表示类不可以继承扩展;修饰的方法表示方法不可以被重写(override);修饰的变量表示变量是不可以修改的。问: 在java中,String被设计成final类,那为什么平时使用时,String的值可以被改变呢? 字符串常量池是java堆内存中一个特殊的存储区域,当...原创 2019-01-09 14:51:28 · 153 阅读 · 0 评论 -
@NotNull 和 @NotEmpty 和@NotBlank 区别
@NotNull 和 @NotEmpty 和@NotBlank 区别如果在使用注解 @Validator的时候,出现如下错误: javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer那一定是在基本类型上使用注解出现的错误,需要注意的是:@NotN...原创 2019-02-25 16:58:07 · 14501 阅读 · 3 评论 -
RestTemplate 添加请求头headers和请求体body
//headers & cookieHttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.add("basecret", config.getBasecret());headers.add("baid", config.getBaid(...原创 2019-02-25 17:36:41 · 44392 阅读 · 8 评论 -
java编译过程和执行过程分析
目录一个.java文件的"沉浮"之路1:引言:2:分享初衷:3:分享内容大纲4:建议5:.java文件的沉浮之路5-1:编写一个.java文件5-2:通过javac和java指令执行5-3:揭秘第一部分.java文件如何变为.class文件5-4:揭秘第二部分.class文件如何被java指令开始解析执行的。编译流程1> 词法分析:词法分析的输...转载 2019-08-08 21:11:33 · 1177 阅读 · 0 评论 -
IDEA 快捷键 fro mac
连接:http://blog.csdn.net/xiaohulunb/article/details/20729261Mac键盘符号和修饰键说明⌘ Command⇧ Shift⌥ Option⌃ Control↩︎ Return/Enter⌫ Delete⌦ 向前删除键(Fn+Delete)↑ 上箭头↓ 下箭头← 左箭头→ 右箭头⇞ Page Up(Fn+↑)⇟ Pag转载 2017-01-20 16:51:15 · 350 阅读 · 0 评论