自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 Netty特点及相关面试题

Netty是一个高性能的nio网络通信框架用于开发高性能的网络服务器和客户端 提供了简单强大的Api使得网络编程更加简单。

2024-10-29 20:20:46 335

原创 无感刷新-双token

双token系统通常用于提高安全性和分离不同级别的权限。:这是用户直接使用来访问资源的token。它的有效期较短,一旦过期,用户需要重新认证来获取新的access token。这样做的好处是即使access token被泄露,由于其有效期短,攻击者利用它进行不当操作的时间窗口有限。:Refresh token是用来在access token过期后重新获取新的access token的。它的有效期通常较长,甚至可以说是永久的。但是,refresh token通常不会直接发送给客户端,而是保存在服务器端。

2024-10-23 20:21:52 441

原创 如何实现无感刷新Token

5、后端接收到刷新Token请求后,首先验证Refresh Token的有效性、如果Refresh Token有效,则生成新的Access Token,并返回给前端。,如果Token未过期且有效,则处理请求并返回对应的结果,如果Token已过期或无效,则后端返回401未授权错误码给前端。6、前端收到新的Access Token后,更新本地存储中的Access Token,并重新发送之前被拦截的请求。6、前端收到新的Token后,更新本地存储中的Token,并重新发送之前被拦截的请求。

2024-10-23 20:20:20 925

原创 常用的部署服务方式

基于Linux的java -jar:直接在Linux系统上运行java -jar命令,操作简单,易于理解和实施:没有额外容器开销,直接运行在宿主机上,资源利用率较高:可以根据需要进行各种定制化操作,如设置环境变量、调整JVM参数等:不同开发环境之间可能存在差异,可能导致不同机器环境不同而运行不了。:需要手动配置和依赖管理,容易出错。:多个应用运行在同一台物理机上,资源隔离不足,可能导致资源争用和性能问题:手动部署和管理,缺乏自动化,维护成本高:默认情况下,如果终端关闭,进程会被终止。

2024-10-23 16:36:57 320

原创 Java应用程序的服务器有哪些

Apache Tomcat、Jetty 和 JBoss都是用于部署Java应用程序的服务器,它们都支持Servlet、JSP和其他Java EE(现在称为Jakarta EE)技术。

2024-10-23 16:36:13 731

原创 Linux 使用bash文件以守护进程运行java -jar

我用的是之前的仓储管理系统,前端的URL改成虚拟机的地址就行了,然后运行,这个日志文件不是实时更新的,需要重新打开才能看到最新的日志。首先创建一个shell脚本,可以自己定义放在虚拟机的某个文档中,我放在了opt目录下,这个目录可以自己定义,起名为 app.sh。如果运行后出现以下错误,是说明app.sh里面有一些空格。然后重新启动就行了,可以在日志文件中查看运行日志。想要保证后台运行java -jar,可以使用。如果没有的话,可以下载一个JDK,使用命令。然后就直接重新运行就好了,下面是运行日志。

2024-10-23 16:12:12 378

原创 mybatisPlus乐观锁实现重试机制

在服务层中手动实现重试逻辑。1.引入依赖Plain Text2.config层Plain TextPlain Text3.dao层@MapperPlain Text4.entity层@Version // 用于mybatis-plus private Integer version;// 用于乐观锁}Plain Text5.service层return;if (update > 0) { System.out.println("更新成功");return;

2024-10-23 15:50:50 735

原创 低代码平台

低代码平台如宜搭(YiDa)在提高开发效率、降低开发门槛和易于维护等方面具有明显优势,但也存在定制化能力有限、性能问题和学习曲线等缺点。选择是否使用低代码平台,需根据具体的业务需求、团队能力和项目规模来综合考虑。对于简单的应用和快速迭代的场景,低代码平台是一个很好的选择;而对于复杂和定制化的需求,可能需要结合传统的开发方式。

2024-10-23 15:47:47 527

原创 跨域问题及常用的5种解决方案

跨域问题通常指的是在浏览器中由于同源策略的限制而产生的问题。同源策略(Same-origin policy)是浏览器的一种安全措施,它要求请求的域名、协议和端口必须与提供资源的网站相同。当一个网页尝试访问另一个来源(即不同域名、协议或端口)的数据时,那么后端返回给浏览器的数据被浏览器拦截下来,这就是跨域。

2024-10-16 21:48:34 3225

原创 Java JUC

JUC(Java Util Concurrent)是Java中的一个并发工具包,提供了一系列用于多线程编程的类和接口,旨在简化并发编程并提高其效率和可维护性。JUC库包含了许多强大的工具和机制,用于线程管理、同步和协调。

2024-10-16 21:38:39 995

原创 枚举实现单例

防序列化破坏:枚举类自动提供了 readResolve() 方法,该方法会在反序列化过程中返回同一个枚举实例,防止反序列化创建新对象。避免双重检查锁定:相比双重检查锁定、静态内部类等方式,枚举实现更加简洁和优雅,避免了 volatile 和同步块的复杂性。如果你需要对单例的行为进行扩展,比如通过继承来增加新的功能,枚举类型就不如普通的类灵活。每个枚举实例都是该枚举类型的对象,并且这些实例是固定的,不能动态创建。实现简单:通过枚举来实现单例只需要定义一个枚举常量,避免了复杂的同步和懒加载问题。

2024-10-16 20:52:49 321

原创 单点登录的多种形式

单点登录(Single Sign-On, SSO)是一种身份验证机制,它允许用户在一个地方进行一次登录后,就能够访问多个相关但独立的系统或应用程序,而无需在每个系统中重复输入用户名和密码。简单来说,就是“登录一次,到处通行”。

2024-10-16 20:51:05 337

原创 MySQL存储JSON

}Java} }} }Java//JsonAutoDetect.Visibility.ANY 代表所有属性或字段都可以序列化 objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);//新版用法 //以数组的方式存放到Redis,Class Type 全类名作为为第一个元素,Json字符串为第二个元素。

2024-10-11 15:48:40 583

原创 数据库-分库分表

​ Apache ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成,既能够独立部署,又支持混合部署配合使用的产品组成。功能特性:它们均提供标准化的数据水平扩展分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

2024-10-07 10:03:05 2399

原创 JAVA JVM常见面试题

回收时先将eden区存活的对象复制到一个survivor0区,然后清空eden区,当这个survivor0区,也存放满了时,则将eden区和survivor0区存活对象复制到另一个survivor1区,然后清空eden和这个survivor0区,此时survivor0区是空的,然后将survivor0区和survivor1区交换,即保持survivor1区为空,如此往复。当前主流的JVM可以通过-Xmx和-Xms来控制堆内存的大小,发生堆上OOM的可能是存在内存泄露,也可能是堆大小分配不合理。

2024-09-27 17:20:03 810

原创 MySql高级

索引是在 Mysql 的存储引擎(InnoDB,MyISAM)层中实现的, 而不是在服务层实现的. 所以每种存储引擎的索引都不一定完全相同, 也不是所有的存储引擎都支持所有的索引类型的,幻读:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。不可重复读:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变 了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。

2024-09-26 16:58:41 779

原创 MySql Explain优化命令使用

EXPLAIN 是一个用于获取 SQL 语句执行计划的命令,用于帮助理解查询的执行过程以及如何优化。这里主要是索引优化。

2024-09-26 15:25:09 1161

原创 xxl-job 分布式调度平台

xxl-job 是一个轻量级分布式任务调度框架,支持动态添加、修改、删除定时任务,支持海量任务分片执行,支持任务执行日志在线查看和分页查询,同时支持任务失败告警和重试机制,支持分布式部署和高可用。xxl-job 的核心思想是将任务的调度和执行分离,通过调度中心统一控制任务的分配和执行,实现任务的统一管理和调度。xxl-job 可以轻松集成到 Spring、Spring Boot、Dubbo 等主流框架中,使用简单方便,已经广泛应用于各大互联网公司的生产环境中。分布式任务调度平台XXL-JOB。

2024-08-19 14:49:41 286

原创 java 任务调度器

在服务类中定义一个方法,并使用 @Async。

2024-08-19 14:28:38 1243

原创 关于RedisTemplate的序列化

代码中如果使用RedisTemplate要使用@Resources注解注入,这个会根据名称注入。如果使用@Autowired注解会根据类型注入,因为泛型匹配不上,运行时控制台会报错。sprin提供的RedisTemplate默认使用的是JDK的序列化,在程序中读写没有问题,但如果在redis的图形化客户端读取程序中存的值会出现乱码。此外如果使用代码获取redis中所存储的值时,会统一放回Object类型,如果想要返回自己的实体类型可以使用。

2024-08-08 17:24:20 172

原创 MyBatis入门

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、获取结果集等jdbc繁杂的过程代码。MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。

2024-06-05 19:17:37 570

原创 Servlet实现登录跳转小demo

然后再创建一个maven的web项目,最后就可以开始代码实现了。其中config和utils目录中放的是数据库相关的配置(简单封装了一个操作数据库的工具类),这里是用读取 配置文件的方式来获取username、password等信息,配置文件内容如下。1. 首页把项目的目录结构布置好以及封装一个操作数据库的工具类,如下。3. 引入相关的依赖并提供一个User实体类。2. 准备好登录页面和主页面的jsp。4. servlet包中的代码。5. service中的代码。下面是操作数据库的工具类。

2024-05-31 20:26:40 244

原创 重定向和转发

web网站上面有一些跳转按钮。比如登录成功以后跳转到主页面!!!

2024-05-30 16:51:57 666

原创 Servlet的三种创建方式和生命周期

Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2024-05-29 21:54:38 1238

原创 Tomcat下载和安装

Tomcat是一个免费的开放源代码的Web应用服务器,是Apache软件基金会项目中的一个核心项目,由Apache ,Sun共同开发而成,深受Java爱好者的喜爱,是一款比较流行的web应用服务器。4. 进入bin目录点击startup.bat (windows版)即可运行Tomcat,点击shutdown.bat 关闭Tomcat。server.xml该文件用于配置server相关的信息,比如tomcat启动的端口号,配置主机(Host)。④logs:存放日志,当我们需要查看日志的时候,可以查询信息。

2024-05-29 20:57:00 434

原创 Maven一套搞定

同样是在settings.xml文件中来配置本地仓库的位置,在文件的前几行中就能找到一个<localRepository>/path/to/local/repo</localRepository>标签,不过是被注释的,我们只需复制一个到下面,并把/path/to/local/repo换成我们想要的仓库位置。配置本地仓库的目的是:可以方便的找到我们从中央仓库下载的jar包以及指定本地仓库的存储位置。依赖管理主要管理的是依赖冲突 ,依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突。

2024-05-28 20:31:22 722

原创 MyBatis快速入门详解

这个映射配置文件一定要和接口所在的包相同 (映射配置文件一般都放在resources中,要在里面创建对应的包层次结构)5.再来到Mybatis-config.xml中把mapper标签中的信息换成对应的映射配置文件。1. 首先项目里导入Mybatis和mysql相关的依赖(添加之后记得。)中找到mybatis的配置文件,在里面可以配置数据库连接等信息。3.在项目中创建一个mapper包,在里面创建一个接口。4.再到刚才的mybatis网站中,粘贴映射配置文件。2.在mybatis的中文官网(

2024-03-13 14:59:11 393

原创 maven 下载与配置

5. 在settings.xml中复制<localRepository>/path/to/local/repo</localRepository>,把里面的/path/to/local/repo,换成自己本地仓库想要放的对应目录即可。7.打开刚刚的settings.xml文件,在里面找到mirror,把刚刚复制的粘贴到里面即可,到此maven的下载和配置以及完成了。4.配置本地仓库位置(默认本地仓库在C盘,设置完之后可以节省C盘空间),打开conf目录下面的settings.xml。

2024-03-05 20:59:39 740 1

原创 “百钱买百鸡”是我国古代的著名数学题。3 文钱可以买 1 只公鸡,2 文钱可以买一只母鸡,1 文钱可以买 3 只小鸡。用 100 文钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?一看就明白

【代码】“百钱买百鸡”是我国古代的著名数学题。3 文钱可以买 1 只公鸡,2 文钱可以买一只母鸡,1 文钱可以买 3 只小鸡。用 100 文钱买100 只鸡,那么各有公鸡、母鸡、小鸡多少只?一看就明白。

2023-12-12 19:53:23 228 1

原创 java 一看就会,带注释。古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对 兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....即从第三个月起,本月的兔子数量为前两个月的兔子数量之和(此处单位为对)

2023-12-11 20:59:08 120 1

原创 Java 基于集合(set接口下的集合)编写双色球 红球一共6组,每组从1-33中抽取一个,六个互相不重复。蓝球是从1-16中抽取一个数字,这整个组成的双色球。

【代码】Java 基于集合(set接口下的集合)编写双色球 红球一共6组,每组从1-33中抽取一个,六个互相不重复。蓝球是从1-16中抽取一个数字,这整个组成的双色球。

2023-07-20 10:13:05 332 3

原创 Java 编写程序求123456789之间随机位置放加减,使表达式的和为100,求出这样的表达式

【代码】Java 编写程序求123456789之间随机位置放加减,使表达式的和为100,求出这样的表达式。

2023-07-20 10:10:39 242 2

原创 Java 求123456789 字符串1..9 之间不改数字位置随机+-要求表达结果和为100,写出这样表达式

【代码】Java 求123456789 字符串1..9 之间不改数字位置随机+-要求表达结果和为100,写出这样表达式。

2023-07-18 10:09:10 243 1

原创 Java 冒泡排序(升序降序)

【代码】Java 冒泡排序(升序降序)

2023-07-12 20:41:54 1013 2

原创 Java 双色球中奖-代码演示

【代码】Java 双色球中奖-代码演示。

2023-07-12 20:29:25 662 2

原创 Java循环练习输出菱形 代码演示

【代码】Java循环练习输出菱形 代码演示。

2023-07-11 21:58:02 163 1

原创 Java之for循环 打印九九乘法表(正三角 倒三角 彩色三角)

【代码】Java之for循环 打印九九乘法表(正三角 倒三角 彩色三角)

2023-07-11 21:46:05 1630 1

原创 Java之while简单猜数字小游戏详细讲解

【代码】Java之while简单猜数字小游戏详细讲解。

2023-07-11 19:59:45 813

原创 java 用日期类计算你从出生到现在活了多少天 (日期类入门)

【代码】java 用日期类计算你从出生到现在活了多少天 (日期类入门)

2023-07-08 17:22:52 514

原创 如何在虚拟机中配置 Linux 超超详细安装教程

首先你得确保电脑中有相应的虚拟机软件和Linux系统,在此只说如何在虚拟机中配置Linux。有一些不需要的硬件可以选择移除,当然如果有需要的硬件也可以选择添加。选择Linux,在版本处选择你提前下载好相应版本,然后点击下一步。重启之后,输入你刚刚设置好的账号密码,就可以登录成功开始使用了。这里选择安装哪个版本的,通常第二个较小,简洁,可以选择第二个。这个可以根据自己需求,安装相应的东西,在此我没有安装。在此你可以选择安装到你想要的位置,然后点击下一步。此处显示的是你电脑的IP,点击Done。

2023-07-08 12:35:32 2321

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除