自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (1)
  • 收藏
  • 关注

原创 SpringBoot扩展点剖析框架启动原理

​自2014年4月Pivotal团队发布全新开源的轻量级框架SpringBoot的第一个版本,迅速红遍大江南北,各个公司都用SpringBoot作为开发项目的必选项。SpringBoot从最初的1.2.x版本发展到最新的3.1.x,JDK从最初的6到最新的JDK17、JDK20,Spring Framework从4.1.x到最新的6.0.x,体现了SpringBoot强大的生命力。

2024-01-24 13:57:03 993 1

原创 用Redis做数据排名

用Redis做数据缓存用的比较多,大家都能熟练使用String和Hash结构去存储数据,今天讲下如何使用ZSet来做数据排名。

2023-09-24 22:06:39 376

原创 MS SQL Server问题汇总

1.报SQL Server Agent连接不上的错误。到windows服务开启。

2023-09-13 15:42:44 682

原创 使用Mybatis Plus进行DAO层开发

Mybatis Plus的特性、实战和总结,希望能帮到你。

2023-08-20 21:46:46 968

原创 一文看懂SpringBoot操纵数据库

很多同学进入公司就开始参与项目开发,大多数情况是对某个项目进行维护或者需求迭代,能够从0到1参与到项目中的机会很少,因此并没有多少机会了解某些技术的运行机制。换句话说,有的面试官在面试的时候就会探讨深层的技术问题,而不是关心你知道什么业务,怎么用技术去实现业务。今天要讲的就是SpringBoot操纵数据库,这个大家做得比较多的就是去写一个Dao的类,然后在mapper.xml文件里面写SQL,最后封装成Service供Controller调。

2023-04-14 21:52:56 940

原创 UnsupportedOperationException深层探究

UnsupportedOperationException深层探究

2023-03-01 20:17:08 497

原创 Flink快速上手

前面讲Hadoop的时候已经说了大数据的整个生态就是围绕存储采集、存储、计算进行的,今天要说的就是“计算”,目前分离线计算和实时计算,这两大块分别诞生了像Spark和Flink两大Super Star框架,这两大框架的初衷Spark定位于离线计算,Flink定位于实时计算,但随着业务的发展,也是为了市场的占有,二者分别开始蚕食对方的领域,各自在自身的体系架构中融入了实时和离线计算,大有一统江湖之意。

2021-11-24 17:02:14 1863 1

原创 YARN的任务调度器深度剖析

目录​YARN安装和启动​YARN任务调度器分类​容量调度器的设计思想​容量调度器的特点​容量调度器的配置​容器调度器指定队列执行Yet Another Resource Negotiator简称YARN,另一种资源协调者,是Hadoop的资源管理器。在Hadoop1.0版本之前是通过MR里面的JobTracker来进行任务的分发,之后Hadoop逐渐划分出YARN模块来管理任务的调度,在Hadoop 2.x版本之后YARN独立成了...

2021-10-24 22:42:45 587 4

原创 DBeaver安装过程的问题各个击破

如果说连接MySql数据库用什么客户端,大家会异口同声的说用Navicat,没错,Navicat确实是业界领先的最好用的Mysql客户端,可是Navicat不是免费的,虽然大家能找到破解的工具,然后在破解的时候也会遇到很多问题,有时候注册Key生成了,填入->永久许可证,点激活,又提示你需要手动激活,你点手动激活,Navicat会给你生成请求码,你复制了请求码后要到注册机里面去生成激活码,结果是:到网上搜了一圈都说是要卸载了重新装,或者是生成注册码的时候要断网,一通搞下来还是装不成功。后来,知

2021-09-14 17:28:39 2226 4

原创 手把手玩转HBase的增删改查

目录1.进入命令行2.表的操作2.1创建表2.2修改表2.3删除表3.数据的操作3.1插入数据3.2修改数据3.3删除数据3.4查询数据上一篇文章教会了大家在最小的环境中搭建HBase,能快速体验HBase数据库。今天教会大家所有的增删改查命令,期待通过数据的操纵更好的体验列式存储数据库的魅力。1.进入命令行在安装目录的bin目录下输入下面的命令进入命令行:hbase shell成功进入shell环境会显示下面的信息:HBase Shell

2021-08-07 15:21:00 2578 1

原创 极小环境搭建HBase

目录1.下载安装包2.安装3.配置3.1配置HBase依赖的java环境3.2配置要连接的zk3.3配置regionservers3.4配置环境变量3.5启动HBase大数据由于组件众多并且依赖性强,导致门槛很高,如果没有现成的环境,很多同学都不知道如何入手,单单搭建一套Hadoop的环境估计都得费很长时间。理解大数据最好的入门从HBase开始,因为它是数据库,虽然是列式存储,和关系型数据库差别很大,但毕竟也是数据库,普通程序员平时打交道最多的就是数据库。今天就带大家一起

2021-08-05 19:09:29 367

原创 Spring Bean为单例的正确理解

现在采用Spring进行开发的Java从业者越来越多,Spring也逐渐成为构建其他框架例如Spring Boot、Spring Cloud的基石,Spring Bean应该是大家用得最多的东西了,而且想用只需要用@Autowired注解引入即可,实在是太方便了,以前开发任何东西都要先new再使用。这正是Spring框架设计的初衷,就是你什么都不需要懂,Spring容器在系统启动的时候就帮你都创建好,你随用随取。Spring容器为我们创建的Bean都是单例Bean(原型Bean先放一边),这也极大的节省了创

2021-03-13 18:00:33 1140 2

原创 给定字符串的最长回文子串

什么是回文?通俗来讲就是一段字符串,正着读和反着读都是一样的。例如aba,abccba。会发现回文是很完美的对称字符串。本文就是用代码找到这个最长回文。

2021-02-08 11:46:01 645 1

原创 挑战BAT面试官之JVM垃圾收集器

BAT一直是广大程序员的梦想殿堂,不仅BAT的待遇在国内的IT行业中领先的,更在于BAT的技术也走在互联网的前列。因此,无论你是想有更高的薪资,还是追求极致的技术,都想去BAT里面镀金,有的可能在里面职位越混越高,有的可能干几年就出来创业或者到小的公司去当CTO。然而BAT的面试向来是非常严苛的,相信60%的人都直接被BAT的面试官干倒,30%的人能和BAT的面试官死磕到底,最后双方都歇斯底里,还有10%的人能干倒BAT的面试官。

2020-12-31 21:07:13 258

原创 Spring Boot系统用Redis做缓存

现在的分布式系统每天都会被大量访问,如果单靠关系型数据库来支撑,即使再大的连接数恐怕都不够,因此需要引入内存数据库将那些固定不变的数据或者是热点数据放到内存中存储,这样不仅提升了查询效率,而且可以减轻数据库的压力。今天用Spring Boot + Redis 实现数据的存储和查询。...

2020-12-31 20:35:50 199

原创 基于Spring Cloud的电商系统-项目搭建

目前在设计一套开源的基于Spring Cloud Alibaba的电子商城的系统,今天主要跟大家分享下如何利用Maven搭建一套微服务系统。希望实现的效果是一键Install,可以将所有微服务中心的Jar包都打出来。今天暂时不谈这套系统的架构,单纯就是如何快速搭建系统。使用的创建项目的工具:Idea + Maven1. 创建Pom父工程在Idea的左上角File -> New -> Project,打开如下的页面,选择Spring Initializr ...

2020-12-31 16:06:53 1218

原创 Java技术进阶推荐书单

1.启蒙篇首先推荐的两本书是Java核心技术,这一套书是获得了第十三届Jolt生成效率大奖,大学的时候几乎是计算机学院的学生爱好Java编程的都会买这两本书进行扫盲。而且这两本书会随着JDK的版本迭代会印刷新的版本,目前最新的已经是11版本了。这两本书系统全面讲解Java语言的核心概念、语法、重要特性和开发方法。《Java核心技术 卷I 基础知识》卷I主要介绍Java语言基础知识的专业级详解,包括写Java代码的基本技术、习惯用法和实践,利用接口、lambda表达式和内部类的功能,有效的异常处理

2020-12-31 14:37:02 2227 13

原创 2020年所学所悟

2020年注定是不平凡的一年,今年的农历新年新冠疫情爆发,每个中国人都经历了一个难忘的春节,在党中央的英明部署下,通过全国人民的不懈努力终于将疫情消灭。目前国内还在零星的爆发,疫情还在全世界范围大流行,只有全世界的人民团结起来,才能打赢这场没有硝烟的战争。这一年,我们终于消除了贫困,但脱贫攻坚的战争远没有结束,我们必须继续努力,让全体中国人实现共同富裕。这一年我国的航天事业取得了巨大突破,嫦娥五号实现了从月球带回土壤标本的历史创举。这一年,我国在第一季度遭遇巨大下滑的不利背景下,二季度和三季度都为正,并持续

2020-12-23 16:10:42 471 20

原创 Arthas安装和启动以及核心命令详解

Arthas安装和启动1. 下载Arthas最新的版本是V3.4.5,从阿里云官网或者GitHub上都可以下载。阿里云官方下载Github官方下载2. 下载的zip包解压后,windows平台中直接打开命令行窗口,输入下面命令进行启动java -jar arthas-boot.jar3. 这是会显示本机所有的java进程,如下图,挑选你之前已经启动好的一个java demo进程的序号,回车4. 现在Arthas完成启动了,你可以继续在命令行窗口敲命令来监控Demo程序,也

2020-12-22 19:53:58 1856 1

原创 分析JVM频繁Full GC问题

现在的码农真不好干,不仅要天天搬砖垒代码,还要安排监控系统做运维。既然选择了这行,就应该有使命感去把事情做好,让老板开心,码农虽然很苦逼,但必须要有尊严的活着,不能让产品看不起,我们是有价值的。闲话不多说,今天想聊聊线上问题分析,一些小的异常:业务报错、空指针异常、格式转换异常等这些小儿科就不用多说了,堆栈信息已经显示了对应的类、方法和行号,修下代码就好了。有的时候会出现服务器CPU或者内存飙...

2020-12-22 15:40:43 1237

原创 InputStream抽象类的三种实现

文件IO这块可能很多开发者没有涉及,平时的工作主要集中在CRUD的业务逻辑开发上,对于金融或者电信有些核心系统会大量使用文件IO。这里的文件主要是话单或者交易凭证,开发者需要读取这些文件,将文件的内容转为实体或者消息发送给其他的子系统去处理。大家常用的读取和写入文件的方式是用FileInputStream和FileOutputStream,本文将为大家带来另外两种文件读取的方式,让大家在写代码的时候有跟多的选择。InputStream是文件读取的抽象基类,java.io包下的文件读取都会直接或者间接实现.

2020-12-22 15:25:36 1031

原创 史上最全面讲解Java流对象Stream

目录Lambda表达式Stream API总结Java8可以说是Java路线图中一个里程碑的版本,虽然自Oracle收购Java后,Java的版本演进非常快,目前Java的版本已经到15了,但是目前绝大数的公司都还用着Java7和Java8,使用Java8的公司里面又有很多没有使用Java8的新特性,原因可能是没必要用或者可能是使用的Spring版本太低如果使用新特性会导致Spring启动有问题等等。因此今天想给大家介绍Java8的新特性,此时可能会有人说为什么要使用Java8的新特性,

2020-10-24 15:01:09 777 8

原创 Nacos客户端源码分析

前面已经用两篇文章介绍了如何安装Nacos控制台和Dubbo服务如何发布注册并在Nacos控制台上呈现。今天不再讲这些配置的东西,来点干货,分析Nacos的客户端源码。微服务中心的项目工程如果要注册服务,就需要依赖Nacos的客户端,这在前面已经讲了如何进行pom依赖实现。打开nacos-client的jar包看看里面是什么:有的同学经常说不知道从哪里开始看源码,今天就教大家从哪里下手。这个工程下总共5个一级目录:config,identify,logger,naming,utils。大家从这几个目

2020-10-20 19:46:32 2134 1

原创 Sentinel Dashboard轻松流控

Sentinel Dashboard轻松流控Spring Cloud Alibaba大家族里面的轻量级流量控制框架Sentinel,为什么叫这个名字,笔者认为框架的作者希望用这款框架为业务系统保驾护航,有了它,任何大并发的访问洪流都可以通过Sentinel控制。Sentinel已经开源,需要源码的同学请通过下面地址下载学习:码云地址:https://gitee.com/mirrors/Sentinel?utm_source=alading&utm_campaign=repoGithub地

2020-09-24 14:49:26 4542 2

原创 Guava Cache源码分析和实战

我在2018年的时候写过一篇手写代码实现缓存的文章,大家有兴趣的可以看看文后的链接。今天要向大家隆重推荐的是Google的Guava(石榴)组件里面含有的缓存接口。使用框架的好处就是考虑更充分,性能更优。下面将从源码和实战的角度去分析这个缓存框架。

2020-09-16 16:52:56 591 2

原创 mosquitto的发布和订阅代码实现

上一篇文章讲了mosquitto的安装和用命令行来测试消息的发送和接收,这一篇文章讲如何用Java代码实现消息的发布和订阅。

2020-08-21 16:48:13 1442 2

原创 mosquitto在windows下的安装和测试

本文介绍了实现了MQTT协议的开源框架mosquitto的下载、安装和测试。

2020-08-19 17:03:01 1055

转载 阿里巴巴 Nacos 企业级落地

本文是转载自阿里云,里面详细介绍了企业遇到的坑,怎么样替换Eureka,换了Nacos,如果做性能对比测试,非常接地气的一篇文章。这个文章分上中下篇。阿里巴巴 Nacos 企业级落地上篇阿里巴巴 Nacos 企业级落地中篇阿里巴巴 Nacos企业级落地下篇...

2020-08-14 16:58:42 537

原创 Dubbo+Nacos实现服务注册和发现

Spring Cloud目前非常流行,Nacos作为新兴的服务注册和发现组件在目前的业界也是非常火,本文力图向大家推荐这款服务注册和发现组件,因为它代表了未来的发展方向。

2020-08-14 09:04:07 12675 18

原创 Nacos服务端安装和启动

1. 下载Nacos服务端 下载地址:https://github.com/alibaba/nacos/releases 下载nacos-server-1.3.2.tar.gz 或者nacos-server-1.3.2.zip2. 解压下载的包3. windows下启动 进入命令行窗口,如果命令进入解压目录的bin目录,输入命令启动,具体如下图 4. 进入控制台 打开浏览器,输入:http://localhost:8848/nacos/...

2020-08-12 17:33:19 7306

原创 浓浓棕情之自产自消

今天是端午节,祝大家端午节快乐。今年的疫情让很多人放弃了出行的计划,宅在家里,我也是无聊,想到写点什么东西和大家分享下,希望有感兴趣的看看,如果有什么想法欢迎交流。生产者和消费者是软件世界里很寻常的场景,然而大多数程序员平时写代码不会用到,因为很多系统都是用来查询数据展示数据,写写CRUD就好了。随着MQ的横空出世,让大家都醉心于这种好用的中间件,配置一个Topic,发送消息就调用客户端的发送接口,接收消息继承一个接口,写一个Listener,整个从生产到消费全流程就这种友好的解决了,性能和完整性更不用

2020-06-25 21:38:41 509

原创 CountDownLatch多任务处理利器

CountDownLatch 是由java并发包提供的一个同步计数器,从字面意义上去理解可以分成两部分CountDown 和 Latch,CountDown就是计数的意思,Latch是门闩,这个同步工具就是通过保证多线程环境下,通过门闩限制主线程执行,子线程执行后计数减1,直到减为0,门闩打开,主线程执行。场景一:...

2020-04-25 21:34:36 413 10

原创 切绳子算乘积

题目:给你一段绳子,这段绳子的长度是正整数(绳子长度大于0),你可以选择切或者不切,如果切,分成两段,保证两段的长度都是整数,如果可以继续切,你可以选择继续,最后要求每一段绳子的长度的乘积最大。思考一:如果每次从中间切似乎得到的乘积会很大,那么当绳子长度为偶数,就直接从中间切,如果是奇数,那么奇数加1或者减1后再二分的位置切。static int clacLen(int n) {...

2020-03-01 21:20:04 380

原创 工厂模式及在Spring中的应用

工厂模式是最基本的也是最重要的模式,因为它方便我们能写出高质量、高效率的代码。只有掌握了工厂模式,我们才不会重复造轮子。今天将从最简单的工厂模式开始一步步深入讲解,告诉大家自己写是怎么用的,框架又是如何实现,我们能从框架实现获得怎么样的灵感。首先看看工厂模式的类图:工厂模式由一个接口类加一个对应的工厂类实现的,接口类提供所有要创建出来的实体所需要的方法,工厂类只负责一件事:创建实现类的...

2019-12-22 13:17:35 4757

原创 编程题阶乘迷局

大厂笔试面试题,给定一个整数,求该整数的阶乘,例如输入5,结果是5*4*3*2*1=120。拿到题目心中狂喜,迅速三下五除二就写出来:public int fun1(int i) { int k = 1; for(int j=2; j<=i; j++) { k = k * j; } retur...

2019-11-16 10:52:05 304 2

原创 Spring MVC 拦截器原理解析

Spring MVC支持配置多个拦截器,http请求将被配置的拦截器处理,处理后报错信息抛异常,异常将被DispatcherServlet捕获处理,每个拦截器对应的handler处理异常,包装成ModelAndView返回。web.xml 配置<servlet> <servlet-name>myservlet</servlet-name> <...

2019-11-13 17:07:50 471

原创 多线程处理返回值

好久没写博客,看了下上一篇发表的时间发现已是一年多前,看到消息处的小红点,点了下发现仍然有很多新朋友关注了我,给我留言,给我的博文点赞,让我发现技术分享的重要性,不仅仅是影响一个人,而是影响一群人。软件开发是一份很潮的工作,会随着历史的潮头不断奔流不息,只有屹立潮头的人才不会被淘汰。逆水行舟,不进则退,多少比你差的人比你还几倍的努力。如果你总是止步不前,拒绝新的技术,你还期望公司给你加薪,你还指望...

2019-09-08 16:19:41 1258

原创 ZooKeeper实现分布式锁(一)

ZooKeeper可以在其目录下建立节点,这些节点都是以路径和值为映射关系存在的,下面通过一个例子说明如何创建节点和删除节点。public class TestLock { public static void main(String[] args) { ZkClient zkClient1 = new ZkClient(new ZkConnection("127.0.0.1:2181")...

2018-05-29 16:55:22 910 1

原创 自己实现缓存

    有的时候我们需要频繁用到一些数据,我们不需要频繁去查数据库,这样不仅浪费数据库的IO,也浪费单次业务的时间,如果我们要用到的数据就是数据库中的某一张表的固定数据,那么我们就可以在项目启动的时候将该表的数据加载到缓存中。设计思路:1. 一个加载缓存数据的服务Bean2. 一个存储缓存数据的类实现加载缓存数据的服务Bean采用了实现Spring提供的InitializingBeanpublic...

2018-02-15 11:04:32 1746

原创 理解线程的join方法

在多线程环境下很难保证结果的一致性,多线程带来的好处就是并行处理提升效率,弊端就是出现了问题很难定位,可以看个例子就明白了,请将下面的代码拷到本地去执行,就会发现每次执行的结果不一样。     代码1public class JoinDemo { public static void main(String[] args) { Thread thread1 = new Thread(

2018-01-29 23:14:01 536

Backbone.js应用程序开发

Backbone.js应用程序开发这本书对Backbone进行了深入浅出的介绍,从基础到应用程序实践,每个技术点都有相应的例子供参考,最重要的是把作者工作中遇到的问题进行了总结并给出了解决方案。

2017-07-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除