
java
文章平均质量分 54
a904364908
白了头.
展开
-
关于String的intern()方法的一个面试题
先说intern方法的作用.jdk7及以后,如果串池有,不会放入,返回已有的串池中的对象地址,如果没有,会把对象的引用地址复制一份,放入串池,并把串池中的引用地址返回看demo. String s = new String("1"); s.intern(); String s2 = "1"; System.out.println(s == s2);//false String s3 = new String("a") + new String("a"); s3.i原创 2021-01-09 10:57:13 · 457 阅读 · 2 评论 -
Java锁介绍,什么是自旋锁?自旋的好处和后果是什么呢?
什么是自旋我们了解什么叫自旋?“自旋”可以理解为“自我旋转”,这里的“旋转”指“循环”,比如 while 循环或者 for 循环。“自旋”就是自己在这里不停地循环,直到目标达成。而不像普通的锁那样,如果获取不到锁就进入阻塞。对比自旋和非自旋的获取锁的流程我们用这样一张流程图来对比一下自旋锁和非自旋锁的获取锁的过程。我们来看自旋锁,它并不会放弃 CPU 时间片,而是通过自旋等待锁的释放,也就是说,它会不停地再次地尝试获取锁,如果失败就再次尝试,直到成功为止。我们再来看下非自旋锁,非自旋锁和自旋原创 2020-10-24 15:08:30 · 2658 阅读 · 0 评论 -
读写锁 ReadWriteLock 获取锁有哪些规则?
在没有读写锁之前,我们假设使用普通的 ReentrantLock,那么虽然我们保证了线程安全,但是也浪费了一定的资源,因为如果多个读操作同时进行,其实并没有线程安全问题,我们可以允许让多个读操作并行,以便提高程序效率。但是写操作不是线程安全的,如果多个线程同时写,或者在写的同时进行读操作,便会造成线程安全问题。我们的读写锁就解决了这样的问题,它设定了一套规则,既可以保证多个线程同时读的效率,同时又可以保证有写入操作时的线程安全。整体思路是它有两把锁,第 1 把锁是写锁,获得写锁之后,既可以读数据又可以原创 2020-08-14 16:24:57 · 331 阅读 · 0 评论 -
Lock 常用的几种方法,和作用
简介Lock 接口是 Java 5 引入的,最常见的实现类是 ReentrantLock,可以起到“锁”的作用。Lock 和 synchronized 是两种最常见的锁,锁是一种工具,用于控制对共享资源的访问,而 Lock 和 synchronized 都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同。所以 Lock 并不是用来代替 synchronized 的,而是当使用 synchronized 不合适或不足以满足要求的时候,Lock 可以用来提供更高级功能的。通常情况下,Lock.原创 2020-08-10 12:44:09 · 3137 阅读 · 0 评论 -
java线程池常用的阻塞队列
由于多线程同时从任务队列中获取任务是并发场景,此时就需要任务队列满足线程安全的要求,所以线程池中任务队列采用 BlockingQueue 来保障线程安全.表格左侧是线程池,右侧为它们对应的阻塞队列,可以看到 5 种线程池对应了 3 种阻塞队列,我们接下来对它们进行逐一的介绍。1. LinkedBlockingQueue对于 FixedThreadPool 和 SingleThreadExector 而言,它们使用的阻塞队列是容量为 Integer.MAX_VALUE 的 LinkedBlocking原创 2020-07-22 16:46:03 · 2453 阅读 · 0 评论 -
Java线程池的四种拒绝策略
拒绝时机新建线程池时可以指定它的任务拒绝策略,以便在必要的时候按照我们的策略来拒绝任务.ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 5, TimeUnit.MILLISECONDS, new LinkedBlockingDeque<>(), new ThreadPoolExecutor.DiscardOldestPolicy());那么拒绝任务的时机是什么呢?线程池会在以下两种..原创 2020-07-21 15:29:24 · 1296 阅读 · 0 评论 -
Java实现生产者消费者模式的三种方法
前言生产者消费者模式是程序设计中非常常见的一种设计模式,被广泛运用在解耦、消息队列等场景。在现实世界中,我们把生产商品的一方称为生产者,把消费商品的一方称为消费者,有时生产者的生产速度特别快,但消费者的消费速度跟不上,俗称“产能过剩”,又或是多个生产者对应多个消费者时,大家可能会手忙脚乱。如何才能让大家更好地配合呢?这时在生产者和消费者之间就需要一个中介来进行调度,于是便诞生了生产者消费者模式。BlockingQueue 实现生产者消费者模式public static void main(St..原创 2020-07-15 09:20:48 · 414 阅读 · 0 评论 -
java单例模式几种常见实现方式
什么是单例模式因进程需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。单例模式的特点1、单例模式只能有一个实例。2、单例类必须创建自己的唯一实例3、单例类必须向其他对象提供这一实例。单例模式的实现懒汉式(线程不安全)public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ }..原创 2020-06-05 22:50:14 · 487 阅读 · 0 评论 -
Java数组模拟简单队列实现(顺序队列,环形队列)
顺序队列实现//使用数组模拟队列class ArrayQue{ //表示数组最大容量 private int maxSize; //队列头 private int front; //队列尾 private int rear; //该数组用于存放数据 private int[] arr; //创建队列的构造器 ...原创 2020-04-09 22:39:35 · 165 阅读 · 0 评论 -
FastJson对JSON字符串、JSON对象及JavaBean之间的相互转换
原文链接: 使用FastJson对JSON字符串、JSON对象及JavaBean之间的相互转换FastJson是用于java后台处理json格式数据的一个工具包,包括“序列化”和“反序列化”两部分,它具备如下特征: (1)速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。 (2)功能强大,完全支持java bean、集合、Map、日期...转载 2020-02-09 16:58:06 · 198 阅读 · 0 评论 -
HBase的Java API基本操作,测试(完全分布式)
HBase搭建完成后,可以进行基本的API操作,对HBase进行测试.导入依赖:<dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</art...原创 2019-05-01 15:31:36 · 635 阅读 · 0 评论 -
Java发送腾讯企业邮箱邮件,基于ssl协议
在工作中很多时候需要基于代码发送邮件,最近基于JavaMail写了一个测试demo引入依赖,<dependencies> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId&...原创 2019-03-30 13:44:31 · 1772 阅读 · 0 评论 -
Java代码读取Excel中的数据导入到MySQL中
最近在做一项小测试,将Excel中的数据导入到MySQL中去,由于数据量比较大,并且有多个Excel表,所以写Java代码将数据导入到MySQL中,查了资料,用poi读取数据并导入.新建工程, 添加poi依赖<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&...原创 2019-03-23 00:21:34 · 2142 阅读 · 2 评论 -
SpringBoot配置自定义日期参数转换器
有时候前台传过来一个日期类型,在后台接收就比较麻烦,这时候用springMVC的转换器,就比较方便了.主要三步,1.自定义参数转换器自定义参数转换器必须实现Converter接口public class DateConverter implements Converter<String,Date> { private final SimpleDateForma...原创 2018-12-01 00:04:30 · 4109 阅读 · 0 评论 -
使用Jedis连接redis时出现java.net.ConnectException: Connection refused: connect的解决方案
虚拟机安装redis,我的虚拟机地址是192.168.25.120,安装的redis版本是4.0.2在虚拟机上安装好了redis,虚拟机连接没问题在用Jedis连接虚拟机redis的时候报错.redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection re...原创 2018-08-27 20:56:47 · 9293 阅读 · 3 评论 -
eclipse运行程序的时候报错,could not create the java virtual machine
eclipse用的好好的,突然有天运行一个程序运行不起来,一直报错could not create the java virtual machine,检查了好半天,不知道原因到底在哪. 网上查了好多方法,也还是不能解决.最后在检查run configurations的时候,在arguments里,VM arguments里面添加了一行莫名的信息,删除后,就可以...原创 2018-07-23 11:33:36 · 2047 阅读 · 3 评论 -
搭建maven工程,报错:Missing artifact jdk.tools:jdk.tools:jar:1.8的解决方案
在eclipse中,在创建hadoop工程的时候.pom.xml文件报错:Missing artifact jdk.tools:jdk.tools:jar:1.8.原因:tools.jar包是jdk自带的,pom文件中依赖的包隐式依赖tools.jar包,而tools.jar并不在库中,只需要将tools.jar包添加到库中即可.解决方案:在pom文件中添加tools.jar的依赖,代码如下.这里...原创 2018-07-10 10:55:15 · 2289 阅读 · 0 评论