自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

古柏树下的博客

我们最终都要远行,最终都要跟稚嫩的自己告别。

  • 博客(120)
  • 资源 (13)
  • 问答 (11)
  • 收藏
  • 关注

原创 记SQL插入emoji成功,但是程序插入失败问题

Cause: java.sql.SQLException: Incorrect string value: emoji入库失败,但是字符集设置已经为utf8mb4,控制台sql插入成功但是程序插入失败。到底是任性的泯灭,还是道德沦的沦丧,请和我一起看下去。

2022-12-07 15:46:54 639 1

原创 锁竞争导致的慢sql分析

这是由于两次更新user表过程中,使用了一个事务A,导致事务B来获取db行锁的时候,被事务A阻塞。但在被事务A阻塞前,已经获取到了redis锁,所以导致事务A在获取第二次更新的redis锁的时候被阻塞,造成了死锁。声明式事务使用很简单,可以自动帮我们进行事务的开启、提交以及回滚等操作,但是事务的颗粒度是整个方法,无法进行精细化控制。由于这里事务里面嵌套了redis锁,并且涉及到更新表,可能会有死锁的情况。最终导致,redis锁超时,日志方面体现为慢sql,因为事务B的sql等待了三秒才拿到锁。

2022-11-16 14:05:09 573

原创 dubbo3.0升级在哪?

What’s New in Dubbo3全新服务发现模型相比于 2.x 版本中的基于接口粒度的服务发现机制,3.x 引入了全新的基于应用粒度的服务发现机制, 新模型带来两方面的巨大优势:进一步提升了 Dubbo3 在大规模集群实践中的性能与稳定性。新模型可大幅提高系统资源利用率,降低 Dubbo 地址的单机内存消耗(50%),降低注册中心集群的存储与推送压力(90%), Dubbo 可支持集群规模步入百万实例层次。打通与其他异构微服务体系的地址互发现障碍。新模型使得 Dubbo3 能实现与异构微服

2021-11-09 19:28:49 582

原创 浅谈缓存数据库双写一致性

1. 事务完善双写一致性17boot-cache引入了@CacheMeta来标注缓存,但是spring的已经有现成的缓存,为什么要新写一个注解去做这个事呢,在cf中提出了一个场景,@CacheMeta就是为了解决这个问题:1 thread-1 根据id删除表中数据2 thread-1 根据id清除缓存3 thread-2 根据id从缓存中查找数据4 thread-2 缓存中找不到,查询数据库,拿到的是老数据,并加载到缓存5 thread-1 事务提交在这个情况下,thread-1拿到就是th

2021-10-11 14:58:57 349

原创 让人又爱又恨的分库分表

一、 什么时候考虑切分1、能不切分尽量不要切分并不是所有表都需要进行切分,主要还是看数据的增长速度。切分后会在某种程度上提升业务的复杂度,数据库除了承载数据的存储和查询外,协助业务更好的实现需求也是其重要工作之一。不到万不得已不用轻易使用分库分表这个大招,避免"过度设计"和"过早优化"。分库分表之前,不要为分而分,先尽力去做力所能及的事情,例如:升级硬件、升级网络、读写分离、索引优化等等。当数据量达到单表的瓶颈时候,再考虑分库分表。2、数据量过大,正常运维影响业务访问这里说的运维指:1)对数据库

2021-08-19 15:21:18 306 2

原创 HBase之rowkey如何设计

1.HBase的存储形式Key由RowKey(行键)+ColumnFamily(列族)+Column Qualifier(列修饰符)+TimeStamp(时间戳–版本)+KeyType(类型)组成,而Value就是实际上的值。修改一条数据其实上是在原来的基础上增加一个版本的,那我们要准确定位一条数据,那就得(RowKey+Column+时间戳)。其在region内大多以升序的形式排列,唯一的时logTime是以降序的形式进行排列。所以,rowKey里越靠近左边的信息越容易被检索到。其设计时,要考虑把重

2021-06-07 10:39:57 1351

原创 Redis排行榜的实现

根据上一篇的设计进一步结合实际场景进行实现,通过伪代码的形式展开。现假设有以下场景:游戏闯关排行榜以通关次数正序、复活次数倒序和第一次通关的时间倒序来进行排序1.根据排序规则组合排序分值第一步是组合排序分值,只有根据排序规则组合出来的分值,才能通过排序获取到正确的排名。在排序规则中一般会有两种方式,属性正序和倒序。正序对于组合数字来说没有影响,但是倒序就需要进行特殊的处理。组合的方式在上一篇中已经阐述,在这主要讨论如何生成这个排序字段。可以看出排序字段中的通关次数,复活次..

2020-11-30 18:03:56 426

原创 Redis实现排行榜设计

redis的zset结构有着天然的排序功能,十分适合并发量大的排行功能。通过key值确定排行榜的范围,使用members来作为排序的标识,score作为排序的依据。redis排行榜功能看似简单易用,但在实际应用中却遇到了很多问题,需要通过适当的操作来设计这个功能。接下来就来理清排行榜的设计思绪吧1.排行榜的key设计排行榜一般按照时间段进行分类,分别有周榜,月榜和年榜。这样要区分不同的榜单就需要和时间关联上,通过时间判断来将数据都保存到对应的zset中。例如年榜可以用年份来标识,今年的key就是

2020-10-16 17:10:21 6906 1

原创 fastjson序列化参数丢失

问题现象:在调用mq去发送短信时,使用了一个jsonString对象去传递参数。发现消费方接收到的jsonString解析出来之后,只有第一个对象的参数有值,后序的参数中出现了$ref。模拟入参场景类似如下HashMap<String, String> map = Maps.newHashMap();map.put("mobile", "111111");List<Object> list = Lists.newArrayList();list.add(new Sms

2020-08-29 12:02:19 1330

原创 分库分表下非拆分键的查询方案

分库分表下非拆分键的查询方案在现有的互联网业务模式下,数据库分库分表已经成为解决数据库瓶颈的一个普遍的解决方案。但是分库分表在带来解决方案的同时,也产生了一些新的问题。一、分库分表带来的问题1.事务支持​ 分库分表后,就成了分布式事务了。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价; 如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。2.复杂查询​ 分库分表后将无法进行join操作,查询禁止不带切分的维度的查询,即使中间件可以

2020-07-24 10:27:31 3303

原创 EasyExcel多sheet的导入和导出例子

EasyExcel多sheet的导入和导出EasyExcel对于导入导出的操作十分简洁,方便快捷。其中对于多单文件多sheet的操作比较不同,在此做一下记录从多sheet中导入数据@ApiOperation("导入") @RequestMapping(value = "/import", method = RequestMethod.POST) public Result importDetail(@RequestParam(value = "file") MultipartFile

2020-05-20 18:07:49 18479 10

原创 你插入MySQL的数据真的存到表里了么?

现在有这么一个问题:当你执行一条insert语句之后,插入的数据就已经保存在磁盘中了么?答案是不一定 ,那是为什么呢?首先来了解一下MySQL在InnoDB存储引擎中,数据是怎么存储的。1. InnoDB数据存储单元同大多数数据库一样,InnoDB有页(Page)的概念(也可以称为块),页是InnoDB磁盘管理的最小单位。在InnoDB存储引擎中,默认每个页的大小为16 KB。而从InnoD...

2020-04-28 09:19:54 1221

原创 spring如何注入作用域不同的bean源码分析(以HttpServletRequest为例)

spring如何注入作用域不同的bean源码分析(以HttpServletRequest为例)1.现象众所周知,在spring的bean中使用HttpServletRequest可以使用@Autowiredprotected HttpServletRequest request;或者在controller的方法入参中加入HttpServletRequestpublic void ex...

2020-04-23 17:44:08 1115 1

原创 spring如何注入作用域不同的bean

Scoped Beans as DependenciesThe Spring IoC container manages not only the instantiation of your objects (beans), but also the wiring up of collaborators (or dependencies). If you want to inject (for ...

2020-04-23 14:43:15 596

原创 SpringBoot+EasyExcel实现excel导入功能(含postman调试教程)

需求:现在需要完成通过post请求上传excel文件,并保存入库的功能技术:SpringBoot + EasyExcel + postman1.新增EasyExcel 依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel<...

2020-03-06 17:12:09 7231 2

原创 SpringCloud(五)sentinel实现接口限流

Sentinel是什么Sentinel的官方标题是:分布式系统的流量防卫兵。从名字上来看,很容易就能猜到它是用来作服务稳定性保障的。对于服务稳定性保障组件,如果熟悉Spring Cloud的用户,第一反应应该就是Hystrix。但是比较可惜的是Netflix已经宣布对Hystrix停止更新。那么,在未来我们还有什么更好的选择呢?除了Spring Cloud官方推荐的resilience4j之外...

2020-01-17 16:45:00 1631

原创 SpringCloud(四) gateway + JWT进行权限管理

jwt相关知识可以查看https://blog.csdn.net/sinat_29774479/article/details/898845001.引入依赖 关于jwt的操作我们采用jjwtjjwt是一个Java对jwt的支持库,我们使用这个库来创建、解码token<dependency> <groupId>io.jsonwebtoken&...

2019-12-24 15:04:27 5808 1

原创 SpringCloud(三) Nacos作为注册中心——服务监测

Zookeeper 和 Eureka的机制Zookeeper 和 Eureka 都实现了一种 TTL 的机制,就是如果客户端在一定时间内没有向注册中心发送心跳,则会将这个客户端摘除。Eureka 做的更好的一点在于它允许在注册服务的时候,自定义检查自身状态的健康检查方法。这在服务实例能够保持心跳上报的场景下,是一种比较好的体验。Nacos的机制在 Dubbo 和 SpringCloud...

2019-12-18 11:21:10 6895 1

原创 SpringCloud(二) Nacos作为配置中心——配置更新原理

Nacos 服务端创建了相关的配置项后,客户端就可以进行监听了。客户端是通过一个定时任务来检查自己监听的配置项的数据的,一旦服务端的数据发生变化时,客户端将会获取到最新的数据,并将最新的数据保存在一个 CacheData 对象中,然后会重新计算 CacheData 的 md5 属性的值,此时就会对该 CacheData 所绑定的 Listener 触发 receiveConfigInfo 回调。...

2019-12-12 17:08:22 3000 2

原创 什么是索引下推

概述索引条件下推优化(Index Condition Pushdown (ICP) )是MySQL5.6添加的,用于优化数据查询。不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQL服务器,服务器然后判断数据是否符合条件。当使用索引条件下推优化时,如果存在某些被索引的列的判断条件时,MySQL服务器将这一部分判断条件传递给存储引擎,然后由存储引擎通过判断索引是否符合MySQ...

2019-12-10 10:27:08 36604 19

原创 升级Springboot版本异常:HateoasConfiguration required a single bean, but 3 were found

在项目从springboot1.x升级到2.2.1时,报错***************************APPLICATION FAILED TO START***************************Description:Parameter 0 of method linkDiscoverers in org.springframework.hateoas....

2019-12-06 14:18:02 5128 4

原创 基于注解和redisson实现redis分布锁

用过redis锁的同学,有没有感觉到redis锁的获取与关闭和事务的开启与提交很相似。那事务可以使用@Transitional注解方便的使用,那么我们为什么不把redis锁也通过注解的形式实现呢~在实现的过程中,顺便一起引入redisson框架1.先引入pom <dependency> <groupId>org.redisson</grou...

2019-12-04 18:57:49 753

原创 SpringCloud(一) Euraka多级缓存

服务正常上线/修改/下线,最大可能会有120s滞后30(首次注册 init registe) + 30(readOnlyCacheMap)+30(client fetch interval)+30(ribbon)=120s如果是在Spring Cloud环境下使用这些组件(Eureka, Ribbon),不会有首次注册30秒延迟的问题,服务启动后会马上注册,所以从注册到发现,最多可能是90...

2019-11-29 11:46:06 564

原创 MapStruct如何String转Date

翻阅官方文档https://mapstruct.org/documentation/stable/reference/html/#datatype-conversions发现官方有个例子,关于自定义转换器规则的例子When generating code for the implementation of thecarToCarDto()method, MapStruct will ...

2019-10-25 16:39:53 7757 2

原创 jvm线程的状态转换

线程在一定条件下,状态会发生变化。线程一共有以下几种状态:初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。 线程对象创建后,其他线程(比如main线程)调用了该对象的start()方 法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使...

2019-09-10 10:49:55 393

原创 深入理解jvm类加载机制

本文将以四个问题展开:什么是类加载? 什么是双亲委任模型? 如何破坏双亲委任模型? Tomcat 的类加载器是怎么设计的?1.什么是类加载?类加载机制一个很大的体系,包括类加载的时机,类加载器,类加载时机。1.1 类加载过程加载器加载到jvm中,接下来其实又分了好几个步骤:加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类...

2019-08-28 17:16:35 750

原创 echarts画市县乡镇级地图

echarts作为图标制作工具,近来地图数据不再提供下载。现在需要绘制一个县级的地图,而网上的资料基本都是绘制省级地图。在此记录一下绘制市县级地图的办法。首先描述一下原理,echarts.registerMap('yongjia',geoJson,{});这行代码,是绘制echarts地图的重点。GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法...

2019-08-09 16:06:29 11255 1

原创 java.lang.UnsupportedOperationException: null at java.util.AbstractList.add(AbstractList.java:148)异常

场景:Lists.transform返回的一个list,当对其进行addAll操作时,报出java.lang.UnsupportedOperationException,以下为list的来源 List<String> keys = Lists.transform(cells, new Function<Cell, String>() { @...

2019-07-12 17:13:55 5428 1

原创 Mybatis源码解读(二)方法调用

上一章已经学习了初始化的过程,通过读取配置文件的形式已经获得了SqlSessionFactory,该对象持有ConfigurationSqlSession sqlSession = sqlSessionFactory.openSession();try { ProductMapper productMapper = sqlSession.getMapper(ProductMappe...

2019-07-08 10:49:24 300

原创 Mybatis源码解读(一)初始化

首先我们需要了解mybatis初始化大致做了什么1. 创建SqlSessionFactory2. 通过SqlSessionFactory来创建sqlSession那么初始化中创建SqlSessionFactory需要什么,配置文件和mapper文件如何加载,如何调用sql等到底是如何实现的呢,接下来就进入源码解读为了创建SqlSessionFactory,mybatis需要读取配置文...

2019-07-04 17:07:02 246

原创 昵称包含emoji表情导致入库失败

Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x9DBZ...' for column 'nick_name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jd...

2019-06-20 11:40:29 925

转载 Seata简介(附带与其他分布式事务解决方案对比)

目录 Seata简介分布式事务产生背景数据库的水平分割分布式事务理论基础两阶段提交(2pc)TCC事务消息Seata解决方案AT模式(业务侵入小)TCC(高性能)Seata简介Seata(Simple Extensible Autonomous Transaction Architecture) 是 阿里巴巴开源的分布式事务中间件,以...

2019-06-06 09:37:00 49153

原创 Mapstruct原理

一、Mapstruct简介 MapStruct是用于生成类型安全的bean映射类的Java注解处理器。 你所要做的就是定义一个映射器接口,声明任何需要映射的方法。在编译过程中,MapStruct将生成该接口的实现。此实现使用纯Java的方法调用源对象和目标对象之间进行映射,并非Java反射机制。 与手工编写映射代码相比,MapStruct通过生成冗长且容...

2019-05-21 11:00:23 12903

原创 了解登录中的JWT

1.JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。2.JSON Web Token有什么用下列场景中使用JSON Web Token是很有用的:Authorization (授权) : 这...

2019-05-06 16:03:59 1126

原创 idea卡死后java.net.BindException: Address already in use: bind

报错信息:java.net.BindException: Address already in use: bind场景:idea在卡顿之后,使用任务管理器结束任务之后导致再次运行时提示端口占用修改idea内存:https://blog.csdn.net/u014653854/article/details/84847774解决思路:首先端口被占用,就先去看端口被什么程序占用...

2019-04-30 10:49:29 4295

原创 Cause: java.sql.SQLException: Bad format for BigDecimal '1,087.50' in column 18.

问题场景:订单信息导出时,在选择某一时间段数据时会报错,但是一般不报错。错误信息:error:org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column 'totalRebate' from result set. Cause: java.sql.SQLExce...

2019-04-25 16:23:37 7867

原创 本地导出不报错,线上导出报异常:Method not found: is$jacocoData

本地导出不报错,线上导出报异常:Method not found: is$jacocoData是因为excel导出的时候为了不一个个字段导出,通过反射获取类的字段Field[] fields = t.getClass().getDeclaredFields();项目上线之后发现反射获取的字段多于实体类的字段数目是因为发布时 增加了jacoco来统计代码覆盖率,是通过编译期间加上...

2019-03-29 14:07:07 2360

原创 macos下idea启动失败解决办法

意外修改idea配置导致idea启动失败,而且不报任何错误总结一下:启动失败就使用打开访达 =》应用程序 右键idea 显示包内容 =》打开contents =》macos 文件夹 双击idea 查看控制台输出日志 根据日志进行对应 处理现在来说一下我的情况在启动失败之前,在idea中修改了idea.vmoptions 将-Xmx从750M修改为2048M-...

2019-02-21 17:51:05 8539 4

原创 偏向锁、轻量级锁和重量级锁的相互转换

结合网上查询的资料说说自己的见解Synchronized锁升级的过程:一个对象A刚开始实例化的时候,没有任何线程来访问它的时候。它是可偏向的,意味着,它现在认为只可能有一个线程来访问它,所以当第一个线程T1来访问它的时候,它会偏向T1,此时,对象A持有偏向锁。此时A是偏向第一个线程T1,T1在修改对象头成为偏向锁的时候使用CAS操作,并将对象头中的ThreadID改成自己的ID,之后再...

2019-01-25 16:56:59 2152 5

原创 mybatis报错:Invalid bound statement (not found): com.xx.mapper.query

根据报错信息提示,应该是mapper没有绑定好首先查看mybatis的配置是否正确  这些教程网上都有很多今天我碰到的情况比较特殊,所以记录下来我找错的思路。1.首先查看mybatis的配置,这不我就不仔细讲了,无非是一些名字和配置扫描。注意:mapper文件名需要和接口文件名字一致2.查看idea中项目的target中是否有sqlmap文件夹,这个文件夹中都是mapper.x...

2019-01-16 16:12:48 9570

浙江省乡镇级别地图kml可以转geojson

浙江省乡镇级别地图的geojson,确实有划分了县级以下区的划分,但是区以上的级别划分不明显。需要的人谨慎下载 https://blog.csdn.net/sinat_29774479/article/details/98962699 效果图和教程

2019-08-09

浙江省.rar

浙江省所有市的GeoJSON 有浙江省总的 有各个市的,分在各个文件夹中国

2019-08-09

redis-desktop-manager(redis可视化管理工具

redis-desktop-manager(redis可视化管理工具),可以方便查看redis 数据,支持多种数据结构 版本为0.8.8.384

2018-04-12

org.apache.poi.hssf.converter,office转html所需包

excel转html word转html ppt转html 所需jar包 用于excel、word、ppt在线预览功能的实现

2018-02-28

sqlite-jdbc-3.8.7.jar下载

sqlite-jdbc-3.8.7.jar下载,用于java与sqlite数据库的连接

2017-11-08

oracle的jdbc驱动包

oracle的jdbc驱动包,ojdbc6.jar用于数据库连接,是驱动类的必须包

2017-11-08

mysql5.1.22驱动包

mysqljdbc驱动包 mysql-connector-java-5.1.22-bin.jar

2017-11-08

JSON工具包-jackjson&fastjson

JSON工具包-jackjson&fastjson 两种json工具

2017-07-06

echarts自定义白底黑字主题

完成echarts白底黑字的主题需求 调用时使用customed名称

2017-07-04

springmvc+spring+mybatis(SSM)项目所需jar包

搭建SSM项目所需要的jar包 亲自试用过 可行 spring版本为4.3.0 mybatis的版本是3.2.8 mybatis-spring的版本是1.2.2 博客里有基础项目的搭建教程

2017-07-03

Mybatis基础项目构建所需jar包

Mybatis基础项目构建所需jar包 所需最基本的jar

2017-06-30

mysql5.1.22jar mysql驱动包

mysql-connector-java-5.1.22-bin.jar 用于javaweb开发调用 mysql数据库

2017-06-28

简单的SSHdemo 增删改查

可以实现员工的增删改查 是ssh的基本模板 可以根据项目更改

2017-04-06

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

TA关注的人

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