- 博客(480)
- 资源 (5)
- 收藏
- 关注
原创 构建URI
org.springframework.web.util.UriComponentsBuilder 是,用于构建和解析 URL 字符串。它提供了一种简单而强大的方式来构造复杂的 URL,尤其是在处理 HTTP 请求时非常有用。使用 UriComponentsBuilder 构建 URL 的步骤。
2024-09-13 16:45:29 568
原创 Java线程
尽量使用较小的线程池,一般为CPU核心数+1。因为CPU密集型任务使得CPU使用率很高,若开过多的线程数,只能增加上下文切换的次数,因此会带来额外的开销。可以使用稍大的线程池,一般为2*CPU核心数+1。因为IO操作不占用CPU,不要让CPU闲下来,应加大线程数量,因此可以让CPU在等待IO的时候去处理别的任务,充分利用CPU时间。可以将任务分成IO密集型和CPU密集型任务,然后分别用不同的线程池去处理。只要分完之后两个任务的执行时间相差不大,那么就会比串行执行来的高效。
2024-09-12 11:56:11 957
原创 代理:aspectj静态代理和jdk,cglib的动态代理的对比
注意:需要测试final 和static 修饰的方法的时候,最好使用maven clean一下项目,否侧会影响测试结果。原理:使用Proxy类的newProxyInstance方法运行期通过反射动态的生成代理对象。缺点:不能对final修饰的类,final修饰的方法或static的方法进行代理。优点:不需要修改具体的业务代码,动态的增强方法,降低耦合性。优点:不需要修改具体的业务代码,动态的增强方法,降低耦合性。注意:测试环绕增强的时候,要和其他增强分开测试,否则会报异常。缺点:代理的对象必须有接口实现。
2024-09-02 10:10:31 440 1
原创 Spring Aop
Spring MVC:需要在XML配置中手动添加来启用AOP。:通过引入依赖,启用AOP功能,简化了配置过程。这种设计让Spring Boot提供了一种更为简便和现代的开发体验,减轻了开发者的负担。每种方案都有其适用的场景和优劣所在。大部分情况下,将方法拆分到不同的 Service 中是最佳实践,它能够保持代码的清晰性和可维护性。在复杂的应用中,可以根据具体的需求考虑其他方法,但在选择方案时要注意事务管理的影响。
2024-08-30 18:27:23 1234
原创 Spring注解@Value在controller无法获取到值
说到@Value注解,用过的应该都知道,这是Spring3的一个注解,通过@value注解的方式获取properties文件中的属性值,大大简化了我们读取配置文件的代码想要通过@Value注解读取配置文件属性的值,那么首先必须要配置properties文件的加载,让Spring将properties的文件中的内容加载进Spring容器中进行管理,从而可以实现通过@Value注解读取配置文件属性的值。
2024-08-23 17:39:04 366
原创 Java参数校验(最佳实践)
1、不管项目是springmvc还是springboot项目,都是可以使用validation-api来做参数校验,校验出现的异常,可以通过全局异常进行捕获处理。2、在controller层校验成功的前提是,对传入的参数,前面加上@Valid注解3、在Controller类中添加接口,POST方法中接收设置了 @Valid 相关注解的实体对象,然后在参数中添加@Valid注解来开启效验功能,需要注意的是,@Valid对Get请求中接收的平面参数请求无效,一般可以进行手动校验参数,抛出自定义参数错误异常。
2024-08-19 18:04:30 843
原创 数据结构:单链表
总的来说,使用头节点可以简化链表操作,避免特殊情况的处理,统一链表操作的方式,并提高代码的可读性,因此在设计单链表时常常会使用头节点。是线程不安全的,但在很多简单的应用场景中,可以通过正确的使用方式来保证数据的一致性。单链表中的头节点是一个虚拟节点,不存储实际的数据,主要作用是方便对链表的操作和处理。:有了头节点,链表的操作变得更加统一,比如遍历链表时从头节点开始,插入节点时可以保持操作的一致性。结果显示,在两个线程新增节点之后,遍历的时候,显示的结果,有时显示4个,2个。而不是线程安全的集合类(如。
2024-06-15 00:02:57 902
原创 加密算法:MD5加盐
在密码存储中使用MD5加盐是一种安全实践,目的是增加密码的安全性。加盐是指在用户输入的密码前面或后面添加一个随机生成的、不可预测的字符串(盐),然后再对整个字符串进行哈希计算。
2024-06-12 17:30:20 411
原创 加密算法:RSA非对称加密算法
RSA算法是一种广泛使用的公钥加密算法,它的名称来源于其创始人Ron Rivest、Adi Shamir和Leonard Adleman的首字母缩写。该算法于1977年首次被提出,并迅速成为公钥密码学的标准之一。RSA算法的安全性基于大数分解和离散对数等数学难题,使得它在保护数据隐私和完整性方面具有很高的可靠性。RSA算法的核心思想是利用一对密钥(公钥和私钥)进行加密和解密操作。公钥可以公开分发给任何人,用于加密信息,而私钥则必须保密,用于解密信息。
2024-06-12 17:27:56 727
原创 加密算法:AES对象加密算法
AES,全称Advanced Encryption Standard,即高级加密标准,是由美国国家标准与技术研究院(NIST)在2001年发布的。它旨在取代早期的数据加密标准(DES),并提供更高的安全性。AES算法是一种对称加密算法,即加密和解密使用相同的密钥。AES支持多种密钥长度,最常见的是128位、192位和256位。密钥长度越长,加密强度越高,相应地,计算资源消耗也会增加。在实际应用中,通常需要根据数据的重要性和安全需求选择合适的密钥长度。
2024-06-12 17:22:03 873
原创 加密算法:MD5哈希算法
MD5哈希算法曾经是信息安全领域的重要工具之一,但由于其存在的安全漏洞和计算能力的提升,现在已经不再推荐使用MD5算法进行安全敏感的操作。在选择哈希算法时,应优先考虑更安全、更现代的替代方案,如SHA-256或SHA-3等。同时,对于密码存储等特定应用场景,还应考虑使用加盐哈希等增强安全性的措施来保护用户数据的安全。
2024-06-12 16:55:52 913
原创 Jenkins、GitLab部署项目
注意,启动过程较长,需要耐心等待。P.S. 如果Jenkins重启,那么汉化会继续汉化不完全,需要设置语言为英文显示,然后重启Jenkins,再继续设置为中文显示,这是一个系统Bug。清华开源软件rpm下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/仓库默认存储路径 /var/opt/gitlab/git-data/repositories。gitlab配置路径:/etc/gitlab/ 路径下有gitlab.rb配置文件。
2024-05-26 13:05:18 977
原创 Git之GitFlow工作流
GitFlow是一种 Git 工作流,这个工作流程围绕着project的发布(release)定义了一个严格的如何建立分支的模型。它是团队成员遵守的一种代码管理方案。Git建分支是非常cheap的,我们可以任意建立分支,对任意分支再分支,分支开发完后再合并。比较推荐、多见的做法是特性驱动(Feature Driven)的建立分支法(Feature Branch Workflow)。简而言之,就是每一个特性(feature)的开发并不直接在主干上开发,而是在分支上开发,分支开发完毕后再合并到主干上。
2024-05-19 10:59:10 863
原创 解决:git SSL certificate problem: unable to get local issuer certificate
错误: git SSL certificate problem: unable to get local issuer certificate。这个问题是由于没有配置信任的服务器HTTPS验证。默认,cURL被设为不信任任何CAs,就是说,它不信任任何服务器验证。
2024-05-17 16:18:31 849
原创 Docker:做镜像,出现Head https://registry-1.docker.io/v2/library/node/manifests/14-alpine的解决方法
出现Head https://registry-1.docker.io/v2/library/node/manifests/14-alpine的解决方法。
2024-05-17 10:20:03 311
原创 Linux搭建SFTP服务,CentOS搭建SFTP服务
本教程主要是关于如何在CentOS上设置和使用SFTP服务器。使用FTP传输数据,很容易被匿名入侵者入侵(如果不使用TLS),因为它的端口对任何人都是开放的。可以使用SFTP作为更安全的替代方案。SFTP使用SSH文件传输协议来提供安全的连接。教程将展示如何为客户端提供对SFTP服务器的访问权限,但无法通过SSH登录到服务器本身。
2024-05-09 16:55:32 417
原创 Java规范:使用final修饰参数、局部变量,禁止对其进行重新赋值
在Java中,我们可以使用final关键字来修饰参数和局部变量,以确保它们在被声明后不会被重新赋值。这样做的好处是可以提高代码的可读性和可维护性,同时可以避免一些潜在的bug。在上面的例子中,参数message被声明为final,这意味着在方法体内部无法对其进行重新赋值。这样做可以确保在方法内部不会意外地修改参数的值,从而避免出现一些不可预料的问题。在上面的例子中,变量a、b和sum都被声明为final,这意味着它们在被初始化后无法被重新赋值。
2024-05-08 18:50:43 339
原创 Centos7环境下搭建SVN服务器、迁移svn到其他的服务器
参考链接:https://developer.aliyun.com/article/1070481SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
2024-05-04 22:09:05 1002
原创 Tomcat项目部署spring mvc项目,压测出现的问题
Tomcat项目部署spring mvc项目,压测出现的问题:docker部署时候设置的内存是80G,JVM堆内存的初始堆和最大堆设置的内存都是64G。
2024-04-09 18:59:19 438
原创 Tomcat性能调优
大多数情况下,对象在新生代 Eden 区中分配。当 Eden 区没有足够空间分配时,虚拟机将发起一次 Minor GC。经过 Minor GC 后仍然存活,并且能被 Survivor 容纳的话,将被移动到 Survivor 空间中,并将对象年龄设为 1,对象在 Survivor区中每熬过一次 Minor GC,年龄就增加 1,当它的年龄增加到一定程度(并发的垃圾回收器默认为 15),CMS 是 6 时,就会被晋升到老年代中。大对象直接进入老年代。
2024-03-07 16:57:16 1414
原创 深入理解@Transactional注解
在Spring框架中,@Transactional注解是用来管理事务的关键注解之一。本文将详细解释@Transactional注解的作用、属性和使用方法,并提供代码实例来演示其在实际项目中的应用。
2024-03-07 11:14:57 974
原创 Spring MVC配置MyBatis vs. Spring Boot配置MyBatis
通过对比Spring MVC配置MyBatis和Spring Boot配置MyBatis的优缺点,我们可以看到Spring Boot在简化配置、版本管理等方面具有明显优势,特别适合快速搭建项目。而Spring MVC配置MyBatis则更加灵活,适用于需要定制化配置的项目。开发者可以根据项目需求选择适合的方式来集成MyBatis,提高开发效率和代码质量。
2024-03-07 10:56:07 541
原创 CSS:定位
是一种常用的定位方式,用于实现子元素相对于父元素进行绝对定位。具体来说,当一个父元素使用相对定位(position: relative)时,其子元素可以使用绝对定位(position: absolute)相对于父元素进行定位。粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。精确定位:通过子绝父相可以实现对子元素的精确定位,使得子元素可以相对于父元素的特定位置进行定位,而不受其他元素的影响。基于用户的滚动位置来定位。
2024-02-18 18:40:13 624
原创 如何在 Linux 中安装 s3cmd 并管理 Amazon s3 存储桶
简单存储服务- 是亚马逊的存储服务,为 IT 团队提供一种安全、可扩展且可靠的方式来存储和检索云上的文件和文件夹。在开始与 Amazon S3 交互之前,我们需要设置 s3cmd 工具,方法是提供必要的凭证,例如访问我们帐户的访问密钥和秘密访问权限。它允许您创建/删除存储桶、添加/远程文件和文件夹以及列出 S3 存储桶的内容。本指南将寻求帮助您在 Linux 上安装 s3cmd 并帮助您充分利用它来管理您的 S3 帐户。首先,下载最新的s3cmd 版本的zip 文件,此时是s3cmd 2.1.0。
2024-02-18 09:23:37 3279
原创 如何在 Linux 中安装 s3cmd 并管理 Amazon s3 存储桶
S3, – 简单存储服务- 是亚马逊的存储服务,为 IT 团队提供一种安全、可扩展且可靠的方式来存储和检索云上的文件和文件夹。S3 可确保数据在需要时可用并随着需求的增长而扩展,从而帮助您充分利用数据。通常,在登录到您的 AWS 账户后从 Web 浏览器访问 S3。这也可以使用名为 s3cmd 的漂亮工具在命令行上实现。这 s3cmd 实用程序是一个开源命令行工具,允许您访问和管理您的 S3 服务。它允许您创建/删除存储桶、添加/远程文件和文件夹以及列出 S3 存储桶的内容。
2024-02-07 17:37:09 1425
原创 Java的异常
运行时异常是指在程序运行过程中可能会出现的异常,这些异常通常是由程序逻辑错误引起的,而不是外部环境或用户输入造成的。这些异常通常是由外部环境或用户输入造成的,程序员需要在代码中显式地处理这些异常,以确保程序的稳定性和可靠性。在这个示例中,我们展示了一个可能抛出文件未找到异常和IO异常的情况,并使用try-catch块来捕获并处理这些异常。一般在service层处理受检异常,通过创建一个自定义的异常类,在需要的地方抛出自定义异常即可。可以直接在service层的最外层进行抛出异常或者直接捕获异常并处理异常。
2024-01-10 17:00:25 879
原创 如何启用和禁用Administrator账户,windows专业版和家庭版
【代码】如何启用和禁用Administrator账户,windows专业版和家庭版。
2024-01-06 13:33:55 614
原创 liunx:把文件夹打包为tar包
对于大型文件夹(10T大小),建议使用tar命令结合pigz进行并行压缩,以提高打包速度和效率。pigz是一个并行压缩工具,可以利用多个处理器核心来加速压缩过程。这将使用pigz工具来并行压缩文件夹,并将其打包为folder.tar.gz文件。这样可以在保持压缩效率的同时,加快压缩速度。其中,folder.tar是打包后的文件名,folder/是要打包的文件夹名。
2024-01-03 12:28:12 1998
原创 查看oracle数据库的运行内存大小和磁盘空间占用大小
通过以上方法,可以方便地查看Oracle数据库在Linux服务器上的运行内存和存储数据占用的磁盘大小。
2024-01-03 12:16:30 5783
原创 maven的pom.xml设置本地仓库
在Maven项目中,您可以在pom.xml文件中配置本地仓库的路径。替换为您希望使用的本地仓库的实际路径。一旦您设置了这个配置,Maven将会使用指定的本地仓库路径来存储和检索依赖项。),则不需要额外配置,Maven会自动使用默认的本地仓库路径。请注意,如果您使用的是Maven默认的本地仓库路径(通常是。在上面的配置中,您需要将。
2023-12-20 10:51:16 3910
原创 ArkTs基础语法一
Prop装饰的变量必须使用其父组件提供的@State变量进行初始化,允许组件内部修改@Prop变量,但更改不会通知给父组件,即@Prop属于单向数据绑定。@Link装饰的变量可以和父组件的@State变量建立双向数据绑定,需要注意的是:@Link变量不能在组件内部进行初始化。@State装饰的变量是组件内部的状态数据,当这些状态数据被修改时,将会调用所在组件的build方法进行UI刷新。@Builder装饰的方法用于定义组件的声明式UI描述,在一个自定义组件内快速生成多个布局内容。
2023-12-10 20:27:20 558
原创 镜像源配置及Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist
✨那么第二种情况,便是 CentOS 已经停止维护的问题。2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL),更多的信息可以查看 CentOS 官方公告。✨上面的报错信息意思是,从仓库 ‘appstream’ 下载元数据失败:由于镜像列表中没有 URL,不能准备内部镜像列表。
2023-11-28 11:20:49 980 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人