自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HttpSession 不同的服务 同一个窗口会互相影响

使用分布式会话存储:如果您的应用是分布式部署的,那么您可以考虑使用专门的会话存储解决方案,如 Redis, Memcached 等,来存储会话数据,这样不同服务器上的应用可以共享会话信息。使用无状态会话:尽量设计您的服务为无状态的,这样就不需要依赖 HttpSession 来维持会话状态,可以通过其他机制(如令牌或JWT)在服务间传递状态信息。使用不同的域:在配置 HttpSession 的时候,设置不同的路径或域(cookie domain),这样不同服务的会话就不会互相影响。

2024-03-29 08:29:05 185

原创 接口和抽象类使用场景

接口和抽象类的使用动机不同,从而决定是使用接口还是使用抽象类,使用抽象类是为了代码的复用,使用接口是为了实现多态,当不确定使用接口还是使用抽象类时,就从使用目的出发决定,提高代码复用性就是用抽象类,想实现多态就是用接口。显然呼吸的特性是这些生物共有的,呼吸的方法实现逻辑都可以满足生物呼吸的需求,这时就没有必要封装接口,让各个生物重写呼吸方法逻辑,这样反而增加冗余代码。如果要实现吃饭的功能,应该封装为吃饭接口,让狗,猫,猪实现各自的吃饭方法逻辑,而小麦,大豆不需要实现吃饭接口。

2024-03-13 21:46:48 399

原创 bootstrap application 和 nacos 中配置文件的优先级

注意:虽然bootstrap中配置了启动环境为dev 但是在启动服务的时候依然会读取本地的application.yml和nacos上面的order-service.yaml。启动服务后,各个配置文件的加载顺序为(先加载本地符合的配置文件,再加载nacos上面的配置文件。alibabacloud-配置nacos后,yml文件加载顺序。使用alibabacloud的项目在引入nacos配置后。如果bootstrap.yml配置的是测试环境。那么服务启动后,各个配置文件的加载顺序为。然后nacos上面也存在。

2024-03-13 12:45:43 752

原创 SpringBoot + Mybatis 多数据源配置打印SQL失效问题(mybatis.configuration.log-impl)

一个数据源时直接在 application.yaml 文件中增加如下配置即可实现sql日志的打印。MybatisLogCustom 类为自定义的SQL打印配置类。只需要在多数据源中的一个配置类中增加如下配置即可。

2024-03-13 12:39:17 574 1

原创 mysql数据库连接报错:is not allowed to connect to this mysql server

服务器上面安装的mysql数据库在本地连接的时候报错:is not allowed to connect to this MySQL server。可以看到 我们执行查询语句得到的数据结果中 host 的值是 localhost。mysql数据库只允许自身所在的本机器连接,不允许远程连接。我们执行update语句把权限进行修改。如图所示 可以看到已经修改成功。然后我们再次进行连接。

2024-03-13 12:30:31 418

原创 JedisDataException: READONLY You can‘t write against a read only slave.

d event to listener instance of class [org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisUtil': Invocation of init method failed; nested exception is

2024-03-12 12:40:50 351

原创 This Set-Cookie was blocked because …… cookie无法写入的问题解决

代码调试了半天都没发现什么异常,最后追踪发现登陆完跳回来session都丢了,然后再检查,发现登录接口返回的Set-Cookie指令,在浏览器上没有写入成功。最后查明原因,当HTTPS下有了一个Cookie后,再想在同域名的HTTP站点下写入Cookie就会失败,解决办法就是删除HTTPS站点下的Cookie。因为某种原因,浏览器以HTTPS请求了不支持HTTPS的一个站点,然后删掉地址栏中的S,访问HTTP站点,尝试登录,表现的结果为登录完又回到登录页。

2024-03-12 12:37:34 444

原创 tomcat sessionID生成导致启动缓慢

1)如果Java.security.egd 属性或securerandom.source属性指定的是”file:/dev/random”或”file:/dev/urandom”,那么JVM 会使用本地种子产生器NativeSeedGenerator,它会调用super()方法,即调用 SeedGenerator.URLSeedGenerator(/dev/random)方法进行初始化。随机数是从熵池中进行创建的。当熵池为空时,来自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。

2024-03-11 13:35:18 546

原创 Java方法签名

由于重载方法之间的方法名是相同的,那么我们势必要从构成方法的其他几个要素中找到另一个要素与方法名组成能够唯一标示方法的签名,方法体当然不予考虑。那么就是形参列表和返回值了,但是由于对于调用方法的人来说,方法的形参数据类型列表的重要程度要远远高于返回值,所以方法签名就由方法名+形参列表构成,也就是说,方法名和形参数据类型列表可以唯一的确定一个方法,与方法的返回值一点关系都没有,这是判断重载重要依据,所以,以下的代码是不允许的。一定要注意的是方法重载时,方法返回值没有什么意义,是由方法名和参数列表决定的。

2024-03-11 12:44:51 460

原创 @RequestBody的使用

后端@RequestBody注解对应的类在将HTTP的输入流(含请求体)装配到目标类(即:@RequestBody后面的类)时,会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且json中的该key对应的值符合(或可转换为),这一条我会在下面详细分析,其他的都可简单略过,但是本文末的核心逻辑代码以及几个结论一定要看!注:如果参数前不写@RequestParam(xxx)的话,那么就前端可以有可以没有对应的xxx名字才行,如果有xxx名。一个请求,可以有多个RequestParam。

2024-03-09 13:50:03 1105

原创 关于maven打包时,没有将依赖包打进来的问题

maven打包时,默认不会将第三方依赖包打进来。可以在pom.xml中添加maven-assembly插件实现…打出的包里 xxxx-with-dependencies.jar 就是包含依赖包的。开发了一个工具给第三方调用,采用maven父子模块的方式组织项目。打包后,发现缺少对应的class文件,导致无法使用。

2024-03-09 12:41:49 631

原创 maven本地仓库有包,导致could not find artifact

问题原因: 本地仓库的包中有xxx.repositories 或 xxx.lastUpdated 之类的文件。一旦本地有这些文件,那么就意味着本地的依赖包可能不完整,需要先进行验证是否可用,才能被使用。会拉取远程仓库的依赖包信息进行比对,但是远程仓库确实没有这个包,导致找不到包的问题!问题描述:maven本地仓库有包,仍然去远程仓库拉取包问题,导致could not find artifact * * * 问题!解决方法:找到本地仓库包下的目录,删除临时文件(临时文件*.repositories)即可!

2024-03-09 12:37:04 812

原创 执行jar包中指定main方法

通过maven将应用打成jar包之后,可以通过java -jar ***.jar来执行,会运行指定的main方法,主要是 MANIFEST.MF 中指定的 main 方法;总结:通过maven 把项目打包成jar,然后运行main方法,有两种情况,一种是在MANIFEST.MF中指定运行的main方法;然后指定maven package命令,可以看到打包出来的jar中的META-INF中MANIFEST.MF的内容添加了一项内容。****.className是类名称;这里的****.****指的是包名;

2024-03-08 12:43:05 490

原创 原子操作类AtomicInteger详解

上面的论据是正确的,也就是上面标红的内容,但是这个论据并不能得出"基于volatile变量的运算在并发下是安全的"这个结论,因为核心点在于java里的运算(比如自增)并不是原子性的。这里运行了20个线程,每个线程对count变量进行1000此自增操作,如果上面这段代码能够正常并发的话,最后的结果应该是20000才对,但实际结果却发现每次运行的结果都不相同,都是一个小于20000的数字。对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。

2024-03-07 12:48:07 796

原创 Nginx配置和路由

我们访问1234598734时,没有这个路由则会匹配到1234这个路由,按匹配字符数量最多的进行路由。就是当找不到路由的时候,会按最长路径的路由进行匹配。任意匹配 location / {}Nginx.conf配置文件解析。当找不到路由的时候就会走这个路由。Nginx.conf基本结构。location匹配规则。只能匹配=号后面的内容。

2024-03-05 12:48:30 729

原创 Http——HttpURLConnection详解

HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。在JDK的 java.net 包中已经提供了访问HTTP协议的基本功能的类:HttpURLConnection。使用POST方式访问HTTP。使用GET方式访问HTTP。

2024-03-05 12:37:55 363

原创 system.exit(1) 和 system.exit(0)用法与作用

1)首先在使用system.exit()方法时,status的值是我们自己输入的。这里需要我们自己去判断该处使用该方法是否应该是正常退出,然后再相应给值,以供后续操作。首先可以明确的是,无论status是什么值,效果都是相同的,即:关闭当前系统。但是正常和非正常的用法到底是什么呢?status为非0的其他整数(包括负数,一般是1或者-1),表示非正常退出当前程序。status为0时为正常退出程序,也就是结束当前正在运行中的java虚拟机。关于正常退出和非正常退出的疑惑(待解)

2024-03-04 12:45:12 378

原创 spring 动态修改定时任务schedul

【代码】spring 动态修改定时任务schedul。

2024-03-04 12:41:24 425

原创 string和long转换

2、Long.parseLong(“String”)返回long基本数据类型。1、Long.valueOf(“String”)返回Long包装类型。String类型时间转Long类型时间戳。

2024-03-04 12:26:03 795

原创 Java并发编程 ThreadLocalRandom

每个Random实例里面都有一个原子性的种子变量用来记录当前的种子值,当要生成新的随机数时需要根据当前种子计算新的种子并更新回原子变量。在多线程下使用单个Random实例生成随机数时,当多个线程同时计算随机数来计算新的种子时,多个线程会竞争同一个原子变量的更新操作,由于原子变量的更新是CAS操作,同时只有一个线程会成功,所以会造成大量线程进行自旋重试,这会降低并发性能,所以 ThreadLocalRandom 应运而生。在多线程下计算新种子时是根据自己线程内维护的种子变量进行更新,从而避免了竞争。

2024-03-03 15:25:10 803

原创 Spring Boot 配置文件加载顺序

依次为: bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml。SpringBoot中有以下两种配置文件bootstrap (.yml 或者 .properties),application (.yml 或者 .properties)先加载的会被后加载的覆盖掉,所以.properties和.yml同时存在时,.properties会失效,.yml会起作用。一些固定的不能被覆盖的属性。

2024-03-03 14:50:06 554

原创 关于Long类型数据前端丢失精度问题解决办法

在做项目的过程中,我们的数据的id生成有时候不是使用的自增,而是使用的雪花算法生成的id,而这个id在java的PO对象中往往都是使用Long类型来进行接收的,这个从数据库到java后台端这个数据的转换过程是不会出现问题的,但这个Long类型的数据如果直接使用json转化给前端,前端就会丢失精度,导致前端获取的这个id不正确,为了解决这个问题,需要在java的VO类的对应属性上加上一个注解将该数值类型转换为字符串类型传给前端就解决上述问题了。这里还有一种情况就是如果VO的属性有Long类型的List集合。

2024-03-02 11:06:39 400

原创 springboot 登录校验拦截器HandlerInterceptor注入失败为null问题

然后这个对象里面的内容你去@Autowired都会为null,因为你自己new对象了 spring就不会管理这个对象了,那么里面的注入的对象肯定也必须你自己去创建才行啦。现在通过@Bean的方式来创建这个拦截器对象,把创建对象的主动权交给了spring,然后拦截器那边就可以正常注入了,其实不单单在这里会出现这个情况,只要是你自己new出来的对象,新建一个@Bean 方法 让Spring管理。需要修改WebMvcConfigurer配置。注入的时候用了@Autowired。

2024-03-02 10:59:06 444

原创 LOMBOK关于BOOLEAN类型的问题

从上面可以看出lombok生成boolean类型的get函数以is开头,且去掉了字段的is,把字段当成了test。而对于其他类型的字段,生成的get函数虽然以get开头,但没有这个问题。如上面的getI字段,生成的get函数名是 getGetI(),所以输出的字段名还是 getI。我们可以看到字段名发生了改变,isTest变为了test。研究了一下lombok生成set和get函数的源码,我们看一下编译后的class文件。上面的类中有两个boolean型字段isTest和test1。

2024-03-01 12:48:32 570

原创 IDEA的项目配置与本地不同jdk版本

2、项目导入IDEA工具之后,通过File-Project Structure-SDKs,然后点击【+】按钮,选择JDK,在跳出的页面选择第一步解压得到的jdk文件夹,如下图。1、到Oracle官网下载版本为11的jdk的zip包,例如jdk-11.0.9_windows-x64_bin.zip,然后解压随便放在本地的一个目录就好。因为我本地安装的jdk是8,而项目需要用到11,但是我又不想卸载本地的jdk,所以这里简单记录一下如何修改项目的jdk版本。

2024-03-01 12:34:02 397

原创 参数校验@NotEmpty、@NotBlank、@NotNull

适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty)适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0,必须有实际字符。@NotNull:不能为null,但可以为empty,没有size的约束。源码注释翻译:被注释的元素既不能为null也不能为空。源码注释翻译:被注释的元素不能为空。

2024-02-29 14:46:14 325

原创 SpringBoot 中yml配置文件:定义list集合、数组及注意事项

2.下面说一下如何在yml配置文件中定义list集合、对象集合、数组以及map集合等。如果使用@value注解会报错;2.1定义list集合。

2024-02-29 14:06:25 1474

原创 Spring Boot 中的 WebSocketSession 是什么,原理,如何使用

在上面的示例中,我们实现了 WebSocketConfigurer 接口,并注册了一个 WebSocket 处理器。在 registerWebSocketHandlers 方法中,我们调用了 addHandler 方法来注册 WebSocket 处理器,并指定了 WebSocket 的路径。传统的 HTTP 协议是无法支持实时通信的,因为它是一种无状态协议,每次请求都是独立的,无法保持连接。在上面的示例中,我们创建了一个 WebSocket 对象,并指定了 WebSocket 的路径。

2024-02-29 12:54:14 982

原创 @ModelAttribute和@RequestBody是在Spring框架中用于处理请求参数的注解,但它们有一些关键的区别

ModelAttribute:通过名称匹配的方式,将请求中的参数与方法参数或返回值的属性进行绑定。总之,@ModelAttribute用于处理请求参数的绑定,而@RequestBody用于处理请求体的数据绑定。@ModelAttribute:适用于处理表单提交、URL查询参数等传统的表单数据,可以绑定多个参数到一个Java对象上,方便处理复杂的请求参数。@RequestBody:适用于处理JSON、XML等格式的请求体数据,通常用于RESTful风格的API接口,方便将请求数据转化为对象进行处理。

2024-02-29 12:37:49 406

原创 java请求已经返回但浏览器显示404

RestController 是@Controller和@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了。Java接口请求到了后台,且执行了代码并正常返回 但是返回404。使用postman和浏览器也是,debug进入断点且正常走完 但显示404。@Controller 是视图解析器的,即Return返回的是视图,即jsp或者html页面的。如果返回数据json、xml等,需要在对应的方法上加上@ResponseBody注解。

2024-02-29 12:33:20 465

原创 关于Windows10安装JDK11后原来配置的JDK8环境变量不生效问题

编辑Windows环境变量,选择系统变量"Path",找到"C:\Program Files (x86)\Common Files\Oracle\Java\javapath"删除(这个目录下有三个exe文件,java/javaw/javaws,JDK11),删除后打开CMD命令窗口查询Java版本,自己原来配置的环境变量生效。

2024-02-28 17:18:43 364

原创 详解正向代理与反向代理

上文就相当于一个正向代理的过程,A同学为客户端,马云为服务器,王老师为正向代理。反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。反向代理的典型用途是将防火墙外的服务器提供给客户端访问,反向代理还可以为后端的多台服务器提供负载均衡,或者为后端较慢的服务器提供缓冲服务。正向代理和反向代理所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端。

2024-02-28 12:47:39 968

原创 expecting double-quote to start field name

【代码】expecting double-quote to start field name。

2024-02-28 12:32:28 367

原创 nginx 前后端分离部署

1、由于后台接口没有统一前缀,因此在前端增加统一前缀/api,方便nginx配置反向代理。4、使修改配置文件生效:nginx -s reload 、nginx -s reopen。3、nohup java -jar XXX.jar & 启动。3、nginx.conf修改配置。2、build打包成dist。1、maven打包成jar包。

2024-02-27 12:47:19 459

原创 Nginx部署代理访问网站正常,进入页面后刷新出现404问题

如:http://192.168.1.4/index.html ,此时刷新页面的时候回去根据浏览器的url, 访问nginx上请求对应的静态资源,而nginx会根据localhost / 的匹配规则在dist文件夹里面没有找到对应的静态文件index,所以就会报错404,当然是合理的。比如,你访问的路径,他要的权限是root权限,而我们启动nginx的权限是普通用户权限,则会因为权限不错,导致无法正常访问。解决的方式很简单,就是在我们的代理映射处,配置下面这段代码即可成功搞定,不再出现404!

2024-02-27 12:39:53 650

原创 SpringBoot 配置本地资源映射路径addResourceHandlers 请求200但访问不到图片

瞎忙活了一两天,最后发现是自己写的拦截器把 /image/…请求给拦截了,改成如下图。感觉上面代码也没啥问题,可图片就是无法显示。

2024-02-27 12:33:11 445

原创 java中<<,>>和>>>的含义

向左移动两位结果为1 0 0 0 0 0,换算成十进制即为32,也可以简单的理解为,左移就是将数变大,相当于8*2^2=32。向右移动两位:0 0 1 0即为2,也可以简单的理解为将数向右移位就是将数变小,相当于8除以2^2=2。例如8>>>2表示将8向右移位2位,结果为2。这个也可以和右移运算符一起理解。例如 8>>2,表示将8向右移动2位,结果为2。例如8<<2,表示将8向左移2位,结果为32。<<,>>,>>>为java中的移位运算符。8的二进制:1 0 0 0。8的二进制:1 0 0 0。

2024-02-26 12:43:49 350

原创 Lombok首字母小写,第二个字母大写造成的参数无法接收问题

因为Lombook和jackson生成set方法的方式不同,造成SpringMVC在映射VO字段时无法找到setxIndex()方法(因为Lombook生成的是setXIndex),故自动映射失败。如果VO实体用@Data注解生成get/set,对于首字母小写,第二个字母大写的成员变量,@RequestBody无法完成自动映射,取值为null。Lombook的@Data注解和Spring的Jackson对于get/set的生成方式不同。利用Idea生成符合Spring规范的get/set(略low)

2024-02-26 12:35:58 488

原创 SpringBoot 中yml配置文件:定义list集合、数组及注意事项

https://blog.csdn.net/best_luxi/article/details/122609317

2023-12-25 18:10:27 527

原创 springboot HandlerIntercepter拦截器修改request body数据的操作

https://www.jb51.net/article/216183.htm

2023-12-25 18:01:26 655

python入门学习资料,适合刚开始学习的小白

1、介绍Python的特性、优点、缺点。 2、一键安装Python的编译环境,写出第一段Python代码 3、详细介绍了Python的基本类型,包括整形、浮点型;10、8、2、16进制数的意义和转换关系;布尔类型;字符串与字符串常见运算操作

2024-03-13

js的学习资料,包括知识讲解及相关代码

内容包括:数组、对象、正则、DOM、 BOM、原型和原型链、es6|、ajax、node等

2024-03-07

JAVA 射击生存类小游戏,可用于学习参考

操作说明: 1P: WASD + J(攻击) + K(切换武器) + L(大招) 2P: 上下左右 + 1(攻击) + 2(切换武器) + 3(大招)

2024-03-07

司法证据管理系统,springboot+mysql技术,可用于学习参考

系统分管理员与用户 管理员可以录入司法案件、案件证据关联、证据管理、入库案件维护 用户可以录入证据、关联维护、证据维护、其他渠道证据

2024-03-04

java语言实现的图书管理系统·,可用于毕设参考

图书管理系统的项目页面资源,可用用毕设。适用于大三、大四的同学。 普通用户包括:登录、注册、借书、还书等页面 管理员包括:添加修改书籍、修改用户、查看借阅信息等页面

2024-03-03

空空如也

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

TA关注的人

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