自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mcj19970614的博客

日常感悟

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

转载 mysql事物

mysql事物隔离性的实现共享锁排他锁独占锁临键锁间隙锁:根据当前id值判断,(-%,1),(1,3),(3,4)自增锁意向锁持久性:事物提交,对数据库的更新是持久的,wal日志,write ahead log 预写日志一致性是事物的根本追求##原子性的实现undo log(逻辑日志)、rdo log->innodbbin log->mysql原子性实现原理通过undo log,操作数据前会将数据放到undo log,如果用户恢复了操作则通过undo log将数据

2020-10-09 00:05:07 167

原创 数据库索引

#索引功能:索引,为了查询更快,但是修改效率降低,因为要更新索引索引作为文件存储到磁盘中,磁盘单位为页,4k为1页.磁盘预读:最好将相邻的数据都加载进内存以备访问,加载的数据一般为一页的整数倍,内存与磁盘以页为单位交换数据磁盘io为数据库瓶颈索引是什么索引是帮助mysql高效查找的数据结构,如某索引记录了当前索引的数据在哪一个文件中,文件中的偏移量索引存储在文件系统中,索引的文件存储形式与存储引擎有关索引的数据结构b+树(叶子节点不存数据实例,可以存很多索引,底层节点用来存储数据,并将

2020-10-08 21:26:49 141

原创 zero copy

zero copy,没有cpu参与的拷贝零拷贝技术,大多数网络服务器都是client-server形式的.当程序想将磁盘上的文件发给服务器时要通过:硬盘 > 内核缓冲区 > 程序 > socket > 协议栈 4次拷贝用户态 > 内核态 > 用户态 > 内核态 > 用户态. 4次态的切换mmap优化:硬盘 > 内核缓冲区 > socket > 协议栈用户态 > 内核态 > 用户态 > 内核态 > 用

2020-10-08 14:58:18 148

原创 spring mvc核心

spring mvc一些web概念:servlet:服务端小程序,用来接收并响应用户请求mvc介绍:mvc是,m(model),v(view),c(controller)的缩写.mvc是一种设计规范,将业务逻辑,数据,显示分离的方法来组织代码.mvc主要降低了业务以及视图之间的耦合度.mvc是一种架构模式,mvc架构model(模型):数据模型,提供要展示的数据.数据格式,数据模型view(视图):负责模型数据的展示,一般是用户页面controller(控制器):接收用户请求,委托给模型进行

2020-10-08 14:57:38 106

原创 syn关键字

syn关键字以前做数据同步是使用syn关键字加锁的,直到juc包的出现,有了cas操作,锁操作效率变高markword里记录了锁.锁升级步骤1,new 普通对象2.加了syn关键字后,偏向锁3,一旦竞争激烈,就变成轻量级锁(自旋锁),也有一种可能是轻量级锁未启动直接上升到轻量级锁4.竞争再加剧,重量级锁(向操作系统申请)看对象分布的第一组0000 0000的倒数两位0 0 1 :刚new的1 0 1:偏向锁0 0:轻量级1 0:重量级偏向锁偏向锁和轻量级锁是用户空间锁,不需要和操

2020-10-08 14:57:03 271

原创 spring事物

spring事物spring事物引言spring中的事物总结spring事物原理@Transaction事物的传播行为事物回滚总结类的调用图引言事物是一种概念,可以将一些分散的操作划分成一组原子性操作,要么全部成功,要么全部失败。常见的例子有银行转账操作。事物具有4种性质(ACID)原子性(atomicity):强调事务的不可分割.一致性(consistency):事务的执行的前后数据的完整性保持一致.隔离性(isolation):一个事务执行的过程中

2020-10-08 14:56:31 302

原创 分布式定理

分布式引入cap定理:一致性,可用性,分区容错性一致性:数据时刻保持一致可用性:主节点宕机没关系,从节点补上分区容错性:数据不一致没关系,最终一致就可以redis单机版的可靠性是由本地磁盘保证的,如果当前机器会宕机,那么本地可靠性也没有了akf:x、y、z轴x轴:全量镜像,大家都一样y轴:根据功能业务区分数据,比如订单、用户信息、页面热点数据,z轴:在业务数据量极大,需要拆分业务数据到不同的redis里,再根据业务拆分redis单机不行,可能会宕机,那么就x轴增强,加入多台redis

2020-10-07 16:58:32 231

原创 syn关键字

syn关键字以前做数据同步是使用syn关键字加锁的,直到juc包的出现,有了cas操作,锁操作效率变高markword里记录了锁.锁升级步骤1,new 普通对象2.加了syn关键字后,偏向锁3,一旦竞争激烈,就变成轻量级锁(自旋锁),也有一种可能是轻量级锁未启动直接上升到轻量级锁4.竞争再加剧,重量级锁(向操作系统申请)看对象分布的第一组0000 0000的倒数两位0 0 1 :刚new的1 0 1:偏向锁0 0:轻量级1 0:重量级偏向锁偏向锁和轻量级锁是用户空间锁,不需要和操

2020-10-07 16:57:47 294

原创 aqs

aqsAQS(abstract queue synchronizer).为什么底层是cas+volatile概念aqs是一个框架,用来提供一种阻塞锁和一系列依赖等待队列的同步器框架比如reentrantlock,countdownlatch使用方法是继承aqs并实现它的模版方法然后讲子类作为组件的内部类是java自带的 synchronized以外的锁机制接口Lock接口,apilocktrylockunlock实现lock接口的有很多类,比如reentrantlock,readw

2020-10-07 16:56:55 105

原创 JUC锁工具

锁类型可重入锁syn关键字就是可重入的,可以在m1方法中调用m2方法.syn中可以调用syn方法Reentrant lock (经典消费者生产者问题)可重入锁,用于替换syn。但是syn是自动解锁的,Reentrant lock 需要手动解锁排他锁生产者问题与消费者问题,原本想用两把Object锁发现不行,因为wait与notify需要有锁才可以使用不然就会出错,而线程无法先确定谁先开启唤醒,唤醒如果没有wait的线程会报错apilock、unlock使用起来与syn相同tr

2020-10-07 16:56:10 92

原创 锁原理

java锁原理原子操作:原子操作可以是一个步骤,也可以是多个步骤,但是它执行的顺序不可以被打乱,也不可以被分割,只执行其中一部分操作,将整个操作视为一个整体.,资源在该操作中保持一致.CAS(compare and swap)CAS(Compare-And-Swap) 算法是硬件对于并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令,用于管理对共享数据的并发访问,比较与交换,首先会对内存中对数据进行比较,相同才进行赋值.内存中进行了限制,同一时间只允许一个线程进行访问内存地址,如果CAS操作失

2020-10-07 16:40:21 170

原创 IO原理

I/O内核:管理硬件,设备。分层,内核存在于硬盘中。用户空间的程序不可以直接访问内核程序。用户程序访问内核程序需要进行系统调用。io的发展过程,是对系统调用sc的成本优化。BIO,讲述系统内核的实现例如网络socket通信时进行系统调用,io-socket得到一个socket文件描述符fd,绑定到8090端口上(bind)。系统调用accept指令,等待连接。linux下一切空间都是文件,都有文件描述符fdaccept监听客户端连接。客户端连接后服务器,系统会发生阻塞,监听客户端发送到信息

2020-10-07 16:39:37 429

原创 线程本质

多线程本质线程是进程执行的基本单位(线程的概念)java中创建多线程,就是操作系统的一个子进程,通过clone的系统调用生成,克隆可以共享文件系统进程与线程的区别进程是一个程序运行起来的状态,是操作系统分配资源的基本单位.线程是执行调度的基本单位,进程分配资源最重要的是独立的内存空间线程在linux中的实现就是一个普通进程(fork方法系统调用,c语言写的)a父进程调用fork系统调用启动b子进程,它们共享一块内存空间.jvm级别的线程Thread与操作系统级别的线程是一一对应的(lwp),重

2020-10-07 16:38:51 246

原创 es

esEs,搜索,就是通过一个关键字或者一段描述得到正确的结果往常搜索都用数据库精确搜索,但是数据库模糊搜索,索引不起作用,事件复杂度是o(n),性能低倒排索引:查询小米智能nfc手机,被分词成为小米、智能、nfc、手机在现有数据中小米手机匹配2次,小米nfc手机匹配3次,小米耳机匹配1次,相关度最高的就是小米nfc手机,用空间换时间es中的倒排索引存的是:包含关键字的document list,比如包含了小米关键字的,数据行id,1、2、3、4关键词在doc里出现的次数(tf,词频,越高代表越

2020-10-07 16:37:08 73

原创 mq

mqactive mqmq,消息中间件,它可以用来存储通信数据订阅,发送模型队列详情功能是解耦合,将服务分开同步模型Step1 发送数据 step2 接收数据 step3 接收数据异步模型step1 发送数据 step2、step3去mq找数据概念消息:两台计算机之间传输的数据单位消息队列:用来保存消息的容器,如果发送数据时,接收者不可用,那队列会保存消息直到成功传递broker:一个实例,控制台queue:只支持一次消费,消费端关注这个queuetopic

2020-10-07 16:35:42 281 1

原创 redis

redis常识:数据存储在磁盘中,磁盘的寻址是ms级,带宽为g/m级别内存寻址为ns级别,所以磁盘比内存在寻址上慢10万倍,带宽直接走cpuio buffer:成本问题磁盘有磁道、扇区,1扇区为512byte,区域越小,成本变大(索引4k,页)数据也是以4k为基本单位去存储的因为操作系统控制无论读取多少 都是以4k为单位所以设置小了没必要数据存储在磁盘文件中,文件越大,查询越慢.为什么?查询硬盘时io成为瓶颈.数据库软件中以1页为单位查询,如果没有索引还是全量io也是非常慢的.索引也是4k

2020-10-07 16:34:55 243

原创 大话设计模式

设计的重要性在工作中,面对着一页页的代码,脑中只有一个想法就是将需求实现。在中午的空闲时间里仔细回想了这段时间,发现自己对于编程的理解不够深,还停留在使用代码进行业务开发的阶段。在阅读了一些文章后,发现编程是一门艺术。对于初学者来说,应用程序只要不会报错并且运行就可以了。对于已经工作的人来说,应用程序不仅仅是不会报错能运行就行,你的代码面向的不仅仅是自己,还有日后的维护人员也要面对你的代...

2018-12-06 17:31:20 104

原创 枚举类

@Getter@AllArgsConstructorpublic enum ApiName { ALARM_NOW("alarmNow"), NETWORK_CLIENT("networkClient"), IP_LIST("ipList"), DEPARTMENT("department"), VIOLATION("violation"); ...

2018-09-07 17:13:17 164

转载 jackson的简单应用

Jackson是我使用的第二种json序列化工具,第一种是阿里的fastjson1.Jackson的导入<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</ar...

2018-09-05 17:12:07 301

原创 sql语句记录

select * from table_a where a.id = x;select * from table_a where a.id = y;select * from table_a where a.id = z;select * from table_a where a.id in x,y,z查询条件为多个的时候可以使用in查询,上面的sql查询结果是一样的,只不...

2018-09-03 11:30:23 178

原创 ThreadPool(线程池)

在以往写程序时并没有多线程的概念,导致程序运行时效率极低,于是抽时间去学习了以下线程池的相关概念,废话不多说马上开始线程:线程是进程的一部分,一个进程是一个程序,一个进程是由多个线程组成。线程池:通常写线程代码时,往往在一段任务执行时,会创建线程,在任务结束时会销毁线程。这和生活中的一次性筷子相似,用了一次就扔,下次要用再买。会造成大量的浪费(环保)。所以通常人家家里都会有许多的...

2018-08-31 16:25:08 1576

转载 HystrixCommand

主要用来控制 HystrixCommand 命令的行为,主要有下面5种类型的属性配置:execution配置 该配置前缀为 hystrix.command.defaultexecution.isolation.strategy :该属性用来设置执行的隔离策略,有如下二个选项: THREAD:通过线程池隔离的策略,在独立线程上执行,并且他的并发限制受线程池中线程数量的限制(默认) SE...

2018-06-28 15:46:58 730

原创 socket 与 websocket 区别

socket 与 websocket讲到socket与 websocket 首先要讲软件通信过程 软件通信有七层结构中由协议套协议最终组成最高级应用层协议(http),下三层结构偏向与数据通信,上三层更偏向于数据处理,中间的传输层则是连接上三层与下三层之间的桥梁。数据传输层:tcp、udp协议,tcp协议依赖互联网协议(ip协议)。socket在第五层会话层,它并不是一个协议,而是一...

2018-05-25 16:13:39 14374

原创 springboot测试

package com.example.demo;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBoo...

2018-05-23 17:34:51 235

转载 spring boot 定时器

@SpringBootApplication@EnableScheduling //开启定时器public class SpringbootHelloApplication {public static void main(String[] args) { SpringApplication.run(SpringbootHelloApplication.class, a...

2018-05-22 14:18:53 85

原创 gitlab的使用

gitlab原本在工作中使用的版本控制工具为svn,由于是多人合作开发,产生操作失误,会导致一些严重的后果,比如我的操作就导致项目搬家,重新控制,非常不好。后来使用了gitlab,因为没有使用过git ,特地去网络上找了git的相关使用资料。首先安装gitgit是有密钥这一个东西的,我们要先生成密钥,然后在自己的git账户里设置密钥。打开本地git bash,使用如下命令生成s...

2018-05-22 11:24:04 247

原创 java虚拟机系列(3)

类加载器虚拟机设计团队把类的加载阶段中的通过一个类的全限定名称去获取此类的二进制字节流,这个动作给放到java虚拟机的外部去实现,以便让应用程序自己决定如何去获取所需要的类,实现这个动作的代码模块称之为,类加载器。java类加载器可以说是java语言的一项创新,也是java语言流行起来的原因之一。类与类加载器类加载器虽然只用于实现类的加载动作,但是它在java程序中起到的作用却非常...

2018-05-15 20:47:04 131

翻译 java虚拟机系列(2)

类的加载机制在将java类编写完成之后,我们启动了java虚拟机,然后就会编译,调用我们写好的一些java方法那么,虚拟机是如何将我们的java文件进行加载运行的呢?我们编译后的class文件到了虚拟机里之后,会发生什么样的变化呢概括一下: 虚拟机将class文件内描述类的数据加载到内存中,并且对数据进行校验,转换解析,初始化,最终形成可以被java虚拟机使用的java类...

2018-05-10 23:53:42 162

转载 jvm虚拟机系列(1)

jvm(虚拟机)是什么虚拟机 :虽然平时我们用的大多是Sun(现已被Oracle收购)JDK提供的JVM,但是JVM本身是一个规范,所以可以有多种实现,除了Hotspot外,还有诸如Oracle的JRockit、IBM的J9也都是非常有名的JVM。Java语言具有跨平台的特性,这也是由JVM来实现的。更准确地说,是Sun利用JVM在不同平台上的实现帮我们把平台相关性的问题给解决了,这就好比是...

2018-05-06 15:19:28 125

转载 Websocket 详情 与 spring websocket后台

目前,如果需要与服务器长时间的通信,有两种方法,轮询,每隔一段时间就向服务器发出请求获取数据websocket连接1 有哪些好处,工作量简单(代码简单) 1 有哪些坏处,对服务器压力过大,每隔一段时间就会访问,可能会产生许多的没用请求造成资源的浪费2 有哪些好处,在说2有哪些好处之前,先来介绍以下websocket到底是什么 websocket的背景Websocek...

2018-04-20 12:54:08 838

转载 restful风格的程序设计

Rest 即 Representailonal state transfer 的缩写,我对这个词组的翻译是表现层的状态转换resource (资源):对象的单个实例集合:对象的集合,如 动物第三方:使用我们接口的开发者表现层:representation“资源”是一种信息实体,它可以有多种外在表现形式,我们把资源具体呈现出来的形式,叫作它的“表现层”状态转化访问一个网站,就代表了客户端和服务器的一...

2018-04-20 12:47:55 198

空空如也

空空如也

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

TA关注的人

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