自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AOP代码中的三种形式(自定义切面类, 使用Spring的原生API进行AOP,注解)

AOP,全称Aspect Oriented Programming,即面向切面编程,是一种编程范式和架构模式。它是面向对象编程(OOP)的延续和发展,同时也是函数式编程的一种衍生范型。AOP通过预编译方式和运行期动态代理实现程序功能的统一维护,能够在不修改源代码的情况下,给程序动态统一添加功能。xml--proxy-target-class="true" 表示使用cglib代理.默认为false,创建有接口的jdk代理-->--切面:由切入点和通知组成-->--切入点 pointcut-->

2024-07-10 22:19:56 847

原创 SpringBoot防止重复提交 AOP+自定义注解+redis

在Web开发中,重复提交(也称为双重提交或重复表单提交)是指用户在没有明确意图的情况下,多次提交同一表单的情况。这可能是由于用户多次点击提交按钮、表单提交过程中的网络延迟导致用户重复点击、或者由于浏览器的自动重试机制(如在网络中断后恢复连接时)等原因造成的。这种情况可能造成数据库插入多条数据等等2.用一个小例子实现防止重复提交2.1// 可以定义一些属性,比如超时时间等// 默认60秒首先自定义一个注解,用来给方法设置多长时间内再次调用相同的数据,属于重复提交。

2024-07-10 20:19:59 189

原创 java中的静态代理,jdk动态代理,cglib动态代理

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。

2024-07-09 22:34:39 740

原创 反射的相关知识点

(1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到类对象之后,再通过类对象进行反编译,从而获取对象的各种信息。(2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁注意:反射可以获取到所有的类信息。

2024-07-09 21:31:59 338

原创 关于static定义初始化块和静态变量以及初始化块的执行顺序问题

第二步:在类加载的时候,按照从上到下执行static修饰的代码,此时执行static Test2 test1 = new Test2(),也就是创建出一个名为test1的对象。第六步:此时除了main方法,所有由static修饰的代码全部执行完毕(static修饰的代码只执行一次),类初始化完成,开始执行main方法,main方法中只有一条语句(中的代码,此时输出aa以及a的值(由于第一步没赋初值,并且给了默认值为0 所以输出0)//首先输出a的值为10 然后输出bb,最后将a的值定义为11。

2024-07-08 23:01:58 227

原创 java基础--128陷阱

当自动装箱时,如果值在这个范围内,Java会直接从缓存中返回对应的Integer对象,而不是创建一个新的对象。当Integer的值超出-128到127的范围时,每次自动装箱都会创建一个新的Integer对象。Java中的“128陷阱”指的是在比较两个Integer对象时,如果它们的值位于-128到127之间(包括-128和127),使用。low代表的就是-128 high代表的是127 而cache就是在-128~127范围内起到缓存作用的缓存数组。类型的自动装箱和缓存机制密切相关。运算符比较可能会返回。

2024-07-08 12:50:58 330

原创 spring boot的学习--Springboot的Web开发(3)

1.1 创建springboot应用,选中我们需要的模块1.2 springBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来1.3 自己编写业务代码顺便回顾下上一篇的自动装配这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?2 springBoot对静态资源的映射规则2.1 Springboot对静态资源的映射规则//可以设置和静态资源有关的参数,缓存时间等@Overrideif (!return;if (!

2024-07-06 18:18:39 1012

原创 Mybatisplus的雪花算法及代码生成器的使用

雪花算法(Snowflake)的使用背景主要源于高并发分布式系统环境下对唯一ID生成的需求。这种需求在像Twitter这样的社交媒体平台上尤为突出,因为Twitter需要处理每秒上万条消息的请求,并且每条消息都必须分配一个唯一的ID。这些ID不仅需要全局唯一,以跨机器、跨时间区分,还需要保持一定的顺序性(尽管不要求连续),以方便客户端排序和后续的数据处理。生成的代码可以设置一个单独的文件夹生成(然后再粘贴过来),但是包名要设置正确。公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的。

2024-07-06 17:05:34 598

原创 乐观锁和悲观锁

乐观锁(Optimistic Locking)和悲观锁(Pessimistic Locking)是两种常用的并发控制策略,它们在不同的应用场景下各有优势。这两种锁主要用于管理对共享资源的访问,以避免数据不一致的问题选择乐观锁还是悲观锁,主要取决于具体的应用场景和需求。如果写操作频繁,且对数据一致性要求极高,适合使用悲观锁;如果读操作远多于写操作,且对并发性能要求较高,适合使用乐观锁。

2024-07-06 16:26:53 368

原创 spring boot的学习--Springboot配置文件(2)

例如classpath:/config/和file:./config/都存在配置文 件 ,那么加载过程会加载classpath:/config/路径下配置文件的所有属性,然后再加载 file:./config/路径下配置文件的属性并替换已有的属性。2.1 springboot使用一个全局的配置文件,配置文件名是固定的(application.properties或者application.yml)这些组件的属性是从对应的properties。

2024-07-04 14:38:03 572 1

原创 spring boot的学习--Springboot入门(1)

简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;优点:快速创建独立运行的spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成war包,内嵌TomcatStarters自动依赖和版本控制大量的自动装配,简化开发,也可以修改默认值无需配置XML无代码生成开箱即用准生产环境的运行时应用监控与云计算的天然集成。

2024-06-28 16:34:20 738 1

原创 了解项目管理工具(Maven)

a.创建下列目录结构的文件夹(xxx为项目名称)1.约定的Maven项目目录为:--xxx--src--main--java //存放项目的.java文件--resources //存放项目资源文件,如spring, mybatis配置文件--test--java //存放所有测试.java文件,如JUnit测试类--resources //测试资源文件。

2024-03-10 10:43:25 886 2

原创 了解项目管理工具(Maven)

打开cmd输入,mvn -version指令如图显示代表成功。

2024-03-09 13:19:47 929 3

原创 了解项目管理工具(Maven)

Maven的介绍及使用

2024-03-08 11:03:27 893 2

原创 用栈实现迷宫问题

public class Queue {class Box{ public int i,j; //代表行,列 public int pre; //前驱的下标} Box data[] =new Box[100]; int front; //标识rear的前驱节点,表示此时正在便利的节点 int rear; //表示此时正在生...

2021-11-26 09:21:13 637

原创 背包问题(0/1背包问题)(一维数组回滚解法和二维数组解法)

1.(0,1)背包问题普通版(定义二维数组)采用动态规划System.out.println("请输入背包容量和数量");Scanner scanner=new Scanner(System.in);int n=scanner.nextInt(); // 容量int q=scanner.nextInt(); ///数量int arr[]=new int[q+1];//存储重量int brr[]=new int[q+1];//存储金额arr[0]...

2021-11-25 17:08:57 358

原创 排序二叉树的删除以及它的四种遍历

package demo2;public class BinaryTree { TreeNode root=null; int j=0; int arr[]=new int[100];public TreeNode getRoot() { return root; }//普通插入public void insert(Integer value) {//判空 TreeNode newTreeNode=new TreeNode(...

2021-07-14 23:30:18 141 2

原创 JAVA中的链表

链表是一种数据结构数据+节点形式package com.demo;public class LinkList {//定义一个链表的头节点 ListNode head = null;//链表的长度 public int Len(){ ListNode node=head; int length=0; if(head==null) { length=0; } while(n...

2021-07-12 16:26:50 122 2

原创 八大排序后四个(希尔排序,基数排序,堆排序,归并排序)

//希尔排序(希尔排序可以说成是选择排序的优化)public class Xr {public static void main(String[] args) { int[] arr={4,5,3,9,5,7}; xr(arr); System.out.println(Arrays.toString(arr));}public static void xr(int[] arr) { for(int gap=arr.length/2;gap>0;gap /=2) ...

2021-07-09 13:00:38 99 2

原创 八大排序前四个(冒泡,简单选择排序,插入排序,快速排序)

public static void main(String[] args) { int[]arr = {258,528,615,49,2,424,36,3,1,2}; System.out.println(Arrays.toString(arr)); mao(arr); xuan(arr); cha(arr); kuai(arr,0,arr.length-1); System.out.println(Arrays.toString(arr));}...

2021-07-06 22:40:09 113 2

空空如也

空空如也

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

TA关注的人

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