- 博客(77)
- 收藏
- 关注
原创 数据字典模块–MapStruct对象转换与加密处理
我们想要的是string类型的文字,不想要返回1或0,这样就是带有逻辑,需要MapStruct对象转换,这样自动将逻辑处理完,转换成String类型给我们返回,接下来学习MapStruct对象转换。Bean拷贝:user对象包含所有属性,dto对象只有用户名和密码,我们要实现user对象拿到dto中的用户名和密码,将dto中的值赋值给user对象,必须是相同的属性。目标对象是address,拿到address对象中的省份和城市拼接在一起,输出AddressVO对象。
2026-05-04 20:02:31
182
原创 数据字典模块–JSR303参数校验
在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a5c83e5753b14013b670a3538c26dc73.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vOwe1aIc-1777713045156)(https:/ctrl+鼠标左键:点击@RestController注解,进入后可以看到只能放在类上@Target做了限制。注意:开启分组之后,不需要分组校验的属性也需要添加上groups。
2026-05-04 20:02:16
223
原创 四:部署前端和后端
先创建一个nginx文件夹,把html和nginx.config文件放在nginx文件夹中。我们有单独的root窗口不用切换,这一步省略,直接在root下输入命令。切换到nginx目录 ls查看文件有html和nginx.config。先删除原有的mysql,然后创建新的mysql容器。重启cms:docker restart cms。因为给的conf文件有问题 所以我们不挂载了。doc.html是knife默认访问的文档。在数据库选择运行sql文件,这样数据就有了。DockerCompose自行学习。
2026-05-04 20:01:11
231
原创 三:Docker镜像与网络
前面我们一直在使用别人准备好的镜像,那如果我们需要部署自己的Java项目,如何才能把它打包为一个镜像呢?解决方案:借助docker网络功能解决上述问题。通过exit退出容器 进入到briup家目录。提示:将前期要导入的文件提前拖到家目录。实现效果:通过浏览器访问。ctrl+c:终止运行啊。
2026-05-04 20:00:55
196
原创 二:数据卷和挂载本地
现在容器中的html无法直接修改,通过宿主机和数据卷映射的关系,我们可以直接修改数据卷,因为数据卷是容器和宿主机的桥梁,会映射容器和宿主机的内容。容器中的/conf和/html是不变的 如果宿主机发生改变,只需要通过修改数据卷,然后数据卷将修改后的内容映射给容器即可。查官网文档可知,nginx容器内html目录为 /usr/share/nginx/html。之前的nginx没有指定数据卷,我们需要先删除原有的nginx容器。指定容器nginx,映射的是宿主机的html目录下的html。继续进入/var……
2026-05-04 20:00:45
159
原创 一:病虫害 AI 识别系统项目初期准备与Docker初识,VM虚拟机
本系统基于 Jdk17 (默认jdk版本)和 SpringBoot3 搭建核心框架,利用 MyBatisPlus(编码更方便 Mybatis–Flex:一个优雅的mybatis增强框架,可操作多表, mybatis–Plus:简化开发,只做增强不做改变,提高效率,不需要手动写SQL语句(利用id查询数据的代码–针对单表操作) )实现对 MySQL 数据库操作的便捷化,简化数据访问层的开发。操作虚拟机的工具 用来连接虚拟机–––––––––––MobaXterm_Personal_23.2.exe。
2026-05-01 16:46:32
371
原创 栏圈管理模块
不要resultType自己在最上面写resultMap手动映射,id名字为方法+ResultMap,type为映射的vo对象,继承当前的BaseResultMap。data中没有重复元素,所以栏圈容量要去重,方法,在sql语句中加上DISTINCT专门对h_max,最后得到容量没有重复的数字。关于栏圈信息自己在栏圈xml中进行映射,栏舍信息用association标签映射,property为vo中定义的栏舍属性。我们返回的对象是栏圈和栏舍,要求一个对象既有栏圈又有栏舍信息,封装vo对象。
2026-04-19 16:47:17
167
原创 栏舍管理模块
修改,要把自己过滤出去,自己不需要和自己比,就是要跟数据库其他ID比较,不一样才会修改成功,修改对象有id,拿到这个id和集合中所有id对比,相等就要过滤掉,不相等就留下,把自己过滤掉,通过map把名字拿出来,此时就不包含自己的元素,收集成集合,赋值为names除了自己以外其他所以name都拿到了。如果在controller层写了一个异常,int a=10/0;判断栏舍名称是否重复,将前端的栏舍对象的名字和数据库中的名字进行对比是否前端的名字包含在数据库,如果有重复,抛出异常,栏舍名称已存在,重复了,
2026-04-18 10:30:07
226
原创 七牛云注册与云存储
成本低:与块存储方式相比,对象存储是最具成本效益的数据存储类型,并且与云计算搭配,把对象存储的这一特性发挥的淋漓尽致。相比文件存储那一串串的路径,对象存储要方便很多。在utils下新建PathUtils工具类,我们要实现在七牛云中上传的图片名字,是以当前时间命名的,然后在测试类进行测试。1.png是我们自己路径下的一个图片,我们要将其上传到七牛云中,最终实现浏览器可以直接访问图片通过七牛云的外链。在springboot项目(pts)中,完成七牛云文件上传测试,也可以在文档中的开发者中心查看详细操作的步骤。
2026-04-17 20:29:05
173
原创 Mybatis操作数据库
编写SQL语句时等号左边的名字必须与数据库列名保持一致,右边与定义的实体类名称保持一致。1.在接口中定义新增insert,修改update,删除delete方法。创建实体类在bean包下创建User实体类中的属性与数据库列名保持一致。利用Mbatisx插件可以在idea中直接引入数据库中的数据。User是要的对象,给什么能查询到这个对象,答案是id。我们在接口中再定义新增,修改,删除方法对数据库进行操作。2.在映射文件中写SQL语句,id与方法名必须一致。在xml中再配置一个日志输出实现类。
2026-04-15 19:18:44
41
原创 HTTP与Tmocat服务器与SpringMVC
控制器类通常包含多个处理HTTP请求的方法,这些方法被称为处理器方法(HandlerMethod),用于处理不同的URL请求。我们也可以不在request传入原始请求对象HttpServletRequest request,在HelloController类下面直接注入,最终在浏览器展示的效果是一样的。请求可以在减少请求头域的大小后重新提交。写一个getList方法,通过role和user调用这个相同的方法,本质上mvc会报错,不允许这样使用同一个方法名,所以我们要用到注解。
2026-04-15 19:18:26
403
原创 通过nginx访问文件资源
ctrl+shift+esc 启动任务管理器,输入n查看是否运行起来,保证启动。1.打开conf中的配置文件nginx.conf用记事本打开 找到服务器。浏览器可以访问:localhost:8888/img/1.png。2.8888端口号与我们后端端口不冲突,它是nginx自己的。图片1.png是我们pts_resource中的资源。3.我们要将文件转存到那个目录就写在alias中。本地上传nginx代理出来的http。5.双击nginx.exe。4.ctrl+s保存。
2026-04-15 19:17:59
36
原创 检疫登记模块图片上传,nginx自动映射地址
使用.分割数组,拿取mp4,原来数组长度为4,要拿到索引为3的mp4,使用长度-1就拿到了,产生的文件名叫做uuid自动生成的字符串拼接上.和源文件后缀名。3.我们想保留源文件的后缀名,也就是将上传的图片使用自己原有名字保留在pts_resource中,使用固定名称1.png会改变源文件名称。如果上传任意一张jpg格式的图片最后也会上传到我们指定的文件路径下并且会覆盖掉之前上传进来的图片,格式会转换成png。5.我们一般随机生成的文件名是通过时间自动命名的,uuid生成的不符合我们大众使用的命名。
2026-04-15 19:17:35
253
原创 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
116
原创 生猪养殖溯源系统前期准备与SpringBoot框架
Spring 框架通过提供丰富的功能和灵活的编程模型,简化了企业级应用程序的开发过程,提高了代码的可维护性和可测试性,是 Java 开发者广泛使用的优秀框架之一。mapper(dao)持久层:主要是mybatis和spring框架,进行数据库调用,要在Mapper层进行对数据库的增,删,改,查,与数据库进行交互。Spring 是一个开源的、轻量级的 Java 开发框架,用于构建企业级应用程序。代码不分离,jsp代码,html代码,前端后端代码放的地方,但它是同一个部分,那么不同企业级会进行版本控制。
2026-04-05 18:04:44
421
原创 拿取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
240
原创 网络:前端向后端发送网络请求渲染在页面上,将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
75
原创 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
289
原创 2.vue项目创建,安装脚手架,配置文件分析
如果不加那三个router-link,浏览器就不会显示首页,关于,Test这三个字,那么router-view就代表了页面的父容器,子容器就不存在了,但是如果还想跳转就得在网址后面加/about跳转到对应页面。components 组件,重复利用的组件,如:搜索框,菜单栏,这些小组件不需要多次书写代码,写一次就可以了,可重复使用,目的是避免二次开发,打开vscode,打开文件,关闭文件夹,将刚创建好的vue_demo移到vscode中,点开文件图标,直接移动就好。
2026-03-30 19:33:26
185
原创 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
93
原创 物联网项目-------配置模块以及XML,单例模式
在测试类中的resource中,新建一个student.xml文件,文件内容的根元素是bookstore,book元素,包含的属性是category,title元素,包含的属性是语言,包含的内容是书名,year元素,包含的内容是2005,price元素,包含的内容是30.00。现在给了一个方法,有对象才能调用newInstance方法,现在目的通过newImstance创建对象,但没对象,所以这个方法不能像现在这样是实例方法,必须加static变成类方法,通过类名调用newInstance方法。
2026-03-30 08:52:31
345
原创 物联网项目-------日志模块(公共模块)
帮助排查和调试问题,提供性能监测、安全审计、系统监控、用户行为分析等功能,从而提升应用程序的质量和可靠性。实际开发中需要将结果输出到后台文件中,而不是控制台,因为使用者没有idea环境,那么我们就需要把这些代码放在jdk环境下运行,打包成jar包。常见的日志级别包括DEBUG(输出最多的)、INFO、WARN、ERROR、FATAL(严重错误,发生的少)。日志输出会写入我们给定文件的位置,控制台也会输出。在我们项目的各个模块的输出语句换成日志模块的输出。原生的JDK给的输出语句需要手动调用,比较繁琐。
2026-03-29 12:58:59
149
原创 物联网项目 服务器和客户端的公共部分(都有的内容)-----备份模块,随机访问流,数据流
在备份文件中记录字节数,下一次采集就要读出备份文件的字节数,跳过这些字节,采集新的数据,默认windows系统每个数据末尾有回车换行符\r\t,占2个字节,我们读到的字节+2,才会定位到下一行,也就是从新的一行采集数据,如果没有新的字节数进来,我们不需要跳过2。客户端采集每次要从本地文件中采集,我们要避免从头采集,这时就需要有提供一个备份文件,记录当前数据的字节数,然后在采集下一次的数据时,先跳过备份文件中的字节数,入库新的数据,所以我们要用到随机访问流。下一次入库时统一入库。
2026-03-29 12:58:51
330
原创 物联网环境监测项目
如果相等,sql语句不变,ps对象不用更换。数据库中共22条数据,需要根据不同的日期插入到对应表的日期当中,原始数据表采集时间是按照时间先后顺序采集到的数据,所以,当使用后面的ps对象时,前面的ps对象已经使用完成,可以销毁掉了,避免创建多个ps对象资源占用。在服务器接收到客户端的数据后我们要将数据持久化保存,如果存到内存当中,那么程序结束或者断电之后,数据将会消失,不符合我们的需求,所以我们要结合数据库技术,将采集的数据存到数据库当中,这样就可以实现持久化操作。,故而须先获取采集时间中对应的天。
2026-03-29 12:58:42
405
1
原创 在指定的空文件路径中追加内容
3.创建一个文件对象输出流,将内容写到文件中,如果true就会追加,第一次写入值后,会保存在文档中,在重新修改值后,文档中会有两次写入的值。现在输入的值是98,true是追加,所以最终输出ab。一开始输入的值是97,文件中输出的是a。2.@Test 书写测试代码。1.创建一个文件测试类。
2026-03-29 12:58:23
21
原创 JDBC中的连接池和properties类
硬编码:经常修改的数据,例:密码,url路径,版本号,写到代码中容易漏掉,因为将来代码比较多,分布在不同的包下,要一个一个修改,所以将容易修改的代码提取到一个配置文件中,这样直接改配置文件即可,不用频繁改代码。数据库连接池中会有很多connection连接对象,如果用户用的时候在池子中拿,用完直接放回去即可,这样避免了重复创建connection对象,不用再释放资源,直接还到池子中。是固定的操作步骤,运行完案例时,会重新获取连接,等到程序运行完后释放资源,是我们在手动管理连接。
2026-03-29 12:58:04
201
原创 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
364
原创 多线程测试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
35
原创 什么是API
你不用进厨房,只要通过菜单(规则)告诉服务员要什么,厨房做好后通过服务员给你——这就是 API 在工作。API = Application Programming Interface(应用程序编程接口)API 就是软件之间的“翻译官+传话员”,让不同程序、设备能互相调用数据和功能。总结:API 就是程序之间互相沟通、互相调用功能的标准接口。
2026-03-18 21:14:19
31
原创 JUnit单元测试框架
2.mvn官网找到junit依赖使用人数最多的4.12版本,复制到pom.xml。主方法在测试类中只能有一个,太限制了,所以使用JUnit中的测试方法。4.创建JDBCTest 测试类。三个测试类能在一个类中分别运行。1.找到pom.xml文件。3.只在测试环境下有效。优势:可以控制输出顺序。
2026-03-18 21:03:36
38
原创 java中的多线程,Runnable接口,匿名内部类
现在在匿名内部类中直接new Runnable这就是接口类的对象 大括号括起来重写方法。接口实现类的劣势:以后子任务会变多 创建类要更加频繁 所以要使用匿名内部类。格式:Thread thread=new Thread(new 接口(){在操作系统中,启动一个应用程序的时候,会有一个或多个进程被同时创建。并行:指在同一个时刻,两个或多个线程,各自使用一个CPU同时运行。在父类Thread类中指向子类对象 调用start方法。一个应用程序包含多个进程,一个进程中包含多个线程。没有名字的在类的内部定义一个类。
2026-03-18 16:13:13
54
原创 Java中的static
static在方法区单独开辟一个空间 会将library属性提升到类变量,如果调用方法时,直接用类名调用即可,static在方法区有自己独有的一块地方(静态区),会先加载静态区的成员,再加载非静态对象,如果定义了私有属性的学校名字和图书馆,那么会创建三个学校包含三个学校名字和三个图书馆,不符合实际。static修饰类中的数据成员,该成员就成了静态数据成员,也称为类成员;类成员,是属于类的,为这个类所有对象共享,只占用一块内存空间。某市有三所中学,一中,二中,三中,决定共同建一所栋梁图书馆。
2026-03-16 15:51:26
38
原创 Mysql数据库-管理和存储数据库(开源管理系统)与JDBC操作数据库步骤,JUnit以及如何将压缩包中exe程序添加上桌面图标
其以行和列的形式 存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了 数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由 二维表 及其之间的关系组成的一个 数据组织。因为JUnit单元测试框架,不是JDK自带的,所以我们需要额外导入JUnit的jar包。mysql -h’主机名’ -P’端口号’ -u’用户名’ -p’密码’可以通过下面的网站配置pom.xml中的Junit依赖。
2026-03-16 10:48:58
96
原创 css盒模型中的外边距
如果设置右侧外边距那么不会跑到右边 因为坐标原点在左上角 我们设置了只能是与右边的边框有距离。面试:让一个块级元素水平居中。
2026-03-15 18:16:15
42
原创 CSS中盒模型的边框属性
使用height:100%时,父元素高度是0,不会生效,所以高度默认由元素内容撑起 如果div中不写那么即使设置了高度也不会生效 如果设置px就没问题 %就有问题。2.上 右 下 左 > 上 右 - 左边的取值和右边的⼀样 下边的取值和上边⼀样。当我们需要设置四个不同的边框属性是,生效顺序是顺时针 上 右 下 左。需要屏幕自适应就设置width:80% 高度不用设置 设置也不生效。1.上 右 下 左 > 上 右 下 - 左边的取值和右边的⼀样。3.上 右 下 左 > 上 - 右下左边取值和上边⼀样。
2026-03-15 17:51:12
68
原创 多个对象通过集合实现io流的读写
List<Student(对象)> list(集合名字)=new ArrayList(子类)由于student在List集合中 所以Student也需要序列化。将多个对象组成集合来写 最后输出到指定文件中。下面把字节数组读出来 转换成java对象。这样5个对象就转换成了字节数组。List本身就实现了序列化。父类引用指向子类对象。
2026-03-13 21:55:48
47
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅