
Java
文章平均质量分 90
有故事的程序员
这个作者很懒,什么都没留下…
展开
-
字符串拼接还在用StringBuilder?快试试Java8中的StringJoiner吧,真香!
为什么会新增这样一个string辅助类?原有的stringbuilder太死板,不支持分割,如果想让最终的字符串以逗号隔开,需要这样写StringBuilder sb = new StringBuilder();IntStream.range(1,10).forEach(i->{ sb.append(i+""); if( i < 10){ sb.append(",") }});是不是太死板了,不好用,StringJoiner怎样写呢?Stri原创 2021-02-24 15:18:39 · 279 阅读 · 0 评论 -
RabbitMQ高可用介绍
1.全局图HAproxy 来做 RabbitMQ 负载均衡和高可用,用 Keepalived 来保证 HAproxy 的高可用。客户端通过VIP建立通信链路;通信链路通过Keeaplived的Master节点路由到对应的HAProxy之上;HAProxy通过负载均衡算法将负载分发到集群中的各个节点之上。正常情况下客户端的连接通过图中左侧部分进行负载分发。当Keepalived的Master节点挂掉或者HAProxy挂掉无法恢复,那么Backup提升为Master,客户端的连接通过图中右侧部分进行负载分原创 2021-02-22 20:35:27 · 328 阅读 · 0 评论 -
在 Java 中如何优雅地判空
来源:blog.imuxuan.com/archives/86判空灾难NullPointerException作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。不过NullPointerException对于很多猿们来说,也是Exception家族中最亲近的一员了。Wowo为了避免NullPointerException来找我们,我们经常会进行如下操作。if (data != null) { do sth.}原创 2021-02-21 14:38:14 · 283 阅读 · 0 评论 -
基于SSM框架实现的支付宝支付功能
来源:https://urlify.cn/aYrmIr前言本教程详细介绍了如何使用ssm框架实现支付宝支付功能。本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释,自己实践的时候一定仔细阅读相关文档,话不多说我们开始。本教程源代码:https://github.com/OUYANGSIHAI/sihai-maven-ssm-alipay一、支付宝测试环境代码测试下载电脑网站的官方demo:下载:https://docs.open.a原创 2021-02-20 14:48:50 · 718 阅读 · 0 评论 -
Spring 中经典的 9 种设计模式,看看你还不会哪个?赶紧学~
来源:blog.youkuaiyun.com/caoxiaohong10051.简单工厂(非23种设计模式中的一种)2.工厂方法3.单例模式4.适配器模式5.装饰器模式6.代理模式7.观察者模式8.策略模式9.模版方法模式Spring中涉及的设计模式总结1.简单工厂(非23种设计模式中的一种)实现方式:BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定原创 2021-02-18 14:31:29 · 141 阅读 · 0 评论 -
MyBatis 的执行流程,写得太好了叭!
前言MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下:1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置处理器typeHandler4、自定义MyBatis中结果集处理器typeHandlerPS:本文基于MyBatis3.5.5版本源码。概要在MyBatis中,利用编程式进行数据查询,主要就是下面几行代码:SqlSession ses原创 2021-02-03 15:26:13 · 158 阅读 · 0 评论 -
Jenkins + 钉钉 + SpringBoot 极简入门,一键打包部署项目
摘要: 原创出处 http://www.iocoder.cn/Jenkins/install/ 「芋道源码」欢迎转载,保留摘要,谢谢!概述快速入门邮件通知钉钉通知彩蛋推荐阅读如下 Jenkins 文章:《芋道 Spring Boot 持续交付 Jenkins 入门》《芋道 Spring Cloud 持续交付 Jenkins 入门》 对应 labx-16概述目前国内绝大多数的团队,都采用 Jenkins 实现持续集成与持续发布。那么 Jenkins 是什么?在《Jenkins 用户文档原创 2021-02-02 15:45:33 · 487 阅读 · 0 评论 -
有些线程跑着跑着就不见了
1、三思后再写代码!!!图片2、从世界上搜索喜欢你的人!!!图片3、代码没写完,哪里有脸睡觉!!!图片4、程序员的 Home 键!!!图片5、编程是一门艺术!!!图片6、云 ~~~~ 雨!!!图片7、程序人生!!!图片8、只有极客才懂!!!图片9、黑客的世界!!!图片10、黑~~~人!!!图片11、PHP 专属!!!图片12、程序 ~ 代码!!!图片13、我就是一个极客!!!图片14、CODE!!!图片15、源代码!!!图片16、CODE PART原创 2021-02-01 19:44:39 · 5974 阅读 · 0 评论 -
Spring Boot实战:整合Redis、MyBatis,封装RedisUtils工具类
创建 Spring Boot 项目在线创建方式网址:https://start.spring.io/然后创建Controller、Mapper、Service包SpringBoot整合Redis引入Redis依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</art原创 2021-01-29 16:49:31 · 200 阅读 · 0 评论 -
骚操作!Intellij IDEA 居然还藏着这些实用小技巧 !
blog.youkuaiyun.com/linsongbin1/article/details/80211919看到了一篇关于 IDEA 小技巧的文章,很实用!分享一下~概述Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intellij IDEA技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。我最爱的【演出模式】我们可以使用【Prese原创 2021-01-27 14:49:23 · 150 阅读 · 0 评论 -
Java架构师工作8年还没有理解透彻的Leader选举
作者 | 王磊来源 | Java中文社群(ID:javacn666)正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示:图片“兵马未动粮草先行”,看完了相关的配置之后,我们先来创建一张测试表和一些测试数据。– 如果存在 person 表先删除DROP TABLE IF EXISTS person;– 创建 person 表,其中 username 字段可为空,并为其设置普通索引CREATE TABLE person (id INT PRIMARY KEY auto_原创 2021-01-25 20:35:25 · 151 阅读 · 0 评论 -
一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s
场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表create table Course(c_id int PRIMARY KEY,name varchar(10))数据100条学生表:create table Student(id int PRIMARY KEY,name varchar(10))数据70000条学生成绩表SCCREATE table SC( sc_id int PRIMARY KEY, s_id int,原创 2021-01-20 15:34:23 · 110 阅读 · 0 评论 -
阿里 Nacos 惊爆,安全漏洞以绕过身份验证(附修复建议)
来源:github.com/alibaba/nacos/issues/4701一、漏洞详情二、漏洞影响范围三、漏洞复现三、 修复建议BugFix大家好,我是threedr3am,我发现nacos最新版本1.4.1对于User-Agent绕过安全漏洞的serverIdentity key-value修复机制,依然存在绕过问题,在nacos开启了serverIdentity的自定义key-value鉴权后,通过特殊的url构造,依然能绕过限制访问任何http接口。通过查看该功能,需要在applic原创 2021-01-19 14:40:57 · 1721 阅读 · 2 评论 -
这四种情况下,才是考虑分库分表的时候!
数据库瓶颈不管是IO瓶颈还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载的活跃连接数的阈值。在业务service来看,就是可用数据库连接少甚至无连接可用,接下来就可以想象了(并发量、吞吐量、崩溃)。IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询会产生大量的IO,降低查询速度->分库和垂直分表第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 ->分库CPU瓶颈第一种:SQl问题:如SQL中包含join,group by, o原创 2021-01-14 15:03:56 · 186 阅读 · 0 评论 -
虎牙二面:说说你对 Java “零拷贝”的理解?
正文如下:前言从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能;这个词我们也经常在java nio,netty,kafka,RocketMQ等框架中听到,经常作为其提升性能的一大亮点;下面从I/O的几个概念开始,进而在分析零拷贝。I/O概念1.缓冲区缓冲区是所有I/O的基础,I/O讲的无非就是把数据移进或移出缓冲区;进程执行I/O操作,就是向操作系统发出请求,让它要么把缓冲区的数据排干(写),要么填充缓冲区(读);下面看一个java进程发起read请求加载数据大致的流程图:进程发起原创 2021-01-13 20:34:18 · 115 阅读 · 0 评论 -
最常用的4 大软件架构,你们公司用哪种?
如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面。一、单体架构单体架构比较初级,典型的三级架构,前端(Web/手机端)+中间业务逻辑层+数据库层。这是一种典型的Java Spring mvc或者Python Drango框架的应用。其架构图如下所示:单体架构单体架构的应用比较容易部署、测试, 在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加, 越来越多的人加入原创 2021-01-12 15:53:02 · 449 阅读 · 1 评论 -
虎牙面试官:String长度有限制吗?是多少?我:这太...
来源:www.toutiao.com/i6893014573322863111前言话说Java中String是有长度限制的,听到这里很多人不禁要问,String还有长度限制?是的有,而且在JVM编译中还有规范,而且有的家人们在面试的时候也遇到了。本人就遇到过面试的时候问这个的,而且在之前开发的中也真实地遇到过这个String长度限制的场景(将某固定文件转码成Base64的形式用字符串存储,在运行时需要的时候在转回来,当时文件比较大),那这个规范限制到底是怎么样的,咱们话不多说先䁖䁖去。String原创 2021-01-07 15:10:25 · 148 阅读 · 0 评论 -
Java 项目权威排名:Nacos 未上版,Gradle 排名第二,Maven 排名 28
https://github.com/ossf/criticality_score 发布了开源项目排名,下载地址:https://commondatastorage.googleapis.com/ossf-criticality-score/index.html我在这里选出我感兴趣,而且和公众认知不大一致的排名。Spring生态这点毫无疑问,Spring生态是Java开发的实际标准规范。基于“事件驱动架构”的Spring Cloud Stream项目也上榜了,这才是微服务解耦的正确姿势。g原创 2020-12-31 13:56:41 · 220 阅读 · 2 评论 -
不愧是程序员写出的骚代码啊,我服了!!!
神秘代码今天给大家看个有意思的东西!不仅有意思,还能学到知识。话题从两行(准确的说是一行)神奇的代码聊起:// main.c#include <stdio.h>int main[] = { 232,-1065134080,26643,12517440,4278206464,12802064,(int)printf };这是一段C++代码,猜猜看编译运行后,会输出什么?可能,你会问:这TM连main函数都没有,能编译成功?还真能!咱们分别在Windows平台下的Visual原创 2020-12-30 21:31:53 · 4123 阅读 · 1 评论 -
拥抱 Java 8 并行流:执行速度飞起 !
前言在 Java7 之前,如果想要并行处理一个集合,我们需要以下几步 1. 手动分成几部分 2. 为每部分创建线程 3. 在适当的时候合并。并且还需要关注多个线程之间共享变量的修改问题。而 Java8 为我们提供了并行流,可以一键开启并行模式。是不是很酷呢?让我们来看看吧并行流认识和开启并行流什么是并行流: 并行流就是将一个流的内容分成多个数据块,并用不同的线程分别处理每个不同数据块的流。例如有这么一个需求:有一个 List 集合,而 list 中每个 apple 对象只有重量,我们也知道 app原创 2020-12-25 17:13:41 · 122 阅读 · 1 评论 -
排名前 16 的 Java 工具类,哪个你没用过?
在Java中,实用程序类是定义一组执行通用功能的方法的类。这篇文章展示了最常用的Java实用工具类及其最常用的方法。类列表及其方法列表均按受欢迎程度排序。数据基于从GitHub随机选择的50,000个开源Java项目。希望您可以通过浏览列表来了解已经提供和流行的功能的一些想法,以使您知道不需要自己实现。这些方法的名称通常指示它们的作用。如果方法名称不够直观,您还可以查看其他开发人员如何在其开源项目中使用它们。1、org.apache.commons.io.IOUtilscloseQuietly()原创 2020-12-18 15:27:34 · 126 阅读 · 0 评论 -
系统频繁崩溃,我出了个限流方案,老板就是一个赞!很快啊
背景随着微服务的流行,服务之间的稳定性变得越发重要,往往我们会花很多经历在维护服务的稳定性上,限流和熔断降级是我们最常用的两个手段。前段时间在群里有些小伙伴对限流的使用些疑问,再加上最近公司大促也做了限流相关的事,所以在这里总结一下写写自己对限流的一些看法。刚才说了限流是我们保证服务稳定性的手段之一,但是他并不是所有场景的稳定性都能保证,和他名字一样他只能在大流量或者突发流量的场景下才能发挥出自己的作用。比如我们的系统最高支持100QPS,但是突然有1000QPS请求打了进来,可能这个时候系统就会直接挂原创 2020-12-17 20:42:50 · 253 阅读 · 0 评论 -
听说CentOS 8 已经成绝版了 ?难道就没有后续了么?很烦!
一、CentOS 8 已是绝版?CentOS Stream 才是未来?CentOS 官方发文称 CentOS Stream 才是 CentOS 项目的未来,在接下来的一年里,将逐步把开发工作的重心从 CentOS Linux 往 CentOS Stream 转移。随之而来的改变是原本拥有 10 年支持的 CentOS 8 将在2021年年底结束维护,为其接班的正是 CentOS Stream,CentOS Stream 作为 RHEL 的上游(开发)分支在 CentOS 8 结束维护后会继续更新。因原创 2020-12-10 21:17:21 · 5557 阅读 · 1 评论 -
SpringBoot+MyBatis+MySQL读写分离(实例)
引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP。然而,应用程序层面去做读写分离最大的弱点(不足之处)在于无法动态增加数据库节点,因为数据源配置都是写在配置中的,新增数据库.原创 2020-12-09 17:04:25 · 94 阅读 · 0 评论