Java知音

其他

MySQL高级进阶:索引优化

MySQL常见瓶颈SQL中对大量数据进行比较、关联、排序、分组时CPU的瓶颈。实例内存满足不了缓存数据或排序等需要,导致产生大量的物理IO。查询数据时扫描过多数据行,导致查询效率低。3.2
2023年6月1日
其他

绝了,60K*16薪!看看人家的技术水平

现在很多公司的招聘信息,都会有这这么一条要求:有分布式、高并发、高可用系统设计\开发和性能调优经验者优先。说到性能调优,大部分程序员都是知道这玩意但日常也做不上,也看过相关知识,但就是没有怎么实践过,或者转头就忘了...但是在面试中,面试官经常会问有没有做过性能调优相关的工作?倒不是为了让你回答有没有做过,而是通过应聘者对缓存相关知识的理解深入程度,来判断其开发经验和学习能力。所以需要积累一定的高并发、性能调优的实战经验。不然面试官问到,支支吾吾挤出几句八股文,对自己的求职还是有很大影响。那如何学习高并发、性能调优呢?为了解决这个问题,前京东资深架构师诸葛大牛给大家带来了《双十一高并发电商系统Java性能调优核心点》,本课程扫码免费获取,感兴趣的可以看看:课程海报四天课程,会详细介绍性能调优的面试重点和必问知识点,以及大厂双十一高并发项目实战,带你从技术到面试,从理论到实践,全面吃透性能调优知识点!你将收获1.更加深入理解JVM最底层原理,应对大厂面试从容不迫2.增强分析、定位与解决大型系统生产环境JVM问题的能力3.深入理解Mysql底层优化原理,更有把握面对关于Mysql优化的面试题4.分析与优化大型系统线上环境Mysql各种性能问题的能力5.构建性能稳定的大型分布式系统高并发高可用线上环境的能力扫码报名和领取资料开启逆袭进阶之路学习资料面试资料百度篇、滴滴篇、华为篇、京东篇、美团篇、腾讯篇、头条篇等等一线大厂和大型互联网公司的专题面试资料,附带阿里双十一热门技术和项目分析。面试题涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring
2023年5月22日
其他

SpringBoot 四大核心组件,还有人不知道?

boot用来引入thymeleaf引擎和mybatis框架所配置的依赖。引入之后通过简单的约定配置就可以正常使用。比如:Thymeleaf引擎约定配置:##前端引擎配置spring:
2023年5月21日
其他

SpringBoot + 规则引擎 URule,真的很强!

没有规则,不成方圆;一、背景前段时间,在做项目重构的时候,遇到很多地方需要做很多的条件判断。当然可以用很多的if-else判断去解决,但是当时也不清楚怎么回事,就想玩点别的。于是乎,就去调研了规则引擎。当然,市面上有很多成熟的规则引擎,功能很多,性能很好。但是,就是想玩点不一样的(大家做技术选型别这样,这个是反面教材)。最终一款URule的规则引擎吸引了我,主要还是采用浏览器可直接配置,不需要过多安装,可视化规则也做的不错。经过一系列调研,后面就把它接入了项目中,顺便记录下调研的结果。二、介绍规则引擎其实是一种组件,它可以嵌入到程序当中。将程序复杂的判断规则从业务代码中剥离出来,使得程序只需要关心自己的业务,而不需要去进行复杂的逻辑判断;简单的理解是规则接受一组输入的数据,通过预定好的规则配置,再输出一组结果。当然,市面上有很多成熟的规则引擎,如:Drools、Aviator、EasyRules等等。但是URule,它可以运行在Windows、Linux、Unix等各种类型的操作系统之上,采用纯浏览器的编辑模式,不需要安装工具,直接在浏览器上编辑规则和测试规则。当然这款规则引擎有开源和pro版本的区别,至于pro版是啥,懂的都懂,下面放个表格,了解下具体的区别特性PRO版开源版向导式决策集有有脚本式决策集有有决策树有有决策流有有决策表有有交叉决策表有无复杂评分卡有无文件名、项目名重构有无参数名、变量常量名重构有无Excel决策表导入有无规则集模版保存与加载有无中文项目名和文件名支持有无服务器推送知识包到客户端功能的支持有无知识包优化与压缩的支持有无客户端服务器模式下大知识包的推拉支持有无规则集中执行组的支持有无规则流中所有节点向导式条件与动作配置的支持有无循环规则多循环单元支持有无循环规则中无条件执行的支持有无导入项目自动重命名功能有无规则树构建优化有无对象查找索引支持有无规则树中短路计算的支持有无规则条件冗余计算缓存支持有无基于方案的批量场景测试功能有无知识包调用监控有无更为完善的文件读写权限控制有无知识包版本控制有无SpringBean及Java类的热部署有无技术支持有无三、安装使用实际使用时,有四种使用URule
2023年5月20日
其他

公司新来了一个同事,把权限系统设计的炉火纯青!

org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
2023年5月20日
其他

不愧是腾讯,问的贼细

最近有位小伙伴被腾讯的面试题问懵了,大家来看看是怎么考察的,主要是后端的。Java集合主要是hashmap实现原理。多线程问AQS源码、并发工具类源码、锁的实现原理、阻塞队列源码、线程池实现原理。Jvm问内存结构和垃圾回收机制加Jvm优化参数配置。Springi问ioc和aop原理,bean的生命周期。Redis问数据类型、线程模型、持久化机制、主从复制原理、高可用原理、redis
2023年5月19日
其他

6000 字 | 16 图 | 深入理解 Spring Cloud Gateway 的原理

做登录认证的时候,通常需要我们自定义一个过滤器做登录认证。比如客户端登录时,将用户名和密码发送给网关,网关转发给认证服务器后,如果账号密码正确,则拿到一个
2023年5月18日
其他

Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用

进行校验的时候,当校验不通过的时候,程序会抛出400异常,阻止方法中的代码执行,这时需要再写一个全局校验异常捕获处理类,然后返回校验提示。4:总体来说,@Validated
2023年5月17日
其他

别乱分层,PO、VO、DAO、BO、DTO、POJO 到底应该用在哪里,你知道吗?

前言一个项目中不一定都能用得上全部的分层规约,但十分有必要了解每一种的用法,便于去阅读其他人的代码。同样的,虽然遵守规约写代码可能会略微拉低你写代码的速度(PS:多写一些实体类),但越是规范化,模板化的东西,后期的维护成本和学习成本会越低。《阿里巴巴Java开发规范》关于领域模型的部分介绍如下分层领域模型规约:DO(Data
2023年5月16日
其他

分类树菜单,我从2s优化到0.1s

分类树查询功能,在各个业务系统中可以说随处可见,特别是在电商系统中。但就是这样一个简单的分类树查询功能,我们却优化了5次。到底是怎么回事呢?背景我们的网站使用了SpringBoot推荐的模板引擎:Thymeleaf,进行动态渲染。它是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它提供了一个用于整合SpringMVC的可选模块,在应用开发中,我们可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity\FreeMarker等。前端开发写好Thymeleaf的模板文件,调用后端接口获取数据,进行动态绑定,就能把想要的内容展示给用户。由于当时这个是从0-1的新项目,为了开快速开发功能,我们第一版接口,直接从数据库中查询分类数据,组装成分类树,然后返回给前端。通过这种方式,简化了数据流程,快速把整个页面功能调通了。第1次优化我们将该接口部署到dev环境,刚开始没啥问题。随着开发人员添加的分类越来越多,很快就暴露出性能瓶颈。我们不得不做优化了。我们第一个想到的是:加Redis缓存。流程图如下:于是暂时这样优化了一下:用户访问接口获取分类树时,先从Redis中查询数据。如果Redis中有数据,则直接数据。如果Redis中没有数据,则再从数据库中查询数据,拼接成分类树返回。将从数据库中查到的分类树的数据,保存到Redis中,设置过期时间5分钟。将分类树返回给用户。我们在Redis中定义一个了key,value是一个分类树的json格式转换成了字符串,使用简单的key/value形式保存数据。经过这样优化之后,dev环境的联调和自测顺利完成了。第2次优化我们将这个功能部署到st环境了。刚开始测试同学没有发现什么问题,但随着后面不断地深入测试,隔一段时间就出现一次首页访问很慢的情况。于是,我们马上进行了第2次优化。我们决定使用Job定期异步更新分类树到Redis中,在系统上线之前,会先生成一份数据。当然为了保险起见,防止Redis在哪条突然挂了,之前分类树同步写入Redis的逻辑还是保留。于是,流程图改成了这样:增加了一个job每隔5分钟执行一次,从数据库中查询分类数据,封装成分类树,更新到Redis缓存中。其他的流程保持不变。此外,Redis的过期时间之前设置的5分钟,现在要改成永久。通过这次优化之后,st环境就没有再出现过分类树查询的性能问题了。第3次优化测试了一段时间之后,整个网站的功能快要上线了。为了保险起见,我们需要对网站首页做一次压力测试。果然测出问题了,网站首页最大的qps是100多,最后发现是每次都从Redis获取分类树导致的网站首页的性能瓶颈。我们需要做第3次优化。该怎么优化呢?答:加内存缓存。如果加了内存缓存,就需要考虑数据一致性问题。内存缓存是保存在服务器节点上的,不同的服务器节点更新的频率可能有点差异,这样可能会导致数据的不一致性。但分类本身是更新频率比较低的数据,对于用户来说不太敏感,即使在短时间内,用户看到的分类树有些差异,也不会对用户造成太大的影响。因此,分类树这种业务场景,是可以使用内存缓存的。于是,我们使用了Spring推荐的caffine作为内存缓存。改造后的流程图如下:用户访问接口时改成先从本地缓存分类数查询数据。如果本地缓存有,则直接返回。如果本地缓存没有,则从Redis中查询数据。如果Redis中有数据,则将数据更新到本地缓存中,然后返回数据。如果Redis中也没有数据(说明Redis挂了),则从数据库中查询数据,更新到Redis中(万一Redis恢复了呢),然后更新到本地缓存中,返回返回数据。需要注意的是,需要改本地缓存设置一个过期时间,这里设置的5分钟,不然的话,没办法获取新的数据。这样优化之后,再次做网站首页的压力测试,qps提升到了500多,满足上线要求。第4次优化之后,这个功能顺利上线了。使用了很长一段时间没有出现问题。两年后的某一天,有用户反馈说,网站首页有点慢。我们排查了一下原因发现,分类树的数据太多了,一次性返回了上万个分类。原来在系统上线的这两年多的时间内,运营同学在系统后台增加了很多分类。我们需要做第4次优化。这时要如何优化呢?限制分类树的数量?答:也不太现实,目前这个业务场景就是有这么多分类,不能让用户选择不到他想要的分类吧?这时我们想到最快的办法是开启nginx的GZip功能。让数据在传输之前,先压缩一下,然后进行传输,在用户浏览器中,自动解压,将真实的分类树数据展示给用户。之前调用接口返回的分类树有1MB的大小,优化之后,接口返回的分类树的大小是100Kb,一下子缩小了10倍。这样简单的优化之后,性能提升了一些。第5次优化经过上面优化之后,用户很长一段时间都没有反馈性能问题。但有一天公司同事在排查Redis中大key的时候,揪出了分类树。之前的分类树使用key/value的结构保存数据的。我们不得不做第5次优化。为了优化在Redis中存储数据的大小,我们首先需要对数据进行瘦身。只保存需要用到的字段。例如:@AllArgsConstructor@Datapublic
2023年5月16日
其他

本地缓存之王,Caffeine保姆级教程

一、Caffeine介绍1、缓存介绍缓存(Cache)在代码世界中无处不在。从底层的CPU多级缓存,到客户端的页面缓存,处处都存在着缓存的身影。缓存从本质上来说,是一种空间换时间的手段,通过对数据进行一定的空间安排,使得下次进行数据访问时起到加速的效果。就Java而言,其常用的缓存解决方案有很多,例如数据库缓存框架EhCache,分布式缓存Memcached等,这些缓存方案实际上都是为了提升吞吐效率,避免持久层压力过大。对于常见缓存类型而言,可以分为本地缓存以及分布式缓存两种,Caffeine就是一种优秀的本地缓存,而Redis可以用来做分布式缓存2、Caffeine介绍Caffeine官方:https://github.com/ben-manes/caffeineCaffeine是基于Java
2023年5月14日
其他

Mybatis 批量插入大量数据的最优方案

优化插入ExecutorType.BATCH插入下面对这三种分别进行比较:1.普通插入默认的插入方式是遍历insert语句,单条执行,效率肯定低下,如果成堆插入,更是性能有问题。INSERT
2023年3月25日
其他

GPT-4 Copilot X震撼来袭!AI写代码效率10倍提升,动嘴写代码不再是梦!

X,直接整合里一个华丽的聊天界面,不仅动动嘴皮子就能生成代码,还能边写代码边跟AI对话,以及为你量身定做的智能文档系统等等。GPT-4加持Copilot,动嘴就能写代码具体来说,Copilot
2023年3月25日
其他

ChatGPT 王炸更新,有点操作系统的雏形了....

处理文件上传和下载,整个虚拟空间在会话期有效。详细内容查看https://openai.com/blog/chatgpt-pluginsOpenAI
2023年3月24日
其他

又得准备面试了~

大家好,最近有不少小伙伴在后台留言,又得准备面试了,不知道从何下手!新的一年需要抓住新的机会,不论是跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了!为了帮大家节约时间,给大家搞来了2022年大厂Java面试题合集,内容非常的全面,真的可以好好补一补,希望大家在金三银四都能拿到理想的薪资和offer!一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。比如果这样的问题:项目框架,Spring、Mybatis
2023年3月24日
其他

Java老掉牙的面试问题:线程交替打印问题,分析实操一下

:ps:如果是线程A打印完,就把通知暗号改成B,并发出通知;如果是线程B打印完,就把通知暗号改成C,并发出通知;同样,如果是线程C打印完,就把通知改回A,继续发通知。代码
2023年3月23日
其他

互联网大事件:Docker翻脸,不再开源!

Mesos是当今市场上一些流行的替代品。下面着重讨论Podman、Containerd两种替代方案:(1)Podman无守护程序、开源,可用于构建、运行和管理
2023年3月23日
其他

SELECT COUNT(*) 会造成全表扫描?回去等通知吧

是以页的形式读取数据的,即当用到某个数据时,并不会只读取这个数据,而会把这个数据相邻的数据也一起读到内存中,这就是有名的程序局部性原理,所以
2023年3月22日
其他

源码中常见的 where 1=1 是一种高级优化技巧?

AND,因此在注释掉试验查询的条件时更容易。这类似于另一种在列名之前而不是之后加入逗号的技巧。同样,更容易注释:在动态
2023年3月22日
其他

千万不要小看Redis!他是真强!

作为Java程序员,选择学习什么样的技术,什么技术该不该学去招聘网站上搜一搜、看看岗位要求就十分清楚了。自己具备的技术和能力,直接影响到你工作选择范围和能不能面试成功。Java应用层,底层JVM,缓存层(Redis)、数据库层(Mysql),中间件层,网络层,以及云环境等等,各种监控、全链路压测都是必备的功课。这里面对缓存层的架构与优化尤为关键,很多同学可能平时工作上没机会接触,也可能系统并发压力很小,缓存用得也不多,但是缓存架构以及优化是高级资深工程师必备的技能,也是想进一线互联网公司的高薪技术。实际上,很少有人真的掌握了Redis的全部技巧,有些甚至连面试题都很难应付。那么如何全面系统的学习Redis呢?我们针对上述问题专门设计了一次免费的Redis学习进阶训练营,包含上面的核心技术和面试真题集训、学习路线脑图和阶段资料、还有配套视频《一线大厂Redis高并发缓存架构实战》讲解。课程主讲诸葛老师有多年在一线互联网公司的项目实战以及数万次在线教学经验累积,从Redis高并发架构设计到源码实现级别深度讲解。原理+实战专题课,教大家高效、正确地学习Redis,学完有所获,有所用。为期三天,晚上8点,学习节奏系统紧凑,又不占用工作时间;限200人,免费报名,人满关营,全程发放学习资料。对Redis缺乏整体认识和系统学习的朋友,不想出去面试被问到Redis就回家等通知的朋友……可以领粉丝福利了!这份Redis专题资料限时免费发放,配套课程,帮助你解决现阶段遇到的工作、面试中Redis问题。·上下滑动查看报名本次Redis课程(免费),还会送今年火爆的面试突击资料一份,截至2月份已经助力8000+的学员成功面试大厂和涨薪跳槽,面试技术一举攻破。名额只剩下200个不到了,报满即止,感兴趣的话早点报名哦~一、
2023年3月21日
其他

Java 生成各种 PDF 实战方案(图片、模板、表格)

本篇文章的重点还是在讲通过java生成pdf,其实如果是单纯的模板填充挺简单的,但是又要填充模板还要动态生成表格就比较麻烦了,因为如果在模板中画表格的框去生成的话,超过模板框的位置就会隐藏,我刚接到需求的时候也是有点难受,在网上也是找了大量的资料,研究了半天,发现好多都是你粘贴我,我粘贴你,最终我也算是搞成了,把这些整合一下,让大家用的好用一些,废话不多说,直接上代码!这里说一下啊,如果需要生成echarts图片,先去看我的生成echarts图片文章,不然这个搞不了。模板链接,我把他放到网盘了,需要的可以去下载:https://pan.baidu.com/s/1YJZtLdiySxUry4h2Gd1V7g
2023年3月20日
其他

面向中小企业的轻量级自动化运维平台,代码完全开源,帅呆了!

前后端代码完全开源预览主机管理主机在线终端文件在线上传下载主机批量执行应用发布监控报警角色权限Docker安装安装docker注意:如已安装
2023年3月16日
其他

秒杀场景下的业务梳理——Redis分布式锁的优化

秒杀场景下的业务梳理——Redis分布式锁的优化随着互联网的快速发展,商品秒杀的场景我们并不少见;秒杀是一种供不应求的,高并发的场景,它里面包含了很多技术点,掌握了其中的技术点,虽不一定能让你面试立马成功,但那也必是一个闪耀的点!前言假设我们现在有一个商城系统,里面上线了一个商品秒杀的模块,那么这个模块我们要怎么设计呢?秒杀模块又会有哪些不同的需求呢?全局唯一
2023年3月16日
其他

媲美 postman 的 IDEA 插件神器,常用功能统统搞定!

_或连字符-。变量的值可以通过以下方式获取:默认方式动态生成的$uuid,$timestamp和$randomInt预定义的动态变量通过环境变量为每个环境显式提供编写响应处理脚本方式定义。即使用
2023年3月15日
其他

RabbitMQ 消息丢失的场景,如何保证消息不丢失?

接收到,那么生产者会收到异常报错,此时就可以回滚事务channel.txRollback,然后重试发送消息;如果收到了消息,那么可以提交事务channel.txCommit。//
2023年3月14日
其他

从零开始搭建一个通用的业务技术架构,这套架构 有点牛逼!

1、通用架构概述创业之初,我们往往会为了快速迭代出产品,而选择最简单的技术架构,比如LAMP架构,SSH三层架构。这些架构可以适应初期业务的快速发展,但是,随着业务变得越来越复杂,我们会发现这些架构越来越难支撑业务的发展,出现在一个类中写好几千行代码,一个方法中到处都是if
2023年3月14日
其他

偷偷爆料下国内比较大型的 IT 软件外包公司名单(2023 最新版!)

避免找工作时被坑了。1、软件外包公司名单国内软件外包公司多如牛毛,下面列举的占全部名单可能不到千分之一
2023年3月11日
其他

Mybatis Plus 批量插入性能优化,非常实用!

背景:物联网平台背景,传感器采集频率干到了1000Hz,分了100多张表出来,还是把mysql干炸了。当前单表数据量在1000来w,从kafka上拉数据异步批量插入,每次插入数据量1500条,测试的时候还没问题,结果上线没多久,kafka服务器直接挂了,赶忙看日志,kafka服务器堆积了几十G的数据,再去看生产环境日志,发现到最后单次批量插入用时固定在10多秒,甚至20多秒,kafka直接把消费端踢出了消费组…从而kafka消息一直没有消费,总重导致kafka数据堆积挂掉了…在这样的情况下:采取的处理方案无非就分库分表,减少单表数据量,降低数据库压力;提高批量插入效率,提高消费者消费速度。本文主要把精力放在如何提高批量插入效率上。使用的mybatisplus的批量插入方法:saveBatch(),之前就看到过网上都在说在jdbc的url路径上加上rewriteBatchedStatements=true
2023年3月11日
其他

DTO、VO、BO、PO、DO的用法区别,居然这么多人搞不清楚.....

object)持久对象出现位置为数据库数据,用来存储数据库提取的数据只存储数据,不包含数据操作使用场景,在数据库层中,获取的数据库数据存储到PO中,然后转为DTO返回到服务层中DO(domain
2023年3月10日
其他

看完这一篇,ShardingSphere-jdbc 实战再也不怕了

消息后不会立刻进行数据流转,而是先存到本地阻塞队列,然后由本地定时任务每X秒将本地队列中的N条数据进行数据流转操作。此时N条数据有可能是对同一张表同一条记录的操作,所以此处只需要保留最后一条(类似于
2023年3月10日
其他

SpringBoot 中使用 spring-retry 轻松解决重试

在日常开发过程中,难免会与第三方接口发生交互,例如:短信发送、远程服务调用、争抢锁等场景,当正常调用发生异常时,例如:网络抖动,这些间歇性的异常在一段时候之后会自行恢复,程序为了更加健壮并且更不容易出现故障,需要重新触发业务操作,以防止间歇性的异常对程序照成的影响。常用的重试策略,比如通过
2023年2月18日
其他

SpringBoot 应用的新命令行界面:Just

https://github.com/maciejwalkowiak/just/releases/latest/download/just-0.12.0-linux-x86_64.zip
2023年2月16日
其他

我认真总结并分析了 Spring 事务失效的十种常见场景

方法使用final类型修饰有时候,某个方法不想被子类重新,这时可以将该方法定义成final的。普通方法这样定义是没问题的,但如果将事务方法定义成final,例如:@Servicepublic
2023年2月16日
其他

Spring Cloud 中 7 种负载均衡策略!

种负载均衡策略,同时还支持用户自定义负载均衡策略,所以其开放性和便利性也是它得以流行的主要原因。服务端负载均衡器和客户端负载均衡器的区别如下图所示:客户端负载均衡器的实现原理是通过注册中心,如
2023年2月15日
其他

推荐 10 款炫酷的 IDEA 主题,百看不腻,个个经典!

Theme主题地址:http://www.jetbrains-active.com/theme/detail/66.html这个黑背景+突出的字体颜色,看着很舒服,我目前使用这款主题!第五款
2023年2月15日
其他

一个通用面试神器

前两个月,公司java岗位面了50+候选人,面试下来发现几类过不了的情况,分享大家防止踩坑:新技术倒是掌握得挺多,基础的却一塌糊涂。工作多年,从未学习过工作之外的技术栈,也没有对技术有任何的兴趣,遇到问题就百度去csdn看解决方案。业务单一化和技术栈老化,技术简单,工作七八年,所有的项目都是spring+mybatis/hibernate+mysql。这些情况一般面试就没啥希望了,毕竟对于大部分程序员来说:最重要的肯定是建立一个系统的知识支撑体系,使自己具备扎实的Java基础能力。如果是冲击大厂的话,还能够满足大厂招聘需求,具备过硬的技术和较强的实战能力。除此之外,面试这一关也是需要好好下功夫的,其中关键的一环就是吃透大厂面试真题,建立面试的把握和自信。这里整理了一套跳槽涨薪300道Java面试题+解析,涵盖8大核心技术,各大厂技术重点、面试难点、进阶要点,有需要的自己扫码领取。注意!扫描文中二维码,关注「图灵课堂Tuling」公众号,后台回复暗号:面试资料。下面是面试题尝鲜,大家先自测一下,答案解析扫码可得,再次强调,这是免费资料,有效期3天,需要的早点扫码。Spring面试题(24道+)1、不同版本的
2023年2月14日
其他

腾讯一面:如何正确停止一个线程?

停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作废的方法。使用interrupt方法中断线程。1.
2023年2月14日
其他

有人开发了一款「人生搜索引擎」,可以查到你在网上做过的一切......

(ASR)来识别和索引屏幕上和音频里出现的所有单词。就比如下面这个例子,输入“tps
2023年2月13日
其他

SpringBoot 中 MybatisX 插件的简单使用教程(超详细!!)

3.5.14.在File->Settings->Plugins下载MybatiX插件5.两下SHIFT键搜索database进入数据库6.新建Mysql连接输入用户、密码及数据库名当Test
2023年2月13日
其他

SpringBoot 如何自定义自己的条件注解与自动配置?

org.springframework.boot.context.properties.ConfigurationProperties;@ConfigurationProperties(prefix
2023年2月12日
其他

面试官:说一下顺序锁和轮询锁?

Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。死锁示例代码如下:public
2023年2月11日
其他

IDEA 插件最佳组合:JRebel+XRebel 完成项目热部署和接口分析优化,太爽了!

一、JRebel+XRebel简介IDEA上原生是不支持热部署的,当我们修改代码和配置文件等大部分操作时,都需要重启服务器。JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,从而跳过了构建和部署的过程,可以省去大量的部署用的时间。目前对于idea热部署最好的解决方案就是安装JRebel。XRebel
2023年2月11日
其他

消灭空指针,Java 8 给我们更好的解决方案

前言在平时的业务开发中,空指针是我们经常遇到的问题,他可能会导致我们的流程无法正常进行或者一些意外情况的发生。这就是我们需要避免空指针的原因,那我们有哪些方式去解决这个问题呢?空指针场景包装类型字段,因为自动拆箱出现空指针;A对象包含B对象,通过A对象获取B对象字段时,没有判断就直接去调用B对象中的方法出现空指针;字符串比较,null.equal("字符串")出现空指针远程返回的List不是空数组而是null,对其进行操作出现空指针。线上空指针问题如何排查日常的开发过程中,一般情况下我们都是通过查看日志来排查空指针的问题,如果日志没有做到位的情况下,我们只能通过NullPointerException抛出的位置去跟踪代码。这就要求我们,在写代码的时候做好日志的打印调用方法的入口进行入参的打印,方法返回的结果进行出参打印如果没有提前做好日志打印,那我们可以考虑利用阿里的Java诊断工具Arthas来处理Arthas启动后,获取来了JVM进程通过watch指令来监测方法的入参情况思考对于这个问题,我总结了一些我在工作中使用到的方法,最直接的操作都是从根源上消灭出现空指针的可能性,进行先判空再操作。下面拿商品信息作为一个例子,我们要得到他店铺的名称,你会怎么写@Datapublic
2023年2月10日
其他

为什么要有外包这个职位,到底该不该去外包?

来源:cnblogs.com/Tiancheng-Duan/p/16002433.html一、背景一转眼,又到了金三银四的跳槽&求职季。在IT行业,跳槽就离不开一个词,那就是外包。可以说,每一位IT人都接触过外包,甚至参与其中。而多数IT职场萌新,都面临着大厂外包,还是小公司的绝望抉择。虽然很多人虽然抵制外包,但他们往往对外包只有比较直观、碎片的认识。网上针对IT外包的资料,很少很少,而且大多比较零碎。我恰巧对外包算比较有经验。所以我想谈一谈外包。希望能给需要的小伙伴,一些参考与帮助。二、分析1.什么是外包为了更好地分析,我们需要了解什么是外包。外包是一种将目标,委托给其他组织的管理模型。外包有很多种,如项目外包、产品外包、工程外包等等。而我们最为关心的,则是人力资源外包。这样说比较抽象,我来举个例子。项目外包:
2023年2月10日
其他

硬核:JVM性能调优,有哪些好用的内存分析神器?

对于高并发访问量的电商、物联网、金融、社交等系统来说,JVM内存优化是非常有必要的,可以提高系统的吞吐量和性能。通常调优的首选方式是减少FGC次数或者FGC时间,以避免系统过多地暂停。FGC达到理想值后,比如一天或者两天触发一次FGC。FCT时间优化为100~300毫秒后,再减少YoungGC次数或者YoungGC时间,YoungGC仍然会消耗CPU资源,优化YoungGC调用次数和消耗的CPU资源,可以提高系统的吞吐量。优化GC前,必须获取GC的实际使用情况,最好的方式是通过CG
2023年2月9日
其他

用ChatGPT生成Excel公式,太方便了!

时,我们常常会利用其自带的计算函数,包括数据库函数、日期与时间函数、统计函数等。这些函数分别有自己的名称和格式,调用时需要按照规定格式准确输入参数,这给
2023年2月9日
其他

热议:ChatGPT 的出现会不会导致底层程序员失业?

搜索更加简单、高效,可以很方便的为后面类似机器人的场景做素材语义来源,不过其实没想象的那么聪明,期待更加产品化完善化。最后,普通人如何不被OpenAI
2023年2月8日
其他

一款可以通过 Web 访问的 Linux 终端神器,已开源!

浏览器访问您的服务器:http://your-server-host:5913,然后点击连接按钮。或者直接连接设备,无需
2023年2月7日
其他

SpringBoot 时间格式化的 5 种实现方法!

21:45:122.SimpleDateFormat格式化大多数情况下,我们还是需要自力更生,各扫门前雪的,这个时候我们后端程序员就需要发挥自己的特长了,我们提供的第
2023年2月7日
其他

准备今年换工作的,抓紧补补....

2022这抓马的一年总算是过去了,前两天有小伙伴给我留言:确实,在去年那个行情之下,还能保持“有恃无恐”的人,那他自身肯定得有两把刷子。谁不想当一个“技术大牛”?谁不想年纪轻轻就“年薪百万”?但“梦想美好,现实残酷”,不少人实际工作中做的事,跟大牛根本不沾边,常年忙于业务代码,究竟该如何成长?新的一年,一切都会快速的变化!我的建议,不管自己现在是个什么境况,是躺平还是互卷,如果你想在这个动荡的市场中稳坐钓鱼台,就一定要做好三个准备:1.
2023年2月6日