自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 CentOS 7 安装 JAVA环境(JDK 1.8)

CentOS 7 安装 JAVA环境(JDK 1.8)

2020-08-28 17:25:44 138

翻译 多key业务,数据库水平切分架构一次搞定

多key业务,数据库水平切分架构一次搞定

2020-08-17 11:38:13 155

转载 Oracle执行update时卡死问题的解决方法

Oracle执行update时卡死问题的解决方法

2020-08-11 14:29:41 486

转载 新项目上传到git

在码云客户端创建项目然后在要上传的项目文件夹中右键 Git Bush Here如下git config --global user.name "tuoni"git config --global user.email "[email protected]"git initgit remote add origin https://xxx //Gitee项目地址git add .git commit -m "init"git pull --rebase origin mastergit push

2020-07-30 16:09:50 99

转载 分布式事务,XA、3PC、TCC、MQ

关于分布式事务,XA协议的学习笔记

2020-07-15 13:51:42 127

原创 面试之线程并发volatile关键字

作用volatile关键字主要有两个功能:1、变量的可见行2、防止指令重排序可见行如下图:Java线程工作模型Java的线程内存模型分为主内存和工作内存。主内存是所有的线程所共享的,工作内存是每个线程自己有一个,不是共享的。线程工作时将要用到的变量从主内存拷贝到自己的工作内存,然后在工作内存中进行读和写,写完之后,可能没被更新到主内存去。导致其他线程从主内存拷贝数据到自己的工作区时,拷贝的不是最新的数据。这就是内存可见性问题。而被volatile修饰的变量,在发生改变的时候会告诉其他线程

2020-07-07 23:04:36 89

原创 RabbitMQ消息可靠投递

RabbitMQ 可靠投递

2020-07-01 16:07:41 120

转载 RabbitMQ基础组件介绍

RabbitMQ采用Erlang语言开发概念生产者(producer):创建消息,发布到代理服务器(Message Broker)。消费者(consumer):消费消息代理服务器(Message Broker):接收和分发消息的应用,RabbitMQ Server就是消息代理服务器,其中包含概念很多,以RabbitMQ 为例:信道(channel)、队列(queue)、交换器(exchange)、路由键(routing key)、绑定(binding key)、虚拟主机(vhost)等。信道(

2020-07-01 16:03:25 1319

原创 面试题之Rabbitmq的集群镜像

RabbitMQ集群高可用RabbitMq集群模式分为两种:普通集群;镜像集群模式普通集群模式多台机器上启动多个RabbitMQ实例,每个实例中的exchange和queue都包含meta、contents、state等信息,exchange在集群中的每个节点都保存一份数据,但是queue不一样,queue在集群中对于contents只存储一份,其他节点只存储meta信息也就是说:对于publish,客户端任意连接集群的一个节点,转发给创建queue的节点存储消息的所有信息对于consumer

2020-07-01 15:27:58 739

原创 面试问题之Mysql like索引失效

like 索引使用大家Mysql索引有最左原则,所以通过 like '%XX%'查询的时候会造成索引失效,一般采用like 'XX%'右边匹配的方式来索引。但是这样一定会使用索引不like 使用创建SQLCREATE TABLE `user` ( `ID_` bigint(20) NOT NULL AUTO_INCREMENT, `AGE_` int(11) DEFAULT NULL, `NAME_` varchar(255) DEFAULT NULL, PRIMARY KEY (`

2020-06-20 17:02:55 3944

原创 面试问题之Mysql InnoDB引擎 行锁变表锁

锁机制Mysql锁分为表锁和行锁,表锁虽然开销小,锁表快,但高并发下性能低。行锁虽然开销大,锁表慢,但是并发性能高。InnoDB采用的行锁,支持事务;MyISAM采用表锁不支持事务InnoDB行锁会变表锁吗?案例分析:创建表结构CREATE TABLE `user` ( `ID_` bigint(20) NOT NULL AUTO_INCREMENT, `AGE_` int(11) DEFAULT NULL, `NAME_` varchar(255) DEFAULT NULL, P

2020-06-20 16:44:36 1012

原创 Mysql Innodb事务管理

事务的基本要素(ACID)原子性(Atomicity):事务开始后的所有操作,要么全部做完,要么全部不做。事务执行过程中出错,会回滚到事务开始前的状态一致性(Consistency):数据开始前和结束后,数据库的完整性约束没有被破坏。比如:A向B转账,不可能A扣了钱,B却没收到隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。事务的并发问题脏读A事

2020-06-16 14:14:00 257

原创 Mysql 索引的创建和注意事项

索引创建索引的创建遵循一个原则,列的离散型越高,选择性就越好主键索引(聚集索引) MySql中默认主键就是聚集索引,如果不指定主键的话,Mysql内部会创建一个隐藏的聚集索引。ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )唯一索引 唯一索引要求该字段的值是唯一的ALTER TABLE `table_name` ADD UNIQUE ( `column` )普通索引ALTER TABLE `table_name` ADD

2020-06-16 14:06:54 215

原创 Mysql为什么选择B+Tree索引

索引是什么索引是加快数据检索,而创建的一种分散存储的数据结构索引的选择上面提到索引是一种数据结构,常用的数据结构包括数组、哈希表、树(树又包含了二叉树查找树、红黑树、B Tree、B+Tree)等。为什么Mysql索引使用了B+Tree这种数据结构,而不是其他的呢Mysql主要操作就是CURD,下面从这几种操作的时间复杂度来判断数据结构新增删除查询数组O(N)O(N)O(N)有序数组O(N)O(N)O(logN)哈希表O(1)O(1)O(1)

2020-06-16 13:19:37 497

转载 HTTPS原理看了很多,这个是最清晰的

随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA 证书等。但对于以下灵魂三拷问可能就答不上了:为什么用了 HTTPS 就是安全的?HTTPS 的底层原理如何实现?用了 HTTPS 就一定安全吗?本文将层层深入,从原理上把 HTTPS 的安全性讲透HTTPS 的实现原理大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会

2020-06-10 17:41:33 265

原创 Spring的两种代理JDK和CGLIB的区别浅谈

一、原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3、如果...

2020-06-09 14:36:53 226

原创 Spring注解事务和声明式事务同时使用

Spring xml和注解混用,方法的事物既有注解方式@Transactional()、又有xml的方式<!-- 配置事务管理器类 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property&g

2020-06-09 14:33:12 1088

原创 Java8 JVM内存模型

一、JDK1.8 JVM内存模型二、各区域介绍1、程序计数器指向当前线程正在执行的字节码指令的行号(地址)2、本地方法栈为虚拟机使用的Native方法服务3、虚拟机栈每个Java方法在被调用的时候都会创建一个栈帧,用来存储局部变量表(八大原始类型、封装类型)、作数栈、动态链接、方法出口4、堆几乎所有的对象实例及数组都在堆上进行分配;生明的全局变量。在jdk1.7中,符号引用(Symbols)转移到了Native Memory;字符串常量池(interned strings)转移到了Jav

2020-06-07 11:03:24 2865

原创 Java 位运算符

1、十进制转二进制原理:给定的数循环除以2,直到商为1或者0为止,将每一步除的结果的余数记录下来,然后反过来就得到相应的二进制。比如:9转二进制第一次除以2等于4(余数1) 第二次除以2等于2(余数0) 第三次除以2等于1(余数0) 最后余数1,得到的余数依次为1001,反过来就是1001,Java中二进制(字节码)是8位的,补齐高位000010012、二进制转十进制原理:比如9的二进制是00001001,去掉补齐的高位就是1001,从个位开始计算2的幂(个位是0,依次往后推)乘以对应位数上的

2020-06-06 14:45:08 165

原创 JVM性能调优

1、性能分析1.1、 CPU分析- top命令: 列出指定进程下线程的信息,会按CPU的使用占比从大到小排列。top -H -p <pid>平均负载(load average)有三个数字:63.66,58.39,57.18,分别表示过去 1 分钟、5 分钟、15 分钟机器的负载。按照经验,若数值小于 0.7*CPU 个数,则系统工作正常;若超过这个值,甚至达到 CPU 核数的四五倍,则系统的负载就明显偏高。上图负载明显过高确定好cpu使用率最高的进程之后就可以使用jstack来打印出异

2020-06-06 14:26:07 84

原创 Nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用

Nginx访问限制模块limit_conn_zone 和limit_req_zone配置使用

2020-06-05 19:31:25 467

原创 一个接口的性能问题定位和分析过程

一个接口的性能问题定位和分析过程使用jprofiler分析dump文件一个实例jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令

2020-06-04 22:45:29 564

转载 SpringBoot自动装配实现

SpringBoot使用Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),这是基于Spring 4.x提供的按条件配置Bean的能力。Spring Boot的启动类上有一个@SpringBootApplication注解,这个注解是Spring Boot项目必不可少的注解。那么自动配置原理一定和这个注解有着千丝万缕的联系!@SpringBootApplicationpublic class ConfigApplication

2020-05-29 22:25:52 3061

转载 一致性Hash

前言  伴随着系统流量的增大,出现了应用集群。在 Redis 中为了保证 Redis 的高可用也为 Redis 搭建了集群对数据进行分槽存放。在 Mysql数据库要存储的量达到一个很高的地步的时候,我们会对数据库进行分库分表操作。OK,到这儿先假设我们不知道什么是集群、什么是分库分表,我们先来看一个数据库水平切分演变的例子:假设我们的系统中有一张会员表 customer_info, 我们的系统刚开始无人问津,我们在一个单个的数据库中放这张表,所有的会员记录都插入到这个数据库的这张表中,这没什么问题,是一

2020-05-25 11:29:41 455

原创 JDK1.8 HashMap原理实现

前言HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。JDK1.8版本HashMap的内部数据结构1、HashMap采用数组和链表(红黑树)的结构2、HashMap的数据插入原理计算 k 的 hash 值判断数组是否为空,为空进行初始化;不为空,通过(n - 1) & hash计算应当存放在数组中的下标 i...

2020-03-25 17:31:46 177

原创 springcloud--Feign使用OkHttp3

在Feign中,Client是一个非常重要的组件,Feign最终发送Request请求以及接收Response响应都是由Client组件来完成的。Client在Feign源码中是一个接口,在默认情况下,Client的实现类是Client.Default。Client.Default是由HttpURLConnection来实现网络请求的。另外,Client还支持HttpClient和OkHttp3来...

2019-11-20 11:06:09 4514

原创 springcloud--eureka加密认证注册失败

spring cloud Finchley.SR2 版本配置文件 bootstrap.yml文件# 服务名称spring: application: name: eureka security: user: name: admin password: admin# 服务端口号server: port: 8761#Eureka 相关...

2019-11-19 14:01:42 639

转载 Redis的这八个问题,验证你是否精通

1、为什么使用Redis性能如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。并发如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库。2、使用Redis有什么缺...

2019-10-22 11:27:09 242

转载 深入理解Java中的AQS

ReentrantLock主要利用CAS和CLH队列来实现。支持公平锁和非公平锁,两者的实现类似CAS:Compare And Swap,比较并交换。CAS有三个参数:内存值V、预期值A、要修改的新值B。当且仅当预期值A=内部才能值V,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java底层。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI...

2019-07-09 17:13:01 99

转载 RabbitMQ延迟队列

延迟队列

2019-06-18 15:54:39 173

原创 JVM GC

在前文JVM运行时数据区 说过,JVM对堆内存采用分代策略。内存空间新生代:新生代的绝大部分对象有朝生熄灭的特点,存活率很低,回收效率高老年代:老年代的对象由新生代中存活多次、或者特殊原因(后面介绍)从新生代直接移来的。老年代的对象生命周期较长,垃圾回收后对象存活率较高,但回收效率很慢元数据区:垃圾回收对象存活判断添加链接描述...

2019-06-06 17:14:39 108

原创 Java基本数据类型

1、基本数据类型大小数据类型基本类型字节空间范围值整数byte1字节(8位bit)-2^7 - 2^7-1整数short2字节(16位bit)-2^15 - 2^15-1整数int4字节(32位bit)-2^31 - 2^31-1整数long8字节(64位bit)-2^63 - 2^63-1浮点数(单精度)float4字...

2019-06-04 22:12:30 83

转载 mvn 子模块 版本号的自动更新

把父模块更新到指定版本号,然后更新子模块,与父模块有相同的版本号mvn versions:set -DnewVersion=1.0.1-SNAPSHOTmvn -N versions:update-child-modules注意,如果子模块的版本号已经与父模块不一致,则先运行后面一条命令统一,在更新父模块版本。然后提交更新:mvn versions:commit...

2018-10-24 22:57:32 759

转载 redis-缓存穿透,缓存击穿,缓存雪崩解决方案分析

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透,缓存击穿与失效时的雪崩效应+。缓存穿透查询一个数据库中不存在的数据,比如商品详情,查询一个不存在的ID,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成过大地压力。解决方案有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的位图中,一个一定不存在的数据会被这...

2018-09-06 16:53:36 119

原创 Spring xml配置和注解一起使用

Spring xml和注解混用,方法的事物既有注解方式@Transactional()、又有xml的方式&amp;lt;!-- 配置事务管理器类 --&amp;gt; &amp;lt;bean id=&quot;txManager&quot; class=&quot;org.springframework.jdbc.datasource.DataSourceTransactionManager&quot;&amp;gt;

2018-08-02 13:56:58 5036

原创 Transaction rolled back because it has been marked as rollback-only异常

在Spring boot中,使用@Transactional(),需要在启动类上添加@EnableTransactionManagement,使用过程中经常会报Transaction rolled back because it has been marked as rollback-only含义是:事务已回滚,因为它被标记成了只回滚。出现的原因是spring嵌套事物中,有子事物出现异常,异常...

2018-05-16 19:09:58 2922 1

原创 poi导入excel

pox导入excel@FunctionalInterfacepublic interface ImportHandlerCallback<V> { /** * 数据校验、VO构建 * * @param error_index 出现错误或警告的行索引 * @param values 根据树据行解析出的数组 * @return

2017-12-13 15:00:58 192

原创 chmod权限

sudo chmod 600 ××× (只有所有者有读和写的权限) sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限) sudo chmod 700 ××× (只有所有者有读和写以及执行的权限) sudo chmod 666 ××× (每个人都有读和写的权限) sudo chmod 777 ××× (每个人都有读和写以及执行的权限) 其中×××指文件名(也可

2017-08-16 16:02:03 5945

原创 ssh免登录

A为本地主机 :192.168.1.1 B为远程主机 :192.168.1.2A命令:ssh-keygen -t rsa(连续三次回车)scp /root/.ssh/id_rsa.pub [email protected]:/root/.sshB命令//touch. 用来修改文件时间戳,或者新建一个不存在的文件touch /root/.ssh/authorized_keyschmod 600

2017-08-16 15:51:59 224

原创 springmvc初始化过程

http://www.cnblogs.com/RunForLove/p/5688731.html

2017-08-16 15:19:46 281

空空如也

空空如也

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

TA关注的人

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