java基础
文章平均质量分 77
走了一些弯路
会沉寂吗
展开
-
实际案例进行代码设计演进:无状态的类
依据设计原则,对代码的设计层层演进,从一个简单的案例看无状态的类原创 2023-11-21 18:40:16 · 143 阅读 · 0 评论 -
基于多种设计模式重构代码(工厂、模板、策略)
基于多种设计模式来消除代码中的坏味道原创 2023-11-20 19:09:29 · 425 阅读 · 0 评论 -
【学习笔记】MySQL死锁及热点行问题
MySQL优化、死锁、热点行优化小记原创 2023-11-08 18:43:23 · 276 阅读 · 0 评论 -
DDD必读经典文章
DDD必读经典文章原创 2023-10-13 09:53:46 · 290 阅读 · 0 评论 -
聊一聊JDK21-虚拟线程
JDK21已经发布了,你还在用java 8吗,来一起看看重磅特性--虚拟线程原创 2023-09-28 18:09:38 · 436 阅读 · 0 评论 -
事务碰上锁好似那油锅里进了火
很多时候我们谈起事务都是如虎色变,一想起来都是脑袋懵懵的事务的隔离级别及传播机制是什么Spring的事务底层实现原理了解吗哪几种情况下事务会失效锁相关的更是让人如临大敌可重入锁ReetrantLock和synchronized的区别分布式锁的实现轻量级锁volatile关键字的实现说一说synchronized的锁升级流程当然了,大家都很厉害,上面这些稍微有点难度,仍可一力当之但是当事务遇上了锁,难上加难,阁下该如何应对呢。没开玩笑。原创 2023-09-20 13:57:14 · 93 阅读 · 0 评论 -
哔哩哔哩技术的这篇系统演进文章太绝了
这篇技术文章值得所有做业务的好兄弟来看看。 从系统的数据表设计,到数据量大了之后的数据库连接数处理、锁竞争处理,消息队列的削峰,数据批次聚合,流量控制,热点缓存,错误重试,MQ故障,应有尽有。 建议朗读并背诵全文。转载 2023-09-08 16:00:46 · 172 阅读 · 0 评论 -
一次XxlJob调度任务重复执行的问题排查
Xxl-Job重复执行任务的排查原创 2023-06-13 09:48:54 · 5010 阅读 · 0 评论 -
一次简单的postgreSQL的SQL语句优化实际案例
简单的SQL语句优化,最后有些疑问原创 2023-03-29 18:50:50 · 939 阅读 · 0 评论 -
基于Aviator开发一个简单的规则引擎
Aviator表达式实现一个轻量级的业务规则引擎原创 2023-03-24 08:59:18 · 2466 阅读 · 7 评论 -
从一个Spring动态代理Bug聊到循环依赖
简答谈谈Spring的代理、循环依赖等如有不当之处,你就权当没看见哦原创 2023-03-21 18:05:14 · 515 阅读 · 1 评论 -
从MySQL innoDB的特性Doublewrite buffer谈起
聊下InnoDB的Doublewrite Buffer原创 2023-03-11 13:41:17 · 750 阅读 · 1 评论 -
从负载均衡的预热谈到AOT
AOTJIT原创 2023-03-01 09:12:45 · 232 阅读 · 1 评论 -
SpringBoot实际项目中 如何基于切面的方式对业务操作日志进行记录
Spring boot 如何在项目中简单的对业务操作日志进行记录原创 2023-02-15 11:41:10 · 1291 阅读 · 0 评论 -
从隔离级别和MVCC谈起
前言最近闲暇时,复习了下MySQL的InnoDB的存储引擎方面的知识,说是复习倒不如说是真正的学习了一波,之前为了应付面试,这方面的八股文倒是背过,这几天看了【MySQL45讲】(极客时间丁奇老师的经典)之后,才深切发觉这里面的知识值得好好思考一下,这几天对事务的隔离级别和MVCC有些新的理解,在此抛出一些观点,和大伙儿相互论证下。ps :我这有45讲的压缩包,嘘,囊中羞涩的xdm有需要的评论区滴滴我,免费的,我如果看到了会发给你说明有必要说明下,在落笔之前,我在此前学习及思考的过程中,查看了原创 2022-03-24 16:07:38 · 144 阅读 · 0 评论 -
Redis和Zookeeper的异同点思考
前言最近对Redis和Zookeeper的使用场景有了新的理解,在此记录下。对于Redis和ZK的基本用法和原理,我想就没有必要再多介绍了,毕竟网上的教程比比皆是。在此,有两点想法,希望能对大家在Redis和Zookeeper的学习使用上有所帮助,有不同想法,欢迎讨论哟。从官网的介绍的角度来看Redis和Zookeeper的使用异同点看过很多,但是最终在我的思维里也一直没有一个清晰的定论,大概就是模糊的概念。最近看了下Redis和Zookeeper的官网,两者同样作为key-value组件,应用原创 2022-02-15 14:58:13 · 3852 阅读 · 3 评论 -
一次简单的基于Redis的每日使用次数限制需求开发
新年快乐『大伙们开工了不 ?』过年刚回来,前两天需求还没出,摸鱼正开心呢,需求来了!需求描述需求是给系统内的用户发薪,需要用户添加/修改银行卡,对用户的银行卡的信息进行校验,这个校验的接口是从阿里云上找的供应商,不太能白嫖,每次请求这个接口收费1毛,但是预算有限,所以开发过程中产品强烈邀请增加一个校验:需要对每个用户添加/修改银行卡的操作进行限制,规则是每日每人三次只能校验三次银行卡。概要设计需求本身也不难理解,相信xdm看到这个需求都能想到很多的解决方案,例如在数据库中存储用户原创 2022-02-10 18:09:18 · 1970 阅读 · 1 评论 -
什么?代码里全是if-else
前言『代码中if-else是否已经让你不厌其烦? 』『磨刀霍霍向它的想法是否预谋已久?』『却苦于没有好的方式?』 来来来,xdm,我就在此献丑,抛转引玉,把自己的解决方式贴出来供大伙儿参考参考。对于下面这样的代码,大伙肯定都不陌生,当然啦,像这种比较少的if-else,我的理解是一般前期也没有必要去优化,除非说你前期很明确后面有很多类型或者说逻辑需要处理,那在前期能很优雅地解决if-else就很有必要了。很多时候,项目刚起步,一是业务本身的不明确,二是一般前期项目需求排原创 2022-01-28 15:41:19 · 991 阅读 · 1 评论 -
ThreadLocal那么难吗 进来battle下
ThreadLocal是什么首先让我们打开ThreadLocal的源码,映入眼帘的第一句类上的介绍注释,这个类提供了线程本地变量,这句话理解起来很容易,这个类作用是:对于同一个变量,不同的线程拥有者这个变量的本地变量也就是副本变量,也就是说每个线程之间对于这个变量的操作相互之间互不影响,如介绍**独立的初始变量拷贝的副本 **。ThreadLocal有什么用从它的介绍中可以看出,对于共享变量实现了线程隔离的作用,从某种意义上说实现了‘’线程安全‘’。当然从我理解的角度来看,它设计的初衷并不是为原创 2022-01-27 17:37:23 · 469 阅读 · 0 评论 -
云原生的基本概念
最近在看云原生的一些东西,先留个笔记原创 2021-08-18 22:45:04 · 104 阅读 · 0 评论 -
阿里面试题 :顺序打印ABC问题的几种解法
题目描述编写一个程序,开启三个线程A,B,C , 这三个线程输出分别为 A、B、C,要求,按顺序输出ABC,循环10次, 分别为 ABCABCABCABCABC…解法1 :用synchronized、wait、notifyAll实现具体代码如下package JUC;/** * @description: 多线程打印问题 * A、B、C * @author: zhanghailang * @date: 2021-5-13 19:02 */public class ThreadsP原创 2021-05-17 14:56:45 · 844 阅读 · 0 评论 -
Caused by: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large
最近在学习爬一个网站的时候,存入爬起的信息到本地数据库中报了这么一个错·; Packet for query is too large (7,465,380 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.; nested exception is com.mysql.cj.jdbc.exceptions.PacketTooBigException:原创 2021-04-28 22:59:59 · 1324 阅读 · 0 评论 -
SpringBoot引用别的模块无法注入的问题
前言前段时间尝试着利用空闲时间搭建了一个IIM消息通信系统,目前还是Demo级别,具体实现还在不断补充,在开发过程中遇到了一个小问题,在此分享出来,猛男请忽略。问题描述由于前期搭建的比较匆忙,搁那狂写调用逻辑,没注意自己的包名有点奇怪。目前是分为这三个模块,客户端,公共处理模块,服务端,不过我正在琢磨着给这玩意再整个路由注册中心,便于客户端和服务端的横向拓展。目前我server子模块的包名和common子模块的包路径如下我在service包里的类里引用common包下的公共类时,发现无法注入原创 2021-04-22 22:22:39 · 2407 阅读 · 1 评论 -
记一次使用Springboot自带缓存注解失效问题
背景:最近在忙规则引擎降级服务,一个从0到1的项目,这个项目是因为原有的规则引擎服务是在本地内网,最近由于网络的迁移导致和阿里云上的前端交易中心经常网络不通,而且由于原有的规则引擎服务的决策引擎内核是厂商提供的,导致在排查问题时困难重重,在经历了几次生产问题之后,公司CTO要求开发一个降级服务,便于在原有规则引擎出问题之后的自动熔断降级切换。我在动手搭建这个项目过程中,遇到过许许多多的小问题,这次先分享下,遇到的使用SpringBoot自带缓存注解失效的问题。因为规则引擎有很多配置的数据,为了提高相应效率,原创 2021-04-20 23:22:52 · 1095 阅读 · 0 评论 -
一次Zookeeper的安装经历
因为自己打算动手做一个IM的通讯系统,注册中心打算用一下Zookeeper。决定现在本地装一个调试下。后面开发完的话,会部署到linux上面。先从apche的官网选择合适的版本下载点击此处 https://zookeeper.apache.org/releases.html下载成功安装包后,本地解压。将zk配置文件的模板复制一份,重名为zoo.cfg本地打开进行编辑/tmp/zookeeper只是一个样本地址 并不推荐直接使用将dataDir=/tmp/zookeeper修改成zooke原创 2021-03-19 16:12:28 · 83 阅读 · 0 评论 -
springboot 一次代码优化解耦的经历
简述最近在做的保全中心一期犹退基本已经上线,目前在不断的迭代优化的过程中在二期前期退保逻辑梳理了大约一个半月之后正式开始了开发。由于保险系统核心系统的复杂性,对于一期保全中心的设计存在很多可优化的空间,比如接口并发、幂等、消息异步、缓存等已经实现了不少,但在细节上由于时间比较紧存在的问题还很多,这些问题我会慢慢记录下来,今天先记录下昨天针对优化的一个点做下记录。记录对于保险系统的保全业务在此处不再叙述,因为太复杂了不是简简单单几篇记录就能写完的。对于一期犹退的设计有个计算模块,底层获取公式和参数的逻辑原创 2021-03-16 13:57:31 · 594 阅读 · 0 评论 -
npm install失败
最近在启动一个前端项目,执行npm install 一直失败 截图如下npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! mall-admin-web@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js`npm ERR! Exit status 1npm ERR!npm ERR! Failed at the mall-admin-w原创 2021-01-19 10:21:42 · 1859 阅读 · 0 评论 -
使用Feign远程调用时,序列化对象失败
使用Feign远程调用时,序列化对象失败最近在搭建一个SpringCloud的微服务时,遇到了一个问题,在使用Feign远程调用时报错,返回对象没有无参构造方法,有其他的含参数的构造方法。本地自己搭建的微服务目录大概如下,才刚开始,后续会逐渐补充优化迭代,有兴趣的可以fork下地址:https://github.com/zhanghailang123/MyCloud给与指导意见。Eureka :注册中心服务端,采用Eureka注册中心EurekaClientA :其中的一个Eureka原创 2021-01-14 23:39:10 · 4264 阅读 · 0 评论 -
一次服务不可用的排查经历
下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复。1、排查思路简单分析下可能出问题的地方,分为5个方向: 系统本身代码问题 内部下游系统的问题导致的雪崩效应 上游系统调用量突增 http请求第三方的问题 机器本身的问题 2、开始排查 查看日志,没有发现集中的错误日志,初步排除代码逻辑处理错误。 首先联系了内部下游系统观察了他们的监控原创 2020-12-24 22:25:47 · 153 阅读 · 0 评论 -
springboot拦截请求流水号并在日志中输出
> 最近保全中心一期基本完成,准备在测试的时候对整体进行优化,在测试过程中,由于排查日志时的流水号没有日志打印 ,打算在日志中对所有进入系统的请求中拦截流水号,并输出到日志中。 编写拦截器此次打算使用拦截器对外部请求系统的报文中拦截流水号 --> seqNo。首先需要编写拦截器 。/** * @description: 订单号拦截器便于日志输出 * @author: zhanghailang * @date: 2020-11-18 13:24 */@Slf4jpublic原创 2020-12-23 19:15:36 · 1321 阅读 · 0 评论 -
Oracle锁表 解锁sql
今天又遇到了Oracle数据库的表被误操作锁住了,在此记录下使用的锁表语句select b.owner, b.object_name, a.session_id, a.locked_mode from v$locked_object a, dba_objects b where b.object_id = a.object_id;select b.username, b.sid, b.serial#, logon_time from v$locked_object a, v$sessio.原创 2020-11-11 09:58:56 · 647 阅读 · 0 评论 -
IDEA智能提示不区分大小写
IDEA智能提示不区分大小写最近换了电脑之后,安装IDEA的过程中好多原有的配置需要重新配置,智能提示区分大小写这段时间用起来不方便,在这记录一个解决办法备用。去掉Match case的勾选要眼里有光...原创 2020-10-29 10:16:53 · 685 阅读 · 0 评论 -
<转载>最简单理解位图BitMap和布隆过滤器BloomFilter
一切的数据结构和算法都是为了解决问题,而不是面试! -- 鲁迅先不要前戏,直接给结论BitMap:把数值转化为数组的下标,下标对应的值只存放一个bit 0或1 ,0不存在 1存在。判断时 根据数值当做下标找到对应的 bit 值,1存在,0不存在 BloomFilter:把内容通过多个hash算法,转换成多个数组下标,下标对应的值只存放一个bit 0或1 ,0不存在 1存在。判断过滤时 多个下标对应的值都为1,则可能存在,只要有一个值为0,则一定不存在先看两个面试题给40亿个不重复的无符号.转载 2020-10-26 13:34:15 · 201 阅读 · 0 评论 -
接口Comparator的使用
接口Comparator的使用 > 这两天遇到比较和排序的场景,所以去学习了下Comparator的用法,在此做个记录1. 排序package com.ruoyi.system;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;/** * @description: Comparator 接口的使用 * 1.排序 * * @author:原创 2020-10-24 15:22:32 · 121 阅读 · 0 评论