- 博客(62)
- 收藏
- 关注
原创 Web基础+JavaEE+容器
Web容器,也称为Web Container,它其实是一个运行环境,它可以给Servlet和Jsp程序的运行,提供一个合适的运行环境。JavaEE应用服务器它具备了 Web Server 处理HTTP 请求的能力(没有Web Server专业),同时也支持了JavaEE 技术组件,比如JMS、DI、JPA、Transactions、Concurrency等,同时也包含了Web Container。web容器(服务器)包含web项目,web项目中包含spring技术开发的项目。
2026-04-05 18:26:34
7
原创 生猪养殖溯源系统前期准备与SpringBoot框架
Spring 框架通过提供丰富的功能和灵活的编程模型,简化了企业级应用程序的开发过程,提高了代码的可维护性和可测试性,是 Java 开发者广泛使用的优秀框架之一。mapper(dao)持久层:主要是mybatis和spring框架,进行数据库调用,要在Mapper层进行对数据库的增,删,改,查,与数据库进行交互。Spring 是一个开源的、轻量级的 Java 开发框架,用于构建企业级应用程序。代码不分离,jsp代码,html代码,前端后端代码放的地方,但它是同一个部分,那么不同企业级会进行版本控制。
2026-04-05 18:04:44
92
原创 拿取gitee中现成的vue-manage-system模板
把router-index.js中的children属性下只保留两个侧边栏显示,去sidebar.vue中找到菜单中的子菜单,items中只保留系统首页和用户管理就行。然后将我们Easy Mock中的假数据拿过来 修改数据,前端发送请求向后端Easy Mock中拿取模拟的数据。中间改变页面,每次点完侧边栏切换的页面是Home.vue中的子路由router-view。方法名:getUserList,路径是easymock中我们自己创建的。baseurl:在utils中写完整的easy mock中的基础路径。
2026-04-01 17:25:20
218
原创 网络:前端向后端发送网络请求渲染在页面上,将EasyMock中的信息用前端vue框架编写代码,最终展示在浏览器
2.选择ELement UI中的这个表格作为模板,复制el-table代码放在template中。使用easy mock模拟前后端发送数据,先注册账号。点击创建接口,写json代码,模拟数据,已经提供代码。然后把这个刚创建好的地址在浏览器打开就创建成功了。然后把模拟数据展示在浏览器中,通过vue编写代码。tableData这个数组也放在return中。1.在Test.vue中生成vue模板。在script脚本中引入axios。创建完项目会自动为我们提供一个接口。修改模板展示我们的模拟数据。
2026-03-30 21:37:08
62
原创 3.生成vue模板在views中写一个Test.vue进行展示,学习指令,带有v-前缀的特殊attribute,并下载ELementUI
如果不加那三个router-link,浏览器就不会显示首页,关于,Test这三个字,那么router-view就代表了页面的父容器,子容器就不存在了,但是如果还想跳转就得在网址后面加/about跳转到对应页面。v-model只能写在属性中,不能放在h1的文本中,如果想让h1中的内容也绑定同步数据,可以使用插值语法{{message}}在views中新建一个Test.vue,生成vue模板,然后写内容,之前在App.vue写了下面的点击事件。数据变页面变 页面变数据变-------双向改变。
2026-03-30 19:34:21
273
原创 2.vue项目创建,安装脚手架,配置文件分析
如果不加那三个router-link,浏览器就不会显示首页,关于,Test这三个字,那么router-view就代表了页面的父容器,子容器就不存在了,但是如果还想跳转就得在网址后面加/about跳转到对应页面。components 组件,重复利用的组件,如:搜索框,菜单栏,这些小组件不需要多次书写代码,写一次就可以了,可重复使用,目的是避免二次开发,打开vscode,打开文件,关闭文件夹,将刚创建好的vue_demo移到vscode中,点开文件图标,直接移动就好。
2026-03-30 19:33:26
172
原创 1.卸载node.js才可以下载nvm,使用nvm更高级,可以指定下载node版本,开发javaweb项目
下载nvm-1.1.12-setup.exe (之后可以在命令行使用nvm直接下载node版本 nvm install 16)如果没有node 直接用nvm install 16 下载想要的版本,这里以16为例。nvm install 版本号 安装指定版本的node。存在D盘,cmd运行nvm -v查看是否下载好nvm。nvm list查看当前计算机安装了哪些node版本。nvm可以随意指定node版本进行使用。使用指定node nvm use 16。nvm list 查看node版本。
2026-03-30 08:52:50
75
原创 物联网项目-------配置模块以及XML,单例模式
在测试类中的resource中,新建一个student.xml文件,文件内容的根元素是bookstore,book元素,包含的属性是category,title元素,包含的属性是语言,包含的内容是书名,year元素,包含的内容是2005,price元素,包含的内容是30.00。现在给了一个方法,有对象才能调用newInstance方法,现在目的通过newImstance创建对象,但没对象,所以这个方法不能像现在这样是实例方法,必须加static变成类方法,通过类名调用newInstance方法。
2026-03-30 08:52:31
329
原创 物联网项目-------日志模块(公共模块)
帮助排查和调试问题,提供性能监测、安全审计、系统监控、用户行为分析等功能,从而提升应用程序的质量和可靠性。实际开发中需要将结果输出到后台文件中,而不是控制台,因为使用者没有idea环境,那么我们就需要把这些代码放在jdk环境下运行,打包成jar包。常见的日志级别包括DEBUG(输出最多的)、INFO、WARN、ERROR、FATAL(严重错误,发生的少)。日志输出会写入我们给定文件的位置,控制台也会输出。在我们项目的各个模块的输出语句换成日志模块的输出。原生的JDK给的输出语句需要手动调用,比较繁琐。
2026-03-29 12:58:59
134
原创 物联网项目 服务器和客户端的公共部分(都有的内容)-----备份模块,随机访问流,数据流
在备份文件中记录字节数,下一次采集就要读出备份文件的字节数,跳过这些字节,采集新的数据,默认windows系统每个数据末尾有回车换行符\r\t,占2个字节,我们读到的字节+2,才会定位到下一行,也就是从新的一行采集数据,如果没有新的字节数进来,我们不需要跳过2。客户端采集每次要从本地文件中采集,我们要避免从头采集,这时就需要有提供一个备份文件,记录当前数据的字节数,然后在采集下一次的数据时,先跳过备份文件中的字节数,入库新的数据,所以我们要用到随机访问流。下一次入库时统一入库。
2026-03-29 12:58:51
317
原创 物联网环境监测项目
如果相等,sql语句不变,ps对象不用更换。数据库中共22条数据,需要根据不同的日期插入到对应表的日期当中,原始数据表采集时间是按照时间先后顺序采集到的数据,所以,当使用后面的ps对象时,前面的ps对象已经使用完成,可以销毁掉了,避免创建多个ps对象资源占用。在服务器接收到客户端的数据后我们要将数据持久化保存,如果存到内存当中,那么程序结束或者断电之后,数据将会消失,不符合我们的需求,所以我们要结合数据库技术,将采集的数据存到数据库当中,这样就可以实现持久化操作。,故而须先获取采集时间中对应的天。
2026-03-29 12:58:42
376
1
原创 在指定的空文件路径中追加内容
3.创建一个文件对象输出流,将内容写到文件中,如果true就会追加,第一次写入值后,会保存在文档中,在重新修改值后,文档中会有两次写入的值。现在输入的值是98,true是追加,所以最终输出ab。一开始输入的值是97,文件中输出的是a。2.@Test 书写测试代码。1.创建一个文件测试类。
2026-03-29 12:58:23
10
原创 JDBC中的连接池和properties类
硬编码:经常修改的数据,例:密码,url路径,版本号,写到代码中容易漏掉,因为将来代码比较多,分布在不同的包下,要一个一个修改,所以将容易修改的代码提取到一个配置文件中,这样直接改配置文件即可,不用频繁改代码。数据库连接池中会有很多connection连接对象,如果用户用的时候在池子中拿,用完直接放回去即可,这样避免了重复创建connection对象,不用再释放资源,直接还到池子中。是固定的操作步骤,运行完案例时,会重新获取连接,等到程序运行完后释放资源,是我们在手动管理连接。
2026-03-29 12:58:04
186
原创 JDBC技术,Navicat,PrepareStatement预编译,batch批处理,Transaction事务
执行三个事务A,B,C,在A事务之前开启事务回滚,然后按照顺序执行A,B,C,如果在C事务的时候发生异常,会把事务回滚到开启事务也就是A之前,相当于A,B,C没有发生任何事情。默认情况下,在JDBC中执行的DML语句,所产生的事务,都是自动提交的。这样的sql语句结构是确定的,不会把上面的1=1看成是要执行的sql语句,而是会将其看成拼接的密码字段,也就是变量值。实例:用户买东西,先浏览,再下单,再支付,最后支付时余额不足,那么这时会回滚到未下单的页面。
2026-03-22 12:56:03
342
原创 多线程测试server和client端以及Callable接口有返回值
BufferedReader最终也需要关闭,所以要在try语句外面声明,提升作用域,最后在finally中关闭资源。1.创建服务器对象,并提供端口号,异常try-catch捕获,提升作用域(声明)2.再创建一个接口实现类继承Callable接口 泛型指定为String类型。3.使用new Thread多线程的方法调用start方法。服务器关闭流对象也行 即使是while循环 不影响关闭。while循环,一直接收客户端,使用accept方法。接收到客户端连接后,开辟一个新线程为该客户端提供服务。
2026-03-22 12:55:24
27
原创 什么是API
你不用进厨房,只要通过菜单(规则)告诉服务员要什么,厨房做好后通过服务员给你——这就是 API 在工作。API = Application Programming Interface(应用程序编程接口)API 就是软件之间的“翻译官+传话员”,让不同程序、设备能互相调用数据和功能。总结:API 就是程序之间互相沟通、互相调用功能的标准接口。
2026-03-18 21:14:19
20
原创 JUnit单元测试框架
2.mvn官网找到junit依赖使用人数最多的4.12版本,复制到pom.xml。主方法在测试类中只能有一个,太限制了,所以使用JUnit中的测试方法。4.创建JDBCTest 测试类。三个测试类能在一个类中分别运行。1.找到pom.xml文件。3.只在测试环境下有效。优势:可以控制输出顺序。
2026-03-18 21:03:36
27
原创 java中的多线程,Runnable接口,匿名内部类
现在在匿名内部类中直接new Runnable这就是接口类的对象 大括号括起来重写方法。接口实现类的劣势:以后子任务会变多 创建类要更加频繁 所以要使用匿名内部类。格式:Thread thread=new Thread(new 接口(){在操作系统中,启动一个应用程序的时候,会有一个或多个进程被同时创建。并行:指在同一个时刻,两个或多个线程,各自使用一个CPU同时运行。在父类Thread类中指向子类对象 调用start方法。一个应用程序包含多个进程,一个进程中包含多个线程。没有名字的在类的内部定义一个类。
2026-03-18 16:13:13
49
原创 Java中的static
static在方法区单独开辟一个空间 会将library属性提升到类变量,如果调用方法时,直接用类名调用即可,static在方法区有自己独有的一块地方(静态区),会先加载静态区的成员,再加载非静态对象,如果定义了私有属性的学校名字和图书馆,那么会创建三个学校包含三个学校名字和三个图书馆,不符合实际。static修饰类中的数据成员,该成员就成了静态数据成员,也称为类成员;类成员,是属于类的,为这个类所有对象共享,只占用一块内存空间。某市有三所中学,一中,二中,三中,决定共同建一所栋梁图书馆。
2026-03-16 15:51:26
35
原创 Mysql数据库-管理和存储数据库(开源管理系统)与JDBC操作数据库步骤,JUnit以及如何将压缩包中exe程序添加上桌面图标
其以行和列的形式 存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了 数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由 二维表 及其之间的关系组成的一个 数据组织。因为JUnit单元测试框架,不是JDK自带的,所以我们需要额外导入JUnit的jar包。mysql -h’主机名’ -P’端口号’ -u’用户名’ -p’密码’可以通过下面的网站配置pom.xml中的Junit依赖。
2026-03-16 10:48:58
89
原创 css盒模型中的外边距
如果设置右侧外边距那么不会跑到右边 因为坐标原点在左上角 我们设置了只能是与右边的边框有距离。面试:让一个块级元素水平居中。
2026-03-15 18:16:15
40
原创 CSS中盒模型的边框属性
使用height:100%时,父元素高度是0,不会生效,所以高度默认由元素内容撑起 如果div中不写那么即使设置了高度也不会生效 如果设置px就没问题 %就有问题。2.上 右 下 左 > 上 右 - 左边的取值和右边的⼀样 下边的取值和上边⼀样。当我们需要设置四个不同的边框属性是,生效顺序是顺时针 上 右 下 左。需要屏幕自适应就设置width:80% 高度不用设置 设置也不生效。1.上 右 下 左 > 上 右 下 - 左边的取值和右边的⼀样。3.上 右 下 左 > 上 - 右下左边取值和上边⼀样。
2026-03-15 17:51:12
63
原创 多个对象通过集合实现io流的读写
List<Student(对象)> list(集合名字)=new ArrayList(子类)由于student在List集合中 所以Student也需要序列化。将多个对象组成集合来写 最后输出到指定文件中。下面把字节数组读出来 转换成java对象。这样5个对象就转换成了字节数组。List本身就实现了序列化。父类引用指向子类对象。
2026-03-13 21:55:48
44
原创 单列集合(List)中的ArrayList(针对数组)和LinkedList(针对列表)
ArrayList:增删慢,查找快(有下标 根据下标查找快)增删快,查找慢,查找时只能从头开始查找。只动要增删的元素,其他元素不改变位置。1.数组:一块连续的内存空间。
2026-03-13 21:17:17
20
原创 JAVA中通过IO流创建文件和读取文件
创建一个student对象 然后将student中的属性以文件的形式输出到自己指定的地址中。a.创建一个Student对象 并且将它保存到文件中。对象流ObjectOutputStream。序列化:要将java对象转换成字节序列。反序列化:将字节序列转换成java对象。1.利用文件输出流创建一个文件。c.写出对象到文件中。
2026-03-13 20:30:16
29
原创 TCP和UDP协议
TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立连接,然后再传输数据,它提供了两台计算机之间可靠的、无差错的数据传输。在TCP连接中,将计算机明确划分为客户端与服务器端,并且由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”的过程,四次挥手断开连接。2.受检异常:编译时必须要处理异常,必须去处理,可以利用try-catch捕获,也可以利用抛出,抛给方法的调用者。1.非受检异常(运行时异常):编译期间不受检验,发现不了异常,,只有当程序运行时才会出现异常。
2026-03-12 21:43:36
189
原创 CSS中的列表样式
(⾏间距) dl 元素的margin-top,margin-bottom均为16px(1em),但是没有内边距 dd 元素的margin-left为40px(2.5em) p 元素的margin-top,margin-bottom为16px(1em)ul,ol 元素的margin-top,margin-bottom均为16px(1em) , padding-left为40px(2.5em)取值:outside 列表项标志出现在主块框的外部。取值:url:指定图标的位置。设置列表项标志出现的位置。
2026-03-11 20:26:42
78
原创 java中的方法重写,重载,接口和抽象类
println中打开可以接收多种类型 有int double。重写:相当于原来的方法不要,重新写一个按自己规则写的方法。返回值相同,参数列表相同,方法名称相同。
2026-03-11 17:18:25
37
原创 编程题:实现汽车租赁公司汽车出租方案
方法:重写父类中getRent方法 因为父类返回值是0不满足我们想要的类型。所以要提供getter和setter方法 在属性后面加入。不重写 就是调用父类中的Obiect的toString。要想继承父类的可以利用super来继承这两个属性。卡车属性后面要有构造器明确品牌 车牌号 类型。所以我们在重写方法中写具体租金计算方法。在方法后面我们可以写子类卡车和巴士。super传入父类中的品牌和车牌号。两个子类也有自己对应的属性和方法。只有type是子类中的属性。然后类下面有属性和方法。品牌和车牌号是父类中的。
2026-03-11 16:58:06
244
原创 java中的多态,封装,继承,构造器
如果此时用private修饰了age 那么就需要利用封装中get和set方法来在测试代码中调用getAge();和setAge(10);如果在父类Person中提供一个构造器或者子类Student中提供一个构造器 写输出为父和子类空参构造器。类:概念的抽象,具备相同的属性,具备类似行为的抽象,类是一种抽象的数据描述。在测试类中new student中一定会调用子类的空参构造器。如果没有空参构造器是有有参构造器那么就在super中传入参数。此时已经是有了有参构造器 所以测试类中的new对象会报错。
2026-03-10 22:30:20
291
原创 文本装饰,文本水平对齐方式,文本缩进,文字形变,字体阴影
capitalize 将所有单词第⼀个字⺟转换为⼤写full-width 转换为类似于⼀个等宽字体。格式: text-shadow: h-shadow v-shadow blur color;格式:text-decoration: underline;h-shadow :必需。v-shadow :必需。其中是em单位, ⼀个em代表缩进⼀个⽂字的宽度。格式:text-align: right;格式: text-indent: 2em;取值: none:取消所有阴影。2.文本水平对齐方式。
2026-03-06 12:18:44
40
原创 CSS中的字体颜色color,字体样式,字体粗细,字体大小,字体
还需要知道⼀点, 就是并不是名称是英⽂就⼀定是英⽂字体 因为中⽂字体其实都有⾃⼰的英⽂名称, 所以是不是中⽂字体主要看能不能处理中⽂。但凡是中⽂字体, ⾥⾯都包含了英⽂ 但凡是英⽂字体, ⾥⾯都没有包含中⽂ 也就是说中⽂字体可以处理英⽂, ⽽英⽂字体不能处理中⽂。格式:font-family:“楷体”;注意点: 如果想给界⾯中的英⽂单独设置字体, 那么英⽂的字体必须写在中⽂的前⾯。补充:开发中最常⻅的字体有以下⼏个中⽂: 宋体/⿊体/微软雅⿊。例如: color: rgba(255,0,0,0.2);
2026-03-06 11:47:47
215
原创 CSS三大特性(继承性,层叠性,优先级)
important只能提升被指定的属性的优先级,其他的属性的优先级不会被提升,比如我们想写bgc,那么这个属性不会被优先提升。2.相同选择器如果直接选中,并且都是同类型的选择器,那么谁写在后面就听谁的,因为css执行是从上到下执行的。作用:用于提升某个直接选中标签的选择器中的某个属性的优先级可以将被指定的属性的优先级提升为最高。1.不同选择器如果都是直接选中,并且不是相同类型的选择器,那么就会按照选择器的优先级来层叠。4.一般不建议使用!3.2 h标签的⽂字⼤⼩是不能继承的,在做⼦元素。
2026-03-05 14:30:04
33
原创 伪元素选择器
:after表示元素的最后面的一部分,一般需要结合content这个样式一起使用。通过content可以向after的位置添加一些内容。::before表示元素最前面的部分,一般需要结合这个样式一起使用。通过content可以将before的位置添加一些内容。::first–letter为第一个字符设置一个样式。::first:line为第一行设置一个样式。利用伪元素选择器写的内容,无法用鼠标选中。
2026-03-05 13:55:31
19
原创 属性选择器
CSS2中的只能找到独⽴的单词, 也就是包含value,并且value是被空格隔开的。属性的取值是否包含某个特定的值 [attribute~=value] CSS2。CSS2中的只能找到value开头,并且value是被-和其它内容隔开的。CSS3中的只要是以value开头的都可以找到, ⽆论有没有被-隔开。作用:根据指定的属性名称找到对应的标签,然后设置属性。CSS3中的只要包含value就可以找到。属性的取值是以什么开头的。属性的取值是以什么结尾的。
2026-03-04 22:17:32
18
原创 a标签的伪类选择器与否定伪类选择器
link visited hover active 编写顺序遵循爱恨原则love hate。:hover 修改鼠标悬停在a标签上状态下的样式。a标签的伪类选择器可以单独出现,也可以一起出现。:visited 修改被访问过的状态下的样式。作用:可以从已选中的元素中剔除某个或某些元素。:link 修改从未被访问过状态下的样式。:active 修改鼠标长按状态下的样式。:not(选择器){
2026-03-04 17:00:27
16
原创 序选择器(结构伪类选择器)与悬浮时的样式
原来的颜色是绿色,当设置鼠标移过去后颜色会直接变为红色,字体会变为30px。伪类以:开头,用在选择器后,用于指明元素在某种特殊状态下才能被选中。
2026-03-03 22:55:29
226
原创 兄弟选择器
2.通用兄弟选择器选中的是指定选择器后面某个选择器选中的所有标签无论有没有被隔开,都可以选中后面的兄弟标签。2.相邻兄弟选择器只能选中紧跟其后的那个标签,不能选中被隔开的标签。作用:给指定选择器后面紧跟的那个选择器。作用:给指定选择器后面选中的所有标签设置属性。1.相邻兄弟选择器必须通过+连接。1.通用兄弟选择器必须用~连接。1.相邻兄弟选择器 CSS2。2.通用兄弟选择器CSS3。选择器1+选择器2{选择器1~选择器2{
2026-03-03 16:53:27
28
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅