自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Nacos 源码环境搭建

最近在学习nacos,通过调式源码查看服务注册和发现流程和原理,本地部署naos源码需要一定的步骤,本文主要做nacos源码部署。

2023-01-11 11:42:58 36

原创 2022年终总结:点滴积累让我不再迷茫

公众号的粉丝量增长速度开始是很慢,开始的时候基本是不涨的。因为公众号本身也不做粉丝的推广,如果自己不做推广,基本就是没人关注。随着文章写的越来越多,当文章的量达到了几十篇的时候,每天都偶尔有几个粉丝关注,虽然少,但是还是有一些变化,慢慢的也累计到了一百多粉丝。也算是一个好的开头了。头条的流量比公众号大的多,写一篇流量大的文章,阅读量和粉丝数量都增加的很快,有时候就能增加几十个粉丝,好的文章可以有几千的阅读量。但是如果停止文章的更新的话,阅读量和粉丝也不会增加。

2022-12-31 21:34:38 502

原创 mvn 打包报错:no compiler is provided in this environment

maven打包报错,首先需要分析是不是idea配置问题。在终端也报同样的错,大概率是maven问题,找到启动文件mvn.cmd。找打mvn.cmd文件找不到JAVA_HOME:在第一行设置JAVA_HOME添加JAVA_HOME环境变量。

2022-12-16 07:30:00 66

原创 详解 Redis 中 big keys 发现和解决

在使用 Redis 时,可能会出现请求响应慢、网络卡顿、数据丢失的情况。排查问题的时候,发现是 big keys 的问题。在 Redis 中,一个字符串类型最大可以达到 512MB,其他非字符串类型的集合类型(list、set、hash、zset等)可以存储 40 亿个(2^32-1),但在实际业务场景中,并不需要这么大的内存。而且对于一个请求量大的互联网软件,对数据的大小要求更加的严格。如果达到如下标准,就可以认定是 big keys 了:一般来说,big keys 的产生都是由于程序的设计不当,或者对数

2022-12-05 09:00:26 381

原创 面试官:介绍一下 Redis 三种集群模式

主从模式:单机宕机或者磁盘出现故障,会导致数据丢失,主从模式将数据复制给多个从服务器上,即使一台数据库宕机了,其他数据也能正常提供数据。主从模式有一台主数据库,多台从数据库的模式。客户端对主数据库进行读写,从数据库只能读操作。启动主从数据库之后,从数据库发送SYNC同步命令给主数据库,主数据库接收到命令之后,生成RDB文件。并且使用缓冲区记录所有写命令。写完毕后发送RDB文件给每个从数据库解析,以及发送缓存写命名给所以从数据库执行。主数据库更新数据后,数据会同步更新到从数据库中。

2022-11-28 08:15:00 271

原创 Nacos 版本不一致报错: Request nacos server failed

Nacos服务端和Nacos依赖的版本号要一致和版本号要保持一致,也需要对应匹配。具体查看。

2022-11-14 08:00:00 587

原创 Websocket集群解决方案

最近在项目中在做一个的功能,比如客户下单之后通知给给对应的客户发送,这种消息推送需要使用到全双工的websocket推送消息。所谓的表示客户端和服务端都能向对方发送消息。不使用同样是全双工的http是因为http只能由客户端主动发起请求,服务接收后返回消息。websocket建立起连接之后,客户端和服务端都能主动向对方发送消息。上一篇文章介绍了websocket用户A和用户B和web服务器建立连接之后,用户A发送一条消息到服务器,服务器再推送给用户B。

2022-11-09 08:15:00 179

原创 SpringBoot 自动装配原理

自动配置原理1、注解导入类。2、执行方法调用扫描所有jar下面的对应的文件.3、限定为对应的value,将这些装配条件的装配到IOC容器中。自动装配简单来说就是自动将第三方的组件的bean装载到IOC容器内,不需要再去写bean相关的配置,符合约定大于配置理念。基于约定大于配置的理念,配置如果没有额外的配置的话,就给按照默认的配置使用约定的默认值,按照约定配置到IOC容器中,无需开发人员手动添加配置,加快开发效率。

2022-11-06 08:30:00 291

原创 Spring Cloud 整合 nacos 实现动态配置中心

配置首先添加依赖。在配置列表添加配置添加地址和namespace配置dataId有两种方式手动配置,配置自动配置,根据规则配置,其中prefix为项目名称,为项目运行环境,配置内容的数据格式。通过设置在字段上就能获取到属性,要实现自动更新配置需要添加注解。

2022-10-31 10:14:46 760

原创 Seata 环境搭建

seata安装版本是1.5.2,版本不同,安装流程也可能不同,这里的版本需要保持一致执行sql创建数据表使用脚本添加配置到nacos配置中心修改文件,分别修改store、config、registry相关配置。启动服务,成功登陆seata控制台。查看nacos控制台,服务列表新增seata服务。

2022-10-28 08:00:00 379

原创 Seata 环境搭建

seata安装版本是1.5.2,版本不同,安装流程也可能不同,这里的版本需要保持一致执行sql创建数据表使用脚本添加配置到nacos配置中心修改文件,分别修改store、config、registry相关配置。启动服务,成功登陆seata控制台。查看nacos控制台,服务列表新增seata服务。

2022-10-27 15:33:51 175

原创 java.sql.SQLException: MONTH 报错解决方法

报错。先定位到对应字段,如果无法确认问题原因,先去掉字段,去掉后没有问题,应该就是时间字段的问题。然后查看时间,就能确认是格式问题,报错中MONTH说明是时间无法转换。

2022-10-26 10:51:37 327

原创 使用LEFT JOIN 统计左右存在的数据

企业分组统计收款和发票表,只需要对企业做group by分组即可。企业和账套一起分组,left join只会统计左边存在的数据,而需要统计两边都存在的数据。使用union多表查询比较繁琐。left join使用on 1 = 1查询不添加限制条件,查询所有公司的账套,再关联发票和收款。

2022-10-24 11:01:20 353

原创 IDEA顺序启动多个Spring Boot微服务

上个月公司新开发的一个项目,需要使用,将单体服务拆分成多个微服务。但是每次修改代码之后都需要启动多个微服务,改个代码,都要,但是idea可以设置将多个服务依次启动,减少操作时间。

2022-09-29 17:28:16 305

原创 如何排查CPU占用100%

top找到进程号top -Hp进程号,找到线程号,线程转成十六进制。jstack pid分析。根据十六进制查询,找到问题代码位置。

2022-09-20 16:54:31 390

原创 后端程序员实现一个IP归属地的小程序

从上、中、下三个部分分别讲解页面的布局。整体布局主要是需要设置宽度,一般设置成90%的宽度,高度自适应。视图之间的布局主要调整边距、修改大小。文字上下居中需要设置height和改成一致。整体布局需要颜色统一,看起来简洁、大方。后端程序对前端不熟悉,但是多多练习一些标签的使用,上手还是很快的。

2022-09-16 09:04:12 151

原创 手把手教你用Java获取IP归属地

前几个月微信公众号上线了IP归属地的功能,后续知乎、抖音等平台纷纷添加了该功能。如果是国内的用户精确到省份,国外用户精确到国家。本文就使用Java实现获取IP归属地。

2022-09-11 23:26:08 2202 9

原创 Centos安装Redis(极速安装)

从找到下载文件,我下载的是。

2022-09-11 16:32:22 668

原创 小程序正式版报错600002 url not in domain list

开发版,体验版都没问题,线上版本报错在找到错误码600002。

2022-09-09 16:08:51 1977

原创 阿里云ECS后台CPU占用100%,top却找不到

后台报警CPU占用100%,使用top命令找不到占用高的进程,但发现ni占比过高,ni表示优先级进程占用CPU的百分比。说明这个进程一直在长时间的占用CPU。使用htop找到进程,发现是cryto占用很高,cryto是挖矿病毒,kill进程之后,进程又死灰复燃。找到进程对应的目录,以及全局搜索cryto关键字,删除所有上述目录,再查看后台,CPU占比下降。

2022-09-07 10:24:14 731

原创 并发编程Bug起源:可见性、有序性和原子性问题

操作系统进入多核、多进程、多线程时代,这些升级会很大的提高程序的执行效率,但同时也会引发可见性、原子性、有序性问题。多核CPU,每个CPU都有各自的CPU缓存,每个线程更新变量会先同步在CPU缓存中,而此时其他线程,无法获取最新的CPU缓存值,这就是不可见性。count += 1含有多个CPU指令。当发生线程切换,会导致原子问题。编译优化器会调整程序的执行顺序,导致在多线程环境,线程切换带来有序的问题。开始学习并发,经常会看到volatile、...

2022-09-01 08:00:00 68

原创 字节一面:说说TCP的三次握手

本文先介绍了报文头信息,三次握手主要用到了:序列号seq,确认号ackNum。TCP标记位,SYN同步序号,表示建立连接过程。ACK确认序号标识,标识表示发送信息已确认接收三次握手详解:第一次握手,客户端发送带有SYN标记位的包,带有初始化序列号x,发送完毕客户端进入SYN_SEND状态。第二次握手,服务端返回应答标记位ACK,并返回确认号ackNum为x+1,x+1表示发送消耗了一个序列号。返回了确认号表示确认了客户端序列号。服务端也要发送序列号y,所以也要带有SYN的标记位。...

2022-08-28 17:25:35 531

原创 详解MySQL隔离级别

读未提交(read uncommitted)一个事务还没提交时,它修改的数据都可以被别的事物看到。读已提交(read committed)一个事务提交之后,它修改的数据才会被别的事物看到。可重复读(repeatable read)一个事务执行过程中看到的数据,总是和这个事务开启时看到的数据是一致的。在可重复读的隔离级别下,未提交的事务对其他事务也是不可见的。串行化(serializable)数据的读和写都会加锁,读会加读锁,写会加写锁。

2022-08-25 11:38:50 607

原创 深入理解Redis 数据结构—字典

字典,又称为符号表、关联数组或映射,是一种用于保存键值对的抽象数据结构。在字典中,一个键可以和一个值进行关联,这些关联的键和值称为键值对。键值对中键是唯一的,我们可以根据键key通过映射查找或者更新对应的值value。很多高级开发语言有对应集合支持字典这种数据结构,比如Java中的Map集合。C语言并未内置字典这种数据结构,Redis构建了自己的字典实现。应用字典在Redis中应用非常广泛,Redis数据库就是使用字典作为数据底层的实现。对数据的增、删、改、查操作也是建立在字典之上操作。当执行命.

2022-08-19 08:48:16 180

原创 MySQL更新锁表超时 Lock wait timeout exceeded

添加嵌套事务需要考虑到死锁的问题。一个事务只有等全部方法执行完毕之后才会提交事务。含有嵌套的事务的更新,需要按照相同的顺序更新,不然可能会出现锁相互等待的情况。

2022-08-16 08:50:51 356

原创 详解ConCurrentHashMap源码(jdk1.8)

是基于数组+链表/红黑树的数据结构,添加、删除、更新都是先通过计算key的hash值确定数据的索引值,这和HashMap是类似的,只不过针对并发做了更多的处理。get方法获取数据,先计算hash值再再和数组长度取余操作获取索引位置。通过volatile关键字找到table保证多线程环境下,数组扩容具有可见性,而Node节点中val和next指针都使用volatile修饰保证数据修改后别的线程是可见的。这就保证了的线程安全性。如果遇到数组扩容,就参与到扩容中。...

2022-08-12 10:19:54 99

原创 Centos7安装Nginx教程,一步安装http和https

nginx是一款轻量级web服务器,主要有负载均衡和反向代理的特性。

2022-08-02 08:48:22 226

原创 SpringBoot整合RabbitMQ实现六种工作模式

RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现。前提概念生产者消息生产者或者发送者,使用P表示:队列消息从生产端发送到消费端,一定要通过队列转发,使用queue_name表示:消费者消费的消费者或者接收者,使用C表示,如果有多个消费者也可以用C1、C2表示:SpringBoot整合RabbitMQ基本配置添加maven依赖<dependency>    <groupId>.

2022-07-28 08:50:32 232

原创 Java通过反射注解赋值

前段时间,领导分配一个统计销售区域汇总的数据,解决方案使用到了反射获取注解,通过注解获取属性或者设置字段属性。问题描述查询公司列表,分别是公司id、区域id、区域名称:公司id区域id区域名称11华南22华北32华北43华东53华东创建公司类Company:public class Company {    public Company(Inte.

2022-07-22 09:04:27 335

原创 Springboot快速整合通用Mapper

前言后端业务开发,每个表都要用到单表的增删改查等通用方法,而配置了通用Mapper可以极大的方便使用Mybatis单表的增删改查操作。通用mapper配置1、添加maven:<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId></dep

2022-07-11 08:51:26 292

原创 模拟HashMap冲突

最近看HashMap的源码,其中相同下标容易产生hash冲突,但是调试需要发生hash冲突,本文模拟hash冲突。hash冲突原理HashMap冲突是key首先调用hash()方法:static final int hash(Object key) {    int h;    return (key == null) .

2022-07-06 09:58:19 128

原创 详解HashMap源码解析(下)

上文介绍了HashMap整体介绍了一下数据结构,主要属性字段,获取数组的索引下标,以及几个构造方法。本文重点讲解元素的添加、查找、扩容等主要方法。添加元素put(K key, V value)public V put(K key, V value) {    return putVal(hash(key), key, value, false, tr.

2022-07-05 08:47:36 55

原创 详解HashMap源码解析(上)

的底层主要基于数组+链表/红黑树实现,数组优点就是查询块,通过计算获取到数组的下标来查询数据。同样也可以通过得到数组下标,存放数据。哈希表为了解决冲突,采用了链表法,添加的数据存放在链表中,如果发送冲突,将数据放入链表尾部。上图左侧0~4部分是一个哈希表,也称为哈希数组(hash table):数组的引用类型是,数组中的每个元素都是单链表的头结点,链表主要为了解决上面说的hash冲突,Node节点包含:结构如下:主要属性size记录元素个数threshold 扩容的临界值,等于元素容量*装载因子

2022-07-04 09:37:53 160

原创 ArrayList源码解析

在平时Java,存储数据需要用到列表,而大多时候都能用到ArrayList,比如Mybatis查询数据列表,返回列表都是ArrayList,很多数据的存放也用到了ArrayList。jdk 版本: 1.8ArrayList 是基于大小可变的数组实现,并允许添加null值, 根据下标就能数据查询快。数组一旦初始化就确定好了大小,如果需要添加数据,就需要做数据的复制,这些操作比较耗时。数组拷贝ArrayList数组的扩容、添加和删除需要用到数组的拷贝,主要用到了以下两个方法:System.arr

2022-06-28 10:25:09 70

原创 Java递归实现评论多级回复

最近工作需要做一个评论功能,除了展示评论之外,还需要展示评论回复,评论的回复的回复,这里就用到了递归实现评论的多级回复。评论实体数据库存储字段: id 评论id、parent_id 回复评论id、message 消息。其中如果评论不是回复评论,parent_id 为-1。创建一个评论实体 Comment:public class Comment {    /**     *&n.

2022-06-26 16:04:16 336

原创 六张图详解LinkedList 源码解析

LinkedList 底层基于链表实现,增删不需要移动数据,所以效率很高。但是查询和修改数据的效率低,不能像数组那样根据下标快速的定位到数据,需要一个一个遍历数据。基本结构LinkedList 是基于链表实现的结构,主要核心是 Node 节点,源码如下:private static class Node<E> {    E item;    Node<E&

2022-06-23 09:32:34 75

原创 五种方式实现 Java 单例模式

前言单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。饿汉单例是否多线程安全:是是否懒加载:否正如名字含义,饿汉需要直接创建实例。public class EhSingleton {  &n

2022-06-17 08:53:07 84

原创 Github Markdown 指定图片在光亮或暗黑模式展示

Github 根据系统配置不同的主题模式:如果想要在光亮模式和暗黑模式显示不同的主题的图片,比如以下就是同一个图片在暗黑模式和光亮模式下展示:解决方案在markdon 的图片链接后添加#gh-dark-mode-only 或者 #gh-light-mode-only 参数。暗黑模式添加参数 #gh-dark-mode-only光亮模式添加参数#gh-light-mode-only比如:![](./profile-3d-contrib/profile-green.svg#gh-ligh

2022-06-06 09:25:01 90

原创 【leetcode 206】 反转链表(简单)

链表概念: 区别于数组,链表中的元素不是存储在内存中连续的一片区域,链表中的数据存储在每一个称之为「结点」复合区域里,在每一个结点除了存储数据以外,还保存了到下一个结点的指针(Pointer)。由于不必按顺序存储,链表在插入数据的时候可以达到 O(1)O(1) 的复杂度,但是查找一个结点或者访问特定编号的结点则需要 O(n) 的时间。应用HashMap Node 节点,Node节点有自身的值和 next 指向://HashMap Node 部分源码static class Node

2022-06-01 17:53:14 41

原创 如何调式小程序线上版本

方案一:在需要调式的页面对应的 js 页面开启调式 wx.setEnableDebug。示例代码:// 打开调试wx.setEnableDebug({ enableDebug: true})// 关闭调试wx.setEnableDebug({ enableDebug: false})缺点:每次打开小程序都会打开弹窗提示,影响使用体验:方案二:先在开发版或体验版打开调试,再切到正式版就能看到vConsole优点:只有开发者才能打开调试模式,用户看不到调试模式。总结

2022-05-26 08:47:29 737

空空如也

空空如也

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

TA关注的人

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