![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 67
Holmes Zhu
互联网新人
展开
-
Java 反射学习
什么是反射?反射机制的应用场景有哪些?应用场景:我们在使用JDBC连接数据库时使用Class.forName()通过反射加载数据库的驱动程序;Spring框架也用到很多反射机制,最经典的就是xml的配置模式。Spring 通过 XML 配置模式装载 Bean 的过程:1) 将程序内所有 XML 或 Properties 配置文件加载入内存中; 2)Java类里面解析xml或properties里面的内容,得到对应实体类的字节码字符串以及相关的属性信息;使用反射机制,根据这个字符串获得某个类的Cla原创 2021-03-12 10:27:28 · 68 阅读 · 0 评论 -
JVM 学习
关于Jvm知识看这一篇就够了Java内存结构Java 类加载GC 算法,垃圾搜集器标记 -清除算法、复制算法标记-压缩算法分代收集算法JVM 调优,GC分析原创 2021-03-02 22:13:03 · 96 阅读 · 0 评论 -
Java 并发学习
线程池Java线程池锁【基本功】不可不说的Java“锁”事Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)原创 2021-03-02 21:59:24 · 98 阅读 · 0 评论 -
Java Web 学习
Tomcat原理系列之四:tomcat与spring容器的关系原创 2021-02-28 09:55:39 · 90 阅读 · 0 评论 -
Java 容器相关
常用的两种有ArrayList 和 LinkedList,底层分别是用数组和链表实现的,也分别具有数组和链表的特性,都是非线程安全的。ArrayList多线程访问出现的问题抛出数组越界异常多个线程可能对同一个位置赋值参考:为什么说ArrayList是线程不安全的?解决方案:Vector(不推荐),synchronizedList() & CopyOnWriteArrayList(适合读多写少的场景)参考:并发容器(二)—线程安全的List扩容:ArrayList扩容机制Link原创 2021-02-27 15:59:21 · 69 阅读 · 0 评论 -
Tomcat 学习
概览https://www.zhihu.com/question/32212996/answer/87524617https://www.zhihu.com/question/32212996/answer/55169095https://zhuanlan.zhihu.com/p/54121733工作原理https://zhuanlan.zhihu.com/p/266708323https://blog.csdn.net/LeiXiaoTao_Java/article/details/85003原创 2021-02-18 11:31:09 · 238 阅读 · 0 评论 -
Spring 学习笔记
Spring如何阅读Spring源码Spring的接口InitializingBean、BeanPostProcessor以及注解@PostConstruct、bean的init-method的执行先后顺序使用Maven配置Spring实现Spring最深入的理解就是自己实现徒手撸框架–实现IoC徒手撸框架–实现Aop实现AOP会用到Cglib Cglib及其基本使用抽象类注入如何解决spring中抽象类无法注入springboot 抽象类中 怎么注入其他实例?Tomcatweb原创 2020-06-09 21:18:50 · 176 阅读 · 0 评论 -
《Effective Java》序列化
第85条:其他方法优先于Java序列化参考学习:Effective java笔记(十),序列化第86条:谨慎地实现Serializable接口参考学习:第七十四条 谨慎地实现 serizable 接口第87条:考虑使用自定义的序列化形式参考学习:第七十五条 考虑使用自定义的序列化形式第88条:保护性地编写readObject方法参考学习:第七十六条 保护性编写readObject方法第89条:对于实例控制,枚举类型优先于readResolve参考学习:第七十七条 对于实例控制,枚举类型优于原创 2020-06-02 14:39:10 · 199 阅读 · 0 评论 -
《Effective Java》并发
第78条:同步访问共享的可变数据参考学习:第六十六条 同步访问共享的可变数据第79条:避免过度同步参考学习:第六十七条 避免过度同步第80条:executor、task和stream优先于线程参考学习:第六十八条 executor和task优先于线程第81条:并发工具优先于wait和notify参考学习:第六十九条 并发工具优先于wait和notify第82条:线程安全性的文档化参考学习:第七十条 线程安全性的文档化第83条:慎用延迟初始化参考学习:第七十一条 慎用延迟初始化第84条原创 2020-06-02 10:52:19 · 146 阅读 · 0 评论 -
《Effective Java》异常
第69条:只针对异常的情况才使用异常参考学习:第五十七条 只针对异常的情况才使用异常第70条:对可恢复的情况使用受检异常,对编程错误使用运行时异常参考学习:第五十八条 对可恢复的情况使用受检异常,对编程错误使用运行时异常第71条:避免不必要地使用受检异常参考学习:第五十九条 避免不必要地使用受检的异常第72条:优先使用标准的异常参考学习:第六十条 优先使用标准的异常第73条:抛出与抽象对应的异常参考学习:第六十一条 抛出与抽象相对应的异常第74条:每个方法抛出的所有异常都要建立文档参考原创 2020-06-02 10:40:40 · 179 阅读 · 0 评论 -
《Effective Java》通用编程
通用编程这一章比较简单,基本都是代码规范相关的,拓展阅读可以参考《代码大全》。第57条:将局部变量的作用域最小化参考学习:第45条:将局部变量的作用域最小化第58条:for-each循环优先于传统的for循环参考学习:第46条:for-each循环优先于传统的for循环第59条:了解和使用类库参考学习:第47条:了解和使用类库第60条:如果需要精确的答案,请避免使用float和double参考学习:第48条:如果需要精确的答案,请避免使用float和double第61条:基本类型优先于装箱原创 2020-05-31 11:32:39 · 212 阅读 · 0 评论 -
《Effective Java》方法
第49条:检查参数的有效性参考学习:第38条:检查参数的有效性比较容易理解,很多时候方法的入参是不确定的,需要校验处理。第50条:必要时进行保护性拷贝参考学习:第39条:必要时进行保护性拷贝第51条:谨慎设计方法签名参考学习:第40条:谨慎设计方法签名第52条:慎用重载参考学习:第41条:慎用重载第53条:慎用可变参数参考学习:第42条:慎用可变参数第54条:返回零长度的数组或者集合,而不是null参考学习:第43条:返回零长度的数组或者集合,而不是null第55条:谨慎返回opt原创 2020-05-31 11:56:45 · 177 阅读 · 0 评论 -
《Effective Java》Lambda和Stream
[Java读书笔记] Effective Java(Third Edition) 第 7 章 Lambda和Stream原创 2020-05-29 19:24:39 · 184 阅读 · 0 评论 -
《Effective Java》枚举和注解
[Java读书笔记] Effective Java(Third Edition) 第 6 章 枚举和注解原创 2020-05-29 18:49:36 · 126 阅读 · 0 评论 -
《Effective Java》泛型
[Java读书笔记] Effective Java(Third Edition) 第 5 章 泛型原创 2020-05-28 15:20:23 · 115 阅读 · 0 评论 -
精益,精简的虚拟机
Java虚拟机的基本结构和功能简介欢迎来到“Under The Hood”的第一期。 在本专栏中,我想探讨有关Java内部工作的主题。 每个月我都会专注于一个领域,并试图使其神秘化。 我的目的是帮助程序员理解在编译和运行Java程序时实际发生的情况。 在本期中,我将介绍Java虚拟机的基本结构和功能。JVM的使用和定义Java虚拟机或JVM是运行已编译Java程序的抽象计算机。 JVM是...翻译 2020-05-27 20:23:50 · 145 阅读 · 0 评论 -
《Effective Java》类和接口
第15条:使类和成员的可访问性最小化参考学习:effective java(13) 之使类和成员的可访问性最小化第16条:要在公有类而非公有域中使用访问方法参考学习:effective java(14) 之在公有类中使用访问方法而非公有域第17条:使可变性最小化参考学习:effective java(15) 之使可变性最小化第18条:复合优先于继承参考学习:effective java(16) 之复合优先于继承第19条:要么设计继承并提供文档说明,要么禁止继承参考学习:effective原创 2020-05-27 11:36:04 · 170 阅读 · 1 评论 -
《Effective Java》对于所有对象都通用的方法
第10条:覆盖equals时请遵守通用约定参考学习:覆盖equals时请遵守通用约定第11条:覆盖equals时总要覆盖hashCode参考学习:覆盖equals时总是覆盖hashCode第12条:始终要覆盖toString参考学习:effective java(10) 之始终要覆盖toString比较简单的规则第13条:谨慎地覆盖clone参考学习:effective java(11) 之谨慎地覆盖clone第14条:考虑实现Comparable接口参考学习:考虑实现Comparabl原创 2020-05-27 10:37:13 · 136 阅读 · 0 评论 -
《Effective Java》创建和销毁对象
第1条:用静态工厂方法代替构造器参考学习:Effective Java (1) - 考虑用静态工厂方法代替构造器第2条:遇到多个构造器参数时要考虑使用构建器参考学习:Effective Java (2) - 遇到多个构造器参数时要考虑用构建器第3条:用私有构造器或者枚举类型强化Singleton属性参考学习:Effective Java (3) - 用私有构造器或者枚举类型强化Singleton属性第4条:通过私有构造器强化不可实例化的能力参考学习:Effective Java (4) - 通原创 2020-05-26 17:47:35 · 111 阅读 · 0 评论 -
什么是SOA(service-oriented architecture)?
了解面向服务的体系结构的特征以及基于Java的SOA基础结构的组成面向服务架构(Service-oriented architecture,SOA)是基于同步和异步应用程序的请求/应答设计范式的分布式计算的发展。应用程序的业务逻辑或单个功能是模块化的,并作为客户机/客户机应用程序的服务呈现。这些服务的关键是它们的松耦合特性;即服务接口独立于实现。应用程序开发人员或系统集成商可以通过组合一个或...翻译 2020-01-11 20:58:22 · 1994 阅读 · 0 评论 -
什么是JRE? Java运行时环境简介
JRE创建JVM并确保依赖关系可用于Java程序Java开发工具包(JDK),Java虚拟机(JVM)和Java运行时环境(JRE)共同形成了强大的Java平台组件三部曲,用于开发和运行Java应用程序。 之前,我已经介绍了JDK和JVM。 在本快速教程中,您将了解JRE,它是Java的运行时环境。实际上,运行时环境是一种旨在运行其他软件的软件。 作为Java的运行时环境,JRE包含Ja...翻译 2020-01-10 17:01:49 · 3264 阅读 · 1 评论 -
什么是Java Servlet?请求处理Java Web应用程序
Servlet在Java Web应用程序中提供URL映射和请求处理功能请求处理是Java Web应用程序开发的基础。为了响应来自网络的请求,Java Web应用程序必须首先确定将对请求URL进行响应的代码,然后封送响应。 每个技术栈都有完成请求-响应处理的方式。 在Java中,我们为此目的使用servlet(和Java Servlet API)。将Servlet视为微型服务器,其工作是接受...翻译 2020-01-10 10:49:34 · 536 阅读 · 0 评论 -
什么是JVM?Java虚拟机简介
JVM管理内存,并为基于Java的应用程序提供可移植的执行环境。Java虚拟机是一个旨在执行其他程序的程序。这是一个简单的想法,也是我们最伟大的编码功夫的例子之一。JVM颠覆了当时的现状,并在今天继续支持编程创新。JVM的使用和定义JVM有两个主要功能:允许Java程序在任何设备或操作系统上运行(称为“一次写入,随处运行”原则),以及管理和优化程序内存。当Java在1995年发布时,所...翻译 2020-01-06 14:41:15 · 884 阅读 · 0 评论 -
Java并发编程之Condition
Java并发之ConditionCondition 依赖于lock 对象ConditionObjectCondition 和 Object 区别原创 2019-10-24 16:56:29 · 81 阅读 · 0 评论 -
Java 多线程之 ThreadLocal
Java并发编程:深入剖析ThreadLocal理解Java中的ThreadLocal原创 2019-10-23 22:34:15 · 145 阅读 · 0 评论 -
Java 注解
JAVA 注解的基本原理注解的本质就是一个继承了 Annotation 接口的接口@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}本质上就是public interface Override extends Annotation{ }一...原创 2019-10-15 14:18:44 · 174 阅读 · 0 评论 -
单例模式
彻头彻尾理解单例模式与多线程非常全面且精彩的一篇博文,总结一些知识点:单例模式三要素私有的构造方法;指向自己实例的私有静态引用;以自己实例为返回值的静态的公有方法。两种经典实现立即加载 : 在类加载初始化的时候就主动创建实例;延迟加载 : 等到真正使用的时候才去创建实例,不用时不去主动创建。饿汉式单例(立即加载),饿汉式单例在单例类被加载时候,就实例化一个对象并交给自己的引用...原创 2019-10-14 18:20:29 · 223 阅读 · 0 评论 -
Java 内部类
Java 内部类及其原理内部类主要分为四种:成员内部类局部内部类匿名内部类静态内部类比较常用的是匿名内部类,可以参考 JAVA匿名内部类为什么 java为什么匿名内部类的参数引用时final?其实主要是解决数据不一致的问题。...原创 2019-10-14 11:04:23 · 77 阅读 · 0 评论 -
Java 异步编程
Java异步方法调用同步调用,异步回调和 Future 模式Future 模式中,一个任务的启动和获取结果分成了两部分,启动执行是异步的,调用后立马返回,调用者可以继续做其他的任务,而等到其他任务做完,再获取Future的结果,此时调用 get 时是同步的,也就是说如果 doTask1 如果还没有做完,等它做完。同步调用适合执行耗时短的任务。异步回调适合执行耗时长的任务Future 同...原创 2019-10-13 23:45:06 · 211 阅读 · 0 评论 -
Java 的一些学习资料
Java(这里其实主要是Java SE) 涉及到的知识还是非常多的,基础知识,容器,并发,JVM,IO等等,每一块都非常复杂,很多学习都需要深入源码。而且很多时候也很难用上,我也仍然在不断学习,这篇文章是主要是整理一些我认为优秀的 Java 学习资料,有了正确的方向已经是成功了一半,只要坚持学下去就好了。什么才是java的基础知识? 回答者:晓风轻初学者先广在精,关注代码背后的实现,关注内...原创 2019-09-28 21:11:32 · 108 阅读 · 0 评论 -
再有人问你Java内存模型是什么,就把这篇文章发给他。(转)
原文链接:再有人问你Java内存模型是什么,就把这篇文章发给他。前几天,发了一篇文章,介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型,是这三个知识点当中最晦涩难懂的一个,而且涉及到很多背景知识和相关知识。网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中...转载 2018-11-24 10:44:18 · 158 阅读 · 0 评论 -
Java 线程池
在ThreadPoolExecutor类中提供了四个构造方法:public class ThreadPoolExecutor extends AbstractExecutorService { ..... public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUn...原创 2018-10-16 23:06:45 · 165 阅读 · 0 评论 -
Java异常处理
throwthrow就是抛出一个异常,并获取这个异常的引用,这个异常会被抛到外部的环境,由外部环境进行处理。示例如下:class A{ public void func() throws Exception{ throw new Exception(); }}这里会把Exception这个引用抛到外部环境中去处理。throwsthrows并不是抛出一...原创 2018-09-26 17:37:20 · 304 阅读 · 2 评论 -
Java向上转型和向下转型
向上转型子类引用的对象转化为父类类型称为向上转型,通俗点说就是将子类对象转化为父类对象,此处父类对象可以是接口。格式是Person p = new Person();向上转型也是多态的条件之一,所以用到的地方非常多。看一个示例:class Animal { public void eat(){ System.out.println("animal eatti...原创 2018-09-26 00:34:14 · 360 阅读 · 0 评论