自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

heyanfeng22的专栏

heyanfeng22

  • 博客(123)
  • 资源 (2)
  • 收藏
  • 关注

原创 mysql(二)索引的原理

索引的原理目标索引基础索引存储模型二分查找二叉树平衡二叉树(AVL Tree)多路平衡二叉树(B Tree)B+ 树 (加强版多路平衡查找树)为什么不用红黑树hash索引B+Tree 索引落地索引的使用原则目标1、索引的本质2、索引底层的数据结构3、不同存储引擎中索引的落地4、索引的创建和使用原则索引基础索引是什么排序的数据结构索引类型普通索引:没有限制唯一索引:键值不能重复全文索引:针对比较大的数据,只有文本数据类型字段才能创建索引存储模型二分查找查询一些有序的数据时

2021-07-01 00:44:06 243 2

原创 mysql(一)Mysql架构和sql执行流程

Mysql架构和sql执行流程一条sql查询的流程mysql 体系结构一条更新sql是如何执行的innoDB总体架构内存结构磁盘结构后台线程binlog更新sql流程总结一条sql查询的流程连接mysql默认端口3306,客户端链接服务端的方式也很多: 同步/异步 长链接/短连接 TCP/unix socket可以通过sql查询连接超时时间、默认最大连接数,可更新最大连接数 连接的session级别和global级别一个客户端窗口查询,修改某个参数,如果不加global,只会在当前会话

2021-06-29 01:26:32 184 1

原创 zookeeper 面试

zookeeper面试Zookeeper 怎么保证主从节点的状态同步?四种类型的数据节点 ZnodeZookeeper Watcher 机制 – 数据变更通知ACL权限zookeeper角色Zookeeper 下 Server 工作状态zookeeper 是如何保证事务的顺序一致性集群支持动态添加机器吗?watch为什么不是永久的zookeeper 常用的命令。ZAB协议和Paxos算法Zookeeper 的典型应用场景Zookeeper 怎么保证主从节点的状态同步?讲下Zab协议,原子消息广播和崩溃恢

2021-06-25 00:31:22 211

原创 jvm(五)jvm终极篇

JVM终极篇重新全局认识jvm垃圾收集发生的时机GC日志文件分析吞吐量和停顿时间调优高并发与堆内存jvm性能优化指南常见问题思考重新全局认识jvm垃圾收集发生的时机GC日志文件分析吞吐量和停顿时间调优高并发与堆内存jvm性能优化指南常见问题思考...

2021-06-25 00:08:19 115

原创 jvm(四)JVM实战

jvm实战jvm 参数常用命令常用工具内存分析工具GC日志分析工具jvm 参数常用命令常用工具内存分析工具GC日志分析工具

2021-06-25 00:04:39 136

原创 jvm(三) 垃圾回收

垃圾回收如何确定一个对象是垃圾垃圾回收算法垃圾收集器如何确定一个对象是垃圾垃圾回收算法垃圾收集器

2021-06-25 00:02:15 77

原创 jvm(二) 内存模型

内存模型字节码指令和虚拟机栈、栈帧运行时数据区的相互指向java对象内存布局内存模型常见的问题体验与验证字节码指令和虚拟机栈、栈帧 每个栈中包括局部变量表、操作数栈、指向运行时常量池的引用、方法返回地址和附加信息。 局部变量表:方法中定义的局部变量以及方法的参数存放在这张表中 操作数栈:以压栈和出栈的方式存储操作数的 动态链接:每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用 方法返回地址:当一个方法开始执行后,只有两种方式可以退出,一种是遇到方法返回的字节码指令;一种是遇见异常,并且

2021-06-24 23:46:00 197 1

原创 redis(五)Redis面试

Redis面试Redis 数据淘汰策略字符串类型的值最大存储大小Redis适合的场景Redis哈希槽Redis集群会有写操作丢失吗?为什么?Redis事务相关的命令有哪几个redis 过期时间和永久设置Redis内存优化Redis加锁机制redis的过期策略Redis 数据淘汰策略字符串类型的值最大存储大小512MRedis适合的场景会话缓存、队列、发布订阅、排行榜/数据统计Redis哈希槽Redis集群会有写操作丢失吗?为什么?会,redis并不能保证数据的强一致性Redis事务相

2021-06-23 23:02:12 106

原创 jvm(一)类加载和运行时数据区

jvm入门篇类加载机制装载链接验证准备解析初始化使用卸载类加载器JVM是什么java virtual machine (java虚拟机)一处编码到处运行,是因为有虚拟机的存在,java才可以在不同的平台、操作系统中运行。jvm 该学什么1、源码到class文件2、class文件到jvm3、jvm各种折腾类加载机制装载 查找和导入class文件1、通过类的全路径名得到类的二进制字节流思考:是否可以用一个工具来寻找获取二进制字节流,并且将这个动作放在jvm外部实现,以便让程序获得所

2021-06-23 22:37:10 191 1

原创 java 常用包和类

java 常用包和类常用包java.lang.*java.util.*java.io.*java.net.*java.sql.*常用apijava.lang包中常用的类及其方法常用包java.lang.*java.util.*java.io.*java.net.*java.sql.*常用api

2021-06-23 01:44:46 165

转载 String.format()

String.format基本格式基本格式format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。常用的类型例转换符详细说明示例%s字符串类型“喜欢请收藏”%c字符类型‘m’%b布尔类型true%d整

2021-06-23 01:30:15 2043

原创 小工具代码

小工具代码List根据泛型Map里面的某个值排序List根据泛型Map里面的某个值排序 List<Map> list = new ArrayList<>(); Map<String, Object> fvMap1 = new HashMap<>(); Map<String, Object> fvMap2 = new HashMap<>(); Map<String, Object>

2021-06-23 01:14:18 211

原创 原子性、一致性等概念

原子性、一致性并发编程三大特征事务四个特性(ACID)CAP三特性并发编程三大特征原子性一个或者多个操作要么全部执行且执行的过程不被打断,要么就都不执行。或者理解为一段代码、一个变量的操作,在执行完之前,不能被其他线程执行。可见性多个线程访问一个变量,一个线程修改了变量的值,其他线程能够发现值已经改变有序性程序执行顺序按照代码的先后顺序执行事务四个特性(ACID)事务的AID都是为了实现数据一致性原子性一个事务的多个操作要么一起执行,要么一起不执行,通过事务提交/回滚,要么都

2021-06-22 15:10:03 392

原创 zookeeper(三) leader选举原理

zookeeper leader选举原理leaderLatch 和leaderSelectorZAB协议leaderLatch 和leaderSelectorZAB协议

2021-06-21 00:09:11 503 1

原创 jdk8新特性

时间操作日期API

2021-06-20 23:48:11 89

原创 常用时间操作

常用时间操作DateCalendarLocalDateLocalTimeLocalDateTimemysqlDateDate是非线程安全的// Date转字符串SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date();String dateStr = sf.format(date);//字符串转DateString string = "2016-10-24 21:59:0

2021-06-19 01:35:02 337

转载 Java 常用工具类

java常用工具类org.apache.commons.io.IOUtilsorg.apache.commons.io.FileUtilsorg.apache.commons.lang.StringUtilsorg.apache.http.util.EntityUtils字符串工具类 org.apache.commons.lang3.StringUtilsorg.apache.commons.io.FilenameUtilsorg.springframework.util.StringUtilsorg.ap

2021-06-18 01:16:14 339

原创 任务调度 Quartz

任务调度 Quartz任务调度任务调度需求任务调度工具对比QuartzapiSpring 集成QuartzSpringboot任务调度任务调度需求1、定义触发规则,基于时刻、时间间隔、表达式2、定义任务3、方便配置;配置文件/配置中心4、任务串行;A-B-C5、任务并发,互不干扰6、调度器,启动、中断、停止任务7、集成Spring任务调度工具对比层次举例特点操作系统Linux crontab Windows 计划任务只能执行简单脚本或者命令数据库My

2021-06-17 20:59:23 247 1

原创 Apollo 使用

Apollo 使用安装使用安装下载安装包https://github.com/ctripcorp/apollo/releases/tag/v1.8.0apollo-adminservice-1.8.0-github.zipapollo-configservice-1.8.0-github.zipapollo-portal-1.8.0-github.zip下载数据库文件https://github.com/apolloconfig/apollo-build-scripts/tree/mast

2021-06-16 15:34:24 328

原创 Zookeeper(二) zookeeper集群、客户端使用

Zookeeper 的集群搭建和客户端使用集群搭建客户端的使用原生curator权限节点监听分布式锁集群搭建参考单机部署时操作三台主机:192.168.243.137192.168.243.138192.168.243.139分别解压,复制zoo.cfg文件每个文件写入server.1 = 192.168.243.137:2888:3888server.2 = 192.168.243.138:2888:3888server.3 = 192.168.243.139:2888:388

2021-06-03 01:09:18 216

原创 Zookeeper(一) 从微服务下的注册中心到zookeeper

从微服务下的注册中心到zookeeper场景需求解决方案zookeeper分布式一致性分布式锁zookeeper的设计猜想zookeeper的特性场景需求一个业务从诞生开始是一个简单的单体架构,可能是以一个springMVC+jdbc,访问量越来越大,首先做集群,每套节点上都部署这样一套工程,再然后业务模块越来越多,维护也不方便,于是就是业务模块也拆分出来做成一个节点。微服务通信带来的问题:...

2021-06-02 01:06:21 291

原创 redis(三)Redis 集群分布式

Redis 集群分布式Redis为什么需要分布式Redis的主从复制主从复制配置主从复制原理主从复制的不足Sentinel 哨兵机制Sentinel原理-Raft算法Sentinel功能Sentinel的不足Redis分布式客户端分片代理分片Redis 集群Redis为什么需要分布式Redis的主从复制主从复制配置主从复制原理主从复制的不足Sentinel 哨兵机制Sentinel原理-Raft算法Sentinel功能Sentinel的不足Redis分布式客户端分片代理分片Redi

2021-05-24 00:31:41 175

原创 redis(二) Redis高级功能

Redis高级功能发布订阅模式Redis 事务为什么要用事务事务相关命令事务可能遇到的问题Lua 脚本redis中调用lua脚本lua脚本调用redis命令缓存lua脚本脚本超时Redis 为什么这么快虚拟内存用户空间和内核空间上下文切换进程阻塞文件描述符传统的IO拷贝数据IO 多路复用多线程IO内存回收过期策略淘汰策略持久化机制RDBAOF发布订阅模式Redis 事务为什么要用事务事务相关命令事务可能遇到的问题Lua 脚本redis中调用lua脚本lua脚本调用redis命令缓存lua脚

2021-05-24 00:31:34 276

原创 redis(一) 基础篇 Redis数据类型分析

Redis数据类型分析数据库类型关系型数据库 SQL非关系型数据库 NoSQLNewSQLRedisredis 安装redis的使用redis的基本数据类型StringHash类型List 类型Set 集合类型Zset有序集合其他类型数据库类型关系型数据库 SQL特点限制非关系型数据库 NoSQL特点NewSQLRedisredis 特性 1、数据放在内存中 2、有丰富的数据结构Memcached和redis的区别Memcached只能存储KV,没有持久化机制,不支持主从复制,是

2021-05-24 00:31:22 325

原创 RabbitMq(二) RabbitMq可靠性投递与实践经验

RabbitMq可靠性投递与实践经验可靠性投递集群高可用实践经验总结面试题可靠性投递消息丢失如图所示,4个地方可能会出现消息丢失的情况1、生产者发消息到broker,需要消费者应答服务端天威延迟或者队列满了会倒是消息发送失败RabbitMq提供了两种服务端确认模式1、事务模式利用txCommit 提交消息异常时txRollback回滚缺点:阻塞式。,一条消息没有发送完毕,不能发送下一条消息,降低了性能try { channel.txSelect();

2021-05-12 23:49:31 164 2

原创 RabbitMq(一) RabbitMq工作模型

RabbitMq工作模型Mq基础RbbitMq工作模型RabbitMq基本使用原生apiSpring集成Springboot集成总结Mq基础message queue 消息队列特点:1、独立部署,解耦2、数据结构是队列,FIFO3、具有发布订阅模型为什么使用MQ:1、异步2、解耦3、削峰4、能广播通信带来的问题:1、增加运维成本2、系统可用性降低3、系统复杂性提高AMQPAMQP协议,所有的MQ都遵循这个协议RbbitMq工作模型BrokerConnecti

2021-05-12 00:31:26 328

原创 二维码

二维码依赖Api使用依赖<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.google

2021-05-11 11:52:41 73

原创 netty(一)Netty基础 NIO

Netty基础IO演进NIO 三件套Netty手写tomcatNetty 重构RPC框架IO演进 IO存在5种模型,分别是: 阻塞IO 非阻塞IO 多路复用IO 信号驱动IO 异步IO 1、阻塞IO 传统BIO存在两个阻塞的地方,accept()和read/write 没有客户端链接时会阻塞在accept() 连接上来了但是没有传输数据又会阻塞,导致后面的客户端链接不进来 2、非阻塞 IO 每个链接连上来后开一个线程去处理读写,这样数据读写就不阻塞了,但是消耗性能 3、多路复

2021-04-21 10:43:52 126 1

原创 分库分表(一) mycat基础

mycat基础为什么库分表为什么库分表

2021-04-16 00:23:54 159 2

原创 并发编程(四) 理解J.U.C中的ReentrantLock

理解J.U.C中的ReentrantLockLockLock和Synchronized 的区别思考锁的实现分析源码如何实现J.U.C是java.util.concurrent包LockLock和synchronized功能类似,都是加锁,但是比synchronized好Lock接口主要方法Lock实现分类ReentrantLock(重入锁)ReentrantReadWriteLock 重入读写锁StampedLock用Lock 实现Synchronized的加锁功能private s

2021-03-30 00:22:07 148

原创 并发编程(二) 探索线程安全性背后的本质之volatile

线程安全性的原理分析先看一段代码public class VoliateDemo{ //public static boolean stop =false; public volatile static boolean stop =false; public static void main(String[] args) throws InterruptedExce...

2021-03-25 00:08:27 176

原创 并发编程(一)线程基础

线程基础篇线程使用生命周期Synchronized锁偏向锁轻量级锁自旋锁重量级锁线程使用创建线程的方式: 1、实现runnable接口 2、继承Thread类 3、实现callable接口(带返回值) 4、线程池启动方式start()方法。调用的本地方法,最后回调run()方法。停止线程1、stop() ,已经过时的方法,不建议使用了,类似的还有suspend、resume...

2021-03-24 22:13:40 56

原创 dubbo(三)dubbo的进阶之内核剖析

dubbo的进阶之内核剖析Dubbo是如何实现dubbo的模块说明dubbo的服务发布链路基于xml发布基于annotationDubbo是如何实现dubbo的流程图Bubbo调用链dubbo默认使用的javassist动态代理dubbo的模块说明cluster :路由层,包含负载均衡、容错common :公共包compatible, com.alibaba.dubbo / org.apache.dubboconfig :加载配置,然后提供统一的对外的配置的类。config- ce

2020-09-24 00:53:11 138

原创 dubbo(二)dubbo的高级应用

dubbo的高级应用负载均衡集群容错dubbo泛化服务降级常见配置负载均衡dubbo提供了5种负载均衡策略,默认的是随机,源码包是在 dubbo-cluster 下1、加权随机 例如三个节点,有三个不同的权重,对应三个区间,随机产生的随机数落在其中的一个区间即某个节点上,权重大的可能性较大2、轮询 轮流分配给N个节点,实际场景中有的机器性能不一样,所以可以进行加权,调控每台服务器的负载3、一致性hash负载 根据参数hash取模,默认是根据第一个参数 {hash(parameter)%3}

2020-09-22 00:07:40 571 1

原创 logback日志配置

logback日志配置logback依赖logback主要标签logback-spring.xml配置案例logback依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId></dependency>spring-boot-starter-web

2020-09-18 16:42:54 360

原创 vm创建虚拟机

vm创建虚拟机创建虚拟机设置虚拟机静态ip创建虚拟机设置虚拟机静态ip这里要去掉,主要是这里的问题设置静态ip没有ifconfig指令功能yum search ifconfig执行yum install net-tools.x86_64,一直选择yes修改 配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33修改 BOOTPROTO ,默认是dhcp,改成static和none都可以DN

2020-09-12 15:56:36 194

原创 线性表

线性表基本概念数组和链表比较单链表、双链表、循环链表基本操作实战单链表反转单链表取中间值合并两个有序列表奇数位升序,偶数位降序链表排序单链表归并排序基本概念线性表是一种逻辑结构,相同数据类型的N个数据元素组成的有序序列线性表有以下几个特征:1、数据元素有限2、逻辑上元素有先后次序3、数据类型相同4、仅讨论元素之间的逻辑关系线性表的分类1、顺序存储 顺序表—>比如数组2、链式存储数组和链表比较数组在内存空间必须连续的查询访问性很强,查找速度快插入删除效率低。可能浪费内存

2020-07-29 00:12:51 112

原创 mybatis(三)插件原理和Spring集成

插件原理和Spring集成mybatis插件使用PageHelper插件插件的实现插件的原理PageHelper原理常用场景、自定义插件Spring集成创建SqlSessionFactory创建会话SqlSession目标:掌握插件的使用方法和工作原理掌握自定义插件的编写方法掌握Spring集成mybatis的原理mybatis插件使用PageHelper插件在mybatis-config.xml中配置plugins标签PageHelper.startPage(0,5);插件的实现 实

2020-05-13 15:22:25 227

原创 mybatis(二)体系结构和工作原理

体系结构和工作原理工作流程架构分层和模块划分mybaitis缓存一级缓存二级缓存第三方缓存源码解读本节内容:1、mybatis的工作流程2、mybatis的架构分层和模块划分3、mybatis的缓存4、阅读mybatis源码掌握底层工作原理和设计思想工作流程通过第一节的应用,应该差不多了解mybatis的工作流程了1、解析配置文件 解析配置文件,全局文件和映射文件,封装成一个Configuration对象2、提供操作接口 通过SqlSession获取数据库连接,只提供应用接口,还不是

2020-05-12 11:23:35 209

原创 mybatis (一)应用分析与最佳实践

应用分析与最佳实践为什么用mybatisORMhibernatemybatis核心对象的生命周期核心配置动态sql本节目标:1、了解ORM 框架发展史,了解mybatis特性2、掌握mybatis 编程式开发方法和核心对象3、掌握mybatis 核心配置含义4、掌握mybatis 的高级用法与扩展方式为什么用mybatis 传统的数据库连接的步骤 1、加载驱动 2、获取数据库连接 3、获取statement对象 4、execute执行sql 5、处理resultset数据 6、关闭

2020-05-11 15:03:35 158

html5+jquery非常炫丽的登录界面,包含登录、注册、修改密码等效果

html5+jquery非常炫丽的登录界面,包含登录、注册、修改密码等效果

2017-03-07

66种404报错模板

内含66种风格的404报错模板供选择

2017-02-09

空空如也

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

TA关注的人

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