JavaEE
文章平均质量分 91
JavaEE知识
过✪
岁月漫长,值得等待
展开
-
快速上手Git
git的使用教程,帮助您快速上手原创 2024-01-29 22:58:21 · 1701 阅读 · 0 评论 -
Redis基础
Redis基础知识以及相关操作命令原创 2024-01-16 21:59:33 · 842 阅读 · 0 评论 -
对战五子棋——网页版
实现一个网页版的五子棋对战程序,用户可以进行注册,注册完成后登录进入游戏大厅,会显示用户的天梯分数记录以及比赛场次的记录,会根据用户的天梯分数实现匹配机制,实现两个玩家在网页端进行五子棋的对战。@Data@Data@Data// 胜利玩家的 userId。原创 2023-07-16 15:11:52 · 4701 阅读 · 1 评论 -
竞赛信息管理系统——SSM
竞赛信息管理系统,针对竞赛信息管理的需求,面向对竞赛管理的管理员用户,基于B/S体系架构,后端采用SpringBoot技术,前端使用BootStrap框架,实现对竞赛信息进行增删改查功能,管理员也具有注册、登录以及注销功能。根据session会话信息来判断用户是否登录,用户访问页面时如果不是登录状态,就会将用户跳转到登录页面,让用户登录之后在进行操作。@Component/*true:已将登录状态false:未登录状态*/@Overrideif(session!原创 2023-07-16 11:04:43 · 484 阅读 · 0 评论 -
Spring 事务
事务:就是将一组操作封装成为一个整体执行单元,要么全部执行,要么都不执行。假如事务执行了一半发生了错误就会对已经执行的部分进行回滚操作。常见的应用场景就是转账事务,转账过程中发生错误就会全部回滚到事务最初的状态。原创 2023-04-15 22:00:00 · 519 阅读 · 3 评论 -
利用AOP实现统一功能处理
重写HandlerInterceptor接口中的preHandler方法,先获取到session对象,判断对象是否为空来判断登录状态,若未登录则自动跳转到登录页面。@Component@Override//先得到session对象,传入参数为false,表示Session为空时不会自动创建,传入参数为true则反之。if(session!= null){//表示登录成功//表示未登录,则请求重定向到登录页面将自定义的拦截器添加到框架的配置中,并且设置拦截的规则。原创 2023-04-10 23:30:00 · 739 阅读 · 0 评论 -
Spring AOP
APO指的是面向切面编程,与OOP(面向对象)类似,是对某一类事情的集中处理。那么Spring AOP就是这个思想的具体实现。例如对用户的登录权限进行校验,在没有AOP之前就需要在判断用户是否是登录状态的页面都需要实现或者调用验证用户登录的方法,但是在使用AOP之后,就只需要在某一处进行配置,所有判断用户是否是登录状态的页面就全都可以实现用户登录验证了。定义切面时就需要创建一个类,添加@Aspect注解表示该类是一个切面。@Aspect //表示当前类是一个切面@Component。原创 2023-04-09 22:00:00 · 319 阅读 · 0 评论 -
利用MyBatis框架操作数据库
MyBatis是一个持久化框架,支持自定义SQL、存储过程以及高级映射,是一个优秀的ORM(对象关系映射)的框架。MyBatis框架的特点就是比较灵活。原创 2023-04-01 21:30:00 · 1712 阅读 · 2 评论 -
利用Spring MVC开发程序
Spring MVC是基于Servlet和MVC设计模式下实现的web项目,同时也是Spring框架中的web模块,Spring MVC是随着Spring产生而存在的一个框架。那么什么又是MVC设计模式?在idea中创建一个Spring MVC的项目的步骤如下:1、点击新建一个项目:2、选择版本号和添加相关依赖点击Finish后项目创建完成。原创 2023-03-24 10:39:16 · 366 阅读 · 0 评论 -
简介SpringBoot
SpringBoot是在Spring的基础上引入的,引入SpringBoot就是为了简化Spring的开发,SpringBoot的开发效率相比Spring也是达到了质的提升,目前SpringBoot也是主流的框架。快速集成框架;内置了运行容器,无需再配置Tomcat等Web容器,可以直接运行和部署程序;快速部署项目,无需外部容器即可启动并运行项目;使用注解和配置的方式进行开发,完全抛弃繁琐的XML;支持更多的的指标,可以更好了解项目的运行情况;所谓日志文件就是记录程序运行时的信息。原创 2023-03-20 17:17:10 · 396 阅读 · 5 评论 -
Spring简介
那么,什么又是ioc容器呢?ioc容器是控制翻转的意思。例如在传统的程序开发中构建一个小汽车:这样轮胎的属性值发生改变之后,依赖其的底盘、车身和汽车都需要发生修改,代码开销大。但是控制翻转的思想是注入传递的方式,将轮胎对象逐级向上传入,这样底层代码发生改变时,整个调用链无需改变,使代码之间解耦,程序设计更加灵活。原创 2023-03-18 21:00:00 · 460 阅读 · 1 评论 -
简介JVM
对象新创建出来的时候先放在伊甸园,当伊甸园中的对象熬过一轮GC扫描,利用复制算法就会被拷贝到幸存区,在后序的几轮GC中幸存区的对象还是利用复制算法在幸存区之间来回拷贝,每一轮又会进行淘汰,在持续若干次之后,对象就会进入老年代,对象越老,继续存活的可能性就越大,老年的扫描频率低,并且老年代使用标记整理的方式进行回收。就是给对象再开辟一块区域用于引入计数器,当调用这个对象时,计数器就会加1,当引用失效的时候,计数器就会-1,如果计数器为0,该对象就会变为“垃圾”,进行回收。类似于顺序表删除元素。原创 2023-02-18 18:04:10 · 295 阅读 · 2 评论 -
实现博客系统
实现前后端分离的博客系统原创 2023-02-17 15:40:26 · 1121 阅读 · 3 评论 -
Servlet实现表白墙
基于Java代码实现表白墙原创 2023-02-11 19:07:07 · 5487 阅读 · 5 评论 -
简介Servlet
了解Servlet实现动态页面原创 2023-02-10 16:21:17 · 863 阅读 · 3 评论 -
Tomcat简介
了解tomcat的安装和使用原创 2023-02-08 18:35:33 · 3515 阅读 · 12 评论 -
HTTP协议
了解HTTP协议的相关内容原创 2023-02-07 20:41:09 · 1443 阅读 · 2 评论 -
简介CSS
了解CSS编程原创 2023-02-02 18:51:54 · 479 阅读 · 6 评论 -
HTML简介
全面了解HTML的基础知识原创 2023-01-31 16:20:21 · 2627 阅读 · 4 评论 -
TCP/UDP网络编程
快速学会Java代码实现简单的网络编程原创 2023-01-28 14:12:38 · 2611 阅读 · 5 评论 -
网络编程基础知识
网络通信经过所有的网络设备都必须遵守的约定,简单来说就是收发双方定义的通信规则,只有彼此遵守这个约定,通信才能进行,网络协议三要素:语法、语义、时序。:用于定位主机的网络地址,IP地址由4个字节组成,常用点分十进制来进行表示,每个字节用十进制数表示,四个字节之间用.分隔,例如:126.2.34.9。特殊的IP地址:127.*(第一个字节为127的IP地址),主要用于本机回环测试,即本机到本机之间网络通信测试。从物理层开始接收数据,到物理层又逐一封装起来,相当于是封装的逆过程。:用于定位主机中的进程。原创 2023-01-27 18:55:07 · 4894 阅读 · 2 评论 -
Java实现文件操作
在计算机中,通常都需要文件系统来管理文件,文件系统中通过“树形” 组织文件和目录,文件可以分为文本文件和二进制文件,如果文件记事本打开出现乱码就是二进制文件,否则就是文本文件,常见的二进制文件有:.txt,.c,.java等;常见的文本文件有:.doc,.jpg,.class以及office系列的一些文件。在文件系统中,文件的路径可以分为绝对路径和相对路径。绝对路径:就是从根目录开始到文件,也就是从盘符开始的文件,例如:D:\bin\aa\c.txt。原创 2023-01-07 10:21:14 · 2297 阅读 · 3 评论 -
多线程问题(四)
ABA问题就是在CAS进行比较的时候不能确定内存中的值是不是未发生任何改动的预期的旧值,就比如说有两个线程,线程1首先拿到内存中的值记录为oldValue,然后将oldValue与内存中的值进行对比,但是此时有可能是线程2对内存中的值先加1再减1进行了两次操作,虽然此时内存中的值未变,但实际上已经进行了两次修改,此时线程1就无法判断内存中的值是oldValue还是已经经历了一个变化过程。原创 2022-12-31 23:24:52 · 820 阅读 · 1 评论 -
多线程问题(三)
但是此时的代码还存在一个问题:就是队列中的任务的执行时间还没到,执行线程就会一直进行时间判断,处于忙等的状态,于是就可以利用wait和notify,wait等待任务执行时间减去当前时间,当在队列中加入任务时,就需要进行唤醒,需要查看新加入的任务是否需要执行。每次创建和销毁线程时,都需要在内核态支持运行,这样的效率十分低,所以就在反复创建线程时就使用线程池直接在用户态运行,这样就可以极大地减少每次创建线程和销毁线程的损耗。先执行main方法,在3500ms之后执行TimerTask中的任务。原创 2022-12-29 16:22:01 · 558 阅读 · 4 评论 -
多线程问题(二)(安全问题)
出现上述情况导致的结果就是更新丢失,例如是自增操作: 假设内存中的变量的初始值为0,t1就先把0加载到寄存器,但是t2进行抢占,也从内存中把0加载到寄存器然后自增为1,然后将1加载回内存,然后t1再自增为1,再将1加载回内存,按道理两次自增应该为2,但是由于线程的抢占以及自增操作是非原子的就会出现上述情况。线程的抢占式执行就是在一个线程的执行过程中,另一个更优先的进程会抢占当前线程执行的任务,当前线程就会被迫中断,这是引发线程不安全的根本原因,但是线程的调度是随机的,这是由系统决定的,我们无法改变。原创 2022-12-25 21:22:45 · 509 阅读 · 1 评论 -
多线程问题(一)
自行设置一个标志位作为中断条件,但是这样写并不严谨,后续博客会解释。try {}}});t.start();try {}}}原创 2022-12-23 21:10:10 · 380 阅读 · 1 评论