自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 问答 (1)
  • 收藏
  • 关注

原创 InnoDB锁

事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。防止更新丢失,并不能单靠数据库事务控制器来解决,需要应用程序对要更新的数据加必要的锁来解决,因此,防止更新丢失应该是应用的责任。“脏读”、“不可重复读”和“幻读”,其实都是数据库读一致性问题,必须由数据库提供一定的事务隔离机制来解决。数据库实现事务隔离的方式,基本上可分为以下两种4种隔离级别比较各具体数据库并不一定完全实现了上述4个隔离级别,MySQL 支持全部4个隔离级别,但在具体实现时,有一些特点,比如在一些隔

2022-12-03 18:37:26 157

原创 volatile

volatile变量在每次被线程访问时,都强迫从主内存中重读该变量的值,而当该变量发生变化时,又会强迫线程将最新的值刷新到主内存。这样任何时刻,不同的线程总能看到该变量的最新值多线程版本(错误的)volatile关键字修改版在给helper对象初始化的过程中,jvm做了下面3件事:由于jvm的"优化",指令2和指令3的执行顺序是不一定的,当执行完指定3后,此时的helper对象就已经不在是null的了,但此时指令2不一定已经被执行。假设线程1和线程2同时调用getHelper()方法,此时线程1执行完指

2022-12-03 18:37:10 140

原创 内存屏障介绍

每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一个变量的缓存值不同硬件层的内存屏障分为两种:Load Barrier 和 Store Barrier即读屏障和写屏障内存屏障有两个作用内存屏障可以被分为以下几种类型:volatile的内存屏障策略非常严格、悲观volatile重排序规则:volatile内存屏障规则:

2022-12-03 18:36:42 421

原创 java-concurrency

主内存工作内存。

2022-12-02 09:30:10 109

原创 java虚拟机

对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,。Java堆是垃圾收集器管理的主要区域,因此很多时候也被称做“GC堆”。如果从内存回收的角度看,由于现在收集器基本都是采用的分代收集算法,所以Java堆中还可以细分为:新生代和老年代;再细致一点的有Eden空间、From Survivor空间、To Survivor空间等。

2022-12-02 09:29:16 185

原创 SQL优化

sql优化

2022-12-02 09:28:38 39

原创 AQS介绍

在JDK1.5之前,一般是靠synchronized关键字来实现线程对共享变量的互斥访问。synchronized是在字节码上加指令,依赖于底层操作系统的Mutex Lock实现。AQS定义了一套多线程访问共享资源的同步器框架,是整个java.util.concurrent包的基石,Lock、ReadWriteLock、CountDowndLatch、CyclicBarrier、Semaphore、ThreadPoolExecutor等都是在AQS的基础上实现的。

2022-12-02 01:57:57 151

原创 condition

在java中,对于任意一个java对象,它都拥有一组定义在java.lang.Object上监视器方法,包括wait(),wait(long timeout),notify(),notifyAll(),这些方法配合synchronized关键字一起使用可以实现等待/通知模式。同样,Condition接口也提供了类似Object监视器的方法,通过与Lock配合来实现等待/通知模式。

2022-12-02 01:57:38 63

原创 mysql索引

红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。例如,Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红黑树去实现的。

2022-12-02 01:56:34 55

原创 synchronized

加锁:当一个线程访问同步块并获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程ID,以后该线程在进入和退出同步块时不需要花费CAS操作来加锁和解锁,而只需简单的测试一下对象头的Mark Word里是否存储着指向当前线程的偏向锁,如果测试成功,表示线程已经获得了锁,如果测试失败,则需要再测试下Mark Word中偏向锁的标识是否设置成1(表示当前是偏向锁),如果没有设置,则使用CAS竞争锁,如果设置了,则尝试使用CAS将对象头的偏向锁指向当前线程(此时会引发竞争,偏向锁会升级为轻量级锁)。

2022-12-02 01:56:00 43

原创 BlockingQueue

阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列支持阻塞添加和阻塞删除方法Java中的阻塞队列接口BlockingQueue继承自Queue接口插入方法:add(E e) : 添加成功返回true,失败抛IllegalStateException异常offer(E e) : 成功返回 true,如果此队列已满,则返回 false。

2022-12-02 01:55:42 44

原创 CyclicBarrier

CyclicBarrier

2022-12-02 01:54:53 36

原创 生产者消费者

生产者消费者

2022-12-02 01:54:42 54

原创 java线程池

java线程池

2022-12-01 00:45:05 47

原创 Elasticsearch常用搜索

Elasticsearch常用搜索

2022-12-01 00:20:45 343

原创 ES分析器

ES分析器

2022-12-01 00:19:31 705

原创 词干提取器

词干提取器

2022-12-01 00:17:50 542

原创 字典树简介

字典树简介

2022-12-01 00:16:45 304

原创 Double Array Trie

Double Array Trie

2022-12-01 00:14:33 224

原创 AC自动机

AC自动机

2022-12-01 00:11:39 670

原创 Levenshtein Distance

Levenshtein Distance

2022-12-01 00:08:17 211

原创 Damerau–Levenshtein distance

Damerau–Levenshtein distance

2022-12-01 00:03:13 350 1

原创 Elasticsearch学习

ES学习

2022-12-01 00:00:37 442

原创 YARN简介

YARN

2022-11-30 23:55:43 1777

原创 HDFS简介

HDFS

2022-11-30 23:52:40 1581

原创 kafka

kafka

2022-11-30 23:47:40 119

原创 Hbase学习

Hbase学习

2022-11-30 23:39:18 416

原创 Hive学习

Hive学习

2022-11-30 23:32:18 587

原创 spark简介

spark简介

2022-11-30 23:17:23 159

空空如也

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

TA关注的人

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