java编程
hongfenglx
这个作者很懒,什么都没留下…
展开
-
ThreadLocal原理分析以及使用场景
一、什么是ThreadLocal变量 ThreadLocal就是“线程局部变量”的意思。简单的说就是,一个ThreadLocal在一个线程中是共享的,在不同线程之间又是隔离的(每个线程都只能看到自己线程的值)。同一个ThreadLocal所包含的对象,在不同的Thread中有不同的副本。既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。二、ThreadLocal实现原理 ThreadLocal 是一个泛型类,保证可以接受任何类型的对象。因为一个线程原创 2020-11-09 20:27:35 · 226 阅读 · 0 评论 -
多例模式(Multition Pattern)_java设计模式04_架构师之路第一章
一、多例模式的定义多例模式(Multiton Pattern):实际上就是单例模式的自然推广,属于对象创建类型的模式,多例模式其实就是限制了对象的数量,并且有可能对对象进行重复使用特点: 1:多例可以有多个实例 2: 多例类必须能够自我创建并管理自己的实例,并且向外界提供自己的实例二、多例模式的应用场景 在java学习过程中,有一个池子的概念一直存在,好比作线程池,数据库连接池,这个池子是用来对线程,或者数据库连接对象进行管理的,第一,限制了池子中的对象数量,第二就是能够在使用过程中达到复用的效原创 2020-10-31 19:39:49 · 3511 阅读 · 0 评论 -
代理模式(Proxy Pattern)_java设计模式02_架构师之路第一章
一、代理模式的定义1、什么是代理模式?**代理模式:**代理模式又叫委托模式,是为某个对象(即被代理对象)提供一个代理对象,并且由代理对象控制对原对象(即被代理对象)的访问。特征是被代理类和代理类实现共同的接口且代理类持有被代理类的引用。通俗的来讲代理模式就是我们生活中常见的中介比如房屋中介、劳务中介、婚姻介绍所等等。2、代理模式中的角色:**抽象主题角色(Subject):**声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。**具体主题角色(RealS原创 2020-10-27 23:04:12 · 249 阅读 · 1 评论 -
NegativeArraySizeException负数组大小异常_异常0001
一、遇到该异常的场景 今天通过http协议发送请求报文,对方接到请求。然而,我作为客户端框架(公司自己搭建的框架)报错接收响应失败。通过抓包,我看到对方其实返回了http响应报文。二、NegativeArraySizeException分析1.表面现象 表象是框架报接收响应失败。2.实际报错原因 对方响应时是在非keep alive模式下(即非保活模式),在http响应头有connect :close(改参数表示响应完成就断链,保证每个链接只接收一次请求)。然而,我所用到的框架需要判断http响原创 2020-10-19 23:42:51 · 4137 阅读 · 0 评论 -
策略模式(Strategy Pattern)_java设计模式01_架构师之路第一章
一、策略模式的定义1.在解释策略模式之前,我们先了解什么是设计模式? 设计模式——设计模式是人们在面对同类型软件工程设计问题所总结出的一些有用的经验。模式不是代码,而是某类问题的通用设计解决方案。2.为什么需要去深入的了解设计模式? 通常一些新码农有可能第一份工作就是依赖一个成熟的内部(或开源)框架的基础上,通过配置文件及少量代码开发完成开发需求。不了解框架就被框架束缚,感到困惑。即使有心学习当前框架,一味翻看框架代码,感觉比较晦涩难懂。我们为了更快的学习java源码及各种框架,为了提高工作的效率,原创 2020-10-17 22:44:51 · 262 阅读 · 1 评论 -
java加载properties配置文件的三种方式及注意事项
一、准备配置文件1.配置文件xxxx.properties xxxx.properties配置文件放在D:盘下,配置信息如下所示:#连接处理线程池大小dispatcher.conn.thread=50#请求处理线程池的大小dispatcher.request.thread =100#响应处理线程池的大小dispatcher.response.thread= 200#响应处理线程池的大小dispatcher.response.thread1==原创 2020-10-17 15:58:08 · 893 阅读 · 0 评论 -
Java枚举详解及常见用法
一、枚举详解1.枚举的使用场景 枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。 在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代(例如,public static final String male )。而使用 Java 枚举类型 enum 可以更贴近地表示这种常量。2.声明枚举 声明枚举时必须使用原创 2020-10-11 19:55:53 · 2292 阅读 · 3 评论 -
java 单例模式实现方式
一、单例模式优点、注意事项及应用场景 1. 单例模式保证了系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能。 2. 当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用 new。 3. 单例模式 使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(比如:重量级对象),或者又经常用到的对象、 工具类对象、频繁访问数据库或文件的对象(比如 数据源、session 工厂等)。...原创 2020-10-11 09:06:47 · 310 阅读 · 1 评论 -
Java中==和equals()的区别
&emqe;在Java学习和面试中经常遇到这个问题,虽然简单,但是值得深究一下。一、对于基本数据类型先看一下下面的代码:int a = 123;int b = 123;System.out.println(a == b);//结果为:trueString s1 = "123";String s2 = "123";System.out.println(s1 == s2);//结果为:trueString s3 = new String("123");System.out.pr原创 2020-10-03 21:40:26 · 263 阅读 · 1 评论 -
java反射当中的Integer.class和Integer.TYPE的区别
先贴上代码:public static void main(String[] args) {System.out.println(int.class==Integer.TYPE);//结果为trueSystem.out.println(int.class==Integer.class);//结果为false} int.class表示基本数据类型int的Class对象,TYPE是Integer中的静态常量,api中已经写明它表示的是基本数据类型int的class实例,因此先打印出的是true原创 2020-10-03 18:50:38 · 2787 阅读 · 0 评论 -
Java注解实现原理
一、今天将从以下4个方面来系统的学习一下java注解什么是注解注解的用途注解使用演示注解的实现原理1.什么是注解注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。...原创 2020-09-30 07:00:12 · 1581 阅读 · 0 评论 -
Java 序列化和反序列化详解
一、基本概念1、序列化和反序列化的定义:(1)Java序列化就是指把Java对象转换为字节序列的过程 Java反序列化就是指把字节序列恢复为Java对象的过程。(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。 反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。总结:核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息)2、j原创 2020-09-29 06:42:15 · 269 阅读 · 0 评论 -
String StringBuffer StringBuilder之间的区别
1.StringString类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。这个是String类的解释,之前小咸儿看到这个情况,不能理解上述的解释,如下String a = "123";a = "456";// 打印出来的a为456System.out.println(a)看到这里,小咸儿不明白了,这不是明明已经对他进行修改了吗?为什么还说他是一个不可变类呢?经过小咸儿和小伙伴们的学习,明白String类不可变在哪里体现出来的原创 2020-09-28 12:46:08 · 113 阅读 · 0 评论 -
System.exit(0)与System.exit(1)之间的区别
1.源码解析查看java.lang.System的源代码,我们可以找到System.exit(status)这个方法的说明,代码如下:/** * Terminates the currently running Java Virtual Machine. The * argument serves as a status code; by convention, a nonzero status * code indicates abnormal termination.原创 2020-09-28 07:32:02 · 888 阅读 · 0 评论 -
java 向上转型和向下转型的特点
基础知识java继承:Java中的继承机制使得一个类可以继承另一个类,继承的类称为子类,被继承的类称为父类。在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象,所以子类可以继承父类中所有的属性和方法,包括private修饰的属性和方法,但是子类只是拥有父类private修饰的属性和方法,却不能直接使用它,也就是无法直接访问到它(子类可以通过调用父类的public声明的get方法来获取父类的private属性,但无法访问父类的privat原创 2020-09-27 13:33:08 · 1102 阅读 · 0 评论 -
java反射机制的优点和缺点
一、反射机制的优点首先,反射机制极大的提高了程序的灵活性和扩展性,降低模块的耦合性,提高自身的适应能力。其次,通过反射机制可以让程序创建和控制任何类的对象,无需提前硬编码目标类。再次,使用反射机制能够在运行时构造一个类的对象、判断一个类所具有的成员变量和方法、调用一个对象的方法。最后,反射机制是构建框架技术的基础所在,使用反射可以避免将代码写死在框架中。java的反射机制就是增加程序的灵活性,避免将程序写死到代码里。例如: 实例化一个 person()对象, 不使用反射, new person(原创 2020-09-26 23:09:24 · 10814 阅读 · 1 评论