自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA切面编程简单实现

}/*** 切入点} /*** 增强处理主流程// 获取方法名 String methodName = pjp . getSignature() . getName();// 获取方法所属类 Class <?// 获取方法参数类型 Class <?// 获取方法 Method objMethod = classTarget . getMethod(methodName , par);

2023-05-30 10:33:03 330

原创 Java Map 总结

HashMap:基于哈希表实现,无序存储,键值对可以为null。查询、添加、删除操作都是O(1)的时间复杂度适用于非线程安全的场景。TreeMap:基于红黑树实现,有序存储,键值对不能为null。查询、添加、删除操作都是O(log n)的时间复杂度适用于需要排序的场景。LinkedHashMap:基于哈希表和双向链表实现,有序存储,可以按照插入顺序或者访问顺序排序,键值对可以为null。查询、添加、删除操作都是O(1)的时间复杂度适用于需要保持插入或访问顺序的场景。Concu

2023-08-03 10:40:54 278

原创 SpringBoot总结

SpringBoot的自动装配原理是通过自动扫描、自动配置、条件装配和读取命令行参数和配置文件等方式来实现的。这种方式极大地简化了开发人员的工作,提高了开发效率。

2023-07-31 10:30:40 327

原创 Spring Cloud 简单概括总结

Spring Cloud是一个用于构建分布式系统的开源框架,它基于Spring Boot构建,提供了一系列的工具和库,包括服务注册与发现、负载均衡、配置中心、断路器、消息总线等,帮助开发人员快速构建微服务架构的应用程序。Spring Cloud主要解决了分布式系统中的服务治理、配置管理、服务调用、服务熔断与降级等问题。它还提供了与多种云平台(如AWS、Azure、GCP、Aliyun等)和服务治理工具(如Consul、Zookeeper等)的集成支持,可以让开发人员更加轻松地构建和部署分布式系统。

2023-07-24 10:17:39 147

原创 Java调用HTTP接口

Java调用HTTP接口可以使用Java的HttpURLConnection或HttpClient等工具。

2023-07-20 15:37:06 2251

原创 事务相关总结

事务的隔离级别是指多个并发事务的隔离程度。在关系型数据库中,SQL标准定义了4种隔离级别,从低到高分别为读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。事务的隔离级别越高,对数据的访问和修改就越受限,对数据库系统的性能和并发性能的影响也越大。因此,在选择隔离级别时需要根据具体业务需求和系统性能要求进行权衡。

2023-06-26 10:20:44 124

原创 JVM总结

Java内存泄漏指的是在Java程序运行中,由于不当的内存管理,导致一些对象无法被垃圾回收机制及时释放,从而造成内存的浪费和泄漏,进而导致程序的性能下降或崩溃。为了避免Java内存泄漏,需要注意及时清理所有不再使用的对象和引用,并且要对程序进行规范化的内存管理。可以使用工具进行内存分析和检测,及时发现和修复内存泄漏问题。内存溢出指的是程序在运行过程中申请的内存超过了系统分配给该程序的内存大小限制,导致程序无法再分配到足够的内存空间而崩溃或异常退出。

2023-06-20 10:44:44 614

原创 缓存相关总结

前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。

2023-06-19 10:56:09 956

原创 开发中常用的锁总结

分布式锁是在分布式系统中使用的一种锁机制。在分布式系统中,多个节点同时访问共享资源可能会导致数据不一致或竞争条件。为了避免这种情况,需要引入分布式锁机制。分布式锁是一种保护共享资源的机制,它可以确保在任何时候只有一个节点可以访问共享资源。分布式锁的实现需要解决一些问题,例如锁的粒度、锁的超时、死锁等问题。因此,在实现分布式锁时需要仔细考虑这些问题,以确保分布式锁的正确性和可靠性。

2023-06-16 11:04:49 421

原创 JAVA反射总结

反射机制是指在运行时可以获取一个类的信息并操作该类的成员变量、方法、构造方法等的能力。Java反射机制是Java语言提供的一种动态机制,允许程序在运行时动态地获取类的信息并进行操作。通过反射机制,可以实现动态创建对象、动态调用方法、动态修改属性等操作。

2023-06-15 10:39:26 41

原创 循环依赖总结

循环依赖指的是在软件开发中,两个或多个模块之间相互依赖,形成一个环形依赖。例如,模块A依赖于模块B,而模块B又依赖于模块A,这样就形成了一个循环依赖。

2023-06-14 10:57:13 161

原创 IOC总结

IOC是一种编程思想和设计模式,它把程序控制流反转过来,将对象的创建、组装和管理交给了容器来完成。实现IOC的基本原理是反射机制和依赖注入,依赖注入是IOC的一种实现方式,通过容器动态地将依赖关系注入到对象中,从而实现对象之间的松耦合和可测试性。Spring框架是一个经典的IOC容器框架,它通过使用反射机制和依赖注入来实现IOC功能。Spring框架中的依赖注入方式包括构造函数注入、Setter方法注入、接口注入等,通过配置文件或者注解来描述对象之间的依赖关系。Spring框架中的IOC容器包括B

2023-06-13 11:25:08 46

原创 数据库索引

索引是一种数据结构,用于加速数据库的查询操作。索引通常基于B树或B+树数据结构实现索引可以大幅提高查询效率,但也会增加数据的存储空间和维护成本。因此,在建立索引时需要进行权衡。

2023-06-09 10:50:22 495

原创 进程间通讯

说明进程间通信是指不同进程之间进行数据交换和协同操作的方法。在操作系统中,每个进程拥有独立的地址空间和内存,无法直接访问其他进程的数据。因此,为了实现进程之间的数据共享和协同操作,需要使用各种进程间通信的机制,如管道、消息队列、共享内存、信号量等进程间通信可以分为同步和异步两种方式。同步方式是指进程之间必须按照某种协议和规则进行数据交换,等待对方响应后才能进行下一步操作;异步方式是指进程可以独立地进行数据交换和处理,不需要等待对方的响应分类管道消息队列共享内存信号量等本质进程间通

2023-06-08 15:49:11 31

原创 框架和架构

框架框架(Framework)是一种软件开发工具,它提供了一系列通用的代码库、函数、类、接口等,以及一组设计模式和最佳实践,帮助开发人员更快地搭建程序,降低开发成本和提高开发效率。框架通常包含多个模块和组件,开发人员可以根据自己的需求选择和组合这些模块和组件,从而完成具体的应用程序。框架通常具有高度的可定制性和可扩展性。架构架构(Architecture)则是指软件系统的整体结构和组成方式,包括各个模块之间的关系、数据流向、业务逻辑等方面。架构是一种高层次的设计思想,用于指导软件开发人员如

2023-06-07 10:46:15 123

原创 进程与线程

进程进程是操作系统中的一个基本概念,是指正在运行的一个程序在计算机上的执行状态。每个进程都有自己的地址空间、寄存器、堆栈等资源,并且可以被分配为一个或多个 CPU 时间片来执行。进程是计算机系统的基本单位之一,它可以与其他进程并发地执行,同时保证各个进程之间的独立性和安全性。每个进程都有自己的进程标识符(PID),用于在操作系统中唯一标识一个进程。操作系统通过进程调度算法来分配 CPU 时间片,使得多个进程能够共享 CPU 资源。进程间可以通过共享内存、信号、管道、套接字等 IPC(Inter

2023-06-06 10:27:03 203

原创 Shell

Shell 是一种命令行界面,它是 Linux 和其他 Unix 操作系统的一部分,是用户与操作系统内核交互的接口。Shell 编程是一种脚本编程语言,它使用 Shell 解释器解释执行脚本。Shell 编程语言的特点是简单易学,易于调试,可以快速完成多种任务。Shell 编程可以用于编写自动化脚本、系统管理脚本、Web 应用脚本、数据处理脚本等。Shell 脚本通常用于自动化任务和系统管理,例如文件管理、进程管理、网络管理等。Shell 脚本可以执行命令、控制流程、定义函数、读取输入、输出结果

2023-06-05 10:23:53 38

原创 JAVA面向对象设计

说明Java是一种面向对象的编程语言,面向对象设计是Java编程中非常重要的概念。面向对象设计的核心思想是将现实世界的事物抽象成一个个类,每个类有自己的属性和方法。在Java中,一个类就是一个对象的模板,它定义了该对象的属性和方法。面向对象分析的产出是详细的需求描述。面向对象设计的产出是类。原则封装(Encapsulation):将对象的属性和方法封装在一起,以保护对象的内部状态,只允许通过对象的公共接口进行访问。在Java中,使用访问修饰符来控制属性和方法的访问权限。继承(Inher

2023-06-02 10:56:31 658

原创 JAVA类与类之间的关系

继承关系(Inheritance):一个类可以通过继承另一个类获得其属性和方法。实现关系(Implementation):一个类可以实现一个或多个接口,从而获得接口中定义的方法。关联关系(Association):两个类之间的关系,其中一个类的对象可以拥有另一个类的对象。聚合关系(Aggregation):一种弱关联关系,表示整体与部分的关系,即一个对象包含多个其他对象。组合关系(Composition):一种强关联关系,表示整体与部分的关系,即一个对象由多个其他对象组成。依赖关系(Depend

2023-06-01 16:49:36 79

原创 JAVA接口和抽象类的区别

接口Java 接口是一种抽象的数据类型,它定义了一组抽象方法和常量,但没有实现任何方法的具体代码。接口可以被类实现,这样实现类就必须实现接口中定义的所有抽象方法。接口可以被其他接口扩展,这意味着它可以继承所有父接口的常量和抽象方法。接口通常用于定义多个类需要共享的行为或属性,以及为多态编程提供一种方式。Java 中的许多标准库类都实现了接口,例如 Comparable、Runnable 和 Serializable 接口。接口中的方法一定要被实现,可以是实现该接口的抽象类,也可以是继承了【实现

2023-05-31 11:20:23 479

原创 常用的七种设计模式

设计模式根据工作的目的,分为创建型模式、结构型模式和行为型模式三类。

2023-05-29 10:51:44 1079

原创 @PostConstruct & @PreDestroy

【代码】@PostConstruct & @PreDestroy。

2023-05-26 09:58:38 831

原创 Docker

说明Docker 是一种开源的容器化平台,它允许开发人员将应用程序、代码、依赖项和配置打包到一个容器中,从而实现轻松的开发、测试和部署。Docker 容器是轻量级、可移植和可重复使用的,它们可以在不同的环境中运行,包括本地、云、虚拟机、物理服务器等。Docker 容器是一种虚拟化技术,它与传统的虚拟机不同。传统的虚拟机是运行整个操作系统和应用程序的独立环境,需要占用大量的资源。而 Docker 容器共享主机操作系统的内核,因此更加轻量级和高效。Docker 是世界领先的软件容器平台,基于 Go 语

2023-05-25 10:56:22 1046

原创 XML配置文件

在上面的配置文件中,我们定义了一个名为helloWorld的bean,它的类是com.example.HelloWorld,且设置了一个名为message的属性,属性值为"Hello World!这个bean可以通过容器进行管理和注入到需要使用它的地方。

2023-05-24 10:56:45 1224

原创 常见的SQL优化

索引优化:通过创建合适的索引来加快查询速度。查询优化:使用合适的查询语句和查询条件,避免全表扫描。比如:避免使用SELECT *避免使用子查询避免使用OR操作符避免使用LIKE操作符使用LIMIT限制结果集大小优化查询语句的顺序数据库设计优化:通过优化数据库的表结构,减少不必要的冗余数据,提高查询效率。优化查询语句的执行计划:通过使用 EXPLAIN 等命令查看查询语句的执行计划,在必要时对其进行优化。缓存优化:使用缓存技术来减少数据库访问次数,提高查询效率。分区表优化:对大型

2023-05-23 10:19:44 443

原创 线程池相关总结

说明Java线程池是一种池化技术,它将多个线程放在一个线程池中,以便在需要时可以重复使用这些线程,从而节省了线程创建和销毁的开销。原理创建线程池:线程池被创建时,它会创建一组线程并将它们放入一个池中,这个池就是线程池。提交任务:当需要执行任务时,可以将任务提交给线程池,线程池会将任务放入任务队列中。从任务队列中获取任务:线程池中的线程会从任务队列中获取任务并执行它们。执行任务:线程池中的线程会执行任务并将结果返回给调用者。重复利用线程:当线程执行完任务后,它会返回线程池并等待下一个任务。

2023-05-20 09:10:10 483 1

原创 @RunWith

【代码】@RunWith。

2023-05-17 14:19:40 279

原创 ThreadLocal

ThreadLocal是什么ThreadLocal提供了线程隔离的局部变量,通过get( )和set( )方法操作当前线程对应的变量,而且不会和其他线程冲突,实现了基于线程的数据隔离ThreadLocal这个类提供线程本地的变量。这些变量与一般正常的变量不同,它们在每个线程中都是独立的。ThreadLocal实例最典型的运用就是在类的私有静态变量中定义,并与线程关联set()方法的原理是什么set()方法是ThreadLocal的核心逻辑,当使用时主要分三步实现:获取当前线程获取Threa

2022-05-01 21:03:12 931

原创 maven依赖jar包时版本冲突的解决

1、第一声明优先原则在pom.xml配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。所以,先声明自己要用的版本的jar包即可。所以,添加新依赖时要放在最后边,以防止新依赖替换原有依赖造成版本冲突。2、路径近者优先直接依赖优先于传递依赖,如果传递依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖jar,即可解决冲突。3、排出原则传递依赖冲突时,可以在不需要的jar的传递依赖中声明排除,从而解决冲突。<dependency> &

2022-03-20 17:20:31 6243 1

原创 @RequestBody实验总结

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的,即@RequestBody接收的是请求体里面的数据。@Target({ElementType.PARAMETER})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RequestBody { boolean required() default true;}最常用的使用请求体传参的无疑是POST请求了,使用@RequestB.

2022-03-13 14:59:42 736

原创 @RequestMapping 的 method 属性挖掘

从Spring4.3开始引进了`@GetMapping、@PostMapping、@PutMapping、@DeleteMappin,来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。日常开发中,当决策具体的接口该使用哪个时不够清晰,于是深入挖掘一下他们之间的区别和联系。先来了解一下@RequestMapping,在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求。@Target({ElementType.TYPE,

2022-03-06 16:39:03 1093

原创 maven包版本维护

maven包版本维护日常开发中,难免会修改代码的一些逻辑或处理。当修改的代码位于项目底层并对外提供二方包服务时,引用该二方包的项目所对应的版本是否同步修改升级,这取决于交互是否有变动:第一种情况,只修改了业务处理的逻辑,并不涉及请求和响应的变动,此时不需要升级,只需将新的逻辑代码提交发布运行起来即可。第二种情况是修改了交互,此时必须得升级依赖版本并更新到依赖此底层服务的上层项目上。 <dependency> <groupId>com.

2022-02-27 17:05:40 498

原创 PHP入门

环境搭建安装phpStudyphpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。可在官网下载https://www.xp.cn/安装创建一个新的网站...

2021-04-08 10:12:00 77

原创 Git

Git是什么Git是一个开源的分布式版本控制系统,用于敏捷高效地管理项目,是目前最先进版本控制系统。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git与曾经常用的集中式版本控制工具CVS、SVN等不同,它分布式版本库的方式。GitHub是目前全球最大的Git开源资源库,地址是https://github.com/,这是程序员的聚宝...

2021-03-05 15:11:00 172

原创 CSS

文本溢出word-break 自动换行word-break: normal|break-all|keep-all;normal 使用浏览器默认的换行规则。break-all 允许在单词内换行。keep-all 只能在半角空格或连字符处换行。white-space 设置或检索对象内文本显示方式,通常用于强制一行显示。normal 默认。空白会被浏览器忽略。now...

2021-03-04 17:18:00 73

原创 GitLab

重启命令gitlab-ctl reconfiguregitlab-ctl restart

2021-03-04 17:14:00 61

原创 JAVA_HOME is not defined correctly

JAVA_HOME环境变量版本就算配错,java命令也不受影响,但是依赖于jdk的其他应用会报错。

2021-03-04 17:07:00 424

原创 MySql常用命令

修改某表的某记录的某字段数据UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;修改表名ALTER TABLE `旧表名` rename `新表名` comment '表备注';修改表字段数据类型ALTER TABLE `表名` MODIFY COLUMN `字段名` 新数据类型;修改字段名ALTER TABLE 表名 CHANGE ...

2021-03-04 17:01:00 55

原创 Maven

我们在开发一个Java项目的过程中需要依赖一些框架或组件的jar包,如果我们手动导入这些jar包,就需要我们清楚知道需要哪些jar包。例如SSH(SSM)框架,必须将其依赖的几十个jar包依次找出来并手动导入,非常繁琐。另外,导入的jar包通常还会依赖其他第三方jar包,一样需要手动将其导入,并不断重复这个过程,直到全部导入。在这个过程中,还可能会出现不同jar包依赖于一个同名的jar包,但版本...

2021-03-04 16:09:00 120

原创 IDEA之代码格式化

配置可在code style更改Include subdirectories包含子目录Optimize imports使导入最优化Rearrange entries重新整理条目(函数,方法顺序重新排列)Only VCS changed text只格式未提交代码Cleanup code清理代码(会在末尾自动加分号)...

2021-03-04 12:08:00 126

空空如也

空空如也

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

TA关注的人

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