- 博客(60)
- 资源 (3)
- 收藏
- 关注
原创 Could not retrieve mirrorlist http://mirrorlist.centos.org错误解决方法
mirrorlist.centos.org 不再被支持。使用sed命令批量替换CentOS镜像源。
2024-10-21 11:17:43
1979
9
原创 SpringBoot的maven项目自定义打包结构
我们在打包的时候,可以将配置文件、其他静态资源文件、jar包分开,便于我们平时的维护。-- 定义打包后的文件存放位置,一般为项目名 --><build><plugins>-- 开始处理启动模块jar包, --><plugin>--在启动模块的jar中排除以下文件类型,这是为了避免启动模块jar和后续的config目录下存在两份相同资源文件从而导致项目无法重启--><excludes><archive><manifest>-- 执行的主程序路径 -->
2024-06-04 17:59:15
673
原创 Mysql设置定时全量同步与增量同步实操
数据库数据备份是任何业务系统都应考虑到的方面。否则一旦数据库发生误删(或者恶意的删库跑路),那可真是欲哭无泪。我所了解的常见备份方式有两种:全量备份与增量备份。
2024-02-27 11:16:44
4053
原创 Async注解详解-Async的作用以及原理
也可以在类型级别使用,在这种情况下,类型的所有方法都被视为异步的。但是,请注意,在@Configuration类中声明的方法上不支持@Async。分别进入通知器的通知(advice,表示实际增强的逻辑入口)构造方法与切点(pointcut,表示哪些类或者哪些方法需要被拦截)构造方法一探究竟。我在调用同事的一个方法时,莫名奇妙的报了空指针,当前请求执行了一部分后,上下文中的用户信息居然丢失了!看的出来,这个注解可以用在类上,也可用在方法上。注解标注的方法时,是调用的具有切面定义的代理对象,并异步执行该方法。
2024-02-22 15:55:28
1461
原创 JAVA使用RestTemplate访问URL带用户名密码验证的Http请求
信息设置在header后,并通过exchange方法进行http请求,最终在创建连接时,其携带了。直接拼接在url中,然后通过restTemplate.getForObject进行请求导致的。通过debug,可以发现,restTemplate.getForObject进行请求时,携带的。根据报错结果可以推测请求失败是因为该http请求在目的主机鉴权失败。:请求报错:“401 Unauthorized…在对代码修改后,再次调用接口,访问成功。信息直接拼接在url中,,因此导致鉴权失败;信息,因此鉴权成功。
2024-02-20 10:32:17
1014
原创 【操作系统】I/O软件层次结构
偶然看到“程序员的护城河是什么”这个话题,作为一个工作两年多的程序员吧,经常看到网上关于各种35岁危机、裁员甚至猝死之云云。我的护城河是什么?我的护城河不单单是指一直作为一个程序员不被开除,而是我有哪些能力让自己始终不担心生计?或者说是应该提升哪些能力使得自己不对未来那么担忧和迷茫。思考了一段时间。首先,要排除家里“有矿”的前提(就算有矿那也得在精神层面不断提升自己吧)。我觉得第一就是要有始终学习的习惯,不然淘汰只会提前到来;
2023-11-22 17:13:28
311
原创 【操作系统】文件系统的实现
文件系统从上往下分为了五层,分别是用户调用接口、文件目录系统、存取控制模块、逻辑文件系统与文件信息缓冲区、物理文件系统。在操作系统中,目录实现主要有两种方式:线性列表是一种常见的数据结构,有链表和数组两种。我们将FCB(文件控制块)中的信息简化为文件名与文件索引节点指针后,文件的目录结构如下:链表:数组:哈希表依赖于哈希算法,是一种散列算法,文件名进行哈希计算后得到一个值,将这个值作为索引。相较于线性列表,哈希表的方式使得文件名与索引之间建立了一种映射关系,查询效率更高。文件最终是保存在磁盘上,磁盘的存
2023-11-21 17:19:11
812
原创 【操作系统】文件系统之文件共享与文件保护
为了实现文件的共享,引入了“计数器”字段,当一个文件每被一个用户所共享,那么计数器就加一。,链接文件的文件内容指向了原文件。从实现方式来看,很明显硬链接的效率会更高一些,但是另一方面,软链接相较于硬链接要更加安全(不会删除原文件)。通过索引节点表中的索引节点指针是否指向真是文件索引节点的不同,文件共享的方式分为了。加密保护,即使用加密算法对文件内容进行了加密处理,如果没有密钥,即便获取了文件也无法识别正确内容。硬链接的索引节点指针直接指向真实文件的索引节点,当硬链接全部删除后,文件将会被删除。
2023-11-21 14:05:15
316
原创 【操作系统】虚拟内存浅析
所谓的“固定分配”就是操作系统分配固定大小的总页面,不够时不能向操作系统申请新的内存空间;所谓的“局部置换”,是说分配的内存不足时,只能在进程所分配的内存页中进行置换;而“全局置换”是可以从主存中其余空闲的内存中进行置换。由于进程在执行过程中,并不会一次性将程序装入,因此每当需要装入新的程序部分到内存时,就会进行请求。相对应的,如果页面置换算法判断为淘汰时(例如访问频率低),内存中的程序就需要对换入硬盘缓存中。当程序执行过程中,发现所需要的部分未加载至内存,将会发生缺页中断,将所需部分程序装入至内存。
2023-11-17 17:26:08
167
原创 【操作系统】内存的非连续分配管理
每个进程所分配的内存都是一个连续分区(一个分区内部)。那么会导致什么问题呢?由于每个进程的内存空间都是连续分配,而进程所需要的内存空间并不会完全与分配的内存分区大小一致,也就导致了内存的“碎片化”。对于固定分区分配而言,“碎片”来自于每个进程的分区内部;对于动态分区分配而言,每次都要从用户区寻找一块符合条件的分区,导致整个用户区在进程的各个内存分区之间夹杂很多“外部碎片”。而“碎片化”直接将会导致内存的利用率降低。
2023-11-16 17:47:34
460
原创 linux安装nginx并配置服务的详细步骤
zlib 库提供了很多压缩和解压缩的方式,nginx 使用 zlib 对 http 包内容进行 gzip 压缩。nginx安装前需要一些依赖,如果已经安装了则忽略。自己创建一个文件夹,上传刚刚下载的压缩包。#该模块提供nginx的基本状态信息。该依赖可以提供nginx重写功能。安全套接字层密码库,用于通信加密。选择要安装的nginx版本并下载。解压文件后进入文件夹。#所属用户nginx。
2023-11-15 17:57:39
147
原创 【操作系统】存储器的多层结构以及进程运行的准备工作
一个程序在内存中可能存在多个进程,操作系统可以考虑将不活跃的进程暂时交换到硬盘缓存中,达到内存扩充的目的。在一个操作系统中,我们的程序不是运行在磁盘上,而是运行在操作系统的内存中。内存,广义上可以认为就是我们电脑中的内存条,这也是为什么内存越大,运行的程序支持的越大/多。装入程序会根据程序指定的内存位置将需要运行的程序分配(如果指定位置被占用,重新计算位置)到“合适的位置”,即空闲空间中。当内存中存在多个运行的进程,假如有程序正在进行装入过程,那么必须避免正在运行的进程取访问装入程序的内存地址。
2023-11-10 15:16:48
116
原创 【操作系统】进程间的协作(三)
总之,条件变量是封装于管程内部,当进程执行所需的资源不足时,管程会通过条件变量将进程移入对应的条件队列(使用wait);当该条件满足时就会唤醒进程并移入就绪队列(signal)去重新获取所需资源(当然依旧存在被阻塞的可能性)。(进行PV操作的函数)组成的管理程序(封装)。注意:管程是由进程去调用的一个。管程,即进程管理,用于。
2023-11-07 15:42:45
75
原创 【操作系统】进程间的协作(一)
需要注意的是,以上三种通信方式是同一计算机中进程的通信方式。而我们通常两个计算机之间的通信,实际上是进程间的通信,只不过是两个计算机的进程通信,他的通信方式不同于以上三种方式。进程间通过消息传递的方式进行通信,可以分为两类:直接通信、间接通信。与共享内存有点类似,区别在于消息传递的间接通信是通过原语实现的。进程通信即进程间的信息交换;直接通信:点到点发送;间接通信:广播信箱;
2023-10-31 15:37:13
173
原创 【操作系统】调度算法介绍
不同操作系统中可能根据不同的需求而采用不同的调度算法。常见的调度算法有先来先服务(FCFS)、短作业优先(SJF)、高响应比优先调度(HRRN)、优先级调度(PSA)、时间片轮转调度(RR)、多级反馈队列调度(MFQ)。
2023-10-30 17:10:15
311
原创 【操作系统】进程的运行机制
操作系统通过原语来对进程进行有效的管理,包括创建进程、撤销已有的进程、挂起、阻塞和唤醒、进程切换等多种操作。为了方便系统和用户观察和分析进程,在进程控制中提供了挂起原语和激活原语。根据一定的算法和原则将处理机资源进行重新分配的过程。由若干条指令组成,完成特定的功能,是一种。非剥夺/非抢占式调度。
2023-10-30 14:53:29
87
原创 【操作系统】线程的概念
线程(Thread)是进程的轻型实体,也叫“轻量级进程”,是一系列活动按事先设定好的顺序一次执行的过程,是一系列指令的集合。线程是一条执行路径,不能单独存在,必须包含在进程之中。另外,线程是操作系统中运算调度的最小单位。
2023-10-19 13:54:12
124
原创 【操作系统】运行机制介绍
因此,运行在用户空间的程序即为用户程序,运行在内核空间的程序即为内核程序;当执行用户程序时CPU处于用户态,执行内核程序的时候CPU处于核心态;特权指令是指CPU执行内核态指令,非特权指令即CPU执行用户态执行。提高多道程序环境下CPU的利用率:比如当前程序执行到IO操作时,CPU可以不必等待IO结束,而是转而执行其他进程的CPU指令,减少了CPU的等待时间也就提高了CPU的利用率。例如执行某程序指令时,发现所需要的文件并不存在于内存中,此时将会引发故障中断,CPU会进入内核态去加载所缺失的文件;
2023-10-18 18:00:06
107
原创 关于maven自定义打包结构
为了方便实施运维同事的部署工作,以前项目都是直接构建一个jar包,现在需要将配置文件、相关说明文档等暴露出来,供实施同事修改。
2023-09-26 11:30:22
295
原创 python相关环境搭建
在官网下载python 3.10.1的压缩包:https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz。由于算法模块需要调用python算法文件,因此本系统部署时需要相应的python环境。然后通过XFTP丢到服务器上去,路径:/usr/local/python3。cd 到新建的python3文件夹中 进行解压 tar -xvf xxx。安装 make install。
2023-09-21 11:16:58
220
5
原创 Linux安装Redis教程
选择7.2版本进行下载。下载完成后将其上传至linux的/home/software文件夹下。我是通过在redis官方网站下载redis的安装包后,再上传服务器的方式。当完成预编译后,我们开始对Redis进行安装步骤;重新回到redis的解压目录中,进行预编译。当出现域名无法解析时,查看文件。
2023-09-19 18:00:57
347
原创 springCloud从0开始(12)- geteway简介与使用入门(2)
本章主要介绍gateway的另一个重点内容:过滤器工厂。gateway里面的过滤器与Servlet里面的过滤器功能差不多,路由过滤器可以用于修改进入Http请求和返回的Http响应。在实际的业务场景中,使用官方提供的过滤器配置可能无法完全满足需求,因此我们很多时候都会自定义网关过滤器。在GateWay中自定义全局过滤器,我们需要实现接口,重写filter方法来满足我们的功能需求。同时,由于容器中存在多个实现接口的Bean,我们可以通过实现Ordered接口来设置过滤器在过滤器链的优先级。
2023-08-09 16:39:29
349
原创 mybatisPlus更新时部分字段为空时更新失败
今天使用mybatisPlus的updateBatchById方法时,不知道为什么,总是有个属性在设置为null的时候更新失败。通过打印的日志也可以看到,执行的sql语句根本没有相应字段。
2023-08-09 15:48:50
1221
原创 记录mysql排序中遇到的问题
今天开发过程中遇到一个分页查询的需求:表A中将状态1的放到列表前面,其余三种状态2,3,4放到列表后面,也就大体上组成了两部分1+2,3,4。于此同时,这两部需要按照各自的创建时间从大到小排序。
2023-08-08 18:24:15
206
原创 springCloud从0开始(12)- geteway简介与使用入门(1)
关于gateway的简介,我们首先通过官方文档来看看:该项目提供了一个建立在Spring生态系统之上的API网关,包括:Spring 6、Spring Boot 3和project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领域的关注点,例如:安全性、监控/度量和弹性。
2023-08-07 13:55:44
389
原创 springCloud从0开始(11)- Hystrix简介与使用入门
在分布式系统中,存在大量的服务调用,服务调用组成了一个一个的调用链。如果其中某一个服务出现崩溃,而此时调用链上游累积的请求数量不断增多,最终导致整个链路的服务出现崩溃,这也是“服务雪崩”的一个简要理解。在这种背景下,Hystrix出现了,Hystrix开源在github,目前已经处于维护状态。下面根据其官方解释,做一个翻译:在分布式环境中,许多服务依赖关系中的一些不可避免地会失败。Hystrix是一个库,通过添加延迟容忍和容错逻辑,可以帮助您控制这些分布式服务之间的交互。
2023-07-28 15:50:59
94
原创 springCloud从0开始(10)- feign调用源码分析
openfeign可以方便的进行远程服务调用。仅仅只需要添加注解和添加与被调用方一致的方法签名即可完成。通过断点,可以发现我们注入的feign客户端其实是一个代理对象,也就是说Spring根据我们写的接口为我们生成了一个代理对象。现在通过openfeign的源码来了解这中间的过程。
2023-07-27 17:34:14
104
原创 springCloud从0开始(9)- feign的调用参数处理
当我们需要传递对象时,通常需要涉及到POST请求,另一方面我们一般会在方法参数前使用注解。通过这种传参方式,方法参数会通过变量名与参数名进行匹配。相应的,在consumer模块的feign接口中添加相应的方法签名,除了在url中携带参数外,还可以通过在请求后面拼接参数,通过。然后我们就可以在consumer模块中进行调用了,不再赘述。所谓的通过URL传递参数,即将参数放置于url中,在注解。注解,是用来简化实例对象的,大家感兴趣可以了解下。第一步,由于我们要传递对象参数,先去创建一个。
2023-07-19 17:28:28
639
原创 springCloud从0开始(8)- feign的简介与入门
Feign是声明性(注解)web服务客户端。它使得编写web服务客户端更加容易。要使用Feign,可以创建一个接口并对其使用注解。它具有可插入注解支持,包括Feign注解和JAX-RS注解。Feign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注解的支持,并支持使用HttpMessageConverters,Spring Web中默认使用的注解。
2023-07-19 11:12:39
71
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人