自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小白鼠丶

只要抱着良好的愿望演奏,演员的演技可以不予苛求。

  • 博客(218)
  • 资源 (4)
  • 问答 (6)
  • 收藏
  • 关注

原创 幂等性保障

唯一ID+指纹码机制,利用数据库主键去重唯一ID+指纹码机制,利用数据库主键去重select count(1) from order_table where ID=唯一ID+指纹码实现简单,但是高并发下数据库写入新能瓶颈解决方案:跟进ID进行分库分表进行算法路由利用Redis的原子性去实现通过在Redis放一个 比如userID+goodsID的key,判断是否存在来进行...

2020-03-10 10:19:52 448

原创 Linux 杂记(一)

查看端口占用情况netstat -nultp主要看监控状态为LISTEN表示已经被占用,最后一列显示被什么服务占用,查看具体端口号,只要有如图这一行就表示被占用了。...

2020-03-09 10:17:55 329

原创 Mysql 杂记(一)

回表:回到主键索引树搜索的过程,称为回表 覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID from T where k be tween 3 and 5 在引擎内部使用覆盖索引在索引K上其实读了三个记录,R3~R5(对应的索引k上的记录项),但 对于MySQL的Server层来说,它就是找引擎拿到了两条记录,因此MySQL认为扫描行数是2 最左前缀原则...

2020-03-07 15:18:52 372

转载 [MySQL] 两个优化数据库表的简单方法以及查看数据库各表数据量和索引大小

optimize [local|no_write_to_binlog] table table_name1[,table_name2]...  如果删除了表的一大部分,或者对含有可变长度列的表(含有varchar、blob、text列的表)进行了很多更改,则应该使用optimize table 命令来进行表优化。optimize 可以合并表中的空间碎片,消除由于删除或者更新造成的空间浪...

2020-03-07 14:48:16 287

原创 JVM快速找出耗内存大对象

1.找到进程号 ,使用top命令查看应用的系统的整体负载load average:1.单核CPU, 数字在0.00-1.00之间正常0.00-1.00 之间的数字表示此时路况非常良好,没有拥堵,车辆可以毫无阻碍地通过。1.00 表示道路还算正常,但有可能会恶化并造成拥堵。此时系统已经没有多余的资源了,管理员需要进行优化。1.00以上 表示路况不太好了,这种情况...

2020-03-05 12:02:55 3908

原创 OOM和StackOverflowError 笔记

SOFE之StackOverflowErrorOOM之Java heap space在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的 Heap size 不足2%的时候将抛出异常信息,java.lang.OutOfMemoryError: Java heap space。所以产生这个异样的原因通常有两种: 1.程序中...

2020-03-04 21:50:09 757

原创 JVM垃圾收集器 以及如何查看GC日志

涉及的一些概念新生代DefNew:在Serial收集器中新生代名为Default New GenerationParNew:垃圾收集器ParNew中新生代名称就会变为[Parnew,意思为Parallel New GenerationPSYongGen:如果采用Parrallel Scavenge收集器,那么它配套的新生代名称为PSYongGen老年代同理,名称由垃圾收...

2020-03-04 20:48:37 1142

原创 垃圾收集器回收种类 以及七种垃圾收集器

垃圾收集器回收种类垃圾收集器是垃圾回收算法的具体实现串行垃圾回收器(Serial)它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停用户线程(并行垃圾回收器)Parallel多个垃圾收集器并行工作,此时用户线程是暂停的并发垃圾回收器(CMS)用户线程和垃圾收集线程同时执行(不一定是并行,可能是交替执行,不需要停顿用户线程)G1垃圾回收器G...

2020-03-04 18:10:17 896

转载 RabbitMQ 消息转换器-MessageConverter 笔记·

参考博客:https://www.jianshu.com/p/fe0439608581Message toMessage(Object object, MessageProperties messageProperties);将java对象和属性对象转换成Message对象。Object fromMessage(Message message) throws MessageConvers...

2020-02-29 16:06:15 2232

转载 RabbitMQ 消息监听适配器-- MessageListenerAdapter 笔记

RabbitMQ 简单消息监听容器--SimpleMessageListenerContainer 笔记注释// container.setMessageListener(new ChannelAwareMessageListener() {// @Override// public void onMessage(Message message, Channel...

2020-02-29 15:49:06 1966

转载 RabbitMQ 简单消息监听容器--SimpleMessageListenerContainer 笔记

这个类非常强大,我们可以对他做很多设置,对于消费者的配置项,这个类都可以满足监听队列(多个队列)、自动启动、自动声明功能可以设置事务特性、事务管理器、事务属性、事务容量(并发)、是否开启事务、回滚消息等可以设置消费者数量、最大最小数量、批量消费设置消息确认和自动确认模式、是否重回队列、异常捕获handler函数设置消费者标签生成策略、是否独占模式、消费者属性等设置具体的转换器、消息转换...

2020-02-29 15:21:30 4697

原创 RabbitMQ 高级特性笔记

目录Confirm确认消息Return消息机制消费端自定义监听消费端限流消费端ACK与重回队列消费端的手工ack和nack重回队列TTL队列/消息死信队列Confirm确认消息 //1 创建ConnectionFactory ConnectionFactory connectionFactory = new Connectio...

2020-02-26 20:48:25 266

原创 RabbitMQ 消息如何保障100%投递成功 笔记

生产端的可靠投递需要满足四点1.保障消息的成功发出2.保障MQ节点的成功接收3.发送端收到MQ节点(broker)确认应答4.完善的消息进行补偿机制方式一:消息落库成功情况:在第一步设置MSG DB status:0 第二步,第三步,第四步成功设置 status:1异常情况:在第二步和第三步可能出现RPC网络闪断等问题问题导致消息投递失败或者c...

2020-02-26 18:23:30 629

原创 RabbitMQ 核心概念 以及 AMQP协议总结

AMQP[1],即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品、不同开发语言等条件的限制。AMQP协议模型AMQP核心概念server: 又称Broker,接受客...

2020-02-25 22:37:59 267

转载 (三)JVM 逃逸分析 笔记

publicstaticStringBuffer craeteStringBuffer(Strings1,Strings2) { StringBuffer sb =newStringBuffer(); sb.append(s1); sb.append(s2); returnsb;}StringBuffer sb是一个方法内部变量,上述代码中直接将s...

2020-02-24 19:01:50 155

原创 运行时数据区 是否发生GC和内存溢出 笔记

HotSpot OOM GC PC × × 虚拟机栈 √ × 本地方法栈 √ × 堆 √ √ 方法区 √ √ 虚拟机栈没有垃圾回收的原因是:虚拟机栈只包括入栈和出栈两个操作...

2020-02-24 17:25:32 195

原创 (二)虚拟机栈 笔记

目录虚拟机栈概述栈的存储结构和运行原理栈桢的内部结构字节码中方法内部结构的剖析mian方法解析局部变量表变量槽slot的理解与演示操作数栈的特点涉及操作数栈的字节码指令执行分析动态链接的理解与常量池的作用虚拟机栈概述每个线程会创建一个虚拟机栈,其内部保存一个个的栈帧,对应着一次次的Java方法调用,生命周期和线程一样优点是跨平台,指令集小,编...

2020-02-24 17:15:57 184

原创 (一)JVM ClassLoader 笔记

类加载器子系统概述1. 类加载子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识2.ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine决定。3.加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常...

2020-02-21 15:31:52 125

原创 Java 对接Jenkins API操作(不需要勾选允许站点跨域访问)

最先的是jenkins的跨域问题 如果是一般学习直接关闭 在公司Java对接jenkins的话 还是不关闭需要的maven 依赖<dependency> <groupId>com.offbytwo.jenkins</groupId> <artifactId>jenkins-client</artifactId...

2020-02-19 18:05:18 2516

原创 Jenkin安装与使用

1. 下载jar包 运行jar包以及一些问题解决方案一般使用较新的版本 不然会出现一些插件安装方面的问题使用 java -jarjenkins.war 命令启动 最后 在cmd 里面 生成一个秘钥 第一次登陆需要这个秘钥首页路径为http://127.0.0.1:8080/如果是初始使用插件安装失败:请参考博客:https://www.cnblogs.co...

2020-02-19 17:52:24 285

转载 RabbitMQ的使用(三)创建用户及角色、创建Virtual Hosts

添加用户及角色:访问:127.0.0.1:15672打开RabbitMQ管理界面管理界面介绍:添加用户:1、超级管理员(administrator)可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。2、监控者(monitoring)可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,...

2020-02-13 14:36:36 1765

原创 秒杀项目 安全优化笔记

秒杀接口地址隐藏防机器人写一个接口以获取秒杀地址,接口中使用如用户ID+商品ID为key,value为UUID字符串设置到redis中,以便在第2步校验url是否正确,并返回UUID生成的字符串 拿到第1步生成的UUID字符串发送给真正的秒杀接口,校验UUID是否正确,若正确则继续秒杀接口逻辑数学公式图形验证码分散用户请求,防机器人接口限流防刷一段时间内访问接口...

2020-02-11 16:10:47 240

原创 点击商品秒杀按钮时的后台操作笔记

目录点击商品秒杀时的(主要是减少数据库层面的访问)最初优化1优化2优化3(最终版本)点击商品秒杀时的(主要是减少数据库层面的访问)一步一步优化最初判断数据库内存是否足够 足够再判断是否已经在订单表中存在(存在表示已经秒杀到了) 然后再进行订单创建以及库存的降低(这一步需要事务)优化1判断数据库内存是否足够 足够再判断redis中是否...

2020-02-10 16:47:42 531

原创 Spring Boot 整合RabbitMQ笔记 :四种交换机模式Demo

SpringBoot +RabbitMQ配置具体参考:https://blog.csdn.net/qq_33366229/article/details/104197811Direct模式:https://blog.csdn.net/qq_33366229/article/details/104197811Topic模式MQconfig@Configurationp...

2020-02-10 11:34:50 425

原创 SpringBoot 整合RabbitMQ 笔记(初识demo)

添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>application.properties...

2020-02-06 16:21:46 333

原创 Docker 学习笔记 ing

1. docker 容器总运行一段时间就退出退出原因1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出3、这个是 docker 的机制问题解决方案:docker run -dit <镜像名>如果是自己测试用就可以直接运行...

2020-02-06 12:50:19 499

转载 用 Docker 运行 Nginx 容器做域名反向代理

1首先pull下载nginx镜像包docker pull nginx2(关键)查看nginx镜像里面配置文件、日志等文件的具体位置,只有找到镜像配置文件的路径,后面挂载文件和文件夹才能覆盖这些路径3 以终端的方式打开镜像容器docker run -i -t nginx /bin/bash3 创建目录mkdir root/nginx/confmkdir ro...

2020-01-15 16:42:37 1298

原创 Dubbo学习笔记(一)

1.什么是SPI技术?参考博客:https://blog.csdn.net/qiangcai/article/details/77750541SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java spi机制的思想。...

2020-01-10 13:48:35 334

原创 什么是微服务

微服务微服务概述就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style)但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。服...

2020-01-09 15:32:27 137

原创 常用的JVM参数

堆内存初始大小-Xms: 初始值的最小堆内存大小为机器的64分之1-Xmx: 初始值的最大堆内存大小为机器的4分之1设置单个线程栈的大小,一般默认512k到1024kXss 等价于:-XX:ThreadStackSize栈管运行,堆管存储默认值与平台有关元空间MetaSpaceSize大小-XX:MetaspaceSize=256m -XX:M...

2019-12-30 22:36:41 561

原创 JVM的参数类型以及学习笔记

JVM参数类型标配参数,x参数(了解),xx参数(重点)标配参数x参数(了解)指定JIT编译器的模式:-Xint,-Xcomp,-Xmixed我们知道Java是一种解释型语言,但是随着JIT技术的进步,它能在运行时将Java的字节码编译成本地代码。以下是几个相关的选项:-Xint表示禁用JIT,所有字节码都被解释执行,这个模式的速度最慢的。-Xcomp表示所有字...

2019-12-24 22:42:43 415

原创 GC Root总结

判断一个对象是否可以被回收1.引用计数法(了解即可)2.可达性分析参考文章:https://blog.csdn.net/qq_33366229/article/details/93194267#%E4%BB%80%E4%B9%88%E6%98%AF%E5%A4%A7%E5%AF%B9%E8%B1%A1%EF%BC%9A 所谓的'GC roots'或者说trac...

2019-12-23 22:05:02 6291

原创 线程池总结

目录线程池的使用及优势线程池三种常用方式Executors.newFixedThreadPool(int) :执行长期的任务,性能好很多Executors.newSingleThreadExecutor() :一个任务一个任务执行的场景Executors.newCachedThreadPool() : 适用:执行很多短期异步的小程序或者负载均衡较轻的服务线程池七大入门...

2019-11-27 22:19:50 137

原创 Call FutureTask

创建线程的第三种方式:有返回值Demopackage demo;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;import java.util.concurrent.TimeUnit;import static java.lang.System.out;cl...

2019-11-20 22:25:48 160

原创 生产者消费者模式 3.0(阻塞队列版)

2.0版:多线程 生产者与消费者2.0版(Condition版)1.0版 :多线程 生产者与消费者 遇到的问题以及解决方法package demo;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurre...

2019-11-20 21:39:53 132

原创 Synchronized和Lock有什么区别

1.原始构成synchronized是关键字属于JVM层面 monitorenter(底层是通过monitor对象来完成,其实wait/nitofy等方法也依赖monitor对象,只有在同步块或同步方法中才能使用这两个方法) monitorexitLock是具体类(java.util.concurrent.locks.lock)api层面的锁synchroniz...

2019-11-19 22:50:49 203

原创 多线程 生产者与消费者2.0版(Condition版)

原始版:多线程 生产者与消费者 遇到的问题以及解决方法package demo;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;import static java....

2019-11-19 22:15:55 100

原创 Java的阻塞队列

什么是阻塞队列:阻塞队列BlockingQueue,相当我们经常接触的List,但如果BlockQueue是空的,这时如果有线程要从这个BlockingQueue取元素的时候将会被阻塞进入等待状态,直到别的线程在BlockingQueue中添加进了元素,被阻塞的线程才会被唤醒。同样,如果BlockingQueue是满的,试图往队列中存放元素的线程也会被阻塞进入等待状态,直到BlockingQu...

2019-11-19 21:31:10 151

原创 CyclicBarrier 应用实例

public class CylicBarrierDemo { public static void main(String[] args) throws Exception { CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{ out.println("**...

2019-11-12 22:01:20 107

原创 Java BigDecimal 和Mysql 加减乘除,求余,求平均值,查询不等于某数值

BigDecimal直接用数字转换为BigDecimal时会出现不精确的数值:BigDecimal e = new BigDecimal(2.2); System.out.println("e:"+e); BigDecimal f = new BigDecimal(3.32); System....

2019-11-12 09:08:28 3557

尚硅谷 Spring Boot 文档 不包含代码

尚硅谷 Spring B oot上篇 文档 不包含代码以及视频,

2018-09-12

Maven学习笔记

学习Maven的笔记,在学习尚硅谷的视屏中所得,简单明了

2018-05-13

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

TA关注的人

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