- 博客(104)
- 收藏
- 关注
原创 docker
一款产品从开发到上线,要经历操作系统、运行环境、应用配置等多种捕捉,尤其是各种版本的迭代之后,不同版本环境的兼容,对运维人员来说是一种巨大的考验。之前在服务器配置一个应用的运行环境,要安装各种软件,比如jdk、mysql、tomcat等,不仅安装和配置麻烦,还不能跨平台docker的出现就解决了这个问题,它通过将应用及其依赖环境打包成标准化的镜像,实现了“一次构建,到处运行”,彻底消除了因环境差异导致的部署失败和跨平台兼容难题。
2026-03-03 20:12:41
443
原创 nginx
部署的时候,后端是打成jar包,请求太多的时候,一台服务器搞不定了,就需要让jar包放到两台甚至多台服务器上,但随之就会出现很多问题,每台服务器的ip是不同的,用户咋可能记得这么多ip,为了能让用户的请求平均达到每一台服务器上,所以需要有一个反向代理的功能,就是不再去请求部署项目的主机,而是只固定请求一台主机(nginx),请求是打到nginx上,nginx能实现反向代理负载均衡,相当于一个请求转发器,把对应的请求发到不同的主机上(类似平均分配)当客户端主动使用代理服务器时,此时的代理叫正向代理。
2026-03-03 17:01:43
745
原创 WebRTC--流程
本文介绍了WebRTC技术及其相关组件的协同工作机制。WebRTC是浏览器内置的实时音视频通信技术,通过ICE框架实现设备间的连接。STUN服务器帮助NAT后的设备获取公网IP和端口,实现点对点连接。WebSocket与Netty服务器配合,负责设备注册和信令交换。通信流程分为设备注册和呼叫连接两个阶段,最终通过WebRTC实现不经过服务端中转的P2P音视频数据传输。
2026-02-04 17:48:19
674
原创 Spring事务管理(SpringBoot)
张三给李四转钱:必须同时执行两个sql 1.查询张三的账户余额,余额充足可以转钱 2.将张三的钱转给李四李四买一本书 1.查询数据是否还有库存 2.库存充足,将数据加载到购物车当多条sql语句进行增删改操作时,需要添加事务,因为。
2026-01-11 20:03:45
1083
1
原创 FineBI数据连接失败
在MySQL数据库中配置用户有足够的权限来进行连接,保证用户 root 必须能够从 FineBI 所在的主机连接到hadoop3。这样设置可以允许用户从任意主机(%)进行连接。
2025-01-24 10:59:14
772
原创 Hive数据仓库中的数据导出到MySQL的数据表不成功
(2)权限问题:因为MySQL 数据库拒绝了 root 用户从 hadoop3 主机的连接请求,root 用户没有从 hadoop3 主机进行连接的权限。解决:通过 MySQL 的授权命令来授予权限。(1)没有下载flume和sqoop。
2025-01-24 10:57:40
968
原创 红黑树的基础内容
5.从根节点到任意一个叶子节点所走过的路径包含相同数目的黑色节点。4.如果一个节点不是红色的,那它的子节点一定是黑色的。(2)没有5节点,所以要把22/15放在上面。因为①红黑树时间复杂度相当于有序二叉树,稳定。1.红黑树的节点不是红色的就是黑色的。最长链不能超过最短链二倍(最大结论)2.红黑树的根节点一定是黑色的。6.根据红黑树特点得出结论。红黑树为什么是最优二叉树?②平衡调整比平衡二叉树简单。3.叶子节点全是黑色的。它是构建红黑树的基础。(7)32又被挤上去。
2025-01-24 10:34:13
289
原创 ES6语法
可以查看控制台的输出:3.let 不存在变量提升什么是变量提升变量提升(Hoisting) 是指 JS在运行代码前,会将变量和函数的声明提升到当前作用域的顶部。这一特性源于 JS 的编译机制,在编译阶段就会为变量和函数分配内存。具体为:var 的提升:变量声明被提升到作用域顶部,并初始化为 undefined。函数声明的提升:函数声明被完整提升到作用域顶部,可以在声明前调用。let 和 const 的提升:声明会被提升,但不会初始化,在初始化之前的访问会触发临时死区(TDZ)查看控制台的输出:
2025-01-23 21:02:58
775
原创 MyBatis-Plus的通用枚举、代码生成器和多数据源
表中的有些字段值是固定的,例如性别(男或女),那么就可以使用MyBatis-Plus的通用枚举 来实现。
2025-01-23 20:06:24
473
原创 MyBatis-Plus的插件
UserMapper中定义接口方法import com/** mybatisPlus的持久层接口* 继承BaseMapper<T>---框架提供好的* 向上提取的思想/*** 根据年龄查询用户列表,分页显示* @param page 分页对象 ,xml中可以从里面进行取值 ,传递参数 Page 即自动分页 ,必须放在第一位* @param age 年龄/** mybatisPlus的持久层接口* 继承BaseMapper<T>---框架提供好的。
2025-01-23 20:01:35
783
原创 MyBatis-Plus的条件构造器和常用接口
Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 QueryWrapper : 查询条件封装 UpdateWrapper : Update 条件封装 AbstractLambdaWrapper : 使用Lambda 语法 LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper。
2025-01-23 19:56:50
593
原创 MyBatis-Plus之常用注解
经过一系列的测试,在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,只是在 Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表由此得出结论, MyBatis-Plus在确定操作的表时,由BaseMapper的泛型决定,即实体类型决 定,且默认操作的表名和实体类型的类名一致。
2025-01-23 19:53:11
1466
原创 MyBatis-Plus之通用service
说明:通用service用前缀命名方式区分Mapper层避免混淆,get:查询单行,remove:删除,list:查询集合,page:分页MyBatis-Plus中有一个接口 IService和其实现类 ServiceImpl,封装了常见的业务层逻辑IService:二、创建自己的service接口和实现类1.UserService接口2.UserServiceImpl三、测试类1.查询总记录数2.批量插入插入的五条数据:name:szy0 szy1 szy2 szy3 szy4
2025-01-23 19:41:47
1220
原创 MyBatis-Plus之BaseMapper
这是因为MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id(可以在application.yml配置文件里改)最终执行的结果,所获取的id为:1585451009。先插一条再删,id是2084577282。只返回第一个字段的值。
2025-01-23 19:27:26
662
原创 七牛云图片服务器
图片服务器有很多:阿里云的OSS、七牛云的 Kodo和腾讯云的COS,这里介绍的是七牛云的kodo。存储区域选离自己近点的,选公开这样别人访问时也可以看到。测试完成,下面就可以用到自己的项目了。先是注册、登录、认证,步骤很多。
2025-01-19 14:02:58
605
原创 Apifox生成接口文档
找到一个controller,右键 upload to Apifox。网址:https://api.apifox.cn。之后点击 测试令牌 ,测试成功之后点击apply。这里有各种形式的导出,我选的是Markdown。之后点导出,会下载到浏览器指定的下载路径。
2025-01-19 13:42:33
1091
原创 sprintboot实现增删改查的小demo
文章目录一、引入maven的依赖和starter二、配置文件三、创建druid数据源注册类四、开启下划线到驼峰命名的自动映射五、数据库建表六、User实体类七、UserMapper接口八、UserMapper.xml文件九、UserService接口十、UserServiceImpl实现类十一、登录实体类1.mapper接口2.mapper.xml文件3.service接口4.service实现类5.controller十二、页面1.登录页面2.用户列表页面3.添加页面4.修改页面一、引入maven的依赖
2025-01-18 22:07:49
1193
原创 springboot之YAML语法
比如有一个属性email(配置文件里也有哈),如果使用的是@Value,它是不支持@Email进行表单数据校验的。支持的写过了,就是上面的对象里面含对象、数组那的也算、Map什么的,现在写不支持的。只要是左对齐的一列数据,都是同一个层级的。Controller跟 1.普通的值例子1 里面的一样,没有变。key: value :在下一行来写对象的属性和值的关系;Controller跟 1.普通的值例子1 里面的一样,没有变。没有报错,直接输出了,可见@Value是不支持数据校验的。
2025-01-18 22:01:47
1281
原创 maven聚合项目部署到阿里云服务器
一般是CentOS,相当于一个Linux操作系统先进行个人认证,还可以进行学生认证打开xhell新建连接输入用户名和密码出现这个表示连接成功在shell里输命令出现这个表示安装成功可以查看java版本我安装的5.7版本的出现这个表示安装成功启动mysql刚安装的mysql没有密码,要设置(2020是我设置的密码)登录验证一下:登陆成功下载tomcat,后缀一定要是tar.gz找到自己下载的tomcat和usr/local,双击就行在xshell里解压启动tomcat。
2025-01-16 21:39:02
1371
原创 SSM项目简单的增删改查
-加载spring-mvc.xml配置文件-->-- 配置spring创建容器时要扫描的包 -->--解决post请求中文乱码的过滤器-->--加载spring-mvc.xml配置文件-->"业务层,查询所有账号--------------"-- 配置spring开启注解mvc的支持-->"业务层,查询所有账号--------------"--其他所有的方法都使用默认的事务设置-->--开启注解扫描,扫描service-->--解决post请求中文乱码的过滤器-->
2025-01-16 21:09:38
1318
原创 SSM项目整合
(1)目的:在controller中能成功的调用service对象中的方法。这里用了注解,所以需要把AccountDao.xml文件里的东西注释掉。3.spring整合springMVC。4.spring整合mybatis。2.spring配置搭建。
2025-01-16 21:01:34
1174
原创 mybatis延迟加载、缓存
延迟加载:当前查询用户的时候,没有把该用户所拥有的账户信息查询出来,而是使用账户数据的时候,再去查询账户的数据。②查询的时候,先从SqlSession的缓存中查找,如果有,直接返回,如果没有,再去查询数据库。可以看出,sql语句只执行了一次,说明它是查的缓存,但是地址不一样,因为他从缓存里组装出来的。二级缓存的适用对象地址不同,但是也从缓存加载,二级缓存存储的是零散数据,是组装出来的对象。(2)查询用户的时候,可以先不查账户信息,需要账户信息的时候再去查,这时选择延迟加载。
2025-01-16 20:47:22
1404
原创 mybatis查询(一对一、多对一、一对多、多对多)
多的一方(Account类)基本属性加一个一(User user)的属性,sql语句写在多的一方,mapper里用javaType和association。一的一方基本属性加一个集合属性,sql语句写在一的一方,mapper里用ofType和collections。一对多(user---account)、多对一(account---user)mapper里用ofType和collections(按一对多的形式写)多对多需要三张表,第三张表是user和role两张表的id。
2025-01-16 20:32:14
714
原创 mybatis--事务
发现插进去了一条数据,没有回滚,说明这种方式没有用到事务,那在总配置文件中配置事务管理就没意义了。验证,写两个user,中间模拟个异常,会发现他不会回滚。第一个红色部分括号里true,第二个红色部分注释掉,这种方式是每一个增删改方法都要写一遍,但用到了事务。验证,写两个user,中间模拟个异常,会发现他回滚了。这种方式是每一个sql都提交,没有事务管理了。这行注释打开,用commit()提交事务。可以发现并没有数据插入,可见事务回滚了。下面这行括号什么也不行。
2025-01-16 16:13:15
614
原创 MyBatis参数详解+mybatis-config.xml配置文件
在写配置文件的时候,可以指定包来起别名,这样写返回类型或者传参类型的时候可以简写。
2025-01-16 11:39:50
1773
原创 MyBatis代理Dao方式的CRUD操作(增删改查)及#{} ${}区别
(2)#{}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,#{}括号里可以是value或其他名称。${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。(4).${}方式一般用于传入数据库对象,例如列表和表名,#{}方式一般用来传递接口传输过来的具体数据。(5)由于#{}方式具有更高的安全行,所以能用#{}的地方尽量不要使用${}。UserTest2类。
2025-01-16 11:22:40
322
原创 springBoot配置文件
这两个是互补的,只是后缀不一样,格式不一样,用得比较多的是application.yml(YAML也行)修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好以前的配置文件;大多都使用的是 xxxx.xml文件;YAML:以数据为中心,比json、xml等更适合做配置文件;例子:XML。
2025-01-14 12:22:58
902
原创 SpringMVC框架中的拦截器
①findAll1()方法被拦截了,输出拦截器preHandle方法执行了,②但是放行了,所以再执行findAll1()方法,输出controller方法执行了... , ③且在postHandle方法里手动设置了跳转页面,那么controller方法中跳转的页面将不会显示,所以跳转到postHandle.jsp页面。2.可以定义拦截器链,拦截器链就是将拦截器按一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。对方法的增强,之前干什么事,之后干什么事)
2025-01-14 11:43:21
1043
原创 springMVC--响应数据和结果视图
这样返回的都是字符串(除了save2(它是response的那种写法)和save3(它是MpdelAndView对象,被翻译成json字符串以后还是一个对象,还是能解析成ModelAndView对象))(1)ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图。controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。点返回String:(是一个字符串,不是页面)在MyController里加了一个方法。
2025-01-13 16:34:32
963
原创 springMVC---resultful风格
(3)web.xml中配置一个Filter过滤器org.springframework.web.filter.HiddenHttpMethodFilter(注:这个Filter必须要在处理乱码的Filter)(2)在form表单中添加一个额外的隐藏域 _method="put"/_method="delete"1.Get和Post请求就是在form表单里设置method="get"/method="post"他们的请求路径一样,是根据不同的请求方式去执行后台的不同方法。(1)有post请求的form标签。
2025-01-13 16:09:15
611
原创 springMVC---常用注解
(2)required:请求参数中是否必须提供此参数,默认是true(必须提供),false(表示可以不传值)defaultValue:如果没有value提供的值,则使用defalutValue的值。(1)请求路径一样,可以根据不同的请求方式去执行后台的不同方法。把请求中的指定参数传递给控制器中的形参赋值。(1)value:请求参数中的名称。①DeptController类。①DeptController类。①DeptController类。加了一个save2()方法。加了一个save3()方法。
2025-01-13 15:15:23
1100
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅