自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring、SpringBoot知识梳理及项目实践

项目实战内容包含:集成mybatis、mybatis-plus(相关插件使用)集成redis自定义注解实现aop切面动态代理demo通用返回类读取配置文件方式全局异常处理常用web配置(跨域、消息转换、日期转换)starter封装案例启动项目初始化操作

2021-12-09 13:36:48 863

原创 基于ELK(es、logstash、kibana)和springboot2、log4j2实现日志可视化

搭建ELK平台这部分参考作者另一个采坑博客ELK部署笔记(docker-compose部署)建一个采用log4j2框架的SpringBoot项目这部分没啥好说的,注意几个要点1、确定项目采用了你配置的log4j2框架,而不是用的默认的logback或者其他日志框架 <dependency> <groupId>org.springframework.boot</groupId> <

2020-11-28 23:48:48 1130 4

原创 ELK部署笔记(docker-compose部署)

环境:CentOS7.6,1核2G建议先看后面两部,可以先把yum更新到最新,安装的docker如果与系统匹配上,可能会比较顺利!1、用docker部署elk的大体步骤yum install docker yum install docker-compose新建自定义目录,新建docker-compose.yml文件(这个过程叫编排服务)mkdir /xxx/elk vim dokcer-compose.yml复制以下内容到新建的docker-compose.yml文件,保存

2020-11-28 12:19:13 1925

原创 Java老特性之lambda它是一个类

lambda 来源于数学符号λ[læ:mdə],是一套关于函数(𝑓(𝑥))定义、输入量、输出量的计算方案语法出现的目的:使代码变得简洁、紧凑lambda语法更关注函数/功能,而非对象。

2023-11-06 15:23:01 124

原创 有点慌,新公司项目构建用的Gradle

入职新公司,构建项目的工具用的gradle,以前没用过,看到一个build.gradle,点进去,心里一句我曹,这写的都是些什么玩意,方得一批,赶紧去补了下课

2023-07-31 22:39:29 212

原创 ubuntu20 部署和配置nginx

user nginx;- 指定 Nginx 运行的用户,这里是 ‘nginx’ 用户。- 设置工作进程数量,auto表示根据服务器的 CPU 核心数自动设置。- 指定错误日志文件的位置以及日志级别(这里是 ‘notice’)。- 指定 Nginx 的进程 ID 文件位置。- 指定每个工作进程允许的最大客户端连接数。- 包含 MIME 类型定义文件。- 设置默认的 MIME 类型。- 定义自定义日志格式。- 指定访问日志文件位置以及使用的日志格式(这里是 ‘main’)。

2023-03-26 22:41:42 1096

原创 记一次生产GC频繁处理

公司飞书收到了告警通知,CPU超高了

2022-10-27 20:13:00 483

原创 CPU超高问题排查

前言:这标题和JVM调优一样,是一层窗户纸,不捅破感觉很难的样子,捅破了后,你会发出感叹:就这?

2022-08-30 17:53:02 613

原创 MVCC的底层原理

MVCC是多版本并发控制(multiversionconcurrencycontrol)的缩写,该技术允许具有特定隔离级别的InnoDB事务执行一致性读取操作。定义是InnoDB的MVCC机制使用的一个内部快照表象某些事务(取决于它们的隔离级别)可以看到事务(或者sql语句)启动时的数据值使用范围可重复读、读已提交、读未提交三种隔离级别都有用到ReadViewInnoDB给数据库每行记录新增了三个字段DB_TRX_ID最近一次修改或者新增本行数据的事务标识前可见。后不可见。...

2022-07-25 13:50:12 351

原创 如何判断单链表有环?

如题,如何判断单链表有环呢?思路一:快慢指针,定义两个指针,同时指向链表头结点。指针移动速度不一样,一个快,一个慢,循环链表时,如果快慢指针相遇,则有环。很好理解,犹如跑道上的两个人,有人跑的快,有人跑的慢,同时起跑,跑的快的人,必然在比跑的慢的多跑一圈后,会追上跑得慢的。思路二:遍历链表,每个元素都往set集合里装,如果有环,肯定会重复,新增元素时判断set是否包含该元素,即可判断链表是否有环:包含则有环,完成遍历,不包含则无环。 两种思路实现...

2022-06-12 23:42:51 1009

原创 单链表反转

单链表反转

2022-06-12 00:03:16 80

原创 SpringCloud集成Seata和Nacos

seata官方demo阅读困难,bug多!一手资料做成了二手水平!

2022-05-08 16:22:03 907

原创 骚操作——Word批量修改图片大小

骚操作——Word批量修改图片大小

2022-03-27 00:12:52 1168 1

原创 我们在浏览器输入网址到页面显示时发生了什么事情?

1、浏览器解析URL,生成发送给web服务器的请求信息2、根据域名(地址)查询IP,DNSDNS服务器保存了IP和域名的对应关系,分别是:根DNS服务器 顶级域DNS服务器(com) 权威DNS服务器(server.com)其中根DNS服务器保存在任何DNS服务器上,换言之,每个DNS服务器都知道根DNS服务器的IP。DNS解析流程:客户端发送DNS请求给本地DNS服务器,询问域名的IP是什么?本地DNS服务器如果有缓存,则返回。 本地DNS服务器没有缓存该域名,则向根DNS服务

2022-03-23 14:10:49 3680

原创 k8s可视化界面安装

两种k8s可视化界面

2022-03-08 17:02:35 881

原创 K8S发布应用步骤

k8s发布应用

2022-03-08 16:44:21 1580 1

原创 kubeadm方式搭建k8s集群

k8s集群搭建常用步骤

2022-03-08 16:01:59 1075

原创 JAVA SPI机制理解及思考

理解Java SPI (Service Provider Interface) is the mechanism to load services dynamically. We can implement Java SPI in our application by following the specific set of rules and load the services using the ServiceLoader class.翻译重点:Java SPI是一种动态加载服务的机制(动态调

2021-09-16 11:56:13 128

原创 windows忘记了Mysql的密码了

环境:win10,mysql8.01、管理员打开cmd2、net stop mysql3、mysqld --console --skip-grant-tables --shared-memory4、第3步的窗口不要关,再次以管理员身份打开cmd窗口5、mysql -u root -p回车,提示输入密码,不用输入,直接回车6、use mysql7、update user set authentication_string='' where user='root';8、qui

2021-08-25 10:14:03 102

原创 POI上传带图片的Excel

/** * 可用于读取包含多个表的excel * 外层map用于表示sheet,list用于表示每个sheet的行记录,内层map用于表示sheet-->row-->cell即:行中的每一列数据 * * @param filePath 文件路径 * @return {@link Map<String, List<Map<String, Object>>>} */public Map<String, List<Map<Strin.

2021-06-01 16:24:08 391

原创 Nacos 功能初探

简介:Nacos 致力于帮助您发现、配置和管理微服务。在SpringCloud中,可以替换eureka、configNacos Config一、安装启动1、下载安装https://github.com/alibaba/nacos/releases2、解压3、启动cd到bin目录,执行:sh startup.sh -m standalone见到如上界面就表示启动成功4、登陆管理界面http://localhost:8848/nacos/index.htm

2021-05-22 13:51:52 207 4

原创 Java链表实现队列

问题:用链表实现一个先进先出的队列分析:1、链表实现,必须有一个节点能够装数据和下一个节点的指针(引用)2、队列必须要有队首、队尾指针和记录当前队列大小的整型数3、入队:往队尾加,队尾的下一个指针指向新元素,随后移动队尾指针指向新元素4、出队:取出队首数据,移动队首指针指向队首的下一个元素5、边界问题考虑实现1、节点类/** * 队列结点 * * @author zab * @date 2021-01-27 11:13 */public class Nod.

2021-01-27 11:32:17 613

原创 手撕Java快排

思想从乱序的数字中找一个中位数(便于理解,就取最后一个数),设想两个游标,左游标指向第0个数,右游标指向最后一个数第一步:左游标右移,直到找到一个数比中位数大的停止第二步:右游标左移,直到找到一个数比中位数小的停止第三步:交换左右游标的指向的数,这时候发生一个现象就是小的数在左移,大的数在右移第四步:重复一二三步,直到左右游标指向同一个数。这时候交换中位数和同时指向的数。这时候发生一个现象就是左右游标同时指向的位置,左边全是比该位置对应的数小的数,右边全是比该位置对应的数大的数第五步

2021-01-25 23:45:26 241

原创 Error deserializing Avro message for id -1

Error deserializing Avro message for id -1最近博主在工作中遇到过这种错误。分析该错误是由于kafka反序列化消息失败导致的。至于为啥失败,这样从项目说起。话说博主接了一个项目,该项目由其他项目迁移过来修修补补,kafka消息监听也有很多。于是乎,遇到新需求时,都是拷贝一份kafka配置过来,其中一份配置长这样:props.put("key.deserializer", "org.apache.kafka...

2020-12-23 19:44:45 806

原创 如何修改git已提交的commit message

git commit --amend会弹出一个编辑框,就像vim一样,按下键盘I键(insert)编辑好了过后,(:wq)保存即可

2020-12-22 10:37:06 1295 1

原创 Kafka基础知识及实战

为什么要用消息中间件解耦、异步、削峰限流消息中间件常用工作模式至多消费一次消息生产者生产的消息如果被消费者消费后,消费者会向生产者服务器确认已消费,由生产者主动删除服务器的消费过的消息没有限制消费次数消息生产者发完消息后,该消息可以由多个消费者同时消费,并且同一个消费者可以多次消费消息服务器的同一个记录kafka架构kafka消息以topic分类,消息称为record每个topic底层都会对应一组partition分区的日志,用于持久化topic的re..

2020-10-30 00:12:16 268

原创 Java程序员需掌握的计算机基础

一、计算机系统概述一个完整的计算机系统包括:硬件系统和软件系统,如下图所示硬件:计算机装置,即物理设备。硬件系统:组成计算机系统的各种物理设备的总称。是计算机完成工作的物质基础,是软件建立和依托的基础。软件:某种计算机语言编写的程序、数据和相关文档的集合。指示计算机完成特定工作任务,是计算机系统的灵魂。软件系统:在计算机上运行的所有软件的总称。裸机:仅有硬件组成,没有软件的计算机。二、计算机硬件系统及工作原理冯·洛伊曼计算机体系结构特征:计算机由5个部分组成:运.

2020-10-08 23:32:10 634

转载 如何分库分表

数据库怎么分库分表,垂直?水平?一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 ->分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 ->分库。2、CPU瓶..

2020-09-24 10:52:17 720

原创 点击此文,免登陆下载JDK

创建账户是不可能创建账户的。只有偷个账号来用:http://bugmenot.com/view/oracle.com

2020-06-03 22:26:52 429

原创 不使用其他框架实现RPC远程调用

回顾RPC框架节点 角色说明 Provider 提供远程服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Dubbo最重要的三个角色就是服务提供方、服务消费方、注册中心。下面我们通过Java原生API实现远程调用,不使用任何第三方框架!服务提供方package rpc.provider;/** * 服务提供方 接口 * * @author zab * @date 2020-05-

2020-05-17 21:55:18 342

原创 RabbitMQ原理笔记

1、AMQP高级消息队列协议和abbit的工作流程AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议其工作流程如下图发布者将消息发送到指定的交换机,而使用者将消息从队列中拉出(或者队列根据配置将消息推送给消费者)消息发布者和消费者通信是通过公有的交换机名称,通常新建队列都会绑定到某一个交换机上...

2020-04-28 23:02:46 188

原创 Docker Nginx部署笔记

目的把前端开发的项目,用ng代理访问,前端基于antd+react已打包到dist文件夹Ng常用知识1、启停操作:nginx -s stop 快速关机nginx -s quit 正常关机nginx -s reload 重新加载配置文件nginx -s reopen 重新打开日志文件2、配置文件位置:/usr/local/nginx/conf,/etc/ng...

2020-04-06 09:22:11 2609

原创 后台管理系统打包笔记(antd+springboot)

1、前端项目,npm run build生成dist文件夹2、后台配置@Configuration@EnableWebMvcpublic class WebMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry r...

2020-03-31 00:04:19 538

原创 Java多线程与高并发七(ThreadLocal源码)

ThreadLocal是什么ThreadLocal提供了线程局部变量,由该类保存的变量,会分开线程,不同的线程会保存不同的变量副本。import java.util.HashMap;import java.util.Map;public class ThreadLocalTest { ThreadLocal threadLocal = new ThreadLocal();...

2020-02-05 23:56:21 520

原创 Java多线程与高并发八(线程池)

Java多线程与高并发七本来想写ThreadLocal源码的,实在是看底层代码看不动了!先搁置吧。Java多线程与高并发八给同学们分享下面试中常考的线程池的七大参数!为什么要用线程池 防止频繁创建和销毁线程,让每个线程可以多次使用,防止消耗过多内存,所以我们使用线程池。为什么不用JDK自带线程池 像下面这样定义线程池,不香吗?为什么不用呢?...

2020-01-23 00:25:40 1562

原创 Java多线程与高并发六(Lock上锁底层实现原理)

我们前面介绍了Lock的基本用法,知道Lock有公平锁、非公平锁两种实现,也知道Lock底层是用CAS实现的,但我们前面并没有详细介绍底层实现,本文就围绕Lock的加锁操作介绍Lock的底层实现原理。 我们的切入点是可重入锁ReentrantLock的lock()方法:Lock lock = new ReentrantLock();lock.lock();跟进代码...

2019-11-17 23:33:18 1072 1

原创 Java多线程与高并发五(常用并发工具类)

为了实现各种线程的操作,比如线程阻塞、阻塞恢复,JDK提供了大量模型来操纵线程运行。《Java多线程与高并发五(常用并发工具类)》给大家伙儿分享下JDK中常见的并发工具类。说一道面试题实现一个容器,提供add,size方法,两个线程,线程一添加十个元素到容器中,线程二监控容器中元素的个数,当线程一添加到容器的元素个数到5时,线程二给出提示并结束。解法一:wait/notify和syn...

2019-11-09 00:44:07 1800 1

原创 Java多线程与高并发四(Lock与CAS)

我们在《Java多线程与高并发一》中讲到怎样新建一个线程,用synchronized怎样给代码加锁,以及synchronized锁的优化升级。在《Java多线程与高并发二》中,我们认识了Java的内存模型和计算机的内存架构,以及二者之间的不同,怎样弥补。在《Java多线程与高并发三》中,我们我们认识了volatile关键字,以及其作用和深入原理。《Java多线程与高并发四》给大家介绍L...

2019-11-03 22:37:05 999

原创 Java多线程与高并发三(volatile关键字)

volatile关键字,开发中一般不用,主要用途就是用来面试造火箭,那么它在代码中的真正作用是啥呢??上一篇博客说到,对于现代多核心计算机而言,在多线程的情况下,如果一个变量没有加volatile修饰,可能出现线程间各自拷贝主内存的变量值到自己独有的线程CPU缓存中对数据做各种操作,导致变量的变化在线程间不可见的问题。volatile作用一:保证线程之间变量的可见性举个例子:...

2019-11-02 16:14:23 780

原创 Java多线程与高并发二(JMM)

JMM-Java内存模型Java虚拟机把Java的内存分为thread stacks和heap,在理解多线程的时候,这种粗糙的分法已足够。如图所示,该图有如下含义:1、每个线程都有自己的thread stack,意味着只要是存在于thread stack的变量都是线程独有,别的线程是不能访问的。说的直白点,即使两个线程执行相同代码,每个线程都独享变量。2、Java中的基础数据类型...

2019-10-29 17:07:03 796

空空如也

空空如也

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

TA关注的人

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