- 博客(24)
- 收藏
- 关注
原创 企业级线程池实战-线程超时点位后置问题
在直接面向消费者的业务中,往往对请求的RT要求特别高,同时为了保护系统不被单一的超时问题拖垮,需要我们在异步请求时设置线程池请求的超时时间,但是请求的超时时间设置的点位不对,不但不能起到时间的限制作用,排查问题时还会具有很高迷惑性(因为代码设置了超时时间,在排查时很容易直接越过有问题的代码)知识储备先介绍一下线程池的基础知识。线程池的作用● 线程池可以管理进行线程生命周期的管理● 线程池降低资源的消耗● 线程池可以提高系统的响应速度● 线程池可以控制并发访问的数量常见的四大线程池线上问题
2022-02-26 11:31:24
583
原创 java琐事
并发编程并发的意义并发通常是提高运行在单处理器上的程序的性能。如果程序中的某个任务因为该程序控制范围之外的某些条件(I/O)而导致不能继续执行,那么这个任务或线程就阻塞了。如果没有并发,整个程序都讲停下来。从性能的角度来看,单处理器上使用并发没有任何好处。进程与线程实现并发有两种方式,多进程与多线程,最直接的方式是使用操作系统级别的进程。进程是运行在它自己地址空间内的自包容的程序。多任务操作系统可以周期性地将CPU从一个进程切换到另一个进程,来实现多进程。操作系统会将多进程隔离开,保证互相不会干涉。
2020-08-01 10:52:27
312
转载 Java魔法类:Unsafe应用解析
这个美团大神对于Unsafe的分析很全面https://tech.meituan.com/2019/02/14/talk-about-java-magic-class-unsafe.html
2019-08-17 10:57:43
182
原创 一个简单通用的基于java反射实现pojo转为fastjson对象的方法
最近在公司工作需要实现一个工具实现一个pojo转为fastjson对象的通用工具,直接上源码package com.didi.utils;/** * *通用的pojo转为Json对象的方法 * * @author ZFX * @date2019/8/17 9:59 */import com.alibaba.fastjson.JSONObject;import java.l...
2019-08-17 10:39:52
428
原创 JDK1.8 对JUC新增内容解析
1、JDK8新增的原子类操作LongAdder大家对AtomicInteger的基本实现机制应该比较了解,它们是在一个死循环内,不断尝试修改目标值,知道修改成功,如果竞争不激烈,那么修改成功的概率就很高,否则,修改失败的概率就很高,在大量修改失败时,这些原子操作就会进行多次循环尝试,因此性能就会受到影响那么竞争激烈的时候,我们应该如何进一步提高系统性能呢?一种基本方案就是可以使用热点分离,将竞...
2019-07-28 19:55:07
434
转载 Linux中最多有多少进程?一个进程最多有多少线程?
我们都知道进程的概念,它是CPU分配资源的载体,是程序运行的实例;也知道线程的概念,它是程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程中有多个线程。既然如此,我们可以想象,一个系统中的进程数量肯定是有上限的,不然系统资源就会不够用了,同样的道理,一个进程中的线程资源也是有上限的。那进程和线程的上限到底是多大呢?Linux中最多可以有多少个进程?一.Linux中有一个命令可以帮助...
2019-07-28 09:57:27
648
原创 关于HTTP 请求是否可以放body
最近在实习的公司做一个小的功能,监控线上的数据是否正常,需要去从ES里面获取查询的数据,由于原有的监控项目并没有关于ES配置的接口,考虑开发的快捷性,决定直接用get请求里面存放DSL json结构直接去ES抓取数据,现在来解析一下get 存放body的问题Apache Http Client 和 OkHttpClient 都不支持 GET 请求发送 Body 数据,而 AsyncHttpC...
2019-07-22 20:48:36
1285
原创 Mockito:org.mockito.exceptions.misusing.InvalidUseOfMatchersException
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers!2 matchers expected, 1 recorded:-> at com.didi.bigdata.tag.control.DTagOuterControllerTest.lockDta...
2019-06-27 17:01:28
24236
原创 阿里java开发手册2019年最新版619(华山版)PDF下载
链接:https://pan.baidu.com/s/1ANvBu1hidnvRCZILDGXuQA 密码:ugq8
2019-06-20 11:27:41
11559
8
原创 Paxos算法& Zookeeper使用协议
Paxos算法是分布式选举算法,Zookeeper使用的 ZAB协议(Zookeeper原子广播),二者有相同的地方,比如都有一个Leader,用来协调N个Follower的运行;Leader要等待超半数的Follower做出正确反馈之后才进行提案;二者都有一个值来代表Leader的周期。不同的地方在于:ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式...
2019-06-02 10:49:41
144
原创 索引优化技术
(1) 索引的优点:通过创建唯一索引,可以保证数据库表中每行数据的唯一性.可以加快数据的查询速度.在实现数据的参考完整性方面,可以加速表和表之间的连接.再使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间通过使用索引,可以在查询中使用优化隐藏器,提高系统的性能。(2) 索引的缺点:创建索引和维护索引要耗费时间,并且随着数据量的增加耗费时间也增加.索引需要占空间...
2019-06-02 10:30:09
123
原创 数据库优化技术
1、硬件优化硬件对数据库的优化往往是成本很高,但是性能提高不明显2、对sql语句的优化1)应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上...
2019-06-02 10:25:02
142
原创 sql执行慢的原因有哪些,如何进行sql优化?
一、导致SQL执行慢的原因1、硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。2、没有索引或者索引失效。(一般在互联网公司,DBA会在半夜把表锁了,重新建立一遍索引,因为当你删除某个数据的时候,索引的树结构就不完整了。所以互联网公司的数据做的是假删除,一是为了做数据分析,二是为了不破坏索引 )3、数据过多(分库分表)4、服务器调优及各个参数设置(调整my.cnf)二、分...
2019-06-02 10:15:31
3355
原创 手写java死锁和线上排查死锁
package com.Test;import jdk.internal.dynalink.linker.LinkerServices;import org.omg.CORBA.Current;import java.util.ArrayList;import java.util.Arrays;import java.util.Currency;import java.util.L...
2019-05-19 10:35:01
487
原创 LeetCode120 Triangle(带记忆化搜索的动态规划 递归实现)
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle[[2],[3,4],[6,5,7],[4,1,8,3]...
2019-05-12 12:18:59
352
原创 LeeoCode 64 Minimum Path Sum(带记忆化搜索的动态规划)
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You can only move either down or right at an...
2019-05-12 10:09:40
131
原创 #{}与${}的区别(经典讲解)
#{}与${}的区别是实战中经常遇到的问题,当然也是面试常考的问题#{}1、#{}用来传入参数,sql在解析的时候会加上" ",当成字符串来解析 ,如这里 role_id = “roleid”;2、#{}能够很大程度上防止sql注入,mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值,提高系统的安全性。${}1、用${}...
2019-05-04 18:27:35
258
原创 java 斐波那契数列考虑死亡的实现
题目描述母牛从3-7岁初每年会生产一头小母牛,10岁后死亡(10岁仍然存活)。假设初始有1头刚出生的母牛,请问第n年有多少头母牛?实例 输入 2 输出 1输入3 输出 2package com.bytedance;/** * @author ZFX * @date2019/5/4 9:58. */import java.util.*;public class Cow { ...
2019-05-04 13:46:22
300
原创 java四大线程池的特点和源码分析
一、线程池的好处(1)降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。(2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。(3)提高线程的可管理性。线程是稀缺资源,如果入限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控。二、线程池的核心参数new ThreadPoolExecutor(int co...
2019-05-02 16:25:13
189
原创 多线程数组的求和总结(MapReduce思想)
1、使用Fork/joinimport java.util.ArrayList;import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurren...
2019-05-02 15:44:11
782
原创 最优吞吐量和最短停顿时间
在实践活动中,我们通过最优吞吐量和最短停顿时间来评价jvm系统的性能吞吐量越高算法越好暂停时间越短算法越好首先让我们来明确垃圾收集(GC)中的两个术语:吞吐量(throughput)和暂停时间(pause times)。 JVM在专门的线程(GC threads)中执行GC。 只要GC线程是活动的,它们将与应用程序线程(application threads)争用当前可用CPU的时钟周期。 ...
2019-04-26 19:25:24
2211
原创 java类的初始化和实例化的初始化(类的初始化过程)
@java类的加载顺序Java类的加载顺序父类静态代变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量(父类实例成员变量)、父类构造函数、子类非静态变量(子类实例成员变量)、子类构造函数。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会...
2019-04-22 15:52:37
7537
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人