作者磊哥来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)很多场景下,我们需要查看MySQL中表注释,或者是某张表下所有字段的注释,所以本文就来盘点和对比一下查询注释的几种方式。创建测试数据库开始之前咱们先创建一个数据库,以备下面演示使用。如果存在就先删除数据库dropdatabaseifexiststest2022;创建数据库createdatabasetest2022;切换数据库usetest2022;创建表和字段(以及相应的注释)CREATETABLEstu...
2022-04-14 17:09:26 1.4w浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)最近接手了一个老项目,“愉悦的心情”自然无以言表,做开发的朋友都懂,这里就不多说了,都是泪接手老项目,自然是要先熟悉一下业务代码,然而在翻阅mapper文件时,发现了一个比较诡异的事情。这里给出简化后的业务代码:<xmlversion"1.0"encoding"UTF8"><!DOCTYPEmapperPUBLIC"mybatis.orgDTDMapper3.0EN""http:mybatis.orgdtdmybatis3mapper.dtd"><m...
2022-04-14 17:00:58 8413浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于《MyBatisPlus批量数据插入功能,yyds!》的文章,但评论区的反馈不是很好,主要有两个问题:第一,对MyBatisPlus(下文简称MP)的批量插入功能很多人都有误解,认为MP也是使用循环单次插入数据的,所以性能并没有提升;第二,对于原生批量插入的方法其实也是有坑的,但鲜有人知...
2022-04-14 16:51:56 1.1w浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone最近Review小伙伴代码的时候,发现了一个小小的问题,小伙伴竟然在for循环中进行了insert(插入)数据库的操作,这就会导致每次循环时都会进行连接、插入、断开连接的操作,从而导致一定的性能问题,简化后代码如下:插入操作RequestMapping("save")publicObjectsave(){booleanflagfalse;返回结果待添加(用户)数据for(inti0;i<1000;i++){UserusernewUser...
2022-04-14 16:41:38 7815浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)正式开始之前,我们先来看下MySQL服务器的配置和版本号信息,如下图所示:“兵马未动粮草先行”,看完了相关的配置之后,我们先来创建一张测试表和一些测试数据。如果存在person表先删除DROPTABLEIFEXISTSperson;创建person表,其中username字段可为空,并为其设置普通索引CREATETABLEperson(idINTPRIMARYKEYautoincrement,nameVARCHAR(20),mobileVARCH...
2022-04-14 16:30:38 8162浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)在安装完MySQL或者是在使用MySQL时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错。那如果我们不小心忘记了MySQL的密码,该如何处理呢别着急,本文教你一招搞定。1.修改MySQL配置文件首先我们需要打开MySQL的配置文件,如果是Windows系统的话,MySQL的配置文件是my.ini,它在MySQL的默认安装目录下;如果是MacO...
2022-04-14 16:18:17 6010浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)在MacOS上安装最新版的MySQL有三种方法:使用Docker安装;使用Homebrew运行brewinstallmysql安装;使用安装包安装。我们本文将采用最常规的方式,也就是安装包的方式进行安装,这也是我推荐给新手的安装方式,因为这种安装方式更直观更可控一些,比如对MySQL版本的选择和密码配置等,那接下来我们就直接开始吧。1.下载安装包首先我们要去Oracle的官网去下...
2022-04-14 16:10:24 5762浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)MySQL是一个跨世纪的伟大产品,它最早诞生于1979年,距今已经有40多年的历史了,而如今比较主流的Java语言也只是1991年才诞生的,也就是说MySQL要比Java的诞生还早十几年,不得不惊叹二者强大的生命力。MySQL的应用十分广泛,像Google、Taobao、Facebook、Twitter、Baidu、Tencent等公司以及绝大多数互联网公司都能见到它的身影,MySQL也一度是(目前也...
2022-04-14 15:58:44 5112浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)最近无意间发现了一款开源免费的MySQL客户端管理工具,磊哥试用了两天感觉还行,所以今天推荐给各位大佬。此工具不止是开源免费的,而且可以跨平台使用,如Windows、MacOS都可以轻松支持,并且运行速度也是杠杠的。话不多说,先来看操作界面,如下图所示:再来看工具使用的动图:从上图可以看出此工具有超级实用的关键字提示功能,还可以很直观的显示数...
2022-04-14 15:44:48 5051浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)年少不知优化苦,遇坑方知优化难。——村口王大爷全文内容预览:本篇也是关于性能优化的,那性能优化就应该一把梭子吗还是要符合一些规范和原则呢所以,在开始之前(MySQL优化),咱们先来聊聊性能优化的一些原则。性能优化原则和分类性能优化一般可以分为:主动优化被动优化所谓的主动优化是指不需要外力的推动而自发进行的一种行为,比如当服务没有明显...
2022-04-14 15:40:14 5716浏览 0点赞 0回复 0收藏
作者王磊来源Java中文社群(ID:javacn666)转载请联系授权(微信ID:GGStone)我是Redis,今年11岁了曾几何时我是辣么的单纯,辣么的可爱,而如今我竟背叛了当初“誓言”,决心在多线程这条路上义无反顾的一路狂奔,没错我就是你们口中那个既可爱又迷人的Redis,你可以叫我小R...R😊。一波骚操作结束,我们开始今天的正文。我们知道在Redis4.0之后就陆陆续续添加了一些多线程的功能,难道单线程不香了吗单线程慢吗Redis的单线程曾...
2022-04-14 15:31:39 4932浏览 0点赞 0回复 0收藏
前面我们讲了《Redis性能优化的13条军规!》,其中最重要的一条就是使用Redis的集群功能,那么本文我们就来看看,如何用1s钟的时间来创建一个Redis集群。RedisCluster是Redis3.0版本推出的Redis集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高Redis服务的读写性能。Redis将所有的数据分为16384个slots(槽),每个节点负责其中的一部分槽位,当有Redis客户端连接集群时,会得到一份...
2022-04-14 15:24:18 6257浏览 0点赞 0回复 0收藏
Redis是基于单线程模型实现的,也就是Redis是使用一个线程来处理所有的客户端请求的,尽管Redis使用了非阻塞式IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是O(1)),但由于Redis是单线程执行的特点,因此它对性能的要求更加苛刻,本文我们将通过一些优化手段,让Redis更加高效的运行。本文我们将使用以下手段,来提升Redis的运行速度:缩短键值对的存储长度;使用lazyfree(延迟删除)特性;设置键值的过期时间;禁用长...
2022-04-14 15:15:46 5052浏览 0点赞 0回复 0收藏
Redis的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便Redis重启时能够从磁盘中恢复原有的数据,而整个过程就叫做Redis持久化。Redis持久化也是Redis和Memcached的主要区别之一,因为Memcached不具备持久化功能。1.持久化的几种方式Redis持久化拥有以下三种方式:快照方式(RDB,RedisDataBase)将某一个时刻的内存数据,以二进制的...
2022-04-14 15:06:25 2.7w浏览 0点赞 0回复 0收藏
1.过期设置Redis中设置过期时间主要通过以下四种方式:expirekeyseconds:设置key在n秒后过期;pexpirekeymilliseconds:设置key在n毫秒后过期;expireatkeytimestamp:设置key在某个时间戳(精确到秒)之后过期;pexpireatkeymillisecondsTimestamp:设置key在某个时间戳(精确到毫秒)之后过期;下面分别来看以上这些命令的具体实现。1)expire:N秒后过期127.0.0.1:6379>setkeyvalueOK127.0.0.1:6379>expirekey100(integer)1127.0.0.1...
2022-04-14 14:57:17 6162浏览 0点赞 0回复 0收藏
1.前言事务指的是提供一种将多个命令打包,一次性按顺序地执行的机制,并且保证服务器只有在执行完事务中的所有命令后,才会继续处理此客户端的其他命令。事务也是其他关系型数据库,所必备的一项非常重要的能力。以支付的场景为例,正常情况下只有正常消费完成之后,才会减去账户余额。但如果没有事务的保障,可能会发生消费失败了,但依旧会把账户的余额给扣减了,我想这种情况应该任何人都无法接受吧所以事务是数据库中一项...
2022-04-14 14:50:50 5840浏览 0点赞 0回复 0收藏
大家好,欢迎来到Tlog4J课堂,我是Jensen。面试官:微服务如何拆分需要考虑什么因素候选人:一般按照功能拆分面试官:还有吗候选人:唔……要拆分微服务,首先我们要了解微服务拆了会有什么问题怎么合理拆服务1、拆分服务会带来什么问题举个电商系统下单扣库存的例子。对于单体应用,通讯在进程内部进行,下单方法调用扣库存方法,有问题就回滚事务,利用数据库同一个Session会话的ACID特性干活,保证数据的强一致性,即使在调...
2022-04-13 22:17:43 5695浏览 0点赞 0回复 0收藏
大家好,我是Jensen。我们先来看这么一段面试场景——面试官:你们项目缓存技术用到了什么缓存技术小帅:Redis面试官:那么问一下,Redis缓存技术用到的持久化机制是哪一种机制小帅:AOF面试官:好吧,回去等通知吧……这个问题,不知道你在面试的时候有没有被别人问过,你是怎么回答的其实不管你怎么回答都是错的,为什么请往下看。大家都知道,Redis是我们互联网公司必用的架构技术,在我们业内称之为高性能缓存数据库,那么...
2022-04-13 22:07:18 5766浏览 0点赞 0回复 0收藏
大家好,我是Jensen。最近一直在忙项目管理、业务设计、架构委员会的基础架构梳理等工作,落下了代码开发。同时这段时间业务需求又特多特赶,从另一个组协调了几位精英过来还是人手不够,于是我又不得不同时参与coding。前辈告诉我:作为一名开发工程师,即使以后升到再高的管理职位,领导需要你写代码,你也得第一时间顶上,绝不能把代码丢掉。好了,打完鸡血,咱们继续。这次分享我最近在写码中比较有意思的经历——对Kafka消...
2022-04-13 22:00:46 7318浏览 0点赞 0回复 0收藏
我敢说,在所有的技术栈里,存储技术算是最核心的一块内容,掌握存储技术的原理真的非常非常重要,无论是高级开发、资深开发,还是众人仰望的架构师,无一不重视这项技术的学习与沉淀。而我们一般使用的MySQL关系型数据库,更是经典中的经典,虽说MySQL已经非常成熟,但对于MySQL的掌握程度,如果我们只停留在使用层面,不了解它的底层设计,那咱永远只能停留在写SQL上,成为一个彻头彻尾的CRUDBoy。好了,稍微有点技术追求的你...
2022-04-13 21:41:42 5294浏览 0点赞 0回复 0收藏