自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 资源 (2)
  • 收藏
  • 关注

原创 Sa-Token 整合Java17和SpringBoot

之前无意中发现Sa-Token权限认证框架,项目十分好用。项目地址:我的个人项目使用的是Kotlin+JDK17+SpringBoot , 于是我也想在这个项目中使用, 可是发现有很多的问题, 无法兼容17的jdk版本,主要原因是17版本都相关的包都更名成了, 于是进行了适当的改造。我的个人项目地址:本次修改的类路径:感兴趣的可以直接看源码。Java21已经发布了, 并且包含激动人心的虚拟线程功能, 要跟上时代的脚步。本文章解决的问题就是 Java17相关包名称修改导致的问题, 需要的了解相关。

2023-11-19 00:11:38 906

原创 JPA整合Sqlite解决Dialect报错问题, 最新版Hibernate6

我个人项目中,不想使用太重的数据库,而内嵌数据库中SQLite又是最受欢迎的, 因此决定采用这个数据库。可是JPA并不支持Sqlite,这篇文章就是记录如何解决这个问题的。由于我个人比较喜欢使用最新版本的各种包,所以容易遇到各种问题, 多找找网络信息,多花点心思往往都容易找到解决方案的。

2023-11-17 10:35:38 1701

原创 bep003-Torrent文件解析.md

我对BT相关协议很感兴趣, 萌生了自己实现一个PT Tracker服务端的想法。顺便学习下Koitln语言, 于是有了这个项目, 本项目使用的是的框架组合方式。Bep003 协议是BT协议族的最基础协议。本篇先讲述下这个协议的内容, 在描述下本项目是怎么实现这个协议的。协议地址: https://www.bittorrent.org/beps/bep_0003.html文章中相关代码的开源地址: https://github.com/blanexie/vxph。

2023-11-16 17:56:31 503

原创 LogBack的日志报错解决办法 org.xml.sax.SAXNotRecognizedException

LogBack的日志报错解决办法 org.xml.sax.SAXNotRecognizedException

2023-11-10 18:38:53 1332

原创 Incompatible because this component declares an API of a component compatible with Java 异常

No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute

2023-09-06 18:15:37 1898

原创 树莓派安装openwrt旁路由开启ipv6

最近对软路由有兴趣, 刚好手上有一个树莓派3B+, 于是就折腾下.

2023-04-05 22:21:46 4178 3

原创 Sqlite的JSON字段的处理和全局异常拦截 Sqlite + Kotlin + Mybatis-Plus+Gradle(kts)项目

Sqlite的JSON字段的处理和全局异常拦截 Sqlite + Kotlin + Mybatis-Plus+Gradle(kts)项目

2023-02-11 23:43:21 805

原创 SpringBoot + kotlin/java + Mybatis-Plus +Sqlite + Gradle多模块项目

SpringBoot + kotlin/java + Mybatis-Plus +Sqlite + Gradle多模块项目

2023-02-11 21:33:22 2440

原创 MySQL字段长度修改 锁表情况分析

修改mysql大表字段长度没有锁表的原因分析

2022-12-23 10:54:29 2461

原创 树莓派Raspberry初始化设置ssh和wifi

树莓派的初始wifi 和ssh设置

2022-10-22 22:03:42 1866 1

原创 kafka消息发送者

kafka不仅仅可以作为MQ消息系统来使用,也可以作为存储系统和流式处理平台使用。kafka使用磁盘顺序写入的基本机制来实现海量消息的处理和消息的有序性,同时也保证了消息不会丢失。kafka也是分布式的系统,使用zookeeper(2.8已经移除)来协调各个部分。分布式系统可以显著的提高系统的可用性,但是同时也为系统引入了数据一致性的挑战。为了达到高度的数据一致性,kafka又引入了副本备份的概念,保证在分布系统中某个模块出现问题而不会导致数据丢失。broker服务器。...

2022-07-26 22:59:49 564

原创 Ktor入门 -- 项目搭建与启动

前言Ktor是使用kotlin语音写的一个高性能web框架, 你可以类比认为 Tomcat 服务器.本篇只是简单的说明 如何启动一个web服务 ,项目结构项目使用Gradle管理, 整个项目结果如下:Gradle的包依赖管理定义了kotlin 和 ktor的版本 , 并且引入了日志框架logback 和我最喜欢的工具包hutool项目的最外部的build.gradle文件的内容如下:buildscript { ext { kotlin_version = '1.5

2022-03-01 23:32:31 4124

原创 领域, 子域和限界上下文

前言关于领域设计, 我也是初学者, 下方的诸多言论只是我个人理解想法, 并不一定是正确的.限界上下文限界上下文 是从复杂系统中划分模块的方法, 限界上下文的命名最好使用偏动词的方式, 这样方便开发者跳出数据库建模的架构影响.在使用DDD思想的时候, 最好先抛弃框架, 数据库等等的约束, 先把设计做好, 最后在来考虑框架,子域限界上下文和 子域 最好保持一对一的关系,电商系统 的模块划分按照我之前的想法, 根据经验和直接我会把电商系统划分成:用户模块商品模块订单模块支付模块库存模

2022-01-06 23:44:54 1034

原创 <实现领域驱动设计>读书笔记

前言我作为程序员已经参与工作多年了, 从刚入门开始就被java的Controller Service Dao 三层的模式所支配. 刚开始也认为这三层的模式很好, 把视图, 业务, 持久化三层分开, 是一个很好的开发架构, 但是随着中间工作的变动, 参与的项目的变多, 我深切的感受到这个架构工作中的不便之处.简单的项目业务关系直接就在数据库表关系之间就直接实现了, Service Controller 就只有简单的一行, 取个数据给前端就可以, 感觉Service就是多余的.一些简单的处理可以直

2022-01-05 23:18:49 596

原创 任务加入线程池是的生效和启动过程详解

前言很早之前我就写过两篇关于线程池的博客, 但是这两篇博客的认识比较浅陋, 有很多需要订正的地方, 所以我决定新开一篇博客.https://blog.csdn.net/leisurelen/article/details/107872827https://blog.csdn.net/leisurelen/article/details/107872827在这里我先简单描述下线程池的工作流程加入一个Task, 如果没有达到核心线程数, 启动一个新Worker执行这个Task再加入一个Task

2021-12-16 20:29:07 2611

原创 Docker开启webdav文件共享协议

我的树莓派外接了一个硬盘需要文件共享, 我试过NFS , SMB, FTP 和 webdav协议, 刚好把最近的webdav的配置写成这篇文章。webdav协议软件的选择可选的有nginx加装模块实现Apache实现其他软件实现最终我选择了 https://github.com/hacdias/webdav 很多人推荐的这个。 go编写,并且支持ARM架构。打包docker镜像首先他的文档很简单, 并且提供的docker版本都没有一点说明, 于是我自己打包了个docker镜像。Do

2021-11-29 22:09:12 6724

原创 Ubuntu20.04设置swap缓存教程

查看有无swap 设置htop 指令需要安装单独安装, 可以看到 根本就没有使用确认下可以运行下面截图中的命令, 可以看到啥也没有, 说明我没有配置sudo swapon -shown 创建缓存文件我创建了8G的文件, 创建完成后进入根目录, 可以看到文件已经存在了, 并且root有读写权限,sudo fallocate -l 8G /swapfile设置只有root有权限读取为了保证安全, 设置只有root用户拥有读写权限sudo chmod 600 /swapfile将这个

2021-11-29 21:32:19 2750

原创 备忘录模式 -- 有后悔药可以吃

备忘录模式 这个模式的用途理解很简单. 但是实现却需要分三个角色状态类 , 和业务高度耦合. 存储业务中的状态,备忘录类, 包装一时刻状态的类, 可以加上一些附加信息备忘录存储类, 存储备忘录信息, 以便可以恢复状态, 内部实现可以存数据库, 内存等等地方当前状态类这个是当前状态的存储类, 类中含有状态的修改和获取的方法.还得需要一个 生成备忘录的方法 和一个从备忘录中回复的方法public class Originator { //具体状态 private Stri

2021-09-14 19:59:35 265

原创 命令模式和组合模式 -- 经常一起使用的模式

介绍组合模式 是一种用来方便操作整体和局部对象的模式,比如: 你的老板是周扒皮周扒皮对部门中小王 进行 降薪 操作, 操作对象是小王,周扒皮也可以对整个不能进行降薪操作, 操作对象是部门部门就是多个小王的组合, 对于老板来说他不关心部门和小王的区别, 他只要这个操作对象支持降薪就可以了, 而组合模式就是屏蔽这个整体和局部区别使得调用者 方便操作的设计模式命令模式分为发令者和执行者两个部分, 是一种把复杂操作封装到命令对象中有执行者执行的设计模式, 发令者可以不用关系执行的细节比如

2021-09-13 16:27:19 893

原创 桥接模式 -- 隔离多个变化点

桥接模式, 如果某一段逻辑需要分先后两步来实现, 并且第一步和第二步都各自有很多的实现方式, 如果直接使用ifelse来实现的话,就可能需要N x M 个分支, 如果使用继承的方式, 子类的数量也会爆炸, 此时使用桥接模式是最合适的。桥接模式需要先把两步操作抽象出来成两个接口, 再把这个两个接口作为调用类的构造参数传入, 这样调用类就不用关心两步操作的具体实现了。应用场景支付场景假设, 支付分两步, 第一步选择支付宝或者微信支付方式, 第二步选择密码或者指纹验证方式, 然后才能支付成功。支付方式

2021-09-08 23:15:36 283

原创 建造者模式 -- 复杂对对象的建造过程

对象的初始化很复杂,并不是指构造方法复杂, 是指对象达到可以使用的状态,中间需要执行很复杂的逻辑。比如: 要连接数据库,要打开文件句柄,要加载配置文件, 要请求rpc接口等。如果把这些逻辑都一股脑的写在构造方法, 或者Init方法中, 逻辑就很多很杂, 建造者模式就派上用场了。优缺点优点:分离复杂的创建逻辑便于精细控制创建过程创建过程中的变化也易于扩展, 并且对于调用这可以屏蔽这部分的变化缺点:如果有很多复杂类, 会导致过多的建造者类Builder建造者模式一般需要一个 Buil

2021-09-07 22:39:55 308

原创 工厂模式细分

工厂模式 ,是属于创建型设计模式。通常是设计一个创建方法的接口, 然后不同的工厂实现这个方法来生成不同的对象。 调用者只要根据需求选择不同的子类来创建对象就可以了, 不用在写众多的if - else 判断逻辑了。工厂模式细分简单工厂模式生产的产品对象有很多种子类工厂类只有一个, 根据方法的入参来声场不同的对象使用这种模式 需要你抽象提取出来不同的产品子类工厂方法模式生产的产品对象有很多种子类工厂也有一个接口, 不同的产品工厂都实现这个工厂接口 , 这样不同的子工厂就可以生成不同的

2021-09-06 23:35:05 248

原创 基于AOP的Controller接口脱敏方式

目录前言常见方案方案一方案二方案三实现方式两个注解类切面类脱敏序列化类接口类接口调用踩过的坑前言我们的后台系统收到了数据脱敏的需求, 要求在一些关联页面的手机号, 收货地址等重要信息需要进行脱敏显示. 所以才有了这个脱敏方案常见方案方案一在关键的DTO 和VO上增加注解, 然后这些对象通过接口返回调用者的时候, 会屏蔽掉注释字段的值.优点:只要增加了注释, 所有的返回这个对象的接口都会屏蔽, 不用每个接口单独写代码缺点:无法针对特定的接口精细化控制返回的前端的DTO对象是其

2021-09-06 19:26:29 1618 3

原创 SpringDate的 ReactiveRedisTemplate使用教程

com.fasterxml.jackson.databind.exc.MismatchedInputException: Expected array or string.Spring Reactive Redis Template 使用

2021-06-24 23:58:48 5900 3

原创 SpringCloud的JPA接入PostgreSql 教程

项目目录结构父build.gradle文件如下spring-cloud-dependencies 和 spring-cloud-alibaba-dependencies 之间有版本对应关系的。 并不是可以随意搭配的。具体版本对应关系参考:版本关系本想使用WebFlux模块的,奈何openfeign 不支持。buildscript { ext { springBootVersion = '2.1.13.RELEASE' springBootMa

2021-06-24 23:31:57 1423 2

转载 openfeige和nacos的版本冲突问题解决

查了很多资料,发现是因为Spring Cloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-loadbalancer&l

2021-06-18 18:13:38 1007

原创 calico的CrashLoopBackOff 解决办法

今天查看k8s集群的状态发现, calico-node的status是CrashLoopBackOff 。 于是各种查找资料, 现在把解决方法记下。查看日志其实k8s的日志记录十分详细,只要查看下日志结合搜索引擎, 很快就能知道问题,查看问题pod的日志: kubectl logs -f -n kube-system calico-node-wzmz5 -c calico-node这个命令的日志信息很长, 很多。 直接拉到底部查看最新的日志。日志中已经说了, linux系统内核的RPF

2021-05-30 11:33:43 10234

原创 k8s Active: activating (auto-restart)处理

The connection to the server localhost:8080 was refused - did you specify the right host or port?查看集群日志sudo journalctl -xefu kubelet 这个就是查看集群日志的命令, 打印出来的日志超级多, 并且还会实时追加打印日志, 我们直接到末尾查看下日志信息。可以看到k8s一直在试图重启,但是都是失败, 失败原因是kubectl使用的cgroupfs

2021-05-30 11:08:55 8215

原创 k8s的 coredns 的ImagePullBackOff 和ErrImagePull 问题解决

说明从这两个错误可以看到无法下载对应的镜像导致的问题,现在就是要查看到具体的是无法下载那个镜像。参考: https://kuboard.cn/learning/faq/image-pull-backoff.html查看具体镜像kubectl get pods --all-namespaces查看具体的pod的镜像kubectl get pods coredns-545d6fc579-4jw9w -n kube-system -o yaml | grep image:可以看到无法下载下来的镜像

2021-05-28 00:11:45 3331 5

原创 Ububtu安装k8s完整教程(2) - 安装k8s-master

前言官方文档地址,https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ , 这个地址只能作为参考, 不能完全按照执行的。初始化Mastersudo kubeadm init \--apiserver-advertise-address=192.168.56.11 \--image-repository registry.aliyuncs.com/google_

2021-05-23 20:30:40 297

原创 Ububtu安装k8s完整教程(1) - 安装kubeadm

前言kubeadm是官方提供的方便快速安装k8s的工具, 使用它可以少很方便的安装k8sUbuntu 换国内源由于GFW的原因,直接安装国外的包会网速很慢, 所以需要换成国内的源, 我一般换成的是阿里的源, 其实换成清华的源 也可以。具体换方式可以参考 https://blog.csdn.net/xiangxianghehe/article/details/105688062安装kubeadm官方有安装的文档, 如果完全按照文档来执行, 你会被网速卡死。官方地址:https://kubern

2021-05-23 18:08:49 511

原创 TeamCity的安装(docker) 构建 和 部署 (1)

前言没有其他的目的, 就是想折腾.安装查看官网看到提供有docker镜像, 那就简单了.配置安装docker镜像按照docker hub 中的文档操作,# 下载镜像docker pull jetbrains/teamcity-server# 运行镜像docker run -it --name teamcity-server-instance \ -v /home/xiezc/teamcity/data:/data/teamcity_server/datadir \ -v

2021-04-03 23:01:09 2741

原创 SpringCloud整合Dubbo的源码

前言现在SpringCloud Alibaba 十分热门, dubbo作为阿里的招牌微服务相关的框架,自然整合进入了SpringCloud了. 我找了下官网发现如下的maven依赖. <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> <version>2

2021-04-02 23:21:11 1393

原创 树莓派(ubuntu)安装nfs

前言之前我是使用的samba进行的文件共享, 但是samba卡,且服务经常无故死掉, 并且在进行大文件或者很多文件同时复制的时候会经常卡死失败. 所以这次我准备换成nfs安装nfssudo apt-get install portmapsudo apt-get install nfs-kernel-server在nfs安装成功后会尝试运行nfs-server , 结果报错.图片中信息显示: rpc.nfsd 启动失败, 失败的原因是内存不足. 于是我先杀掉我树莓派中的一些docke

2021-03-29 23:25:19 987 1

原创 SpringCloud Alibaba的nacos 作为注册中心

前言nacos可以作为微服务的注册中心 .,也可以作为配置中心, 功能强大. 但是在生产环境中不要把nacos 即作为配置中心, 有作为注册中心, 因为这两个都是微服务中十分重要的模块, 如果把他们合在一起风险太大. 可以建议你部署两个nacos(集群)来分别作为注册中心和配置中心.项目结构最外面的pom 文件的内容如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.

2021-03-02 01:00:24 292

原创 Nacos的Docker部署

nacos 是alibaba 出品的一个服务注册和发现的服务, 同时也支持配置管理功能, 能很好的整合进SpringCloud中实现注册中心的功能.文档地址:https://nacos.io/zh-cn/docs/what-is-nacos.html中文文档, 看起来清楚明白有舒心源码直接部署是java项目, 按照文档中操作即可. 安装包中直接有启动脚本, 不细说了.https://nacos.io/zh-cn/docs/quick-start.htmlDocker方式部署这是我最喜欢

2021-02-08 17:38:51 981

原创 设计模式的六大原则

程序开发中, 需要使程序有高内聚, 低耦合的特性,才会使得程序易维护, 可扩展, 又可靠。 而如何保证程序符合这个要求呢? 我们则设计中需要尽量遵守6大原则。单一职责原则对类来说, 一个类只负责单一职责。 当然也可以宽泛的说, 微服务中一个服务只负责单一的功能。 对于数据库来说, 一个库只负责记录单一的一类数据。这个原则的理解很简单,但是难的地方就是则单一职责的划分上。现实中往往有很多的类即属于职责A 又可以归类于职责B, 此时很难划分职责。也有可能如果强行遵守单一职责原则,代码的调用组织就很麻烦

2021-01-03 17:33:17 235

原创 kotlin学习(1) 认识kotlin中的关键字和基本用法

kotlinkotlin 是一门可以运行在jvm上的语言, 兼容java的代码。 和java的谨慎保守不同, kotlin在编码规范上进行了大量的改进, 拥有了许多java语言不支持的特性, 并且kotlin还是安卓开发的优先语言, 所以值得学习。val 和varkotlin 声明属性变量可以使用这两个关键字来设置, 其中val a:Int = 12var b:Int =11上面的定义方式类似于java中的。 final Integer a=12; Integer b=11; 并且k

2020-12-12 19:06:32 572 1

原创 RestTemplate上传文件的文件名和文件大小问题.

通过RestTemplate上传文件通过RestTemplate上传文件如果直接使用如下的方式: HttpHeaders headers = new HttpHeaders(); MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); body.add("media", resource); //我使用的是FileUrlResource headers.setContentTy

2020-12-09 21:00:39 2240

原创 SpringBoot 的Refresh流程简单说明

目录 启动入口Refresh 方法总结启动入口Springboot 程序的启动入口是一个main方法,从这个入口方法一路追溯下去,最终可以找到Refresh方法的。 追溯流程如下:org.springframework.boot.SpringApplication#run(java.lang.Class<?>, java.lang.String...)org.springframework.boot.SpringApplication#run(java.lang.Class<?

2020-10-21 18:00:38 2918 1

netty.zip源码

netty源码, 包含git提交信息, 不用从github下载了。 需要度源码的同学可以下载下来看看,

2020-05-08

springmvc mybatis maven 项目源码

springmvc mybatis maven 项目源码

2015-11-23

空空如也

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

TA关注的人

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