自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 前后端交互,后端跨域访问配置

跨域访问的话,在后端,也就是java层面,我们可以定义一个配置类,实现WebMvcConfigurer这个接口,重写addCorsMappings这个方法。

2023-12-19 10:06:45 372

原创 自定义登录逻辑

先使用测试类来进行测试,通过MD5进行加密。运行会报错,因为需要密码解析器。

2023-12-03 11:01:24 405

原创 在SpringBoot中集成SpringSecurity

密码:idea中自动生成的。

2023-12-03 10:15:58 383

原创 过滤器(Filter)

【代码】过滤器(Filter)

2023-11-23 21:00:31 368

原创 mybatis之级联查询

select="com.yan.mapper.EmpMapper.findAllEmpByDeptNO" 要调用的另一个的sql语句。fetchType="eager" 积极加载 lazy 是懒加载。jdbcType="INTEGER" 传入参数的数据库的类型。javaType="list" 对应的类型。column="deptno" 传入的参数。* 根据deptno 查询部门信息。* 根据部门号查询多个 员信息。--级联查询的方式-->

2023-11-21 15:02:35 71

原创 多表查询之一对一、一对多、多对多

实体类的建立。

2023-11-21 13:31:23 38

原创 实现一个容器,提供两个方法,add(),size() 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数为5时,线程2 给出提示并结束。

【代码】实现一个容器,提供两个方法,add(),size() 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数为5时,线程2 给出提示并结束。

2023-11-21 09:51:06 20

原创 SSM框架的整合

- 包含 beans、core、expression、aop 等依赖-->-- 自动加载 Spring 工厂、支持文件上传等-->-- 封装 jdbc 、包含 spring-tx 事务管理依赖-->-- 动态代理 -->-- springmvc 核心依赖 -->-- mybatis-spring 整合依赖 -->-- mysql 驱动 -->-- 数据库连接池 -->-- json 格式转换-->

2023-11-20 22:07:45 17

原创 MyBatis-Plus 代码生成器

-代码生成器-->

2023-11-17 22:28:46 43

原创 MyBatis-Plus中的分页查询

【代码】MyBatis-Plus中的分页查询。

2023-11-17 22:19:02 17

原创 基于Wrapper查询

【代码】基于Wrapper查询。

2023-11-17 22:10:57 57

原创 MyBatis-Plus 环境的搭建

【代码】MyBatis-Plus 环境的搭建。

2023-11-17 14:13:56 41

原创 MyBatis-Plus 中的CRUD方法

【代码】MyBatis-Plus 中的CRUD方法。

2023-11-17 14:00:16 26

原创 单例模式(DCL)

在 Java 开发中,单例模式是一种常用的设计模式,其目的是确保某个类只有一个实例。DCL(double-checked locking) 是一种线程安全的单例模式。

2023-11-16 13:46:26 58 1

原创 Spring AOP的实现

AOP 面向切面编程,可以在不修改现有代码的情况下,对程序的功能进行拓展,,主要可以用来AOP实现的原理就是,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理。

2023-11-16 13:29:32 30 1

原创 Cglib动态代理

面向父类 解决了JDK 动态代理的缺点与不足。--这个里面包括了所需的jar包-->3 只能读取接口中方法的上注解。1 必须有接口和实现类。2 增强接口中定义的方法。要依赖第三方JAR包。

2023-11-14 10:16:12 22 1

原创 JDK动态代理

在不修改原有代码的基础之上,通过代理对象来增强相对应的方法,从而达到扩展的功能,同时 也满足了开闭原则,对扩展开放,对修改关闭。JDK动态代理,一定要有接口和实现类的存在。代理对象只能增强接口中定义的方法 实现类中其他和接口无关的方法是无法增强的。代理对象只能读取到接口中方法上的注解 不能读取到实现类方法上的注解。

2023-11-13 21:00:00 41

原创 线程中常用的方法

结果: 三、线程的优先级cpu调度线程的优先级有1 - 10 这10个级别。四、线程的礼让通过Thread类中的静态方法 yield()来实现注: yield() 方法释放了cpu,但是不释放锁资源通过Thread类中的静态方法sleep() 实现的注:sleep() 方法不释放锁,释放cpujoin 方法 释放锁,抢占CPU1. 如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。2.

2023-11-13 15:37:24 16

原创 线程的六种状态

有六种状态,我们可以画张图来清晰的表示。

2023-11-12 23:01:42 23 1

原创 代理模式和静态代理

静态代理中代理类与被代理类都需要实现同一个接口。必须事先知道要代理的类,并且要知道面向那个接口来实现的。在实际开发中,有很多的类需要被代理,并且实现并不能知道要代理那个类,所以继续使用静态代理的话,工作量会增加,效率低,代码复用率不好。是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计等功能。

2023-11-12 14:50:35 20 1

原创 线程的基础概念

根本区别,线程是程序执行的基本单位,进程是操作系统进行资源调度和分配的基本单位。是程序执行的基本单位,多个线程共享资源,操作系统进行运算调度的最小单位。CPU在极短的时间内,反复切换执行不同的线程,看似好像是并行,但是只是CPU高速的切换。资源方面,进程之间的资源是相互独立的,线程之间的资源是相互共享的。开销方面 ,进程的创建、销毁、调度开销大,线程的话,开销小。上下文切换,进程的话,速度比较慢,线程的话 ,速度比较快。一个进程,包含多个线程。1.线程越多,占用内存越多,上下文切换时,额外的耗费资源。

2023-11-10 16:03:39 19 1

原创 线程的创建方式

【代码】线程的创建方式。

2023-11-10 13:24:16 19 1

原创 二、Shiro框架的基本使用(二)

我们可以仿照JdbcRealm来实现一个自定义的Realm对象。......JdbcRealm 继承了 AuthorizingRealm下面是自定义Realm实现的步骤。

2023-11-10 09:23:03 22 1

原创 二、Shiro框架的基本使用(一)

超级管理员=user:add,user:delete,user:update。实现权限校验时,库表设计方案, 经典五张表(用户认证,授权)admin=admin,超级管理员,管理员,普通用户。注:在实现权限校验时,必须先开启,默认是false。基于文件存储用户名、密码,角色等信息,支持。创建maven项目,添加如下依赖。代码测试:(认证和角色校验)shiro.ini文件。实际上使用三张表也可以。

2023-11-07 22:07:32 23

原创 一、shiro框架的介绍

shiro框架是基于Java实现的,最核心的功能是认证和授权。

2023-11-07 21:28:27 23

原创 JDK中自带的线程池

核心线程数一个,最大线程数一个,生存时间的0,单位是毫秒 ,使用的任务队列是。不适合并发,可能会引起I/O阻塞,影响线程相应的操作。一、newSingleThreadExecutor(

2023-11-05 22:53:36 44

原创 CAS实现原理

在多线程的环境下,在某一个线程执行时,先读取这个值E,在这个线程执行的过程中算出新值,然后,这个线程读取到的旧值和原本的旧值做比较,看值是否发生改变。若相等,则说明这个线程在执行中,其他线程不能执行这部分代码。在内部调用了CompareAndSwapInt()方法,后面是native方法。刚开始是5,中间状态是8,最终结果是5。ABA 问题,主要是指其他线程修改数据后,在把数据修改成和程序未执行前的旧值是一样的。lock cmpxchg 指令 来实现的。我们可以清楚的看到,CAS的操作原理。

2023-10-13 22:40:08 19

原创 在排序数组中查找元素的第一个和最后一个位置

1.先进行二分查找,看要找的数是否在数组里,如果在,进行下一步处理,不在,返回-1,在主函数里直接返回{-1,-1}即可。2.这个数在数组里,以这个数为中心,找这个数的最左边界和最右边界。

2023-04-06 22:46:58 48 1

原创 两数之和的解法

具体解法:判断target-nums[i]是不是在map,如果在map里,直接返回对应的下标值。否则,将这个数添加到map集合中。如果上述条件不成立,返回空。两次循环,nums[i]+nums[j]==target;用这个条件判断,并且输出即可。第二种解法 用Map集合。第一种解法(暴力法)

2023-04-02 18:49:48 264 1

begin.vue

begin.vue

2022-12-01

空空如也

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

TA关注的人

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