3 码农的进阶之路

尚未进行身份认证

我要认证

三人行,必有我师。学海无涯

等级
TA的排名 4w+

MySQL主从复制问题集锦

问题一:‘COULD NOT FIND FIRST LOG FILE NAME IN BINARY LOG INDEX FILE’这个报错通常伴随着Slave_IO_Running: NoSlave_IO_Running: No 一方面原因是因为网络通信的问题也有可能是日志读取错误的问题。解决方案:从数据库停止slave slave stop;刷新master上binlog日志fl...

2020-04-28 22:49:50

Semaphore类浅析

SemaphoreSemaphore,信号量。有时被称为信号灯,是在多线程环境下使用的一种设施,可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量,一旦该关键代码段完成了,那么该线程必须释放信号量,其他想进入该关键代码段的线程必须等待直到第一个线程释放信号量。举例说明:某广场有3个停车位,过来了6辆车,因此会有3辆车暂时没有车位,但是只要车位被空出...

2020-03-15 21:20:01

CyclicBarrier类浅析

CyclicBarrierCyclicBarrier也可以向CountDownLatch`一样,协调多个线程的执行。只是略有不同的是,CountDownLatch是减至0,而CyclicBarrier是加至某个数字。举例:就好比 只有集齐了7颗龙珠才能召唤神龙常用API方法如下CyclicBarrier(int parties) 创建一个新的 CyclicBarrier,...

2020-03-15 21:19:22

CountDownLatch类浅析

CountDownLatch内部维护了一个计数器,只有当计数器==0时,某些线程才会停止阻塞,开始执行。就好比火箭发射,只有当读秒从10->1之后才执行发射动作一样。构造方法摘要CountDownLatch(int count) 构造一个用给定计数初始化的 CountDownLatch。常用方法await() 使当前线程...

2020-03-15 21:18:35

Java锁的分类

公平锁、非公平锁所谓公平锁,就是多个线程按照申请锁的顺序来获取锁,类似排队,先到先得。而非公平锁,则是多个线程抢夺锁,会导致优先级反转或饥饿现象。区别:公平锁在获取锁时先查看此锁维护的等待队列,为空或者当前线程是等待队列的队首,则直接占有锁,否则插入到等待队列,FIFO原则。非公平锁比较则不然,上来直接先尝试占有锁,失败则采用公平锁方式。非公平锁的优点是吞吐量比公平锁更大。其中synchro...

2020-03-15 21:15:21

AtomicReference类浅析

AtomicReference类JUC中封装了对基本类型的原子操作类,那么如果我们想要保正一个对象的原子性行为呢?这里AtomicReference就派上了用场。使用起来与原子类基本一样。public class AtomicReferenceDemo { public static void main(String[] args) { User user1 = n...

2020-03-15 21:13:57

CAS的ABA问题及解决方案

ABA问题比如有两个线程,线程T1和线程T2。线程T1的执行时间短(假如需要2s),线程T2的执行时间长(假如需要4s),也即是线程T2执行一次的时间,线程T1可以执行多次。当线程T1将变量从A变成B,又从B变成A,这对线程T2而言,它是不知道该变量是否发生过变化的。可能会导致不可预知的问题。通过原子类举例public static void main(String[] args) {...

2020-03-15 21:13:02

CAS及其原理分析

CAS 即 Compare and swap。比较并交换,是一种很重要的同步思想。如果主内存的值跟期望值一样,那么就进行修改,否则一直重试,直到一致为止。上一节当中的原子性问题,就可以基于CAS思想进行解决。如下public class CasDemo { private AtomicInteger num=new AtomicInteger(); public stati...

2020-03-15 21:12:28

volatile关键字详解

前言我们知道,操作系统主要由CPU、I/O设备,主存等组成。但是由于CPU的处理速度与内存的读取速度相差好几个量级,而且CPU是非常宝贵的资源。因此在内存与CPU之间引入了高速缓存,内存将待处理的数据放入高速缓存,cpu从高速缓存读取数据,借以充分利用CPU的资源。CPU的高速缓存分为L1 cache/L2 cache/L3 cache。它们的存储大小L1<L2<L3,其读取速度...

2020-03-15 21:10:57

JVM垃圾收集方法

标记-清除算法算法分为标记和清除两个阶段,首先标记处所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它的主要不足:1、效率问题,标记和清除两个过程的效率都不高2、空间问题 标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后再程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前出发另一次垃圾收集动作。回收前状态:回收后状态:复制算法为了解...

2020-03-14 17:50:13

JVM垃圾标记方法

引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的问题:该算法很难解决对象之间相互循环引用的问题 a=b b=a可达性分析算法若一系列称为GC Roots的对象的起始点到达对象之间不存在通路,或不可达,则判断该对象是可回收的对象若对象在进行可达性分析后发现没有与GC Roots相连接的...

2020-03-14 17:15:56

JVM常用参数名词解释

基于JDK1.8新生代GC(Minor GC)指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快Major GC清理老年代Full GC清理整个堆空间 包括年轻代和老年代-Xms初始堆内存大小,默认是物理内存的1/64,等价于-XX:InitialHeapSize-Xmx最大堆内存大小,默认是物理内存的...

2020-03-14 17:04:59

散列表及hash冲突

拉链法 解决hash冲突拉链法平均查找长度ASL=(17+24+3*1)/12=1.5 平均查找长度越短(比较字数越少) 效率越高哈希表的本质是一个数组,数组中每一个元素称为一个箱子(bin),箱子中存放的是键值对。哈希表的存储过程如下:根据 key 计算出它的哈希值 h。假设箱子的个数为 n,那么这个键值对应该放在第 (h % n) 个箱子中。如果该箱子中已经有了键值对,就使用...

2020-03-14 16:58:30

MySQL主从复制

原理分析MySQL复制过程分为三步:1、master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件(binary log event)2、slave将master的binary log events拷贝到它的中继日志(relay log)3、slave重做中继日志中的时间,将改变应用到自己的数据库中。mysql复制是异步的且串行化的。复制的基本原则1、每...

2020-03-01 18:24:16

MySQL 行锁、间隙锁分析

文章目录行锁更新同一行数据更新不同行数据无索引或索引失效 行锁升级为表锁如何手动锁定一行结论行锁分析优化建议间隙锁及其危害行锁特点:偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度最高。以dept表为例 演示行锁。首先把mysql自动提交事务给关了。set autocommit=0;更新同一行数据更新不同行数据当前会话读该行...

2020-03-01 18:15:32

MySQL锁机制概述及表锁分析

MySQL锁机制定义:锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中中,除传统的计算资源(如CPU、RAM、I/O等) 的争用以外,数据也是一种供多个用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的问题,锁冲突也是影响数据库并发访问性能的一个重要因素。因此,锁对于数据库也是很重要的。锁的分类从数据操作的类型可分为读锁、写锁读锁(共享锁):针对同...

2020-03-01 18:09:21

MySQL调优利器【show profiles】

show profiles是mysql提供可用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优测量。默认情况下,参数处于关闭状态,并保存最近15次的运行结果分析步骤1、查看当前版本sql是否支持show profilesmysql> show variables like 'profiling%';+------------------------+-------+...

2020-03-01 18:07:11

MySQL 慢查询日志分析

慢查询日志MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句。运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。默认情况下,MySQL数据库没有开启慢查询日志,需要手动设置这个参数。如果不是调优需要的话,不建议开启这个参数。因为开启慢查询日志会或多或少带来一定的性能损耗。慢查询日志的查看以及开启show va...

2020-03-01 18:03:51

MySQL 查询优化、【order by】及【group by】关键字优化

文章目录原理order by关键字优化fileSort排序原理提高order by速度的方式order by 案例总结使用索引进行排序的例子不能使用索引进行排序总结group by关键字优化优化原则:小表驱动大表,即小的数据集驱动大的数据集原理select * from A where id in (select id from B)等价于for select id from B {f...

2020-03-01 18:00:55

MySQL is null真的不走索引吗?

MySQL版本5.7建表create table staffs(id int primary key auto_increment,name varchar(24) not null default '' comment '姓名',age int not null default 0 comment '年龄',pos varchar(20) not null default '' co...

2020-03-01 17:44:28

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。