一行Java

其他

手把手教你 Jenkins 自动部署 SpringBoot 多模块应用

多模块自动构建本文的主要目的是:优化多模块的自动化构建,能感知变化,只自动部署已经修改的模块;通过上面的原因分析以及解决方案梳理,需要调整一下相关的脚本;以下的内容是基于上一篇文章《手把手教你
2022年8月29日
其他

Spring Cache + Redis 缓存实战,原地起飞

}}@Cacheable这个注解放在方法前,可以将方法的运行结果进行缓存,之后就不用调用方法了,直接从缓存中取值即可。常用属性可以见上图。以下是常见用法:@Cacheable(cacheNames
2022年8月26日
其他

14 个 SpringBoot 优化小妙招,写代码像写诗

大家好,我是一航!说到代码优化,很多人上来就是各种理论、架构、核心思路;其实优化这个事情说简单也简单,说复杂也可以很复杂,但是我觉得最重要的就是要有一个良好的编码习惯,代码"屎山”并非一朝一夕形成的,往往是经过了日积月累;因此,培养一个好的习惯,可以让我们的代码变的更加优雅、易维护,系统变的更加健壮;下面就分享14个小技巧,让优化变成顺手就完成的小事儿;1.
2022年8月25日
其他

CTO说: 谁再用 Calendar 处理时间,一律开除

}}文章来源:juejin.cn/post/6937888716438372389👉最新2T+免费Java视频学习资料点击领取>>END精品资料,超赞福利,免费领微信扫码/长按识别
2022年8月23日
其他

还在手动发包?手把手教你 Jenkins 自动化部署SpringBoot...

大家好,我是一航!程序员每天的工作,几乎都是围绕着开发、打包、发布、测试这些点循环往复,但这些过程中,有很大一部分重复性的苦力活,不仅消耗了我们大量的时间,但有不得不做;纯手工去集成、部署,既苦力,还容易出错;此时就需要通过自动化,来解放双手。在做自动化集成、部署前,先引入两个概念CI/CD,其核心分为三点:持续集成(Continuous
2022年8月22日
其他

你还在 new 对象吗?Java 8 通用 Builder 了解一下...

建个对象吧~来源:ciphermagic.cn/java8-builder.html👉最新2T+免费Java视频学习资料点击领取>>END精品资料,超赞福利,免费领微信扫码/长按识别
2022年8月19日
其他

SpringBoot 实现接口幂等性的 4 种方案!

命名,why?【原创】怒肝3W字Java学习路线!从入门到封神全包了(建议收藏)程序员专属导航站(baoboxs.com),一站式工作、学习、娱乐!👇👇👇点击"阅读原文",获取更多资料(持续更新中)
2022年8月18日
其他

别用XShell了,这款SSH工具绝对惊艳,还支持网页版...

大家好,我是一航!后端程序员,ssh工具几乎是每天都会用到的工具,之前给大家推荐过多款好用的ssh工具;其中有一款工具叫Tabby,因为其支持网页版的,使得年初春节期间,和他还发生了一段小小的故事;程序员平常虽说放假,但也都是24小时随时待命,电脑常年不离身,过年放假也一样,走亲访友,都带在身边,一旦有任何风吹草动,以便随时顶上;在一天走亲戚的时候,突然要紧急处理点事情;而今年过年,天气异常的冷,好巧不巧的是,带在身边电脑SSD不工作了(当时以为坏了),导致开不了机!由于没电脑,但又必须得处理,没办法只能通过手机,使用网页版的Tabby(https://app.tabby.sh/)远程服务器,处理问题,虽然说操作起来有些不太方便,处理起来耗时长了些,但还是完美的解决了问题。今天再次推荐一下这款神器...TabbyTabby
2022年8月17日
其他

@Transactional注解加不加 rollbackFor = Exception.class 的区别?

命名,why?【原创】怒肝3W字Java学习路线!从入门到封神全包了(建议收藏)程序员专属导航站(baoboxs.com),一站式工作、学习、娱乐!👇👇👇点击"阅读原文",获取更多资料(持续更新中)
2022年8月16日
其他

超详细 45 个 Git 经典命令操作场景,还有谁不会?

最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源历史中产生冲突。我意外的做了一次硬重置(hard
2022年8月15日
其他

7个提升 Spring Boot 吞吐量的神技,让你的代码飞起来!

日常开发中,有很多的代码优化,其实在编码的过程中就能顺手完成;为了避免日后还得再专门花时间来做优化,下面就列举几种简单且好用的优化小技巧,轻松提升接口的吞吐量;一、异步执行实现方式二种:使用异步注解
2022年8月12日
其他

日志瘦身骚操作:从5G优化到1G!

日志前缀。当然,你也可以搞一些其他骚操作,这里只是举个例子,请自行举一反三。合并打印有些可以合并的日志,可以考虑合并。如在同一个方法前后都打印了
2022年8月11日
其他

阿里禁用 boolean 类型变量用 isXxx 命名,why?

平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,至于新来的技术总监为什么这么反感这种方式?为什么不推荐使用isXxx来命名呢?到底是用基本类型的数据好呢,还是用包装类好呢?下面我们结合阿里手册一一道来吧!例子//1.其他非boolean类型private
2022年8月10日
自由知乎 自由微博
其他

Redis 只会用缓存?20种妙用让同事直呼牛X

大家好,我是一航后端程序员,不管是出去面试,还是当面试官,Redis几乎是100%会问到的技术点;究其原因,主要是因为他实在过于强大、使用率太高了;导致项目中几乎无处不在。那Redis部分,不出意外,第一个问题就是:你做的项目,用Redis干了些啥?大部分人的回答都会是:缓存;当问到是否还有其他场景中使用时,部分用的少的朋友就会微微摇头;其实也没错,Redis绝不部分使用场景就是用来做缓存;但是,由于Redis
2022年8月9日
其他

MySQL最大建议行数2000w, 靠谱吗?

开始往上算,所以页与页之间就有了上下层级的概念。看到这个图之后,是不是有点似曾相似的感觉,是不是像一棵二叉树啊,对,没错!它就是一棵树,只不过我们在这里只是简单画了三个节点,2
2022年8月8日
其他

微信为什么使用 SQLite 保存聊天记录?

(“Upsert”)重命名列在Modern-SQL.com上接下来1布尔变量和判断SQLite支持“假”布尔值:它接受Boolean作为类型的名称,但它将其当作整数看待(这一点非常类似于
2022年8月5日
其他

别再乱打日志了,这份 Java 日志规范,应有尽有,收藏起来!

撰写日志的要求既然撰写日志是有需求,而且也能在未来帮助我们提高工作效率的事情,长远来看是非常有利的一件事情。因此我们应该在自己开发的程序中符合规范的撰写日志,在写日志时要注意以下的问题。1.2.1
2022年8月4日
其他

学会这 10 个命令,一分钟内搞定 Linux 服务器异常

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,那种肾上腺素飙升的刺激感,我想每位头发稀疏的程序员都应该经历过,能快速定位并解决问题,也是程序员很重要的一项能力之一;那如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。uptimedmesg
2022年8月3日
其他

你见过哪些目瞪口呆的 Java 代码技巧?

userService.addUser(user);这两段代码都没有暴露实现,都是在讲如何在同一个方法中,做一组相同层次的语义操作,而不是暴露具体的实现。如上所述,是一种重构方式,读者可以参考
2022年8月1日
其他

腾讯低代码平台正式开源,拖拽生成PC、手机项目;简直开发、私活利器...

腾讯tmagic-editor是一个所见即所得的页面可视化编辑器,基于tmagic-editor可以快速搭建可视化页面生产平台,让非技术人员可以通过拖拽和配置,自助生成H5页面、PC页面、TV页面,大大降低页面生产成本,实现零代码/低代码生成页面。以下是腾讯视频会员业务基于tmagic-editor搭建的可视化页面搭建平台示意图。tmagic-editor已经用于腾讯视频会员、爱玩游戏、云视听极光、腾讯会议等十几个腾讯业务,每月生产和发布数百个页面。基于可视化编辑器的页面生产流程一、物料开发,主要是指业务组件,比如图片组件、抽奖组件、登录插件等。tmagic-editor本身并不提供业务组件,业务组件由使用tmagic-editor的业务,根据自己的业务需求去自行开发。业务组件一次开发,在多个页面反复使用,业务组件应该提供一些配置选项,保证灵活性,满足不同页面使用该组件时的定制需求。业务组件可以用不同的前端框架实现,如vue2、vue3、react。二、编排,这里指通过对组件的拖拽和配置,完成页面编辑,主要由非技术人员完成。三、保存与发布,这个环节在技术实现上,分为生成DSL、构建、部署。生成DSL:编辑器和生成的页面之间,通过DSL解耦。编辑器上配置页面,得到的产物是一个序列化js对象的页面描述文件,这个对象采用js
2022年7月29日
其他

一款超好用的国产 Redis 可视化工具,高颜值 UI,真香!

工具,功能过于强大~程序员专属导航站(baoboxs.com),一站式工作、学习、娱乐!👇👇👇点击"阅读原文",获取更多资料(持续更新中)
2022年7月27日
其他

SpringBoot快速开发利器:CLI 属实真牛逼!

CLI可以用maven作为默认的构建工具创建一个新项目,该工具使用https://start.spring.io。假设我们想用thymleaf创建一个Web项目,那么我们将运行如下命令。spring
2022年7月25日
其他

Tomcat 太重?试试这个轻量容器!性能很炸!

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。1SpringBoot中的Tomcat容器SpringBoot可以说是目前最火的Java
2022年7月22日
其他

还在用 SimpleDateFormat 做时间格式化?小心背锅!

后端开发经常通过SimpleDateFormat对时间进行格式化,但是在多线程环境下,SimpleDateFormat存在线程安全问题,今天就一起来分析一下问题点,并看看如何解决,防止一不小心踩坑。一、SimpleDateFormat
2022年7月20日
其他

IDEA 2022.2 正式发布,船新特性,真香!

Event,贼好用的业务解耦神器!代码总被嫌弃写的烂?试试这几款插件,腰杆子立马硬起来...接口慢被吐槽?这些优化小技巧,直接起飞!System.currentTimeMillis()
2022年7月19日
其他

Spring Event,贼好用的业务解耦神器!

org.springframework.stereotype.Service;@Slf4j@Service@RequiredArgsConstructorpublic
2022年7月18日
其他

代码总被嫌弃写的烂?试试这几款插件,腰杆子立马硬起来...

大家好,我是一航!程序员在写代码的时候,总是会在不经意间敲出一些不那么友好的代码,但绝对多数人往往因为项目需求急等种种原因,都没有会看自己代码的习惯,一直遵循能跑就行的原则;可一旦进行代码评审,各种问题就暴怒出来,轻则被批判几句,重则扣绩效、扣钱;非常不划算!但很多时候,往往都是一些小问题,却总是会给人一种不专业,编码水平一般的不好印象,那有没有工具能在编码过程中就能够检测代码的不规范呢?下面就给大家介绍几款优秀的插件,让你写出更加优质的代码,在同事和领导目前挺直腰杆儿!1.
2022年7月15日
其他

接口开发不用写Controller、Service、Dao、Mapper、XML、VO,全自动生成!

工具,功能过于强大~程序员专属导航站(baoboxs.com),一站式工作、学习、娱乐!👇👇👇点击"阅读原文",获取更多资料(持续更新中)
2022年7月12日
其他

接口慢被吐槽?这些优化小技巧,直接起飞!

当越来越多对性能的吐槽反馈到我们这里的时候,我们意识到,接口性能的问题的优先级必须提高了。然后我们就跟踪了1周的接口性能监控,这个时候我们的心情是这样的:有20多个慢接口,5个接口响应时间超过5s,1个超过10s,其余的都在2s以上,稳定性不足99.8%。作为一个优秀的后端程序员,这个数据肯定是不能忍的,我们马上就进入了漫长的接口优化之路。本文就是对我们漫长工作历程的一个总结。哪些问题会引起接口性能问题?这个问题的答案非常多,需要根据自己的业务场景具体分析。这里做一个不完全的总结:数据库慢查询深度分页问题未加索引索引失效join过多子查询过多in中的值太多单纯的数据量过大业务逻辑复杂循环调用顺序调用线程池设计不合理锁设计不合理机器问题(fullGC,机器重启,线程打满)万金油解决方式1、慢查询(基于mysql)1.1
2022年7月11日
其他

System.currentTimeMillis() 和 System.nanoTime() 谁更快?大部分都会答错!

系统为前者提供的只是一个缓存变量,而后者则是实时的去硬件底层获取计数。参考1:http://dw-z.ink/26qCy参考2:http://dw-z.ink/2S9Ge所以如果你的生产环境是
2022年7月8日
其他

Lombok 同时使用@Data 和 @Builder 有坑,小心中招!

⾃定义⼀个注解,代码如下:再实现⼀个⾃定义的注解处理器,代码如下:测试类如下:对注解处理器进⾏编译,随后使⽤注解处理器对类进⾏编译⾸先需要先对注解处理器进⾏编译(javac
2022年7月7日
其他

如何写出让同事骂娘的代码?教你19个小妙招

Traceback。💩第八条:广泛使用全局变量使用全局变量,是面向「全球化」不可或缺的部分。💩第九条:构建备用变量以防万一,我们需要创建一些备用变量,在需要时随时调用它们。💩第十条:Type
2022年7月5日
其他

几行代码,轻松搞定 SpringBoot 恶意刷新和暴力请求!

在实际项目使用中,必须要考虑服务的安全性,当服务部署到互联网以后,就要考虑服务被恶意请求和暴力攻击的情况,下面的教程,通过intercept和redis针对url+ip在一定时间内访问的次数来将ip禁用,可以根据自己的需求进行相应的修改,来打打自己的目的;首先工程为springboot框架搭建,不再详细叙述。直接上核心代码。首先创建一个自定义的拦截器类,也是最核心的代码:/**
2022年7月4日
其他

别再乱用了,这才是 @Validated 和 @Valid 的真正区别和用法!

"^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$",
2022年7月1日
其他

Redis + Guava,性能炸裂!

api,非常适合业务系统开发,统计计数(increment,decrement),标记位(bitmap),松散数据(hash),先进先出、队列式读取(list)。guava
2022年6月27日
其他

如何优雅的写 Controller 层代码?简单...

大家好,我是一航!程序员有没有可能成为艺术家,答案是肯定的!因为编程也是一门艺术,大佬们的代码,总是能让人用起来舒服、读起来易懂,给人一种赏心悦目的感觉,看完总是忍不住说上一句:妙啊!其实不管做什么都会有很多技巧,写代码也不例外!本篇就来介绍一下,如何写好一个
2022年6月24日
其他

丢掉XShell,这款酷炫的 SSH 工具,功能过于强大~

大家好,我是一航!后端程序员,远程服务器几乎是家常便饭的事儿,那一款趁手的工具就必不可少了,交流群里面也时不时的会有小伙伴儿在求推荐好用的SSH工具,之前给大家一口气推荐过5款:【XShell
2022年6月23日
其他

程序员大部分时间不是在写代码,而是在...

原文链接:http://dw-z.ink/1s-K0👉最新2T+免费Java视频学习资料点击领取>>END精品资料,超赞福利,免费领微信扫码/长按识别
2022年6月22日
其他

Spring Boot + Redis 实现各种操作,包教包会~

大家好,我是一航!Redis作为一款非常优秀的缓存中间件,是后端程序员必须要掌握的技术,昨天下午,见有小伙伴儿在群里讨论Redis的用法,今天索性就分享一篇通过SpringBoot整合Redis的教程,希望能帮到大家。一、Jedis,Redisson,Lettuce
2022年6月22日
其他

这些 IDEA 插件、配置,让你工作效率提升十倍

idea高效操作或插件呢?来源:toutiao.com/i6929867921162273292👉最新2T+免费Java视频学习资料点击领取>>END精品资料,超赞福利,免费领微信扫码/长按识别
2022年6月21日
其他

别再写代码测试并发了,太 Low!模拟并发的 4 种方法,还有谁不会??

大家好,我是一航!当我们写完代码,自测是一项必不可少的工作,毕竟很多时候,自己发现的Bug就只是个Bug,测试人员发现的Bug可能就是RMB了,但是有些Bug在本地的单人测试环境下都很正常的,可一旦涉及到并发的时候,就会出现一系列诡异问题;所以提测之前的并发测试也是很有必要的;下面就来介绍一下几个常用的并发测试方式:一、Apache
2022年6月17日
其他

还用 !=null 判空?试试 Java 8 的全新写法吧!

在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示:在这种情况下,有如下代码user.getAddress().getProvince();这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法if(user!=null){
2022年6月16日
其他

MyBatisPlus 又搞事情!发布神器,一个依赖轻松搞定权限问题!

ExpressionList(deptIds.stream().map(StringValue::new).collect(Collectors.toList()));
2022年6月14日
其他

别再重复造轮子了,Google 开源的 Guava 工具类库,真心强大!

的实现。官方示例:https://github.com/google/guava/wiki/NewCollectionTypesExplained#classtoinstancemap五JDK
2022年6月13日
其他

Java8 Lambda 表达式中 forEach 如何提前终止?

1.情景展示如上图所示,我们想要终止for循环,使用return。执行结果如下:我们可以看到,只有赵六没被打印出来,后续的数组元素依旧被执行了。也就是说,关键字"return",在这里执行的效果相当于普通for循环里的关键词continue"。2.原因分析我们知道,在普通for循环里面,想要提前结束(终止)循环体使用"break";结束本轮循环,进行下一轮循环使用"continue";另外,在普通for里,如果使用"return",不仅强制结束for循环体,还会提前结束包含这个循环体的整个方法。而在Java8中的forEach()中,"break"或"continue"是不被允许使用的,而return的意思也不是原来return代表的含义了。我们来看看源码:forEach(),说到底是一个方法,而不是循环体,结束一个方法的执行用什么?当然是return啦;java8的forEach()和JavaScript的forEach()用法是何其的相似,感兴趣的可以去了解下(在文末)。Java不是万能的,不要再吐槽它垃圾了。3.解决方案方案一:使用原始的foreach循环使用过eclipse的老铁们应该知道,当我们输入:foreach,再按快捷键:Alt+/,就会出现foreach的代码提示。如上图所示,这种格式的for循环才是真正意义上的foreach循环。在idea中输入,按照上述操作是不会有任何代码提示的,那如何才能在idea中,调出来呢?for循环可以提前终止。方式一:break方式二:return(不推荐使用)方案三:抛出异常我们知道,要想结束一个方法的执行,正常的逻辑是:使用return;但是,在实际运行中,往往有很多不突发情况导致代码提前终止,比如:空指针异常,其实,我们也可以通过抛出假异常的方式来达到终止forEach()方法的目的。如果觉得这种方式不友好,可以再包装一层。这样,就完美了。这里,需要注意的一点是:要确保你forEach()方法体内不能有其它代码可能会抛出的异常与自己手动抛出并捕获的异常一样;否则,当真正该因异常导致代码终止的时候,因为咱们手动捕获了并且没做任何处理,岂不是搬起石头砸自己的脚吗?来源:blog.csdn.net/litianxiang_kaola👉最新2T+免费Java视频学习资料点击领取>>END精品资料,超赞福利,免费领微信扫码/长按识别
2022年6月10日
其他

玩转Java8 Stream,代码效率飞升

list.stream().collect(Collectors.summarizingDouble(Student::getAge));System.out.println("count:"
2022年6月9日
其他

Java 序列化和反序列化,为什么要实现 Serializable 接口?

在反序列化时,JVM会再根据属性自动生成一个新版serialVersionUID,然后将这个新版serialVersionUID与序列化时生成的旧版serialVersionUID进行比较,
2022年6月6日
其他

Typora 保姆级教程

Typora设置图片自动上传Typora固然好用,MarkDown也固然好用,但图片该怎么处理?总不能自己一张张的上传,然后在复制网络连接吧,也不是不可以🤔下面介绍两种方式实现自动上传。3.9.1
2022年6月6日
其他

SpringBoot 实现人脸识别功能 !so easy

大家好,我是一航!人脸识别因为起安全、便捷的特点,在当下的互联网产品中,可以说随处可见;常常用来解锁、授权、登录等,虽然用起来方便,但是要想自行实现,不仅难度高,耗时还长,好在有实力的互联网大厂已经为我们提供了现成SDK,简单几步没就能轻松实现,下面给大家分享一个SpringBoot整合百度云实现人脸识别的案例;原文地址:http://dw-z.ink/0V8D2去年在公司参与了一个某某机场建设智能机场的一个项目,人脸登机是其中的一个功能模块,当时只是写了后台的接口,调用人脸识别设备的api,给闸机回传数据信号,以保障该功能的正常使用。当时因为项目进度紧张,手里还有其他项目赶进度,也就没时间去分享这个功能的实现。前几天刷脸进公司大楼的时候,突然想起来应该写一个功能类似的demo分享个人的一些小小的经验。在当时项目中刷脸的设备终端是采购某某AI公司,当然咱们在demo里面也不可能买一台那东西来瞎搞,于是乎就拿系统刷脸登录来练练手,人脸识别解决方案就用百度云的吧,当然腾讯、阿里这方面也很牛逼的。需求分析一、人脸注册step1:人像采集。在注册页面上用html中video组件和js调用笔记本摄像头,并抓取人像图片。没有摄像头的笔记本、台式机的童鞋告辞吧,走好不送。。。step2:人像上传至项目文件夹。将在页面采集到的人像数据转换成bash64字符传输到web后台,在后台将bash64转换成图片上传至项目文件夹。step3:将用户的注册信息写入数据库,用户的照片使用路径存储。step4:将采集到的人像信息(bash64)上传至百度云的人脸识别云端服务器。ps这块实现也可离线私有化处理方案,有兴趣的童鞋可自行研究。二、人脸登录step1:人像采集。在登录页面上用html中video组件和js调用笔记本摄像头,并抓取人像图片。step2:人像数据传输。抓取的人脸图片信息回传至web后台。step3:人像比对。在web后台实例化并调用百度云人脸识别的sdk,将登录页面采集到的图像数据和注册的图像信息相比对(这块是百度云人脸识别解决方案实现的,也是最牛B的地方),返回的比分大于95分即可实现登录。具体实现好了,前言和需求分析也哔哔了这么久了,接下来是实现和上代码了。一、人脸注册前端页面代码Insert
2022年6月2日
其他

公司用了 6 年的Spring Boot 部署方案!打包 + Shell 脚本详解,稳的一批!

本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作;profiles指定不同环境的配置maven-assembly-plugin打发布压缩包分享shenniu_publish.sh程序启动工具linux上使用shenniu_publish.sh启动程序profiles指定不同环境的配置通常一套程序分为了很多个部署环境:开发,测试,uat,线上
2022年6月1日