自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RPC和HTTP的区别

rpc和http区别

2023-01-11 11:15:24 322

原创 Mysql rank类函数用法归纳

mysql排序函数使用和区别

2022-12-29 16:59:33 288

原创 Leetcode算法题 两数之和

题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。暴力解法public static int [] twoSum(int [] nums, int target) { for (int i = 0; i< nums.length; i++) { for (int

2022-02-13 06:08:32 114

原创 Linux服务器性能监控常用命令汇总

top命令查看系统负载情况,重点在监控每个进程。当load average三个值加起来 / 3 / 100% > 60%,表示系统负载较高vmstat相比top命令,vmstat命令可以监控整个系统cpu和内存使用情况。一般通过两个数字参数来完成,第一个代表采样时间间隔单位为秒,第二个代表采样次数procs:r:运行和等待CPU时间片的进程数,原则上1核CPU的运行队列不大于2,整个系统运行队列不超过核心数2倍,否则被视为系统压力过大b:等待系统分配资源的进程数(磁盘I/O,网络

2022-02-13 04:53:13 989

原创 Java垃圾回收

垃圾回收算法引用计数法:无法解决循环引用,java不采用复制算法:年轻代算法标记清除:标记整理:垃圾回收方式Serial:串行。为单线程环境设计且只使用一个线程进行垃圾回收,会暂停用户线程,不适合服务器环境Parallel:并行。多个垃圾收集线程进行垃圾回收,用户线程短暂暂停,适用于科学计算/大数据平台等弱交互场景CMS:并发。用户线程和垃圾回收线程同时执行(不一定是并行,可能是交替执行),不用暂停用户线程,适用于对响应时间有要求的场景,互联网公司多采用此方式,缺点是老年代垃圾回收采用

2022-02-12 19:16:37 275

原创 Java 产生内存溢出的几种情况

StackOverFlowError解释:线程栈内存溢出,原因:方法递归调用OutOfMemoryError:Java heap memory解释:堆内存溢出原因:大量对象创建撑爆堆区OutOfMemoryError:GC overhead limit exceeded解释:频繁GC且GC无效果原因:大量对象创建且无法回收,GC时间占用超过98%并且回收了不到2%的内存OutOfMemoryError:Direct buffer memory解释:直接内存溢出原因:写NIO程序时经常会

2022-02-12 03:19:26 942

原创 Java 生产中为什么不推荐使用Executors而推荐使用ThreadPoolExecutor?

问题引出阿里巴巴开发手册并发篇中,有这么一段话,严格规范线程池创建方式只能使用ThreadPoolExecutor。那么这是为什么呢?原因分析如图所示,FixedThreadPool和SingleThreadExecutor创建都是使用LinkedBlockingQueue,LinkedBlockingQueue最大长度为Integer.MAX_VALUE,队列中可能堆积大量的请求而导致OOM。CachedThreadPool和ScheduledThreadPool默认允许最大线程数也是Integ

2022-02-11 04:05:33 488

原创 Java Synchronized和Lock的区别

构成方面:Synchronized是Java关键字属于JVM层面,Lock是Java类属于API层面使用方法:Synchronized不需要手动释放锁,同步代码执行完毕自动释放锁。Lock需要手动释放锁,可能导致死锁等待是否可中断:Synchronized等待锁的过程不可中断,Lock可中断(tryLock或LockInterruptibly)锁公平性:Synchronized是非公平锁,Lock默认非公平也可设置公平锁唤醒机制:Synchronized无法做到精确唤醒,要么随机唤醒一个要么唤醒全.

2022-02-11 02:57:51 510

原创 Java集合线程不安全问题总结

Java集合线程不安全之并发修改异常上代码public class Demo { public static void main(String[] args) { List<String> myList = new ArrayList<>(); // 启动30个线程同时对list进行操作 for (int i = 0; i < 30; i++) { new Thread(() -> {

2022-02-10 17:30:53 2372

原创 Java volatile关键字详解

volatile是什么volatile关键字是Java虚拟机提供的轻量级同步机制JMM是什么JMM是一个抽象概念,定义了共享内存系统中多线程程序读写操作共享内存的行为规范,保证共享内存的正确性(可见性、有序性、原子性)。JMM中关于同步的规定:线程解锁前必须把共享变量最新的值刷新回主存中线程加锁前必须从主存中读取共享变量最新的值到自己的工作内存加锁和解锁必须是同一把volatile关键字作用保证内存可见性禁止指令重排,保证有序性volatile内存可见性代码演示不加volati

2022-02-09 06:16:00 232

原创 SpringMVC工作原理简介

原理图步骤简介客户端发送请求到DispatcherServlet(中央处理器)DispatcherServlet收到请求后调用HandlerMapping(处理器映射器),HandlerMapping返回一个HandlerExcutionChain(处理器执行链),HandlerExcutionChain包含HandlerInterceptor(处理器拦截器)和Handler(处理器对象)DispatcherServlet根据Handler查找对应的HandlerAdaptor(处理器适配器),通

2022-02-09 04:01:50 199

原创 Spring默认支持的事务传播机制和事务隔离级别

事务传播机制用来控制方法之间事务的传播行为,如a方法调用b方法,a方法开启了事务,b方法也需要事务。这时候需要判断b方法是使用a方法的事务,还是单独开启新的事务。Spring @Transactional注解中可以通过propagation属性设置使用原事务:Propagation.REQUIRED开启新事务: Propagation.REQUIRES_NEW注意⚠️: 本类方法互调会出现事务配置失效!场景如下 @Transactional(propagation = Propagatio

2022-02-09 03:35:06 763

原创 [面试]算法题走楼梯

题目假设楼梯有n层高,每次只能走一步或者两步,求有多少种走法思路一:计算过程就是方法,层数作为参数,声明方法f(x)。根据情况分析一层:1种方法 f(1) = 1二层:2种方法f(2) = 2三层:先到达f(1),然后从f(1)跨两步,或者先到达f(2),从f(2)跨一步,f(3) = f(1) + f(2)四层:先到达f(2),然后从f(2)跨两步,或者先到达f(3),从f(3)跨一步,f(4) = f(2) + f(3)n层:先到达f(n-2),然后从f(n-2)跨两步,或者先到达f(n

2022-02-09 02:41:29 806

原创 探究Java方法参数传递机制

概念准备值传递和引用传递值传递:对所传递的参数进行一个副本拷贝,方法中所有操作只是对副本进行操作,方法结束后副本被丢弃(即实参不变),Java中只有值传递,即便传引用类型也是传递引用的副本引用传递:传参时不拷贝副本,直接将参数本身传递到方法内部,方法内对参数所有操作都会直接反映到原参数上形参和实参形参:方法中声明的参数实参:方法调用时实际传入的参数示例代码public class Demo3 { public static void main(String[] args) {

2022-02-08 23:02:13 95

原创 Java类加载和初始化顺序

探究Java类加载和初始化执行顺序父类public class Father { // 普通类变量 private int i = test1(); // 静态类变量 private static int j = test2(); // 普通代码块 { System.out.println("父类普通代码块执行"); } // 静态代码块 static { System.out.println

2022-02-08 20:54:34 280

原创 [Docker] Mysql主从同步集群部署

文章目录环境准备下载Mysql镜像创建Mysql容器实例并启动创建Master节点创建Slave节点(随意N个)主节点配置配置文件从节点配置配置文件环境准备下载Mysql镜像docker pull mysql:5.7创建Mysql容器实例并启动创建Master节点docker run -p 3306:3306 --name mysql-master \-v /mydata/mysql/master/log:/var/log/mysql \-v /mydata/mysql/master/dat

2022-01-28 03:51:32 1894

原创 Python多线程多进程应用场景

IO密集型: 推荐使用多进程,多线程是鸡肋CPU密集型: 推荐使用多进程或多线程为什么Python多线程在IO密集型中是鸡肋?通过一段代码来测试单线程执行从1亿递减到0import datetimedef run(n): while n > 0: n -= 1 if __name__ == '__main__': start_ti...

2019-09-24 05:16:28 1060

原创 Python多维数组使用采坑

最近在复习数据结构,第一条就是数组,记录下Python中多维数组的采坑总结构建一个缺省值为0,宽为m,高为n的多维数组m, n = 4, 3newList = [[0] * m] * nprint(newList)[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]尝试改变数组某个元素:newList[1][0] = 1print(newList)...

2019-08-26 11:31:15 304

原创 几条关于数据库SQL优化总结

1. 善用EXPLAIN查询SQL执行计划拿MySQL进行简单示例explain select cve_id, jira_id from cve_display_cve_kernel where jira_id != ''不使用索引执行使用索引后执行type列: 连接类型。 一个好的SQL要达到range级别以上,杜绝出现all级别。key列: 使用到的索引名。NULL为没有选择索...

2019-07-12 11:21:47 83

空空如也

空空如也

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

TA关注的人

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