- 博客(86)
- 收藏
- 关注
原创 Spring 事务
事务的概念:原子性的且要求同时成功、同时失败的操作,我们可以将其封装为一个事务Spring的事务和数据库的事务是一个概念我们在执行数据库操作时,可能会同时执行多个操作。比如A转账给B,我们需要先给A扣钱,再给B加钱,这两步操作要求【同时失败,同时成功】,如果失败了,需要【执行回滚操作】事务通常是在项目中操作,直接在MySQL上操作的场景是比较少的MySQL的事务实现操作start:开启事务commit:提交事务rollback:回滚事务适用范围。
2024-07-14 22:30:33
736
1
原创 Spring AOP
地位:Spring两大核心之一,另一个是loC什么是AOP:AOP和OOP主要是处理事情的维度不同,都是一种思想,实现方法有很多种AOP:面向切面编程(对某一类特定的问题进行编程)什么是切面:某一类特定问题关于统一功能统一功能处理就是AOP的一个实现,因为拦截器、统一异常等问题就是一个【特定的问题】也因为只是其中一个实现,统一功能的代码并没有用到@Before、@After之类的注解AOP常见的实现方式。
2024-07-05 21:41:39
1221
原创 Spring统一功能
什么是统一功能:大家都要做的事情,每一个接口都要执行这个操作统一功能包含两个部分(1)Spring本身提供的统一功能(2)Spring本身并没有提供某个统一功能,但我们又需要,如何去自定义什么是拦截器:主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码。统一功能之一:是Spring提供的统一功能的其中之一,可以公共地对一个信息进行处理作用维度:拦截器的作用维度是URL,像Service代码没有配置我们是拦截不了的使用拦截器后的执行流程请求。
2024-06-26 21:29:18
1016
3
原创 Spring Boot -- 图书管理系统(登录、展示+翻页、添加/修改图书)
下面提供了两种解决方法,由于方法一比较困难,我们采用方法二。:实际开发中,只设置接收参数offset、limit即可,但这里因为后端不处理,就要由前端处理,当前情况下,用前端处理比较麻烦,故而后端来处理。:这个类该Controller层的所有方法都要用,提出来就不需要每个方法反复创建了。:使用一个隐藏的文本框,这样前端把整个表单传给后端时,后端也能收到bookid了。:如果知道要创建list的具体长度,创建时直接写上,这样后面就不需要再扩容了。:可以搞两个线程,一个去获取当前页的内容,一个去获取总记录数。
2024-06-20 10:22:42
847
原创 Mybatis --- 动态SQL 和数据库连接池
什么是动态SQL:根据需求(),去动态地拼接SQL重要性编写方式的选择:根据个人喜好和企业中的其他人用什么来选择推荐:简单SQL用注解,动态SQL用xml动态SQL,语句会比较复杂,此时使用xml更易读,而且因为本身支持标签,书写还会有提示简单SQL,使用注解会更简单,xml还需要另外写文件(当然,也有例如MybatisGenerator之类的插件可以帮我们去生成)
2024-06-14 09:26:55
1123
原创 Mybatis项目创建 + 规范
是持久层框架:是一个用来操作数据库的持久层框架,基于JDBC开发的,可以简化JDBC的开发(将JDBC共性的东西放在框架里,程序员只要基于框架写个性的内容即可)使用场景:我们一般会使用Mybatis操作关系型数据库关于官网Mybatis官网两个依赖的区分什么是结果映射:Mybatis会自动根据数据库的字段名和Java对象的属性名进行映射名称一致:直接赋值名称不一致从mysql层面进行结果映射不推荐,感觉改变了mysql的命名规范,而且把SQL语句弄得很复杂从Mybatis层面进行结果映射。
2024-06-02 14:02:49
1100
原创 Spring Boot配置文件
使用原理:配置项原本就是由程序员自定义的,像Spring Boot的配置项就是由他们的开发人员自定义然后提供给我们,然后我们都这么用。也因此,我们也可以自定义配置项,然后使用。代码解析原理:@Value注解读取到【demo.key1】中的内容后,Value数据会自动匹配成String类,然后被赋值给key1@Value:可以帮我们去读取配置文件中的内容配置项中的value值:不需要加单双引号,被读取后是可以根据接收的类型自动匹配的,所以哪怕配置项是数字我们也可以直接写$符号。
2024-05-26 16:53:17
1022
1
原创 Spring -- DI
概念:DI(依赖注入)就是当我们把依赖对象取出来(创建好后),赋值给该对象的属性DI的其他翻译:属性装配、依赖装配。
2024-05-21 16:18:22
911
1
原创 Servlet(博客系统)
涉及到了4个页面:博客列表页、博客详情页、登录页、博客编辑页。其中 “博客编辑页” 继承了 “markdown编辑器”第三方库:markdown 编辑器markdown 是程序员常用的写文档的方式,许多的博客平台都是支持该编辑器。又因为编辑器从零手动实现比较麻烦,所以此处直接引入了第三方库:editor.md。原理:通过封装 JDBC 代码,来实现一些基础的数据库操作,方便我们后续直接调用创建 dao 包。
2024-05-21 15:55:11
968
原创 Spring ----> IOC
loC是什么:控制(控制权)反转,是一种思想,Spring是其一种实现方式(具体表示为DI),下面讲解都以Spring为例子是什么控制权:这取决于实现方式,此处因为管理的是对象,所以控制权指的是【创建和拿出对象的控制权】控制权反转是什么意思:由【谁用谁创建,自给自足】,变为【由Spring帮我们统一创建】此处是BookController需要BookService对象,所以他自己创建了。
2024-05-20 18:56:00
1038
原创 Spring Boot代码案例(计算器、登录、留言板)
需求场景:getter和setter方法太繁琐为了安全性,企业开发上一般不会给属性设置为public,大多是private。所以我们往往要通过getter和setter方法进行属性的获取和设置虽然说这些代码可以由IDEA生成,但代码量还是太多了,看着十分繁琐。且但凡新增或删除一条属性,我们就需要修改getter和setter方法。解决方法:Spring提供了更简单的方式,即使用【Lombok工具包】
2024-05-16 13:43:04
850
原创 创建一个Spring Boot项目
没有用的文件因为我们是按照Spring Boot的模版来创建项目,所以会给我们添加一些实际上没什么用的配置文件,直接删掉即可。.idea:代表了IDEA相关的配置src:代码mainjavacom:放置Java源代码resources:资源目录,主要是配置相关的代码static:主要放置静态文件templates:主要放置模版:Spring Boot 项目的配置文件test:放置了开发人员的测试代码,用来测试某一个文件是否有bug。
2024-05-10 16:57:26
1052
原创 Spring boot环境的常见问题
因为我们这个项目是按照 “Spring Boot的模板” 创建的,所以系统会给我们自带一些Spring Boot的默认配置。这些配置,有的没用,有的有用。下面这个就是没用的,对于这个原则是【尽量下载,如果实在下载不下来,就删掉】(3)Setting 配置里/font>(1)pom.xml 文件。如何查看项目中已导入的包。
2024-05-10 10:04:11
1389
原创 JavaEE概述 + Maven
Java SE:指Java标准版,适用于各行各业,主要是Java基础、语法等等,所以多线程,网络编程之类的都算是JavaSE的内容。Java EE:指Java企业版,主要面向企业开发学习内容:框架、插件、工具、企业规范(一个功能按照企业的规范去实现)四个框架:Spring、Spring Boot、Spring MVC、Mybatis。其中前三个都是Spring 家族的产品。Mybatis则是一个持久层框架,主要用来帮助我们更好地操作数据库。什么是Spring。
2024-05-08 11:20:40
1174
1
原创 Cookie 和 Session
获取到请求中所有Cookie的内容返回值是一个数组,每个元素都是一个Cookie对象Cookie 类方法获取 key获取 value设置 value把 Cookie添加到响应中实际效果是在HTTP响应报文里加一个header名为【Set-Cookie】的键,要存储的Cookie就是里面的value。响应返回到浏览器这里,浏览器就可以保存这个Cookie了。
2024-05-04 00:34:59
980
原创 Servlet(一些实战小示例)
搜索【JQuery cdn】,把< scriot>整个标签赋值过来即可,如< script src=“https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js”>:、ajax方法会更具输入的参数,构造出http请求并发给服务器、但原生的API比较难用,我们一般使用JQuery封装过后的API。Smart Tomcat为了开发方便,将日志直接显示到了IDEA窗口里,并没有专门生成日志文件。前端加载某个第三方库的方式很简单,直接把库对应的网络地址加进来即可。
2024-05-02 14:34:20
927
1
原创 Servlet(三个核心API介绍以及错误排查)【二】
实际开发中,利用header的部分较少,更多的时候,我们是希望获取到 query string 或 body 的内容,因为这些内容是自定义的,可以供我们完成服务。方式:HttpServletResponse有获取参数的方法,获取的参数就是我们传过去的这些数据。我们共有四种方式传递数据:a=x传递、Postman传递form表单、Postman传递JSON数据、ajax传递。a=x传递这个是把数据传到query string里。
2024-04-30 00:04:31
1041
原创 Servlet(写一个Hello World)【一】
注意,Servlet 版本和Tomcat版本是有对应关系的,如果不匹配可能会出现问题。:在 pom.xml 里修改,注意重新打出的 war 包也在target目录下。:使用Maven,点package执行打包操作。:因为程序是要放到 Tomcat 上执行的。创建出来的项目,一般会自动生成一些文件夹。:静态页面日渐稀少,目前以动态页面为主。properties 配置的属性。
2024-04-26 22:47:24
875
1
原创 Tomcat
Tomcat 是一个 Http服务器,里面帮助我们部署了许多网站Tomcat 是Java圈子中广泛使用的 HTTP 服务器(HTTP 服务器有很多种,Nginx是各个领域中最知名的)Tomcat 是一个 webapp 的容器容器是一个很宽泛的概念,叫容器的有很多webapp 是指的是网站(由后端代码 + 前端代码构成),同时一个 Tomcat 服务器上可以部署多个网站Servlet 就是依赖 Tomcat 运行的默认端口:Tomcat 有两个默认端口,一个是8080,一个是8005。
2024-04-23 23:42:45
1287
原创 网络原理(网络层、数据链路层)
由于互联网十分庞大,路由器只知道相邻设备的网络情况,无法像【高德地图】一样,输入目的地和出发地,就能规划出最优方案。所以,数据报在IP协议下是 “问路式” 传输。
2024-04-12 11:26:16
950
原创 网络编程(TCP、UDP)
网络编程(1)网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。(2)在程序员层面上,即要写一个应用程序通过调用传输层提供的API实现网络通信。
2024-04-04 19:13:24
2212
1
原创 多线程(一)
创建的还是进程,创建进程的时候,把资源(虚拟地址空间、文件描述符表)都分配好,后续创建的线程,让线程在进程内部,后续进程中的新的线程,直接复用前面进程这里创建好的资源。(1)A,B两个线程,如果希望B比A先结束,就可以让A线程中调用B.join()的方法,此时B线程还没执行完,A线程就会进入“阻塞”状态,相当于给B留下了执行的时间,B执行完毕之后,A再恢复过来,并且继续往后执行。:创建进程的时候,只分配一个简单的PCB,而不去分配后续的这些内存硬盘资源,可以做到并发的执行任务以及提升创建/销毁的速度。
2024-01-30 12:26:42
891
1
原创 Spring Boot 日志
为什么不使用 System.out.print使用 System.out.print 也可以打印日志,帮助我们解决定位排查的问题。但是如果要解决记录用户操作记录等问题,System.out.print 就不能很好的满足需求了,就需要使用专门的日志框架日志的用途发现、分析、定位问题系统监控日志审计数据采集。
2024-01-02 20:01:39
1176
1
原创 HTTP协议
但是,用户在网页操作中,会产生出很多的“临时性”数据,这些数据,有的可以放到服务器这边存储(下次可以直接获取到),有的不太重要的,则可以放到浏览器这边存储(下次访问也可以直接用,但是换了台电脑可能就无了)eg. 如果要访问搜狗,就需要在网址栏上输入搜狗的域名,这个域名就会通过DNS解析成一个IP地址,再进一步构造成一个HTTP请求,把他发送给搜狗的服务器,搜狗的服务器就会根据这个HTTP请求,返回对应的HTTP响应,这个响应里面就会携带一些数据,比如HTML文件、CSS文件等。返回响应时,也是如此。
2023-11-08 14:35:50
112
原创 网络初识(JAVA EE)
注意我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)。本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。
2023-10-10 23:57:47
537
原创 进程、操作系统
分类CPU 中央处理器: 进行算术运算和逻辑判断.存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)输入设备: 用户给计算机发号施令的设备.输出设备: 计算机给用户汇报结果的设备.针对存储空间:硬盘 > 内存 >> CPU针对数据访问速度:CPU >> 内存 > 硬盘。
2023-09-03 11:57:24
229
原创 JDBC编程
1.概念JDBC(Java Database Connectivity java数据库连接)指的是通过Java代码,来操作数据库,是一种用于执行SQL语句的Java API,是Java中的数据库连接规范。这个API由 java.sql.包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问2.工作原理。
2023-09-02 18:15:55
199
原创 MYSQL(索引、事务)
给读操作加锁,别人读的时候,我不能写(除非是写完提交后,别人才能读),此时,别人读的时候,可以再开启一个事务来写,第二个事务提交之前,其他读事务读到的都是旧版本数据,第二个事务提交之后,别人再读读到的就是新版数据了。:一个事务在多次读的过程中,虽然读到的数据的值是一样的,但是结果集是不同的(多出或少出一些记录),可以视为是不可重复读的特殊情况。:给写操作加锁,一个事务A写的时候,其他事务B不能读了,直到A事务写完数据,提交事务,其他的事务B才能来读取数据。
2023-09-01 22:54:56
205
原创 MySQL表的增删改查(进阶)
笛卡尔积是一个非常低效的操作,尤其是当每个表的数据都比较多的时候,也因此,多表联合查询也是一个非常低效的操作(数据少的时候,执行笛卡尔积的过程确实也快,但是控制打印台会一条一条打印,要花费时间)失败,因为设置外键的时候,会导致子表操作时频繁地查询父表,这个操作十分耗时,为了加快查询速度,如果父表中的某一列带有索引的话,就很方便找。:select中指定的列,必须是当前group by 指定的列,如果select 中想用到其他的列,其他的列必须放到聚合函数中,不然查询的结果,会无意义。
2023-09-01 12:35:29
149
原创 MYSQL表的增删改查(单表)
mysql 进行like 模糊查询是一个比较低效的操作,尤其是针对一些比较长的字符串,实际工作中尽量不要使用模糊查询。NULL 就表示这个表里的这个各自是空着的(没填),NULL去参与各种运算,结果还是NULL => FALSE。(3)updata的操作也危险,修改的条件,没设定好的话,最后哪些行被改了,哪些没被改,分不清,恢复的成本很高。SQL 最核心的就是增删改查,后端开发工作中,遇到的最核心的操作也是这个。(1)此处的修改是修改mysql服务器,保存在硬盘上的数据,持久生效的。
2023-08-28 15:26:16
148
原创 数据结构(Map、Set)
概念和场景Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢二分查找,时间复杂度为O(logN) ,但搜索前必须要求序列是有序的直接查找和二分查找都比较适合静态类型的查找Map和Set是一种适合动态查找(可能在查找时进行一些插入和删除的操作)的集合容器模型纯 key 模型,比如:有一个英文词典,快速查找一个单词是否在词典中快速查找某个名字在不在通讯录中Key-Value 模型。
2023-07-12 13:10:47
168
原创 数据结构(排序)
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。同样的任务先完成的是我们主观定义的第一,但是同样的任务完成了但是比前者慢,这是客观的第一。因为后面的元素个数过多。
2023-07-04 09:46:15
447
原创 MYSQL数据库基础(数据库)
关系型数据库中,数据是以“表”的方式来进行组织的,每个数据库中,里面就可以有很多个数据表,每个表可以有很多行,每一行又可以有很多个列(字段)如果是单行SQL没有什么问题,但是如果是批量执行SQL(把很多SQL写到一个文件中),如果中间某个SQL报错,就会执行停止。DECIMAL能够精确表示小数,但是float和double是不行的,但是DECIMAL存储空间占用的更多,计算速度也更慢。注意,一旦删掉数据库,里面的数据就都没有了,很难恢复。所有的和表相关的操作,都需要选中数据库再进行。
2023-06-02 10:39:33
688
原创 数据库基础概念
数据库是一类软件,作用是管理数据,内部应用了许多数据结构。但是我们还可以用文档储存数据,为什么要出现数据库?文件保存数据的弊端文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便为了解决上述问题,专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
2023-05-31 10:43:51
652
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人