- 博客(33)
- 收藏
- 关注
原创 分布式锁和数据库事务在并发情况下的问题
分布式锁和数据库事务在并发情况下的问题模拟业务场景:@Transactional(rollbackFor = Exception)public Integer update(Integer id) { if (!redisTemplate.opsForValue().setIfAbsent("redis_key" + id,"yes",5, TimeUnit.SECONDS)){ return 0; } Entity entity = xxxDao.select
2021-11-16 17:50:40 968
原创 PageHelper使用返回的total固定为10
PageHelper使用分页固定只有一页数据库数据不只10条,分页查询后却只有一页:排查后发现:total始终返回10,导致了分页错误。排查后端业务代码发现在查询数据完毕后进行了数据的处理,导致原Collection对象发生改变List<xxEntity> list= xxDao.selectListForPage(query);list = list.stream().....collect(Collectors.toList());PageInfo<Complaint
2021-11-04 18:01:21 1225
原创 mysql字段存储emoji表情问题
mysql字段存储emoji表情问题在进行包含表情符号插入数据时报错;Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x81\xF0\x9F...' for column 'content' at row 1考虑是因为编码问题查询数据库编码:show variables like 'char%'修改:set character_set_server= 'utf8mb4'重启服务。..
2021-09-26 15:59:52 328
原创 项目jar包部署发布到maven中央仓库
发布项目到maven中央仓库1.先注册sonatype账号 网址:https://issues.sonatype.org/(如果有直接登录)2.点击新建issue3.填写信息提交审核如下:4.审核失败,原因:group id不是自己的域名,网站工作人员提供了解决办法:最后根据提示步骤123之后再次评论提交,将状态改为 open,5.审核成功:6.maven的setting.xml增加:<server> <id>ossrh</id> <u
2021-09-26 10:00:17 206
原创 mysql高并发下配合redis的秒杀下单功能设计(方案一)
高并发下的秒杀功能设计(方案一)表结构CREATE TABLE `order_info` ( `order_id` bigint NOT NULL COMMENT '订单id', `order_type` tinyint NOT NULL DEFAULT '1' COMMENT '订单类型(1-普通订单,2-秒杀订单)', `goods_id` int NOT NULL COMMENT '商品id', `nums` int NOT NULL COMMENT '商品数量', `pric
2021-08-02 19:36:41 287
原创 rocketmq整合springboot关于启动报空指针/使用configuration注解注入容器
rocketmq整合springboot关于启动报空指针/使用configuration注解注入容器整合rocketmq整合springboot时,发现启动报错@Configuration@RocketMQMessageListener(topic = "topicTest",consumerGroup = "please_rename_unique_group_name")public class RocketmqListener implements RocketMQListener<St
2021-07-07 18:02:47 1836
原创 【算法练习】动态规划- 爬楼梯(青蛙跳台阶问题)
【算法练习】动态规划-求解最大连续子数组和最大假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/climbing-stairs著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。le
2021-07-05 15:06:45 346
原创 【算法练习】动态规划-求解最大连续子数组和最大
【算法练习】动态规划-求解最大连续子数组和最大给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2021-07-05 12:07:21 274
原创 Integer.parseInt()源码解析
Integer.parseInt()源码解析jdk源码:public static int parseInt(String s, int radix) throws NumberFormatException { /* * WARNING: This method may be invoked early during VM initialization * before IntegerCache is init
2021-06-28 11:33:06 308
原创 spring中的循环依赖问题
spring中的循环依赖问题spring应用中,默认是有循环依赖的控制,场景:ServiceA、ServiceB、ServieC 多个bean互相依赖,形成闭环。spring默认使用三级缓存控制循环依赖的问题,但是前提是:bean不是以构造方法注入,单例bean(多例bean不被spring管理,只管创建)。spring3级缓存解决循环依赖:spring构建ServiceA时,发现依赖于ServiceB,于是先去构造ServiceB的bean,先使用构造方法实例化了一个ServiceA,然后
2021-04-14 17:27:51 146
原创 Redis分布式锁setNx防止用户重复提交请求。
Redis分布式锁setNx防止用户重复提交请求首先定义一个注解:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface UnRepeatSubmit { /** * 设置请求(key)的锁定时间,默认5秒钟 * @return */ int lockTime() default 5;}为了能够方便注解实现控制每个handler,提供注解,根据
2021-04-09 10:52:44 1170 4
原创 @RequestBody 传参时json转化的反序列化问题
@RequestBody 传参时json转化的反序列化问题com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.front.entity.FrontConfigs` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or pr
2021-04-06 15:23:56 897
原创 java集合通过对象属性进行去重
java集合通过对象属性进行去重private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHashMap<>(); return t -> seen.putIfAbsent(keyExtractor.app
2021-03-23 10:13:38 267
原创 Redis通过代码删除相同前缀的key
Redis通过代码删除相同前缀的keyredisTemplate.delete(redisTemplate.keys(ConstantConfig.AUTH_USER_LIST + "*"));
2021-03-22 18:17:53 1072
原创 ConcurrentHashmap进行添加元素操作的源码分析以及注释。
ConcurrentHashmap进行添加元素操作的源码分析以及注释。判断需要插入的key/vlaue是否为null。计算hash。遍历存放数据的Node数组,并判断数组是否为空,为空则进行初始化。根据算出数组下标并判断该点是否为空,若为空,cas尝试添加操作。判断数组是否正在进行扩容,正在扩容协助其进行扩容。对该node节点进行加锁操作,并进行元素插入。判断链表长度,并尝试是否需要进行红黑树转化。维护数组长度,并判断是否需要进行扩容操作。/** Implementation for
2021-02-28 14:56:44 702
原创 一个for循环打印九九乘法表
一个for循环打印九九乘法表public class StringDemo { public static void main(String[] args) { test1(); test2(); } /** * 打印九九乘法表 */ private static void test1(){ int max = 9; for(int i = 1;i<=max;i++){
2021-02-25 16:25:07 131
原创 MYSQL关闭安全模式
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.MYSQL取消安全模式SET SQL_SAFE_UPDATES=0;...
2021-02-24 10:30:11 2736
原创 Spring的事务管理Transactional出现嵌套service事务情况
Spring的事务管理Transactional出现嵌套service事务情况@Service@Transactional(rollbackFor = Exception.class)public class AServiceImpl implement AService{ @Override public void a(){ ... }}@Service@Transactional(rollbackFor = Exception.class)
2021-02-23 15:33:09 1794
原创 seata1.4相关重要配置
TC端三个数据库表结构:CREATE TABLE `branch_table` ( `branch_id` bigint(20) NOT NULL, `xid` varchar(128) NOT NULL, `transaction_id` bigint(20) DEFAULT NULL, `resource_group_id` varchar(32) DEFAULT NULL, `resource_id` varchar(256) DEFAULT NULL, `lock_key`
2021-02-23 09:40:12 260
原创 springsecurity的登陆用户信息查询接口的校验或hasIpAddress()用法
springsecurity的登陆用户信息查询接口的校验或hasIpAddress()用法一般的微服务架构下,auth服务都是单独的只做token颁发和校验的模块,所以当在进行用户登录或其他操作的时候,都需要调用其他的服务进行用户信息的查询和密码比对。那么其他服务的这个接口的隐蔽性就会受到挑战。但是发现在springsecurity的权限控制当中,有一个方法很好用:hasIpAddress() @Value(value = "${auth.address}") private Str
2021-02-01 15:25:22 1788
原创 springcloud项目返回的数据格式为:application/xml
springcloud项目返回的数据格式为:application/xml,而非application/json使用springcloud搭建项目有可能会出现的问题。很多组件下面都有fastjson这个依赖,就会导致返回到前端的数据contant-type变成了"application/xml;charest=utf-8"。但是一般都是返回json格式的数据。所以需要排除这个依赖:jackson-dataformat-xml比如在sentinel中、还有就是spring-boot-starter-web
2021-02-01 11:32:40 909
原创 @PreAuthorize出现404&&because it is a JDK dynamic proxy that implements:
@PreAuthorize出现404&&because it is a JDK dynamic proxy that implements:because it is a JDK dynamic proxy that implements:一个已经被jdk动态代理后的类(如果他实现了一个接口),在进行依赖注入的时候会出现的问题。会导致这个类没法被其他类进行注入使用。@PreAuthorize出现404出现这个问题可能是因为你的controller实现了一个接口,比如接口上有@Feig
2021-02-01 10:33:49 290
原创 关于List集合的addAll方法报错UnsupportedOperationException
关于List集合的addAll方法报错UnsupportedOperationException public static void main(String[] args) { List<Integer> list1 = Arrays.asList(2,2,5,6,9,8,6,3); List<Integer> list2 = Arrays.asList(2,2,5,6,9,8,6,3); list1.addAll(list2
2021-01-27 15:17:42 2522 8
原创 mysql计算环比增长率
mysql计算环比增长率需求:统计所选时间之内的月度的环比增长率sql:SELECT afterData.com_code, AVG((afterData.sumPower - beforeData.sumPower) / 1) / (COUNT(1)) `avgGrowthRate`FROM (SELECT com_code, DATE_FORMAT(measure_date, '%Y%m') `month`,
2021-01-11 17:23:05 1182
原创 mybatis查询结果集有泛型属性时可能出现的问题。
mybatis查询结果集有泛型属性时可能出现的问题。问题:当接收结果为map或者对象的属性为泛型时:@Datapublic class GenericKeyValueVo<K,V> { private K key; private V value;}这时候如果直接将resultType指向对象全限定名称时,可能会出现问题。因为如果查询结果的某个字段大于1000会出现","如:1,000.56 。mybatis不会报错,因为这个对象的这个属性为泛型,可以接收。而
2021-01-08 16:51:36 1050
原创 mysql按照指定的天数对日期字段进行分组
mysql按照指定的天数对日期字段进行分组解决思想其实就是算出一个日期天数除天数得到的商进行分组-- 28天月用电量均值SELECT com_code, avgPower, monthFROM (SELECT cons.com_code, AVG(acture_day_amount) avgPower, (DATEDIFF('2020-08-31', measure_date) DIV 28) AS `month`
2021-01-07 13:52:45 676
原创 java8stream根据对象属性分组后取一个对象
java8stream根据对象属性分组后取一个对象实例:Map<String, MltContractDayPower> dayPowerMap = mltContractDayPowers.stream().collect(Collectors.toMap(MltContractDayPower::getMonth, Function.identity(), (exiting, replacement) -> exiting));...
2020-12-25 11:21:59 5085 1
原创 has been blocked by CORS policy: The ‘Access-Control-Allow-Origin‘ header contains multiple values
跨域问题前端报错has been blocked by CORS policy: The ‘Access-Control-Allow-Origin’ header contains multiple values;原因:1、配置双重跨域,比如网关做配置之后,其他服务也做了配置。2、后端配置之后,nginx也做了跨域配置。3、携带过期TOKEN访问,或者两个ip使用同一个TOKEN访问。...
2020-12-24 18:21:58 4430 1
原创 feign调用超时问题
feign调用超时问题新的设置超时的配置方式(yml)remoteAlgorithm为指定的某个服务的别名的特殊配置,default为默认所有的通用配置.feign: client: config: default: connect-timeout: 1000 read-timeout: 600000 remoteAlgorithm: connect-timeout: 1000 read-timeout
2020-12-24 16:45:04 318 1
原创 框架学习_mybatis
mybatis原理剖析mybatis的整体结构、原理、组件等:mybatis运行总体流程: //1.Resources工具类,配置文件的加载,将配置文件加载成字节输入流 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //2.解析了配置文件,并创建了sqlSessionFatory对象
2020-10-14 14:28:53 176
原创 框架学习记录_DispatcherServlet实现过程
DispatcherServlet实现过程流程步骤:1.请求拦截:配置DispatcherServlet拦截前端请求,进入DispatcherServlet处理,DispatcherServlet继承HttpServlet,重写init、doPost、doGet方法。2.初始化://1.加载配置文件 springmvc.propertiesString contextConfigLocation = config.getInitParameter("contextConfigLocation");
2020-10-14 11:21:04 316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人