自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 问答 (5)
  • 收藏
  • 关注

原创 均衡加权轮询算法

在步骤一中,当前权重原本为 0:0:0,先加上设定的权重,也就是 4:2:1,变成了 4:2:1,从 4:2:1 中取权重最大的,也就是命中了节点 A,然后节点 A 的权重减去总权重 4+2+1=7,于是变成了-3:2:1。到步骤二,当前权重为-3:2:1,加上设定的权重 4:2:1,变成了 1:4:2,取出权重最大的节点 B,节点 B 再减去总权重后变成 1:-3:2。,而且权重大的节点也不会一直被命中,而是各个节点均衡的被命中,由此循环,一直会保持。的话,并发量一大就会有问题,我们可以测试一下。

2024-04-24 17:54:45 795 1

原创 Vite创建Vue3项目

Vite创建Vue3项目

2024-01-16 10:11:54 1429

原创 从Java8到Java21

Java8 于2014年3月14号发布,距现在已经有快十年的时间了,相信大部分企业或者个人都还在使用 Java8,不过自从 Java21 发布之后,里面的虚拟线程实在是太香了,我个人觉得这个算是一个类似 Java8 一样的革命性的版本,所以,是时候升级到 Java21 啦。下面主要是介绍 Java 中几个重要的版本:8、11、17、21。不过需要注意的是,从 Java8 升级的话,可能会有较多兼容性的问题,所以各位如果要升级的话请慎重。

2023-12-29 16:30:42 1383

原创 SpringSecurity整合JWT实现认证授权

本篇文章主要是 springboot 整合 jwt 实现用户的登录认证与授权,并且还有单用户共享 token、单设备登录、多设备登录、同端互斥登录与临时 token 等对应的实体类可前往我的 git 的 pojo.entity 包 里查看,这里因篇幅原因就不贴出来了网上有很多,也可以用我的:Redis工具类首先把上

2023-12-17 17:24:00 172

原创 注解实现数据权限过滤

一般一些后台管理系统都会有租户或者组织架构的概念,由于租户或者组织都是属于某一群体的,因此他们的数据应该是隔离的。

2023-12-02 16:16:14 217

原创 十分钟学会JWT

JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑和自包含的方式,并且是数据结构是 JSON 格式的,所以可以在各种语言中使用。并且 JWT 是可信任和验证的,因为它里面包含了通过加密之后的签名,可以保证在传输的过程中不会被篡改。JWT 由 Hander、PayLoad、Siganture 三部分组成,其中Siganture 是通过加密Hander 和 PayLoad 形成的签名,签名可以验证数据的完整性,防止被篡改。

2023-12-01 23:51:12 79

原创 MySQL大批量数据插入方案探讨

可以看到,这种方式的效率比mp的批插入还要高,具体原因我认为是mp的批插入是每1000条做一次提交,但是它这1000条都是一条条插入的,而这种方法是将1000条合并为1条SQL插入的,所以效率会更高一些。) values(…通过查看源码,可以发现mp的批量插入对要插入的数据进行了分批操作,每1000条作为一批次,然后循环将数据插入,所以效率也是很高的。可以看到,将所有数据的插入拼接成一条SQL后,效率极大的提高了,毕竟只有一条SQL,不需要花什么时间去建立连接之类的。

2023-10-28 17:34:59 881

原创 AOP注解解析EL表达式

有时候在写自定义注解时需要获取到方法上的参数,虽然要获取的参数都是同一个,但是可能因为入参的不同,数据结构的不同,从而导致不能准确的获取到,这时候我们可以通过spel表达式来获取。spel:Spring Expression Language,这是一个强大的表达式,我们这里只用上了最简单的一种,其他的用法有兴趣的可以自己在网上查找资料。3.在service层编写方法。

2023-10-28 13:27:26 137

原创 mybatis拦截器修改SQL

平常我们写项目时应该都会遇到这么一个问题,一些接口需要根据账号权限的不同而展示不同的数据,又或者是SaaS化产品的租户,一般遇到这种情况,我们在写查询语句的时候,会加上相应的SQL来过滤掉不符合的数据,这样当然是可行的,但是基本上SQL都是相同的,所以就会造成会有很多重复的SQL片段,这样看起来也不太雅观,那有什么方法可以不写这么多重复的SQL吗?这一步就比较自由了,主要看大家的需求是怎样的,我这里就稍微弄个简单点的,注解里有一个参数,这个参数会拼接到原来的SQL上。

2023-05-26 22:29:14 2018 2

原创 nginx反向代理后获取真实请求ip

本来接口运行的好好的,后面为了规范接口,我在nginx加了如下代码。

2023-01-10 10:59:46 990

原创 前后端分离使用同一个域名

然后前端使用通过上面的域名访问,但是请求后端的话,一般后端需要一个端口,例如8080,所以后端的请求就是http://abc.com:8080/user,这样的话不仅把端口暴露出来了,而且也不美观,如果做成http://abc.com/v1/api/user这样的话就美观很多了,废话不多说,教程开始。一般在搭建前后端项目时,都需要到一个域名,例如http://www.abc.com。服务器需要安装nginx,通过nginx的代理实现的。找到nginx关于该网站的配置文件,主要是。2、重载nginx配置。

2022-12-15 18:17:14 3196

原创 docker容器连接宿主机redis和mysql

当我们在用docker部署项目的时候可能会遇到这样一个问题:项目A和项目B都用到了redis和mysql,如果在docker-compose里link或者dependon一个redis和mysql的话,会发现每一个项目都有一个redis和mysql,这样如果项目多了也会产生很多的redis和mysql,看着挺不爽而且也浪费资源的,那能不能让这些项目都能连同一个redis和mysql呢?

2022-12-15 16:06:17 5723

原创 validation字段校验

这样直接抛异常不太友好,可以通过@RestControllerAdvice处理全局异常,并将异常返回给前端。此时若是请求参数的姓名为空或者手机号格式不正确,则会抛出异常。2.实现ConstraintValidator接口。3、controller层添加@valid注解。JsonResult.java为返回的json。5、自定义注解(自定义校验规则)

2022-12-08 17:52:14 1400

原创 pojo、vo、dto、entity都是什么

即Data Transfer Object,数据传输对象,就是将entity与vo进行互相转换的对象,很多时候前端需要的参数在数据库的表里存的是不一样的,比如数据库里有id,姓名,年龄,身份证,但是前端只需要姓名和年龄,又或者还需要一些别的字段,这时候就需要dto来进行转换了。注: dto 和 entity 里面的字段应该是一样的,dto 只是 entity 到 vo,或者 vo 到 entity 的中间过程,如果没有这个过程,你仍然可以做到增删改查,这是根据具体公司规范来的。这就是他们三个的区别。

2022-12-08 17:42:01 3184

原创 Spring Security入门案例

项目源码:点击前往Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。spring security 的核心功能主要包括:其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份。SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。现在对这条过滤器链的各个进行说明:WebAsyncManagerInte

2022-12-08 17:00:46 412

原创 KafKa基础及使用

我们知道,kafka中每个topic被划分为多个分区,那么生产者将消息发送到topic时,具体追加到哪个分区呢?这就是所谓的分区策略,Kafka 为我们提供了默认的分区策略,同时它也支持自定义分区策略。其路由机制为:若发送消息时指定了分区(即自定义分区策略),则直接将消息append到指定分区;

2022-12-08 15:08:22 1189

原创 restful风格接口命名规范

REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。v1代表版本号,可以发现他的接口都是名词,所以可以知道restful接口使用的是名词。,代表获取id为1的数据。复合rest风格的接口。

2022-12-08 14:37:26 2674

原创 java中需要注意的一些代码编写规范

不允许任何魔法值(即未经预先定义的常量)直接出现在代码中在 long 或者 Long 赋值时,数值后使用大写字母 L,不能是小写字母 l,小写容易跟数字混淆,造成误解。

2022-12-08 14:31:12 2607

原创 Feign的使用及原理剖析

feign的基础

2022-12-08 14:23:14 5802 1

转载 docker-compose的安装及使用

docker-compose安装及使用

2022-12-08 11:56:31 33008

转载 docker基础

docker的基础知识

2022-12-08 11:50:26 735

原创 Spring AOP

spring aop

2022-12-08 10:41:35 317

原创 Redis基础

redis基础

2022-12-07 19:56:58 693

原创 Linux基础

linux系统的基础

2022-12-07 17:43:47 192

原创 MySQL及优化

mysql基本知识

2022-12-07 14:44:42 604

原创 反射与注解

java注解与反射

2022-12-07 13:56:25 103

原创 java基础-网络编程

java基础的网络编程

2022-12-07 11:48:18 135

原创 java基础-多线程

java的多线程

2022-12-07 11:24:13 199

原创 java基础复习(二)

java的基础复习

2022-12-07 10:42:46 272

原创 java基础复习

本文用于复习java基础

2022-11-19 22:41:05 677

原创 logback的简单使用

logback是一个非常好用的日志组件,并且logback已经集成到了springboot中,我们可以去查看spring-boot-starter,发现里面含有spring-boot-starter-logging,该日志就是默认集成的logback。当我们启动springboot时,会发现控制台输出了日志,这是因为springboot有一个默认的logback配置base.xml,该配置设置了一些简单的日志输出,方便我们进行日志查看,当然,我们想要使用自定义的日志输出也十分简单,只需要在resourc

2022-01-25 11:18:24 2107

原创 前后端RSA加解密

前端vue RSA加密一、安装npm install jsencrypt --save-dev二、创建js文件在src目录下创建util文件夹,然后在util文件夹下创建 security.js 文件。1、引入jsencrypt//引入加密模块import JSEncrypt from 'jsencrypt';2、编写加密方法export default{ //此处的加密方法可根据实际情况自定义,比如公钥可以直接写在这个js文件中,我这里是需要实时从后端返回公..

2022-01-18 18:10:27 2812 4

原创 自动化部署前后端项目

在平常的开发中,我们一般是在本地编写好代码后,将代码推送到git仓库,然后去到部署了项目的服务器那边将更新后的代码拉取下来,然后打包重新运行。我们可以看到,每次更新项目都要去服务器那边更新一次,很麻烦,那有没有方便一点的办法呢,项目推送到git后,服务器那边自动拉取代码进行打包发布,这样我们只需要将代码推送到git就可以了,不需要主动去服务器操作。对于上面的方式呢,git给了我们一个钩子:webhook,通过这个钩子,当有代码推送到git时,git会触发这个钩子,这个钩子就会向目标地址发送一次请求,该地

2022-01-05 11:49:08 1008

空空如也

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

TA关注的人

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