- 博客(184)
- 收藏
- 关注

原创 架构新起点
架构????从一开始学习 JavaEE 开始,最开始听到的便是三层架构+MVC。我认为的架构,是整个项目的结构,由项目中的各个组件组合而成,就像是积木拼搭在一起支撑起整个体系结构,而架构的目的就是为了解耦,以至于使用各种开发框架。微服务微服务是一种新型的架构风格和架构思想,从2014年开始被人们所关注。由于互联网发展迅速,传统的单体架构无法承受大流量导致的高并发问题,经过这么多年的架构演...
2020-02-08 19:54:56
185
1

原创 看完,SpringBoot自动配置你就懂了!
SpringBoot 是个很强大的框架,免去很多繁杂配置,它是怎么实现这些功能的,来看看 SpringBoot 的运行原理。首先,SpringBoot 启动类是整个项目的启动入口,@SpringBootApplication 注解是整个启动类的核心,可以看一下 @SpringBootApplication 的部分源码。可以看出 @SpringBootApplication 注解是一个组合注解...
2019-12-21 19:54:17
368
1
原创 【Linux】Jenkins Lts 配置构建 Maven 项目
Jenkins配置Maven项目构建指南:首先安装Java 21和Maven基础环境;在Jenkins中安装Maven Integration、SSH Agent等必要插件;进行全局配置,包括JDK路径(通过java命令获取)、Maven安装位置(mvn -v查看)和SSH连接设置;创建自由风格项目,配置Git仓库地址和分支,设置Maven构建命令(如clean package -DskipTests);最后配置SSH部署,使用nohup命令后台运行JAR包。完整流程涵盖从环境准备到自动化部署的各个环节。
2025-07-14 22:35:56
318
原创 【Linux】Rocky Linux 清华镜像源安装 GitLab
摘要:本文介绍如何使用清华镜像源安装GitLab CE社区版。首先通过清华镜像源搜索GitLab,创建yum源配置文件,然后执行yum安装命令。安装完成后需修改配置文件设置外部URL,启动服务并配置防火墙放行80端口。提供查看服务状态和获取初始root密码的方法,建议首次登录后立即修改密码。
2025-07-10 08:31:27
464
原创 【Linux】Rocky Linux 安装 Docker 与 Docker-Compose
本文介绍了Docker和Docker-Compose的安装步骤。
2025-07-09 22:46:18
611
原创 【Linux】Rocky Linux 安装 Jenkins
本文介绍了Jenkins LTS的安装流程。首先添加Jenkins官方下载源并安装依赖包,然后启动Jenkins服务并设置开机自启。安装过程中需注意防火墙设置,可通过开放8080端口或关闭防火墙解决访问问题。启动后需使用初始密码解锁Jenkins,并完成插件安装和用户创建两个关键步骤。整个安装过程简洁明了,适合快速部署Jenkins持续集成环境。
2025-07-03 12:26:20
202
原创 【Linux】Rocky Linux 安装教程
Rocky Linux是一个兼容RHEL的企业级开源操作系统。本文介绍了在VMware虚拟机中安装Rocky Linux v10.0的详细步骤。
2025-07-02 23:33:35
482
原创 认识 Spring AI
Spring AI是一个将Spring生态系统特性应用于AI领域的工程框架。它支持主流AI模型提供商(如OpenAI、Google等)和多种AI功能类型,提供便携式API和POJO结构化输出能力。框架集成主流向量数据库,并统一查询接口。具备工具调用、可观测性、文档处理等高级功能,同时优化开发者体验,提供ChatClient API、Advisors API等工具,支持对话记忆和RAG技术。通过Spring Boot自动化配置简化AI组件集成,实现高效开发。
2025-06-30 23:21:36
427
原创 【Portainer】Docker可视化组件安装
Portainer 是用于管理容器化环境的一体化平台工程解决方案,提供广泛的定制功能,以满足个人开发人员和企业团队的需求。
2025-03-27 09:38:46
349
原创 【XPipe】一款好用的SSH工具
XPipe是一种新型的shell连接中心和远程文件管理器,允许您从本地计算机访问整个服务器基础设施。它可以在您安装的命令行程序之上运行,不需要在远程系统上进行任何设置,目前在Github上已经有10k+star。
2025-03-24 22:13:42
396
原创 【Tiny RDM】Redis客户端工具
Tiny RDM是一款现代化、轻量级、跨平台的Redis客户端,支持Mac、Windows和Linux,目前在Github上已有10k+Star
2025-03-24 21:39:43
485
原创 【Linux】VMware 安装 Ubuntu18.04.2
选择第二项,LVM 磁盘扩容技术。选择键盘布局 English。第一块硬盘名sda,默认即可。镜像地址,修改成阿里云地址。选择语言 English。虚拟机网卡地址,默认即可。选择系统 Ubuntu。代理地址,默认空即可。
2024-12-09 22:25:57
304
原创 Centos7.9 安装 Docker 和 Docker-Compose
Centos7.9 安装 Docker1. 更新数据源yum update2. 设置安装的数据源(阿里)yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3. 安装 Docker 客户端yum install docker-ce4. 查看 Docker 版本docker -v5. 配置镜像加速器etc 目录下创建 docker 目录,daemon.json 配置
2022-05-20 17:43:17
2085
原创 【Bug】SpringCloud Alibaba Nacos + Gateway 服务转发 503 Service Unavailable
Nacos 自带 spring-cloud-starter-netflix-ribbon,而 Netflix 的 Ribbon 已进入维护阶段,从最新的 SpringCloud 2020 版本开始就需要改用 Spring cloud loadbalancer<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-n
2021-09-10 16:31:03
609
原创 Docker Compose 安装 Jenkins
配置文件version: '3.5'services: jenkins: restart: always image: jenkins/jenkins:lts container_name: jenkins environment: TZ: Asia/Shanghai ports: - 80:8080 - 50000:50000 volumes: - data:/var/jenkins_homevol
2021-09-03 00:19:33
251
原创 【Spring Security】身份认证的多种方式
配置文件通过配置文件设置登录的用户名和密码spring: security: user: name: mary password: 123 roles: admins启动项目,控制台默认生成的密码消失,说明 Spring Security 账号密码已经由默认生成变化为读取配置文件访问接口,进入认证页面,输入配置文件中配置的账号密码,正常访问接口配置类通过配置类的方式,配置登录的账号密码,这里是采用基于内存的方式@Configuration@E
2021-09-02 11:48:47
891
原创 【Spring Security】SpringBoot 集成,入门案例
Pom 依赖这里使用 SpringBoot 版本为:2.4.10对应 Spring Security 版本为:5.4.8由于方便后面案例,直接将其他可能用到的依赖一同加入<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s
2021-09-02 10:04:42
181
原创 【Bug】cnpm:无法加载文件 C:\Users\***\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本
解决方法:以管理员身份运行 power shell输入 set-ExecutionPolicy RemoteSigned输入 A 回车
2021-08-31 09:39:16
135
原创 MySQL GROUP_CONCAT 函数,字符串连接过长被截断
GROUP_CONCAT 函数,字符串连接过长被截断使用 GROUP_CONCAT 函数拼接字符串,由于数据比较多,拼接出的字符串显示不全原因MySQL 对 GROUP_CONCAT 函数数据结果限制了长度。解决方法修改配置参数 group_concat_max_len,把值改为最大或者需要的长度。1. 修改 MySQL 配置文件 my.cnfgroup_concat_max_len = 102400000;2. MySQL 命令行修改全局配置,修改后会立即生效SET GLOBAL g
2021-07-23 16:05:24
1644
原创 TortoiseSVN 忽略 Maven 项目的 target 目录
TortoiseSVN 配置鼠标右键,TortoiseSVN-- >Settings -->Subversion–>Global ignore pattern添加 target *.settings .classpath .project应用即可
2021-07-16 15:02:17
1099
1
原创 【Kubernetes】Ubuntu 安装 kubeadm,kubelet,kubectl
配置软件源apt-get update && apt-get install -y apt-transport-httpscurl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -cat << EOF >/etc/apt/sources.list.d/kubernetes.list> deb https://mirrors.aliyun.com/kuberne
2021-07-13 22:26:42
229
原创 SpringCloud Gateway:Consider defining a bean 问题
SpringCloud GatewayAPPLICATION FAILED TO STARTDescription:Parameter 0 of method modifyRequestBodyGatewayFilterFactory inorg.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type‘org.springframework.http.codec.ServerC
2021-05-21 09:49:57
803
原创 HashMap 负载因子为什么默认为 0.75
HashMap 负载因子为什么默认为 0.75负载因子是和扩容机制有关的,意思是如果当前容器的容量,达到了我们设定的最大值,就要开始执行扩容操作。举个例子来解释,避免小白听不懂:比如说当前的容器容量是16,负载因子是0.75,16*0.75=12,也就是说,当容量达到了12的时候就会进行扩容操作。他的作用很简单,相当于是一个扩容机制的阈值。当超过了这个阈值,就会触发扩容机制。HashMap源码已经为我们默认指定了负载因子是0.75。我截取了部分源码,从这里可以看出,系统默认的负载因子值就是0.75,
2021-03-30 09:37:34
2085
3
原创 布隆过滤器
布隆过滤器布隆过滤器(Bloom Filter)是一个由二进制向量(位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。原理当一个元素加入布隆过滤器中的时候,会进行如下操作:使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(有几个哈希函数得到几个
2021-03-04 14:03:57
180
1
原创 JVM 垃圾收集器
JVM 垃圾收集器Serial 收集器ParNew 收集器Parallel Scavenge 收集器CMS 收集器G1 收集器Serial 收集器Serial 收集器称为串行收集器,是历史最久远的垃圾收集器,它是一个单线程收集器,并不是只使用一个线程进行垃圾收集,最主要的是它在进行垃圾收集时必须暂停其他所有工作线程直到收集结束。新生代采用标记-复制算法,老年代采用标记-整理算法。ParNew 收集器ParNew 收集器其实就是多线程版的 Serial 收集器,使用多线程进行垃圾收
2021-02-27 20:04:48
138
原创 谈谈 ThreadLocal
ThreadLocalThreadLocal 类主要是解决在多线程情况下让每个线程都拥有属于自己的本地变量,线程之间互不影响,各自拥有各自的 ThreadLocal,从而避免了线程安全的问题。/* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ThreadLocal.ThreadLocalMap threadLocals = null;/* *
2021-02-23 10:13:04
263
原创 谈谈 synchronized
1. synchronizedsynchronized 关键字解决的是多个线程之间访问资源的同步性,synchronized 关键字能够保证被它修饰的房吗或者代码块在任意时刻只能有一个线程执行,synchronized 是可重入锁。“可重入锁” 指的是自己可以再次获取自己的内部锁。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。同一个线程每次获取锁,锁的计数器都自增 1,所以要等到锁的计数器下降为 0 时才能
2021-02-22 20:32:18
159
原创 hashCode() 与 equals()
hashCode()hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在 JDK 的 Object 类中,Java 中的任何类都包含有 hashCode() 函数。Object 的 hashcode 方法是本地方法,是用 c 语言或 c++ 实现的,该方法通常用来将对象的内存地址转换为整数之后返回。public native int hashCode();散列表存储的是键值对(ke
2021-01-26 23:27:20
97
原创 HTTP/HTTPS 协议
HTTP 协议HTTP 协议和 TCP/IP 协议族内的其他众多协议相同,都是用于客户端和服务器之间的通信。HTTP 协议版本:HTTP 0.9:HTTP 1.0:HTTP 1.1:HTTP 2.0:Https 协议
2021-01-24 13:03:27
2362
原创 TCP 协议 三次握手,四次挥手
三次握手,四次挥手TCP 协议是稳定可靠的,能够将数据准确无误的传输到目标处,正是因为 TCP 协议采用了三次握手,四次挥手的策略。在三次握手,四次挥手策略中涉及到几个 TCP 报文标志的概念:序号:发送的数据字节流,确保 TCP 传输有序,对每个字节编号。确认序号:发送方期待接受的下一序列号,接收成功后的数据字节序列号 +1,只有当 ACK = 1 时生效。SYN(synchronize):请求建立连接,并在其序列号的字段进行序列号的初始值设定,建立连接设置为 1。ACK(acknowled
2021-01-16 23:04:02
218
原创 网络基础 TCP/IP 协议族
TCP/IP 协议族计算机与网络设备要相互通信,双方必须基于相同的方法。不同的硬件、操作系统之间的通信都需要一种规则,而这种规则就称为协议(protocol)。协议内存在各种各样的内容,把互联网相关的协议集合起来就称为 TCP/IP。TCP/IP 的分层管理TCP/IP 协议族内最重要的一点就是分层。TCP/IP 协议族按层次分别分为以下 4 层:应用层传输层网络层数据链路层而这样层次化的好处就是:若互联网只有一个协议统筹,而该协议某个地方需要变动时,就只需要将变动的层替换掉,把各层
2021-01-15 17:23:54
893
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人