- 博客(12)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 Mysql中的两列日期求差和取比较值
前言在mysql的使用中我们经常需要对日期进行操作,比如取两列中的日期相差多少天,相差多少小时,多少月。还有些查询场景中,我们需要取两列中较大的日期值或者较小的日期值,这里来和大家一起复习下。使用TIMESTAMPDIFF快速求差相差多少秒SELECT TIMESTAMPDIFF(SECOND,t.CreateTime,now()) FROM AudioInfo t where t.CreateTime>'2020-06-19 00:00:00' limit 5;相差
2020-06-19 23:32:05 1886
原创 BigDecimal的正确打开方式
前言项目中明确规定,凡是涉及到金额的属性定义都必须使用BigDecimal类型,这里来和大家一起学习下BigDecimal的正确打开方式。先来个错误的示范话不多说,直接上demo @Test public void wrongUseDecimal() { BigDecimal test1 = new BigDecimal(1.745); BigDecimal test2 = new BigDecimal(0.745); test
2020-06-18 22:40:56 332
转载 撸明白分布式事务(四)
前言在分布式系统中,消息队列在服务端的架构中的地位非常重要,主要解决异步处理、系统解耦、流量削峰等场景。多个系统之间如果同步通信很容易造成阻塞,同时会将这些系统会耦合在一起。因此,引入了消息队列,一方面解决了同步通信机制造成的阻塞,另一方面通过消息队列进行业务解耦。简单的服务间调用引入mq如下图所示可靠事件模式可靠事件模式,通过引入可靠的消息队列,只要保证当前的可靠事件投递并且消息队列确保事件传递至少一次,那么订阅这个事件的消费者保证事件能够在自己的业务内被消费即可。这里,请读者思考,是否.
2020-06-14 16:40:32 242
转载 撸明白分布式事务(三)
前言前面说的二阶段提交协议和三阶段提交协议很好的解决了分布式事务的问题,但是在极端情况下仍然存在数据的不一致性,此外它对系统的开销会比较大,引入事务管理者(协调者)后,比较容易出现单点瓶颈,以及在业务规模不断变大的情况下,系统可伸缩性也会存在问题。注意的是,它是同步操作,因此引入事务后,直到全局事务结束才能释放资源,性能可能是一个很大的问题。因此,在高并发场景下很少使用。因此,阿里提出了另外一种解决方案:TCC 模式。注意的是,很多读者把二阶段提交等同于二阶段提交协议,这个是一个误区,事实上,TCC 模
2020-06-14 16:22:57 238
转载 撸明白分布式事务(二)
前言前面介绍了传统单库,单服务通过数据库的ACID模式来解决事务的一致性,但是随着数据量的变大,采用了分库策略。或者服务架构逐渐演变为微服务或者其他分布式架构。这时候ACID也只能鞭长莫及了。这里来和大家一起学习下应对这种问题强一致性解决方案。二阶段提交协议在分布式系统中,每个数据库只能保证自己的数据可以满足 ACID 保证强一致性,但是它们可能部署在不同的服务器上,只能通过网络进行通信,因此无法准确的知道其他数据库中的事务执行情况。因此,为了解决多个节点之间的协调问题,就需要引入一个协调者负责
2020-06-14 08:44:44 215
转载 撸明白分布式事务(一)
传统的ACID什么是事务?回答这个问题之前,我们先来看一个经典的场景:支付宝等交易平台的转账。假设小明需要用支付宝给小红转账 100000 元,此时,小明帐号会少 100000 元,而小红帐号会多 100000 元。如果在转账过程中系统崩溃了,小明帐号少 100000 元,而小红帐号金额不变,就会出大问题,因此这个时候我们就需要使用事务了。大致流程如下图这里,体现了事务一个很重要的特性:原子性。事实上,事务有四个基本特性:原子性、一致性、隔离性、持久性。其中,原子性,即事务内的操作要么全部成功,
2020-06-13 21:27:47 310
原创 curl命令实用教程
前言在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。curl命令在日常开发或运维中都经常用到,这里和大家总结下curl命令的常用用法。基础用法curl http://www.baidu.com执行后,www.baidu.com 的html就会显示在屏幕上了。保存访问的网页方式一使用linux的重定向功能保存curl http://www..
2020-06-13 15:59:33 822
转载 聊聊聚集索引和辅助索引
前言索引是数据库中非常重要的概念,它是存储引擎能够快速定位记录的秘密武器,对于提升数据库的性能、减轻数据库服务器的负担有着非常重要的作用;索引优化是对查询性能优化的最有效手段,它能够轻松地将查询的性能提高几个数量级。索引的数据结构InnoDB 存储引擎在绝大多数情况下使用 B+ 树建立索引,这是关系型数据库中查找最为常用和有效的索引,但是 B+ 树索引并不能找到一个给定键对应的具体值,它只能找到数据行对应的页,然后把整个页读入到内存中,并在内存中查找具体的数据行。B+ 树是平衡树,它查找
2020-06-11 22:48:21 723
转载 如何高效利用索引
前言对于索引,想必无需多言。大家应该都知道什么索引,为什么要建索引。这里来和大家学习下如何高效利用索引,下面主要围绕"覆盖索引"、"最左原则"、"索引下推"三点来和大家一起学习下。覆盖索引覆盖索引是指在普通索引树中可以得到查询的结果,不需要在回到主键索引树中再次搜索。建立如下这张表来演示覆盖索引:create table T (ID int primary key,age int NOT NULL DEFAULT 0,name varchar(16) NOT NULL DEFAULT
2020-06-09 21:40:32 319
转载 再撸一遍过滤器和拦截器
前言不管是springmvc还是springboot,过滤器和拦截器在开发中总时经常用来到的,我们对于过滤器、拦截器不应该是局限在会使用上,需要更多的了解他们,这里来和大家一起再撸一遍过滤器、拦截器。过滤器 (Filter)过滤器的配置比较简单,直接实现Filter接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter接口中定义了三个方法。init():该方法在容器启动初始化过滤器时被调用,它在Filter的整个生命周期只会被调用一次。「注意」:这个方法...
2020-06-07 18:53:33 257
原创 HQL中select new com.clsss 报错 could not instantiate class from tuple
前言最近上线了一个工具,上完之后测试验证居然报错,明明自测过的,哎,菜啊。。。。看下问题。主要报错关键点如下org.springframework.orm.hibernate4.HibernateQueryException: could not instantiate class [xxx] from tuple; nested exception is org.hibernate.QueryException: could not instantiate class [xxx] from
2020-06-06 11:34:10 968
转载 Mysql InnoDB 为啥选择B+树索引(二)
前言前面讲了Mysql InnoDB 为啥选择B+树索引(一),这里再和大家一起学习下他的姊妹篇,首先需要澄清的一点是,MySQL 跟 B+ 树没有直接的关系,真正与 B+ 树有关系的是 MySQL 的默认存储引擎 InnoDB,MySQL 中存储引擎的主要作用是负责数据的存储和提取,除了 InnoDB 之外,MySQL 中也支持 MyISAM 作为表的底层存储引擎。我们在使用 SQL 语句创建表时就可以为当前表指定使用的存储引擎,你能在 MySQL 的文档 Alternative Storage
2020-06-02 22:12:07 210
Java+内存分析工具+MAT
2023-08-19
websocket实现聊天小demo
2023-05-12
aspose导出pdf乱码,配置字体库
2023-02-25
windows 2008 R2解决socket连接不释放补丁包
2019-01-17
aspose操作word文档,目录问题
2022-09-05
苹果退款接收latest_receipt_info数组里面的对象问题
2021-11-18
苹果商品内购,服务端提供接口订阅通知消息
2021-09-13
java.io.IOException: Premature EOF异常怎么解决
2020-09-17
jdk中的jre/lib/security目录下为啥要导入证书
2019-12-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人