JavaEE
文章平均质量分 89
芋泥*
方寸之间,大有可为
展开
-
常见的五种设计模式
注意事项: 1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。**缺点:**每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。一个“策略”是一个 整体的(完整的) 算法,算法是可以被整体替换的。原创 2023-09-10 12:00:30 · 736 阅读 · 0 评论 -
网络基本概念
计算机网络:是指将具有独立功能的多个计算机系统通过通信系统(如电缆、光纤、微波、卫星等)互相连接起来,以实现资源共享、互相通信的计算机网络系统。计算机网络是计算机技术和通信技术相结合的产物。发展计算机网络的目的有两个:一是资源共享,即共享计算机网络中的硬件资源、软件资源和数据资源等;二是实现各计算机之间的相互通信。原创 2023-09-03 10:51:52 · 457 阅读 · 0 评论 -
JVM详解
如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无 法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去完成加载。启动类加载器:加载 JDK 中 lib 目录中 Java 的核心类库,即$JAVA_HOME/lib目录。扩展类加载器。加载 lib/ext 目录下的类。应用程序类加载器:加载我们写的应用程序。原创 2023-08-23 17:00:07 · 1241 阅读 · 2 评论 -
Tomcat 的伪代码
Tomcat伪代码原创 2023-08-22 16:24:28 · 698 阅读 · 0 评论 -
JVM详解
如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最 终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无 法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去完成加载。启动类加载器:加载 JDK 中 lib 目录中 Java 的核心类库,即$JAVA_HOME/lib目录。扩展类加载器。加载 lib/ext 目录下的类。应用程序类加载器:加载我们写的应用程序。原创 2023-08-17 12:24:11 · 677 阅读 · 0 评论 -
spring前后端日期格式不一致解决!!!
明确异常描述:文章列表的日期格式不对。【⾮常重要】已经采取的措施。在module对应属性加上。controller层。原创 2023-08-12 14:51:58 · 576 阅读 · 0 评论 -
Redis(CentOS)
6379默认端口号。原创 2023-08-09 17:15:02 · 777 阅读 · 0 评论 -
Spring事务和事务传播机制
事务定义 :将⼀组操作封装成⼀个执⾏单元(封装到⼀起),要么全部成功,要么全部失败。为什么要⽤事务?⽐如转账分为两个操作:第⼀步操作:A 账户 -100 元。第⼆步操作:B 账户 +100 元。如果没有事务,第⼀步执⾏成功了,第⼆步执⾏失败了,那么 A 账户平⽩⽆故的 100 元就“⼈间蒸发”了。⽽如果使⽤事务就可以解决这个问题,让这⼀组操作要么⼀起成功,要么⼀起失败。原创 2023-08-07 16:09:14 · 764 阅读 · 0 评论 -
SpringBoot 统⼀功能处理
/判断是否登录 HttpSession session = request . getSession(false);if(session!= null) {//通过,不进行拦截 return true;} }原创 2023-08-04 17:16:02 · 443 阅读 · 0 评论 -
Spring AOP与代理模式
切点指的是具体要处理的某⼀类问题,⽐如⽤户登录权限验证就是⼀个具体的问题,记录所有⽅法的执⾏⽇志就是⼀个具体的问题,切点定义的是某⼀类问题。Spring AOP 切点的定义如下,在切点中我们要定义拦截的规则,具体实现如下。原创 2023-08-03 10:35:59 · 934 阅读 · 1 评论 -
MyBatis
防止两个重名的字段。使⽤ ${sort} 可以实现排序查询,⽽使⽤ #{sort} 就不能实现排序查询了,因为当使⽤ #{sort} 查询时, 如果传递的值为 String 则会加单引号,就会导致 sql 错误。如果是增、删、改返回搜影响的⾏数,那么在 mapper.xml 中是可以不设置返回的类型的,然⽽即使是最简单查询⽤户的名称也要设置返回的类型。这时查询会将所有的结果查询出来,因此⽤于查询的字段,尽量使⽤ #{} 预查询的⽅式。根据传⼊的⽤户对象属性来更新⽤户数据,可以使⽤标签来指定动态内容。原创 2023-08-02 09:04:49 · 140 阅读 · 0 评论 -
SpringMVC程序开发
RequestMapping 是 Spring Web 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的。路由映射:所谓的路由映射指的是,当⽤户访问⼀个 url 时,将⽤户的请求对应到程序中某个类的某个⽅法的过程就叫路由映射@RequestMapping 即可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类 + ⽅法@RequestMapping 也可以直接修饰⽅法} }原创 2023-08-01 11:11:45 · 197 阅读 · 0 评论 -
spring boot 配置 与 日志
想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。原创 2023-07-31 14:47:10 · 855 阅读 · 0 评论 -
bean作用域和生命周期
限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。⽽ Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式,⽐如 singleton 单例作⽤域,就表示 Bean 在整个 Spring 中只有⼀份,它是全局共享的,那么当其他⼈修改了这个值之后,那么另⼀个⼈读取到的就是被修改的值。原创 2023-07-30 15:03:45 · 199 阅读 · 0 评论 -
spring创建与使用
/</</原创 2023-07-29 10:38:58 · 689 阅读 · 0 评论 -
spring boot创建
Spring Boot 项⽬有两个主要的⽬录:src/main/java 为 Java 源代码。src/main/resources 为静态资源或配置⽂件:/static:静态资源⽂件夹;/templates:模版资源⽂件夹正确路径当我们把要注⼊到容器类和启动类放到同级⽬录下时,如下图所示:这时候 Spring Boot 项⽬才能正常的将 bean 注⼊到容器中。以上情况反应了 Spring Boot 项⽬的另⼀个特点:约定⼤于配置。原创 2023-07-28 15:44:27 · 366 阅读 · 0 评论 -
Linux基础命令
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的。: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存。在的目录,则它会把前面指定的所有文件或目录复制到此目录中。date 指定格式显示时间: date +“%Y-%m-%d %H:%M:%S”-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在。-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理。原创 2023-07-25 16:10:39 · 149 阅读 · 1 评论 -
servlet简单实现表白墙
servlet简单实现表白墙原创 2023-06-30 17:42:39 · 349 阅读 · 4 评论 -
Servlet 运行和运行原理
使用 IDEA 创建一个 Maven 项目.MavenMaven项目创建完毕后, 会自动生成一个pom.xml文件.我们需要在pom.xml中引入依赖的jar包.servlettomcatservletxmlpom.xmlpom.xml原创 2023-06-26 22:02:03 · 1117 阅读 · 3 评论 -
HTTP
当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 HTTP 响应事实上, 当我们访问一个网站的时候, 可能涉及不止一次的 HTTP 请求/响应 的交互过程.可以通过chrome的开发者工具观察到这个详细的过程.通过 F12 打开 chrome 的开发者工具, 切换到Network标签页. 然后刷新页面即可看到如下图效果. 每一条记录都是一次 HTTP 请求/响应。原创 2023-06-21 16:40:24 · 1309 阅读 · 3 评论 -
maven
Maven是Apache下的一个开源项目,它是一个创新的项目管理工具,它用于对Java项目进行项目构建、依赖管理及项目信息管理。(开源、免费、Java语言实现)总结:Maven就是一个软件工具,它的主要作用就是对项目进行管理。原创 2023-06-14 21:41:45 · 1489 阅读 · 3 评论 -
运行一个servlet项目
使用 IDEA 创建一个 Maven 项目.MavenMaven项目创建完毕后, 会自动生成一个pom.xml文件.我们需要在pom.xml中引入依赖的jar包.servlettomcatservletxmlpom.xmlpom.xml原创 2023-06-11 21:16:45 · 2100 阅读 · 4 评论 -
【JavaEE】网络四层协议
数据链路层的作用:两个设备(同一种数据链路节点)之间进行传递数据以太网是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;以太网帧格式理解mac地址理解arp协议理解MTU。原创 2023-05-30 21:58:30 · 840 阅读 · 2 评论 -
TCP协议详解
TCP,即Transmission Control Protocol,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。原创 2023-05-30 21:58:35 · 531 阅读 · 3 评论 -
【JavaEE】网络基础认识
IP地址描述的是路途总体的起点和终点;是给人使用的网络逻辑地址。MAC地址描述的是路途上的每一个区间的起点和终点,即每一跳的起点和终点;是给网络硬件设备使用的网络物理地址。数据链路层的作用:两个设备(同一种数据链路节点)之间进行传递数据以太网是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;以太网帧格式理解mac地址理解arp协议理解MTU。原创 2023-05-30 20:50:06 · 533 阅读 · 2 评论 -
一篇带你学完HTML基础
HTML 代码是由 “标签” 构成的.形如:标签名 (body) 放到 < > 中大部分标签成对出现. 为开始标签, 为结束标签.少数标签只有开始标签, 称为 “单标签”.开始标签和结束标签之间, 写的是标签的内容. (hello)开始标签中可能会带有 “属性”. id 属性相当于给这个标签设置了一个唯一的标识符(身份证号码)HTML 文件基本结构html 标签是整个 html 文件的根标签(最顶层标签)head 标签中写页面的属性.body 标签中写的是页面上显示的内容原创 2023-05-28 17:29:18 · 820 阅读 · 6 评论 -
【JavaEE】网络编程
数据的,称为发送端。发送端主机即网络通信中的源主机。:数据的,称为接收端。接收端主机即网络通信中的目的主机。:发送端和接收端两端,也简称为收发端。注意:发送端和接收端只是相对的,只是一次网络数据传输产生数据流向后的概念。一般来说,获取一个网络资源,涉及到两次网络数据传输:第一次:请求数据的发送第二次:响应数据的发送。:在常见的网络数据传输场景下,把的一方进程,称为服务端,可以提供对外服务。的一方进程,称为客户端。常见的客户端服务端模型。原创 2023-05-27 13:12:33 · 912 阅读 · 3 评论 -
【JavaEE】网络原理初识
TCP:传输控制协议(Transmission Control Protocol)IP:网际协议(Internet Protocol)TCP/IP是目前世界上流行最广的一种著名的网络体系结构。它并非国际标准,但是它已成为计算机网络的事实上的标准,有人也称为它是工业标准。TCP/IP具有以下特点:(1)开放的协议标准,可以免费使用,并且独立特定的计算机硬件和操作系统。(2)独立于特定的网络硬件,可以运行在局域网、广域网,更适合于互联网中。原创 2023-05-26 11:22:14 · 627 阅读 · 2 评论 -
【JavaEE】文件IO
方法说明InputStream 只是一个抽象类,要使用还需要具体的实现类。关于 InputStream 的实现类有很多,基本可以认为不同的输入设备都可以对应一个 InputStream 类,我们现在只关心从文件中读取,所以使用 FileInputStream构造方法//读取一个字节的数据,返回 -1 代表已经完全读完了 // 读取文件内容 while(true) {// 是否读完 if(read == - 1) {break;} // 关闭 inputStream . close();原创 2023-05-20 15:40:28 · 531 阅读 · 3 评论 -
Synchronized 原理&JUC&死锁
死锁产生的前三个条件是死锁产生的必要条件,也就是说要产生死锁必须具备的条件,而不是存在这3个条件就一定产生死锁,那么只要在逻辑上回避了第四个条件就可以避免死锁。(4) 当系统现有的资源能满足进程尚需资源数时,必须测试系统现存的资源能否满足该进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。产生死锁中的竞争资源另外一种资源指的是竞争临时资源(临时资源包括硬件中断、信号、消息、缓冲区内的消息等),通常消息通信顺序进行不当,则会产生死锁。死锁避免算法的执行会增加系统的开销。原创 2023-05-19 15:59:20 · 686 阅读 · 5 评论 -
【JavaEE】CAS
CAS: 全称,字面意思:”比较并交换“,一个 CAS 涉及到以下操作:我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。比较 A 与 V 是否相等。(比较)如果比较相等,将 B 写入 V。(交换)返回操作是否成功。ABA 的问题:假设存在两个线程 t1 和 t2. 有一个共享变量 num, 初始值为 A.接下来, 线程 t1 想使用 CAS 把 num 值改成 Z, 那么就需要先读取 num 的值, 记录到 oldNum 变量中.原创 2023-05-13 11:15:31 · 429 阅读 · 9 评论 -
【JavaEE】锁策略
读写锁就是把读操作和写操作分别进行加锁.读锁和读锁之间不互斥.写锁和写锁之间互斥.写锁和读锁之间互斥.读写锁最主要用在 “频繁读, 不频繁写” 的场景中.原创 2023-05-13 10:06:58 · 506 阅读 · 3 评论 -
【JavaEE】单例模式&阻塞队列
比如在 “秒杀” 场景下, 服务器同一时刻可能会收到大量的支付请求. 如果直接处理这些支付请求, 服务器可能扛不住(每个支付请求的处理都需要比较复杂的流程). 这个时候就可以把这些请求都放 到一个阻塞队列中, 然后再由消费者线程慢慢的来处理每个支付请求.擀饺子皮的人不关心包饺子的人是谁(能包就行, 无论是手工包, 借助工具, 还是机器包), 包饺子的人也不关心擀饺子皮的人是谁(有饺子皮就行, 无论是用擀面杖擀的, 还是拿罐头瓶擀, 还是直接从超市买的).原创 2023-05-12 22:50:24 · 889 阅读 · 1 评论 -
【JavaEE】线程池
通过创建一个ThreadPoolExecutorint corePoolSize:核心线程数,创建线程池时包含的最小线程数int maximumPoolSize:最大线程数,核心数不够用时,允许系统可以创建的最多线程long keepAliveTime:临时线程空闲的时长TimeUnit unit:空闲的时间单位,和keepAliveTime一起使用BlockingQueue workQueue:用来保存任务的阻塞队列。原创 2023-05-12 22:50:56 · 683 阅读 · 3 评论 -
【JavaEE】多线程基础
一段代码是这样的:去前台取下 U 盘去教室写 10 分钟作业去前台取下快递如果是在单线程情况下,JVM、CPU指令集会对其进行优化,比如,按 1->3->2的方式执行,也是没问题,可以少跑一次前台。这种叫做指令重排序编译器对于指令重排序的前提是 “保持逻辑不发生变化”. 这一点在单线程环境下比较容易判断, 但是在多线程环境下就没那么容易了, 多线程的代码执行复杂程度更高, 编译器很难在编译阶段对代码的执行效果进行预测, 因此激进的重排序很容易导致优化后的逻辑和之前不等价.原创 2023-05-11 21:30:36 · 677 阅读 · 1 评论