自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MieMieFly的专栏

只是好读书不求甚解,不好不好!!!!!!!!!!!!

  • 博客(15)
  • 资源 (3)
  • 收藏
  • 关注

原创 多个线程操作共享变量会发生什么问题?

package com.example.demo.synchronize;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class ThreadSafeSample { public int sharedState; public void nonSafeAction() { while (sharedState < 100000) { int former = sharedState++.

2020-09-29 01:40:15 631

原创 Java类库文件拷贝的两种方式IO和NIO

FileCopyWithInputStreamDemo.javapackage com.example.demo.java.filecopy;import lombok.extern.slf4j.Slf4j;import java.io.*;@Slf4jpublic class FileCopyWithInputStreamDemo { public static void main(String[] args) { File source = new F...

2020-09-27 00:34:19 255

原创 Java中string.intern()是干嘛的?

先看下面一共输出几个true?package com.example.demo.concurrent;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class StringDemo { public static void main(String[] args) { String s1 = "11"; String s2 = new String("1")+new String("1"); .

2020-09-25 00:42:12 259

原创 Java之String常用知识点

1.Java 1.8以及之前 String由char数组存储,1.9开始由byte数组存储/** The value is used for character storage. */private final char value[];2.String实现了Comparable<String>,可以进行字符串比较3.String.valueOf(Object obj) 转成String4.String有两个常用实现类StringBuffer和StringBuilder,都

2020-09-24 00:16:01 201

原创 Java引用之强引用、软引用、弱引用、幻象引用区别以及使用示例

Java对象引用除了强引用之外还有软引用、弱引用、幻象引用以及FinalReference.强引用:常见的普通对象引用 比如Result counter = new Result("Johnny","12");软引用:能豁免垃圾回收,只有在抛出OOM之前才会清理.弱引用:不能豁免垃圾回收.用来构建没有特定约束的关系,是很多缓存实现的选择.幻象引用:在对象被finalize之后的一种引用,不可达调用get()返回null.FinalReference:处理native的对象,..

2020-09-23 15:44:14 147

原创 Java并发包之CompletableFuture使用场景以及简单使用(一)

CompletableFuture是Java8提供的一个并发类,方法很多,使用相对复杂。使用场景:多个线程需要并行或者串行等发杂场景。先示例一下CompletableFuture的简单场景,上一篇中讲到一个场景是,A和B并行执行,其中结果给C再去执行。使用CompletableFuture会更简便易于理解。CompletableFutureDemo.javapackage com.example.demo.concurrent.completablefuture;import l

2020-09-21 00:35:28 1818

原创 CompletionService的使用场景以及示例

CompletionService用来异步获取ExecutorService的执行结果,因为用了阻塞队列,所以先出的结果先获取。目前只有一个实现类ExecutorCompletionService。下面是示例Demo:场景是,三个耗时操作分别进行,最后将处理结果给主线程的另一个子线程保存结果。结构为CompletionServiceDemo.javapackage com.example.demo.concurrent.completionservice;import lomb.

2020-09-20 01:06:44 553

原创 CountDownLatch与CyclicBarrier区别以及CountDownLatch用法示例Demo

CountDownLatch能够实现等待多个独立的线程执行结束后再继续执行主线程操作。与CyclicBarrier类似。不过也有区别。CountDownLatch与CyclicBarrier最大区别是应用场景和计数器可否循环使用。1.应用场景不同:CountDownLatch的应用场景:某个线程执行前等待多个线程执行结束CyclicBarrier的应用场景:一组线程之间互相等待。2.可否循环使用不同:CountDownLatch不可循环使用,一旦减到0,再有线程调用await()方法.

2020-09-18 00:54:34 287

原创 CyclicBarrier的使用示例Demo

CyclicBarrier可以用于两个线程互相等待并且计算结果用于第三个线程处理的场景。有两个构造方法:其中一个可以有回调线程 public CyclicBarrier(int parties) { //回调为空 this(parties, null); } public CyclicBarrier(int parties, Runnable barrierAction) { if (parties <= 0) th.

2020-09-15 23:45:16 356

原创 Java线程的等待/通知机制

Java线程的等待通知是由wait()和notify()实现的。关键点:1.只能在同步方法块中调用wait()方法。2.只有等通知的线程运行结束,被通知的线程才开始运行。3.只能唤醒同一共享资源的线程,即只能notify相同对象的wait()方法。下面是Demo:SynchronizedDemo启动了三个线程,ThreadA和ThreadB两个是等待线程,ThreadC是通知线程。ThreadC通知ThreadA和ThreadB停止等待继续执行。package com.

2020-09-13 01:06:58 384

原创 IDEA工具常用快捷键整理

1.向上插入空行:ctrl+alt+enter 向下插入空行:shift+enter2.快速选择某个单词CTRL+SHIFT+←或者→3.自动补全变量CTRL+ALT+V4.定位到行CTRL+G5.查看以及默认生成接口的实现方法CTRL+O6.生成代码块,比如 try--catch,if--else--CTRL+ALT+T7.复制一行CTRL+D8.生成get set方法 构造方法ALT+Insert9.查看Java类或者全局搜索关键字...

2020-09-13 00:31:14 160

原创 Semaphore实现限流器Demo

Semaphore可以用来限流,demo如下public static void main(String[] args){ ExecutorService exec = Executors.newCachedThreadPool(); final Semaphore semp = new Semaphore(2);//信号量,只允许 2个线程同时访问 for (int i = 0; i < 10; i++) { final.

2020-09-12 01:30:52 202

原创 Java中HashSet是乱序的吗?

结论:HashSet跟添加元素顺序无关,但是内部有固定顺序,是按hash顺序存储。package com.example.demo.java;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.Test;import java.util.HashSet;import java.util.Set;@Slf4jpublic class HashSetDemo { @Test public void h.

2020-09-11 00:21:29 1703

原创 ArrayBlockingQueue与ReentrantLock的使用

ArrayBlockingQueue阻塞队列,队尾插入,队首取出.有几个重要的方法.add(E e):添加成功返回true,否则抛出异常 实际调用了offer(E e)offer(E e):添加成功返回true,否则false.put(E e):阻塞方法,如果满了会一直等待,等待被中断.poll():队列为空则返回null,否则取出元素.take():队列为空一直等待,否则取出poll(long timeout, TimeUnit unit):队列不为空,取出元素..

2020-09-03 23:38:37 214

原创 Linux启动时自动执行脚本

系统是Centos7.5 64位1.chmod +x /etc/rc.d/rc.local 赋予执行权限 chmod +x /etc/rc.d/rc.local2.编辑/etc/rc.d/rc.local,在尾部追加/root/startEnv.sh vim /etc/rc.d/rc.local/root/startEnv.sh在这个文件里编写需要执行的命令.我这里是需要启动docker服务,并且启动mysql nginx等.systemctl start docker..

2020-09-03 13:01:50 368

mysql-connector-java-8.0.23.jar.zip

MySQL5.8 jdbc 驱动包,下载后解压即可

2021-03-05

asmtools.jar

最新版asmtools.jar,基于Java8编译。可以查看字节码,修改字节码,转换jasm格式等。https://wiki.openjdk.java.net/display/CodeTools/asmtools

2020-07-21

Zookeeper_DistributeLock_Demo.zip

基于zookeeper的分布式锁实现Demo,可以直接使用.一个是初步实现功能,一个是改进可以直接使用的.建议使用改进版

2020-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除