自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql (日志文件)

日志文件(Innodb)日志文件的写是顺序写。写磁盘需要寻道,然后再写。故此写日志文件比写磁盘要快。为了避免频繁的读写磁盘,mysql优先在内存中处理数据。然后同步到磁盘中。为了保证数据最终一致性以及事务回滚以及主从同步 引入以下三种日志文件。数据库写入数据流程1.开启事务。2.写undolog 记录具体操作之前的数据。用于事务回滚,以及MVCC3.操作数据,内存操作。4.写redolog文件,保证数据最终一致性,用于恢复数据5.事务提交6.事务提交同时写binlog文件,.

2020-09-18 00:04:03 184

原创 Mysql (索引)

索引Hashmysql支持hash索引,查询时间复杂度o(1),但是范围查找需要全表扫描。适合傻瓜查询。类似于map功能。B+树二叉查找树:为什么不用?最大的问题不平衡平衡二叉树:为什么不用?深度太高。二叉。存储数据有限B树:多叉,一个节点可以存多个数据。可以用。但是节点存储索引及数据。导致单个页存放节点数量变小,树深度变大。B+树:B树的改造,非叶子节点只存索引,不存数据,可以更大限度的存储多个索引id,使其深度减小。 第二点:叶子节点有序方便范围查询。innoD...

2020-09-15 23:06:40 130

原创 Mysql (架构)

Mysqlmysql架构组成部分。连接层、服务层、引擎层、存储层连接层连接处理、权限认证、以及相关安全方案。引入连接池,减少建立连接销毁连接的开销,并且控制连接数。服务层包括缓存处理、解析器、优化器、执行器。首先查询缓存(8.0废弃)然后解析sql,优化sql找到最适合的索引,进行执行sql操作,访问引擎层引擎层包括innodb和mylsam。负责数据的存储和提取。存储层文件系统的存储(磁盘),完成与存储引擎的交互sql执行流程...

2020-09-14 23:20:24 146

原创 并发(线程池)

线程池概念维护线程的池化对象。线程池中有很多线程,这些线程可以复用。增加线程池可以减少创建线程和销毁线程的开销,提高效应速度,管理维护线程数量等。流程: 拿核心线程 -> 核心线程数已满? ->放入工作队列等待分配线程(创建线程) -> 工作队列已满? ->创建线程执行 -> 最大线程数已满? -> 触发抛弃策略参数核心线程数 对应该数量的线程一直存在,不会被销毁 最大线程数 线程最大创建的数量,超过此值,会触发丢弃策...

2020-09-10 23:29:12 273

原创 并发 aqs

简介抽象队列同步器。多个线程出现抢占资源时,一旦有线程获取资源,其他线程放入队列,并阻塞(LockSuport.park() 该方法不会释放CPU资源)。当临界资源被释放,唤醒队列中的线程。核心参数status 临界资源,判断是否获取到锁。通过cas进行修改。 阻塞队列 未获取到临界资源的线程,封装为node节点放入双向链表中。 条件队列 栅栏实现类,将线程放入条件队列,满足执行条件时转为同步队列,释放锁后释放所有线程概念独占锁 临界资源独占,...

2020-09-09 23:06:38 136

原创 并发(volatile synchronized)

volatile保证可见性(防止指令重排序)参考cpu缓存模型,volatile底层是通过对cpu总线加锁。(总线加锁力度较大,一般为锁总线行),被volatile修饰的变量,会在cpu级别加总线锁,保证JMM模型中线程的工作内存即使读的是cpu缓存中的数据,也能保证其数据的准确性。(用于个人理解),更正确的解释:volatile修饰的变量,会强制读取主存数据。底层如何读取主存数据感觉应该是我理解的那样。synchronizedJava提供的隐式锁,基于monitor机制,Java对象为Ob

2020-09-08 23:06:17 125

原创 redis实战(七)

前言上篇文章我们讲了redis单点到主从再到哨兵的整个进化过程,哨兵模式已经完美满足高可用性,那么他有什么不足呢?答案就是主节点始终只有一台,压力太大了,而且所有的数据都在一台机器上,无法扩容。当业务需求足够大的时候,我们的哨兵是扛不住的!正文那么如何解决呢? 常见的方式有三种,我们逐一进行讲解!客户端方式实现客户端如何实现集群模式呢?我们已经知道了哨兵模式的缺点:单台mast...

2020-09-08 09:45:33 123

原创 并发基础一

并发基础知识CPU模型cpu模型包括ALU,寄存器,主存,高速缓存。ALU 算数运算单元,运算器 寄存器 主存 Cache缓存一致性协议MESI: M 修改 E 独占 S 共享 I 无效JMM线程工作内存,主内存。java根据cpu缓存模型抽象出来的java模型。(个人理解)。直接内存(堆外内存)JVM模型栈、堆、本地方法区、本地方法栈、程序计数器线程维度分类线程私有:栈、本地方法栈、程序计数器线程共享:堆、本地方法区直接内存:直接...

2020-09-07 23:35:11 92

原创 redis实战(六)

前言通过前几篇文章,大家了解了redis的强大:性能高、应用场景的广泛、操作简单等。当然这些优点都是建立在redis服务可用的情况下,那么怎么保证redis的可用性呢?本篇文章带大家了解下redis如何实现服务的高可用?正文Redis(单机—集群)本篇文章会从redis单节点讲到redis集群的演变过程,在redis中实现高可用的方式无非是持久化、复制、哨兵以及集群。下面带大家依次...

2020-01-16 20:52:46 154

原创 redis实战(五)

redis使用场景(zset)前言zset,有序set。看过我redis第一篇文章的小伙伴应该都知道,底层数据结构为跳表,通过跳表结构减小插入排序的时间复杂度(这里不知道的同学可以去看下第一篇文章)。同时查询时间复杂度也会减小。那么有序集合有什么作用呢?我们首先看一下redis zset的相关命令。// 常见命令#增加元素 (增加元素 A B C 对应积分 1 2 3 (排序的根...

2020-01-14 17:01:53 147

原创 redis实战(四)

Redis使用场景(set)前言老套路,在开始之前让我们先回顾下set的数据结构—散列表(hashMap)。对于hashMap我们这里不做过多的解释,我们知道hashMap对于某个key第二次put会把第一次的值覆盖掉,成就了set结构 值的唯一性,同时Set结构也保留了无序性。针对这两点我们一起看下redis官方提供的set相关命令。//基本命令# 向redis set 中...

2020-01-13 18:21:42 239 3

原创 redis实战(三)

redis使用场景(list)前言在开始redis list使用场景之前,让我们回顾一下redis 的list数据结构。除了特殊场景下(内容较小使用压缩链表),都是采用linkedList,那么linkedList的数据结构固然对我们的使用场景起着决定性因素。无序链表决定我们不能随机取出队列中的某个元素,只能从头或者尾取数据。也就是我们的队列也只能保证这种规则,请看官方给出的redis-l...

2020-01-10 17:11:09 359

原创 redis实战(二)

redis使用场景(String)上文中我们讲到redis一共有5中数据结构(String,Hash,List,Set,Zset),大家了解到了其底层数据结构以及存储方式,那这五种数据结构怎么使用呢?本期带大家了解下redis各种数据结构的使用场景。命令介绍String类型作为我们开发日常使用redis时可谓是最常用的场景,简单的key-value的的存储不仅简单而且方便,常用作缓存...

2020-01-02 18:16:26 265 1

原创 Redis实战(一)

redis是什么?REmote DIctionary Server(redis)远程字典服务器,是一个key-value的存储系统。redis是一个开源的、使用ANSI① C语言编写、遵守BSD协议②、支持网络、可基于内存亦可持久化③的日志型、key-value数据库,并提供多种语言的API。数据结构redis数据结构,也就是Value的值的类型。包括(String,has...

2019-12-25 15:13:32 462

原创 SpringDataJPA和QueryDSL

1.什么是SpringDataJPA?什么是QueryDSL?SpringDataJPA是对JPA使用的封装(JPA是java持久层api)QueryDSL是基于各种ORM(对象关系映射)上的一个通用框架。使用其API类库,可以写出java代码的sql2.@Mapper 实体-模型映射在mapper上使用注解 @Mapper(componentModel = "spring", u...

2019-03-21 15:49:34 2088

原创 线程池相关

接口:Executor,ExecutorService,ScheduledExecutorService抽象类:AbstractExecutorService类:ThreadPoolExecutor,ScheduledThreadPoolExecutor1.分析ThreadPoolExecutor类1.是线程池的真正实现(包含4个构造方法)2.分析构造...

2019-03-20 10:06:10 162

原创 jvm

JVM笔记1查pidps -ef|grep 项目名查jvm堆配置,和当前java进程堆使用情况jmap -heap pid查当前java栈信息jstack -l pidjstat -gcutil -pid查看gc信息(执行多少次fullgc,多少次younggc啥的)jvisualvm一个java自带的可视化界面,可以看cpu、内存、线程、gc情况,spring ...

2019-03-20 10:05:11 154

原创 几种线程池的比较

1、newFixedThreadPool创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中。2、newCachedThreadPool创建一个可缓存的线程池。这种类型的线程池特点是:     1).工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE), 这样可灵活的往线...

2018-06-19 10:39:45 471

原创 redis消息队列使用案例

1.将数据放到redis队列中public long lpush(String key, String value) { Jedis jedis=jedisPool.getResource(); try{ return jedis.lpush(key, value); }finally{ jedis.close(); }}/** * 添加发送消息...

2018-06-18 19:22:45 908

原创 herbernate 批量更新

Session session = null;try { session = getSession(); String hqlUpdate = "update com.xes.jzh.core.domain.ClassGroup set is_cancel_stick = :isCancelStick, update_time = :updateTime where group_id...

2018-04-25 17:24:25 444

原创 按照指定字段排序

public class ReportInfo implements Comparator<Map>{ private String cucId; private String h5Url; private String title; private String createTime; private String subject; public String...

2018-04-12 14:31:38 442

原创 后台controller支持jsonp格式请求的样例

jsonp的原理:       ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。js中<script type="text/javascript"> $(document).ready(funct...

2018-04-06 14:52:36 1661

空空如也

空空如也

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

TA关注的人

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