自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (1)
  • 收藏
  • 关注

原创 yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录

把linux自带python2.7删除后yum无法应用再补救(如下)

2025-02-21 09:34:37 514

原创 ollama+deepseek+RAG打造本地知识库

CherryStudio 是一款好用的 AI 客户端,支持多种大型语言模型的服务,提供直观的可视化界面和远程 API 接口,旨在降低对本地硬件的依赖,提升使用效率。首先访问官方 https://ollama.com/download,根据你当前电脑的系统,下载对应版本的 Ollama,然后安装即可。AnythingLLM 是一款支持本地部署的 AI 工具,允许用户在本地运行和管理大型语言模型,提供可视化界面,方便用户与模型进行交互。简单的说,RAG可以将本地知识库中的内容进行处理,便于大语言模型使用。

2025-02-18 16:18:12 1217

原创 actuator+admin/prometheus+grafana监控web应用+mysql数据库

Actuator Spring Boot提供的一个功能强大的管理和监控工具.可以提供对应用程序的运行时信息、健康状况、性能指标、日志等进行监控和管理。#Spring Boot 2.0的端点基础路径由“/”调整到”/actuator”下,如:/info调整为/actuator/info/actuator/info 端点获取应用程序的自定义信息,例如版本号、构建信息等。/actuator/threaddump端点获取应用程序当前的线程信息。

2025-02-14 13:11:41 534

原创 xtrabackup备份流程

MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周实用完整备份,周一到周六实用增量备份。而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具,xtrabakackup有2个工具,分别是xtrabakup、innobakupe。

2025-02-06 16:49:37 999

原创 Oracle迁移到MySQL

Oracle迁移到MySQL业务需要全面改造适配,数据库对象和业务SQL语法需要一对一映射分析如何改写,根据业务使用实际情况评估改造适配成本较高。目前,已有数据库产品能力缺少自动化迁移工具,需要依赖生态产品能力,比如云和恩墨数据迁移能力。

2025-02-06 15:56:08 734

原创 MongoDB开发规范

*MongoDB是一个基于分布式文件存储的数据库。由C 语言编写。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2025-02-06 15:00:25 871

原创 MySQL开发规范

2、IEEE754标准的计算机浮点数,在内部是用二进制表示的,但在将一个十进制数转换为二进制浮点数时,也会造成误差,原因是不是所有的数都能转换成有限长度的二进制数;合理的索引会加快查询速度(包括UPDATE和DELETE的速度,MySQL会将包含该行的page加载到内存中,然后进行UPDATE或DELETE操作),不合理的索引会降低速度。因为ORDER BY rand()会将数据从磁盘中读取,进行排序,会消耗大量的IO和CPU,可以在程序中获取一个rand值 ,然后通过在从数据库中获取对应的值。

2025-02-06 14:51:45 1019

原创 Linux日志切割神器logrotate原理介绍和配置详解

前言在Linux环境中能够帮助我们分析问题蛛丝马迹的有效办法之一便是日志,常见的如操作系统syslog日志/var/log/messages,应用程序Nginx日志/var/log/nginx/*.log。但如果服务器数量较多,日志文件大小增长较快,不断消耗磁盘空间就会触发告警,如果需要人为定期按照各种维度去手动清理日志就显得十分棘手。为了节省空间和方便整理,可以将日志文件按时间或大小分成多份,删除时间久远的日志文件,这就是通常说的日志滚动(log rotation)。logrotate(GitHub地址

2025-02-06 14:14:09 794

原创 maven项目生成jar包依赖关系

idea中执行命令。

2024-05-29 11:10:51 131

原创 yapi文件上传

配置key :@RequestPart(“file”) MultipartFile file。

2023-12-29 09:14:06 498

原创 GIT进行代码仓库完整迁移

例如: git remote set-url --push origin http://gitee.com/demo.git。例如: git clone --mirror http://gitee.com/test.git。git remote set-url --push origin 新代码仓库地址。至此,旧仓库已经完整推送到了新的代码仓库,commit记录和代码分支完整。3、将仓库中的旧的远端地址更改为新仓库地址。4、将修改后的Git镜像仓库推送到新的仓库。2、进入本地镜像仓库。

2023-06-27 18:09:04 873

原创 设计原则:SOLID、DRY、KISS、YAGNI、LOD

设计原则、SOLID、DRY、KISS、YAGNI、LOD

2023-01-29 15:01:06 429

原创 Nginx反向代理https报错The plain HTTP request was sent to HTTPS port解决办法

400 Bad Request、nginx、https

2022-10-12 08:59:51 27815

原创 以太坊开发入门--相关知识点说明

区块链、DAPP、gas、web3、Ganache、Truffle、Solidity

2022-10-04 15:24:56 3066

原创 为什么要使用DDD架构

DDD

2022-10-04 14:55:24 1380

原创 JAVA-DDD项目结构

DDD项目结构、JAVA

2022-10-04 10:00:37 5354 3

原创 git高级应用

代码回滚、提交日志、仓库迁移、保留提交记录、修改远程仓库地址、关闭安全校验

2022-10-04 09:09:52 265

原创 redis解决Hincrbyfloat精度丢失问题

【代码】redis解决Hincrbyfloat精度丢失问题。

2022-10-04 09:03:32 1031

原创 GrayScale灰度切量系统 【AB测试】

AB测试中的痛点新功能上线,产品要求按照规则进行AB测试,但是规则随着业务的推进不断变化(上线前也无法完全确定)。例如:第一天要求产品价格>100的走A场景,第二天要求:在上午10到下午18之前的走B场景,第三天要求产品编码为(1001,1002,1003)的走A场景… 传统方案:修改规则后发版,这就导致开发工作量增加,频繁上线,时效性也很差。 在这种情况下GrayScale 应运而生…介绍com-grayscale-annotation (注解模块,快速下线是使用)com-graysca

2022-03-09 15:11:24 4014

原创 lombok详解

@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法作用于成员变量上,生成该成员变量的getter/setter方法Getter(lazy=true) 懒加载public @interface Getter { AccessLevel value() default AccessLevel.PUBLIC; Getter.AnyAnnotation[] onMethod() default {}; boolean lazy() de

2021-03-10 08:58:12 308

原创 k8s-09-集群安全机制

集群的认证 鉴权 访问控制 原理及其流程k8s使用了认证(Authentication)、鉴权(Authorization)、准入控制(Adminssion Control)三步来保证API Sserver的安全AuthenticationHTTP Token认证:通过一个Token来识别用户客户端携带一个token来请求server端,如果server端含有这个token,那么认证成功否则失败HTTP Base认证:用户名+密码的方式认证 (比较原始的方式,在k8s中基本很少使用)最严

2021-02-08 09:12:56 365

原创 k8s-08-调度器

掌握调度器原理 能够根据要求把Pod 定义到想要的节点运行kube-scheduler是kubernetes系统的核心组件质疑,主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将Pod调度到最优的一个工作节点上面去,从而更加的合理、更加充分的利用集群的资源。调度主要分为以下几个部分预选过程 过滤不满足条件的节点,这个过程称为Predicates优选过程 对通过的节点按照优先级排序,称之为Priorities最后从中选择优先级最高的节点其中Predicates过滤有一系列的算法

2021-02-07 10:05:00 419

原创 k8s-07-存储

掌握多种存储类型的特点 并且能够在不同环境中选择合适的存储方案(有自己的见解)一、ConfigMaphttps://kubernetes.io/zh/docs/concepts/configuration/configmap/1.2版本中引入,主要功能是为了解决应用程序会从配置文件、环境变量中获取配置信息,ConfigMap API为我们提供了向容器中注入配置信息的机制,ConfigMap可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制对象。ConfigMap 是为了方便的处理不

2021-02-03 08:44:32 338

原创 k8s-06-服务发现

掌握 SVC 原理及其构建方式Pod、RC、Service关系ServiceService定义了一个服务的访问入口地址,前端的应用(Pod)通过这个入口地址访问其背后的一组由Pod副本组成的集群实力。 Service与其后端Pod副本集群之间则是通过Label Selector来实现"无缝对接"。而RC的作用实际上是保证Service 的服务能力和服务质量处于预期的标准。Service能够提供负载均衡能力,但是在使用上还有以下限制:只提供4层负载,没有7层功能,但有时我们可能需要更多的匹配规

2021-01-28 14:25:12 549 2

原创 k8s-05-Pod控制器

掌握各种控制器的特点以及使用定义方式每个Pod都有一个特殊的被称为“根容器”的Pause容器。除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器Pod里的多个业务容器共享Pause容器的IP,共享Pause容器挂接的VolumeKubernetes要求底层网络支持集群内任意两个Pod之间的TCP/IP的直接通讯(采用虚拟二层网络技术来实现),一个Pod里的容器与另外主机上的Pod容器能够直接通信。Pod 的分类( 1 )普通 Pod 【控制器管理】普通 Pod 一旦

2021-01-28 14:02:14 310

原创 k8s-04-资源清单

资源介绍资源 掌握资源清单的语法 编写 Pod 掌握 Pod 的生命周期***名称空间级别-n 指定命名空间 (默认命名空间 -n default);k8s系统组建放在kube-system 空间下工作负载型资源(workload):pod 、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob、ReplicationController(1.11版本中被废弃)服务发现及负载均衡型资源(ServiceDiscovery

2021-01-28 13:51:08 358

原创 k8s-03-4-kubectl命令详解

kubernetes集群命令行工具kubectl [command] [type] [name] [flags]kubectl --help(1)comand:指定要对资源执行的操作,例如 create、get、describe 和 delete(2)TYPE:指定资源类型,资源类型是大小写敏感的,开发者能够以单数、复数和缩略的 形式。例如:kubectl get podkubectl get podslubectl get po(3) NAME:指定资源的名称,名称也大小写

2021-01-28 13:40:27 279

原创 k8s-03-3-安装dashboard

kubernetes-dashboard简介kubernetes中管理集群中资源的方式通常有四种:命令行、YAML、API和图形界面,四种不同的方式适用于不同的人群和场景,对比如下:命令行kubectl,kubectl提供了命令行管理kubernetes资源优点:使用方便、便捷、快速管理集群资源缺点:功能相对有限,部分操作无法支持,有一定的门槛YAML资源定义,kubernetes中最终转换形式,推荐使用方式优点:功能齐备,能够定义kubernetes的所有对象和资源缺点:门槛较

2021-01-28 13:39:58 483 1

原创 k8s-03-2-kubeadm安装

系统规划节点信息Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。,这个工具能通过两条指令完成一个 kubernetes 集群的部署:第一、创建一个 Master 节点 kubeadm init第二, 将 Node 节点加入到当前集群中 $ kubeadm join <Master 节点的 IP 和端口 >官方地址:https://kubernetes.io/docs/refer

2021-01-28 13:39:39 438 1

原创 k8s-03-1-安装准备

目前生产部署 Kubernetes 集群主要有两种方式:(1)kubeadm (推荐)Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/(2)二进制包从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。Kubeadm 降低部署门

2021-01-28 13:39:25 276

原创 k8s-02-基础概念

Kubernetes Service(1) 拥有一个唯一指定的名字(比如mysql-server)(2) 拥有一个虚拟IP (Cluster IP、ServiceIP或VIP)和端口号(3) 能够提供某种远程服务能力(4) 被映射到了提供这种服务能力的一组容器应用上PodPod运行在一个我们称之为节点Node的环境中,每个Pod里运行着一个特殊的被称之为Pause的容器,其他容器则为业务容器,这些业务容器共享Pause容器的网络栈和volume挂载卷,因此他们之间的通讯和数据交换更为高.

2021-01-28 13:38:59 372

原创 k8s-01-简介

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统MESOS APACHE 分布式资源管理框架 2019-5 Twitter 》 KubernetesDocker Swarm 2019-07 阿里云宣布 Docker Swarm 剔除Kubernetes 源自 Google 10年容器化基础架构 borg 系统 由 GO 语言开发特点: 轻量级:消耗资源小 开源 弹性伸缩 负载均衡:IPVSBorg系统架构

2021-01-28 13:38:40 19683 1

原创 8-并发编程-定时任务&定时线程池

ScheduledThreadPoolExecutor用来处理延时任务或定时任务。它接收SchduledFutureTask类型的任务,是线程池调度任务的最小单位,有三种提交任务的方式:schedulescheduledAtFixedRatescheduledWithFixedDelay它采用DelayQueue存储等待的任务DelayQueue内部封装了一个PriorityQueue,它会根据time的先后时间排序,若time相同则根据sequenceNumber排序;DelayQ

2021-01-16 09:51:32 745

原创 7-并发编程-Future&ForkJoin框架原理分析

超线程:虚拟出多个核并发与并行并发可认为是一种程序的逻辑结构的设计模式可以用并发的设计方式去设计模型,然后运行在一个单核系统上可以将这种模型不加修改地运行在多核系统上,实现真正的并行并行是程序执行的一种属性对Java而言,对支持Concurrency(并发)/Parallelism(并行)的不断完善,明显地体现在优化并发与并行•Java 1 支持threads, locks, condition queues•Java 5 引入了 thread pools, blocking queu

2021-01-16 09:51:17 361 1

原创 6-并发编程-Executor线程池原理

线程池“线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、调优和监控线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费

2021-01-16 09:50:59 297

原创 5-并发编程-Collections&Queue体系分析

BlockingQueue通常用链表或者数组实现一般而言队列具备FIFO先进先出的特性,当然也有双端队列(Deque)优先级队列主要操作:入队(EnQueue)与出队(Dequeue)1、ArrayBlockingQueue 由数组支持的有界队列队列基于数组实现,容量大小在创建ArrayBlockingQueue对象时已定义好(默认创建非公平锁)import bean.Ball;import java.util.concurrent.ArrayBlockingQueue;impor

2021-01-16 09:50:46 285

原创 4-并发编程-Atomic&CAS&Unsafe魔法类详解

原子操作原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。处理器如何实现原子操作首先处理器会自动保证基本的内存操作的原子性。处理器保证从系统内存当中读取或者写入一个字节是原子的,意思是当一个处理器读取一个字节时,其他处理器不能访问这个字节的内存地址。奔腾6和最新的处理器能自动保证单处理器对同一个缓存行里进行16/32/64位的操作是原子的,但是复杂的内存操作处理器不能自动

2021-01-16 09:50:26 331

原创 3-并发编程-CountDownLatch&Semaphore&CyclicBarrie原理与应用

Semaphore 是什么?Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。Semaphore 基本能完成 ReentrantLock 的所有工作,使用方法也与之类似,Semaphore 也实现了可轮询的锁请求与定时锁的功能,Semaphore的锁释放操作也由手动进行. 可以用来构建一些对象池,资源池之类的,比如数据库连接池怎么使用 Semaphore?1 构造方法public Semaphore(int permits)public Semaphore(in

2021-01-16 09:50:12 231

原创 2-并发编程-Lock&AQS

设计同步器的意义多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。共享:资源可以由多个线程同时访问可变:资源可以在其生命周期内被修改引出的问题:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问那么我们怎么解决线程并发安全问题?实际上,所有的并发模式在解决线程安全问题时,采用的方案都是 序列化访问临界资源。即在同一时刻,只能有一个线程访问临界资源,也称作同步互斥访问。Java

2021-01-16 09:49:58 250

原创 1-并发编程-JMM&volatile详解

现代计算机理论模型与工作方式现代计算机模型是基于-冯诺依曼计算机模型计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存^储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指 令。程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作模型。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提 出来的,故称为冯.诺依

2021-01-16 09:49:46 413

mysql多数据源 项目代码示例

mysql多数据源 项目代码示例

2025-02-07

一个简单的区块链入门demo

一个简单的区块链入门demo

2022-10-04

deploy.yaml

ingress-nginx部署文件

2021-01-28

空空如也

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

TA关注的人

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