
JavaEE
文章平均质量分 78
JavaEE
摸鱼王胖嘟嘟
科班大三,记录学习用
展开
-
【Redis】Spring/SpringBoot 操作 Redis Java客户端
2.Lettuce(主流)原创 2023-08-09 11:50:57 · 775 阅读 · 0 评论 -
【Redis】初学Redis
5.使用命令“redis-cli shutdown”先关闭 redis 服务,再使用“redis-server /etc/redis.conf &”启动 redis 服务。3.将 redis.conf 中的“protected-mode yes” 改为“protected-mode no”;1.将 redis 配置文件下载到本地:redis 配置文件是 linux 下的 /etc/redis.conf;4.将修改后的 redis.conf 上传至 liunx 下的 /etc 目录;原创 2023-08-09 11:01:12 · 646 阅读 · 0 评论 -
【Spring框架】Spring事务
但也会有新的问题,⽐如此级别的事务正在执⾏时,另⼀个事务成功的插⼊了某条数据,但因为它每次查询的结果都是⼀样的,所以会导致查询不到这条数据,⾃⼰重复插⼊时⼜失败(因为唯⼀约束的原因)。但由于在事务的执⾏中可以读取到其他事务提交的结果,所以在不同时间的相同 SQL 查询中,可能会得到不同的结果,这种现象叫做不可重复读。SERIALIZABLE:序列化,事务最⾼隔离级别,它会强制事务排序,使之不会发⽣冲突,从⽽解决了脏读、不可重复读和幻读问题,但因为执⾏效率低,所以真正使⽤的场景并不多。原创 2023-08-05 16:45:32 · 419 阅读 · 0 评论 -
【Spring框架】SpringBoot统一功能处理
统⼀异常处理使⽤的是 @ControllerAdvice + @ExceptionHandler 来实现的,@ControllerAdvice 表示控制器通知类,@ExceptionHandler 是异常处理器,两个结合表示当出现异常的时候执⾏某个通知,也就是执⾏某个⽅法事件。统⼀的数据返回格式可以使⽤ @ControllerAdvice + ResponseBodyAdvice 的⽅式实现。2.@ExceptionHandler(Exception.class)统一返回的对象。原创 2023-08-03 16:30:22 · 800 阅读 · 0 评论 -
【Spring框架】Spring AOP
AOP(Aspect Oriented Programming):⾯向切⾯编程,它是⼀种思想,它是对某⼀类事情的集中处理。⽐如⽤户登录权限的效验,没学 AOP 之前,我们所有需要判断⽤户登录的⻚⾯(中的⽅法),都要各⾃实现或调⽤⽤户验证的⽅法,然⽽有了 AOP 之后,我们只需要在某⼀处配置⼀下,所有需要判断⽤户登录⻚⾯(中的⽅法)就全部可以实现⽤户登录验证了,不再需要每个⽅法中都写相同的⽤户登录验证了。原创 2023-08-03 11:43:30 · 551 阅读 · 0 评论 -
【MyBatis】MyBatis 动态SQL
if>原创 2023-08-03 10:28:17 · 132 阅读 · 0 评论 -
【MyBatis】初学MyBatis
MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录。MyBatis ORM(对象关系映射框架) 实现更加简单的操作数据库的框架。为了方便开发MyBatis,实现XML和对应的接口之间的快速跳转,可以安装一个MyBatisX的插件。**预执行:**它的执行是安全的可以防止SQL注入。原创 2023-08-02 17:10:37 · 194 阅读 · 0 评论 -
【Spring框架】SpringMVC
Spring MVC 特性:1.Spring MVC 是一个Web框架。2.Spring MVC 是基于Servlet API 构建的。MVC是Model View Controller 的缩写,它是软件工程中的一种软件框架模式,它把软件系统分为模型、视图和控制器三个基本部分。MVC执行流程:1.用户的请求首先先到Controller。2.Controller将请求转发给Model。3.Model处理业务并将数据结果给Controller。4.Controller会将数据给View引擎。原创 2023-08-01 16:32:00 · 163 阅读 · 0 评论 -
【Spring框架】springboot日志
1.通过日志工程得到日志对象2.通过日志对象提供的打印方法实现打印。原创 2023-08-01 10:46:00 · 229 阅读 · 0 评论 -
【Spring框架】SpringBoot配置文件
想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的。yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的。1.数据库的连接信息(包含⽤户名和密码的设置);4.⽤于发现和定位问题的普通⽇志和异常⽇志等。原创 2023-07-29 17:06:21 · 202 阅读 · 0 评论 -
【Spring框架】SpringBoot创建和使用
Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。原创 2023-07-29 15:31:52 · 684 阅读 · 0 评论 -
【Spring框架】Bean作用域和生命周期
Bean作用域指的是Bean在Spring容器中的某种行为(单例、原型…Bean的6种作用域。原创 2023-07-28 16:15:00 · 260 阅读 · 0 评论 -
【Spring框架】Spring读取与存储综合练习
在 Spring 项⽬中,通过 main ⽅法获取到 Controller 类,调⽤ Controller ⾥⾯通过注⼊的⽅式调⽤ Service 类,Service 再通过注⼊的⽅式获取到 Repository 类,Repository 类⾥⾯有⼀个⽅法构建⼀个 User 对象,返回给 main ⽅法。Repository ⽆需连接数据库,使⽤伪代码即可。原创 2023-07-27 17:35:50 · 361 阅读 · 0 评论 -
【Spring框架】@Resource注入以及与@Autowired的区别
3.支持的参数不同: @Resource 支持更多的参数设置,比如 name、type 设置;@Autowired 只支持required 参数设置。2.用法不同: @Autowired 支持属性注入、构造方法注入和 Setter 注入,而 @Resource 不支持构造方法注入。1.出身不同: @Resource 来着与 JDK (Java 亲儿子) ,@Autowired 是 Spring 框架提供的。原创 2023-07-27 17:04:07 · 259 阅读 · 0 评论 -
【Spring框架】spring对象注入的三种方法
@Autowired 依赖注入流程:首先先根据getType(从容器中)获取对象,如果只获取一个,那么直接将此对象注入到当前属性上;b)Setter注入的对象可以被修改。优点:通常Setter只set一个属性,所以Setter注入更符合单一设计原则。a)无法注入一个不可变的变量(final修饰的变量)b)注入的对象不会修改,因为构造方法只会加载一次。b)使用构造方法注入,无法解决循环依赖的问题。c)构造方法注入可以保证注入对象完全初始化。a)可以注入一个final修饰的变量。a)写法比属性注入复杂。原创 2023-07-27 16:56:12 · 1055 阅读 · 0 评论 -
【Spring框架】spring更简单的读取和存储对象
配置bean的扫描根路径:只有当前目录下的类才会扫描是否添加了注解,如果添加了注解,就将这些加了注解的类,存放到IoC容器中。默认命名注意事项:当@Bean重命名之后,那么默认的使用方法名获取Bean对象的方式就不能使用了。a.使用注意事项:@Bean 注解 必须要配合五大类注解一起使用。@Service:服务层,编排和调度具体执行方法的(客服中心)b.@Bean 获取时注意事项:@Bean的默认命名=方法名。@Configuration:配置项(配置项目中的一些配置)使用注解和XML是可以一起使用的。原创 2023-07-17 17:15:28 · 193 阅读 · 0 评论 -
【Spring框架】getBean的更多用法
spring原创 2023-07-16 18:01:26 · 443 阅读 · 0 评论 -
【Spring框架】ApplicationContext VS BeanFactory(常见面试题)
【代码】【Spring框架】ApplicationContext VS BeanFactory(常见面试题)原创 2023-07-07 09:40:41 · 109 阅读 · 0 评论 -
【Spring框架】第一个Spring(创建和使用)
从性能方面: ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽BeanFactory 是需要那个才去加载那个,因此更加轻量(ApplicationContext采用的是"饿加载"的方式来进行加载的。而BeanFactory采用的是"懒加载"的方式来进行加载的。BeanFactory只提供了最基础的访问bean的方法,而ApplicationContext除了拥有BeanFactory以外,还拥有一些其他的机制,例如:支持国际化,资源访问,事件传播等;原创 2023-06-11 10:15:51 · 1035 阅读 · 1 评论 -
【Spring框架】初识Spirng
容器是用来容纳某种物品的(基本)装置。List / Map -- > 数据存储容器 Tomcat -- > Web 容器Spring也是一个容器,Spring是什么容器?Spring是一个IoC容器。翻译成中文是“控制反转”的意思,也就是说Spring是一个“控制反转”的容器。控制反转(对象的生命周期)原创 2023-06-09 10:41:02 · 734 阅读 · 4 评论 -
JavaEE-Servlet(Cookie&&Session)
在Cookie保存用户身份标识,这样的应用场景中,此时身份标识如何分配,以及身份信息如何存储,都需要服务器的支持的。以session为key,Session对象为value,把这个键值对存储到服务器里的一个hash表中。服务器在响应会带有Set-Cookie字段,通过这个字段就可以把要保存在浏览器本地的数据给返回回去。后续浏览器访问服务器的时候,就会把当前本地的所有Cookie都通过http请求,给带过去。给当前的用户分配一个sessionId,同时记录下当前用户的一些身份信息(可以自定义)原创 2023-06-04 10:28:21 · 1174 阅读 · 0 评论 -
JavaEE-JVM的学习
有一些起始位置(称为GCRoots),会类似于深度优先遍历一样,把可以访问到的对象都标记一遍(带标记的对象就是可达的对象),没被标记的对象,就是不可达的,也就是垃圾~如果要申请500M内存,也是可能申请失败的(因为要申请的500M是连续内存)每次申请,都是申请的连续的内存空间,而这里的1G可能是多个碎片加在一起,才是1G。.class文件中,常量时集中放置的,每个常量有一个编号,.class文件的结构体初始情况下只是记录了编号,就需要根据编号找到对应的内容,填充到类对象中。原创 2023-06-03 11:37:47 · 601 阅读 · 0 评论 -
JavaEE-Servlet的使用
实现访问 /redirect 路径后, 自动重定向到 搜狗主页 的代码.原创 2023-06-02 14:52:55 · 400 阅读 · 0 评论 -
Linux系统搭建Java的运行环境
通过 yum list命令,就能列出应用商店服务器上所有的软件包的名字!(注意这个命令不要着急敲,可能卡死机器)应用商店服务器上的东西会特别多。首先,先搜索一下,看看yum上关于jdk有没有,以及叫啥名字~yum上面虽然有tomcat,但是版本比较老,是7.0系列。叫做管道,功能是把前一个命令的输出,作为后一个命令的输入。如果是这种情况,就需要去看一看你的服务器的访问权限了~输出的结果,来匹配包含jdk这三个字母的文本行~给目录中所有的.sh后最的文件都加上可执行权限~对于Linux安装JDK有很多方法~原创 2023-06-01 17:41:22 · 649 阅读 · 0 评论 -
Linux常见命令学习
当我们使用vim打开文件之后,默认进入的是“普通模式”,普通模式下,键盘按键不是表示编辑框输入的内容,而是表示特殊含义的快捷键~Linux的命令很多支持“选项”,在命令后面跟上-以及一些特殊的字母/单词,来开启不同的功能·~cp操作,本质上需要拷贝大量的数据,这个拷贝的过程其实是非常消耗时间的,尤其是文件很大的情况下。mv操作,本质上就是修改文件的名字/路径,这个改动是非常轻量,快速的。此处的读写文件,只是进行简单的读写,不能进行复杂的编辑~less 最主要的功能就是读文件内容,就是用来看的~原创 2023-05-31 14:43:26 · 1061 阅读 · 0 评论 -
JavaEE-服务器和客户端交互(基本服务器实例)
此篇原理不讲直接附代码~~~原创 2023-04-10 21:27:22 · 308 阅读 · 0 评论 -
深入学习Java中的线程池
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。创建自定义线程池,参数可自定义配置。:线程池的基本大小,即在没有任务需要执行的时候线程池的大小,并且只有在工作队列满了的情况下才会创建超出这个数量的线程。原创 2023-04-10 13:16:13 · 1461 阅读 · 5 评论 -
JavaEE-线程池的执行流程和拒绝策略
maximumPoolSize: 正式员工 + 临时工的数目 . ( 临时工 : 一段时间不干活 , 就被辞退 ).RejectedExecutionHandler: 拒绝策略 , 如果任务量超出公司的负荷了接下来怎么处理 .corePoolSize: 正式员工的数量 . ( 正式员工 , 一旦录用 , 永不辞退 )unit: keepaliveTime 的时间单位 , 是秒 , 分钟 , 还是其他值 .threadFactory: 创建线程的工厂 , 参与具体的创建线程工作 .原创 2023-03-30 19:51:07 · 269 阅读 · 0 评论 -
JavaEE-常见的锁策略和synchronized的锁机制
此处的轻量级锁是通过 CAS 来实现的, 如果其他的线程很快的释放锁, 那么我们的自旋锁是非常合适的, 但是如果其他线程长时间占用锁, 自旋锁就不太合适了, 自旋操作是一直让 CPU 空转, 比较浪费 CPU 资源, 因此此处的自旋不会一直持续进行, 而是达到一定的时间/重试次数, 就不再自旋了, 也就是所谓的 “自适应”.通常情况下, 认为锁的粒度细一点比较好, 加锁的部分的代码, 是不能并发执行的, 锁的粒度越细, 能并发的代码就越多, 反之就越少.在java中有读写锁的标准类, 位于。原创 2023-03-30 19:38:39 · 198 阅读 · 0 评论 -
JavaEE-synchronized 和 ReentrantLock 之间的区别
synchronized 通过监视器实现,可通过观察编译后的字节码得出结论,如下图所示:其中 monitorenter 表示进入监视器,相当于加锁操作,而 monitorexit 表示退出监视器,相当于释放锁的操作。原创 2023-03-30 19:24:41 · 158 阅读 · 0 评论 -
JavaEE-死锁的成因和解决方案.
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁就是两个或者多个相互竞争资源的线程, 你等我, 我等你, 你不放我也不放, 这就造成了他们之间的互相等待, 导致了 “永久” 阻塞.原创 2023-03-29 20:09:57 · 352 阅读 · 0 评论 -
JavaEE-HashTable、HashMap、ConcurrentHashMap 之间的区别
HashTable, HashMap, ConcurrentHashMap都是Map接口的实现类,都是以key-value的形式来存储数据。原创 2023-03-28 15:37:53 · 420 阅读 · 0 评论 -
JavaEE多线程-线程池
随着并发程度的提高, 当我们去频繁的创建和销毁线程, 此时程序的开销还是挺大的, 为了进一步提高效率, 就引入了线程池, 程序中所创建的线程都会加载到一个 “池子” 中, 当程序需要使用线程的时候, 可以直接从池里面获取, 用完了就将线程还给池, 这样在多线程的环境中就不用去重复的创建和销毁线程, 从而使程序的运行效率提高, 线程池是管理线程的方式之一.线程池和和字符串常量池, 数据库连接池一样, 都是为了提高程序的运行效率, 减少开销。使用线程池时, 往往使用的是。原创 2023-03-25 08:06:27 · 385 阅读 · 0 评论 -
【Java项目】完善基于Java+MySQL+Tomcat+maven+Servlet的博客系统
打开你的idea,创建一个Maven。File->new->Project;选择创建maven项目,然后点击next取个名字这里我们需要引入的依赖是servlet,jackson,mysql。这个操作嘛!直接看JavaEE-实现一个服务器版本的“表白墙”里面有引入依赖的相关操作~pox.mal三、创建必要的目录点开我们项目下的src文件,找到main,然后右键创建一个新的目录,webapp;在webapp下创建一个目录叫做WEB-INF,然后在WEB-INF下面创建一个新的xml文件叫做web原创 2023-03-19 12:29:15 · 2632 阅读 · 0 评论 -
JavaEE-Servlet和Tomcat
Tomcat 的代码中内置了 main 方法. 当我们启动 Tomcat 的时候, 就是从 Tomcat 的 main 方法开。Tomcat 的代码中内置了 main 方法. 当我们启动 Tomcat 的时候, 就是从 Tomcat 的 main 方法开。这些实例被创建完了之后, 会点调用其中的 init 方法进行初始化. (这个方法是 HttpServlet 自带的,这些实例被创建完了之后, 会点调用其中的 init 方法进行初始化. (这个方法是 HttpServlet 自带的,原创 2023-03-13 19:53:51 · 377 阅读 · 0 评论 -
JavaEE-初识Servlet
打包之前,需要一些准备工作,在pom.xml文件中配置以下代码,注意是和在同一级目录,war包算是给tomcat专门用的,这里不光包含一些.class文件,还可以包括一些配置文件,以及一些依赖的第三方jar包,html,css,js……因为tomcat可能会收到很多请求,这么多请求,咱们需要的是路径里带/hello的这种情况,才会让tomcat来调用hello world 这个类,同时需要保证方法也是doGet方法。(注意和自己创建的目录一致)前者的内容是可变的,根据用户不同的输入,可以得到不同的结果。原创 2023-02-22 22:22:58 · 657 阅读 · 0 评论 -
JavaEE-HTTP协议完结&认识HTTPS协议
黑客拦截到对称密钥的密文之后,由于这个密文是使用 public key2 来进行加密的,因此黑客就可以使用 private key2 进行解密,黑客就拿到了对称密钥和密文888888,紧接着,黑客为了隐藏自己,把888888在使用之前从服务器拿到的 public key 进行加密得到了另外一个密文。此处的name是新介绍的属性,不是id,也不是class,这个name属性和样式无关,form表单给服务器提交的数据,本质上是键值对,此处的name属性在描述当前输入框对应的key是啥。原创 2023-02-19 10:37:11 · 380 阅读 · 0 评论 -
JavaEE-HTTP协议(二)
浏览器为了安全,默认情况下不让js访问到用户电脑上的文件系统的,假如某个恶意网站你不小心一点,就可能会触发恶意代码,把你电脑上的很多文件都给删除不见了。当服务器负载比较大的时候 , 服务器处理单条请求的时候消耗的时间就会很长 , 就可能会导致出现超时的 情况;表示访问被拒绝. 有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问). 如果用户没有登陆。POST 方法也是一种常见的方法. 多用于提交用户输入的数据给服务器(例如登陆页面).其中 Windows NT 10.0;x64 表示操作系统信息。原创 2023-02-14 12:04:44 · 259 阅读 · 0 评论 -
JavaEE-HTTP协议(一)
计算机网络,核心概念,网络协议网络协议种类非常多,其中一些耳熟能详的,IP,TCP,UDP…其中还有一个应用非常广泛的协议,HTTPHTTP 处于 TCP/IP五层协议栈的应用层~HTTP在传输层是基于TCP的~( 不够严谨,HTTP/1 HTTP/2 是基于TCP,最新版本HTTP/3是基于UDP的,但是当下互联网绝大部分使用的HTTP都是HTTP/1.1 )传输层协议,主要关注的是 端对端 之间的数据传输,TCP,重点关注的是可靠传输。原创 2023-02-13 17:27:17 · 1015 阅读 · 0 评论 -
网络原理(TCP/IP五层协议)(四)
当前的 IPv 协议,使用的 IP 地址是 32 位整数,32 位整数表示的数据范围:42亿9千万,如果给每个设备都分配一个唯一的 IP,意味着世界上的设备就不能超过 42亿9千万?以太网数据帧的格式中长度 48 位的 MAC 地址(物理地址),它真正做到了 每个设备都是唯一的 MAC 地址,是在网卡出厂的时候就写死了。ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议,ARP 报文并不是来传输数据的,只是起到了一个辅助的效果。这个限制是不同的数据链路对应的物理层,产生的限制。原创 2023-02-01 10:18:59 · 184 阅读 · 0 评论