![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java开发
文章平均质量分 83
LittleSkey
如果故障永远不发生,那么生活将变得更加简单
展开
-
JAVA中BitSet
JAVA中BitSet就是“位图”数据结构,根据“位图”的语义,数据的存在性可以使用bit位上的1或0来表示;一个bit具有2个值:0和1,正好可以用来表示false和true。对于判断“数据是否存在”的场景,我们通常使用HashMap来存储,不过hashmap这个数据结构KEY和Value的保存需要消耗较多的内存,不适合保存较多的数据,即大数据场景;比如在有10亿条URL中判定一个“www.baidu.com/a”是否存在,如果我们使用常规的hashmap来保存将是不现实的,因为URL本身需要占据较多的内转载 2020-11-10 13:40:26 · 308 阅读 · 0 评论 -
Java String.intern()
引言常量池分为静态常量池、运行时常量池。静态常量池在.class中,运行时常量池在方法区中,JDK1.8中方法区已经被元空间代替。字符串池在JDK1.7之后被分离到堆区。String str = new String("Hello World") 创建了2个对象,一个驻留在字符串池,一个分配在Java堆。str指向对上的实例String.intern()能在运行时向字符串池添加常量。部分包装类实现了池华技术,-128-127以内的对象可以重用本文实例针对HotSpot虚拟机。一般转载 2020-11-06 15:20:59 · 261 阅读 · 0 评论 -
Java 单例模式及线程安全问题
单例的目的是为了保证运行时Singleton类只有唯一的一个实例,用于一些较大开销的操作。实现单例模式的方式饿汉式public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; }}由于原创 2020-11-05 15:03:34 · 2234 阅读 · 0 评论 -
深入理解SPI机制
一、什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下它是怎么用的。1、例子首先,我们需要定义一个接口,SPIServicepackage com.viewscenes.netsupervisor.spi;p转载 2020-11-05 13:49:13 · 214 阅读 · 0 评论 -
Java热加载
什么是热加载热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境。热加载和热部署的区别首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的。那么两者到底有什么区别呢?热部署是在服务器运行时重新部署项目。 热加载是在运行时重新加载 class。热加载实现思路根据Java的类加载机制,我们可操作的环节只有原创 2020-11-04 15:38:29 · 709 阅读 · 0 评论 -
JDK1.7VS1.8---HashMap和CurrentHashMap原理
深入解析HashMap和ConcurrentHashMapy源码以及底层原理前言HashMap 和ConcurrentHashMap,这两个相信大家都不陌生,在面试中基本上是必问的,以及在实际开发过程中也是比用的,那么看了这篇文章,无论在面试还是在实际开发中都可以顺手拈来,得心应手了。HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入转载 2020-10-20 07:41:19 · 1325 阅读 · 0 评论 -
Java 多线程之悲观锁与乐观锁
一、悲观锁总是假设最坏的情况,每次取数据时都认为其他线程会修改,所以都会加锁,当其他线程想要访问数据时,都需要阻塞挂起。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。二、乐观锁乐观锁相对悲观锁而言,它认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,不立刻挂起而是稍微等待再次尝试获取等待策略,以减少线程因为挂起、阻塞、唤醒(发生CPU的调度切换) 而造成的开销。偏向锁、轻量级锁(CAS轮询原创 2020-10-18 19:52:17 · 311 阅读 · 0 评论 -
Java字符串分割
Java字符串分割原创 2016-12-06 17:34:05 · 802 阅读 · 0 评论 -
AtomicInteger的用法
AtomicInteger实现线程安全计数器原创 2016-12-05 17:20:38 · 2787 阅读 · 0 评论 -
ConcurrentHashMap原理分析
ConcurrentHashMap原理分析转载 2016-12-05 15:43:41 · 260 阅读 · 0 评论 -
instanceof 与 isAssignableFrom
instanceof、isAssignableFrom区别与用法原创 2017-03-31 21:47:03 · 749 阅读 · 0 评论 -
Java代理
Java代理实现原创 2016-12-05 10:31:53 · 524 阅读 · 0 评论 -
Java线程池之ThreadPoolExecutor
Java中的ThreadPoolExecutor类转载 2016-11-25 15:23:40 · 675 阅读 · 0 评论 -
Java字符串模版
Java字符串模版转载 2016-12-08 13:28:35 · 6870 阅读 · 0 评论 -
Java并发编程
Java并发编程原创 2016-11-28 15:26:38 · 388 阅读 · 0 评论 -
java定时任务接口ScheduledExecutorService
一、ScheduledExecutorService 设计思想ScheduledExecutorService,是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。需要注意,只有当调度任务来的时候,ScheduledExecutorService才会真正启动一个线程,其余时间ScheduledExecutorService都是c...原创 2019-01-27 16:33:03 · 446 阅读 · 0 评论 -
ScheduledExecutorService 和 Timer 的区别
Timerschedule:任务开始的时间 + period(时间片段),强调“固定间隔”地执行任务scheduleAtFixedRate:参数设定开始的时间+ period(时间片段),强调“固定频率”地执行任务Timer的缺陷:Timer被设计成支持多个定时任务,通过源码发现它有一个任务队列用来存放这些定时任务,并且启动了一个线程来处理。通过这种单线程的方式实现,在存...原创 2019-03-25 22:13:35 · 434 阅读 · 0 评论 -
Java的getResourceAsStream用法
getResourceAsStream原创 2016-07-21 21:49:03 · 2087 阅读 · 0 评论 -
Java对象序列化
Java序列化原创 2016-12-01 17:48:01 · 482 阅读 · 0 评论 -
Java序列化 transient关键字
java 的transient关键字转载 2016-12-01 17:40:14 · 689 阅读 · 0 评论 -
Java定时任务
Java定时任务原创 2016-11-30 16:47:34 · 889 阅读 · 0 评论 -
Java单例模式
单例模式转载 2016-08-08 15:54:59 · 261 阅读 · 0 评论 -
Java静态导入
Java静态导入原创 2016-08-19 10:45:31 · 427 阅读 · 0 评论 -
Java解析Xml文件
Java解析Xml原创 2016-08-07 11:50:40 · 516 阅读 · 0 评论 -
解密ThreadLocal
解析ThreadLocal原创 2016-08-02 19:24:47 · 358 阅读 · 0 评论 -
自定义注解
自定义注解原创 2016-07-21 20:45:46 · 491 阅读 · 0 评论 -
Java利用PropertyDescriptor获取属性的 getter/setter 方法
PropertyDescriptor获取属性的 getter/setter 方法原创 2016-07-30 10:36:57 · 10893 阅读 · 0 评论 -
Java 反射
Java反射原创 2016-07-26 22:14:01 · 377 阅读 · 0 评论 -
Java获取路径方式
java获取当前路径原创 2016-05-28 21:15:02 · 539 阅读 · 0 评论 -
Java多线程中的volatile
Java volatile线程不安全转载 2016-08-08 16:23:31 · 275 阅读 · 0 评论 -
Java的锁机制
java对象锁的机制转载 2016-08-08 17:22:11 · 368 阅读 · 0 评论 -
Tomcat配置Https协议
Tomcat配置Https协议原创 2016-10-04 13:42:58 · 1635 阅读 · 0 评论 -
HttpClient发起post、get请求
HttpClient发起post、get请求原创 2016-10-03 14:54:52 · 1719 阅读 · 0 评论 -
Tomcat SSL配置及请求示例
Tomcat SSL配置及请求示例原创 2016-10-16 13:38:40 · 824 阅读 · 0 评论 -
Eclipse 反编译插件安装jad
Eclipse 反编译插件安装jad转载 2016-09-21 21:40:48 · 450 阅读 · 0 评论 -
如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.” .
如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.” SN100001 1100 200.20 张三转载 2016-09-22 20:45:39 · 3615 阅读 · 0 评论 -
Mockito+Junit单元测试
Mockito是一个开源mock框架,需导入mockito jar包。verify()方法用于确认模拟的方法已经调用。when(....).thenReturn(....)用来指定条件和对应的返回值。如果指定多个值,会依次返回。然后最后一个指定的值返回。anyString()或anyInt()实现了类似通配符的功能。方法类:package com.learn.mock;publ原创 2016-08-23 21:36:24 · 956 阅读 · 0 评论 -
Java利用json-lib操作json
Java操作Json数据原创 2016-09-13 11:12:19 · 472 阅读 · 0 评论 -
Java读取配置文件
读取properties文件原创 2016-05-23 20:40:20 · 705 阅读 · 0 评论