自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 分布式事物解决方案(基于XA的2PC/3PC、基于业务的TCC、消息最终一致性、最大努力通知、Seata)

先来讲一下什么是本地事物和分布式事物:平时我们写java代码在事物都会都会加@Transactional注解来保证事物的一致性,如下就是两个事物,如果都是通过这个注解的话,只要方法异常就回滚,看似没有问题;但是在分布式事物过程中,只要涉及到网络就是不可靠的,比如在方法中,远程调用成功了,但是因为网络原因迟迟没有返回,导致你认为是失败了,整个事物回滚,最终出现事物不一致;就如下图,李四金额增加成功了,由于网络原因返回超时了,但是张三回滚了,事物不一致,那么我们该如何解决分布式事物的问题呢?目前我们都是

2021-02-26 16:05:24 713

翻译 列式存储快的原因

https://www.jianshu.com/p/54aeaeb7eff0

2020-05-27 20:18:17 1006

原创 二叉树DFS和BFS遍历

https://blog.csdn.net/Gene1994/article/details/85097507public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}BFS广度优先遍历://使用Queue实现BFSpublic voi...

2020-03-18 16:36:29 421

原创 Spring为什么是单例的?如何保证线程安全?

单例的好处:1 减少请求时候创建对象的开销,提升性能2 减少jvm垃圾回收单例的坏处:1 对于有状态的变量可能会造成线程安全问题,因为只有一个实例,如果操作的是有状态的全局变量,多个线程之间可能会操作同一个变量和对象导致线程不安全问题多例的好处:1 线程安全,每个请求过来都分配一个新的对象,里面的所有东西属性方法都是该线程独享的坏处:1 资源开销大,创建对象需...

2020-03-17 14:49:45 7265 3

原创 JAVA并查集算法

https://blog.csdn.net/qq_42011541/article/details/83378709

2020-03-09 16:12:52 951

原创 HTTPS通俗易懂

https://www.wosign.com/News/httpsjiami_20180817.htm亲测,通俗易懂

2020-03-02 17:24:55 262

原创 mysql数据库实时集群和备份

前言:最近由于业务需要,需要搭建高可用和支持实时备份和恢复,本来想直接采用公司的数据库服务。无奈公司没有资源,所以就搞了几台Linux主机自己搭建啦。(里面涉及的文件、配置、脚本代码我都贴到附件了)过程:一 购买云主机二 搭建Mysql数据库,首先你需要需要删除干净本机的原先数据库--->https://jingyan.baidu.com/article/4b...

2019-08-31 16:32:07 1483

原创 Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat

Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field imageFiles exceeds it...

2019-05-02 23:51:21 7551 3

转载 利用docker安装redis,并且自定义配置运行

https://segmentfault.com/a/1190000014091287博客垃圾文章太多,上面亲测有效

2019-04-10 21:43:28 1012

翻译 linux上把可执行的java jar包如何用docker打成镜像运行

https://blog.csdn.net/wcuuchina/article/details/85767094

2019-04-09 23:20:31 1930

原创 TCP 流量控制和拥塞控制

TCP 流量控制和拥塞控制 TCP的流量控制 — 滑动窗口  发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。为什么要设置窗口?我们可以把窗口理解为缓冲区。如果没有这些“窗口”,那么TCP每发送一段数据后都必须等到接收端确认后才能发送下一段数据,这样做的话TCP传输的效率实在是太低了。1....

2019-01-25 17:29:14 708

原创 TCP拆包和黏包的过程和解决

TCP拆包和黏包的过程和解决粘包、拆包解决办法通过以上分析,我们清楚了粘包或拆包发生的原因,那么如何解决这个问题呢?解决问题的关键在于如何给每个数据包添加边界信息,常用的方法有如下几个: 1、发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。 2、发送端将每个数据包封装为固定...

2019-01-25 17:27:01 876

原创 常见的状态码

Http常见的状态码1xx (临时响应)表示临时响应并需要请求者继续执行操作的状态代码。100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2xx (成功)表示成功处理了请求的状态代码。200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提...

2019-01-25 15:33:57 255

原创 Java和Vue导出Excel表格

本文主要是记录一下最近写前后台导出excel花费的一些心得。前台: 通过一个同步的请求,同步等待数据,拿到数据以后,构建blob( new Blob)下载excel后台:利用java pio读取Excel,配合java反射,写了一个万能的excel导出模板,只要设置表头一个数组,和你的数据模型(可能会有潜在bug,但是目前使用正常)主要是为了大家以后避免一些坑,拿来即用  ...

2018-11-19 20:43:00 7939 16

原创 Git不小心commit了很大的文件怎么办?

前言:  大家使用git不知道有没有一个习惯,基本就是     一套 df 二连 素质三连:  1 git add .    2 git commit -m  3 git pull  4  git  push拉闸,不小心commit了超过10M的文件,拉闸。 出现了一个错误。 The size of file ‘xxx‘ has exceeded the upper limited...

2018-11-12 10:39:55 7075

原创 快排为什么一定要从右边开始?

今天刚好同事问了下,为什么以前背的快排一定要从右边开始?刚好也顺便给大家做个总结。 其实快排没有一定要重右边开始,只是看你基数的位置,如果你基数选的是最左边的。你一定要确保,你交换基础的时候,保证那个数要小于基数。但是你重右边开始,就无法保证了。 比如你有2 1 4 9           首先左边left 会 跑到 4这里,这样9也会到4.然后进行交换。显然就出错了。 肯定不...

2018-11-03 12:44:25 4541 2

原创 分页查询最后几个页面耗时优化

背景上海项目,148w的poi,查询最后几页时竟然耗时如此严重?接近20s。然而前两页的查询性能很快。 优化思路网上的优化思路https://www.cnblogs.com/lpfuture/p/5772055.html,拿来测试一下。确实优化了很多。但是,还有优化空间https://blog.csdn.net/a724888/article/details/60...

2018-11-01 14:23:06 2475

原创 自定义数据结构设计JDBC连接池提高性能

 // 后面贴上源码之前写一个小工具,发现了一个问题,发现部署到云计算上面,由于需要操作其他环境的数据库,发现获取66   175环境的获取连接非常缓慢。通过打印日志,然后部署到服务器,发现获取175环境的数据库连接池居然要6s?? 获取66环境需要3s 显然不合理? 一个查询居然要5-6秒,具体原因我真的不懂,为啥175连的那么困难? 是不是物理机隔得太远了?还是啥。。 反正...

2018-11-01 14:11:23 310

原创 简单的给大家说一下mysql建库建表的字符集和排序规则

直说重点字符集  一般就 utf8  和utf8mb4的选择注意,请选择utf8mb4, mb4是用4个字节来存的。utf8是3个字节,有些特殊表情和字是四个字节,就会insert错误。另外字符集 utf8_bin    utf8_general_ci    utf8_general_csutf8_bin    二进制字符集,二进制存,你懂得,严格区分大小写啥的utf8_gen...

2018-10-10 10:24:24 3323 2

转载 tomcat底层工作原理

Tomcat(1)Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container; (2) Server掌管着整个Tomcat的生死大权; (4)Service 是对外提供服务的; (5)Connector用于接受请求并将请求封装成Request和Response来具体处理; (6)Contain...

2018-09-06 17:42:29 2580 1

原创 如何保证数据库集群时候,主从库一致性的问题?

前言:  数据库集群,读写分离现在可以说是项目必备的了,但是我们如何保证其每个数据库的数据一致性? 1 半同步复制  简单的说就是: 主库发生增删改操作的时候,会等从库及时复制了并且通知了主库, 才会把这个操作叫做成功.  优点:保证数据一致性  缺点:就是会慢专业的讲:  半同步复制,是等待其中一个从库也接收到Binlog事务并成功写入Relay Log之后,才返回C...

2018-09-06 15:23:14 19658 3

原创 总结一下个人使用的IDEA快捷键

因为自己在公司用的是windows本回家用的是mac本所以打算给大家慢慢总结两个操作系统的idea快捷键:windows: F1,帮助 千万别,很卡!F2,或 Shift+F2,高亮错误或警告快速定位F3,向下查找关键字出现位置F4,查找变量来源F5,拷贝文件快捷方式F12,把焦点从编辑器移到最近使用的工具窗口Tab,代码标签输入完成后, Tab,生成代码...

2018-09-06 11:17:03 259

原创 innoDB、myisam、memory、BlackHole以及这几个引擎的讲解

innoDB存储引擎(1) innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。(2)innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话怎会进行自动存现有的值开始增值,如果有但是比现在的还大,则就保存这个值。(3)innodb存储引擎支持外键(foreign key) ,外键所在的表称...

2018-08-20 23:36:19 299

原创 group by  /having / where 区别

where过滤无法做到,因为where语句的执行在分组之前,因此过滤在分组之前。并且,where只能过滤行,不能过滤分组。(where中不能使用聚合函数) having可以对group分组的结果集进行过滤,因其执行在分组之后,并其过滤可以基于分组聚集值。(having子句中可以直接使用聚合函数)有这样的说法,“having子句中的列只能是group by子句中的列或者聚合函数的列”。实...

2018-08-20 23:35:15 408

原创 什么是存储过程?用什么来调用?

答:存储过程是一个预编译的SQL语句,比如一些场景的sql比较复杂,并且需要经常使用或者多次使用的。存储过程的优点是说只需创建一次编译一次,以后在该程序中就可以多次直接调用。如果一个sql是经常需要操作的,并且逻辑不容易改变,使用存储过程比单纯SQL语句执行要快,因为sql每次查询而且都需要编译。而且网络开销也大,存储过程只需要传一个名字,在数据库调用就行了,而且这样程序可移植高。 优势:...

2018-08-20 23:34:24 13594

原创 Java简单的死锁代码

public class DeadLock {    public static String obj1 = "obj1";    public static String obj2 = "obj2";    public static void main(String[] args){        Thread a = new Thread(new Lock1());        ...

2018-08-13 20:18:33 7975

原创 高并发编程 volatile 和 加锁 解决缓存不一致

因为程序执行都在cpu中,但是如果没有高速缓存,cpu大部分的时间都用来了读取内存的数据。从而Cpu有 高速缓存,在运行指令前,会把相关需要的数据提前拷贝到cpu,运算完成后在刷回内存里。 高速缓存主要提前缓存数据到cpu,等cpu运算完成后把结果返回给主存 I = 0比如 i = i+1 就会 先把 i = 0 复制到高速缓存中,这样cpu进行加1 操作后,在把值还给...

2018-08-12 13:19:39 679

原创 数据结构之哈夫曼树

讲一下什么是哈夫曼树。哈夫曼树简称带权路径最小。构建:构建过程非常简单 1 3 5 10 12 18 25 (排好顺序了  没排的第一步排序)然后取两个最小的数构建 原序列变成 4 5 10 12 18 25然后在取最小的两个数构建 9 10 12 18 25再取 19 12 18 25再取 19 30 25再取 44 30最后 74 大概这样的过程 取的树...

2018-08-09 00:29:14 467

转载 spring boot actuator和spring boot admin

https://blog.csdn.net/kkgbn/article/details/56488744

2018-08-05 22:04:12 497 1

原创 AMQP协议介绍

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP在消息提供者和客户端的行为进行了强制规定,使得不同卖商之间真正实现了互操作能力。JMS是早期消息中间件进行标准化的一个尝试,它仅仅是在API级进行了...

2018-08-05 21:37:10 448

原创 kafka

Kafka是常见的一种消息中间件 是一个具有高吞吐量的分布式发布消息和订阅消系统。 有以下一些专业术语Broker  经纪人(服务器)Kafka可以做集群,其中每一个服务器就叫做一个broker Topic 主题(类别)Kkfka的消息是有类别的,这个类别叫Topic ,一个Topic可以在一个broker或者多个broker下(一般发布或者订阅消息 都需要...

2018-08-05 21:33:36 122

原创 RPC 协议 Remote process call 远程过程调用

RPC信息协议由两个不同结构组成:调用信息和答复信息。简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另  一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。 RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯) RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式) RPC 在使用形式上像调...

2018-08-05 21:32:53 824

原创 HTTP简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。...

2018-08-05 21:32:11 147

原创 什么是CDN?有什么用?

        CDN的全称是内容分发网络,比如我们客户端向服务器请求一个数据,当这个数据很大,请求频繁,而且服务器距离客户端很远这样是不是很浪费资源,浪费大量的带宽,严重时候还会造成网络阻塞。而且这样响应时间非常慢。       CDN主要由负载均衡,和高速缓存服务器组成。其中分为中心部分和边缘部分。中心部分就是负责全局负载均衡,当客户端发送请求,首先会访问中心CDN,经过全局负载均衡,根据...

2018-08-05 21:31:41 3600

原创 线程间的通信

 https://www.cnblogs.com/hapjin/p/5492619.html通常可用把并行程序理解为一组相互独立的、能够发关和接收消息的组件,这也称为角色模型(ActorModel),在维基百科上可找到更正式的解释 http://en.wikipedia.org/wiki/Actor_model。虽然使用消息传递的场景往往相当复杂,但是其背后的思想却相对简单,正像下面将要看...

2018-08-05 21:30:52 178

原创 孤儿进程 僵尸进程 守护进程

 孤儿进程:       当父进程A fork方式出子进程 B,一般情况下是父进程的寿命比子进程的长,但是这时候父进程突然停止了。这时候子线程B 就没有了父亲,就由init进程托管(也就是id为1的进程),然后它就成了孤儿进程。但是孤儿进程不占用内存空间,不危害系统 僵尸进程:当父亲A 进程 fork 出 B进程,这时候子进程退出了, 但是并没有通知到父进程,父进程没有调用wa...

2018-08-05 21:30:27 181

原创 Http常见的状态码

Http常见的状态码  1xx (临时响应)表示临时响应并需要请求者继续执行操作的状态代码。100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2xx (成功)表示成功处理了请求的状态代码。200 (成功) 服务器已成功处理了请求。 通常,这...

2018-08-05 21:29:36 146

原创 kafka和rabbitmq的最大区别是

 Kafka是严格保证了消息队列的顺序,就是一个topic下面的一个分区内只能给一个消费者消费,对于一个分区来说,kafka是不支持并发,但是可以通过扩大分区实现并发 Rabbitmq 不承诺消息的顺序性,因此可以并发多线程处理。在队列中不必排队。如果对处理的顺序没有要求,就可以用Rabbitmq教容易的实现并发。...

2018-08-05 21:28:47 9419

转载 spring cloud sleuth zipkin 最快部署

最快部署https://blog.csdn.net/fishinhouse/article/details/80203597

2018-07-31 09:18:08 225

原创 讲讲数据库字段用了关键字怎么办

今天我就用了数据库的关键字,也就是保留字。我们应该在保留字加上 `` 也就是键盘esc那两个点。这样mysql就可以识别了、、就这么简单<insert id="insert" useGeneratedKeys="true" keyProperty="id"> insert into descbody (desc_body_id,`key`, key_desc, ke...

2018-07-23 15:36:57 2732

免费Navicat Premium_11.2.7中文破解版(32位和64位)--Mysql

居然不能免费。。。最少也只能设置2分,因为我今天下载,居然要10几分,感觉太坑,所以希望能够帮助大家。祝大家学习愉快,里面有破解文件,比较简单。

2018-03-18

空空如也

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

TA关注的人

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