前言大家好,我是田螺。金三银四很快就要来啦,准备了索引的15连问,相信大家看完肯定会有帮助的。1.索引是什么?索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中,它是占用物理空间的。正所谓水能载舟,也能覆舟。适当的索引能提高查询效率,过多的索引会影响数据库表的插入和更新功能。2.MySQL索引有哪些类型数据结构维度B+树索引:所有数据存...
2023-02-07 11:52:53 553浏览 0点赞 0回复 0收藏
前言大家,我是田螺。最近在开发需求的时候,用到了select...forupdate。在代码评审的时候,一位同事说,唯一索引+一个非索引字段,是否可能会锁全表呢?本文田螺哥将通过9个实验操作的例子,给大家验证select...forupdate到底加了什么锁,是表锁还是行锁。这是本文的提纲哈:因为加锁是跟数据库的隔离级别息息相关的。而常用的数据库隔离级别也就RC(读已提交)和RR(可重复读),所...
2023-02-07 11:40:14 418浏览 0点赞 0回复 0收藏
前言大家好,我是田螺。记得很久之前,去面试过字节跳动。被三面的面试官问了一道场景设计题目:如何设计一个高并发系统。当时我回答得比较粗糙,最近回想起来,所以整理了设计高并发系统的15个锦囊,相信大家看完会有帮助的。如何理解高并发系统所谓设计高并发系统,就是设计一个系统,保证它整体可用的同时,能够处理很高的并发用户请求,能够承受很大的流量冲击。我们要设计高并发的系统,那就需要处理好一些常见的系统瓶颈...
2023-02-07 11:38:33 352浏览 0点赞 0回复 0收藏
前言大家好,我是田螺。之前有位读者去字节面试,面的是国际支付部门,他凭记忆,回忆被问到的一些面试真题。于是,我整理了比较全的答案,希望对大家找工作有帮助呀,加油1.聊聊工作中,你是如何设计数据库表的命名规范选择合适的字段类型主键设计合理选择合适的字段长度优先考虑逻辑删除,而不是物理删除每个表必备的几个字段(如createtime和updatetime等)一张表的字段不宜过多尽可能使用notnull...
2023-02-07 11:36:26 392浏览 0点赞 0回复 0收藏
前言大家好,我是田螺。我的后端思维专栏好久没更新啦,本文是后端思维专栏的第六篇哈。我的整个后端思维专栏都是跟日常工作相关的哈。最近刚好优化了安全上报这块的代码,抽了一个基础模板,看起来挺优雅的。所以今天手把手教大家,基于重复代码,如何思考和抽取模板。1.优化前的代码我们的业务场景,如修改密码,修改pin等,需要将操作结果上报到安全管理中心系统。优化前的伪代码如下:修改密码的逻辑:publicRespon...
2023-02-07 11:35:32 308浏览 0点赞 0回复 0收藏
前言大家好,我是田螺。我们去面试的时候,几乎都会被问到分库分表。田螺哥整理了分库分表的15道经典面试题,大家看完肯定会有帮助的。1.我们为什么需要分库分表在分库分表之前,就需要考虑为什么需要拆分。我们做一件事,肯定是有充分理由的。所以得想好分库分表的理由是什么。我们现在就从两个维度去思考它,为什么要分库?为什么要分表?1.1为什么要分库如果业务量剧增,数据库可能会出现性能瓶颈,这时候我们就需要考虑拆分...
2023-02-07 11:32:41 481浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩。之前工作中,遇到一个504超时问题。原因是因为接口耗时过长,超过nginx配置的10秒。然后真枪实弹搞了一次接口性能优化,最后接口从11.3s降为170ms。本文将跟小伙伴们分享接口优化的一些通用方案。1.批量思想:批量操作数据库优化前:for循环单笔入库for(TransDetaildetail:transDetailList){insert(detail);}优化后:batchInsert(transDetail...
2023-02-07 11:32:03 507浏览 0点赞 0回复 0收藏
前言大家好,我是田螺。日常开发中,我们很多时候需要用到Java8的Lambda表达式,它允许把函数作为一个方法的参数,让我们的代码更优雅、更简洁。所以整理了一波工作中,我常用的,有哪些Lambda表达式。看完一定会有帮助的。1.list转map工作中,我们经常遇到list转map的案例。Collectors.toMap就可以把一个list数组转成一个Map。代码如下:publicc...
2023-02-07 11:27:58 320浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩。毕业五年多,一共待过3家公司,碰到各种各样的同事,见识过各种各样的代码,有优雅的,赏心悦目的,也有垃圾的,屎山一样的。因此,写这篇文章,来记录一下一个优秀的后端开发程序员,应该有哪些好的开发习惯。1.注释尽可能全面,写有意义的注释接口方法、类、复杂的业务逻辑,都应该添加有意义的注释对于接口方法的注释,应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述类的注释...
2023-02-07 11:20:39 403浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩。优雅的代码,犹如亭亭玉立的美女,让人赏心悦目。而糟糕的代码,却犹如屎山,让人避而远之。如何写出优雅的代码呢?那就要理解并熟悉应用这6个设计原则啦:开闭原则、单一职责原则、接口隔离原则、迪米特法则、里氏替换原则、依赖倒置原则。本文呢,将通过代码demo,让大家轻松理解这6个代码设计原则,加油1.开闭原则开闭原则,即对扩展开放,对修改关闭。对于扩展和修改,我们怎么去理解它呢...
2023-02-07 11:12:35 360浏览 0点赞 0回复 0收藏
创建容器dockerruni以交互模式运行容器t表示容器启动后会进入其命令行,加入这两个参数,容器创建后会直接进入容器。分配一个伪终端name为容器命名名称不能重复v表示目录映射关系d创建守护模式运行容器p端口映射示例1it(交互式容器)dockerrunitnamemycentos1centosbinbash如图注:binbash的作用是表示载入容器后运行bash,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill。示例2dit(守护式容器)dockerrundi...
2022-06-08 17:23:35 1964浏览 0点赞 0回复 0收藏
停止正在进行的容器dockerstop容器名或容器IDdockerstopmycentos2如图启动容器dockerstart容器名或容器IDdockerstartmycentos2如图重启容器dockerrestart容器名或容器IDdockerrestartmycentos2如图深入容器内部dockerinspect容器名或iddockerinspectmycentos2查询容器内部信息f或者format查看dockerinspectf'{{.State.Status}}'mycentos2如图dockerinspectformat'{{.State.Status}}'mycentos2如图注:区分大小写获取容器的IP地...
2022-06-08 17:23:26 1103浏览 0点赞 0回复 0收藏
查找镜像dockersearchtomcatNAME:镜像名DESCRIPTION:镜像描述STARS:用户评价,数值越高越受欢迎OFFICIAL:是否官方AUTOMATED:自动构建,表示该镜像由dockerhub自动构建流程创建的;如图列出镜像dockerimagesdockerimagels如图查看镜像详情dockerimageinspect镜像名dockerimageinspectcentos下载镜像dockerpull镜像名:版本号版本号不写,默认获取最新的镜像dockerpullnginx:1.18.0如图如图第三方提供的镜像的版本如何查询:http...
2022-06-08 17:23:17 2215浏览 0点赞 0回复 0收藏
场景服务器安装JDK时,默认会有支持JDK版本对应的时区规则。但是时区规则可能会变化的,那如何保持时区规则是最新的呢?TZUpdater工具介绍提供的「TZUpdater工具」允许您使用更新的时区数据更新已安装的Java开发工具包(JDK)和Java运行时环境(JRE)软件,以适应不同国家地区的夏令时(DST)更改。Oracle依赖于通过IANA的时区数据库公开提供的时区数据。如果您无法使用Oracle最新的JDK或JRE更新版本,或者如果最新版本上的时区数据不...
2022-06-08 17:23:07 2021浏览 0点赞 0回复 0收藏
问题:断点不可用Noexecutablecodefound问题在Intellij下的项目,更新SVN之后dubug启动项目,发现某些代码打断点显示一个红色的叉子,并且也一直无法进入所打的断点中。鼠标移动红色的叉子上后显示:“Noexecutablecodefoundatline”。image20211230203208212解决方案1、clean整个项目;2、Ctr+F9执行makeproject;3、重新启动项目,debug可以正常使用;原因分析:由于SVN更新下来的代码Intellij没有进行重新编译,或者Intellij...
2022-06-08 17:22:52 3245浏览 0点赞 0回复 0收藏
第一步:添加JDK版本image20211109234025062第二步:image20211109234117424第三步:image20211109234141758第四步:image20211109234255903以上配置完成,就能保持JDK版本一致。最后配置EditConfigurationsimage20211109234808108这里的JRE要与上面配置的JDK版本一致,经验证,问题得到解决image20211109234922239问题:Git服务器变更,如何修改服务器地址问题当git服务器迁移,导致git的服务器地址变了,如何调整,才能让本地...
2022-06-08 17:22:44 1613浏览 0点赞 0回复 0收藏
问题:报错unabletoestablishloopbackconnection问题Causedby:java.io.IOException:Unabletoestablishloopbackconnectionatsun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:101)atsun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:68)atjava.security.AccessController.doPrivileged(NativeMethod)atsun.nio.ch.PipeImpl.<init>(PipeImpl.java:170)atsun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.jav...
2022-06-08 17:22:34 2083浏览 0点赞 0回复 0收藏
问题:Idea右边的mavenprojects窗口问题image20211110212346693解决方案方法1.你点击一下你idea界面最左下角的那个小框,maven应该从里面找到方法2.点击菜单栏View>ToolWindows>Mavenprojects方法3.点击菜单栏Help>FindAction(Ctrl+Shift+A),输入Mavenprojects问题:idea启动tomcat很慢问题方法上加了debug断点看看你在debug的时候是否在方法上加了断点,如果在方法上加了断点,那么运行时会变得非常慢。解决方案清除所有断点(...
2022-06-08 17:22:20 2214浏览 0点赞 0回复 0收藏
问题:方法注释在引用此方法时查看不到问题鼠标移动选中到方法上不会显示注释,这个跟eclipse不一样,需要自己设置。解决方案1、操作如图所示:img2、设置完成后,注释终于出来了。但是写的注释没有显示img排查了半天,后面发现是注释的写法错了。。两个号之间存在空格。随手写的测试代码,不要纠结set上还写注释。img解决方案:IDEA类和方法注释模板设置(非常详细)方法注释的模板用这个:TODODate$date$$time$$param$return$...
2022-06-08 17:22:09 1412浏览 0点赞 0回复 0收藏
问题:IDEAShift+shift万能搜索你也有失效的时候问题Eg:Shift+shift“deleteParamConfigureTenant”deleteParamConfigureTenant在项目里是有的,如图所示。img搜索结果:没有搜索到img推测是在注解上的代码,IDEA的shift+shift无法识别吧。也是代码里的坑,接口名称和requestMapping上的接口名称不统一。解决方案shift+shift和全局搜索配合使用像我用的是快捷键:Ctrl+Himg有些IDEA版本的默认快捷键发生了变化,这时要去更改快...
2022-06-08 17:21:57 2126浏览 0点赞 0回复 0收藏