自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_41430175的博客

一个菜鸡的博客

  • 博客(12)
  • 收藏
  • 关注

原创 SpringSecurity+OAuth2+JWT实现单点登录的理解

SpringSecurity+OAuth2+JWT实现单点登录的理解案例分析:首先应明确几个服务器角色:第三方服务器:资源服务器:授权服务器:客户端:

2020-12-10 19:27:16 628 2

转载 转:CAS

概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来看一个例子。上面这个例子在volatile关键字详解文中用过,我们知道,运行完这段代码之后,并不会获得期望的结果,而且会发现每次运行程序,输出的结果都不一样,都...

2019-05-08 23:11:45 133

转载 (转)volatile 关键字总结

总结:每个线程有自己的工作内存,工作内存中的数据并不会实时刷新回主内存,因此在并发情况下,有可能线程A已经修改了成员变量k的值,但是线程B并不能读取到线程A修改后的值,这是因为线程A的工作内存还没有被刷新回主内存,导致线程B无法读取到最新的值。在工作内存中,每次使用volatile修饰的变量前都必须先从主内存刷新最新的值,这保证了当前线程能看见其他线程对volatile修饰的变量所做的修改后...

2019-04-25 23:38:17 103

原创 在读Thinking in Java中并发的笔记(4)昨天问题的解析

昨天问题原题:volatile关键字当我以为volatile修饰变量可以保证线程安全的时候,下面报错了。今天先休息,后面的笔记再详细分析。。。public class VolatileTest { public static void main(String[] args) { SubTest st = new SubTest(); Thread t1 = new Thread(s...

2019-04-25 22:15:13 121

原创 在读Thinking in Java中并发的笔记(3) synchronized关键字和Lock的原理

**synchronized**什么时候使用同步:如果你正在写一个变量,它可能接下来将被另一个线程读取,或者正在读取一个上一次已经被另一个线程写过的变量,那么你必须使用同步,并且,读写线程都必须使用相同的监视器锁同步。1.声明synchronized 方法synchronized void f(){}所有对象都自动含有单一的锁(也称为监视器)。当在对象上调用其任意synchroniz...

2019-04-25 00:30:23 149

原创 在读Thinking in Java中并发的笔记(2)常用线程调度方法

yield()方法 让步给线程调度机制一个暗示:你的工作已经做得差不多了,可以让别的线程使用CPU了。不过只是一个暗示,没有任何机制保证它将被采纳。建议具有相同优先级的其他线程可以运行join()方法 加入一个线程一个线程可以在其他线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束才继续执行。如果某个线程在另一个线程t上调用t.join(),此线程将被挂起,直到目标...

2019-04-24 22:49:48 127

原创 在读Thinking in Java中并发的笔记(1)

Wait()方法1.wait()有两种形式,第一种版本是接受毫秒数作为参数,含义与sleep()方法里参数的意思相同,都是指"在此期间暂停"。但是与sleep()不同的是,对于wait()而言1)在wait()期间锁是释放的2)可以通过notify()和notifyAll(),或者命令时间到期从wait()中恢复执行。第二种版本,wait()不接受任何参数。将无限等待下去,直到线程接收...

2019-04-24 00:39:26 115

转载 Java创建对象的几种方式

一:最常用的创建对象的方式-使用new关键字Example_01 example_01 = new Example_01();二:使用Class类的newInstance方法,这个newInstance方法调用无参的构造函数创建对象。Class<?> c = Class.forName("com.cgb.reflectTest.Example_01");Example_01 ...

2019-04-16 00:10:30 133 1

原创 Java如何理解泛型

我认为泛型可理解为类的形参(类似方法的参数)。当定义了泛型以后,就可通过不同类型参数的构造方法声明该类的对象。该形参可以传入任何Objectpublic class Main_01 { public static void main(String[] args) { //先拿list举例 List<String> list = new ArrayList<String...

2019-04-13 14:09:09 510

原创 Java完成二维数组排序

二维数组中(每个一维数组的长度相同),按照如下规则排序:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序public class HashMapTest { public static void main(String[] args) { HashMapTest h = new HashMapTest(); int b[][] = new int[][]{{9,2...

2019-04-11 00:17:43 6477

原创 Sftp连接池

由于需要下载大量的小文件,使用Jsch开发了一个小型Sftp连接池。主要思路是使用类的静态变量HashMap用于保持session,缺少守护线程管理。压测后效果很明显,但当在同一目录上传的文件超过1000个以后下载速度变慢,将同目录下文件删除以后速度又回升。由此推测出是文件太多导致文件检索变慢1.main方法,新建一个线程池,用于接收报文线程池介绍链接:http://www.crazyan...

2019-04-04 00:37:06 6486 10

原创 Java字节流

字节流:1.InputStream能从來源处读取一個一個byte2.InputStreamReader封裝了InputStream在里头,它以较高级的方式,一次读取一个一个字符,3.BufferedReader则是比InputStreamReader更高级,它封裝了StreamReader类,一次读取一行的字符例:BufferedReader bufferedReader = new Bu...

2019-04-04 00:12:37 82

空空如也

空空如也

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

TA关注的人

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