自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(44)
  • 资源 (5)
  • 收藏
  • 关注

原创 数据库和缓存一致性方案

redis存储缓存,mysql存储数据。缓存进行有效期设置。但是更新mysql,不会更新缓存。这样导致缓存和数据库的一致性问题比较长 mysql更新后,进行更新redis缓存。查询的时候先查询redis缓存,如果没有缓存,只查询数据库进行更新缓存;缓存和数据库不一致性的时间短 Cache Aside Pattern mysql更新后,通过mq消息消费,异步进行redis更新;这样可以减少连接过...

2020-01-30 11:14:35 171

原创 Redo Undo 日志

Redo用来保证事务的原子性和持久性,Undo能保证事务的一致性

2020-01-20 20:00:56 156

原创 CMS 的一些问题

无法处理浮动垃圾;可能出现 “Concurrnet Mode Failure” 失败而导致另一次 Full GC 的产生,可能引发串行 Full GC 空间碎片,导致无法分配大对象,CMS 收集器提供了一个 -XX:+UseCMSCompactAtFullCollection 开关参数(默认就是开启的),用于在 CMS 收集器顶不住要进行 Full GC 时开启内存碎片的合并整理过程,内存整理的...

2020-01-20 17:38:03 410

原创 RabbitMQ 确保消息不丢失

生产端保证消息不丢失org.springframework.amqp.rabbit.core.RabbitTemplate#convertAndSend方法 public void convertAndSend(String exchange, String routingKey, final Object message, final MessagePostProcessor me...

2020-01-20 16:34:26 787

原创 MySQL 优化

表字段进行优化 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNEDVARCHAR的长度只分配真正需要的空间使用枚举或整数代替字符串类型尽量使用时间戳而非DATETIME单表不要有太多字段,建议在20以内避免使用NULL字段,占用额外索引空间用整型来存IP 索引优化 尽量使用联合索引,减少索引...

2020-01-20 10:52:12 113

原创 JVM的一些琐事

Full GC触发条件System.gc() 老年代空间不足 空间分配担保失败

2020-01-19 17:20:21 80

原创 HashMap1.8 改进

hash碰撞后,链表的顺序是后插入的在后面,1.8之前是后插入的在前面。会导致rehash的并发的时候进入死循环 hash碰撞后,链表可能会变成红黑树(有一个阀值) put的时候,先插入后扩容。因为有红黑树的变更,所以需要先插入 节点对象由Entry变成 Node(红黑树需要)...

2020-01-19 14:11:49 323

原创 Netty的FastThreadLocal速度 优化

jdk的ThreadLocal: ThreadLocalMap 是用数组来维护的,类似HashMap。如果ThreadLocal对象的hash碰撞则使用开放式地址法来解决碰撞问题 当碰撞情况比较多的时候,set get的速度是一个一个接着找 查找速度 O(n) FastThreadLocal 存放的容器 InternalThreadLocalMap是 private sta...

2020-01-17 15:18:12 286

原创 mysql sql的性能优化

前置条件:select version(); -- 》 5.7.17desc test;+--------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+------------------...

2020-01-17 11:36:55 104

原创 幂等性设计

1、token 存放redis,用完则删除 删除成功返回1 则代表之前存在,如果redis删除返回0,代表之前没有键值2、数据库唯一索引,新增幂等性3、悲观锁select * from ** where *** for update4、乐观锁,利用版本号控制5、redis zk 进行分布式锁6、状态机幂等性 订单的状态进行扭转...

2020-01-17 09:44:09 166

原创 cms remark 时长比较长的优化

原因:remark是stop the world 阶段;当之前concurrent-mark完成后,此时jvm的申请的内存比较频繁,年轻代突然涨起来了remark需要重新扫描年轻代,查询是否有引用老年代的指针;如果年轻代比较大,导致扫描时长比较长;重新标记的内存范围是整个堆,包含younggen和oldgen如果被新生代中的对象引用,那么就会被视为存活对象,即使新生代的对象已经不可达了,也...

2020-01-16 18:39:16 1468

原创 ReentrantLock

区分公平锁和非公平锁 默认非公平锁 // 不公平的,是需要lock刚开始去抢锁一次 final void lock() { if (compareAndSetState(0, 1)) setExclusiveOwnerThread(Thread.currentThread()); ...

2020-01-16 15:18:54 163

原创 tomcat优化jdk原生的线程池

为啥要优化 1、由于tomcat 处理的都是一些网络方面的线程任务,都是IO类型的2、JDK原生线程池,当核心线程满了之后往队列里面存放,这样不符合web容器的任务3、tomcat修改为,核心线程满了之后,再创建非核心线程。最后再往队列任务里面存放 优化的手段 public void execute(Runnable command) { if (comm...

2020-01-15 17:11:11 487

原创 订单支付微服务重构----涉及分布式事务

这是一张典型的分布式事务,但需要额外的服务JobController方案的风险点 redis可能丢失失败的数据 控制最大重试次数 消费消息的消费者要保证幂等性...

2020-01-15 16:18:10 303

原创 性能调优的一些工具

vmstat [root@VM_5_30_centos ~]# vmstat 22958procs -----------memory---------- ---swap-- -----io---- -system-- -cpu r b swpd free buff cache si so bi bo in cs us s...

2020-01-15 14:21:49 131

原创 强引用和弱引用jvm回收区别

强引用回收的步骤 1、判断是否有必要执行finalize方法 下面两种情况没有必要执行了 a)对象没有重写finalize方法 b)finalize方法已经被虚拟机调用过了2、如果上述条件判断出,是需要执行finalize方法的;那么此对象将会放置在一个叫做 F-Queue的队列中,并由虚拟机自建的Finalizer线程去执行它(此线程低优先级)3、是被回收还是逃...

2020-01-15 13:04:41 362

原创 JVM 调优 一些原则

GC优化的两个目的: 1) 将进入老年代的对象数量降到最低 基本都是分代GC,就是对象在Eden区被创建,随后被转移到Survivor区,在此之后剩余的对象会被转入老年代。也有一些对象由于占用内存过大,在Eden区被创建后会直接被传入老年代。老年代GC相对来说会比新生代GC更耗时,因此,减少进入老年代的对象数量可以显著降低Full GC的频率。你可能会以为减少进入老年代的...

2020-01-15 10:44:41 490

原创 show profile

打开show profile开关set profiling = 1;查看值show variables like "%pro%";mysql> show profile;+--------------------------------+----------+| Status | Duration |+-------...

2020-01-14 19:10:13 92

原创 分布式事务

TCC基于RM本地事务来实现 https://github.com/liuyangming/ByteTCC源码分析:1.1.1. Spring Cloud<dependency> <groupId>org.bytesoft</groupId> <artifactId>bytetcc-supports-springcloud<...

2020-01-14 17:22:37 238

原创 JVM 调优 ----- G1

2020-01-09T20:53:25.970+0800: 899.957: [Full GC (Allocation Failure) 2048M->355M(1192M), 0.8310098 secs] [Eden: 0.0B(816.0M)->0.0B(472.0M) Survivors: 0.0B->0.0B Heap: 2048.0M(2048.0M)-...

2020-01-14 11:41:02 1069

原创 redis stream

消息可以新增,删除,获取长度,截取范围,设定最大长度(最小ID即被删除) XADD person * name tomEX desc is a milkXTRIM person MAXLEN 4 截取消息XADD person MAXLEN 5 * name tomEX333 desc is a milk 设置最大消息长度XRANGE person - +XRANGE pe...

2020-01-14 10:44:08 144

原创 分布式锁

加锁步骤 1)查看key是否存在2)如果不存在,则设置key 值为当前的threadId + 当前服务器的标识ID 和 锁次数 并设置超时时间3)已经存在,查询值是否是当前的线程Id,如果是只 增加锁次数2)已经存在,但是并非当前线程锁定的,则ppl查询其超时时间并返回剩余时间 if (redis.call('exists', KEYS[1])==0) ...

2020-01-13 10:18:04 107

原创 Spring事务失效原因

数据库引擎不支持事务 mysql需要是innodb 方法所属的类对象不是spring的bean 方法需要是public 调用的时候,不是通过bean的调用,而是走了类的内部调用或者自己new的对象调用 数据源没有配置事务管理器 Propagation.NOT_SUPPORTED 没有回滚,可能因为没有符合条件的异常抛出...

2020-01-09 13:11:02 80

原创 springcloud面试题

什么是Spring Cloud?2、使用Spring Cloud有什么优势?3、服务注册和发现是什么意思?Spring Cloud如何实现?4、负载平衡的意义什么?5、什么是Hystrix?它如何实现容错?6、什么是Hystrix断路器?我们需要它吗?7、什么是Netflix Feign?它的优点是什么?8、什么是Spring Cloud Bus?我们需要它吗?...

2020-01-09 13:04:28 133

原创 springBoot面试题

什么是 Spring Boot?2、Spring Boot 有哪些优点?3、什么是 JavaConfig?4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?5、Spring Boot 中的监视器是什么?6、如何在 Spring Boot 中禁用 Actuator 端点安全性?7、如何在自定义端口上运行 Spring Boot 应用程序?8、什么是 YAML?...

2020-01-09 13:03:17 84

原创 Dubbo面试题

Dubbo是什么?2、为什么要用Dubbo?3、Dubbo 和 Spring Cloud 有什么区别?4、dubbo都支持什么协议,推荐用哪种?5、Dubbo需要 Web 容器吗?6、Dubbo内置了哪几种服务容器?7、Dubbo里面有哪几种节点角色?8、画一画服务注册与发现的流程图9、Dubbo默认使用什么注册中心,还有别的选择吗?10、Dubbo有哪几种配置方式?11、Du...

2020-01-09 13:02:32 118

原创 幂等性

查询接口幂等性,已天然支持 删除接口幂等性,已天然支持 修改接口(修改某个值、累加某个数字) 插入接口幂等性解决办法前端页面或者app控制短时间重复提交的问题 服务端解决方案 insert使用唯一索引 update使用 乐观锁 version版本法 这种在大数据量和高并发下效率依赖数据库硬件能力,可针对非核心业务 使用select … for update ,这种和...

2020-01-09 13:01:00 124

原创 Hystrix隔离类别

线程隔离 把执行依赖代码的线程与请求线程(如:jetty线程)分离,请求线程可以自由控制离开的时间(异步过程)。通过线程池大小可以控制并发量,当线程池饱和时可以提前拒绝服务,防止依赖问题扩散。线上建议线程池不要设置过大,否则大量堵塞线程有可能会拖慢服务器。 信号隔离 信号隔离也可以用于限制并发访问,防止阻塞扩散, 与线程隔离最大不同在于执行依赖代码的线程依然是请求线程(...

2020-01-09 10:12:45 141

原创 JVM工具

jps-v展示启动参数,进程IDjinfo[选项]pid 虚拟机的一些参数、配置 java.runtime.name = Java(TM) SE Runtime Environmentjava.vm.version = 25.65-b01sun.boot.library.path = /opt/jdk1.8.0_65/jre/lib/amd64java.protoc...

2020-01-08 18:15:46 990

原创 redis发布并订阅

订阅命令SUBSCRIBE c1 c2 c1 和 c2是通道名称 发布消息 publish c1 'i am is long!!!' publish c2'i am is long!!!'订阅的客户端就会收到两条不同通道发出来的消息当redis服务器重启之后 订阅的数据...

2020-01-08 14:25:39 94

转载 redission分布式锁和同步器

可重入锁(Reentrant Lock) 基于Redis的Redisson分布式可重入锁RLockJava对象实现了java.util.concurrent.locks.Lock接口。同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。 RLock lock = redisson.getLock("anyLock");// 最常见的使用方法lo...

2020-01-07 18:00:30 650

原创 kafaka索引机制

kafaka 日志文件对应的索引文件有两种偏移量索引文件 偏移量到物理位置的一个映射关系 时间戳索引文件 根据一个时间戳查找偏移量信息稀疏索引概念Kafka 中的索引文件以稀疏索引(sparse index)的方式构造消息的索引,它并不保证每个消息在索引文件中都有对应的索引项由于kafaka都是顺序写的,所以可以找到目标消息的最近的索引,然后再去二分查找法...

2020-01-07 15:53:59 218

原创 cpu负载高的原因

无限循环的while会导致CPU使用率飙升hashMap 扩容的时候进入了死循环经常使用Young GC会导致CPU占用率飙升push模块,当一个几百万上千万的push任务的时候,不停创建对象,对象都是使用完就要回收的,频繁创建--回收一般使用jstack 打印堆栈信息,长时间运行状态的堆栈信息会有问题top -Hp 进程ID 查看运行时长比较长的线程i...

2020-01-07 14:37:42 784

原创 bossGroup 接收完请求怎么推送到workGroup组的

io.netty.bootstrap.ServerBootstrap.ServerBootstrapAcceptorchannelPipleline默认会有一个headContext --》 ServerBootstrapAcceptor --》 TailContextServerBootstrapAcceptor.channelRead 方法如下public v...

2020-01-07 11:28:32 290

原创 算法面试题

代码题:反转单链表。 代码题:复杂链表复制。 代码题:数组a,先单调地址再单调递减,输出数组中不同元素个数。 要求:O(1)空间复杂度,不能改变原数组 64匹马,8个赛道,找最快的4匹马。 64匹马,8个赛道,找最快的8匹马。 给出两个升序数组A、B和长度m、n,求第k个大的 给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素 场景题目:设计一个...

2020-01-02 22:06:06 559

原创 网络知识面试题目

操作系统虚拟内存换页的过程 TCP三次握手 算法题:滑动窗口 介绍各种网络协议。 DNS在网络层用哪个协议,为什么。 介绍HTTPS协议,详述SSL建立连接过程。 TCP为什么是三次握手四次挥手? BIO,NIO,AIO的区别? 什么是阻塞IO以及非阻塞IO? 什么是同步IO以及异步IO? IO模型有几种?分别是什么? Reactor和Proactor IO设计模式是什...

2020-01-02 22:01:42 113

原创 并发面试题目

乐观锁、悲观锁 volatile 和 synchronized 的区别 两线程对变量i进行加1操作,结果如何?为什么?怎么解决? CAS概念、原子类实现原理 synchronize底层实现,如何实现Lock? AQS有什么特点? 讲一下多线程与多进程区别 在 java 中守护线程和本地线程区别? 2、线程与进程的区别? 3、什么是多线程中的上下文切换? 4、死锁与活锁的区别,死...

2020-01-02 21:59:10 127

原创 设计模式面试题目

工厂模式怎么理解 单例模式有哪几种实现方式 懒汉和饿汉的区别,懒汉的缺点 之前用过哪些设计模式?

2020-01-02 21:49:58 164

原创 消息队列面试题目

rabbitmq 和 kafka 的区别 rabbitmq 如何保证事务 消息队列的优势

2020-01-02 21:48:57 363

原创 redis面试题目

主从结构了解吗 宕机之后如何恢复数据 Redis扩容机制(渐进式单线程扩容) Redis的使用,分布式锁的实现1、什么是 Redis?.2、Redis 的数据类型?3、使用 Redis 有哪些好处?4、Redis 相比 Memcached 有哪些优势?5、Memcache 与 Redis 的区别都有哪些?6、Redis 是单进程单线程的?7、一个字符串类型的值能存储最大容量是多...

2020-01-02 21:48:22 90

H5性能优化

性能 H5 速度 页面 H5页面的加载速度优化。从代码和公用技术方面进行优化

2015-09-10

iframe自升高

iframe 自升高 扩展主frame 级联变高 resize 当内含iframe高度变化时,自动扩展父frame的高度,内含frame不会出现滚动条

2014-10-31

显示弹出提示层,定时隐藏

显示弹出提示层,定时隐藏;背景颜色可以自定义,显示文本自定义;

2014-09-25

java学习网站

java学习的网站网址,可以导入游览器收藏夹中,以便学习

2014-08-28

CAT框架的服务端和客户端的配置

CAT框架的服务端和客户端的配置! 对于代码运行状态的监控 对于系统资源利用的监控

2014-07-01

空空如也

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

TA关注的人

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