- 博客(25)
- 收藏
- 关注
原创 Semaphore 与 线程池 Executor 有什么区别?
Semaphore是Java 并发编程(JUC)中一个重要的同步工具,它的作用是控制对特定资源的并发访问。通过Semaphore,你可以限制同时访问某些资源的线程数量。它主要用于解决多线程访问共享资源时可能出现的资源竞争问题。二、Semaphore 的基本原理Semaphore内部维护了一个计数器,表示允许访问资源的线程数量。线程通过调用acquire()方法来获取一个许可(减少计数器),通过调用release()方法来释放一个许可(增加计数器)。
2025-01-27 17:38:11
904
原创 NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (二)
实时通信应用 的主流技术, 整理本文的目的是。在现代的中,使用 WebSocket、MQTT 或 SignalR 等协议更为普遍。若您想了解 当前主流的有关的技术 , 请移步他文。
2025-01-22 19:26:44
451
原创 NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (一)
在 Java 中,NIO(New Input/Output)是 Java 1.4 引入的一个新的 I/O 类库,它提供了比传统的 I/O(如java.io包)更高效的 I/O 操作。NIO 提供了更好的性能,尤其是在需要处理的场景中(例如,等)。与传统 I/O 不同,NIO 是基于和的,支持非阻塞模式,使得在处理 I/O 操作时可以更加高效地使用系统资源。
2025-01-22 14:51:34
1247
原创 Java异步编程 | CompletableFuture--实现复杂的异步控制流
是用于 创建一个异步任务 并 返回结果 的工厂方法,通常结合线程池使用:2. 注释说明CompletableFuture.supplyAsync():这是一个静态方法,用于异步地执行传入的 函数(在这里是 lambda 表达式)。它会在一个独立的线程中执行这个任务,默认使用 线程池来执行。Thread.currentThread().getName():打印当前执行异步任务的线程的名字,能帮助我们看到异步任务是如何在线程池中执行的。future.get(): 方法是阻塞的,调用它会让当前主线程
2025-01-21 18:12:36
846
原创 jdk17卸载后换jdk1.8遇到的问题
3、但是配置完之后,在cmd中输入java -version后,命令行无反应(没有报“Java既不是内部命令,也不是外部命令的错误”)1、找到jdk17所在文件夹,将文件夹进行删除。(问题就源于此,因为没删干净)
2024-07-03 22:30:01
666
原创 七、若依--P17--P18【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】 https://www.bilibili.com/video/BV1pf421B71v/?
2024-06-24 12:21:50
1115
原创 六、若依--P15--P16【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】 https://www.bilibili.com/video/BV1pf421B71v/?
2024-06-24 01:28:32
828
原创 五、若依--P14【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】 https://www.bilibili.com/video/BV1pf421B71v/?
2024-06-23 19:02:23
928
原创 四、若依--P13【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
/ 引入后端api接口// 获取当前实例代理对象,用于访问组件数据、方法// 获取课程学科的数据字典//接下来通过ref定义了一些简单类型的响应式对象// 列表数据,用于接收后端返回的课程列表// 是否显示弹框// 是否显示加载状态// 是否显示搜索栏// 复选框,被选中id的数组// 复选框,是否单选,用于高亮修改、删除按钮;true表示不可用// 复选框,是否多选,仅高亮删除按钮// 总(记录)条数// 用于区分新增、修改对话框标题。
2024-06-23 14:32:06
662
原创 三、若依--P12【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
ruoyi-vue数据库设计包含了多个表结构,用于支持系统的各种功能模块。这些表可以根据它们的功能和用途进行分类,以便在后期使用时能够快速定位和理解。以下是对这些表结构的分类和简要说明。
2024-06-23 00:16:16
1371
原创 二、若依--P6-P11【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】 https://www.bilibili.com/video/BV1pf421B71v/?
2024-06-22 10:03:49
648
原创 一、若依--P2--P5【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】 https://www.bilibili.com/video/BV1pf421B71v/?
2024-06-21 23:45:54
1538
原创 二、用户中心项目笔记----笔记整理自鱼友炎
从request中取出session,将用户登录态标识移除掉 (HttpServletRequest request)
2024-06-18 16:53:12
310
原创 一、用户中心项目笔记(自用)----项目教学来自鱼皮
企业核心的用户中心系统,基于 Spring Boot 后端 + React 前端的,实现了用户注册、登录、查询等基础功能。
2024-06-16 23:51:07
1132
原创 MySQL中设置两个默认时间(createTime字段和updateTime字段)
在MySQL中,您可以使用DATETIME数据类型并设置默认值为来实现这一点。以下是一个示例,展示了如何为createTime和updateTimeupdateTime这样,您就可以确保这两个字段总是反映了记录的创建和最后更新时间。TIMESTAMP。
2024-06-16 01:09:46
1329
原创 五、若依管理系统——添加用户数据预加载(流程、代码理解
getTreeselect():获取部门树状图(因为在点击新增用户后,有一个下拉列表是选部门的。getUser(): 获取用户其他的一些信息,进行回调,进行下拉列表的预填充。后端:查询到预加载的数据,传给前端,回填到表单中。reset():表单重置,把表单里的内容清空。
2024-06-09 17:25:25
333
原创 MyBatisPlus--黑马2024最新SpringCloud微服务开发与实战前置技能学习笔记
我们可以利用MyBatis的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。
2024-06-09 11:39:20
1358
原创 四、若依管理系统——用户数据查询、部门树状图(代码解读)
因为SysDept里的东西前端不一定都要,我们为了把多余的东西去掉,就要做一个类型转换。大致流程:前端发请求,后端把数据取出来,想办法把数据弄成一个树,再返回、加载就可以了。// 如果returnList为空,说明没有顶级部门,直接返回原始的depts列表。前端发路径为‘/system/dept/treeselect’的get请求,就到后台了。// 如果相同,说明n是t的子节点,将其加入到tlist中。// 创建一个空的SysMenu列表,用于存储找到的子节点。2、遍历顶级节点的子节点,再找到它的子节点。
2024-06-08 19:15:30
2703
原创 三、若依管理系统——首页加载逻辑、用户数据PageHelper分页
并且存入到一个threadlocal里面,然后再查询执行的时候呢,获取当前线程里面的这些分页参数,再通过拦截器自动的在sql语句中添加分页参数,之后呢就实现了这样一个分页查询。很显然,树状图和列表中的数据是由后端提供的,前台的话只是去加载。那么也就是说,我们跳转到这个页面之后,它就立马去发请求,从后台请求一个集合、一个tree。分页参数设置到PageHelper提供的对象里面,然后在Mybatis去查询的时候呢,会通过。,拦截到这个sql语句,把这边设置的参数加进去,从而实现一个分页的操作。
2024-06-08 11:37:44
649
原创 二、若依管理系统----获取用户角色和权限、获取动态菜单路由
总之,在recurionFn()方法中进行循环、递归(待补充)将这些数据拼装成了一个一级菜单、二级菜单、三级菜单的一个嵌套。把数据库里面的,符合角色身份的菜单,查询出来,想办法封装成一个对象,把这个对象传递到。总结:在加载页面的时候,去发送一个请求getRouters(),getRouters()就会把数据库里的数据查询出来,然后把数据组装、嵌套成一个三级菜单的结构,把这个东西丢到前端,前端用一个循环迭代出来,就把菜单加载出来了。3、根据后端查出来的数据menus,然后动态的生成前端的一个菜单。
2024-06-08 00:03:19
1687
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人