- 博客(51)
- 资源 (2)
- 收藏
- 关注
原创 分布式事务
数据库事务数据库事务要满足几个要求:ACIDAtomic(原子性) :事务必须是原子的工作单元Consistent(一致性) :事务完成时,必须使所有数据都保持一致状Isolation(隔离性) :并发事务所做的修改必须和其他事务所做的修改是隔离的Duration(持久性) :事务完成之后,对系统的影响是永久性的Mysql里的事务处理过程记录 redo 和 undo log 文件,确保日志在磁盘上的持久化更新数据记录提交事务 ,redo 写入 commit 记
2022-03-18 00:07:40
121
原创 oracle_身份证有效性校验
正则表达式写法CREATE OR REPLACE FUNCTION Func_check_id_card(p_idCard IN VARCHAR2) RETURN INT IS v_regStr VARCHAR2(2000); v_sum NUMBER; v_mod NUMBER; v_checkCode CHAR(11) := '10X98765432'; v_checkBit CHAR(1); v_areaCo
2021-12-31 23:43:20
891
原创 JAVA Class 转 Mybatis RestultMap
Generator 代码实现import java.lang.reflect.Field;import java.util.HashMap;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author visy.wang * @date 2020/6/18 17:05 */public class ResultMapGenerator { // 匹配大写字
2021-08-07 22:33:38
167
原创 Mybatis 批量操作
对于 foreach 标签的解释参考了网上的资料,具体如下:foreach 的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach 元素的属性主要有 item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符,close表示以什么结束,在
2021-07-28 23:18:59
289
原创 缓存企业实战
架构设计组件选择/多级缓存的设计要分多个层次,在不同的层次上选择不同的缓存,包括JVM缓存、文件缓存和Redis缓存JVM 缓存JVM 缓存就是本地缓存,设计在应用服务器中(tomcat)。通常可以采用 Ehcache 和 Guava Cache,在互联网应用中,由于要处理高并发,通常选择 Guava Cache。适用本地(JVM)缓存的场景:对性能有非常高的要求。不经常变化占用内存不大有访问整个集合的需求数据允许不时时一致文件缓存这里的文件缓存是基于 http 协议的文件缓存
2021-04-22 10:59:06
206
1
原创 Redis 高可用
重点内容主从复制原理、同步数据集配置 Redis 主从复制配置 Redis 主从+ 哨兵模式,分析执行流程、故障转移 和 leader 选举一致性 hash 算法RedisCluster 的分片原理、部署方案、迁移扩容缓存设计要素缓存预热缓存问题分析及解决方案整合 mybatis 使用缓存分布式锁原理、使用乐观锁、秒杀的实现Redisson 原理阿里 Redis 使用手册“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保
2021-04-21 17:35:08
142
原创 Redis 缓存过期、淘汰策略 & 持久化 & 扩展功能
maxmemory 最大占用内存用过 Redis 都知道 redis 的性能高,官方性能数据,读 110000次/s,写 81000次/s,但是性能再高也架不住长期使用且只写入(key会不断增加)、不淘汰(删除)不设置的场景Redis 的 key 是固定的,不会增加新的 key作为 DB 使用,保证数据的完整性,不能淘汰 ,可以做集群,横向扩展缓存淘汰策略:禁止驱逐 (默认)设置的场景Redis 作为缓存使用,物理内存在长期只写入的情况下很有可能会满,内存与硬盘交换(swap) 虚拟内存
2021-04-18 22:17:15
635
原创 Redis 数据类型 与 底层数据结构
数据类型与底层数据结构Redis数据类型和应用场景Redis 是一个 Key-Value 的存储系统,使用 ANSI C 语言编写。Key 的类型是字符串。Value 的数据类型常用的:string字符串类型、list列表类型、set集合类型、sortedset(zset)有序集合类型、hash类 型。不常见的:bitmap位图类型、geo地理位置类型。Redis5.0 新增一种:stream类型注意:Redis中命令是忽略大小写,(set SET),key是不忽略大小写的 (NAME.
2021-04-16 23:04:43
196
原创 缓存基础知识点
缓存基本思想缓存的使用场景DB缓存,减轻服务器压力一般情况下数据存在数据库中,应用程序直接操作数据库。当访问量上万,数据库压力增大,可以采取的方案有:读写分离,分库分表当访问量达到10万、百万,需要引入缓存。将已经访问过的内容或数据存储起来,当再次访问时先找缓存,缓存命中返回数据。不命中再找数据库,并回填缓存提高系统响应数据库的数据是存在文件里,也就是硬盘,与内存做交换(swap),在大量瞬间访问时(高并发)MySQL 单机会因为频繁 IO 而造成无法响应。MySQL 的 InnoDB 是有行
2021-04-14 23:22:38
292
原创 springCloud 之 Hystrix 熔断器
Hystrix 熔断器属于⼀种容错机制微服务中的雪崩效应什么是微服务中的雪崩效应呢?微服务中,⼀个请求可能需要多个微服务接⼝才能实现,会形成复杂的调⽤链路。扇⼊:代表着该微服务被调⽤的次数,扇⼊⼤,说明该模块复⽤性好扇出:该微服务调⽤其他微服务的个数,扇出⼤,说明业务逻辑复杂扇⼊⼤是⼀个好事,扇出⼤不⼀定是好事在微服务架构中,⼀个应⽤可能会有多个微服务组成,微服务之间的数据交互通过 RPC 或者 HTTP 远程调⽤,一般调用链路上都会设置调用超时、失败重试等机制来确保服务的成功执行,看上去
2021-04-11 21:22:56
330
原创 idea 常用插件
Free Mybatis pluginMybatis Log PluginMybatis BuilderMyBatisLogFormatSequenceDiagramMaven HelperSpring AssistantString ManipulationPOJO to JsonLombokGsonFormatPlusCodota
2021-04-11 21:17:30
154
1
原创 springCloud 之 Feign 远程调用
在前面的springCloud 之 Ribbon 负载均衡中服务消费者 调用 服务提供者 使用RestTemplate技术,代码如下:// 使用 RestTemplate 模板对象进行远程调用@Bean@LoadBalancedpublic RestTemplate getRestTemplate() { return new RestTemplate();}使用上面的方式存在以下不便之处需要拼接url restTmplate.getForObJect ...
2021-03-31 17:06:49
184
原创 springCloud 之 Ribbon 负载均衡
2 节 Ribbon负载均衡 关于负载均衡 负载均衡⼀般分为服务器端负载均衡和客户端负载均衡所谓服务器端负载均衡,⽐如Nginx、F5这些,请求到达服务器之后由这些负载均衡器根据⼀定的算法 将请求路由到⽬标服务器处理。所谓客户端负载均衡,⽐如我们要说的Ribbon,服务消费者客户端会有⼀个服务器地址列表,调⽤⽅在 请求前通过⼀定的负载均衡算法选择⼀个服务器进⾏访问,负载均衡算法的执⾏是在请求客户端进⾏。Ribbon是Netflix发布的负载均衡器。Eurek...
2021-03-28 00:23:44
383
2
原创 Rocketmq 消息存储 & 事务
RocketMQ 存储概要设计目前的 MQ 中间件从存储模型来 ,分为需要持久化和不需要持久化的两种模型,现在大多数的是支持持久化存储的,比如 ActiveMQ,RabbitMQ Kafka,RocketMQZeroMQ 却不需要支持持久化存储 而业务系统也大多需要 MQ 有持久存储的能力,这样可以大大增加系统的高可用性。从存储方式和效率来看,文件系统高于 KV 存储, KV 存储又高于关系型数据库,直接操作文件系统肯定是最快的,但如果从可靠性的角度出发直接操作文件系统是最低的,而关系型数据库.
2021-03-19 17:55:13
228
原创 RocketMQ 入门
RocketMQ 介绍消息队列 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性,是阿里巴巴双 11 使用的核心产品。RocketMQ 的设计基于主题的发布与订阅模式,其核心功能包括消息发送、消息存储(Broker)、消息消费,整体设计追求简单与性能第一。架构组成NameServer 设计及其简单,RocketMQ 摈弃了业界常用的
2021-03-18 11:55:03
166
原创 mysql 安装
window下mysql安装包:链接:https://pan.baidu.com/s/1Wo7okCNNQ-lAQSLKDINQiQ提取码:d28g安装流程:1. 解压,环境变量配置bin2. mysql目录下新建my.ini[mysqld]#端口号port = 3306basedir=E:\mysql-5.7.32-winx64datadir=E:\mysql-5.7.32-winx64\data #最大连接数max_connections=200#编码character-se
2021-03-16 10:01:08
175
原创 CentOS7 安装
一、软件准备CentOS7安装在VMware Workstation虚拟机软件,故安装前请自行安装该软件。CentOS7下载地址:centos_7 镜像二、安装1、打开VMware Workstation,选择创建新的虚拟机;2、选择自定义选项;点击下一步3、选择虚拟机硬件兼容性,直接下一步就行了;点击下一步4、这里我们选择稍后安装操作系统;点击下一步5、这里客户机操作系统选Linux,版本为Centos7,32还是64位根据自己的电脑而来;点击下...
2021-03-15 15:45:33
3176
原创 Linux JAVA 环境配置
maven 下载地址:https://maven.apache.org/download.cgi上图,红色位置右键 选择复制链接1.下载或上传安装包: wgethttps://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz2、解压安装包到指定目录: tar xzvf /srv/ftp/apache-maven-3.6.3-bin.tar.gz -C /.
2021-03-11 15:19:10
169
原创 Linux 相关记录
Centos 6无法使用yum解决办法12月后Centos 6 系统无法使用yum出现错误(文章底部看)相信已经有一部分朋友今天连接到CentOS 6的服务器后执行yum后发现报错,那么发生了什么?CentOS 6已经随着2020年11月的结束进入了EOL(Reaches End of Life),不过有一些老设备依然需要支持,CentOS官方也给这些还不想把CentOS 6扔进垃圾堆的用户保留了最后一个版本的镜像,只是这个镜像不会再有更新了官方便在12月2日正式将CentOS ...
2021-03-11 12:23:26
119
原创 Linux 环境部署 Redis
下载Redis进入官网找到下载地址:https://redis.io/download右键 Download 按钮,选择复制链接。进入到 Xshell 控制台(cd 到准备安装 redis 的目录),输入wget 将上面复制的下载链接粘贴上,如下命令,回车、等待下载完成wgethttps://download.redis.io/releases/redis-6.2.1.tar.gz解压并安装Redis解压tar -zvxf redis-6.2.1.tar.gz解压.
2021-03-10 17:51:52
118
原创 springCloud 之 Eureka 服务治理
概念在传统应用组件间调用,基本都是通过接口规范约束来实现不同模块间良好协作。随着庞大的单体应用被拆分成很多个微服务后,每个微服务实例的数量和网络地址都可能动态变化,使得原来硬编码的地址极不方便,故需要一个中心化的组件来进行服务的登记和治理。服务注册中心:实现服务治理,治理所有的服务信息和状态,。注册中心好处:不用关心服务提供方数量、地址等细节。注册中心技术栈:Eureka、Nacos、Consul、Zookeeper等。服务注册与发现包括两部分:一个是服务器端,另一个是客户端Serv
2021-03-02 10:56:39
627
原创 Springboot 启动原理
每一个Spring Boot项目,都会有类似如下的启动类@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringAppli.
2021-02-20 23:48:58
115
转载 ZooKeeper集群的Leader选举 深入学习
前言ZooKeeper对Zab协议的实现有主备模型,即 Leader 和 Observer + Follower,有如下几种情况需要进行领导者的选举工作情形1: 集群在启动的过程中,需要选举Leader 情形2: 集群正常启动后,leader因故障挂掉了,需要选举Leader 情形3: 集群中的Follower数量不足以通过半数检验,Leader会挂掉自己,选举新leader 情景4: 集群正常运行,新增加1个Follower本篇博文,从这四个方面进行源码的追踪阅读程序入口Quoru
2020-11-02 23:34:25
358
原创 zookeeper应用场景 & 源码部分分析 & zab 协议
数据发布订阅/ 配置中心实现配置信息的集中式管理和数据的动态更新实现配置中心有两种模式:push:服务器主动将数据的更新发送给客户端pul:客户端主动去发起请求去获取新的配置数据长轮训通过http请求建立一个长轮训的机制,客户端主动去监控服务的配置的变化,发送变化后主动将配置拉取到本地zookeeper采用的是推拉相结合的方式客户端向服务器端注册自己需要关注的节点。一旦节点数据发生变化,那么服务器端就会向客户端发送watcher事件通知。客户端收到通知后,主动到服务
2020-09-15 21:30:49
167
原创 分布式的特性、面临的问题、中心化 & 去中心化、CAP理论、BASE理论
分布式环境的特点分布性:分布式系统中的多台计算机(或者多个应用实例)会随意分布,而且机器的分布情况也会随时变动。并发性:程序运行过程中,并发性操作是很常见的。例如同一个分布式系统中的多个节点,可能会并发地操作一些共享的资源,诸如数据库或分布式存储等,如何准确并高效地协调分布式并发操作也成为了分布式系统架构与设计中最大的挑战之一。无序性:进程之间的消息通信,会出现顺序不一致问题对等性:分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系
2020-09-14 23:01:23
1146
原创 原子操作类 AtomicInteger
转载地址:https://blog.csdn.net/fanrenxiang/article/details/80623884为什么需要AtomicInteger原子操作类?对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。num++解析为num=num+1,明显,这个操作不具备原子性,多线程并发共享这个变量时必然会出现问题。测试代码如下:...
2020-02-23 21:53:59
202
原创 字节码技术 && 类加载器 && 热部署
字节码技术字节码技术应用场景AOP技术、Lombok去除重复代码插件、动态修改class文件等字节技术优势Java字节码增强指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java字节码增强主要是为了减少冗余代码,提高性能等。实现字节码增强的主要步骤为:1、修改字节码在内存中获取到原来的字节码,然后通过一些工具(如...
2020-02-23 00:25:00
325
原创 java 虚拟机 && Java内存结构 && JVM垃圾回收机制算法
什么是HotSpot VM提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计的,甚至这个虚拟机最初并非是为Java语言而开发的,它来源于S...
2020-02-23 00:18:14
288
原创 多线程相关
线程与进程区别每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行,也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文...
2020-02-13 22:50:06
246
原创 Spring bean 创建过程源码解析
相关文章Spring 中 bean 注册的源码解析前言在相关文章Spring 中 bean 注册的源码解析 中分析了 Spring 中 bean 的注册过程,就是把配置文件中配置的 bean 的信息加载到内存中,以 BeanDefinition 对象的形式存放,该对象中存放了 bean 的相关属性,下面就以 debug 的形式一步步来看下 bean 是如何创建的。Spring 中 bean...
2020-02-06 12:09:31
88
转载 SpringMVC 请求流程 HttpMessageConverter 实战总结
阐述问题最近发现一个关于FastJsonHttpMessageConverter特别有趣的一个点,它默认的supportMediaType竟然是MediaType.ALL。 /** * Can serialize/deserialize all types. */ public FastJsonHttpMessageConverter() { ...
2020-02-06 11:27:16
490
转载 SpringMVC 请求数据通过 HttpMessageConverter 数据转换
Java Web 人员经常要设计 RESTful API(如何设计好的RESTful API),通过 json 数据进行交互。那么前端传入的 json 数据如何被解析成 Java 对象作为 API入参,API 返回结果又如何将 Java 对象解析成 json 格式数据返回给前端,其实在整个数据流转过程中,HttpMessageConverter 起到了重要作用;另外在转换的过程我们可以加入哪些定制...
2020-02-05 16:32:34
576
原创 Spring MVC 执行流程
一、SpringMVC简介SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供了很大便利。SpringMVC提供了总开关DispatcherServlet;请求处理映射器(HandlerMapping)、处理适配器(Hand...
2020-02-02 16:07:37
117
原创 Nginx 配置 & keepalived安装
location的语法和匹配规则location [~|=|^~|~*] /uri { }location的匹配规则精准匹配location =/uri{}优先级最高的匹配规则一般匹配location /uri{ }普通匹配的优先级要高于正则匹配如果存在多个相同的前缀的一般匹配,那么最终会按照最大长度来做匹配正则匹配rew...
2019-08-23 23:17:36
132
原创 Nginx 简介 & 安装
关于反向代理和正向代理正向代理正向代理的对象是客户端反向代理反向代理代理的是服务端常用Web服务器介绍apache、Nginx、tomcat、weblogic、iis、jboss、websphere、jetty、netty、lighttpd、glassfish、resinApacheApache仍然是时长占用量最高的web服务器,据最新数据统计,市场占有率目前是50...
2019-08-23 22:45:13
118
转载 Spring5.x 源码环境搭建
第一、环境、工具准备JDK版本:1.8.0_161 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html GRADLE版本:4.9 下载地址:https://gradle.org/releases/ 配置教程:https://www.cnblogs.co...
2019-05-11 23:48:26
2675
SpringMVC 初始化 URL 与 Controller 方法 流程源码.vsdx
2020-02-04
SpringMVC URL 与 Controller 方法 初始化 源码赏析.vsdx
2020-02-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人