自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

迷路人的博客

当其不在迷茫时,就是大佬之时

  • 博客(103)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用EasyExcel上传Excel表格数据

1.在表格的第一行添加数据库对应的字段:【若主键id为自增型,则不用添加,字段要和数据库字段保持一致】2. 创建一个类 Userss,字段要和数据库保持一致:private int id;@Excel(name = "sex", readConverterExp = "0=男,1=女,2=未知")private Integer sex;@Excel(name = "stuno")private String stuno;注意点:1.每一个字段上要添加 @...

2021-04-12 13:41:19 977 1

原创 使用RestTemplet 调用远程端口

RestTemplate restTemplate =new RestTemplate();String url="http:/xxxxxxxx";HttpHeaders requestHeaders = new HttpHeaders();//这里使用的json格式 ,若不加则可能会有异常requestHeaders.setContentType(MediaType.APPLICATION_JSON);// InfoRequest 为包装的请求参数类, 【参数为多个时 使用】Info.

2021-04-12 11:44:16 1559

原创 Redis实现好友功能

好友功能是目前社交场景的必备功能之一,一般好友相关的功能包含有:关注/取关、我(他)的关注、我(他)的粉丝、共同关注等这样一些功能。

2024-01-19 15:35:07 795

原创 Redis+lua 解决秒杀超卖问题

商品超卖的原因是在高并发场景下,业务层面扣库存和库存的判断会出现并发情况,但是使用lua 脚本,就会避免超卖的发生。1.在项目resources文件夹创建一个名为。key是redis的商品id key。amount 是商品库存。

2024-01-18 13:47:43 1182

原创 Excel上传到服务器,并下载返回

需求:将一个Excel用户名单从后台管理系统上传到后台,后台判断名单中的人是否已在数据库中,然后将已存在的人用excel形式返回给前端。问题:后台管理使用的是若依框架,接收不了从后台推流的Excel【也可能是我的方式错误】解决方案:无奈下只能先将要返给前端的 已存在的用户名单上传到服务器,然后返回给前端一个存储地址,前端根据存储地址,使用window.open()从服务器上拉取Excel,然后推流给前端。1.Excel上传到服务器: public String keppExcel

2022-03-16 14:55:31 3125

原创 对富文本中的阿里云图片进行重定向

富文本中的图片是存到阿里云中的,在数据库中整个富文本的内容是存在一个content字段中的,这样会带来一个问题:上传到阿里云的图片是带有过期时间的,这时就需要调用阿里云的函数,重新生成一个新的链接,但是在展示富文本内容时,是直接将content字段返给前端,里面的图片地址还是原先的(已过期),图片就展示不出来。解决方法: 1.适用于非高并发场景: 我们的富文本的img标签保存的是完整的图片地址,在上传图片时就在该图片的前面加上路径,让其转到另一...

2022-01-05 09:53:04 845

原创 Redis-List专题

List类型是一个双端链表的结构,容量是2的32次方减1个元素,即40多亿个; 其主要功能有push、pop、获取元素等;一般应用在栈、队列、消息队列等场景。1.高并发淘宝聚划算商品列表### 一、需求分析:淘宝聚划算功能https://ju.taobao.com/这张页面的特点:1.数据量少,才13页2.高并发,请求量大。### 二、高并发的淘宝聚划算实现技术方案像聚划算这种高并发的功能,绝对不可能用数据库的!一般的做法是先把数据库中的数据抽取到redis里面。采用.

2021-12-31 11:29:09 1045

原创 数据库添加唯一索引,后端捕获异常,返给前端消息

有时表中的字段要求唯一,不能重复,就需要添加唯一索引:后端代码: 插入时 code字段不能重复import org.springframework.dao.DuplicateKeyException;插入实体时,捕获异常,然后自己抛一个异常前端:...

2021-12-08 15:44:33 2378 2

原创 xshell使用公钥登陆

1.将公钥在自己电脑上进行配置:将公钥放到该目录下:C:\Users\NING MEI\.sshNING MEI:是我电脑用户名2.打开xshell:2.1 填写信息:主机名和端口号2.2 点击左侧的用户身份验证:2.3 点击方法:选择公钥2.4点击浏览,选择导入公钥2.5 就从C:\Users\NING MEI\.ssh 文件夹中选择刚刚的公钥2.6 然后点击连接即可...

2021-11-24 13:32:19 2686

原创 数据库中存的是数组

数据库数组字段:["roleId","schoolId","userName","name"]1.存入数据库数据:用String 类型接收前端传入的字段:JSON.toJSONString(wsProAuthVo.getShowParams().split(","))存到数据库就是:["roleId","schoolId","userName","name"]2.取出数据:以list集合返回给前端 Integer length=wsProAuthDo.getShowPa

2021-11-15 10:23:33 3718

原创 mysql 字段中存储有多个空格

在创建活动的时候,输入了多个空格,存到数据库也是带有多个空格的但是在前端展示的时候,前端有时会去掉几个空格,只剩一个空格,这样到数据库查询的时候,就查不到对应的数据。所以使用sql,去掉所有的空格进行查询select * from ssyz_activity where id = #{activityId} and trim(replace(title,' ','')) like trim(replace(#{activityName},' ',''));...

2021-11-08 14:26:32 919

原创 Redis-Set专题

redis 的set类型 和 Java的set集合功能类似,set的主要功能是求 并集,交集,差集1.淘宝黑名单校验器的redis技术方案1、黑名单过滤器业务场景分析淘宝的商品评价功能,不是任何人就能评价的,有一种职业就是差评师,差评师就是勒索敲诈商家,这种差评师在淘宝里面就被设置了黑名单,即使购买了商品,也评价不了。2、黑名单校验器的redis技术方案黑名单过滤器除了针对上文说的淘宝评价,针对用户黑名单外,其实还有ip黑名单、设备黑名单等。 在高并发的情况下,通过数.

2021-10-30 16:29:17 949

原创 1.Redis的Hash专题

redis中的hash结构数据结构,就是value类型为hash【和java中的hash结构一样】Map<String,HashMap<String,String>> hash=newHashMap<String,HashMap<String,String>>();1.redis的hash结构经典场景:存储java对象1.Redis的String和Hash存储Java对象的区别redis 存储java对象一般是string 和 hash两

2021-10-20 23:08:15 1064

原创 阿里云上传更改配置参数

1.bucket变更项目根据需求更改了bucket,endPoint 是bucket的区域,若区域改变,则endPoint 一定要变。String endPoint = "oss-cn-beijing.aliyuncs.com";oss-cn-beijing 是bucket的区域 ,endPoint 是创建 OSSClient 填的第一个参数OSSClient client = new OSSClient(endPoint, KEY_ID, KEY_SECRET);...

2021-10-20 10:18:29 678

原创 Redis的hash结构经典场景--存储对象

redis中的hash结构数据结构,就是value类型为hash【和java中的hash结构一样】Map<String,HashMap<String,String>> hash=newHashMap<String,HashMap<String,String>>();每个hash【是value位置上的第二个hash】的存储大小:可以存储2的(32-1)方的键值对【40多亿】...

2021-09-15 15:24:12 2758

原创 Redis+LUA技术

原先代码:优化点:Redis为什么要使用LUA入门例子:以上脚本说明:1. eval :为redis关键字2.双引号的内容代表 lua脚本3. 2代表 numbers参数的个数,即有多少个key4.key1 和 key2 代表 KEYS[1] , KEYS[2] 的入参5.agan1 ,agan2 是 ARGV[1], ARGV[2]的入参性能优化:将上述代码优化成lua脚本:原代码:lua 脚本:n...

2021-09-15 10:36:11 1556

原创 使用Redis创建分布式系统自增式的全局唯一id

1.为什么分布式系统需要全局唯一id?答:在互联网系统中,并发越大的系统,数据量就越大,就越需要分布式,但是大量的分布式数据就越需要唯一标识来识别它们。例如淘宝的商品系统有千亿级别的商品,订单系统有万亿级别的订单数据,这些数据都是日益增长的,传统的单库单表是无法支撑这种级别的数据,必须对其进行分库分表;一旦分库分表,表的自增id就失去了意义,所以需要一个全局唯一的id来表示每一条数据(商品,订单等等)。2.全局唯一id必须具备什么特点?答:1.全局唯一性:不能出现重复的id【最基本的要求】.

2021-09-14 15:15:10 1675

原创 优化重写Redis的序列化

存入redis的自定义类必须完成序列化才可以

2021-09-13 23:10:28 324

转载 基本架构:一个键值数据库包含什么?

该内容是极客时间的"Redis核心技术与实战"的总结:01 | 基本架构:一个键值数据库包含什么?-极客时间1.键值数据库的数据模型:对于键值数据库来说:基本的数据模型是key-value模型,不同的键值数据库的key差异不大,主要的差异则在value类型。Memcached支持的value类型仅是String类型,而Redis的value类型有String,哈希表,列表,集合等。Redis能在实际业务场景中得到广泛的应用,就是得益于支持多样化类型的value;从使用的角度来说,不同 val

2021-09-10 12:05:28 2660

原创 SpringBoot返给前端的值为null的字段不出现

使用@JsonInclude(JsonInclude.Include.NON_NULL) 注解,可以在类上面添加,也可以在字段上添加

2021-08-20 11:13:18 1111

原创 Redis排序-分数相同,排名一致

接到一个需求:要对一个活动下的用户分数进行排序,对于分数相同的,排名是一样的,但是redis的zSet能进行排序,但是即使分数相同,也会根据插入redis的时间来分排名,即需要在redis之外,额外设计分数相同的,排名是一样的。这就需要不仅从redis中拿到value还要拿到score:思路:从redis中拿到 value,score ,然后通过在service层进行一些额外的操作,得到一个map,map中key是用户id,value 是排名在自己封装的redisService中的代码

2021-08-20 11:08:43 3115

转载 Spring Cloud使用 AOP记录用户操作日志

使用springcloud 和springboot没有多大区别,主要是关于aop的代码要放在公共项目common中,一开始我放在某个业务工程t1中,其他没有依赖t1的工程,都不能使用该log。该日志的功能:记录用户每一次的行为的用户ID,使用时间,请求参数,返回结果,模块,请求时长。【将该日志数据存到数据库中,能够让cloud项目所有的controller接口都能使用,不用自定义注解】使用了环绕通知================================================.

2021-07-19 18:10:47 3518

原创 关于阿里云上传图片时,遇到的一些问题

上传多张图片时,在mysql中保存的格式应该是这种:["2021/6/16/1623836003613.png,2021/6/16/1623830216907.png"],但是有时候上传单张图片时,前端也是使用上传多张图片的方法【因为要求是能够上传多张图片】,所以上传单张图片时,在mysql中的格式是这种:2021/6/16/1623836003613.png这就有问题了,当后端从mysql读取图片时,需要将 2021/6/16/1623836003613.png 转成能够访问的格式,但是会出现

2021-06-23 16:09:26 2701

原创 java实现统一异常处理

对于Dao层 和Service产生的异常要一直网上抛,直至Controller层,但是对于controller层不能处理的异常也不能直接抛给前端。为什么不能在service处理异常

2021-06-18 15:32:19 1814 2

原创 7.RabbitMQ高级特性

1.保证消息可靠性1.发送方:需要使用RabbitMQ的发送端确认机制,确认消息成功发送到RabbitMQ并被处理

2021-06-02 23:40:04 190 3

原创 6.微服务之间通过mq发送消息

主要侧重于各个微服务之间发送消息,至于业务逻辑会简化1.下单,商家微服务发送消息/** * 使用channel发送消息【因为channel是客户端和mq通信的逻辑对象】 * 参数: * 1. exchange 是原先声明的 * 2. "key.restaurant" 是 routing key ,这是餐厅微服务声明的, * 餐厅需要将自己的队列用routing key 将自己的队列绑定在交换机上 * 3. 消息特殊参数没有,所以设置为null * 4. rabbit.

2021-05-31 17:31:04 1585

原创 1.Lambda表达式的基础知识

1.函数式接口概述和定义函数式接口是java中的一个只包含一个接口方法的特殊接口,其语义化检测注解:@FunctionalInterface函数式接口中可以有 默认方法 , 静态方法 和 从Object继承过来的方法【在java中所有的类型/对象 都是直接或间接继承自Object】2.Lambda表达式和函数式接口的关系函数式接口只包含一个操作方法,lambda表达式只能操作一个方法,lambda的核心是一个函数式接口的实现。一个简单的lambda表达式的实现:函数式接口..

2021-05-27 23:35:54 401 3

原创 5.队列和交换机绑定

交换机是由双方同时声明,队列是由接收方声明并配置绑定关系1.先使用rabbitmq包进行开发【偏底层】,适合了解原理目前是每两个微服务之间的通信使用一个单独的交换机:1.订单微服务和 餐厅微服务之间的通信,是在订单微服务中声明,监听餐厅发送的消息1.首先创建ConnectionFactory2.通过ConnectionFactory创建Connection3.通过Connection创建Channel4.声明交换机5.声明消息队列 【如果还需要监听其他微服务发送的消.

2021-05-24 22:42:06 2031

原创 java后端添加校验操作

新增实体时,有时需要前端传入的实体的一些字段不能为空,虽然检测必填字段是否为空,这一工作一般由前端完成,但是后端也必须校验:1.在实体类上添加注解:有三种注解:分别对应不同的字段类型: @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 @NotBlank 检查约束 (字符串) 是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格. @NotEmpty 检查(集合)约束元素是否为NULL或者是EMPTY. ..

2021-05-08 16:27:30 1886 3

原创 mybatis的sql语句各种操作

1.新增:必传字段直接插入,非必传字段用if判断<insert id="xxx" keyProperty="id" useGeneratedKeys="true"> insert into ss_xxx_xx <trim prefix="(" suffix=")" suffixOverrides=","> name, parent_id,level,type,create_time , <if test="describ

2021-05-08 14:44:15 421 1

原创 使用postman请求,Bearer Token带有token的后台接口时,后台jwt toekn解析乱码

在postman的 Headers 使用 Authorization 字段可以,但是使用 Bearer Token 却不可以原因: 在 Bearer Token 填写token时 ,要注意:将token的Bearer删除,并且不能有空格可以使用:

2021-05-07 14:30:49 2240

原创 java后端:数据以树形结构返回

以树形结构返回:{ "msg": "操作成功", "code": 200, "data": [ { "id": 1, "name": "AA", "describe": "DFDSF", "parentId": 0, "level": 1, "ancestors": "0", "type"..

2021-04-29 09:47:14 2846 4

原创 使用mybatis-plus分页查询

说明:我用的是 Mybatis,只有分页使用的是 mybatis-plus:1.添加依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version>

2021-04-28 15:04:40 1295

原创 4.利用RabbitMQ基本用法,开发项目的前期准备

1.需求分析:1.一个外卖后端系统,用户可以在线下单外卖。2.用户下单后,可以实时查询订单进度。3.系统可以承受短时间的大量并发请求。2.架构设计:1.使用微服务系统,组件之间充分解耦。2.使用消息中间件,解耦业务逻辑。3.使用数据库,持久化业务数据。3.接口需求:1.新建订单接口。2.查询订单接口。3.接口采用REST风格。4.微服务的数据库设计原则:1.每一个微服务使用自己的数据库2.不要使用共...

2021-04-17 09:08:42 121 1

原创 3.RabbitMQ消息交换的关键

发送者不能直接将消息发给最终队列,必须发送给交换机消息根据路由规则,消息由交换机转发给队列消费者从队列将消息取走

2021-04-15 11:51:02 130

原创 2.RabbitMQ的安装

1.安装注意事项:下载链接:两个都可以https://www.erlang.org/downloadshttps://www.erlang-solutions.com/downloads/我的是windows

2021-04-15 10:46:26 95

原创 1.RabbitMQ

AMQP协议:1.Exchange的作用:Fanout:扇形

2021-04-14 22:04:35 109

原创 文件上传

文件上传:参考了:https://blog.youkuaiyun.com/qq_37818095/article/details/105515605?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242上传图片或者文件过大,这个时候我们就要选择压缩文件,把base64Codes当成一个字符串传到服务器即可.1.文件太大前端传入 base64Codes 字符串:可以经过.

2021-04-14 16:33:24 254

原创 3.熟悉HTTP协议结构和通讯原理

1. 字符集和编码 :

2021-04-09 21:13:32 87

原创 2.熟悉HTTP协议结构和通讯原理

1.HTTP 协议特点: 1.支持客户/服务器模式:2.简单快速:3.灵活:4.无连接:5.无状态:2. URI 和 URL 的区别:参考:https://blog.youkuaiyun.com/sinat_38719275/article/details/102607458?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EB...

2021-04-06 17:39:09 146

数据传输稳定性的优化

本次是对NIO多人聊天室项目的优化,没有改动关于多线程的部分,仅仅是对数据传输稳定性的优化,本次优化不是稳定性的最终方案,后续会继续优化,

2020-06-24

基于NIO的多人聊天室项目

相比于上次的基于BIO的多人聊天室的线程数量大幅度减少。 一个线程用于监听客户端的到达,两个线程池分别负责客户端 消息的 读 和写。 另外两个线程 负责 readSelector 和writeSelector 的监听。 但是仅仅是对 服务端中的 ClientHandler 中的数据监听进行了优化

2020-06-21

基于BIO的的多人聊天室,

基于BIO的多人聊天室,使用了多线程技术,比如 CountDownLatch 和线程池等技术, 以udp为辅,tcp为主, 对于tcp服务器端:客户端的消息读写是双通道的,互不影响

2020-06-16

SocketDemo.zip

实现的功能 1. UDP 接收消息并回送功能 2. UDP 局域网广播发送功能 3.UDP 局域网回送消息功能(广播搜索功能)

2020-06-08

空空如也

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

TA关注的人

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