- 博客(64)
- 收藏
- 关注
原创 Spring AOP
Spring框架有两大核心,第一是IoC第二就是AOPAOP又称为Aspect Oriented Programming(面向切面编程)从概念上讲,AOP 是将那些与业务逻辑无关,但又遍布在应用程序多个模块中的功能(例如日志记录、性能监控、事务管理、安全检查等)抽取出来,形成独立的切面(Aspect)
2024-07-23 15:10:13 636 1
原创 SpringBoot 统⼀功能处理
拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码也就是说, 允许开发⼈员提前预定义⼀些逻辑, 在⽤⼾的请求响应前后执⾏. 也可以在⽤⼾请求前阻止其执行流程图大概如下⾃定义拦截器:实现HandlerInterceptor接⼝,并重写其所有⽅法preHandle()⽅法:⽬标⽅法执⾏前执⾏. 返回true: 继续执⾏后续操作;返回false: 中断后续操作.postHandle()⽅法:⽬标⽅法执⾏后执⾏。
2024-07-09 18:12:15 873 1
原创 java数据结构集合复习之ArrayList与顺序表
在框架集合中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。
2024-07-05 16:13:38 1081
原创 java数据结构集合复习之包装类和泛型
一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。-----来源《Java编程思想》对泛型的介绍。在 Java 中,泛型是一种参数化类型的机制。泛型使得可以在定义类、接口和方法时使用类型参数,从而增强了代码的类型安全性和可读性,并减少了类型转换的需求。增强类型安全:通过指定泛型类型,编译器可以在编译阶段就检查类型的正确性。
2024-07-05 09:32:26 904
原创 Mybatis操作数据库(二)
传⼊的⽤⼾对象,根据属性做where条件查询,⽤⼾对象中属性不为 null 的,都为查询条件. 如username 为 “a”,则查询条件为 where username=“a”之前的插⼊⽤⼾功能,只是有⼀个 gender 字段可能是选填项,如果有多个字段,⼀般考虑使⽤标签结合标签,对多个字段都采取动态⽣成的⽅式。多个组织的语句都以 , 结尾,在最后拼接好的字符串还会以 , 结尾,会基于suffixOverrides 配置去掉最后⼀个 ,prefix:表⽰整个语句块,以prefix的值作为前缀。
2024-06-25 17:12:18 668
原创 Mybatis中 #{} 和 ${} 的区别
这样,like ‘%#{value}%’ 实际上会被解析为 like ‘%‘value’%’,其中的 #{value} 被视为一个普通的字符串,而不是通配符。例如,可以将查询条件构建为 like ‘%’ + #{value} + ‘%’,这样在预编译时,#{value} 会被正确地替换为参数值,而 % 则作为通配符被正确解析。预编译可以将 SQL 语句变成一个函数,在需要的时候传参进行即可使用。#{} 可以防⽌SQL注⼊, $ {}存在SQL注⼊的⻛险, 查询语句中, 可以使⽤ #{} ,推荐使⽤ #{}
2024-06-18 10:10:47 771 1
原创 MyBatis XML 配置文件
这时因为有两个配置文件 其中一个yml的配置mapper文件方式是对的 但是另一个pro文件也有一个自动生成的对不上 当两个配置文件同时存在时就会优先生效pro文件。我们使用Mybatis的注解方式主要完成一些简单的cuda,但如果要完成较为复杂的sql功能,建议使用xml来配置映射语句,就是将sql语句写在xml配置文件中.在实际中应该避免使用夺表查询 特别是队性能要求很高的项目 因为一般情况下,数据库集群是很多项目一起使用的,当出现慢查询的时候。resultType:返回的数据类型 我们定义的实体类。
2024-06-17 16:31:41 1427
原创 MyBatis操作数据库(一)
这会令 MyBatis 使⽤ JDBC 的 getGeneratedKeys ⽅法来取出由数据库内的部⽣成的主键(⽐如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的⾃动递增字。但是这样的话, 只能查找id=4的数据,所以SQL语句中的id值不能写成固定数值,需要变为动态的数值解决⽅案:在queryById⽅法中添加⼀个参数(id),将⽅法中的参数,传给SQL语句。如果使⽤MySQL是5.x之前的使用的 是"com.mysql.jdbc.Driver",如果是⼤于5.x使用的。
2024-06-16 17:52:20 1105
原创 SpringBoot 日志
结果发现,只打印了info,warn和error级别的⽇志这与⽇志级别的配置有关, ⽇志的输出级别默认是info级别,所以只会打印⼤于等于此级别的⽇志,也就是info, warn和error。提⾼了灵活性,简化了客⼾端对⼦系统的使⽤难度,客⼾端⽆需关⼼⼦系统的具体实现⽅式,⽽只需要和⻔⾯对象交互即可。前面的日志都是输出在控制台上的我们需要把⽇志保存下来,以便出现问题之后追溯问题.把⽇志保存下来就叫持久化。减少了系统的相互依赖.实现了客⼾端与⼦系统的耦合关系,这使得⼦系统的变化不会影响到调⽤它的客⼾端;
2024-06-16 08:42:29 737
原创 Spring MVC 应⽤分层
引用分层是一种软件开发思想 将应用程序分为N个层次每个层次负责各个职责 其中MVC是常见的设计模式这就是应用分层的具体体现。目前主流的开发方式是前后段分离后端开发工程师不再需要关注前端的实现,对此就需要分为。表现层:就是展⽰数据结果和接受⽤⼾指令的,是最靠近⽤⼾的⼀层;业务逻辑层:负责处理业务逻辑, ⾥⾯有复杂业务的具体实现;(1)请求处理:响应数据负责接受请求给页面响应数据。数据层:负责存储和管理与应⽤程序相关的数据。(3)数据访问:负责数据的操作增删查改等。(2)逻辑处理:负责逻辑处理的代码。
2024-05-30 22:43:54 440
原创 使用Spring Boot编写的小项目
lombok通过⼀些注解的⽅式,可以帮助我们消除⼀冗⻓代码,使代码看起来简洁⼀些⽐如之前的Person对象就可以改为。在pom.xml⽂件中,单击右键,选择Generate进⼊EditStarters的编辑界⾯,添加对应依赖即可.针对上面lombok也提供更精细粒度的注解可以单独对类的属性使用。然后我们使用lombok中的注解就可以解决这个问题。(2) 请求方式:get/post。(2)如果正确跳转首页显示用户信息。(1)如果不正确前端进行用户告知。接口返回:当前登录用户的名称。(2)获取用户的登录信息。
2024-05-28 15:04:23 1528 1
原创 Spring Web MVC(2)
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。这时我们需要把注解@RestController 改成 注解@Controller就能正确返回想要显示的静态界面了。@Responsebody返回数据:定义返回的数据格式为⾮视图,返回⼀个text/html信息。当我们发起请求时发现页面返回的是一个字符串而不是刚刚的html静态界面。@Target这个注解的作用是表示注解修饰的对象。修饰类的时候表示这个类下的所有方法返回的都是数据。
2024-05-25 20:50:17 1008
原创 Spring Web MVC
会话是一个客户与服务器之间不中断的请求响应 对客户每个请求 服务器能识别请求来自那一个客户 当一个未知客户向web 应用程序发送一个请求就开始一个会话当客户结束会话或服务器在一个时限内没有接受到客户的任何请求时会话就结束了。@RequestMapping它是⽤来注册接⼝的路由映射的表⽰服务收到请求时, 路径为 /sayHi 的请求就会调⽤ sayHi 这个⽅法的代码。随着时代的发展Spring在实现MVC时 后端人员不会编写前端的代码所以这里的view会变成视图所需要的数据。
2024-05-23 15:12:51 936
原创 Maven
这些代码被称作为"坐标"在Maven中根据groupId,artifactId,version的标签配置来识别唯一一个的jar包少一个都不行,当我们在pom文件配置完成依赖之后点击刷新maven就会根据坐标的位置去仓库里找jar包然后下载下来添加到项目之中 这个jar包下载的地方就是仓库。但是我们使用了maven就不用不用管理依赖的关系 maven的依赖具有传递性 自己会自动把所依赖的其他jar包一起导入。自己计算机上的一个目录用来存储jar包当项目引入对应的依赖之后首先会查找仓库中是否有对应的jar包。
2024-05-12 16:38:27 1140 2
原创 第⼀个SpringBoot程序
Spring让Java程序更加快速, 简单和安全. Spring对于速度、简单性和⽣产⼒的关注使其成为。然后就可以访问了 不需要打包不需要tomcat因为spring boot 已经集成了。Spring Boot 的诞⽣是为了简化 Spring 项目而诞生的。创建Spring Boot项目。世界上最流⾏的Java框架。Spring Boot介绍。
2024-05-12 16:36:35 214
原创 Java HTTP(3)
客户端使用公钥加密 服务器生成一堆公钥和私钥 私钥服务器自己留着 公钥发送给客户端(这里的私钥是绝不会轻易泄露的) 所以黑客在传输过程中能拿到公钥 但是没有私钥 使用公钥加密 就必须使用私钥解密 所以就算黑客能拿到公钥 也无法进行解密。所以此时我们还需要想办法 把密钥安全的传输到对面 需要对于这个密钥进行加密 此时如果继续使用对称加密 (针对刚才密钥进行加密) 无论进行几层都是不安全的。每个客户端 都需要有一把自己的对称密钥(不同客户端的密钥的不同)如果客户端生了密钥 就需要把密钥传给服务器。
2023-12-17 17:52:47 52
原创 Java HTTP(2)
js代码在执行ajax方法的时候 把请求发送出去之后 就会立既往下执行这个时候 还没有调用到success对应的方法 一直到响应回来 success才会被调用。success的值是一个函数 这个函数就会收到响应的时候 被浏览器自动调度 被浏览器自动调用这个函数的时候 就会把响应的body 通过参数传给这个函数。name 会作为参数被放到http请求的query string/body中 name中的a就是键值对的键 用户在输入框输入的内容就是键值对的值。js中{ } 表示的是js对象(键值对)
2023-12-16 16:46:56 60
原创 JavaEE HTTP
首先,RFC标准文档,明确说明了,对于URL的长度不做限制要求. 其次,早年间(20年前),当年的机器资源有限,当时的浏览器对于URL确实有限制.具体限制了多长,看不同的浏览器了.但是这是早期浏览器了。安全指的是传输的数据不容易被黑客截获 或者被截获了 也不容易破解 PSOT只是把传输的数据让普通用户没法直接看到 不影响黑客截获 保证安全的关键是对传输敏感数据进行加密。4.GET是幂等的 PSOT不是幂等的(幂等:给你相同的输入都是相同的输出就是幂等的 如果不同就是不幂等的)RFC分档建议设计的。
2023-12-11 20:47:07 64
原创 JavaEE 网络原理三
一旦新的网站出现 或者旧的网站下线 这里就需要修改 这显然是不可能的 所以有大佬专门把这些内容拿到专门的服务器里 把hosts文件装进去有新的网站注册 或者旧的网站注销都要去这里报备 这个服务器负责更新维护 在上网时 访问某个域名就会先访问到DNS服务器再获取到域名对应的ip。(mac地址是6个字节表示的范围比ipv4的地址大很多 42亿*6w5k 所以当前的mac地址都是网卡出厂的时候就写死了。可以保证每个设备的网卡都有独立的mac地址 所以mac地址也就成了互联网上一种身份标识的方式)
2023-11-27 15:06:18 56
原创 JavaEE 网络编程套接字
对于整个程序只有一个socket对象不是频繁创建 整个对象的生命周期非常长 随着整个程序 socket就需要保存打开状态 socket对象对应socket文件 文件描述符 最主要的目标是为了释放文件描述符 才关闭socket对象的 进程结束 九八pcb回收 里面的文件描述符表也就都销毁了(仅限于只有一个socket对象 并且生命周期是跟随整个进程的)字符串是纯英文此时字节数和字符数是一样的但是如果有特殊符号(中文)就会出现问题 因为一个是以字符为单位 一个是以字节为单位的。
2023-11-24 21:25:03 47
原创 JavaEE 网络原理
应用层自定义协议网络上传输本质上是传输一个(二进制)字符串Java写代码 是各种对象 最后发送数据的时候把对象转化成字符串(二进制)[序列化]接收数据时也(二进制)字符串换回字符串[反序列化]类似于一个外卖软件的应用层自定义协议外卖软件有 商家名称 好评率 距离 评分等等可以做出以下设计这里的格式就是构造出一个字符串后续字符串就可以作为tcp或者udp的payload进行传输另一方面服务器就可以解析出逗号前面是用户id后面是经纬度。
2023-11-24 21:24:52 49
原创 JavaEE 网络原理 二
通过 tcp read/write的数据都是tcp报文的载荷 也就是应用数据层 发送方一次性是可以发送多个应用层数据报的 但是接收的时候 如何区分 从哪里是一个完整的应用数据报?我们发送一个数据报 经过电信路由器时 就会触发NAT机制 电信路由器 会使用自己的外网ip替换掉当前ip数据报中的源ip 当这个数据报到达目的服务器之后 服务器不知道数据报源自源主机 而是来自电信的路由器地址。B在等A的消息 A突然不发消息了 B不知道A是等会就能继续发 还是不发了 B就会阻塞等待 具体等多久不知道。
2023-11-24 21:24:40 52
原创 JavaEE 网络编程基础知识
概念ip地址类似于身份证 用于识别网络主机 或者其他网络设备(例如路由器)的网络地址IP地址是一个32位的二进制数 通常被分为4个(4个字节)例如:01100100.00000100.00000101.00000110(一个ip地址)通常可以用点分十进制表示 例如a.b.c.d(都是0~255之间的十进制整数) 例如上述ip地址为100.4.5.6。
2023-09-22 13:02:00 50
原创 JavaEE 文件操作和IO
读取的字符是按照一个整型去表示的 而整数的范围是0到65535(正是两个字节的范围) -1(eof)则是表示到达文件末尾读取完毕(windows 上可以通过ctrl+z输入eof linux可以输入ctrl+d输入eof)在操作系统中"文件"是一个广义的概念Sysyem.in是一个特殊的文件对应到"标准输入"普通硬盘上的文件也是文件 后面的网络编程 网卡(socket)也是文件。Java IO流是一个庞大的体系 涉及到非常多的类这些不同类 都有各自不同的特性 但总的来说 使用方法都是类似的。
2023-09-10 22:13:49 66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人