自定义博客皮肤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)
  • 收藏
  • 关注

原创 从零搭建个人博客:Hexo + GitHub Pages快速入门

Hexo 是一个快速、简洁且高效的博客框架,在几秒内,即可利用靓丽的主题生成静态网页。GitHub肯定各位程序员朋友都有所耳闻,而GitHub Pages则是GitHub提供的一项免费静态网站托管服务。有了GitHub Pages,我们无需购买域名和服务器,就能拥有一个自己的网站。有了Hexo和GitHub Pages,可以帮我们免除繁琐的建站步骤,使我们专注于内容的创作。

2025-03-09 21:19:15 624

原创 git如何只提交一个文件中的部分修改

首先我们需要输入s并按回车进行切分,此时git会提示我们已经将修改分为两段了,第一段我们输入y按回车,第二段我们输入n按回车,这时就可以只提交第一段修改的代码了。有时我们修改了一个文件里的多个地方,但只想提交其中一处,这时可以使用。如果我们只想提交第一处的修改,而暂时先不提交第二处的修改,可以使用。

2025-02-28 09:46:03 164

原创 如何解决maven中的版本冲突

因为依赖传递的特性,maven会把A B C三个包都纳入管理,但是同一个包(也就是groupId和artifactId相同时)只能有一个版本,那么此时就产生了依赖版本冲突。

2025-02-23 20:17:33 904

原创 log4j2配置文件详解——一文带你看懂log4j配置文件

Test类中的logger对象关联的Logger配置了DEBUG级别,所以其中DEBUG级别的日志会输出到name为DEBUG_LOG的Appender中,同时也会传递到name为CONSOLE和MAIN的Appender中,不过name为CONSOLE的Appender单独指定了级别为WARN,所以只会在name为MAIN的Appender中输出。所有Filter类型的节点都有两个属性onMatch和onMismatch,前者代表Filter的条件匹配时返回的结果,后者代表条件不匹配时返回的结果。

2025-02-16 23:54:30 950

原创 Spring扩展点之BeanFactoryPostProcessor

Spring在很早的阶段就会开始创建BeanFactoryPostProcessor的实现类并调用其中对应的方法,此时负责处理@Autowired或@Value注解的类还没有创建(它们由BeanPostProcessor的实现类负责处理),因此在BeanFactoryPostProcessor中使用这些注解并不能实现预期的效果。这里我们采用了前面提到的第一种注册方式,将MyBeanFactoryPostProcessor作为一个普通bean注册到Spring容器中,由容器帮我们发现并执行对应方法。

2025-02-09 12:21:33 423

原创 git revert如何撤销合并提交

为了更好地说明,首先我们使用git init创建一个空的git仓库,并进行一次初始化提交:接着使用创建一个dev分支,然后马上切换回默认的master分支。在默认的master分支下,我们分别进行了两次提交:第一次创建了master.txt文件并在其中写下“master分支第一次提交”,第二次在master.txt文件中再写下“master分支第二次提交”。

2025-01-27 09:00:42 485

原创 Java动态代理之cglib动态代理

在中,我们了解了JDK动态代理。它的好处是随JDK自带,不需要额外导入其他包,但是它除了继承自Object类的equals()hashCode()和toString()方法之外,只能代理实现的接口中的方法,那么如果碰巧我们需要代理的类没有实现接口怎么办呢?这时候就可以使用CGLIB动态代理,它是基于Java的继承机制实现的,因此只要不是final方法或static方法都可以进行代理。注:CGLIB官方声明已不再维护,因此如果你正在使用JDK17及更高版本可以使用ByteBuddy代替。

2025-01-25 12:40:49 1028

原创 Java动态代理之JDK动态代理

在介绍动态代理前,我们需要先搞清楚什么是代理模式。代理模式是一种很常见的设计模式,简而言之就是通过创建一个代理对象,让调用方来访问代理对象,从而实现对真实对象的保护或增强。Spring AOP、Mockito测试框架生成的mock或spy对象都是代理模式的例子。其实,代理并不是一个编程中才有的概念,生活中委托中介帮忙租房子,或者找律师打官司,都可以看作代理模式的应用。这样我们就完成了代理模式的编写,下面可以写个测试类看看效果输出结果为。

2025-01-19 22:59:47 721

原创 如何解决Jackson序列化时第二个字母变成小写的问题

最近在项目中遇到一个字段第二个字母为大写,假设叫qWer吧,经过Jackson序列化后生成的Json字符串的key却变成了qwer。

2025-01-11 19:29:54 250

原创 Sentinel如何根据请求来源进行限流

在使用Sentinel做流控的时候,有时候我们会希望根据上级微服务或者请求来源进行限流,这时我们可以使用控制台中的“针对来源”进行限流,如图所示:当设置为default时,表示会对所有来源进行限流,可以根据自身的需求进行相应的配置。具体可以参考官网相关描述。然而,根据官网的描述编写代码后,我发现针对来源的限流并不生效。经过搜索和研究源码之后发现了两种方法,亲测在2.2.6.RELEASE版本上可以达到效果。

2022-11-06 12:13:37 2377 1

原创 CAP理论及应用场景

CAP理论是指在一个分布式系统中,一致性(Consistency),可用性(Availability)和分区容错性(Partition Tolerance)最多只能同时满足两项。因为在现实世界中,网络分区可以说是必然发生的一件事情,所以一般分布式系统只能在满足分区容错性的基础上选择一致性或者可用性,即常说的CP或者AP。

2022-10-15 18:53:10 2371

原创 Eureka: unavailable-replicas解决方案及原因分析

最近在搭建eureka注册中心时,踩到了一个坑,大概情况是:三个eureka server节点,配置文件如下(不同的文件换了一下eureka.client.serviceUrl.defaultZone里的端口),但访问时发现都处于unavailable状态。本文研究如何解决该问题及其背后的原因

2022-10-02 21:52:59 1939

原创 在MySQL中实现序列的效果

在Oracle中使用数据库自带的序列对象,可以很方便的实现递增序列的功能。而MySQL中虽然提供了字段的自增功能,但是使用起来有诸多限制,所以这里选择自己实现序列功能。可以实现Oracle中的currval和nextval的效果,通过对事务的控制,也可以保证在并发条件下能取到不重复的值...

2022-06-30 22:22:34 9426

原创 改进KMP算法及求解nextval数组

书接上文,图解KMP算法及如何求next数组,在知道了什么是KMP算法及如何求解next数组之后,我们来讨论一下KMP算法的改进空间。KMP算法的问题及改进问题假设有这样一个模式串"aaaaaaaaa",它的next数组是:[-1, 0, 1, 2, 3, 4, 5, 6, 7]。假设在模式串的最后一位发生了不匹配,例如下图的情况:此时,如果按照KMP算法,需要从索引为7的元素开始依次向前比较,发现这些元素都不匹配,一直到索引为0时才停止。虽然上面举的例子是一种比较极端的情况,但我们也可以发现K

2022-05-22 16:12:29 9967

原创 图解KMP算法及如何求next数组

前言KMP算法是为了解决串的模式匹配问题而发明的。所谓串的模式匹配就是在一个长的串中定位一个子串的位置。通常我们将长的串称为主串,被定位的子串称为模式串。一个串的模式匹配的例子如下:主串为"hello,world",模式串为"llo",显然模式串是从主串中索引为2的地方开始的,因此应该返回2。朴素的模式匹配算法在了解了需要解决的问题之后,我们可能第一个会想到类似下面这种方法:首先主串和模式串都从第一个位置开始比较:因为第一个位置不同,则从主串的下一个位置继续和模式串的第一个位置比较:因为

2022-05-15 22:02:01 10383 1

原创 Angular如何实现组件间样式隔离及:host ::ng-deep :host-context的作用

关于样式隔离我们在使用css来为网页设置样式时,一大痛苦的来源就是css会影响整个页面上的元素,因此不得不增加一大堆的.container .wraper等等的类名,并且配合上复杂的嵌套关系,来确保样式被准确设置到期望的元素上。特别是现在流行单页面应用,更是加剧了这个问题。但是,在使用Angular, Vue等框架开发前端应用时,却可以只关注组件内部的样式问题,而不用担心是否影响到页面的其他地方,这就极大地简化了调整页面样式的工作(当然,前提是正确使用框架为我们提供的样式隔离机制)。最近正好在使用Ang

2022-05-05 12:24:06 11262

原创 ORA-01658:oracle创建表空间时指定的UNLIMITED真的是UNLIMITED吗?

背景介绍最近,同事说在执行ETL的过程中oracle报错 ORA-01658: unable to create INITIAL extent for segment in tablespace XXX。从oracle给出的提示中不难发现这是因为表空间满了导致,但同事疑惑的地方在于,该表空间在创建时设置了AUTOEXTEND,MAXSIZE也指定为UNLIMITED,使用df命令查看文件系统的空闲情况发现也还是有足够的空间的,那么为什么表空间没有自动扩展呢?其实这里有个坑人的地方,oracle在创建表

2022-04-03 19:54:53 10902

原创 为什么UDP使用二元组而TCP使用四元组

背景介绍最近在B站看到一个视频,其中提到了“网络四元组”的概念。其实这里使用网络四元组是不太准确的,因为TCP才需要四元组来标识一个套接字,而UDP只需要二元组即可。那么为什么UDP只需要二元组,而TCP需要四元组呢?UDP使用二元组首先,UDP使用二元组(目标IP和目标端口号)即可确定一个套接字,这其中的理由是非常直观的,因为我们至少在IP地址的基础上还需要一个端口号才能实现运输层功能,而更多的内容对于UDP套接字来说也无必要。这也符合UDP的设计理念,即在网络层上附加尽可能少的功能。...

2022-03-27 11:07:07 13643

原创 家庭局域网下一侧能ping通另一侧ping不通的原因

背景介绍最近想用家里的台式机远程到笔记本上,但是发现并不成功,所以尝试ping了一下,发现只有笔记本ping台式机能成功,但台式机ping笔记本一直失败,本来以为只是防火墙的问题,然而发现事实并没有这么简单。两台电脑的网络配置如下:笔记本:台式机:检查防火墙设置因为之前遇到过类似的问题,我第一个想法是检查防火墙的设置,因为防火墙可能会拦截ICMP报文,导致单侧能ping通的问题。需要将不能被ping通的设备的如下设置打开:“Windows Defender防火墙” -> “高级设

2022-03-13 23:04:59 32887

空空如也

空空如也

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

TA关注的人

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