![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 79
Archie_java
求知若饥,虚心若愚(stay hungry,stay foolish)
好记性不如烂笔头
展开
-
10万字总结Java8到21新特性详解
Java 17,发布于 2021 年 9 月,是一个长期支持(LTS)版本。Java 18,于2022年3月发布。Java 19, 于2022-09-20 发布众所周知,JVM 是一个多线程环境,它通过为我们提供了对操作系统线程的抽象,但是 Java 中的线程都只是对操作系统线程的一种简单封装,我们可以称之为“平台线程”。代价昂贵:创建平台线程的成本很高。每当创建一个平台线程时,操作系统都必须在堆栈中分配大量内存来存储线程的上下文、原生调用堆栈和 Java 调用堆栈。原创 2024-03-02 10:14:20 · 1157 阅读 · 0 评论 -
10万字总结Java8到21新特性详解
Java 8 是Java历史上一个重大的版本更新,发布于2014年3月18日。Lambda 表达式是在 Java 8 中引入,并且被吹捧为 Java 8 最大的特性。它是函数式编程的的一个重要特性,标志着 Java 向函数式编程迈出了重要的第一步。或者其中parameters:是 Lambda表达式的参数列表,可以为空或包含一个或多个参数。->:是 Lambda 操作符,用于将参数和 Lambda 主体分开。expression:是 Lambda 表达式的返回值,或者在主体中执行的单一表达式。原创 2024-03-02 10:03:39 · 1107 阅读 · 0 评论 -
【深入理解JVM】:Java内存模型JMM
多任务和高并发的内存交互多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。物理机的并发问题与虚拟机中的情况有很多相似之处,物理机对并发的处理方案对于虚拟机的实现也有相当大的参考意义。由于计算机的存储设备与处理器的运算能力之间有几个数量级的差距,所以现代计算机系统都不得不加入一层读写转载 2022-05-06 00:03:21 · 277 阅读 · 0 评论 -
Java接口修饰符详解
接口就是提供一种统一的”协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。抽象类是不“完全”的类,相当于是接口和具体类的一个中间层。即满足接口的抽象,也满足具体的实现。接口是构建松耦合软件系统的重要法宝。A、接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;B、接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;C、接口不涉及和任何具体实原创 2021-12-19 21:14:10 · 704 阅读 · 0 评论 -
JAVA那点破事,并发、IO模型、集合、线程池、死锁、非阻塞、AQS...
JDK、JRE、JVM 三者有什么关系?答案:JDK(全称 Java Development Kit),Java开发工具包,能独立创建、编译、运行程序。JDK = JRE + java开发工具(javac.exe/java.exe/jar.exe)JRE(全称 Java Runtime Environment),能运行已编译好的程序,但不能创建程序JRE = JVM + java核心类库JVM (全称 Java Virtual Machine),java虚拟机。java创建原创 2021-12-18 09:44:35 · 149 阅读 · 0 评论 -
JWT学习
一、什么是JWTJSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed.原创 2021-12-12 15:55:25 · 630 阅读 · 0 评论 -
jps命令原理
一、说明jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程。二、命令位置很多Java命令都在jdk的JAVA_HOME/bin/目录下面,jps也不例外,原创 2021-11-28 14:29:55 · 561 阅读 · 0 评论 -
Java 解决跨域问题
JAVA | Java 解决跨域问题文章目录JAVA | Java 解决跨域问题引言什么是跨域(CORS)什么情况会跨域解决方案前端解决方案后端解决方案具体方式一、使用Filter方式进行设置二、继承 HandlerInterceptorAdapter三、实现 WebMvcConfigurer四、使用Nginx配置五、使用 `@CrossOrgin` 注解Spring Cloud Gateway 跨域配置引言我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果。跨域就像分离前原创 2021-11-23 22:47:20 · 840 阅读 · 0 评论 -
java——Final修饰成员变量的注意事项
一.Final 修饰成员变量的注意事项final修饰成员变量,该成员变量必须在创建对象之前进行赋值,否则编译失败final修饰成员变量,固定的不是成员变量拥有的默认值,如果固定的是默认值,那么将导致被final修饰的成员变量的值永远无法修改,只能是默认值,这也不符合语法规则成员变量的赋值有三种实现方式:定义成员变量的时候手动赋值利用构造器对成员变量进行赋值利用set函数进行赋值(也即利用一般的方法进行赋值)4.被final修饰的成员变量,只能拥有3中所描述的赋值方法的1,2。3为什原创 2021-11-14 21:37:38 · 2123 阅读 · 0 评论 -
RabbitMQ保姆级教程
文章目录前言一、MQ是什么?1.1 AMQP二、在Linux安装RabbitMQ2.1 安装2.2 RabbitMQ启动命令2.3 开启RabbitMQ 后台管理界面2.3.1 登录rabbitMQ UI界面2.3 Docker启动RabbitMQ2.4 常见消息模型2.5 生产者(Producer) / 消费者(Consumer)2.6 工作队列模式(Work Queues)2.7 参数细节2.8 实现能者多劳2.8.1 Ack手动应答防止数据丢失和原创 2021-11-14 16:27:54 · 203 阅读 · 0 评论 -
Java面试题整理(附参考答案)
1、面向对象的特征有哪些方面?抽象:将同类对象的共同特征提取出来构造类。继承:基于基类创建新类。封装:将数据隐藏起来,对数据的访问只能通过特定接口。多态性:不同子类型对象对相同消息作出不同响应。2、访问修饰符public,private,protected,以及不写(默认)时的区别?protected 当前类,同包,异包子类。3、String 是最基本的数据类型吗?答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、bo原创 2021-11-05 23:54:27 · 1304 阅读 · 0 评论 -
Java面试题大全
一、Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可原创 2021-11-05 23:30:48 · 731 阅读 · 0 评论 -
ssm项目搭建
系统环境搭建Spring的jar包11个com.springsource.org.aopalliance-1.0.0.jar //Aopi联盟的jar包遵循其规则com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar //面向切面编程spring-aop-5.0.1.RELEASEjar //实现aopspring-aspects-5.0.1.RELEASEjar //aspect整合的jar包spring-beans-5.0.1.REL原创 2021-03-21 14:34:08 · 106 阅读 · 0 评论 -
Java面试题总结
Java面试题总结Java中 == , equals()和 hashCode() 的区别== 在比较基本数据类型时比较的是值,而在比较引用类型的数据时比较的是引用的地址,即比较两个引用是否指向同一个对象。equal() 是java.lang.Object的方法,默认与 == 比较方式相同,可以被程序员重写该方法实现自定义比较方式。hashCode() 方法给对象返回一个hashcode值。当两个对象相等时,hashcode一定相同,但是反过来不一定成立。String、StringBuffer、原创 2021-09-29 00:30:07 · 267 阅读 · 0 评论 -
Shiro-单点登录原理
单点登录原理一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既然http协议无状态,那原创 2021-09-25 20:57:58 · 3732 阅读 · 0 评论 -
Shiro 实战教程
Shiro 实战教程1.权限的管理1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。1.2 什么是身份认证身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户原创 2021-09-16 21:30:02 · 908 阅读 · 0 评论 -
Java微服务篇5——Docker
Java微服务篇5——Docker1、虚拟化技术虚拟化技术是一种计算机资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储 等,予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的,不可切割的障碍。使用户可 以比原本的组态更好的方式,来应用这些资源高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件软件跨环境迁移问题(代码的水土不服)2、Docker简介官网: https://www.docker.com文档地址: https://docs.原创 2021-09-08 07:56:48 · 705 阅读 · 0 评论 -
Java微服务篇4——Elastic search
Java微服务篇4——Elastic search1、Elastic search安装配置Elastic search官方:https://www.elastic.co/cn/products/elasticsearchElastic search6.2.4 百度云:https://pan.baidu.com/s/1JyQok8Nija4gYhcjh-HWcw提取码:isa2解压即可在config/elasticsearch.yml修改# ----------------------------原创 2021-09-08 07:55:52 · 1133 阅读 · 2 评论 -
Java微服务篇3——Lucene
Java微服务篇3——Lucene1、数据分类1.1、结构化数据具有固定格式或有限长度的数据,如数据库,元数据等常见的结构化数据也就是数据库中的数据,在数据库中搜索很容易实现,通常都是使用 sql语句进行查询,而且能很快的得到查询结果数据库中的数据存储是有规律的,有行有列而且数据格式、数据长度都是固定的,所以搜索很容易1.2、非结构化数据不定长或无固定格式的数据,如邮件,word 文档等磁盘上的文件1.2.1、顺序扫描顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看原创 2021-09-08 07:54:57 · 221 阅读 · 0 评论 -
Java微服务篇2——SpringCloud
Java微服务篇2——SpringCloud1、微服务架构1.1、单体应用架构的⽤户量、数据量规模都⽐较⼩,项目所有的功能模块都放在一个工程中编码、 编译、打包并且部署在一个Tomcat容器中的架构模式就是单体应用架构,这样的架构既简单实 ⽤、便于维护,成本⼜低,成为了那个时代的主流架构⽅式。优点高效开发:项⽬前期开发节奏快,团队成员少的时候能够快速迭代架构简单:MVC架构,只需要借助IDE开发、调试即可易于测试:只需要通过单元测试或者浏览器完成易于部署:打包成单⼀可执⾏的jar或者打原创 2021-09-08 07:53:23 · 518 阅读 · 0 评论 -
Java微服务篇1——SpringBoot
Java微服务篇1——SpringBoot1、什么是springboot1.1、Spring出现的问题Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的 Enterprise Java Bean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和 面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能虽然Spring的组件代码是轻原创 2021-09-07 21:48:16 · 958 阅读 · 0 评论 -
Java分布式篇6——RabbitMQ
Java分布式篇6——RabbitMQ1、MQ(Message Queue)消息队列消息队列中间件,是分布式系统中的重要组件主要解决,异步处理,应用解耦,流量削峰等问题实现高性能,高可用,可伸缩和最终一致性的架构使用较多的消息队列产品:RabbitMQ,RocketMQ,ActiveMQ,ZeroMQ,Kafka等2、应用场景2.1、异步处理2.2、应用解耦2.3、流量削峰3、AMQP、JMS、Erlang3.1、AMQP高级消息队列协议Advanced Message原创 2021-09-07 21:37:28 · 503 阅读 · 0 评论 -
Java分布式篇5——FastDFS
Java分布式篇5——FastDFS分布式文件系统1、主流的分布式文件系统1.1、 HDFS(Hadoop Distributed File System)Hadoop 分布式文件系统高容错的系统,适合部署到廉价的机器上能提供高吞吐量的数据访问,非常适合大规模数据应用HDFS采用主从结构,一个HDFS是由一个name节点和N个data节点组成name节点储存元数据,一个文件分割成N份存储在不同的data节点上生态好1.2、GFSGoogle File System可扩展的分布式原创 2021-09-07 21:36:36 · 196 阅读 · 0 评论 -
Java分布式篇4——Redis
Java分布式篇4——Redis1、互联网架构的演变历程1.1、第一阶段数据访问量不大,简单的架构即可搞定!1.2、第二阶段数据访问量大,使用缓存技术来缓解数据库的压力不同的业务访问不同的数据库1.3、第三阶段主从读写分离。 之前的缓存确实能够缓解数据库的压力,但是写和读都集中在一个数据库上,压力又来了,一个数据库负责写,一个数据库负责读,分工合作,让master(主数据库)来响应事务性(增删改)操作,让slave(从数据库)来响应非事务性 (查询)操作,然后再采用主从复制来把ma原创 2021-09-07 21:35:51 · 312 阅读 · 0 评论 -
JAVA分布式篇3——Dubbo
JAVA分布式篇3——Dubbo1、架构演变1.1、单应用架构当网站流量很小时,只需要一个应用,将所有的功能部署到一起(所有业务都放在一个tomcat 里),从而减少部署节点和成本用于简化 增删改查 工作量的数据访问框架 (ORM)是关键例如:某个超市的收银系统,某个公司的员工管理系统优点小项目开发快成本低架构简单易于测试易于部署缺点大项目模块耦合严重不易开发,维护沟通成本高新增业务困难核心业务与边缘业务混合在一块,出现问题互相影响1.2、垂直应用架构当原创 2021-09-07 21:35:02 · 542 阅读 · 0 评论 -
JAVA分布式篇2——Zookeeper
JAVA分布式篇2——Zookeeper1、简介Zookeeper是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的 Apache项目2、工作机制Zookeeper从设计模式角度来理解:是一个基于观察者模式(一个人干活,有人盯着他)设计的分 布式服务管理框架存储 和 管理 大家都关心的数据 然后接受观察者的注册通知已经注册的那些观察者做出相应的反应Zookeeper = 文件系统 + 通知机制类似美团商家营业并入驻获取到当前营业的饭店列表服务器节点原创 2021-09-07 19:46:12 · 224 阅读 · 0 评论 -
JAVA分布式篇1——Linux
JAVA分布式篇1——Linux1、linux命令1.1、常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切换目录touch 创建空文件echo 创建带有内容的文件。原创 2021-09-07 19:44:59 · 193 阅读 · 0 评论 -
Java SSM6——SSM整合
Java SSM6——SSM整合1、Mybatis1.1、数据库准备CREATE TABLE person( id INT PRIMARY KEY, NAME VARCHAR(10), PASSWORD VARCHAR(10));INSERT INTO person VALUES (1,"root","123");1.2、创建maven工程,导入依赖<dependencies> <!--mybatis--> <dependency>原创 2021-09-07 19:40:53 · 188 阅读 · 0 评论 -
Java SSM篇5——SpringMVC
Java SSM篇5——SpringMVC1、MVC模式MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的开发思想M(model)模型:处理业务逻辑,封装实体V(view) 视图:展示内容C(controller)控制器:负责调度分发(1.接收请求、2.调用模型、3.转发到视图)2、SpringMVC优点轻量级,简单易学高效 , 基于请求响应的MVC框架与Spring兼容性好,无缝结合约定优于配置功能强大:RESTful、数据验证、格式化、本地化、主题等简原创 2021-09-07 19:39:47 · 277 阅读 · 0 评论 -
Java SSM4——Spring
Java SSM4——SpringSpring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)Spring的优势方便解耦,简化开发Spring就是一个容器,可以将所有对象创建和关系维护交给Spring管理 什么是耦合度?对象之间的关系,通常说当一个模块(对象)更改时也需要更改其他模块(对象),这就是耦合,耦合度过高会使代码的维护成本增加。要尽量解耦AOP编程的支持Spring提供面向切面编程,方便实现程序进行权限拦截,运行监控等功能声明式事务的支持通过配置完原创 2021-09-07 19:37:48 · 284 阅读 · 0 评论 -
Java SSM篇3——Mybatis
Java SSM篇3——Mybatis1、JDBC存在的问题数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java 代码查询操作时,需要手动将结果集中的数据手动封装到实体中2、解决方案数据库连接池配置文件反射、内省3、ORM是什么对象关系映射O(对象模型): 实体对象,即我们在程序中根据数据库表结构建立的一个个实体javaBeanR(关系型数据库的数据结构): 关系原创 2021-09-06 22:24:02 · 272 阅读 · 0 评论 -
Java SSM篇2——框架的基本认识
Java SSM篇2——框架的基本认识1、什么是框架框架就是一套规范,既然是规范,你使用这个框架就要遵守这个框架所规定的约束框架可以理解为半成品软件,框架做好以后,接下来在它基础上进行开发2、为什么使用框架框架为我们封装好了一些冗余,且重用率低的代码。并且使用反射与动态代理机制,将代码实现了通用性,让开发人员把精力专注在核心的业务代码实现上比如在使用servlet进行开发时,需要在servlet获取表单的参数,每次都要获取很麻烦,而框架底层 就使用反射机制和拦截器机制帮助我们获取表单的值,使原创 2021-09-06 22:21:41 · 124 阅读 · 0 评论 -
Java SSM1——Maven
Java SSM1——Maven1、下载maven 官网:https://maven.apache.org/download.cgimaven 百度云:https://pan.baidu.com/s/18XKbJp7P5x_BkKyc0VF0tw提取码:4zr92、安装解压到想安装的目录下添加环境变量添加MAVEN_HOME变量MAVEN_HOMED:\apache-maven-3.6.3在PATH中添加%MAVEN_HOME%\bin3、配置本地仓库<loca原创 2021-09-06 22:20:53 · 157 阅读 · 0 评论 -
JAVA WEB篇4——Filter、Listener
JAVA WEB篇4——Filter、Listener1、FilterFilter本意为”过滤“的含义,是JavaWeb的三大组件之一,三大组件为:Servlet、Filter、 Listener过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件过滤器相当于浏览器与Web资源之间的一道过滤网,在访问资源之前通过一系列的过滤器对请求 进行修改、判断以及拦截等,也可以对响应进行修改、判断以及拦截等[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3原创 2021-09-06 22:19:11 · 162 阅读 · 0 评论 -
JAVA WEB篇3——JSP
JAVA WEB篇3——JSP1、JSP是什么JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应, JSP文件命名为 xxx.jsp与Servlet不同,JSP文件以HTML标记为主,然后内嵌Java代码段,用于处理动态内容<%@ page import="java.util.Date" %><%@ page contentType="text/html;charset=UTF-8" language="java" %>原创 2021-09-06 22:17:25 · 217 阅读 · 0 评论 -
JAVA WEB篇2——Servlet
JAVA WEB篇2——ServletServlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写 的服务器端程序,换句话说,Servlet就是运行在服务器上的Java类。 Servlet用来完成B/S架构下客户端请求的响应处理,也就是交互式地浏览和生成数据,生成动态Web内容1、第一个servlet程序(servlet)1.1、实现Servletpublic class HelloServlet implements Servlet原创 2021-09-06 22:13:11 · 122 阅读 · 0 评论 -
JAVA WEB篇1——初识JAVAWEB
JAVA WEB篇1——初始JAVAWEBJavaWeb主要指使用Java语言进行动态Web资源开发技术的统称,是解决相关Web互联网领域的技术总和1、Http协议HTTP协议(HyperText Transfer Protocol,超文本传输协议)是由W3C(万维网联盟)组织制定 的一种应用层协议,是用来规范浏览器与Web服务器之间如何通讯的数据格式,主要涉及浏览器 的发请求格式和服务器的响应格式HTTP协议通常承载于TCP协议之上,而承载于TLS或SSL协议层之上的协议就是常说的HTTPS协原创 2021-09-06 22:12:18 · 264 阅读 · 0 评论 -
Java JDBC篇4——数据库连接池
Java JDBC篇4——数据库连接池1、DBCP1.1、依赖jar包官网:https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2mysql-connector-java-5.1.49.jar 百度云:https://pan.baidu.com/s/17J2VfkGS2h44j69eB8TuFA提取码:nhntmysql-connector-java-8.0.25.jar 百度云:https://pan.baidu.c原创 2021-09-06 22:09:16 · 228 阅读 · 0 评论 -
Java JDBC篇3——JDBC事务
Java JDBC篇3——JDBC事务1、事务方法方法声明功能介绍void setAutoCommit(boolean autoCommit)参数是 true 或 false 如果设置为 false,表示关闭自动提交,相当于开启事务void commit()提交事务void rollback()回滚事务2、步骤获取连接开启事务获取到 PreparedStatement , 执行两次更新操作正常情况下提交事务出现异常回滚事务最后关闭资源...原创 2021-09-06 22:08:23 · 175 阅读 · 0 评论 -
Java JDBC篇2——JDBC增删查改
Java JDBC篇2——JDBC增删查改url=jdbc:mysql://localhost:3306/testuser=rootpassword=blingbling123.driver=com.mysql.jdbc.Driverpublic class JDBCtool { private static String urls; private static String user; private static String password; priva原创 2021-09-06 22:07:16 · 192 阅读 · 0 评论