自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Redis的数据类型 - string

Redis的数据类型 - stringstring 字符串string:最简单的字符串类型键值对缓存。关于keykeys *:查看所有的keytype key:key的类型stringget/set/del:查询/设置/删除set rekey data:设置已经存在的key,不会覆盖sentnx rekey data:设置已经存在的key,不会覆盖set key value ex time:设置带过期时间的数据expire key:设置过期时间ttl:查看剩余时间,-1永不过期,-2

2021-04-14 10:06:38 139

原创 并发编程(四)

等待/通知机制是指一个线程A调用了对象O的wait()方法进入等待状态,而另一个线程B调用了对象O的notify()或者notifyAll()方法,线程A收到通知后从对象O的wait()方法返回,进而执行后续操作。上述两个线程通过对象O来完成交互,而对象上的wait()和notify/notifyAll()的关系就如同开关信号一样,用来完成等待方和通知方之间的交互工作。notify():通知一个在对象上等待的线程,使其从wait方法返回,而返回的前提是该线程获取到了对象的锁,没有获得锁的线程重新进入W

2020-07-14 10:06:51 169

原创 并发编程(三)

ThreadLocal与Synchonized的比较ThreadLocal和Synchonized都用于解决多线程并发訪问。可是ThreadLocal与synchronized有本质的差别。synchronized是利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程訪问。而ThreadLocal为每个线程都提供了变量的副本,使得每个线程在某一时间訪问到的并非同一个对象,这样就隔离了多个线程对数据的数据共享。Spring的事务就借助了ThreadLocal类。Spring会从数据库连接池中获得一个c

2020-07-14 09:50:15 189

原创 数据结构-二叉树

/*** 构建二叉树* @param inputList 输入序列* @return*/public static TreeNode crateBinaryTree(LinkedList inputList){TreeNode node = null;if (inputList == null || inputList.isEmpty()){return null;}Integer data = inputList.removeFirst();if (data != null){n

2020-07-14 08:59:17 129

原创 数据结构-队列

private int[] array;private int front;private int rear; public MyQueue(int capacity){ this.array = new int[capacity]; } /** * 入队 * @param element 入队的元素 */ public void enQueue(int element) throws Exception { if

2020-07-14 08:58:20 189

原创 数据结构-链表插入

//头节点指针private Node head;//尾节点指针private Node last;//链表实际长度private int size;/** * 链表插入元素 * @param data 插入元素 * @param index 插入位置 */public void insert(int data,int index){ if (index<0 || index>size){ throw new IndexOutOfBoundsExc

2020-07-14 08:56:36 399

原创 数据结构-数组插入

private int[] array;private int size;public MyArray(int capacity){ this.array = new int[capacity]; size = 0;}/** * 数组插入元素 * @param element 插入的元素 * @param index 插入的位置 */public void insert(int element,int index){ if(index<0 || index&

2020-07-14 08:55:15 798

原创 并发编程(二)

run()和start()Thread类是Java里对线程概念的抽象,可以这样理解:我们通过new Thread()其实只是new出一个Thread的实例,还没有操作系统中真正的线程挂起钩来。只有执行了start()方法后,才实现了真正意义上的启动线程。start()方法让一个线程进入就绪队列等待分配cpu,分到cpu后才调用实现的run()方法,start()方法不能重复调用,如果重复调用会抛出异常。而run方法是业务逻辑实现的地方,本质上和任意一个类的任意一个成员方法并没有任何区别,可以重复执行,

2020-07-13 21:01:36 131

原创 并发编程(一)

Java程序天生就是多线程的一个Java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上Java程序天生就是多线程程序,因为执行main()方法的是一个名称为main的线程。[6] Monitor Ctrl-Break //监控Ctrl-Break中断信号的[5] Attach Listener //内存dump,线程dump,类信息统计,获取系统属性等[4] Signal Dispatcher // 分发处理发送给JVM信号的线程[3] Finalize

2020-07-13 20:30:12 173

空空如也

空空如也

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

TA关注的人

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