自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 2021-04-15

JedisPool资源池优化一、背景部分业务系统JedisPool资源池参数配置不合理,业务量很大时频繁做连接池有效性检测,ping开销很高,浪费系统资源。二、目标了解JedisPool资源池参数并合理配置,提升Redis性能。三、JedisPool介绍Jedis 是 redis 官方推荐的 java 客户端,jedisPool 是 Jedis 内部管理到 redis 的连接资源,内部的实例是 Jedis,通过连接池策略来优化对 redis 的访问。...

2021-04-15 10:05:01 193

转载 2021-03-19

场景+案例分析,SQL优化这么做就对了!目录 前言 SQL优化一般步骤 1、通过慢查日志等定位那些执行效率较低的SQL语句 2、explain 分析SQL的执行计划 3、show profile 分析 4、trace 5、确定问题并采用相应的措施 场景分析 案例1、最左匹配 案例2、隐式转换 案例3、大分页 案例4、in + order.

2021-03-19 12:44:23 190

转载 2021-03-18

3种缓存读写策略都不了解?面试很难让你通过啊兄弟!看到很多小伙伴简历上写了“熟练使用缓存”,但是被我问到“缓存常用的 3 种读写策略”的时候却一脸懵逼。造成这个问题的原因是我们在学习 Redis 的时候,可能只是简单了写一些 Demo,并没有去关注缓存的读写策略,或者说压根不知道这回事。但是,搞懂 3 种常见的缓存读写策略对于实际工作中使用缓存以及面试中被问到缓存都是非常有帮助的!下面我会简单介绍一下自己对于这 3 种缓存读写策略的理解。另外,这 3 种缓存读写策略各有优劣,不存在.

2021-03-18 18:20:41 210

转载 2021-03-18

19张图带你梳理SpringCloud体系中的重要技术点!1、什么是微服务1.1、架构演进架构的发展历程是从单体式架构,到分布式架构,到SOA架构,再到微服务架构。图1:架构演进 单体架构:未做任何拆分的Java Web程序 图2:单体架构示意图 分布式架构:按照业务垂直划分,每个业务都是单体架构,通过API互相调用。 图3:分布式架构示意图 SOA架构:SOA是一种面向服务的架构。其应用程序的不同组件通过网络上的通信协议向其它组件提供服务或消费服.

2021-03-18 17:38:34 233

转载 2021-03-18

搞懂 MySQL Explain 命令之前不要说自己会SQL优化MySQLexplain命令是查询性能优化不可缺少的一部分,该文主要讲解 explain 命令的使用及相关参数说明。explain 命令基本使用在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的 SQL 语句,找出这些 SQL 语句并不意味着完事了。此时我们常常用到 explain 这个命令来查看一个这些 SQL 语句的执行计划,查看该 SQL 语句有没有使用上了索引,有没有做全表扫描。mysql&gt...

2021-03-18 15:22:42 78 1

转载 SpringCloud微服务完整实例

https://blog.csdn.net/butterBallj/article/details/81284292?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

2020-06-15 15:27:14 288

转载 详解Java中的异常(Error与Exception)

https://blog.csdn.net/qq_29229567/article/details/80773970

2020-06-12 16:26:15 299

原创 分布式锁实现方式

https://blog.csdn.net/wuzhiwei549/article/details/80692278

2020-04-18 14:58:20 183 1

原创 Git学习笔记(一)

Git管理文件夹的步骤:1.进入要管理的文件夹(进入到文件夹)2.初始化(提名)git bash here ------> git init 让git管理当前的文件夹3.管理文件git status: 查看当前目录下文件的状态。 红色:新增的文件/修改了的老文件 绿色:git已经管理起来的文件git add 文件名.后缀 : 对...

2020-02-06 11:49:06 181

原创 分布式系统中接口的接口的幂等性如何保证?接口的调用如何保证顺序性?

1.分布式服务接口的幂等性如何设计(比如不能重复扣款)?所谓幂等性,就是说一个接口,多次发起同一个请求,你这个接口得保证结果是准确的,比如不能多扣款,不能多插入一条数据,不能将统计值多加了1。这就是幂等性,不给大家来学术性词语了。其实保证幂等性主要是三点:(1)对于每个请求必须有一个唯一的标识,举个例子:订单支付请求,肯定得包含订单id,一个订单id最多支付一次,对吧(2)每...

2020-02-01 10:54:10 868

原创 我是这样理解HTTP和HTTPS区别的

http协议的缺点通信使用明文,内容可能被窃听(重要密码泄露) 不验证通信方身份,有可能遭遇伪装(跨站点请求伪造) 无法证明报文的完整性,有可能已遭篡改(运营商劫持)用https能解决这些问题么?https是在http协议基础上加入加密处理和认证机制以及完整性保护,即http+加密+认证+完整性保护=httpshttps并非应用层的一种新协议,只是http通信接口部分用ssl/tl...

2020-02-01 10:53:46 299

原创 如何自己设计一个类似dubbo的rpc框架?

面试题剖析所以我给大家一个建议,遇到这类问题,起码从你了解的类似框架的原理入手,自己说说参照dubbo的原理,你来设计一下,举个例子,dubbo不是有那么多分层么?而且每个分层是干啥的,你大概是不是知道?那就按照这个思路大致说一下吧,起码你不能懵逼,要比那些上来就懵,啥也说不出来的人要好一些举个例子,我给大家说个最简单的回答思路:(1)上来你的服务就得去注册中心注册吧,你是...

2020-02-01 10:53:05 414

原创 什么是循环依赖?spring如何解决?

循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。构造参数循环依赖...

2020-02-01 10:52:51 1612

原创 BIO/NIO/AIO(总结版)

1.前言相信大家在网上看过不少讲解 BIO/NIO/AIO 的文章,文章中举起栗子来更是夯吃夯吃一大堆,我是越看越觉得 What are you 你讲啥嘞?本文将针对 BIO/NIO/AIO 、阻塞与非阻塞、同步与异步等特别容易混淆的概念进行对比区分,理清混乱的思路。2.魔幻的IO模型BIO (同步阻塞I/O)数据的读取写入必须阻塞在一个线程内等待其完成。这里使用那个经典的...

2020-02-01 10:52:32 178

原创 zookeeper的使用场景?

大致来说,zk的使用场景如下,我就举几个简单的,大家能说几个就好了:(1)分布式协调:这个其实是zk很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B消息消费之后处理了。那A系统如何知道B系统的处理结果?用zk就可以实现分布式系统之间的协调工作。A系统发送请求之后可以在zk上对某个节点的值注册个监听器,一旦B系统处理完了就修改zk那个节点的值,A立马就可以收到通知,完美解决。...

2020-02-01 10:52:06 150

原创 TCP粘包、拆包与通信协议

在TCP编程中,通常Sever端与Client通信时的消息都有着固定的消息格式,称之为协议(protocol),例如FTP协议、Telnet协议等,有的公司也会自己开发协议。那么协议到底是干什么的呢?说白了,协议了就是定义了数据通信的格式。主要是为了解决TCP编程中的粘包和半包问题。由于TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供...

2020-02-01 10:52:04 241

原创 分库分表学习(二)

现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?这个是我们常用的一种迁移方案,比较靠谱一些,不用停机,不用看北京凌晨4点的风景简单来说,就是在线上系统里面,之前所有写库的地方,增删改操作,都除了对老库增删改,都加上对新库的增删改,这就是所谓双写,同时写俩库,老库和新库。然后系统部署之后,新库数据差太远,用之前说的导数工具,跑起来读老库数...

2020-02-01 10:51:45 115

原创 Java程序员必备的一些流程图

1.spring的生命周期Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要; 首先容器启动后,对bean进行初始化 按照bean的定义,注入属性 检测该对象是否实现了xxxAware接口,并将相关的xxxAware实例注入给bean,如BeanNameAware等 以上步骤,bean对象已正确构造...

2020-02-01 10:51:36 181

原创 分布式锁怎么实现?

用Zookeeper实现分布式锁其实就是创建一个临时节点:如果临时节点之前不存在,则临时节点创建成功,则这把锁属于你了。此时有其他人去创建同名的临时节点,如果已经存在了,说明别人已经占有了这把锁,你就失败了,这时候就对那个临时节点注册一个监听器。当锁被释放的时候会通知你然后尝试去创建。其实释放锁就是删除临时节点,若删除临时节点,ZK会通知别人这个节点被删除了,相当于锁释放了。然后就会尝试再...

2020-02-01 10:51:16 247

原创 分库分表学习

1.为什么要分库分表?分库分表是两个不同的概念,分表是为了避免单表的数据量太大,执行SQL时影响语句的执行性能;分库主要是为了提高系统的并发量。单个库的并发量最好维持在(1000)左右。2.数据库如何拆分?垂直拆分:例如一张表有10个字段,拆分为一张表3个字段(查询频率比较高),和一张表7个字段(查询频率比较低)。因为数据库有缓存,这样缓存区能够存储更多查询频率比较高的字段,进而提...

2020-02-01 10:51:13 130

原创 HTTP1.1 HTTP 2.0主要区别

多路复用HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。当然HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。TCP连接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。因此对应瞬时并发的连接,服务器的响应就会变慢。所以最好能使用一...

2020-02-01 10:50:05 127

原创 二叉树中和为某一值的路径

题目:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路:采用一种“减法”思想,当检查一棵树从根到叶子节点形成的路径的和是否为target时,先将当前根节点的值 root.val 加入path, 然后检查它的左子树(若非空),看从左...

2019-09-14 20:58:36 210

原创 最长连续序列

给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入:[100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。原文链接:https://leetcode-cn.com/problems/longest-consecutive-sequence解题思路:这些数字用一...

2019-09-14 16:35:37 159

原创 二叉树非递归遍历

1.二叉树数的前序非递归遍历public List<Integer> preOrder(TreeNode root) { List<Integer> list = new ArrayList<Integer>(); if (root == null) return list; Stack<TreeNode> stack = n...

2019-09-09 08:53:32 153

原创 实现一个简单的阻塞队列

package test;import java.util.LinkedList;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class LinkedB...

2019-09-03 15:56:00 366

原创 二叉树序列之间的转换(不建立树)

1.已知前序和中序序列,求后序序列? private static ArrayList<Character> list = new ArrayList<>(); public static void getPostOrder(char[] pre, int preL, int preR, char[] in, int inL, int inR) { if...

2019-09-01 16:02:27 271

原创 二叉搜索树的遍历序列之间转化

1.二叉搜索树的后序序列转为前序序列public void PostToPre(int [] nums, int start, int end) { if(start>=end) return ; int record = nums[end]; //最后一个为二叉搜索树的根节点 //移动数组元素 for(int i=end; i>start;i--) { ...

2019-09-01 09:56:40 162

原创 操作系统中的进程调度策略有哪几种

先来先服务调度算法 短作业(进程)优先调度算法 高优先权优先调度算法 高响应比优先调度算法 时间片轮转法 多级反馈队列调度算法

2019-08-30 20:19:31 432

转载 进程间通信的方式

进程间通信的方式大概有以下几种:共享内存:顾名思义,共享内存就是两个进程同时共享一块内存,然后在这块内存上的数据可以共同修改和读取,达到通信的目的;共享内存是最快的ipc方式;共享内存常与信号量进行配合使用,信号量是一个控制资源访问的标识符,简单来说就是一个计数器,通过信号量能实现锁以及著名的pv操作等,主要是用来实现进程间同步。无名管道:无名管道是半双工的通信方式;并且只能在具有亲缘关系...

2019-08-30 20:17:03 152

原创 判断一个树是否是完全二叉树

解题思路:判断完全二叉树首先每个节点都会有以下4种情况:情况一:情况二:情况三:情况四:1:如果当前访问的节点的左右孩子是情况3,说明不是完全二叉树,直接返回false。2:如果当前访问的节点的左右孩子是情况1,继续访问其他节点。3:如果当前访问的节点的左右孩子是情况2或者情况4,那么我们定义一个状态(接下来访问的所有节点必须全部是叶子...

2019-08-27 09:32:16 193

原创 美团一面

1.怼项目(需要整理)!!!!秒杀抢购的过程?下单处理?2.redis和 Mysql性能的比较3.GC垃圾回收中是在进程中进行的吗? 进程和线程的区别? 进程中都定义了什么?创建一个线程用的空间4.反射的理解? 回答的比较浅5.Tcp三次握手 Http请求中用到的协议?详细过程!!6.ZK的应用场景有哪些?7.JVM内存模型 垃圾回收算...

2019-08-20 15:35:39 159

转载 new关键字和newInstance()方法的区别

类的加载方式不同在执行Class.forName("a.class.Name")时,JVM会在classapth中去找对应的类并加载,这时JVM会执行该类的静态代码段。在使用newInstance()方法的时候,必须保证这个类已经加载并且已经连接了,而这可以通过Class的静态方法forName()来完成的。使用关键字new创建一个类的时候,这个类可以没有被加载,一般也不需...

2019-08-17 08:09:46 179

原创 leetcode :139. 单词拆分

给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可...

2019-08-15 10:15:21 120

原创 面试题41:数据流中的中位数

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数及时所有数值排序之后中间两个数的平均值。解题思路:首先保证数据平均分配到两个堆中,因此两个堆中数据数目之差不能超过1.为了实现平均分配,可以在数据的总数是偶数时,把新数据插入最小堆,否则插入到最大堆。 还要保证最小堆中所有数...

2019-08-13 14:36:47 114

原创 面试题40:最小的k个数

题目:输入n个整数,找出其中最小的k个数。例如,输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数是1,2,3,4.package jianzhi_offer;import java.util.ArrayList;import java.util.Comparator;import java.util.PriorityQueue;public class P40_Solut...

2019-08-13 10:36:51 143

原创 面试题39:数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。package jianzhi_offer;public class P39_Solution {/* * 解题思路:遍历数组的时候保留连个值,一个是数组中的数字,另一个是次数。如果下一...

2019-08-13 09:45:53 126

原创 剑指Offer56:数组中数字出现的次数

题目一:数组中数字只出现一次的两个数字。一个整形数组里除两个数字之外,其它数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度是O(1)。解题思路:位运算中异或运算的性质:两个相同数字等于0,一个数和零异或还是它本身。当只有一个数出现一次时,我们把数组中所有的数依次异或,最后剩下的数就是落单的数,因为成对的数已经抵消了。依照这个思路,在一个数组中只有两...

2019-08-10 16:00:07 121

原创 Java虚拟机:多态性实现机制--动态单分派和静态多分派

Java虚拟机里共提供了四条方法调用字节指令,分别是:invokestatic:调用静态方法。 invokespecial:调用实例构造器<init>方法、私有方法和父类方法。 invokevirtual:调用所有的虚方法。 invokeinterface:调用接口方法,会在运行时再确定一个实现此接口的对象。只要能被invokestatic和invokespecia...

2019-08-09 10:33:19 233

原创 1.删除链表的奇数节点 2.删除链表的偶数节点

1.删除链表的奇数节点/* * 删除奇数节点 */ public static ListNode deleteOddNode(ListNode head) { if (head == null) return null; ListNode dump = new ListNode(-1, null); dump.next = head; ListNode pre...

2019-08-08 14:34:47 2838

原创 手写一个生产者和消费者的例子

一、用synchronized对存储加锁,然后用object原生的wait() 和 notify()做同步。import java.util.LinkedList;import java.util.Queue;public class ProducerAndConsumer { private final int MAX_LEN = 10; private Queue&...

2019-08-07 22:42:23 205

空空如也

空空如也

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

TA关注的人

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