自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(246)
  • 收藏
  • 关注

原创 Linux配置NTP时间同步

配置 NTP 服务端:安装 NTP 服务、编辑配置文件、启动服务并设置开机自启。配置 NTP 客户端:安装 NTP 客户端、编辑配置文件、启动服务并设置开机自启。防火墙设置:确保 UDP 端口 123 是开放的,以允许 NTP 流量。验证配置:使用ntpq -p和date命令检查时间同步状态。通过这些步骤,你可以配置 Linux 系统的 NTP 服务端和客户端,确保时间的准确性和一致性。

2024-08-30 15:04:12 222

原创 count(1) count(* ) count(字段) 的区别

COUNT(1)和COUNT(*): 统计所有行的数量,无论行内数据是否为NULL。COUNT(字段): 只统计特定字段中非NULL的行数量。在实际使用中,COUNT(*)是最常见的选择,适合大多数场景。COUNT(字段)则在需要排除NULL值时非常有用。

2024-08-30 11:00:50 322

原创 Java常用的加密方式

在Java开发中,常用的加密方式包括以下几种MessageDigest(消息摘要):Java提供了java.security.MessageDigest类来进行散列算法的使用。通过MessageDigest类可以计算数据的哈希值,例如使用SHA-256、MD5等算法对用户信息进行散列处理。AES(高级加密标准):AES是一种常用的对称加密算法,适用于保护用户敏感信息。Java中可以使用javax.crypto包下的相关类进行AES加密和解密操作。

2024-08-29 14:58:09 344

原创 RSA非对称加密

非对称加密通常以RSA算法为代表。对称加密的加密密钥和解密密钥相同, 而非对称加密的加密密钥和解密密钥不同,加密密钥可以公开而解密密钥需要保密。RSA(非对称加密):RSA是一种常用的非对称加密算法,用于加密和解密敏感信息。Java中可以使用java.security包下的相关类进行RSA加密和解密操作。RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛用于数据加密和数字签名。RSA算法依赖于两个大质数的数学难题,即质因数分解的困难性。

2024-08-29 14:45:10 494

原创 AES加密

AES(Advanced Encryption Standard)是一种对称加密算法,用于保护电子数据。AES是美国国家标准与技术研究院(NIST)于2001年采用的加密标准,广泛应用于各种加密应用场景。AES(高级加密标准):AES是一种常用的对称加密算法,适用于保护用户敏感信息。Java中可以使用javax.crypto包下的相关类进行AES加密和解密操作。GCM模式提供加密和消息认证功能,适合在需要保证数据完整性的场景中使用。2.2. AES加密与解密(GCM模式)

2024-08-29 14:41:09 174

原创 SpringBoot的条件装配

在实际的项目开发中,我们往往需要根据不同的环境做出不同的配置,例如:在开发环境下,我们会使用内存数据库以便快速启动服务并进行开发调试,在test环境、生产环境,会使用对应环境的数据库。如果我们的应用程序可以根据自身的环境做一些这样的适配,那么我们的程序开发无疑将更加灵活、高效。在过去的应用程序开发中,我们常常会将这些环境变量写在某个指定的配置文件中,每次服务器启动的时候,会读取服务器中指定的配置文件,从而实现根据不同的环境,应用程序能做出对应的适配。

2024-08-28 17:20:54 811

原创 《Clean Code《代码整洁之道》解读

编写整洁代码是一个过程:它需要不断地审视、修改和改进代码。通过坚持这些原则和实践,开发者可以编写出高质量、易于维护的代码。关注代码的细节:整洁代码的本质是对代码细节的关注。它不仅仅是为了让代码“工作”,更是为了让代码“好用”。整洁的代码文化:整洁的代码不仅是个人的追求,更需要团队文化的支持。团队成员应共同努力,维护代码库的整洁。《Clean Code》不仅提供了编写整洁代码的指南,更是一种职业素养的体现。通过实践这些原则,开发者可以不断提高代码质量,提升软件开发的整体效率。

2024-08-26 17:58:17 687

原创 SpringBoot之定时任务

Scheduled注解用于标注定时任务的方法。这个方法不能有返回值,而且不能接受参数。3.1 固定速率执行fixedRate参数用于定义任务以固定的时间间隔执行,不考虑任务的执行时间。@Component上述示例表示每5秒执行一次任务。3.2 固定延迟执行fixedDelay参数用于定义任务在前一次执行完成后,再等待指定的时间间隔后执行。@Component上述示例表示在上一次任务执行完成后等待5秒再执行。3.3 首次延迟执行。

2024-08-21 11:21:01 616

原创 《鸟哥的Linux私房菜 》解读

系统服务与进程管理:书中讨论了如何管理Linux系统中的进程和服务,包括如何查看系统资源使用情况,如何启动和停止服务,以及如何管理系统启动过程中的服务(init系统或systemd)。文件权限与属性:书中深入讲解了Linux文件系统中的权限模型,如何设置和修改文件和目录的权限,以及如何使用 chmod、chown、chgrp 等命令。安装与环境配置:书中提供了详细的Linux系统安装指南,涵盖了各种Linux发行版的选择,以及安装过程中需要注意的事项和常见问题的解决方法。

2024-08-15 14:26:34 596

原创 《人月神话》解读

人月神话》(The Mythical Man-Month)是由弗雷德里克·布鲁克斯(Frederick P. Brooks)编写的一本经典软件工程书籍,首次出版于1975年。这本书基于布鲁克斯在IBM 负责大型软件项目(如OS/360)的经验,总结了他对软件开发和项目管理的深刻洞察。尽管书中探讨的问题已经有几十年的历史,但其中的很多观点和教训至今仍然适用。《人月神话》这本书揭示了软件工程和项目管理中的诸多关键问题,如时间估算的复杂性、团队规模与沟通成本的关系、系统设计的挑战等。

2024-08-15 14:18:58 766

原创 《重构,改善既有代码的设计》解读

定义:重构是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。目的:使软件更容易被理解和修改,帮助找到并修复潜在的错误,提高编程速度,并促进团队合作。

2024-08-15 13:58:38 328

原创 Nginx详解

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。Nginx 是一款非常强大的 Web 服务器和反向代理服务器,其高效的事件驱动架构使其能够轻松处理高并发请求。通过灵活的配置文件,Nginx 可以满足多种需求,从简单的静态内容服务到复杂的负载均衡和反向代理。

2024-08-14 15:50:55 907

原创 Spring注入bean的几种方式

可以在配置类中使用 @ComponentScan 注解来自动扫描指定包下的所有 @Component,@Service,@Repository,和 @Controller 注解的Bean。在上面的配置中,Spring会自动将名为 engine 的 Engine Bean 注入到 Car Bean 中的 engine 属性,因为它们的类型匹配。在Spring中,通过XML配置文件来注入Bean的方式主要包括以下几种:构造器注入、Setter注入、接口注入和集合注入。构造器注入是通过构造函数来注入依赖的。

2024-08-13 15:26:53 911

原创 JVM调优分析工具和命令

是基于JAVA Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了JAVA程序的内存使用,堆和线程信息,类的分配状态和空间使用、检测死锁等;jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。,以便分析线程的状态和堆栈信息。profler:一个商业的vm分析工具,可以监视vm中的内存,线程,gc等信息,并提供一些高级功能如。

2024-08-13 14:12:52 785

原创 红黑树R-B Tree

红黑树(Red Black Tree)是一种自平衡的二叉查找树,在计算机科学中广泛使用,其典型的用途是实现关联数组。R-B Tree,全称是 Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)定义:红黑树是一种特殊的二叉查找树,它通过特定的操作(如旋转和重新着色)来保持树的平衡,从而获得较高的查找、插入和删除性能。

2024-08-13 11:13:13 712

原创 HashMap和Hashtable的区别

Hashtable的查找、插入和删除操作平均时间复杂度为O(1),但是在极端情况下,因为哈希冲突的原因,可能会退化到O(n)。HashMap中可以存储null值和null键,但是要注意,当使用null作为键时,由于无法调用null的hashCode()方法,因此只能将其放在哈希表的第一个位置,它们是无序的。由于HashMap采用链表和红黑树的数据结构,可以更好地处理哈希冲突,因此HashMap的查找、插入和删除操作都是常数时间O(1),它的性能相对于Hashtable更高。

2024-08-13 10:43:44 496

原创 HashMap和TreeMap的区别

HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,key的hash值是先计算key的hashcode值,然后再进行计算,每次容量扩容会重新计算所以key的hash值,会消耗资源,要求key必须重写equals和hashcode方法。

2024-08-13 09:44:00 676

原创 内存泄漏和内存溢出

内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少获取多次导致内存无法正常回收时,就会导致内存不够用,最终导致内存溢出。内存溢出:OOM指程序申请内存时,没有足够的内存供申请者使用 1M 实际要占用 2M 内存,就说分配的内。

2024-08-12 16:40:29 949

原创 Java性能调优

性能调优的策略Java 性能调优是一项综合性工作,需要从代码、JVM 配置、I/O、数据库、并发处理、缓存、部署等多个方面进行优化。通过合理的调优策略,可以显著提升应用的性能,确保系统在高负载下稳定、高效地运行。定期的性能监控和分析也同样重要,可以帮助快速定位和解决性能瓶颈问题。批量Java 性能调优是一项复杂且多层次的工作,涉及代码、JVM 配置、并发处理、内存管理等多个方面。

2024-08-12 13:51:15 959

原创 常用Java代码优化

Java 代码优化是一项持续的工程,需要根据具体的项目需求和场景进行权衡。通过合理的代码结构、性能调优、内存管理、I/O 优化、多线程优化和数据库操作优化,可以显著提升 Java 应用的可维护性和运行效率。在优化过程中,始终要考虑代码的可读性和可维护性,避免过早优化和不必要的复杂化。综上所述,Java代码优化是一个综合性的工作,需要从多个方面入手。通过合理的代码设计、算法选择、资源利用以及JVM配置等手段,可以显著提升Java应用程序的性能表现。避免重复代码:重构和提取公共代码。

2024-08-12 11:21:30 868

原创 Java函数式接口

Java函数式接口(Functional Interface)是Java 8引入的一个重要特性,它指的是那些有且仅有一个抽象方法的接口(但可以有多个默认方法或静态方法)。这一特性与Lambda表达式紧密相关,因为Lambda表达式可以作为函数式接口的实现。函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。

2024-08-12 10:09:20 1339

原创 Optional详解

java.util.Optional 是java8中引进的一个新的类,它可以对可能缺失的值进行建模,而不是直接将null赋值给量。它是用来规范我们开发的API,使其语义更加的明确,使用Optional修饰的对象,表示该对象可能为null。在一定程度上避免了空指针的问题。定义:Optional是一个可以为null的容器对象,它代表一个值存在或不存在。如果值存在,isPresent()方法会返回true,调用get()方法会返回该对象。目的:减少显式的空值检查,防止代码污染,使代码更加优雅、安全。

2024-08-12 09:04:32 872

原创 Spring Boot读取配置的几种方式

Spring Boot提供了多种灵活的读取配置方式,开发者可以根据项目的具体需求和场景选择合适的方式。@Value注解和@ConfigurationProperties注解是两种常用的注入配置值的方式,分别适用于单个属性注入和批量属性绑定。@ConfigurationProperties 可以将一组相关的配置绑定到一个 POJO 类中,非常适合处理复杂的配置结构。Environment 接口提供了一种以编程方式读取配置的方法,可以在任何 Spring 管理的 Bean 中使用。

2024-08-09 14:19:37 1317

原创 ServletContextListener监听常用场景

在某些情况下,可以在应用启动时动态注册 Servlet 或 Filter,而不是在 web.xml 文件中进行静态注册。@Override// 动态注册 Servlet@Override// 资源清理。

2024-08-09 13:59:51 490

原创 Feign和OpenFeign的区别

Feign和OpenFeign都是用于在Java中进行声明式HTTP请求的工具,但它们之间存在一些关键的区别。Feign:Feign是Netflix开源的一个轻量级HTTP客户端,它提供了一种简洁的、声明式的方式来定义和调用HTTP API。Feign通过Java动态代理来创建HTTP客户端,并基于注解来生成HTTP请求。OpenFeign:OpenFeign是Feign的升级版或扩展版本,它完全兼容Feign的API,但提供了更多的功能和扩展性。

2024-08-07 11:11:30 363

原创 Feign第一次调用为什么会很慢

Feign第一次调用慢的问题,是由初始化开销、DNS解析延迟、负载均衡器初始化、默认超时设置等多个因素共同作用的结果。通过预初始化、缓存DNS解析结果、优化连接池配置、调整超时设置、使用异步调用、开启Feign日志和GZIP压缩等策略,我们可以有效地提高Feign首次调用的性能,从而提升整个微服务架构的响应速度和稳定性。在实际应用中,我们需要根据具体场景和需求来选择合适的优化策略,并进行充分的测试和验证,以确保优化效果达到预期。

2024-08-07 11:04:20 852

原创 Java死锁问题排查解决

使用 Java VisualVM(简称 VisualVM)排查线上死锁是一个常见的实践,因为它提供了丰富的图形化界面,便于实时监控和诊断 Java 应用的运行情况。如果存在死锁,jstack 会在输出的末尾部分显示死锁相关的信息,包括哪些线程涉及以及它们正在等待哪些锁。使用线程转储(Thread Dump)线程转储 是诊断 Java 死锁的常用方法,可以查看所有线程的状态及其持有的锁信息。死锁,简单来说就是两个或者两个以上的线程在执行的过程中,争夺同一个共享资源造成的相互等待的现象。

2024-07-31 14:43:21 616

原创 并发编程Atomic详解

简单来说就是原子类来实现CAS无锁模式的算法java.util.concurrent.atomic包:是原子类的小工具包,支持在单个变量上解除锁的线程安全编程原子变量类相当于一种泛化的 volatile 变量,能够支持原子的和有条件的读-改-写操作。比如:AtomicInteger 表示一个int类型的值,并提供了 get 和 set 方法,这些 Volatile 类型的int变量在读取和写入上有着相同的内存语义。它还提供了一个原子的 compareAndSet 方法(如果该。

2024-07-31 11:41:23 653

原创 并发编程AtomicInteger详解

AtomicInteger 是 Java 并发包 (java.util.concurrent.atomic) 中的一个原子变量类,用于对 int 类型的变量进行原子操作。AtomicInteger 是 Java 并发编程中非常有用的工具,提供了高效的原子操作,避免了使用锁的开销和复杂性。在这个示例中,AtomicInteger 确保了在多线程环境中对计数器的并发更新是线程安全的。AtomicInteger 常用于实现无锁算法,提供高效的并发控制。用于实现高效的线程安全计数器,避免使用传统的同步方法。

2024-07-31 11:17:40 310

原创 并发编程AtomicBoolean详解

AtomicBoolean 是 Java 中的一种原子变量类,提供了对布尔值进行原子操作的能力。它是 java.util.concurrent.atomic 包的一部分,使用了 CAS(Compare-And-Swap)机制来实现无锁的并发控制。AtomicBoolean 是一种高效的原子变量类,适用于需要以线程安全的方式对布尔值进行操作的场景。例如,控制一个线程是否应该停止运行。在这个示例中,AtomicBoolean 用于控制任务的启动和停止,确保任务在并发环境下可以正确地控制其运行状态。

2024-07-31 11:01:37 377

原创 mysql死锁排查

Mysql 查询是否存在锁表有多种方式,这里只介绍一种最常用的1、查看正在进行中的事务2、查看正在锁的事务3、查看等待锁的事务4、查询是否锁表在发生死锁时,这几种方式都可以查询到和当前死锁相关的信息。5、查看最近死锁的日志解除死锁如果需要解除死锁,有一种最简单粗暴的方式,那就是找到进程id之后,直接干掉。查看当前正在进行中的进程// 也可以使用这两个命令找出来的进程id 是同一个 ,杀掉进程对应的进程 id kill id。

2024-07-31 09:08:05 1182

原创 Servlet详解(Servlet源码)

Servlet是运行在Web服务器或应用服务器上的小程序,它作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。Servlet能够接收来自客户端的基于HTTP协议的请求,并且对请求进行响应。Servlet是用来处理客户端请求并产生动态网页内容的Java类。通常Servlet特指HttpServlet,用来接受浏览器的访问请求,浏览器最常用的请求为GET和POST方式,还有其它五种,而HttpServlet分别有七个方法(PUT、DELETE、HEADER、TR

2024-07-30 18:54:06 648

原创 Jetty详解

Jetty是一个开源的、轻量级的Java Web服务器和Servlet容器,由Eclipse基金会维护。它被广泛用于嵌入式系统和开发环境,因其灵活性、高性能和嵌入能力而受到欢迎。Jetty是一款高性能、轻量级、灵活的Java Web服务器和Servlet容器,适用于各种规模的Web应用程序。其支持多种I/O模型和丰富的扩展功能,使其成为开发和生产环境中常用的服务器之一。通过合理配置和扩展,Jetty可以提供高效、可靠的Web服务。

2024-07-30 18:27:54 766

原创 Undertow详解

udertow是RedHAT红帽公司开源的产品,采用Java开发,是一款灵活,高性能的web服务器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默认Web容器。在javaweb容器的世界里,Tomcat和jetty是大众熟知的,undertow目前逐步进入大众的视角,它是一款能和tomcat媲美的神器,在性能方面吊打tomcat。目前Undertow已经成为springboot 默认集成的三大容器之一。

2024-07-30 18:20:53 1013

原创 tomcat详解

Apache Tomcat 是一个开源的 Java Servlet 容器,也是一个开源的 JSP 容器。它是目前最流行的 Java Web 容器之一,被广泛用于生产环境中。特点和功能:● 支持 Servlet 和 JSP 规范: Tomcat 提供了对 Java Servlet 和 JavaServer Pages(JSP)规范的完整支持,使开发人员可以使用 Java 编程语言构建动态 Web 应用程序。● 轻量级和可扩展性: Tomcat 是一个轻量级的 Web 容器,启动快速,占用资源少。

2024-07-30 18:15:42 1043

原创 Linux命令ps和jps

在使用 ps 命令时,可以结合不同的选项来获取所需的进程信息,例如结合 -ef 来获取所有进程的详细信息,结合 -u 来查看特定用户的进程等。ps 命令是管理进程和监视系统状态的重要工具,熟练掌握它能够帮助管理员和用户更好地了解系统上正在运行的进程情况,并进行必要的管理和调试。ps 是一个用于报告当前进程状态的常用命令,它可以显示在系统中正在运行的进程信息。ps 是一个用于报告当前进程状态的常用命令,它可以显示在系统中正在运行的进程信息。-l:输出应用程序的主类的全名或 JAR 文件的完整路径名。

2024-07-30 16:39:12 936

原创 系统信息和管理Linux命令

linux查看cpu信息查看内存使用情况free -m查看磁盘使用情况df -h查看内核、操作系统、cpu信息uname -auname:显示系统信息。uname -atop:实时显示系统进程。tophtop:改进版的top,需要单独安装。htopps:显示当前进程信息。ps auxdf:显示文件系统的磁盘空间使用情况。df -hdu:显示文件和目录的磁盘使用情况。free:显示内存使用情况。free -h。

2024-07-30 16:33:38 404

原创 权限管理linux命令

Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

2024-07-30 16:28:50 330

原创 权限管理linux命令

Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

2024-07-30 16:10:30 339

原创 网络管理linux命令

在Linux系统中,有许多常用的网络命令用于检查网络配置、诊断网络问题以及管理网络连接。

2024-07-30 16:00:35 275

空空如也

空空如也

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

TA关注的人

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