广州浪神
码龄7年
关注
提问 私信
  • 博客:12,388
    12,388
    总访问量
  • 32
    原创
  • 605,732
    排名
  • 2
    粉丝
  • 0
    铁粉

个人简介:谢谢大家的关注

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2017-12-20
博客简介:

weixin_41464742的博客

查看详细资料
个人成就
  • 获得7次点赞
  • 内容获得3次评论
  • 获得29次收藏
创作历程
  • 1篇
    2022年
  • 10篇
    2021年
  • 25篇
    2020年
成就勋章
TA的专栏
  • 概念知识点
    18篇
  • 分布式
    2篇
  • 工作笔记
    9篇
  • 日常小工具代码
    3篇
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

186人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Redis是否存在线程安全问题

关于这个问题,从两个方面回答第一个,从Redisd的服务端层面,Redis Server本身是一个线程安全的K-V数据库,也就是说在Redis Server端去执行指令的时候,不需要任何的同步机制,它不会存在任何线程安全的一个问题,虽然Redis 6.0里面增加了多线程的模型,但是增加了多线程模型呢只是去处理网络的IO事件,对于指令的执行过程,仍然是采用主线程来处理的,所以它并不会存在多个线程同时去执行操作指令的一个情况,为什么Redis没有采用多线程来执行指令,我认为呢,有几个方面的原因,首先呢Redi
原创
发布博客 2022.04.25 ·
3033 阅读 ·
2 点赞 ·
0 评论 ·
11 收藏

Java 如何重写对象的 equals 方法和 hashCode 方法

一、需求:对比两个对象是否相等。对于下面的 User 对象,只需姓名和年龄相等则认为是同一个对象。二、解决方案:需要重写对象的 equals 方法和 hashCode 方法package com.yule.user.entity;import org.springframework.util.StringUtils;/** * 用户实体 * * @author yule * @date 2018/8/6 21:51 */public class User { privat
转载
发布博客 2021.11.16 ·
347 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL定时备份数据库方案

一、MySQL数据备份1.1、 mysqldump命令备份数据在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:#MySQLdump常用mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql1.2、 mysqldump常用操作示例1.备份全部数据库的数据和结构mysqldump -uroot -p1234
转载
发布博客 2021.09.29 ·
172 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL深分页问题

以下文章来源于公众号捡田螺的小男孩 ,作者捡田螺的小男孩前言我们日常做分页需求时,一般会用limit实现,但是当偏移量特别大的时候,查询效率就变得低下。本文将分四个方案,讨论如何优化MySQL百万数据的深分页问题,并附上最近优化生产慢SQL的实战案例。limit深分页为什么会变慢?先看下表结构哈:CREATE TABLE account ( id int(11) NOT NULL AUTO_INCREMENT COMMENT '主键Id', name varchar(255) DEF.
原创
发布博客 2021.09.29 ·
194 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用Arrays.asList{}遇到的坑

有一次,在项目中,使用Arrays.asList{…}实现集合数据添加,代码如下List<String> kVal=cardMap.get(dto.getIdCard());if(kVal!=null && kVal.size()>0){//一个人可能有多个岗位 kVal.add(dto.getVal()); cardMap.put(dto.getIdCard(),kVal);}else { List<String> val=Arr
原创
发布博客 2021.09.28 ·
166 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

远程服务调用feign,传递参数list

class Configuration { @Bean Encoder feignFormEncoder(ObjectFactory<HttpMessageConverters> converters) { return new SpringFormEncoder(new SpringEncoder(converters)); }}
原创
发布博客 2021.09.28 ·
943 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

你不知道的GET与POST请求

1.get请求,它的数据是放在url当中的,所以get有长度限制,而post请求呢它的数据是放在请求体body当中,所以没有长度限制2.get请求的安全性不如post,但是传输速度呢比post快3.get请求可以少产生一个tcp包,相当于一次性到货,但是呢post需要两个4.get请求可以被缓存,但是post不能5.get请求是可以被反复刷新的,但是呢,post如果反复刷新的话就会重新提交数据...
原创
发布博客 2021.08.19 ·
69 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

缓存雪崩、击穿、穿透,面试无压力

今天讲点Redis安全相关,同时也是面试中经常会问到的知识点.**缓存穿透**产生背景: 缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次查询都会穿透到后端数据库查询,使得数据库的压力非常大。解决方案:1.接口实现api的限流、防御ddos攻击、网关实现黑名单2.在数据库和Redis都查询不到的情况下,将数据库的空值写入到缓存中,加上短时间的有效性(只适合单个key,不适合随机产生不同的key,假如过段时间生成的key就是空的key,会影响正常的使用)3.布隆过滤器
原创
发布博客 2021.08.14 ·
97 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

SpringCloud确保服务只能通过gateway转发访问,禁止直接调用接口访问【转载】

前言在微服务体系架构中,网关承担着重要的角色,在网关中可以添加各种过滤器,过滤请求,保证请求参数安全,限流等等。如果请求绕过了网关,那就等于绕过了重重关卡,直捣黄龙,所以,在分布式架构中,我们需要有一定的防范,来确保各个服务相互之间安全调用。正文思路1、在网关中给所有请求加上一个请求密钥2、在服务添加过滤器,验证密钥首先在网关服务(gateway)中添加过滤器,给放行的请求头上加上判断package com.hpsyche.hpsychegatewayserver.filter;impor
转载
发布博客 2021.02.22 ·
1380 阅读 ·
2 点赞 ·
3 评论 ·
9 收藏

ArrayList线程安全处理

//1.Collections.synchronizedListList<Object> list1= Collections.synchronizedList(new ArrayList<>());//2. 使用线程安全的 CopyOnWriteArrayList 代替线程不安全的 ArrayList。List<Object> list2=new CopyOnWriteArrayList<>();//3.使用ThreadLocal 推荐Threa
原创
发布博客 2021.02.01 ·
148 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

MySQL按照汉字拼音首字母排序

按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序;如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了)。直接在查询语句后面 添加 order by name asc; 查询结果按照姓氏的升序排序;如果存储姓名的字段采用的是 utf8字符集,需要在排序的时候对字段进行转码;对应的代码是 order by
转载
发布博客 2021.01.15 ·
207 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

SpringBoot2+mybatisPlus3+activiti6整合,踩的坑

本文参考自原文博客MybatisPlus+Activiti6用MybatisPlus和activiti整合也出现了问题,真的是头大。刚开始以为版本冲突,还了好多版本都不行,最后得出的结论是因为mybatisplus,要求用mybatis3.4.6,而activiti用的是mybatis3.4.2,两边有冲突。解决办法:将activiti中排除掉<dependency> <groupId>org.activiti</groupId>
原创
发布博客 2020.09.08 ·
183 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RAS公钥私钥

后端工具类package com.xx.auth.utils.encrypt;/** * @Author:zhao-baolin * @Description: * @Date:Created in 2018/7/4 * @Modified By: */public class HexUtil { private static final char[] DIGITS_LOWER = { '0', '1', '2', '3', '4', '5', '6', '
原创
发布博客 2020.09.03 ·
638 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

微服务之业务模块抛出的异常无法被公共代码模块的自定义全局捕获异常捕获到

项目经理某天对我说,我上一任程序员之前在业务模块抛出的异常无法被公共代码模块的自定义全局捕获异常捕获到,现在是在业务模块内添加了跟公共模块相同的全局捕获异常代码文件,让我排查下是什么原因导致失效的。我人为的制造了异常让代码抛出异常,结果正如项目经理所言,假如业务模块内没有写全局捕获,那么异常将自己抛出,不走公共模块的自定义全局异常捕获。其实刚开始我也是挺困惑的,以为是使用了springsecurity的原因,百度了下,发现**@CtrollerAdvice必须要让spring扫描到才生效**,于是我检查了
原创
发布博客 2020.09.03 ·
685 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

MyBatis一级缓存详解

什么是缓存缓存就是内存中的一个对象,用于对数据库查询结果的保存,用于减少与数据库的交互次数从而降低数据库的压力,进而提高响应速度。什么是MyBatis中的缓存MyBatis 中的缓存就是说 MyBatis 在执行一次SQL查询或者SQL更新之后,这条SQL语句并不会消失,而是被MyBatis 缓存起来,当再次执行相同SQL语句的时候,就会直接从缓存中进行提取,而不是再次执行SQL命令。MyBatis中的缓存分为一级缓存和二级缓存,一级缓存又被称为 SqlSession 级别的缓存,二级缓存又被称为表
原创
发布博客 2020.08.14 ·
208 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

静态方法上加上synchronized,用的是什么锁?

public class Test {public synchronized void sale{xxx}}等价于public class Test {public static void sale{synchronized(this){}}}public class Test {public static synchronized void sale{xxx}}等价于public class Test {public static void sale{synchr
原创
发布博客 2020.08.06 ·
500 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

通俗易懂理解数据库三范式

第一范式就是属性不可分割,每个字段都应该是不可再拆分的。比如一个字段是姓名(NAME),在国内的话通常理解都是姓名是一个不可再拆分的单位,这时候就符合第一范式;但是在国外的话还要分为FIRST NAME和LAST NAME,这时候姓名这个字段就是还可以拆分为更小的单位的字段,就不符合第一范式了。第二范式就是要求表中要有主键,表中其他其他字段都依赖于主键,因此第二范式只要记住主键约束就好了。比如说有一个表是学生表,学生表中有一个值唯一的字段学号,那么学生表中的其他所有字段都可以根据这个学号字段去获取,依赖主
原创
发布博客 2020.08.06 ·
152 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

总结最好的序列化与反序列化概述

序列化:把对象转化成字节的过程,成为对象序列化反系列化:把字节恢复成对象的过程,成为反序列化1.对象的持久化概念:将对象转化成字节,保存在硬盘上永久存放2.网络传输对象的概念:客户端将对象序列化为字节的形式(序列化),变成二进制的的形式发送到服务端,服务端接收到字节对象后,反序列化成对象注意:序列化的类必须要实现Serializable接口 transient修饰对象不被序列化...
原创
发布博客 2020.08.05 ·
139 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

简述Java8新特性

1.Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。2.方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。3.默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。4.新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。5.tream API −新添加的Stream API(java.util.
原创
发布博客 2020.08.04 ·
179 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

简单概述下拦截器与过滤器之间有哪些区别

相同点:拦截器与过滤器都是基于AOP技术,对方法实现增强,都可以拦截请求方法不同点:1.过滤器属于servlet自己研发的,而拦截器技术是属于springMVC自己研发的2.过滤器属于拦截web请求,而拦截器不仅可以拦截请求还可以拦截普通方法3.过滤器会比拦截器先执行,拦截器封装的方法会比过滤器拦截使用起来更加简单实际开发中绝大多数情况下,都会使用拦截器拦截器:权限控制、日志打印、参数验证、会话过滤器:编码转换、跨域解决、xss攻击...
原创
发布博客 2020.08.04 ·
178 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏
加载更多