- 博客(116)
- 收藏
- 关注
原创 并发编程之ThreadPoolExecutor源码分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档并发编程之ThreadPoolExecutor源码分析前言关于提交优先级和执行优先级关于线程池的执行和Thread.start的区别前言很久没写博客了,今天分享下阅读ThreadPoolExecutor线程池的核心流程的一些源码分析关于提交优先级和执行优先级线程池提交任务流程:核心线程创建,阻塞队列存放,最大线程数创建。我们知道阿里的规约中明确不让使用,newFixedThreadPool,newSingleThreadEx.
2022-05-06 21:45:10
317
原创 Mac安装mysql通过homebrew
Mac安装mysqlMac安装homebrew安装mysql通过homebrewMac安装homebrewmac安装homebrew安装mysql通过homebrew注意,如果之前已经安装过的话,需要先删除如下的文件或者目录;如果是全新安装,这一步可以忽略rm -rf /usr/local/etc/my.cnf*rm -rf /usr/local/Cellar/mysql@5.7/rm -rf /System/Volumes/Data/usr/local/Cellar/mysql@5.7r
2021-06-28 14:31:12
389
原创 SpringIOC容器加载完Bean之后的操作
SpringIOC容器加载完Bean之后的操作前言一、ApplicationListenerSpring整合Nacos就是用的此种方式二、SmartLifecycleSpring整合Eureka就是用的此种方式三、SmartInitializingSingletonSpring整合Ribbon用的就是此种方式四、BeanPostProcessorSpring整合Sentinel就是用的此种方式。前言有时候我们需要在Spring加载和初始化所有bean后,接着执行一些任务或者启动需要的异步服一、Ap
2021-04-19 09:12:24
2500
1
原创 通过这道-----多线程任务统计磁盘来彻底搞懂JUC工具类的包
多线程任务统计磁盘题目一、CountDownLantch方式二、CyclicBarrier方式三、Semaphore方式题目假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?一、CountDownLantch方式import java.util.concurrent.*;import static java.lang.System.out;public class M
2021-03-30 10:55:08
274
原创 LeetCode8. 字符串转换整数 (atoi)---非常巧妙的自动状态机
非常巧妙的自动状态机题目绝妙的代码解析题目绝妙的代码class Solution { public static void main(String[] args) { Solution solution=new Solution(); System.out.println(solution.myAtoi("word 312 w")); } public int myAtoi(String str) { Automaton a
2021-03-23 11:24:02
254
原创 单链表典型题目
单链表典型题目单链表反转剑指 Offer 25. 合并两个排序的链表题目代码剑指 Offer 22. 链表中倒数第k个节点题目代码剑指 Offer 06. 从尾到头打印链表题目代码单链表反转在这里插入代码片示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。剑指 Offer 25. 合并两个排序的链表题目代码class ListNode { int val; ListNode next; ListNode(int x) {
2021-03-22 16:03:06
428
原创 Spring源码级别分析@Lazy注解和FactoryBean接口
@Lazy注解--懒加载分析及FactoryBean接口示例原因FactoryBean总结思考示例代码@Configuration@Import(value = {CompentC.class,TulingImportSelect.class,TulingImportBeanfinitionRegister.class})@ComponentScan(basePackages = {"com.tuling.parsebeandefinition"})public class MainConfig
2021-03-21 19:57:23
401
原创 如何解决----Nacos单机模式下重启后,微服务注册返回503失败
Nacos单机模式下注册服务返回503背景错误原因:解决背景1、nacos版本:1.4;jdk82、单机模式下(非首次启动)config可以正确注册获取,discovery无法正常注册服务错误原因:nacos1.4.0使用了jraft, jraft会记录前一次启动的集群地址,如果重启机器ip变了的话,会导致jraft记录的地址失效,从而导致选主出问题。解决我的是docker安装的,进入容器内部,删除/nacos/data/protocol文件夹docker exec -it 78b6
2021-03-21 11:45:02
1374
原创 力扣多线程练习----交替打印FooBar---打印零与奇偶数
交替打印FooBar题目Semaphore代码Lock公平锁题目两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。请设计修改程序,以确保 “foobar” 被输出 n 次。Semaphore代码import java.util.concurrent.Semaphore;public class FooBar { private int n; public FooBar(int n) {
2021-03-21 09:56:20
315
原创 百题面试训练营总结
百题面试训练营总结2020-03-15/并发编程专题2020-03-16/并发编程专题2020-03-17/Zookeeper专题一2020-03-18/Zookeeper专题二2020-03-19/Zookeeper专题三2020-03-15/并发编程专题简述HashMap的底层原理(1)hash算法:为什么要高位和低位做异或运算? 答:让高位也参与hash寻址运算,降低hash冲突(2)hash寻址:为什么是hash值和数组.length - 1进行与运算? 答:因为取余算
2021-03-19 11:51:20
333
2
原创 leetcode算法练习--盛最多水的容器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimpor
2021-02-27 22:15:11
121
原创 leetcode算法练习--搜索旋转排序数组
搜索旋转排序数组题目思路代码题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转
2021-02-27 10:56:04
249
原创 leetcode算法练习--无重复字符串的最长字串
无重复字符串的最长字串题目思路代码总结题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。思路采取滑动窗口法代码/** * 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 */public class Solution { public static void main(String[] args) { String s="abcabcbb"; System.out.println(lengthOfLongest
2021-02-26 14:59:48
230
原创 leetcode算法练习---二叉搜索树中第K小的元素
BST中第K小的元素题目描述思路代码题目描述给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。思路利用二叉搜索树的中序遍历是单调递增则第K小的就是第K-1的值在栈的帮助下,可以将方法一的递归转换为迭代,这样可以加快速度,因为这样可以不用遍历整个树,可以在找到答案后停止。代码public class Solution { public static void main(String[] args) {
2021-02-26 11:54:12
387
原创 Linux环境docker安装单机nacos
docker安装单机nacos前言镜像拉取启动容器访问前言docker安装nacos非常简单首先把数据库建好:nacos_config.sql镜像拉取docker pull nacos/nacos-server:1.4.0具体参数可看nacos文档启动容器docker run \--restart=always \--name nacos \-p 8848:8848 \--env MODE=standalone \--env SPRING_DATASOURCE_PLATFORM
2021-02-25 09:56:10
924
原创 JDK源码----如何利用LinkedHashMap实现LRU
如何利用LinkedHashMap实现LRU前言一、思路分析二、代码总结前言之前我有篇文章是手写实现了LRU,那么如何利用JDK自带的实现呢?本篇带你了解下提示:需要对LinkedHashMap有了解才行,建议先看源码一、思路分析首先我们看下final boolean accessOrder;public LinkedHashMap(int initialCapacity, float loadFactor,
2021-02-21 10:10:23
301
原创 设计模式学习-----利用SpringAOP原理学习责任链模式
设计模式学习-----利用SpringAOP原理学习责任链模式前言代码讲解总结前言说道责任链设计模式最应该想到的就是SpringAOP,今天就利用其原理学习个简化版的责任链模式,对SpringAOP不了解的可以看我之前的博客。代码public class TulingLogInterceptor implements MethodInterceptor { @Override public Object invoke(MethodInvocation invocation) thr
2021-02-19 21:56:27
320
原创 算法练习之求最大公约数与素数判定
算法练习之求最大公约数与素数判定最大公约数给定一个数,判断是否为素数最大公约数/** * 求最大公约数,辗转相除法 */public class MaxCommonDivisor { public static void main(String[] args) { int a=42; int b=12; while (true){ if(a<b){ b=b-a;
2021-02-19 15:57:54
206
原创 vue中以组件的形式引入图形验证码
vue中以组件的形式引入图形验证码实现效果一、组件编写二、引入1.父页面的css对子组件生效2.引入组件实现效果获取验证码前先校验图形验证码一、组件编写<template> <div class="login_c"> <input type="text" v-model="inputcode" class="login_input_validate" placeholder="图形验证码" @blur="blurInput">
2021-01-21 13:20:02
533
原创 Linux系统搭建ELK日志分析系统
ELK日志分析系统搭建前言一、安装es二、Kibana安装三、Logstash 安装四、filebeat安装最后前言本文先搭建下ELK日志分析采集系统,具体的原理以后慢慢来研究用到的软件分别为,最新款的7.10.1,所有软件都要用同一版本一、安装es解压#当前目录:/usr/local/soft/ELKB/tar -zvxf elasticsearch-7.10.1.tar.gz创建用户,并将ElasticSearch安装权限归新用户所有useradd elkbpasswd e
2021-01-09 16:40:23
483
原创 解决Github网页上图片显示失败的问题转载
解决Github网页上图片显示失败的问题根据域名查ip网址解决Github网页上图片显示失败的问题根据域名查ip网址根据域名查ip网址提示:以下是本篇文章正文内容,下面案例可供参考解决Github网页上图片显示失败的问题解决Github网页上图片显示失败的问题(亲测可用)...
2021-01-07 11:44:58
169
原创 LeetCode算法练习之链表问题(阿里算法题)
给定输入,根据需求进行输出问题代码总结问题代码/** * (2 -> 4 -> 3) + (5 -> 6 -> 4) * 7 -> 0 -> 8 * Explanation 342+465=807 */public class LbQuestion { private LNode head; private LNode tail; public LbQuestion() { this.head = null;
2021-01-06 14:25:10
154
原创 你真的明白i++和++i了吗???带你用JVM搞懂
利用JVM搞懂先来看个例子分析第一步第2步再来看++i先来看个例子public class Test01 { public static void main(String[] args) { int i=1; i=i++; System.out.println("i="+i); int a=1; a=++a; System.out.println("a="+a); System.
2021-01-04 17:35:09
225
原创 Zookeeper启动过程中的Will not attempt to authenticate using SASL (unknown error)的解决(仅限于开发环境)
Will not attempt to authenticate using SASL unknown error 问题现象解决问题现象解决清除dataDir目录下的,我的是自己虚拟机开发环境测试,生产环境不要这么做
2021-01-04 16:16:40
944
原创 算法练习之插入排序,希尔排序,归并排序不一样的解读
插入排序,希尔排序,归并排序层层递进的方式进行解读评判一个算法的好坏一、插入排序二、希尔排序三、归并排序稳定性总结评判一个算法的好坏1.时间效率2.空间复杂度3.比较次数&交换次数4.稳定性排序肯定会牵涉比较,排序的稳定性是:相同的数据排完序后相对位置不变。明显第2种的红色3排完序后相对位置并没有变化为什么要有稳定排序?电商里面订单排序:首先会按金额从小到大排,金额相同的按下单时间。我从订单中心过来的时候已经按照时间排好序了。如8:01 6520:05 3021
2021-01-01 19:02:34
229
原创 RocketMQ学习之四----源码阅读万字总结
RocketMQ源码学习搭建源码环境nameServer启动过程broker启动过程接下来看broker服务信息注册producer搭建源码环境下载源码4.7.1版本配置nameServer启动配置环境变量ROCKETMQ_HOME=D:\MQ\day01\rocketmq-all-4.7.1-source-releasebroker启动配置指定broker.conf配置文件和环境变量nameServer启动过程public static void main(String[
2021-01-01 10:35:31
322
1
原创 Linux环境下的Mysql主从同步搭建
Linux下Mysql主从同步搭建提前安装好mysql一、主服务器相关配置二、从库的配置三、容易出的问题提前安装好mysql主服务器:centos7.0 IP:10.20.0.171从服务器:centos7.0 IP:10.20.0.195一、主服务器相关配置创建同步账户并指定服务器地址mysql -uroot -puse mysqlgrant replication slave on *.* to 'sgrepl'@'10.20.0.195' identified by 'sgrep
2020-12-31 14:38:20
331
原创 并发编程之如何让一个线程优雅的停下来?
文章目录状态流转图线程方法停止线程线程休眠状态流转图这里借鉴下狂神说的上课图线程方法join可以想象成插队,相当于VIP一样停止线程不推荐使用JDK自带的stop,destory停止线程,已经废弃推荐线程自己停下来,使用标志位flag,当他为false停止线程看一下代码public class ThreadStop implements Runnable{ //设置标志位 private boolean flag=true; @Override
2020-12-30 15:46:01
252
原创 实战一下Mongodb的使用---与SpringBoot结合
SpringBoot与Mongodb的结合使用前言一、准备mongodb环境二、SpringBoot的代码pom文件项目结构代码总结前言实现一个商品浏览记录增删查改的功能一、准备mongodb环境具体安装参考我的之前的mongodb的博客mongodb的Linux安装与简单使用准备客户端工具Robo3T,作用和mysql的Navicat差不多二、SpringBoot的代码pom文件在pom.xml中添加相关依赖<!---mongodb相关依赖--><depen
2020-12-30 13:29:13
194
原创 计算机网络学习之TCP3次握手,4次挥手及http协议学习
文章目录网络分层HTTP协议HTTP请求的完整过程TCP协议3次握手4次挥手网络分层HTTP协议 一种无状态的,以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式, 与基于网络的超文本信息系统灵活的互动HTTP报文格式HTTP 协议的请求报文和响应报文的结构基本相同,由三大部分组成:起始行(start line):描述请求或响应的基本信息头部字段集合(header):使用 key-value 形式更详细地说明报文消息正文(entity):实际传输的数据,
2020-12-25 21:25:49
195
1
原创 Linux学习----替换yum源
我们安装好的Linux后,执行yum命令安装软件,如果是未注册的肯定会出现This system is not registered with an entitlement server. You can use subscription-manager to register. 类似这样的问题Linux学习----替换yum源前言一、检查并删除原有的yum源二、下载安装CentOS的yum源三、配置repo文件(关键!前面的能不能起作用就看这一步了)前言这时我们就得想办法了。替换掉原版的yum
2020-12-25 20:45:49
2174
原创 利用zookeeper来实现个分布式锁
zookeeper实现分布式锁前言准备样例关键代码原理分析zookeeper和redis实现分布式锁的区别前言10个线程去下单,我们的库存只有5个,如果不加锁就会出现超卖提示:以下是本篇文章正文内容,下面案例可供参考准备样例商品表,5个库存再利用nginx做下负载均衡,使请求分配到2个tomcat里去,达到一个分布式效果。准备好zookeeper,安装的方法我之前的博客有,使用也介绍过。4. 准备压测工具Jmeter项目的controller地址启动服务8080
2020-12-24 15:37:22
163
1
原创 离开mysql一会,带你玩玩mongodb
mongodb的Linux安装与基础使用为什么会出现一、Linux系统下安装mongodb如果使用命令报错"not authorized on admin to execute command "二、基本使用总结为什么会出现传统的关系型数据库,可以满足我们的日常开发了,mysql相比我们这次的mongodb,mongodb有以下几点好处:问题:mysql是个全量的,默认情况下是不支持分片的,需要借助mycat,等第三方技术。mongodb天生就是分片的,支持副本的。动态特性:插入数据的时候,如
2020-12-23 21:48:21
118
原创 算法练习之队列创建,循环队列
利用链表构建队列利用链表实现个队列循环队列利用链表实现个队列public class LinkQueue { public Node head; public Node tail; public LinkQueue() { this.head = this.tail=null; } //尾插法 public void push(int m){ //入队列 O(1) Node node=new Node(m);
2020-12-21 17:26:44
148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人