- 博客(54)
- 收藏
- 关注
原创 Vue的常用指令
指令是 Vue 提供的带有的 特殊 标签。vue 中的指令按照不同的用途可以分为如下 6 大类:内容渲染指令(v-html、v-text)条件渲染指令(v-show、v-if、v-else、v-else-if)事件绑定指令(v-on)属性绑定指令 (v-bind)双向绑定指令(v-model)列表渲染指令(v-for)
2025-01-03 20:11:26
574
原创 GC垃圾回收
它的核心是从一系列被称为 “GC Roots”(垃圾收集根节点)的对象开始,通过引用关系向下遍历对象图,那些能够沿着引用链到达的对象被认为是存活对象,而无法通过任何引用链到达的对象则被判定为垃圾对象。本地方法栈与虚拟机栈非常相似,也是线程私有的,它主要用于为虚拟机使用到的 Native 方法(即通过 Java 以外的语言,如 C 或 C++ 编写的方法,一般用于访问底层系统资源等)服务,存储 Native 方法执行过程中的局部变量表、操作数栈、动态链接、方法出口等信息。)时,计数器的值就减 1。
2024-12-30 01:21:59
814
原创 Wapper
上图绿色框为抽象类abstract蓝色框为正常class类,可new对象 黄色箭头指向为父子类关系,箭头指向为父类Wrapper : 条件构造抽象类,最顶端父类AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件QueryWrapper : Entity 对象封装操作类,不是用lambda语法UpdateWrapper : Update 条件封装,用于Entity对象更新操作。
2024-12-20 10:25:30
1093
原创 Mybatis-Plus基础
简介(简称 MP)是一个的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作,BaseMapper强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求,简单的CRUD操作不用自己编写。支持 Lambda 形式调用。
2024-12-20 10:24:28
825
原创 SpringBoot02
热部署,就是在应用正在运行的时候升级软件(增加业务/修改bug),却不需要重新启动应用大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的 Class 文件,这个文件里记录着和代码等对应的各种信息,然后 Class 文件将被虚拟机的 ClassLoader 加载。
2024-12-20 10:23:00
933
原创 SpringBoot01
在搭建Spring Boot项目环境时,程序启动后会在控制台打印醒目的SpringBoot图标,图标描述了Spring Boot 版本信息,这是Spring Boot项目与Spring项目启动区别较大的地方,Spring Boot通过默认Banner在程序启动时显示应用启动图标,当然图标我们也可以进行自定义。Banner图标自定义。
2024-12-20 10:02:56
1109
原创 Mybatis——(4)
MyBatis Generator生成的文件包含三类:Model实体文件,一个数据库表对应生成一个 Model 实体。Mapper接口文件,数据数操作方法都在此接口中定义。Mapper XML配置文件。Mybatis最初配置信息是基于XML,映射语句(SQL)也是定义在 XML 中的。而到了MyBatis3提供了新的基于注解的配置。使用注解开发方式,可以减少编写 Mapper 映射文件。
2024-12-16 09:33:10
617
原创 Mybatis——(3)
作用:将查询结果按照SQL列名与实体类属性名一致性映射到实体类对象中。场合:常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到实体类中,在前端页面遍历list(list中是实体类)即可。需要查询关联信息时,使用MyBatis延迟加载特性可有效的减少数据库压力,首次查询只查询主要信息,关联信息等用户获取时再加载。懒加载针对级联使用的,懒加载的目的是减少内存的浪费和减轻系统负担。
2024-12-16 09:26:19
881
原创 Mybatis——(2)
开发中通过实体类或pojo类型传递查询条件,查询条件是综合的查询条件,不仅包括实体类中查询条件还包括其它的查询条件,这时可以使用包装对象传递输入参数。//当前页码//每页条数//总页数: 总记录数/每页条数,除不尽+1//总记录数/*** mysql* 起始偏移量:(当前页码-1)*每页条数*//*** oracle* 起始条数:(当前页码-1)*每页条数+1* 结束条数: 当前页码*每页条数*/
2024-12-16 09:13:54
917
原创 链式设计模式
链式编程是一种将多个方法调用连在一起的编程风格。在链式编程中,每个方法的返回值都是一个对象,可以继续调用该对象的其他方法。这种方式使得代码看起来更加流畅,减少了临时变量的使用,提高了代码的可读性和可维护性。链式编程的特点有以下几点:每个方法的返回值都是一个对象,可以继续调用该对象的其他方法。方法的调用顺序可以任意调整,只要保证方法之间的依赖关系正确即可。链式编程可以嵌套使用,即在一个方法中调用另一个方法,形成多层的链式调用。
2024-12-07 18:22:38
883
原创 Mybatis——(1)
parameterType:指定输入参数类型,MyBatis通过OGNL从输入对象中获取参数值设置在Sql中。resultType:指定输出结果类型,MyBatis将Sql查询结果的一行记录数据映射为resultType指定类型的对象。
2024-12-06 10:48:42
870
原创 SpringMVC ——(2)
SpringMVC 中的 Interceptor 拦截器也是相当重要和相当有⽤的,它的主要作⽤是拦截⽤户的请求并进⾏相应的处理。⽐如通过它来进⾏权限验证,或者是来判断⽤户是否登陆等操作。对于 SpringMVC 拦截器的定义⽅式有两种:
2024-12-05 16:27:02
717
原创 SpringMVC ——(1)
RequestBody接受的是⼀个 json 格式的字符串,⼀定是⼀个字符串。Spring MVC框架也是⼀个基于请求驱动的Web框架,并且使⽤了前端控制器模式(是⽤来提供⼀个集中的请求处理机制,所有的请求都将由⼀个单⼀的处理程序处理来进⾏设计,再根据请求映射规则分发给相应的⻚⾯控制器(动作/处理器)进⾏处理。该注解⽤于将 Controller 的⽅法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写⼊到 Response 对象的 body 数据区。
2024-12-05 16:05:00
1877
原创 Spring 邮件发送
要求服务器接收新消息,在⽤户请求时发送到⽤户⼿中,还要在每个⽤户的多个⽂件夹中维护消息。这样虽然能将消息集中备份,但随着⽤户⻓期的邮件夹越来越⼤,到磁盘空间耗尽时,每个⽤户都会受到损失。对收发邮件进⾏了⾼级的抽象,形成了⼀些关键的的接⼝和类,它们构成了程序的基础,下⾯我们分别来了解⼀下这些最常⻅的对象。之类的程序中,它们能记住⼀些事,诸如最近⼀次收到的邮件,还能计算出有多少是新的。,它可以⽅便地执⾏⼀些常⽤的邮件传输,不同的⼚商可以提供⾃⼰的实现类。是⼀个很容易被误解的类,这归咎于混淆视听的类名。
2024-12-03 15:15:55
794
原创 Spring Task 定时任务
这在你需要指定这两个字段中的某⼀个值⽽不是另外⼀个的时候会被⽤到。其简单易⽤,但是对于复杂的定时规则⽆法满⾜,在实际项⽬开发中也很少使⽤到。它表示为基于相关的⽇历所计算出的值(如果有)。则具备前两者的优点(功能强⼤且简单易⽤),使⽤起来很简单,除。相关的包外不需要额外的包,⽽且⽀持注解和配置⽂件两种形式。指定确定的列表或者范围⾮常重要,否则你会被结果搞糊涂的。新建类,添加⾃动注⼊的注解,定义定义任务的⽅法。字段的值为单独的⼀天⽽不是⼀系列值的时候。字段来说合法的字符都不是⼤⼩写敏感的。
2024-11-29 18:00:15
689
原创 Spring JDBC 和 事务控制——(2)
3持久层账户模块操作(操作)当完成环境集成后,这⾥使⽤完成账户单表crud 操作3.1.账户接⼝⽅法定义3.1.1.定义实体类Accountjava3.1.2.定义接⼝类IAccountDaojava3.1.3.定义接⼝实现类3.2.账户记录添加实现在企业项⽬开发时,对于记录的添加可能涉及到多种添加⽅式,⽐如添加单条记录,批量添加多条记录等情况。这⾥对于账户记录添加⽅式分为三种⽅式:添加单条记录返回受影响⾏数、添加单条记录返回主键、批量添加多条记录。
2024-11-28 16:33:24
867
原创 Spring JDBC 和 事务控制——(1)
由于建⽴数据库连接是⼀个⾮常耗时耗资源的⾏为,所以通过连接池预先同数据库建⽴⼀些连接,放在内存中,应⽤程序需要建⽴数据库连接时直接到连接池中申请⼀个就⾏,⽤完后再放回去。当空闲的连接数少于阀值时,连接池就会预申请⼀些连接,以避免洪峰来时再申请⽽造成的性能开销。当经过⼀个⾼峰时间后,连接池可以将已经⽤不到的连接慢慢释放⼀部分,⼀直减少到。通⽤的测试环境,需要使⽤环境的直接继承类即可。指定连接池的初始化连接数。定义⼀个⽗类,设置通⽤的配置信息。指定连接池中保留的最⼤连接数。指定连接池中保留的最⼩连接数。
2024-11-28 16:03:01
971
原创 SpringAOP
对于每个类做⽇志处理,并引⽤⽬标类,但是如果待添加⽇志的业务类的数量很多,此时⼿动为每个业务类实现⼀个装饰器或创建对应的代理类,同时代码的耦合度也加⼤,需求⼀旦改变,改动的⼯程量也是可想⽽知的。切⼊点与通知的结合,决定了切⾯的定义,切⼊点定义了要拦截哪些类的哪些⽅法,通知则定义了拦截过⽅法后要做什么,切⾯则是横切关注点的抽象,与类相似,类是对物体特征的抽象,切⾯则是横切关注点抽象。是针对类来实现代理的,它的原理是对指定的⽬标类⽣成⼀个⼦类,并覆盖其中⽅法实现增强,但因为采⽤的是继承,所以不能对。
2024-11-25 09:48:08
569
原创 SpringIOC——(3)
使⽤构造注⼊可以在构建对象的同时⼀并完成依赖关系的建⽴,对象⼀建⽴则所有的⼀切也就准备好了,但如果要建⽴的对象关系很多,使⽤构造器注⼊会在构建函数上留下⼀⻓串的参数。注解的配置,可以简化配置⽂件,提⾼开发的速度,使程序看上去更简洁。对于我们的程序来说,⽆状态对象没有实例变量的存在,保证了线程的安全性,⽐如对于每个⽤户⼀般会有⼀个会话,该⽤户的⽤户信息需要存储到会话中,此时可以将该。注⼊可以有明确的名称,可以了解注⼊的对象会是什么,像。容器初始化时被实例化的,但也不是不可改变的,可以通过。
2024-11-25 09:28:42
835
原创 SpringIOC——(2)
配置⽂件加载(了解)4.1.Spring配置⽂件加载spring.xml?xml"UTF-8"?<beansxmlnsxmlns:xsig<beanidclass></bean>/beans>4.1.1.根据相对路径加载资源Aacnewxt4.1.2.根据绝对路径加载资源AacnewFoml"4.2.Spring多配置⽂件加载Spring框架启动时可以加载多个配置⽂件到环境中。
2024-11-25 08:59:57
714
原创 SpringIOC——(1)
进⾏实例化(这⾥模拟的⽐较简单,仅⽤于帮助⼤家理解),同时通过上下⽂对象提供的。// userService代表的是配置⽂件中bean。// 得到实例化对象。// 通过指定语法解析⽂档对象,返回集合。⽂件,并拷⻉官⽹⽂档提供的模板内容到。⼯⼚接⼝实现类,解析配置⽂件,实例化。、通过指定语法解析⽂档对象,返回集合。// 通过类的全路径实例化对象。加载配置⽂件,获取实例化对象。、通过构造器得到相关配置⽂件。、通过构造器得到相关配置⽂件。、判断集合是否为空,遍历集合。
2024-11-18 09:59:27
548
原创 JavaScript——(4)
监听” 顾名思义,就是让计算机随时能够发现这个事件发生了,从而执行程序员预先编写好的一些程序。设置事件监听的方法主要有onxxx和两种,二者的区别将在 “事件传播” 一课中介绍。原始的事件处理方法:“直接通过事件绑定函数”比如:">点击</button>function add() { alert("相加");以上方式不推荐使用!!!事件处理函数提供一个形式参数,它是一个对象,封装了本次事件的细节。这个参数通常用单词event或字母e来表示。// 对象 e 就是这次事件的“事件对象”
2024-11-05 11:08:26
423
原创 JavaScript——(3)
/ 定义一个长度为 4 的数组,但是这 4 项都是 undefined两种定义方法根据实际需求选择即可,两者的底层都是同样的实现逻辑。推荐:方括号定义法!函数就是语句的封装,可以让这些代码方便地被复用。函数具有 “一次定义,多次调用” 的优点。使用函数,可以简化代码,让代码更具有可读性。和变量类似,函数必须先定义然后才能使用。使用function关键字定义函数。function:函数、功能。【方式 1函数声明// 函数语句块function:定义函数的关键字fun。
2024-11-05 10:27:37
889
原创 Redis数据库测试和缓存穿透、雪崩、击穿
Redis数据库测试实验1.新建一张user表,在表内插入10000条数据。2.①通过jdbc查询这10000条数据,记录查询时间。②通过redis查询这10000条数据,记录查询时间。3.①再次查询这一万条数据,要求根据年龄进行排序,mysql和redis各实现一次。4.上面排序后的前5人可进行抽奖,每人有一次抽奖机会,抽奖奖品随意设计,抽奖方式通过redis实现。
2024-11-05 09:05:28
993
原创 JavaScript——(1)
补充:关键字解释var早期ECMAScript5中用于变量声明的关键字letECMAScript6中新增的用于变量声明的关键字,相比较var,let只在代码块内生效const声明常量的,常量一旦声明,不能修改在js中声明变量还需要注意如下几点:JavaScript 是一门弱类型语言,变量可以存放不同类型的值。变量名需要遵循如下规则:组成字符可以是任何字母、数字、下划线(_)或美元符号($)数字不能开头建议使用驼峰命名要想使用变量,第一步就是声明它,并给它赋值。
2024-11-01 14:15:50
927
原创 HTML && CSS
HTML:HyperText Markup Language,超文本标记语言。超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。标记语言:由标签构成的语言HTML标签都是预定义好的。例如:使用 标签展示标题,使用展示超链接,使用展示图片,展示视频。HTML代码直接在浏览器中运行,HTML标签由浏览器解析。Cascading Style Sheet,层叠样式表,用于控制页面的样式(表现)。
2024-10-31 15:02:05
1921
原创 JDBC——(3)
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。API介绍:工具类:org.apache.commons.dbutils.DbUtils总结@Testtry {//1.获取连接的操作(//① 手写的连接:JDBCUtils.getConnection();//② 使用数据库连接池:C3P0;DBCP;Druid。
2024-10-21 10:05:49
958
1
原创 JDBC——(2)
事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。为确保数据库中数据的一致性。
2024-10-21 09:56:06
913
原创 JDBC——(1)
把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,()使用这些类库可以以一种标准。
2024-10-21 09:48:13
716
原创 MySQL数据库操作——(4)
视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给他。再比如,人员薪酬是个敏感的字段,那么只给某个级别以上的人员开放,其他人的查询视图中则不提供这个字段。刚才讲的只是视图的一个使用场景,实际上视图还有很多作用。最后,我们总结视图的优点。1. 操作简单。
2024-10-21 09:28:46
1042
原创 MySQL数据库操作——(3)
多表查询:查询时从多张表中获取所需数据单表查询的SQL语句:select 字段列表 from 表名;那么要执行多表查询,只需要使用逗号分隔多张表即可,如: select 字段列表 from 表1, 表2;查询用户表和部门表中的数据:SQL语句中嵌套select语句,称为嵌套查询,又称子查询。子查询外部的语句可以是insert / update / delete / select 的任何一个,最常见的是 select。根据子查询结果的不同分为:标量子查询(子查询结果为单个值[一行一列])
2024-10-21 08:53:55
698
原创 MySQL数据库操作——(2)
与ATAN(X)函数相比,ATAN2(M,N)需要两个参数,例如有两个点point(x1,y1)和point(x2,y2),使用ATAN(X)函数计算反正切值为ATAN((y2-y1)/(x2-x1)),使用ATAN2(M,N)计算反正切值则为ATAN2(y2-y1,x2-x1)。insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
2024-10-14 14:37:47
826
原创 MySQL数据库操作——(1)
ERROR 1451 (23000): Cannot delete(删除) or update(修改) a parent row(父表的记录): a foreign key constraint fails (`atguigudb`.`emp`, CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`deptid`) REFERENCES `dept` (`did`)) #部门表did的1001字段已经被emp引用了,所以部门表的1001字段就不能修改了。#查看某个表的约束名。
2024-10-12 16:04:55
625
原创 基础进阶技术
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。为了间接的表示一些固定的值,Java就给我们提供了枚举 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内格式枚举项1,枚举项2,枚举项3;注意: 定义枚举类要用关键字enum示例代码// 定义一个枚举类,用来表示春,夏,秋,冬这四个固定值。
2024-08-28 20:01:56
904
原创 集合框架-
Collection集合概述是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现创建Collection集合的对象多态的方式具体的实现类ArrayListCollection集合常用方法方法名说明添加元素从集合中移除指定的元素根据条件进行移除清空集合中的元素判断集合中是否存在指定的元素判断集合是否为空int size()集合的长度,也就是集合中元素的个数。
2024-08-26 15:30:11
800
原创 集合框架——Map集合
Map集合概述interface Map<K,V> K:键的类型;V:值的类型Map集合的特点双列集合,一个键对应一个值键不可以重复,值可以重复Map集合的基本使用//创建集合对象//V put(K key, V value) 将指定的值与该映射中的指定键相关联map.put("wedu001","林青霞");map.put("wedu002","张曼玉");map.put("wedu003","王祖贤");map.put("wedu003","柳岩");。
2024-08-26 15:22:34
1020
原创 集合框架——Set集合
不可以存储重复元素没有索引,不能使用普通for循环遍历不可以存储重复元素没有索引可以将元素按照规则进行排序TreeSet():根据其元素的自然排序进行排序TreeSet(Comparator comparator) :根据指定的比较器进行排序两种比较方式小结自然排序: 自定义类实现Comparable接口,重写compareTo方法,根据返回值进行排序比较器排序: 创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方法,根据返回值进行排序。
2024-08-26 15:22:06
888
原创 集合框架——List集合
Collection集合概述是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现创建Collection集合的对象多态的方式具体的实现类ArrayListCollection集合常用方法方法名说明添加元素从集合中移除指定的元素根据条件进行移除清空集合中的元素判断集合中是否存在指定的元素判断集合是否为空int size()集合的长度,也就是集合中元素的个数。
2024-08-26 15:21:39
633
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人