Java
☆叙
保持初心,努力向前,学习和分享
展开
-
redis结合lua实现秒杀
我们都知道秒杀是一个高并发,大量请求的场景,如果每次秒杀,我们都直接去操作数据库,校验库存,扣减库存,大量请求的话,数据库肯定扛不住,会出现各种问题。那怎么办?数据库虽然扛不住,但是redis能抗,所以我们可以使用定时任务,提前将秒杀商品的库存同步到redis中,每次秒杀请求,扣减redis中的库存,然后异步修改数据库的库存。原创 2023-03-27 19:00:00 · 983 阅读 · 1 评论 -
MongoDB基本使用以及springboot整合MongoDB
MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由key-value键值对组成。原创 2023-03-20 20:00:00 · 851 阅读 · 0 评论 -
Java递归实现抢红包,金额分配算法(Random)
递归实现红包分配,红包金额分配算法:每次分的金额是k为[1,2*m/n]之间的随机数,大部分抢红包程序都是按照这个比例算。当n>1并且m原创 2023-03-10 21:00:00 · 1262 阅读 · 0 评论 -
SpringSecurity实现登录和自定义权限认证
springboot整合SpringSecurity实现登录和自定义权限认证原创 2022-12-07 19:00:00 · 4172 阅读 · 4 评论 -
try/catch/finally的各种情况
众所周知,try语句报错,会执行catch语句,然后执行finally,以下这几种情况,看看会如何输出。原创 2022-11-22 19:30:00 · 1649 阅读 · 0 评论 -
树(二叉查找树BST、二叉平衡树AVL、红黑树R-B)
树(二叉查找树BST、完全二叉树、二叉平衡树AVL、红黑树R-B)的详细讲解和代码实现原创 2022-10-19 20:00:00 · 730 阅读 · 0 评论 -
WebSocket实现聊天室功能(springboot+vue3+vite)
WebSocket实现聊天室功能(springboot+vue3+vite)原创 2022-09-03 09:00:00 · 2914 阅读 · 4 评论 -
根据文件路径区分文件的所属类型,并返回对应类型的文件路径
区分文件的所属类型,并返回对应文件路径原创 2022-08-11 19:00:00 · 266 阅读 · 0 评论 -
自定义注解打印接口调用日志
spring boot自定义注解打印接口调用日志原创 2022-07-27 20:00:00 · 579 阅读 · 0 评论 -
springboot 生成二维码
生成二维码原创 2022-06-24 21:00:00 · 587 阅读 · 2 评论 -
接口权限控制(二)
1、简介之前写了一篇关于接口权限控制的文章,那篇文章主要是对用户进行管理,针对用户是否登录来判断是否可以调用接口,这种方式的局限性太大了,无法精确地进行接口控制,本文是在原来的方法上进一步的优化,做到了对每个接口进行权限管理,只有相应的角色才能调用该接口。...原创 2022-04-22 15:43:01 · 2358 阅读 · 7 评论 -
解决项目打包后,在其他项目中引入该jar包,该jar中的@Configuration和@ControllerAdvice注解未生效问题
解决项目打包后,在其他项目中引入该jar包,该jar中的@Configuration和@ControllerAdvice注解未生效问题原创 2022-02-07 22:00:00 · 4777 阅读 · 0 评论 -
接口权限控制(springboot)
spring的AOP实现权限控制原创 2022-01-21 19:00:00 · 6785 阅读 · 1 评论 -
Redis的安装与连接
虚拟机linux中redis的安装和运行,本机连接虚拟机中的redis以及java连接redis原创 2022-01-10 13:58:40 · 668 阅读 · 0 评论 -
java实现导出数据到excel表格
java实现导出数据到excel表格依赖 <!-- 表格导出--> <!--Excel--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.11<原创 2021-11-25 14:20:31 · 3379 阅读 · 0 评论 -
JAVA 实现在list<Entity>中修改其中某个实体里面的某个属性值
JAVA 从list中修改其中某个实体里面的某个属性值最近再写一个项目的时候,遇到了这个问题,就是想要修改一个list中的具体一个实体里面的一个属性值,解决方法如下:首先,创建一个索引,用于标识要改的地方,标识到了要改的地方后,就修改该实体里面的属性值,再将这个实体替换索引的位置即可。代码实现如下:...原创 2021-10-24 21:49:17 · 6668 阅读 · 1 评论 -
将驼峰式名称自动全变成小写的并用下划线分割
只需要将下面的注解放在需要变得类上面即可,会自动将该类的所有属性都转变@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)原创 2021-09-26 09:26:49 · 356 阅读 · 0 评论 -
一个自己写的时间类,里面有时间类型转换、获取上周同期,根据日期推算当前周的开始日期等等功能
一个自己写的时间类,里面有时间类型转换、获取上周同期,根据日期推算当前周的开始日期等等功能具体的功能看注释import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 日期计算 * * @author gcp */public class DateUtil { /** * Date类型转为String * * @param dat原创 2021-09-22 13:28:41 · 201 阅读 · 0 评论 -
Mybatis-plus学习笔记
mybatis-plus理解mybatis-plus相当于mybatis的加强版,主要增加了一个BaseMapper的接口,这个接口中拥有一些对数据库的基本操作,当需要对数据库进行一些基本的操作时,可以直接使用BaseMapper中的方法,这样可以减少很多对数据库进行操作的代码,使得代码更简洁。首先导入依赖(pom.xml) <!-- mybatis-plus--> <dependency> <groupId>com.原创 2021-09-01 18:03:27 · 198 阅读 · 5 评论 -
迭代器Iterator与ListIterator
迭代器Iterator与ListIteratorIteratorListIterator原创 2021-08-07 19:58:41 · 247 阅读 · 0 评论 -
Set、List、Map简析
Set、List、Map简介Set和List是Collection派生的两个子接口。Set特点:无序,元素唯一(不能重复)HashSet: 可快速查询TreeSet: 使用树结构,有序List特点:ArrayList: 随机访问,线程不安全LinkedList: 快速插入、删除Vector: 与ArrayList 类似 , 线程安全Map特点:无序,保存键值对,键不能重复,值可以重复HashMap: 线程不安全,允许键和值为空(null),默认长度为16,使用链地址法原创 2021-08-07 19:26:46 · 146 阅读 · 0 评论 -
String类中包含的实用函数
String类中包含的实用函数函数详情见下方代码注释,这里说一些需要注意的地方。首先,说一下字符如何反转,字符串反转使用到的是StringBuilder类里面的reverse() 方法,因此首先需要将String类型转化为StringBuilder类型 (点击查看String类型与StringBuilder类型的区别),然后使用到reverse()方法,之后再将StringBuilder转化为String。然后是length 与 length() 的区别:lengt原创 2021-08-06 20:41:06 · 521 阅读 · 0 评论 -
一些实用的取整函数
一些实用的取整函数Math.ceil(double a)对于a向上取整。Math.floor(double a)对于a向下取整。Math.round(double a)对于a进行四舍五入,特别注意返回的是整型。Math.rint(double a)对于a取最近的整数,与round()的返回值一样,不过返回的是double类型。演示 System.out.println("向上取整"); System.out.println(Math.ceil(11.3)原创 2021-08-06 20:00:48 · 323 阅读 · 0 评论 -
头像修改功能的实现
头像修改功能的实现前端修改图片按钮样式功能实现:首先设置原本的文件选择器不显示,也就是display:none;然后写下图片img标签,定义图片的大小,加一个点击事件,点击后执行隐藏了的图片选择器的功能,最后设置一个图标,在图片上面,编写事件,当时鼠标在图片内的时候,图标显示,不在的时候,隐藏,另外还要编写一个开启页面,默认图标隐藏的方法,因为刚打开页面的时候,浏览器会默认显示图标(可能是浏览器默认鼠标开始在图片内)。展示效果:点击图片后(鼠标移动到头像上,会自动出现一个修改的图标在头像上,点击原创 2021-08-04 20:39:49 · 7315 阅读 · 4 评论 -
String,StringBuffer,StringBuilder区别
String,StringBuffer,StringBuilder当对String类型的字符串进行修改时, 每次都相当于生成一个新的String对象,举个例子String a = “I”;当我们想要实现“I am a student”时, 即 a = a + “am” + “a” + “student”;系统会重新在堆内存中开辟三个位置分别用来存储"am"、“a”、“student”,然后再开辟一个位置来存放最后的结果,指针再指向这个堆内存地址, 再调用a的时候,,就是我们想要的结果,但是从这个例原创 2021-08-01 20:25:37 · 597 阅读 · 1 评论 -
@RequestMapping(“/view/{id}“)路径中传值
@RequestMapping("/view/{id}")路径中传值使用@RequestMapping("/view/{id}"),可以这样使用方法public ModelAndView view(@PathVariable("id") Integer id)通过传入参数(@PathVariable(“id”) Integer id),可以获取到页面上传递过来的值,广泛用于修改本行数据或删除本行数据。只需在html界面写上<a href="/product/view/${product.id原创 2021-07-08 20:28:08 · 3389 阅读 · 0 评论 -
idea报错Error:java: 不再支持源选项 5。请使用 6 或更高版本。
针对Error:java: 不再支持源选项 5。请使用 6 或更高版本只需要修改几个地方即可解决点击File–>Project Structure–>Project修改划红线的两个地方,改为自己电脑中安装了的jdk版本还是这个目录,点击Modules和上一步一样修改划红线部分最后点击File–>Settings–>Build…–>Compiler–>Java Compiler修改下面两个地方的jdk版本以上步骤的版本号要保持一致,做完原创 2021-07-08 18:30:45 · 2741 阅读 · 3 评论