- 浏览: 32454 次
-
最新评论
文章列表
springboot本身集成了logback,所以无需引入依赖;
在resources下建立logback.xml文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds"
debug="false"> ...
cat :显示切割数据
-f:选择显示切割列;
-s:比现实没有分割的行
-d:自定义分隔符
cut -d ‘ ’-f 1,3 a.txt : 以空格为分隔符显示第一列和第三列;这种情况不能分隔的行也会显示出来,如果不需要可以加一个-s,如下所示:
cut -d ' ' -s -f 1,3 a.txt
sort :文件数据排序
-n:按数值排序
-r:降序;
-t:自定义分隔符;
-k : 选择拍序列;
-f :忽略大小写;
- u:合并相同行;
sort ...
该图代表jvm中的新生代,老年代,持久代; 新生代和老年代主要指堆区(管理对象),持久代主要指方法区(因为方法区里是类信息,静态变量,常量等需要“持久”的信息);我们 ...
和CountDownLatch有点类似,CyclicBarrier也是类似一个栅栏操作----等待子线程全部执行完再执行下个动作;但是CyclicBarrier能重复使用,CountDownLatch只能用一次,
public class CyclicBarrierDemo {
public static class Soldier implements Runnable{
private String soldier;
private final ...
在并发编程中我们最常用到的两块:一种是基于CAS 机制实现的Atomic类操作,一种是基于AQS实现的同步类实现如常用的ReentrantLock/Semaphore/CountDownLatch等;
CAS:
CAS是英文单词Compare and Swap的缩写,翻译过来就是比较并替换。
CAS机制中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。
更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B。
从思想 ...
CountDownLatch允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行;CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。
public class CountDownLatchDemo {
static CountDownLatch countDownLatch=new CountDow ...
ReentrantReadWriteLock是Lock的另一种实现方式,我们知道ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程、写线程和写线程同时访问。相对于排他锁,提高了并发性。在实际应用中,大部分情况下对共享数据(如缓存)的访问都是读操作远多于写操作,这时ReentrantReadWriteLock能够提供比排他锁更好的并发性和吞吐量。
class RWDictionary ...
我们知道独占锁可以实现临界资源一次只能被一个线程访问,但如果想实现多个线程同时访问的话就要用到信号量Semaphore——记录一个共享资源被访问线程的个数,Semeahore更像是一个共享锁,当它的许可数为1的时候就相当于独占锁了;acquire(int n)拿许可,一次可拿多个、tryAcquire()尝试拿许可boolean,也可设置尝试获取时间、release()释放许可;
public class SamephoreDemo {
static Semaphor ...
java中的类大致分为三种: 1).系统类 2).扩展类 3).由程序员自定义的类类装载方式,有两种 1).隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐 ...
在sychronized中我们可以使用wait(),notify()来让线程等待、唤醒;在ReentrantLock中我们可以用Condition中的await(),signal()来实现;
public class LockCondition {
private static ReentrantLock lock=new ReentrantLock();
private static Condition condition=lock.newCondition();
...