自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

响当当的名字

响当当的博客

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

原创 kafka消费者分区分配策略

https://zhuanlan.zhihu.com/p/127349064

2020-11-15 22:09:40 1077

原创 mysql的MVCC讲解

不好意思 这里直接放上链接了 嗷丙的mysql事务和隔离级别关系 知乎上面的关于MVCC的讲解https://zhuanlan.zhihu.com/p/150212956?utm_source=qq&utm_medium=social&utm_oi=970249991863959552https://zhuanlan.zhihu.com/p/64576887...

2020-11-01 22:06:54 136

原创 锁分类

锁分类加锁方式synchronized和lock的方式。两者的区别的话:synchronized是jvm层面的,锁的释放在代码块执行完成后,自动释放Lock加锁解锁是在代码层面实现的,都需要手动的实现,否则会出现死锁的情况。所以锁的释放一定要放在finally块中,避免锁一直占用资源Lock提供了很多的方法,比如查看线程是否获得了锁,tryLock()尝试获取锁等,操作起来比synchronized更加的灵活。ReenTrantLock,readLock,writeLock以上三种分别对

2020-09-01 20:45:11 240 1

原创 ThreadLocal

本篇博客实在自己看了JUC视频及嗷丙的博客后编写。具体的一些地方可能写的不太清晰。详情参考嗷丙知乎 ThreadLocal讲解嗷丙-ThreadLocal1.用途一:线程隔离,使一个线程单独享有一个变量,从而不加锁便可以保证线程安全。如经典场景:格式化日期,要想保证线程安全,第一种方式是加锁,但是若是线程数量多的话,锁竞争会变得很大。第二种便是为每个线程创建一个SimpleDateFormat对象,但是这样的话,若是线程有一千个,就需要创建一千个SimpleDateFormat对象,简单但太粗暴。

2020-08-30 22:45:55 258

原创 网络编程在线笔记

以下笔记均是在往上浏览到的博客,本地已经做过简单的笔记,详情就直接贴地址了网络编程懒人入门(一):快速理解网络通信协议(上篇)网络编程懒人入门(二):快速理解网络通信协议(下篇)网络编程懒人入门(三):快速理解TCP协议一篇就够...

2020-07-31 18:43:02 107

原创 Redis集群---数据分布策略,集群搭建,故障检测恢复,主从复制,缓存与数据库一致性问题

安装ruby及客户端第一步:安装,解压Ruby。我这里是安装在opt目录下。[root opt]#wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.8.tar.gz[root opt]#tar zxvf ruby-2.3.8.tar.gz第二步:进入ruby-2.3.8配置并编译源代码[root ruby]#./configure -prefix=/usr/local/ruby[root ruby]#make && i

2020-07-20 10:23:46 197

原创 Redis主从复制过程和部分复制异步复制

目录:复制过程数据间的同步全量复制部分复制心跳异步复制复制原理1. 复制过程复制的过程步骤如下:从节点执行 slaveof 命令从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点连接建立成功后,发送 ping 命令,希望得到 pong 命令响应,否则会进行重连如果主节点设置了权限,那么就需要进行权限验证;如果验证失败,复制终止。权限验证通过后,进行数据同步,这是耗时最长的操作,主节点将把所有的数据全部发送给从节点

2020-07-19 18:42:20 1149

原创 路径

# 我他娘的发誓 这次一定一遍过,绝不重复的回头学习降低效率redis -> 多线程 -> springcloud ->mysql调优 ->sql注入(# $的区别) ->spring源码讲解 ->dubbo ->网络 ->消息中间件...

2020-07-09 23:07:31 74

原创 慢查询日志 pipeline

慢查询日志说慢查询日志之前先说redis发送命令到结束命令的生命周期慢查询日志的配置主要是两个参数的配置slowlog-max-len这个配置参数主要用来设置慢查询日志队列的长度 默认值为128慢查询日志队列有三个特性长度固定先进先出队列保存在内存中showlog-log-slower-than设置慢查询日志的阙值,超过多少微秒会被记录 单位微秒(1秒=1000000微秒),默认值为10000微秒(10毫秒(10ms))其值等于 0 时表示记录所有的命令小于0 时表示不

2020-07-09 16:01:43 209

原创 redis通用命令

常用命令keys [pattern] 获取键值keys * 获取所有的键值keys na* 获取na开头的键dbsize : 获取键的个数del: 删除键值对exists key :判断键值存不存在 存在返回1 不存在返回0expire: 设置键值的过期时间type : 获取键值对的数据类型ttl key : 获取键值对的剩余过期时间下表是这几个函数的时间复杂度命令时间复杂度keysO(N)dbsizeO(1)

2020-07-07 19:08:54 98

原创 mysql索引 MyISAM与InnoDB区别

先说索引的优略势索引是一组排好序的数据结构优势:检索速度快,减少磁盘i/o的交互,根据索引(B+树)的分组排序特点,能够提高范围查询和分组查询,排序的效率。劣势:索引本身也是一张表,因此也会占用存储空间。索引的维护,创建都需要时间成本,如果表数据过大,成本也会随之增加。所以索引会降低添加。删除,修改的效率。索引的分类主键索引(聚簇索引)组合索引唯一索引普通索引全文索引聚簇索引与非聚簇索引聚簇索引又称为主键索引。因此一个表里面只能有一个聚簇索引。在聚簇索引中,索引是和数据行一块存储

2020-07-02 18:31:08 173

原创 spring事务总结

解决三大问题1.1繁杂的事务管理APISpring事物的核心类是 PlatformTransactionManager,叫做事务管理器,定义如下public interface PlatformTransactionManager extends TransactionManager { // 获取事务(新的事务或者已经存在的事务) TransactionStatus getTransaction(@Nullable TransactionDefinition definition)

2020-07-01 18:36:42 253

原创 mysql使用B+树

概述首先需要澄清的一点是,MySQL 跟 B+ 树没有直接的关系,真正与 B+ 树有关系的是 MySQL 的默认存储引擎 InnoDB,MySQL 中存储引擎的主要作用是负责数据的存储和提取,除了 InnoDB 之外,MySQL 中也支持 MyISAM 作为表的底层存储引擎。我们在使用 SQL 语句创建表时就可以为当前表指定使用的存储引擎,你能在 MySQL 的文档 Alternative Storage Engines 中找到它支持的全部存储引擎,例如:MyISAM、CSV、MEMORY等,然而默认

2020-06-23 17:29:22 1647

原创 反射中Class.forName()和ClassLoader.loadClass()的区别

一 Java类装载过程装载: 通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象;链接: 执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;校验:检查导入类或接口的二进制数据的正确性;(文件格式验证,元数据验证,字节码验证,符号引用验证)准备: 给类的静态变量分配并初始化存储空间;解析: 将常量池中的符号引用转成直接引用;初始化: 激活类的静态变量的初始化Java代码和静态Java代码块,并初始化程序员设置

2020-06-09 17:26:18 141

原创 Java 线程的生命周期

通用的生命周期可以用如下图所示的 “五态模式” 来描述,分别为:初始状态、可运行状态、运行状态、休眠状态、终止状态。 初始状态:线程被创建,但是还不允许分配 CPU 执行,属于编程语言特有,仅仅是在编程语言创建,操作系统层面还没有。 可运行状态:可以分配 CPU 执行,操作系统也创建了线程。 运行状态:可运行状态的线程获取到 CPU 时间分片就转换成了运行状态。 休眠状态:运行状态的 线程调用了一个阻塞的 API 或者等待某个事件,就会转换成休眠状态,同时会释放

2020-05-19 12:30:00 1181

原创 理解Java的三大特性之多态

面向对象编程有三大特性:封装、继承、多态。封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程...

2020-05-14 20:22:44 137

原创 TCP的三次握手四次挥手

1. https://blog.csdn.net/qq_38950316/article/details/810878092. https://baijiahao.baidu.com/sid=1654225744653405133&wfr=spider&for=pc

2020-04-27 22:15:57 100

原创 Lock锁

Lock简单使用在java多线程中,锁的机制可以通过synchronized来实现,但在jdk1.5中新增加了ReentrantLock类也能达到同样的效果。下面通过一段代码来展示。package demo_20;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;...

2020-04-06 12:55:52 240

原创 线程可见性,Volatile关键字了解

再说线程可见性之前,先来说一下主内存和本地内存的关系,两者是造成线程可见性的关键原因1. 主内存和本地内存JMM有以下规定:所有的全局变量都存储在主内存中,同时每个线程也有自己独立的工作内存,工作内存中的变量内容是主内存中的拷贝线程不能直接读写主内存中的变量,而是只能操作自己工作内存中的变量,然后再同步到主内存中主内存是多个线程共享的,但线程间不共享工作内存,如果线程间需要通信,必须借...

2020-04-02 21:17:27 409 1

原创 多线程的常见面试题

1.线程连续两次调用start()方法所产生的情况public class TestMain { public static void main(String[] args) throws Exception { Thread thread = new Thread(new Runnable() { @Override p...

2020-03-30 00:15:00 444

原创 线程的异常处理

如下代码public class ExceptionThread { public static void main(String[] args) throws InterruptedException { try { new Thread(new ThreadException()).start(); Thread.sl...

2020-03-27 13:52:14 171

原创 线程间的通信及等待之wait()与notify() | notifyAll() 与 join()方法

总结1:wait()方法1:在调用此方法之前,线程必须获得该对象的对象级别的锁,及只能在同步方法或同步代码块中使用。2: 调用此方法后线程将从运行状态进入阻塞队列,同时释放对象锁(与sleep()不同)。直到该对象调用notify() | notifyAll() 后该线程才能够拥有重新竞争锁的机会。若线程处于wait状态时执行了interrupt()方法,线程会抛出 Interrupte...

2020-03-25 16:23:41 330

原创 线程的状态与生命周期及sleep与wait的区别

1. 线程的声明周期JDK中用Thread.State枚举表示了线程的几种状态 public enum State { NEW,//新建,还未启动(新建) RUNNABLE,//正在jvm中运行,但是可能正在等待操作系统的其他资源(运行) BLOCKED,//受阻塞,并且正在等待监视器锁(阻塞) WAITING,//处于等待状态...

2020-03-25 10:38:07 397

原创 线程中断的方式 interrupt与volatile

Thread.stop()方法此方法虽然可以立即停止线程,但是是不安全的方法。已被废弃。如果强制使用此方法停止线程,可能会使一些清理工作得不到完成。另外一个情况就是对锁的对象进行了解锁,导致数据得不到同步的问题。interrupt()方法调用此方法会在当前线程中打一个停止的标记,并不会真正的停止线程。要想真正的停止线程,还需要结合interrupted()或isInterrupte...

2020-03-20 21:57:21 544

原创 关于IO流

IO流的分类根据流方向分为输入流、输出流根据操作的内容的不同可以分为字符流、字节流得到四大基本流:输入流输入流字符流ReaderWriter字符流InputStreamOutputStream这四大基本流都是抽象的,使用时通常使用这些抽象类的具体实现类整个IO流体系字符输入流Reader -> InputStreamReader -&...

2020-03-16 21:37:42 124

原创 关于集合

Collection集合Collection主要有三个子接口,分别为List(列表)、Set(集)、Queue(队列)。其中,List、Queue中的元素有序可重复,而Set中的元素无序不可重复;List集合为顺序可重复存储方式ArrayList :为线程不安全集合,底层采用数组的形式,即Object[];允许存储null。因为采用数组,所以查询,修改的速度快。但不适合进行频繁的增加或...

2020-03-12 00:11:27 170

原创 Springboot2.0整合Redis时的序列化与反序列化

首先说一下环境:springboot:2.1.7redis:5.0.5在默认的情况下,两者整合后便可将数据缓存到redis,但是缓存进去的对象类型数据是经过jdk默认序列化过后的,在可视化工具中是HEX格式,看起来非常不方便,所以需要进行格式化首先创建FastJsonRedisSerializer类实现RedisSerializer接口public class FastJsonRe...

2020-02-29 13:07:15 1350

原创 SpringBoot国际化

本文主要讲解国际化的实现 基于spring boot的2.1.7版本步骤:1)、编写国际化配置文件,抽取页面需要显示的国际化消息2),SpringBoot自动配置好了国际化资源文件,其默认的配置文件路径是messages.properties;配置文件放在此路径下直接生效;但一般情况下会更改默认的配置文件路径。例如本例中的配置文件路径。所以需要在配置文件中进行修改:spring....

2020-02-29 13:06:40 162

原创 SpringBoot配置嵌入式Servlet容器

前言:最近学习SpringBoot,故将一些学习中的笔记记录下来。学习初始阶段,尚有不足,若有错误可留言。关于配置嵌入式Servlet容器一:如何定制和修改Servlet容器的相关配置首先:SpringBoot默认使用tomcat作为嵌入式的servlet容器。在开发应用中,我们可以定制和修改Servlet容器的相关配置修改方式有两种:1:修改和server有关的配置(ServerP...

2020-02-29 13:06:08 117

原创 Spring Boot 统一异常处理最佳实践 -- 后记(拓展篇)

前言(原文为简书上的一位博主:http://www.zhaojun.im/springboot-exception-expand/)之前一篇文章介绍了基本的统一异常处理思路: Spring MVC/Boot 统一异常处理最佳实践.上篇文章也有许多人提出了一些问题:如何区分 Ajax 请求和普通页面请求, 以分别返回 JSON 错误信息和错误页面.如何结合 HTTP 状态码进行统一异常处理...

2020-02-29 13:05:38 458 1

原创 Spring MVC/Boot 统一异常处理最佳实践 -----前言

前言(文章是在学习完springboot的异常处理后,阅读简书上的一位博主博客写的: http://www.zhaojun.im/springboot-exception/)在 Web 开发中, 我们经常会需要处理各种异常, 这是一件棘手的事情, 对于很多人来说, 可能对异常处理有以下几个问题:什么时候需要捕获(try-c atch)异常, 什么时候需要抛出(throws)异...

2020-02-27 22:24:21 140

原创 SpringBoot之数据访问(jdbc,druid数据源)

前言:一个完整的项目必然要和数据库进行交互。学完SpringBoot的基础之后便要开始学习SpringBoot之数据访问,(整合基本jdbc与数据源)首先写SpringBoot与JDBC的交互1:交互之前需要先引入JDBC的pom依赖 <dependency> <groupId>mysql</groupId> &lt...

2020-02-27 22:23:40 1047

原创 解决虚拟机启动显示Intel VT-x禁用状态的问题

虚拟机不稳定,所以偶尔会出现这个问题,记录一下,防止下次出现不知道如何解决。1:联想电脑打开设置,点击更新与安全。点击恢复,选择立即重新启动。如下图当然还有其他的方法,如电脑关机状态,按下开机键后,连续快速点击F2键或者是电脑关机状态,使用手机卡针戳下一键恢复按钮(标识符为↶),从菜单中选择Bios Setup并回车这两种方法。但感觉麻烦。2:在重启的界面中点击 疑难解答→高级选项→UE...

2020-02-27 22:22:53 4432

原创 常用到的Linux命令

一:CentOs7/red hat关闭防火墙的命令!查看防火状态systemctl status firewalldservice iptables status暂时关闭防火墙systemctl stop firewalldservice iptables stop永久关闭防火墙systemctl disable firewalldchkconfig iptable...

2020-02-27 22:22:22 141

原创 Docker笔记一:安装------centos7

一:docker安装首先安装 Docker 必要依赖包 :yum install -y yum-utils device-mapper-persistent-data lvm2由于自带 yum 没有 Docker-CE 所以我们需要先增加 docker repo:yum-config-manager --add-repo https://download.docker.com/linux...

2020-02-27 22:20:56 89

原创 前台数据展示问题总结

场景一:一个实体类中包含着另一个实体类的集合,后台查询出来后展示到前台,同时前台填写后将集合映射到实体类存入数据库。public class Editor { private String finalopinion; private String year; private List<Skl_member> skl_member; }public c...

2020-02-27 22:19:33 368

原创 SpringCloud学记笔记(一)

首先说一下springcloud的几个官网吧中文网 https://www.springcloud.cc/spring-cloud-dalston.html中国社区:http://springcloud.cn/接下来便是在学习springcloud的过程中记录的知识点1:Eureka Server的首页在正常访问后过一点时间在去访问界面 或出现如下红色字体EMERGENCY! E...

2020-02-27 22:18:57 291

原创 微服务统一登录认证怎么做?JWT ?

微服务统一登录认证怎么做?JWT ?抄之java知音无状态登录原理1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie...

2020-02-27 22:17:57 393

原创 基于Docker搭建Redis一主两从三哨兵

前言:你总是想的太多而读书太少最近这段时间学习了Redis,之前呢也将docker的基础给学习了一遍,不过时间长了有点忘了。正好借助这个机会,完成一个基于Docker搭建Redis一主两从三哨兵,算是对于docker的复习,也是对Redis做一个笔记。文章有借鉴:微信公众号 "Java知音”本文默认已配置好了docker环境。若优未安装的可以csdn搜索其他博主的安装教程。接下来便开启...

2020-02-27 22:16:23 435

原创 Springboot2.0整合Redis时的序列化与反序列化

首先说一下环境:springboot:2.1.7redis:5.0.5在默认的情况下,两者整合后便可将数据缓存到redis,但是缓存进去的对象类型数据是经过jdk默认序列化过后的,在可视化工具中是HEX格式,看起来非常不方便,所以需要进行格式化首先创建FastJsonRedisSerializer类实现RedisSerializer接口public class FastJsonRe...

2020-02-27 22:15:52 3985 1

空空如也

空空如也

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

TA关注的人

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