程序新视界

每一步成长都与你分享。公众号:程序新视界
私信 关注
程序新视界
码龄10年

个人公众号【程序新视界】,一个硬技术,软实力同步提升的平台。《Spring Boo技术内幕:架构设计与实现原理》作者,《深入以太坊智能合约开发》联合作者之一。主要从事于三方支付行业。

  • 4,815,803
    被访问量
  • 714
    原创文章
  • 160
    作者排名
  • 7,784
    粉丝数量
  • 毕业院校 河南大学
  • 目前就职 北京爱品阅科技有限公司
  • 于 2010-11-14 加入CSDN
  • 入选《本周创作者榜》第54名
  • 入选《Java领域内容榜》第28名
获得成就
  • 博客专家认证
  • 获得6,192次点赞
  • 内容获得3,075次评论
  • 获得10,110次收藏
  • GitHub 获得292Stars
荣誉勋章
兴趣领域
  • #后端
    #架构#Spring#Java
TA的专栏
  • SpringBoot实战源码全家桶
    付费
    72篇
  • Springboot
    97篇
  • shiro
    5篇
  • LeetCode算法
    3篇
  • JVM
    1篇
  • slf4j源码解析
    3篇
  • Intellij IDEA日常使用
    38篇
  • 面试题
    9篇
  • 区块链实践
    84篇
  • FastDFS
    1篇
  • redis
    2篇
  • postgreSQL
    2篇
  • Drools规则引擎
    59篇
  • Zookeeper从入门到专家
    20篇
  • 死磕GOF23设计模式
    1篇
  • 区块链
    100篇
  • Drools
    61篇
  • Intellij IDEA
    38篇
  • 程序杂谈
    182篇
  • Zookeeper
    20篇
  • Java基础
    90篇
  • SpringBoot
    34篇
  • Linux
    23篇
  • Bootstrap
    6篇
  • JDBC
    2篇
  • 单元测试
    4篇
  • Dbvisualizer
    3篇
  • SVN
    4篇
  • Quartz
    2篇
  • Spring
    19篇
  • 日志
    2篇
  • ZK
    1篇
  • Oracle
    1篇
  • 前端
    12篇
  • MySQL
    15篇
  • Nginx
    1篇
  • Maven
    10篇
  • dubbo
    1篇
  • mybatis
    6篇
  • SecureCRT
    2篇
  • 自动化
    5篇
  • github
    3篇
  • mq
    2篇
  • xstream
    1篇
  • Solidity
    9篇
  • 加密算法
    2篇
  • 分布式
    4篇
  • ssh重启
    1篇
  • go语言
    3篇
  • 其他
    6篇
  • 实战
    8篇
  • 设计模式
    2篇
  • docker
    5篇
  • 视频教程
    2篇
  • eclipse
    1篇
  • 数据结构与算法
    1篇
  • MongoDB
    2篇
  • 运维
    17篇
  • flutter
    2篇
  • 生活
    12篇
视频教程系列

我的个人技术博客>>



《Spring Boot 视频教程全家桶》

《Drools规则引擎&Workbench实战套餐》



    微信公众号:程序新视界
   出版书籍

视频号
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

再一次实战策略模式,太好用了

前言之前做三方支付系统的时候经常用到策略模式,比如用户会选择不同的支付方式,不同的支付方式又有不同的实现方法或银行接口调用。现在做物联网系统,基于MQTT协议(TCP层面的协议)来传输数据,根据不同的请求(不同的Topic)处理不同的业务逻辑,也同样用到策略模式。顿时感觉策略模式非常好用,而且结合Spring的实例化和注入功能,更加方便了。今天就聊聊基于Spring(Boot)下策略模式的使用。未使用策略模式时的处理以物联网为例大家可能不够熟悉,下面就以支付场景为例。比如在支付的过程中我们可能会
原创
428阅读
0评论
1点赞
发布博客于 2 天前

Java自动拆箱空指针异常,救火队员上线

公司搬迁,临时充当装修工,提前两个小时到公司忙着拆卸设备。结果接到客户反映,某部分功能偶尔不能用。于是参与救火,与写这段代码的小伙伴一起排查原因。最终发现导致业务偶尔不能使用是由Long类型自动拆箱导致空指针异常引起的。下面就带大家分析一下Java中基础类型的包装类在拆箱和装箱过程中都做了什么,为什么会出现空指针异常,以及面试过程中会出现的相关面试题。问题重现下面通过一个简单的示例才重现一下异常出现的场景。public class BoxTest { public static void
原创
64阅读
1评论
1点赞
发布博客于 2 天前

只用这一篇Java泛型的文章,保证你面试对答如流

最近技术交流群里,有朋友问:Object和泛型T有啥区别。回答完问题,不禁在想,面试在即,还有那么多朋友不了泛型?是时候给大家整理一篇泛型相关的文章了,一篇文章全面搞定泛型,让大家再也不愁面试或实践中泛型相关的问题了。什么是泛型泛型是在JDK 5时就引入的新特性,也就是“参数化类型”,通俗来讲就是将原来的具体类型通过参数化来定义,使用或调用时再传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新类型的前提下,通过泛型指定的不同类型来控制形参具体的类型)。在泛型使用过程中,操作的数据类型被
原创
4510阅读
15评论
30点赞
发布博客于 7 天前

放弃FastJson!一篇就够,Jackson的功能原来如此之牛(万字干货)

在上篇《经过多方调研,最终还是决定禁用FastJson!》中,讲了FastJson的基本使用以及存在的不确定性问题,所以最终决定在项目中放弃使用,进而选择市面上比较主流,Spring Boot默认绑定的JSON类库:Jackson。本文就来讲解一下Jackson的基本使用以及与Spring Boot的结合与实践。什么是JacksonJackson是比较主流的基于Java的JSON类库,可用于Json和XML与JavaBean之间的序列化和反序列化。没看错,Jackson也可以处理JavaBean与X
原创
4892阅读
6评论
5点赞
发布博客于 9 天前

经过多方调研,最终还是决定禁用FastJson

老项目中使用到多种json类库,没有统一管理。最近开启全新的项目,准备对json类库进行统一,这样不仅能够压缩jar包的大小,也能够避免某个类库的漏洞导致系统问题。其实,就在前几个月因为FastJson的漏洞,已经全面升级过一次FastJson的版本。现在项目中有用FastJson,有用gson,也有用Jackson。虽然用的类库比较多,但使用的场景并不多,还在可控范围之内。这篇文章重点讲讲对FastJson的一些调研,虽然最终决定强制在项目中禁用FastJson,但在放弃之前,还是要学习一下这个类库的
原创
112阅读
0评论
1点赞
发布博客于 10 天前

SpringBoot的四种异步处理,写这篇文章,我自己先学到了

最近更新了一系列关于异步和回调的文章,比如《一篇文章,搞明白异步和多线程的区别》、《两个经典例子让你彻底理解java回调机制》、《异步请求和异步调用有区别?》,大家感兴趣的话可温习一下。今天再带大家学习汇总一下SpringBoot中异步处理的4种形式,下面开始正文:前言在网络上有关于SpringBoot的异步请求和异步调有两种说法,经过调用这两种说法本质上就是一回事,在《异步请求和异步调用有区别?》一种,已经做过解释了。同时,我们也知道了“服务实现的异步与同步特性完全独立于客户端调用的异步和同步特性
原创
130阅读
0评论
2点赞
发布博客于 11 天前

异步请求和异步调用有区别?直到看到了7年前的一个问答

当你打开本文,首先想说的是,这篇文章不仅仅是在讲一个知识点,更重要的是在讲一种学习方法:质疑与求证。前言最近在研究Spring Boot的异步处理,准备写一篇文章。在搜集资料时发现一篇文章《SpringBoot中异步请求和异步调用》,以及许多它的衍生文章。文章的确不错,但文章中提到的“异步请求和异步调用”这两个概念,一直百思不得其解,衍生文章中也是在混着用。终于忍不住想探究一番,发现除了那篇文章和衍生的文章之外,并没有其他证据来区别这两个概念。直到在Stack Overflow上搜到了一篇七年前的文章
原创
198阅读
0评论
1点赞
发布博客于 16 天前

一篇文章,搞懂异步和多线程的区别

最近在研究Spring Boot中的异步处理,发现涉及到异步和多线程的很多知识点,就先写几篇关于异步与多线程的文章,带大一起回顾或学习一下相关的知识点。下面开始正文内容:前言在本文中,我们通过一些通俗易懂的方式来解释异步编程和多线程编程,然后再介绍一下它们之间的区别。什么是异步编程首先来看一下异步模型。在异步模型中,允许同一时间发生(处理)多个事件。程序调用一个耗时较长的功能(方法)时,它并不会阻塞程序的执行流程,程序会继续往下执行。当功能执行完毕时,程序能够获得执行完毕的消息或能够访问到执行的结果
原创
163阅读
1评论
1点赞
发布博客于 18 天前

两个经典例子让你彻底理解java回调机制

先让我们通过一个生活中的场景来还原一下回调的场景:你遇到了一个技术难题(比如,1+1等于几?太难了!),于是你去咨询大牛,大牛说现在正在忙,待会儿告诉你结果。此时,你可能会去刷朋友圈了,等大牛忙完之后,告诉你答案是2。那么,这个过程中询问问题(调用对方接口),然后问题解决之后再告诉你(对方处理完再调用你,通知结果),这一过程便是回调。系统调用的分类应用系统模块之间的调用,通常分为:同步调用,异步调用,回调。同步调用是最基本的调用方式。类A的a()方法调用类B的b()方法,类A的方法需要等到B类的
原创
132阅读
2评论
2点赞
发布博客于 25 天前

在Netty服务被N次攻击之后,终于抓到现行了!

马上就要过春节了,本想着完成手头的任务就可以准备过年了。没想到Netty服务器又被攻击了,当收到服务器报警(CPU飙升报警)信息,就知道对方又下手了。之前是交给下面的兄弟来解决,这次为了过个好年,决定亲自动手把这事给了结了。故事前奏Netty服务是公司比较边缘的服务,只有一台设备在使用,而且代码是之前技术Leader(已离职)写的,加上一直赶工期,所以就没抽出时间去彻底解决这事。当初被攻击没排查代码,看到遭到疯狂请求、CPU跑满、日志打满,还以为是遭遇DDoS攻击了。临时采取了几个措施:分离服
原创
183阅读
3评论
1点赞
发布博客于 29 天前

技术转正及年终工作述职报告PPT模板

很多技术的朋友转正或年总总结时都需要用PPT来进行转正演讲或述职演讲。这不,马上年会了,作为技术负责人要代表技术部做一个年总的总结,在网上找了好久都没找到一个合适的述职报表的PPT模板。经过不懈的努力,终于找到12套简约的述职报表模板。分享给大家,共大家参考:模板一:模板二:模板三:模板四:模板五:模板六:模板七:模板八:模板九:模板十:模板十一:模板十二:不管现在有没有用,都赶紧收藏一下吧。完整的PPT模板,扫描关注下面的公众号“程序新视界”,回复“P
原创
200阅读
2评论
1点赞
发布博客于 2 月前

SpringBoot2.x系列教程(六十九)Spring Boot整合Shiro,两种方式实战总结(含源码)

Shiro是历史悠久的权限管理框,简单易用,易用集成,同时权限管理也是每个项目必不可少的功能。Spring Boot是Java领域炙手可热的脚手架框架。今天这篇文章就带大家将这两个框架进行整合。通常Spring Boot中整合Shiro,有两种方案:第一,基于原生API进行整合;第二,基于Shiro官方Starter整合。整体而言,官方Starter整合并没有方便很多,因此,本文主要以原则API进行整合,下面就来看看具体的整合方式。创建Spring Boot项目创建Spring Boot项目通常有
原创
172阅读
1评论
2点赞
发布博客于 2 月前

Shiro中@RequiresRoles使用

Shiro中通过@RequiresRoles注解可检验权限,在检验权限之前先要设置权限:授权方法中给用户添加角色在自定义的Realm中(继承实现AuthorizingRealm)的doGetAuthorizationInfo方法中授权方法中给用户添加角色。@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { String userName =
原创
153阅读
0评论
1点赞
发布博客于 2 月前

shiro触发doGetAuthorizationInfo方法的几种方式

什么情况下会触发shiro的授权检测呢?通常有以下三种方式:方式一:代码中通过Subject对象主动调用权限校验subject.hasRole(“admin”);//或subject.isPermitted(“admin”);这种方式属于在代码中需要校验权限的时候主动调用,判断返回结果来确定是否通过。方式二:通过注解的形式检查对用的方法请求@RequiresRoles("admin")这种方式通常用在Controller的方法上。方式三:页面shiro标签针对ftl等页面,可直接在页
原创
118阅读
0评论
1点赞
发布博客于 2 月前

Shiro身份认证之principals和credentials

所谓的身份验证,即在应用中证明用自己的身份。一般比如提供如身份证ID、用户名等来证明是他本人,而用密码来验证。在《02.Shiro认证与授权原理分析》中我们分析了Shiro验证和授权的基本原理。其中,在验证的流程中涉及到2个概念:principals和credentials。在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能验证用户身份:principals/身份什么是principal?principals:身份,即主体的标识属性,如
原创
143阅读
0评论
1点赞
发布博客于 2 月前

LeetCode 03:面试关:如何找出字符串中无重复最长子串?

LeetCode第3题,“无重复字符的最长子串”,曾经面试的过程中遇到过的一道算法题。通过这道题,我们能够学到算法中一个比较常见的解题方法:滑动窗口算法。由于LeetCode中很多题都是基于“滑动窗口算法”进行解答,因此本篇文章将重点放在“滑动窗口”上,而不仅仅是这道算法题。当理解了滑动窗口的基本原理之后,所有类似的题都可以轻易解答。下面来看具体的题目和解题方法。“无重复字符的最长子串”题目链接:https://leetcode-cn.com/problems/longest-substring-w
原创
85阅读
1评论
1点赞
发布博客于 2 月前

不解释,全网最全Shiro认证与授权原理分析

本篇为《Shiro从入门到精通》系列第二篇,在上篇《还在手写filter进行权限校验?尝试一下Shiro吧》中,我们学习了Shiro的基本功能、架构以及各个组件的概念。本篇文章继续深入,以官方示例为基础,讲解使用Shiro的流程以及认证和授权的原理分析。下面开始正文:前言Shiro作为常用的权限框架,可被用于解决认证、授权、加密、会话管理等场景。Shiro对其API进行了友好的封装,如果单纯的使用Shiro框架非常简单。但如果使用了多年Shiro,还依旧停留在基本的使用上,那么这篇文章就值得你学习一下。
原创
137阅读
0评论
1点赞
发布博客于 2 月前

如何将一个项目同时提交到GitHub和Gitee(码云)上

如果你是GitHub的开源作者,是否因为GitHub访问慢或图片不显示而苦恼?你是否想让你的代码让更多人看到?那么,你可以将一套开源代码同时提交到多个开源平台。当然,如果你已经在这么做了,但是只是手动的复制、分别上传,那么更本篇文章更值得你一看。前言GitHub几乎是每个程序员必逛的地方,但访问GitHub有一个明显的问题,就是网速比较慢,现在GitHub上很多图片信息还没办法正常显示。Gitee(码云)这几年在国内发展势头迅猛,下面我们就以一套代码同时提交到GitHub和Gitee为示例来,来讲解
原创
112阅读
0评论
1点赞
发布博客于 2 月前

01 还在手写filter进行权限校验?尝试一下Shiro吧

在实践中,发现很多朋友虽然在使用Shiro,但貌似对其并不了解,甚至有的项目还在使用filter来实现权限管理,而网络上相关教程又比较古老。因此,决定为大家更新这么一个关于Shiro的系列教程,最后会整理成册,分享给大家。如果你也想深入学习一下Shiro框架,那么关注一下公众号“程序新视界”,可及时获取最新的文章,等本系列更新完毕会也会第一时间整理成电子版文档分享给大家。第一篇,给大家科普一些基础概念,下面开始正文。前言权限管理是每个系统不可缺少的,它隶属于系统安全的范畴,实现对用户访问系统的控制,按照
原创
104阅读
0评论
1点赞
发布博客于 2 月前

LeetCode 02:“两数相加”,小学加法运算而已?

一道小学加法题,竟然在LeetCode上被标记为“中等”难度,有些人“流下了没有技术的眼泪”,有些人“一顿操作猛如虎,一看击败百分五……”。今天我们来看看LeetCode的第二道题“两数相加”。“两数相加”先来看题目描述,对应官方链接:https://leetcode-cn.com/problems/add-two-numbers给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除
原创
119阅读
0评论
1点赞
发布博客于 2 月前

自定义SpringBoot默认MVC配置?好几个坑,这篇文章必须珍藏

前言前些天,在项目实践过程中出现了一个奇怪的状况,Spring Boot的参数绑定失效了。而起因只是因为同事把参数上的@RequestParam注解去掉了。我们都知道,如果参数名称和Controller的方法名相同时,根本不需要@RequestParam注解的,Spring Boot会自动帮我们完成参数的绑定。但为什么自动绑定机制失效了呢?本篇文章会为大家揭开谜底,在此过程中也会全面讲解如何在Spring Boot项目中自定义配置WebMvc,以及这其中的很多坑。SpringBoot自定义WebMvc
原创
158阅读
0评论
1点赞
发布博客于 2 月前

LeetCode 01:有人相爱,有人夜里开车看海,有人LeetCode第一题都做不出来

在LeetCode的第一题下面,有这样一句评论“有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。”看到这条评论,你是得意的笑呢,还是苦涩的笑?LeetCode第一题为“两数之和”,难度为“简单”,如果这样一个简单的题,没做不出来,的确有些心酸。这就像学一门编程语言时,打印“Hello World”的程序都没写不出来的感觉是一样的,凄凉。下面就来一起看看这道题。“两数之和”题名称为“两数之和”,题目详情如下,对应官方链接:https://leetcode-cn.com/problem
原创
216阅读
1评论
1点赞
发布博客于 2 月前

不要再用main方法测试代码性能了,用这款JDK自带工具

作为软件开发人员,我们通常会写一些测试程序用来对比不同算法、不同工具的性能问题。而最常见的做法是写一个main方法,构造模拟场景进行并发测试。如果细心的朋友可能已经发现,每次测试结果误差很大,有时候测试出的结果甚至与事实相反。当然,这不排除是因为软硬件环境因素导致,但更多的可能是因为所使用测试方法自身有问题。比如,不同需要性能比较方法放到一个虚拟机里调用,有可能会互相影响,缺少预热的过程等。本文给大家推荐一款JDK9及以后自带的一款可用于软件基准测试的工具JMH(Java Microbenchmark
原创
180阅读
1评论
2点赞
发布博客于 2 月前

LeetCode0:学习算法必备知识:时间复杂度与空间复杂度的计算

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。算法是大厂、外企面试的必备项,也是每个高级程序员的必备技能。针对同一问题,可以有很多种算法来解决,但不同的算法在效率和占用存储空间上的区别可能会很大。那么,通过什么指标来衡量算法的优劣呢?其中,上面提到的效率可以用算法的时间复杂度来描述,而所占用的存储空间可以用算法的空间复杂度来描述。时间复杂度:用于评估执行程序所消耗的时间,可以估算出程序对处理器的使用程度。空间复杂度:用于评估执行程序所占用的内存空间,可以估算出程序对计算机内存的
原创
146阅读
0评论
1点赞
发布博客于 2 月前

魔幻的2020,对我来说却是逐渐觉醒的一年

2020年的最后一天,按照惯例总结一下成果,同时也制定一下来年的目标,每年不总得给自己立几个flag。关于公众号先说公众号,其实开通了很多年,直到今天,还差一百多粉丝才突破一万,这样的成绩算是比较差的了,但好歹至今还没放弃。最初写公众号纯粹是个人爱好,并没有把它当做个事来做,所以虽然不断的在写,但内容非常凌乱,也没有统一的主题。最近在看书和与朋友交流的时候才发现,没有统一主题是一个非常严重的问题。没有主题,就没有标签,而标签是大家识别或事物必备的维度。当没有标签,粉丝对你就没有预期,也就没有关注的动力
原创
220阅读
2评论
1点赞
发布博客于 2 月前

世界上最好的学习法:费曼学习法

你是否曾幻想读一遍书就记住所有的内容?是否想学习完一项技能就马上达到巅峰水平?除非你是天才,不然这是不可能的。对于大多数的普通人来说,可以通过笨办法(死记硬背)来达到学习的目的,但效率低下。当然,也可以通过优秀的学习法来进行学习,比如今天讲的“费曼学习法”,可以将你的学习效率极大的提高。费曼学习法是由加拿大物理学家费曼所发明的一种高效的学习方法,费曼本身是一个天才,13岁自学微积分,24岁加入曼...
原创
97536阅读
177评论
766点赞
发布博客于 2 年前

世界很大,一定要出去看看

8月份的后半个月去了欧洲的五六个国家,一路走一路满满的感悟。跟团旅游比较辛苦,期初想把旅途的见闻通过公众号分享给大家,但看着发一篇文章,粉丝不断的掉,就终止了。朋友问:还等着你的游记呢,为什么不更新了?我说:粉丝可能更爱写代码,不爱看世界吧。当然,上面只是开玩笑,可能是我文笔不够,也可能是粉丝见多识广,或其他原因,导致并不喜欢这类文章。但思前想后半个月,感觉还是要总结性的写一篇文章吧。毕竟这里是...
原创
12766阅读
80评论
96点赞
发布博客于 2 年前

深入浅出了解Java即时编译器原理及实战

学习JVM相关的知识,必然绕不开即时编译器,因为它太重要了。了解了它的基本原理及优化手段,在编程过程中可以让我们有种打开任督二脉的感觉。比如,很多朋友在面试当中还会遇到这样的问题:Java是基于编译执行还是基于解释执行?当你了解了Java的即时编译器,不仅能够轻松回答上述问题,还能如数家珍的讲出JVM在即时编译器上采用的优化技术,而且在实践过程中更深刻的理解代码背后的原理。本文便带大家全面的了解Java即时编译器。即时编译器在部分的商用虚拟机中,比如HotSpot中,Java程序先通过解释器(Inter
原创
134阅读
0评论
2点赞
发布博客于 2 月前

个人视频号“二师兄..”正在持续更新Java,jvm系列内容,感兴趣的朋友可以关注一下。绝对让你眼前一亮。有很多技术不是学不会,很多时候只是不知道而已~

发布Blink于 2 月前

jvm即时编译器优化,首发于个人微信视频号“二师兄..”欢迎关注~

发布Blink于 2 月前

如何学习java虚拟机(JVM)相关知识

最近在运营个人的视频号“二师兄…”,在录制JVM及Java基础相关的知识,突然有不少感悟,写一篇文章与大家分享一下,关于写作和关于技术研究相关的内容。很多朋友不知道如何写作,不知道写什么,其实这个问题也一直困扰着我。就比如现在录制视频号内容,一直在思考,录制什么内容核实,内容是素材来源何处?不过经过将近一个月的努力和总结,总算找到一些感觉,分享给大家。第一,我视频号和写作的最大灵感来源就是工作。每当白天工作时,遇到一些难题,review代码时看到同事用错的一些语法,写错的一些代码,都会记录下来,在空闲
原创
140阅读
3评论
2点赞
发布博客于 2 月前

过滤器与拦截器的N个区别,别傻傻分不清了

Spring的拦截器与Servlet的Filter有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查、日志记录等。但它们之间又有不少区别,很多朋友工作多年,可能还没有深刻的了解它们的具体使用以及它们之间的区别。本文带大家全面了解一下它们的使用、实现机制以及区别。过滤器(Filter)的详解及使用过滤器(Filter)属于Servlet的范畴,可以认为是Servlet的一种“加强版”,通过实现javax.servlet.Filter接口来实现功能。主要用于对用户请求进行预处理,是个典型的处理链
原创
204阅读
2评论
1点赞
发布博客于 2 月前

Java中两个或多个byte数组合并及int类型转数组

在实践中经常会遇到两个btye数组合并成一个,或者多个byte数组合并成一个,以及int类型转byte数组,逆向的byte数组转int类型。下面汇总了上述相关功能的方法,提供了对应的工具类,直接查看源码或更多的工具类可关注公众号“程序新视界”,回复“1005”获得。下面是对应工具类的代码:package com.choupangxia.bytes;/** * Byte相关公共处理工具 * <br/> * 关注公众号:程序新视界;回复"1005"获得更多工具类 * * @aut
原创
319阅读
3评论
1点赞
发布博客于 2 月前

根据Token获取用户信息的N种姿势,这种最完美!

Web项目中经常会用token来进行用户的访问验证,那么在获得token之后,如果有很多地方需要根据token获得对应的用户信息,你会怎么获取?本文给大家提供N种方式,对照一下,看看你的项目中所使用的方式属于哪个Level,是不是要赶快升级一下?关于token生成、认证部分的操作本文不会涉及,也就是默认token是经过合法性校验的,本文将重点放在之后进行的业务相关处理,即基于token获取用户信息的方式(部分方式需要基于SpringBoot)。Level1:手动获取通常token会放在header当
原创
1078阅读
4评论
1点赞
发布博客于 2 月前

同事如此使用StringBuilder,我给他提了一个Bug

字符串的拼接在项目中使用的非常频繁,但稍不留意往往又会造成一些性能问题。最近Review代码时发现同事写了如下的代码,于是给他提了一个bug。@Testpublic void testForAdd() { String result = "NO_"; for (int i = 0; i < 10; i++) { result += i; } System.out.println(result);}本文就带大家从表象到底层的来聊聊,为什么这种写法
原创
368阅读
1评论
2点赞
发布博客于 2 月前

只因多看了一眼提示,又一次刷新了@Autowired注释的认知

@Autowired和@Resource都可以用于来实现依赖注入,但前者是Spring提供的,后者为JDK(JSR-250标准)自带的。阿里Java开发规范中推荐使用@Resource。但大多数人往往并没有留意为何如此,甚至代码中的提示信息可能都没留意去看。本文就带大家彻底了解一下这两个注解的功能、运用场景及区别。IDE的提示如果在项目中使用@Autowired进行注入,如下代码:@RestControllerpublic class InjectController { @Autowir
原创
194阅读
0评论
1点赞
发布博客于 2 月前

粉丝说SpringBoot集成validation校验参数有坑,我试了试

公众号中分享了一篇文章,关于SpringBoot集成validation校验参数的,粉丝留言说有坑。原留言如下:有坑,你试试^A-\\d{12}-\\d{4}$,这条正则经过validate这个方法无论参数写的对不对都会报验证错误,而用main方法测试是正常的。。话说,针对这种回复我是不太信了,直觉告诉我,肯定是这位粉丝用错了。但既然粉丝有疑问还是需要专门写一个demo来验证一下的。说写就写。SpringBoot集成validation集成过程非常简单,在原项目的pom文件中直接引入如下依赖:&
原创
5562阅读
14评论
7点赞
发布博客于 2 月前

SpringBoot2.x系列教程(六十八)Spring Boot集成Redis的坑,踩了!

最近项目中使用SpringBoot集成Redis,踩到了一个坑:从Redis中获取数据为null,但实际上Redis中是存在对应的数据的。是什么原因导致此坑的呢?本文就带大家从SpringBoot集成Redis、所踩的坑以及自动配置源码分析来学习一下SpringBoot中如何正确的使用Redis。SpringBoot集成Redis在SpringBoot项目中只需在pom文件中引入Redis对应的starter,配置Redis连接信息即可进行使用了。pom依赖引入:<dependency>
原创
552阅读
2评论
2点赞
发布博客于 2 月前

SpringBoot2.x系列教程(六十七)Spring Boot注入RestTemplate及源码解析

引入SpringBoot本来就支持REST服务,因此在SpringBoot项目之间经常需要通过REST的形式来相互调用。本文以具体的实例带大家了解一下SpringBoot中怎么使用RestTemplate进行接口调用。同时,会讲解部分相关源码。RestTemplate的实例化RestTemplate实例通常需要自己进行定制,SpringBoot相关的自动配置bean。但是,SpringBoot提供了自动配置的RestTemplateBuilder,可以用它来创建RestTemplate实例。那么,Sp
原创
351阅读
0评论
1点赞
发布博客于 2 月前

巴铁兄弟加我微信,问如何通过写博客赚钱?

下班路上在等红绿灯,看一眼微信有人申请加好友,通过了。然后,收到了一句“hello”。说实话,有人发像“你好”、“在吗”一类无意义的话,基本上很少回复的。随后又收到一句“english?”,还以为有朋友在逗着玩。直到对方介绍了自己,原来是巴铁兄弟啊。于是,就拿是自己都不知道对错的英语与对方聊了四十分钟,真是在寒风中瑟瑟发抖。努曼是华北电力大学的学生,加我的微信好友只是因为看到我之前写的一篇关于如何通过写博客赚钱的文章。对的,他想通过写中文博客赚钱。下面,就随着与努曼的聊天,聊聊写博客到底能不能赚钱。
原创
217阅读
1评论
1点赞
发布博客于 2 月前

slf4j中有典型适配器模式,不看一看?

slf4j的日志源码分析第5篇,我们来讲解其中适配器模式的运用案例。历史文章回顾:1、《聊聊这些年我们用过的Java日志框架》2、《slf4j框架源码中是如何实现双重锁的?》3、《slf4j中是如何运用SPI机制兼容各类日志框架的?》4、《slf4j是如何绑定具体的日志框架的?》5、《slf4j中的桥接器是如何运作的?》什么是适配器模式在看slf4j中适配器模式的具体实现之前,我们先来了解一下适配器模式的基础概念和运用场景。适配器模式,运用的场景用一句通俗的话来说就是:用一个包装来包装不兼
原创
223阅读
0评论
1点赞
发布博客于 3 月前

Maven中optional和scope元素的使用,你弄明白了?

在梳理项目的过程中发现很多开发同学对Maven依赖文件的配置并不了解,特别是对Maven的optional元素和scope元素的使用也非常随意。这就会导致发布的jar包或war包非常“胖”、编译速度慢,而且还很容易生产jar冲突等问题。本篇文章从optional和scope的使用场景入手,让项目实现一波瘦身。optional元素这里以Spring Boot项目中的使用为例,比如我们在项目中经常使用的热部署组件spring-boot-devtools,就可以使用optional元素来进行定义,对应pom文
原创
844阅读
0评论
5点赞
发布博客于 3 月前

做什么并不重要?真是彻头彻尾的错误。

最近在读《从0到1》,PayPal创始人写的,曾经罗胖好像推荐过,本以为是讲创业的,没想到作者竟然在书中写到哲学、历史、经济等多方面,这么随意的写作风格倒是第一次见。今天读到一段话有所感触,分享给大家:每个身在美国教育体制中的人都没有学会幂次法则来思考。每所中学不管什么课都一律45分钟,每个学生都以相同的步伐向前迈进。在大学中,模范学生痴迷于学习另类的冷门技能,想以此保证自己的未来发展。每所大学都相信“卓越”,教育部门随意给出的几百页按字母顺序的课程表看起来就为了确保“你做什么并不重要,重要的是你要把
原创
151阅读
0评论
1点赞
发布博客于 3 月前

最近,也在思考是否继续“北漂”的问题

公众号中一位朋友留言说身边发生了一些事情,感觉在上海待不住了,想回老家。最近我也同样在思考着这个问题:是该选择生活还是选择继续打拼。选择继续留下来打拼,能够保持可观的收入,能够保持在事业上的成就感,能够保持对未来的预期。但始终有一把达摩斯之剑:留不下来。随着年龄的增长,这个问题变得越来越不容回避。继续待在大城市,意味着继续过缺少温度与归属的生活。就像那位朋友说的:没有朋友,没有同学,技术之路越走越窄……但回去可能会面临着其他的烦恼。与另外一朋友闲聊,待在三线城市,公众号收入已经很不错了。但整个城市技术
原创
323阅读
1评论
4点赞
发布博客于 3 月前

slf4j中的桥接器是如何运作的?

关于slf4j源码分析系列,更多精彩内容,请关注公众号“程序新视界”,持续更新中…阅读分析slf4j的日志源码,发现其中涵盖了许多知识点和优秀的设计,关键它们都是活生生的实践案例。写成系列文章与大家分享,欢迎持续关注。第4篇。前言在日志框架slf4j中有一组项目,除了核心的slf4j-api之外,还有slf4j-log4j12、slf4j-jdk14等项目。这一类项目统称桥接器项目,针对不同的日志框架有不同的桥接器项目。在使用logback日志框架时,并没有针对的桥接器,这是因为logback与.
原创
158阅读
0评论
1点赞
发布博客于 3 月前

RocketMQ,同一个topic下是否可以通过不同的tag来进行订阅吗?

针对以上问题,有两个场景:使用阿里云的云服务器的RocketMQ和使用自己搭建的RocketMQ。但无论采用这两种的任何一种,都是可以在同一个topic下,通过tag来进行业务区分的。网上有很多分析相关使用方式的文章,虽然分析的结果都是“不可以”,但我们可以通过其他的一些方案来进行解决。自主搭建的RocketMQ通过自主搭建RocketMQ,然后通过SpringBoot进行集成实现,可以参考在公众号【程序新视界】中的文章《Spring Boot快速集成RocketMQ实战教程》,可关注公众号搜索,也可
原创
803阅读
0评论
1点赞
发布博客于 3 月前

SpringBoot2.x系列教程(六十六)Spring Boot快速集成RocketMQ实战教程

前言RocketMQ是目前主流的消息中间件之一,并且自身就支持分布式功能。最初由阿里巴巴团队开发,并且经历过双十一等海量消息场景的考验,后捐赠给Apache开源基金会,这也是为什么我们经常听说RocketMQ是阿里巴巴的消息中间件,项目却在Apache的顶级项目中。网络上通过SpringBoot集成RocketMQ的教程很多,但大多数都无法做到快速、通用的进行集成。本篇文章带大家快速完成基于Spring Boot的集成使用,同时针对一些集成过程中的概念和使用方法以实例进行讲解。RocketMQ的部署
原创
318阅读
0评论
2点赞
发布博客于 3 月前

slf4j框架源码中是如何实现双重锁的?

阅读分析slf4j的日志源码,发现其中涵盖了许多知识点和优秀的设计,关键它们都是活生生的实践案例。因此专门写成系列文章与大家分享,欢迎持续关注。第1篇。前言阅读源码,必然需要先将源代码下载到本地,本篇为本系列第一篇,因此特意建议大家在阅读本篇文章时看一下配套的源代码(持续更新)。本文章已经将原有的代码fork到笔者的GitHub仓库,后续代码均以fork过来的代码为基准进行讲解。地址:https://github.com/secbr/slf4j好了,本篇文章我们就从使用日志框架最常见的入口类及方法入手
原创
177阅读
0评论
2点赞
发布博客于 3 月前

聊聊一周的启发,关于读书和职场

一周过去了,读了一本书,看了不少文章,将在此过程中的感悟与收获分享给大家。对我自己来说,也是学习知识的汇总和整理。《一往无前》朋友圈多次出现的一本书,花了大概六七个小时读完。可谓十分精彩,看到雷军召集各路人才,共谋大事,作为读者也有一种热血沸腾的感觉。创业的过程是吃别人吃不了的苦,做别人做不了的事,同样成就别人成就不了的梦。在创建小米之时,雷军已是财务自由的状态。然而,为了一个梦想,为了“最后一次创业”,依然奋不顾身奋斗十年。小米的10年就是一群最简单执着的工程师,怀着最简单纯粹的想法,用最简单专注
原创
316阅读
2评论
1点赞
发布博客于 3 月前

一个IDE的提示,引发了对《Java编程思想》的质疑?

前言最近在读slf4j的源码,同时在B站录一套读源码的课程(av:BV1KD4y197Jf),其中一个简单的IDE编码规范的提示,因为多问了几个为什么导致一系列Java基础知识的追踪和验证,最近竟然发现《Java编程思想》书中的内容竟然也有不严谨或者说不一定对的地方。这个追踪问题的答案的过程非常有意思,整合了不少工具、书籍以及Java基础知识。下面我们就来看看到底是什么问题。IDE的提示信息在slf4j的LoggerFactory类中有几个静态方法,方法的修饰为private final stati
原创
326阅读
4评论
2点赞
发布博客于 4 月前

聊聊这些年我们用过的Java日志框架

日志框架是每个系统必备的功能之一,在日常使用当中却往往没有得到应有的重视,要么跟随“前辈”,原来用什么就用什么,要么随便选择一个……甚至还有项目大量使用System.out.println来打印日志……本篇文章带大家来聊聊Java主流的一些日志框架,已经适用的场景。作为相关技术领域的汇总,也作为一项参考资料。主流的日志框架目前主流的日志框架包括以下几种:Log4j、Log4j2;Logback;Slf4j;JCL (Jakarta Commons Logging),也叫Apache Comm
原创
351阅读
0评论
1点赞
发布博客于 4 月前

1024,失业可能只需要10分钟...

今天10月24,程序员的一个节日,而且也是广大程序员越来越重视的一个节日。就聊聊职场中的一些经历和感想。好久未联系的朋友闲聊,朋友说现在的职位压力很大,随之面临被干掉的风险。我说:我也是,现在的职位时刻面临着挑战……其实身在职场,无论是否是程序员,熬到一定层级都是压力重重,负重前行。职场PUA职场PUA这个话题在这两年比较流行,上份工作就面临这样的情况。因为疫情,迫于生活压力,很多人还在陪玩。总经理是销售型领导,忽悠住集团大领导,独掌一家子公司,于是便为所欲为了。每周一次例行晨会,不干别的,就是耍
原创
194阅读
1评论
3点赞
发布博客于 4 月前

SpringBoot下的策略模式,消灭了大量的ifelse,真香!

前言项目中有这样一个场景,在公园放置了用来拍摄人像的识别杆,根据用户在不同识别杆之间采集的图象来计算用户的运动距离。由于涉及到许多公园,每个公园的布局不同,识别杆之间距离不同,算法也不同。但代码中每个不同的公园的算法区别都采用ifelse来进行判断处理。这样的写法你能看得下去吗?肯定不能。所以,就用策略模式对此进行了重构。项目采用SpringBoot架构,于是对不同的策略模式写法又进行了一次升级。现在就以实战的角度带领大家来学习策略模式,以及如何将ifelse重构为基于SpringBoot的策略模式。
原创
601阅读
0评论
1点赞
发布博客于 4 月前

看到SpringBoot神一样集成Druid,我吐了!

原文首发于公众号:程序新视界,欢迎关注。都说尽量不要在外包团队待太久,事实会告诉你一点都不假。最近接手外包团队的项目,发现很多问题。最令人难以接受的便是在SpringBoot集成Druid数据库连接池时的配置,直接废掉,很无语。在写这个坑之前,还是说一下外包团队一个严重的弊端。为了赶工期,团队自身和甲方都不能够很好的保证代码质量。当劣质代码泛滥,又遇上Ctr+C和Ctr+V,救都救不过来。待久了,想写优质代码都难。同时,又有一大堆烂代码等着你去“学”和“抄”,所以有机会赶紧跳出这个恶性循环。好了.
原创
665阅读
2评论
2点赞
发布博客于 4 月前

万字详解logback日志框架,再没这么全的了!

老项目中日志使用混乱,某些项目使用log4j,某些项目使用logback,统一是必须的。既然Spring Boot已经将logback做为默认集成的日志框架,全面了解学习是必然了。曾经log4j是流行的日志框架,现在已被它的继任者logback替代,logback更快,更小,更灵活。当然,如果你的项目中还在用System.out.println()来输出内容,那更是得行动起来,要么“逃”吧,要么改造吧。logback简介先来看看logback何许人也,最直接的就是看看它的官网http://logbac
原创
1135阅读
15评论
15点赞
发布博客于 4 月前

Lombok插件如此不好?但我选择继续使用…

最近发现几个大号都在转载一篇《Lombok是让你代码处于“亚健康”状态的真正元凶》的文章,特意仔细阅读了该文,文中的观点基本上都不敢苟同,个人还是会坚持使用Lombok,除非发现一些安全和性能方面的问题。不清楚大号转载此文是因为没仔细审阅文章内容,还是其他别的原因,但还是有必要写一篇文章表达自己的看法。至于读者是否喜欢Lombok插件,是否在实践中使用,看完本篇文章之后可根据自己的喜好和情况而定。Lombok是什么鬼?很多程序员都在抱怨“Java太啰嗦”或有太多的“繁文缛节”。Java语言架构师Bri
原创
425阅读
0评论
1点赞
发布博客于 4 月前

IDEA中每天都在用的Project Structure,你了解多少?

Idea这款开发工具的便利之一是很多配置项几乎可直接使用默认项。但针对不同的项目难免需要针对性的配置,本文带大家详细的梳理一遍Project Structure中各项功能,注意收藏,以备不时之需。先说一下写本文的缘由,在项目中用Idea中打开一组SpringBoot项目,结果编译的结果和日志输出的地方与预期不一致,于是仔细研究了Project Structure的配置项,发现此处竟然有很多有用的功能,汇总分享给大家。Project Structure即“项目结构”,它几乎涵盖了一个项目所有的个性化的配置
原创
11519阅读
20评论
31点赞
发布博客于 4 月前

SpringBoot2.x系列教程(六十五)SpringBoot扫描其他项目的几种方案

最近接手一套基于SpringBoot项目,对项目进行重构调整,将公共部分抽离成子项目。在实践的过程中,发现抽离之后的模板中组件并没有被初始化。于是将排查解决过程中搜集到的方案及知识汇总分享给大家。问题原因问题的原因很简单,因多套系统的package命名不一致。比如业务系统的包命名为com.abc.xx,而公共(common)部分的包命名为com.efg.xx,引入公共jar包时默认是无法初始化的。对于SpringBoot项目,我们知道扫描的路径从启动类所在包开始,扫描当前包及其子级包下的所有文件。上
原创
573阅读
3评论
2点赞
发布博客于 4 月前

SpringBoot2.x系列教程(六十四)SpringBoot基于jar包启动核心原理及流程详解

得益于SpringBoot的封装,我们可以只通过jar -jar一行命令便启动一个web项目。再也不用操心搭建tomcat等相关web容器。那么,你是否探究过SpringBoot是如何达到这一操作的呢?只有了解了底层实现原理,才能更好的掌握该项技术带来的好处以及性能调优。本篇文章带大家聊一探究竟。打包的核心方法Spring Boot项目的pom.xml文件中默认使用如下插件进行打包:<build> <plugins> <plugin>
原创
300阅读
0评论
1点赞
发布博客于 4 月前

聊聊面试培训机构学员的感受

前段时间公司招聘运维工程师,筛选了近百份简历,面试了几十个人,结果真是大跌眼镜,一直想写文章聊聊这事。昨天《人物》公众号的文章《底层程序员,出局》,通过故事的形式把培训机构批量生产一批底层程序员的过程刻画的入木三分。培训机构的竞争几乎白热化,不惜标准化造假。感兴趣的朋友可去读读原文,这里只以一个企业面试官的角度来说说自己的感受,尽量不带过多的价值判断。让面试官自惭形秽的简历作为一个十年的老程序员,虽然更多的时间是在写代码,但运维的事也了解的七七八八。公司准备招聘一个两年左右的运维工程师,筛选简历时发
原创
2274阅读
7评论
3点赞
发布博客于 4 月前

聊聊信任:衣服掉地上会脏的

国庆过后的第一个周末只休息一天,早上发现电脑无法充电,无法开机。于是踏上了四处奔走排查修理电脑之路,毕竟第二天上班还要用的。衣服掉地上会脏的九点多的龙德广场大多数商铺还没开门,奔走之时听到一位母亲正在怒斥五岁左右的儿子。事情的经过大概是这样的:母亲带着儿子逛商场,儿子看到锁着栅栏的店铺里一件衣服掉在了地上。于是手伸到里面想把衣服拿起来放在衣架上。母亲看到就一把扯过儿子,吼道:你动人家的衣服干嘛,你知不知道别人会以为你在偷衣服……儿子辩解道:衣服掉地上会脏的……作为一个成年人,社会已经教育我们遇
原创
559阅读
6评论
1点赞
发布博客于 4 月前

【JVM】Int类型在栈中是否会被缓存?

在写面试题系列文章中,多次涉及到JVM的内存分布情况,以及方法执行的过程中局部变量的存储变化情况。比如,在此前已经讲解过字符串常量池的初始化及使用情况。前些天一位粉丝加微信好友,询问关于int类型的一张存储结构图,主要是对int类型在方法执行的过程中是否存在缓存的情况有疑问。在交流、探讨的过程中收获很多相关知识。本篇文章就汇总分享一下。int类型的是否会被缓存首先看下图(其他公众号文章获得),图中显示int类型在栈中会被复用。针对引用类型我们知道栈中只存储引用地址,而对应的值存储在堆中,这没什么问
原创
714阅读
1评论
1点赞
发布博客于 4 月前

十一假期,终于过上了理想的生活节奏

十一假期已基本结束,如果用一句话总结这个假期,可以说:终于过上了自己想过的生活节奏。就个人而言,生活的节奏变得越来越简单。当说这句话时,有朋友玩笑道:这说明你老了。多么残酷的真相!这里我用的是“简单”而不是“单调”。简单是在说不需要太多外在的物质来让自己感到满足,“一箪食,一瓢饮,在陋巷”足矣。而单调更多的是在说比较乏味,没有色彩。能够让我满足的生活节奏基本上就是:读读书,写文章,偶尔约朋友闲聊,品尝一些美食,获得一些新技能……这个假期基本上都满足了。说说读书假期其实是最好的读书时间,不用再争分夺
原创
2586阅读
6评论
1点赞
发布博客于 4 月前

从零开始学习 JD Chain(四)-使用穿透式检索

注意: 要想使用穿透式检索,必须首先部署好JDChain并且安装启动高级检索应用。也就是首先要完成:“从零开始部署JDChain”和“从零开始安装穿透式检索”这两篇文章的内容。前置安装:Gateway版本: jdchain-gateway-1.1.2.RELEASEArgus版本: argus-0.8.4-RELEASEJdchain-starter版本: Tag=1.0.61. 操作步骤1.1. 通过sdk新建数据账户可根据JDChain的sdk样例自行构建,也可通过:
原创
1199阅读
0评论
0点赞
发布博客于 4 月前

推荐一款超级好用的开源项目画图工具

在项目开发的过程中需要各种类型的图来进行支撑,比如用例图、系统架构图、时序图、类图、E-R图,甚至项目管理的甘特图等等。为了画这些图我们往往需要寻找各类付费、免费的软件进行操作。今天给大家推荐一款开源的软件,可以画项目中几乎常用的各类图。最关键的是开源免费,支持各类操作系统,而且还在持续更新当中。这款软件GitHub项目名叫drawio-desktop,对应地址为:https://github.com/jgraph/drawio-desktop。官方网址为:https://www.diagrams.n
原创
5965阅读
12评论
34点赞
发布博客于 4 月前

从零开始安装穿透式检索

1. 什么是穿透式检索1.1. 当前的检索传统的检索通过关键字搜索相关结果,并根据关联度进行排名,之后根据得到的结果中进行整理,获得最终结果,但最终结果并不能保证是需要的结果。1.2. 穿透式检索穿透式检索直接检索需要的数据,不需要人脑再次整理,可以参考Google OneBox的概念。穿透式检索因为其结果的精确,可以为大数据和人工智能提供准确的素材,进而帮助大数据和人工智能获得更加准确的结果。1.3. 为什么区块链需要穿透式检索区块链数据是严谨的业务数据,对业务数据的分析有利于业务的增强。当
原创
1584阅读
0评论
2点赞
发布博客于 5 月前

聊聊近况,说说新工作

留意本公众号的朋友可能会发现最近两周文章更新频次低了,甚至最近一周都没更新文章了。原因只有一个:忙新工作,而且是那种比较充实的忙,就无暇顾及了。在此表示抱歉。来新公司刚刚两周,一切都是重新开始,新的系统、新的人、新的业务……这些新事物激发了我的潜力和斗志,很忙很充实的半月。甚至有时都在想,积攒了十年的能量是不是要在这家公司爆发释放了。在上家公司,每天朝九晚六,按点上班,准点排队打卡下班。每天最重要的事情可能就是想想晨会该说点啥,日报该咋写,技术评审该咋说服领导。看着其他朋友都在不断打怪升级,这安逸让人有
原创
2255阅读
3评论
3点赞
发布博客于 5 月前

为什么StringBuilder是线程不安全的?

在前面的面试题讲解中我们对比了String、StringBuilder和StringBuffer的区别,其中一项便提到StringBuilder是非线程安全的,那么是什么原因导致了StringBuilder的线程不安全呢?原因分析如果你看了StringBuilder或StringBuffer的源代码会说,因为StringBuilder在append操作时并未使用线程同步,而StringBuffer几乎大部分方法都使用了synchronized关键字进行方法级别的同步处理。上面这种说法肯定是正确的,对照
原创
13291阅读
3评论
25点赞
发布博客于 5 月前

面试题系列第8篇:谈谈String、StringBuffer、StringBuilder的区别?

《Java面试题系列》:一个长知识又很有意思的专栏。深入挖掘、分析源码、汇总原理、图文结合,打造公众号系列文章,面试与否均可提升Level。欢迎持续关注【程序新视界】。第8篇。关于字符串的面试题除了内存分布、equals比较,最常见的就是与StringBuffer和StringBuilder之间的区别了。如果你回答:String类是不可变的,StringBuffer和StringBuilder是可变类,StringBuffer是线程安全的,StringBuilder则不是线程安全的。就上面的总结而.
原创
1895阅读
0评论
5点赞
发布博客于 5 月前

几乎所有的成功都是厚积薄发

曾经有很长一段时间处于焦虑状态,焦虑什么?焦虑自己不够成功,不够优秀。想必大家都会有这样一个时刻:看到周围的人不断的进步,不断的取得成就,而自己一直处于碌碌无为的状态。于是想做些事情进行改变,但发现要做的太多了,要补的太多,最终还是去刷会儿抖音比较开心。优秀是动态的随着年龄的增长,随着对一些事物底层逻辑的分析和思考,发现成功这事还真是得慢慢来。着急没用,着急只会有两个结果:放弃或焦虑。在想获得成功之前,我们首先要明白一个道理:成功和优秀都是动态的。也就是说无论你现在处于什么状态,只要肯去改变,而且
原创
4522阅读
7评论
12点赞
发布博客于 5 月前

JVM的Xms和Xmx参数设置为相同值有什么好处?

最近正在重新学习JVM的内存结构及相关优化内容,无意中看到IDEA的VM配置(安装时默认配置)中有如下的配置:# custom IntelliJ IDEA VM options-Xms2048m-Xmx2048m看到Xms和Xmx的一样,是不是稍微有些奇怪?这里就写篇文章分析一下,JVM的Xms和Xmx参数设置为相同的值有什么好处?首先来了解一下相关参数的概念及功能。Xms和Xmx参数定义在启动Java应用程序时,我们通常可以通过参数Xms和Xmx来配置JVM的堆信息。不配置虽然会有默认值,
原创
1812阅读
1评论
5点赞
发布博客于 5 月前

面试题系列第7篇:Java方法到底是值传递还是引用传递?

《Java面试题系列》:一个长知识又很有意思的专栏。深入挖掘、分析源码、汇总原理、图文结合,打造公众号系列文章,面试与否均可提升Level。欢迎持续关注【程序新视界】。本篇为第7篇。要点:Java方法到底是值传递还是引用传递?这个问题一直在技术讨论区争论不休。对于初级人员来说很具有迷惑性,即便对于很多高级开发来说,也搞不清楚。本篇文章就带大家探究一下底层的原理,最终化繁为简,让大家通过一两句话就明白到底是值传递还是引用传递。面试题常见面试题,执行以下代码,查看对应的打印结果:@Testpub.
原创
426阅读
0评论
1点赞
发布博客于 5 月前

面试题系列第6篇:JVM字符串常量池及String的intern方法详解?

《Java面试题系列》:一个长知识又很有意思的专栏。深入挖掘、分析源码、汇总原理、图文结合,打造公众号系列文章,面试与否均可提升Level。欢迎持续关注【程序新视界】。本篇为第6篇。关于字符串的比较在前面文章中已经详解过,本篇文章基于字符串常量池的存储及在使用intern方法时所引起的内存变化进行一步深层次的讲解。重点内容:当字符串调用intern方法后,再进行字符串的比较,会发生什么变化?本文内容均以HotSpot虚拟机为基础讲解。面试题先通过一个面试题形象的了解一下我们本篇文章要讲的内容的.
原创
429阅读
0评论
3点赞
发布博客于 6 月前

从零开始学习 JD Chain(二)- JD Chain 区块链浏览器

在上一篇“从零开始部署JD Chain”的文章中,我们已经搭建好了JD Chain的区块链使用环境。本篇将对JD Chain区块链浏览器(下简称:区块链浏览器)进行全面的介绍,方便用户通过区块链浏览器来直观的查看JD Chain的整体情况。本文提及的搜索,都依赖于数据检索服务。数据检索服务可以根据相关地址和公钥的部分信息来进行模糊查询。如果用户需要查看搜索的效果,需要事先搭建数据检索服务,具体可参见:http://ledger.jd.com/argus.html。1. 区块链浏览器介绍1.1. 首页
转载
287阅读
0评论
2点赞
发布博客于 6 月前

面试题系列第5篇:JDK的运行时常量池、字符串常量池、静态常量池,还傻傻分不清?

《Java面试题系列》:一个长知识又很有意思的专栏。深入挖掘、分析源码、汇总原理、图文结合,打造公众号系列文章,面试与否均可提升Level。欢迎持续关注【程序新视界】。本篇为第5篇。【番外篇】本篇核心:JDK各个版本中JDK的运行时常量池、字符串常量池、静态常量池的功能及存储位置。在写本系列文章时,发现一旦追究起底层实现都会涉及到一些内存结构的问题。其中涉及比较多的便是常量池,本篇文章汇总一下JDK的运行时常量池、字符串常量池、静态常量池的功能及存储结构。JVM运行时内存结构在了解常量池之前我们.
原创
546阅读
0评论
1点赞
发布博客于 6 月前

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《面试题系列第4篇:重写了equals方法,为什么还要重写hashCode方法?》, 一起来围观吧 https://blog.csdn.net/wo541075754/article/details/108268839

 
发布Blink于 6 月前

面试题系列第4篇:重写了equals方法,为什么还要重写hashCode方法?

《Java面试题系列》:一个长知识又很有意思的专栏。深入挖掘、分析源码、汇总原理、图文结合,打造公众号系列文章,面试与否均可提升Level。欢迎持续关注【程序新视界】。本篇为第4篇。核心问题:重写了equals方法,为什么还要重写hashCode方法?这不仅仅是一道面试题,而且是关系到我们的代码是否健壮和正确的问题。在前面两篇文章涉及到了equals方法的底层讲解:《说说==和equals的区别?你的回答可能是错误的》和《Integer等号判断的内幕,你可能不知道?》。本篇文章,带大家从底层来分析.
原创
1219阅读
1评论
6点赞
发布博客于 6 月前

面试题系列第3篇:Integer等号判断的内幕,你可能不知道?

《Java面试题系列》:对面试题中经典内容进行深入挖掘,分析源码、汇总原理,形成公众号系列文章,面试与否均可提升技能。欢迎大家持续关注【程序新视界】。本篇为系列第3篇。面试过程中关于Integer的比较“==”的问题内容层出不穷,但无论怎么变化,只要了解了其中的底层原理,马上就可以得出答案,再也不用死记硬背考题了。《阿里巴巴Java开发手册》中有这样一项强制要求:“所有整形包装类对象之间值的比较,全部使用equals方法比较。说明:对于Integer var= ?在-128到127范围内的赋值,.
原创
455阅读
0评论
1点赞
发布博客于 6 月前

从零开始学习 JD CHAIN(一)- 快速部署 JD CHAIN

此文章系列计划记录本人从零开始学习JD Chain的历程,因为是从零开始,理所当然会有许多理解不够深入的地方,还望各位同好及时指正错误,共同成长。不定期更新,但尽量坚持下去,分享文章也是想立个Flag,让大家监督我的学习进度。JD Chain 是京东区块链开发团队自主研发的,专门为企业应用设计的区块链框架系统,适用多种通用业务场景。不同于超级账本(Hyperledger Fabric)生态和企业级以太坊联盟(Enterprise Ethereum Alliance,EEA),JD Chain 拥有完全的自
转载
387阅读
0评论
2点赞
发布博客于 6 月前

面试题系列第2篇:new String()创建几个对象?有你不知道的

Java面试题系列:将面试题中比较经典和核心的内容写成系列文章持续在公众号更新,可巩固基础知识,可梳理底层原理,欢迎大家持续关注【程序新视界】。本篇为面试题系列第2篇。常见面试问题下面代码中创建了几个对象?new String("abc");答案众说纷纭,有说创建了1个对象,也有说创建了2个对象。答案对,也不对,关键是要学到问题底层的原理。底层原理分析在上篇文章《面试题系列第1篇:说说==和equals的区别?你的回答可能是错误的》中我们已经提到,String的两种初始化形式是有本质区别的。
原创
538阅读
0评论
1点赞
发布博客于 6 月前

面试题系列第1篇:说说==和equals的区别?你的回答可能是错误的

最近准备再刷刷面试题,将面试题中比较经典和核心的内容写成系列文章发表在公众号中,巩固基础知识,分享给大家,欢迎大家持续关注【程序新视界】。下面是本系列第1篇。大多数面试的第一题不是让说说面向对象,就是关于字符的。本篇文章就从各方面来聊聊“==和equals的区别”。概念上的区别针对字符串(注意仅限字符串)的比较,==和equals的区别有以下两点:(1)"=="是判断两个变量或实例是不是指向同一个内存空间。(2)"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。单纯从抽象的概念
原创
460阅读
0评论
2点赞
发布博客于 6 月前

对照Google评分卡,看看你的技术水平在什么段位?

浏览技术文章时,读到一个评判技术能力的标准:“Google评分卡”。它对技术人员的能力从0到10划分了11个等级,看完这个评分卡,真切感受到每个技术人都应该进行一次自我评估:对照一下自己所处的位置,下一步又要迈向哪个等级。Google评分卡的来自Google的SRE。为了保证稳定可靠的服务,Google组建了一支专业的团队来负责运行后端服务,参与的工程师有一个共同的名字:Site Reliability Engineer。对此,资深Google SRE Chris Jones等人联合撰写了《Google
原创
1059阅读
0评论
2点赞
发布博客于 6 月前

SpringBoot2.x系列教程(六十三)基于Spring Boot快速实现发送邮件功能

邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。邮件协议下面先简单了解一下常见的邮件协议。常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。SMTP协议SMTP的全称是 “Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址
原创
1659阅读
1评论
10点赞
发布博客于 6 月前

SpringBoot2.x系列教程(六十二)SpringBoot集成ActiveMQ实例详解

在项目开发的过程中我们经常会遇到类似的业务场景:用户申请提现,后台进行账务处理、发送提现短信、调用银行打款通道。在这个过程中调用三方通道(短信或银行通道)都比较耗时,同时账务处理可能也是由专门的账务系统进行处理。那么,为了提高并发和相应速度,后面的三个操作都可以通过异步进行处理。这就用到了消息队列。消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。市面上比较常见的消息队列有:ActiveM
原创
1671阅读
4评论
9点赞
发布博客于 6 月前

为什么很多成功的企业家都有工程师背景?

刚刚读完了《投资异类》,一本非常不错的书,将其中的一些精彩笔记及思考分享给大家。读这本书的原因是在朋友圈看到有人推荐,而读的过程中将其中的一些精华内容分享在朋友圈,也引起了不少朋友的询问:这是哪本书的内容?这本书正如作者自己所说,它不仅仅是在讲投资,也是在讲人生哲学。而对于我来说,它更是对如何去选择创业项目,如何去自我提升等方面给予了指导方向。重要的是,书中的一段内容解答了困惑我很久的疑惑:为什么很多成功的企业家都有工程师背景?下面是精华摘要部分:时间管理时间有限而壮志无限,我们该如何管理好自己
原创
482阅读
1评论
1点赞
发布博客于 6 月前

Maven配置多仓库无效?来看看这篇文章

在项目中使用Maven管理jar包依赖,往往会出现以下状况:1、国内访问maven默认远程中央镜像特别慢;2、使用阿里的镜像替代远程中央镜像;3、阿里云镜像中缺少部分jar包;4、同时使用私有仓库和公有仓库;针对以上情况,我们就需要让Maven支持多仓库配置。单独仓库配置当只配置一个仓库时,操作比较简单,直接在Maven的settings.xml文件中进行全局配置即可,以阿里云的镜像为例:<mirrors> <mirror> <id>
原创
1518阅读
0评论
3点赞
发布博客于 7 月前

Spring Boot启动slf4j提示找不到weblogic.xml日志异常

启动Spring Boot项目时,会遇到如下关于slf4j相关的日志异常情况,导致项目无法启动。相关异常信息如下:Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (c
原创
1616阅读
0评论
1点赞
发布博客于 7 月前

6个实例详解如何把if-else代码重构成高质量代码

为什么我们写的代码都是if-else?程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个if-else,可随着代码逻辑不断完善和业务的瞬息万变:比如需要对入参进行类型和值进行判断;这里要判断下对象是否为null;不同类型执行不同的流程。落地到具体实现只能不停地加if-else来处理,渐渐地,代码变得越来越庞大,函数越来越长,文件行数也迅速突破上千行,维护难度也越来越大,到后期基本达到一种难以维护的状态。虽然我们都很不情愿写出满屏if-else的代码,可逻辑上就是需要
转载
416阅读
0评论
2点赞
发布博客于 7 月前

Linux执行tar解压报错tar: Error is not recoverable: exiting now

Linux操作系统下,下载完成xx.tar.gz文件然后执行tar -zxvf xx.tar.gz,执行出现如下错误:3.4.10/src/java/test/org/apache/zookeeper/test/QuorumUtil.java tar: 归档文件中异常的 EOF tar: 归档文件中异常的 EOF tar: Error is not recoverable: exiting now解决方案有两种。方案一:去掉解压参数中的z,执行命令改为:tar -xvf xx.tar.gz。该方案
原创
4569阅读
1评论
2点赞
发布博客于 7 月前

SpringBoot2.x系列教程(六十一)Spring Boot集成FastDFS实现文件上传

针对有比较多的视频、图片或文件的网站,文件上传和存储是必不可少的。在《文件管理系统FastDFS原理详解》一文中介绍了FastDFS相关的原理。在《FastDFS基于Docker安装,免踩坑版》一文中介绍了基于Docker的安装。这篇文章带领大家来基于Spring Boot集成FastDFS,并实现上传和访问的功能。客户端FastDFS官方提供了一个Java版本的客户端,地址为:https://github.com/happyfish100/fastdfs-client-java但该客户端有几个问
原创
691阅读
0评论
2点赞
发布博客于 7 月前

如何发布自己的项目到Maven中央仓库?

在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。此时如果你有一个开源项目,那么如何将该开源项目发布到Maven中央仓库,让其他人可以方便的使用,而不是先下载jar,然后install的本地?本文将通过一步步的操作带领大家讲自己的开源项目发布到Maven中央仓库(Maven Central Repository)中,https://mvnrepository.com/。Maven中央仓库并不支持直接发布jar包,需要将jar包发布到
原创
536阅读
0评论
1点赞
发布博客于 7 月前
FastDFS基于Docker安装
发布Blink于 7 月前

FastDFS基于Docker安装

暂且不说Docker在生产环境的性能如何,单就在学习新技术的过程中能够快速构建环境这一项来说,就值得推荐你尝试使用。本文带大家基于Docker来安装FastDFS服务。即便你对FastDFS的安装不感兴趣,也可以学习一下Docker安装软件的过程(基本通用),是提高学习效率的法宝之一。如果想补习一下FastDFS的原理,请参考《文件管理系统FastDFS原理详解》,有助于下面内容的理解和学习。Docker安装FastDFS关于Docker的安装不同的操作系统有不同的安装方法,这里就不再赘述,默认你的
原创
879阅读
0评论
4点赞
发布博客于 7 月前
谈谈如何防止抑郁?
发布Blink于 7 月前
文件管理系统FastDFS详解
发布Blink于 7 月前

文件管理系统FastDFS详解

什么是FastDFS很多以文件为载体的在线服务,如相册网站、视频网站等,都需要对文件进行管理,包括文件的存储、同步、访问(文件上传、文件下载)等,同时肯定会伴随着大容量存储和负载均衡的问题。在日常的一些项目中,比如做用户的KYC认证等,也需要存储文件、图片、视频等。此时可以选择使用OSS云服务,也可以自己构建相对专业的文件管理系统。FastDFS是一个开源的轻量级分布式文件系统,用于解决大数据量存储和负载均衡等问题,并需要通过专有API进行访问。满足大容量文件存储问题,并保证高性能和高扩展性。它能够很
原创
1019阅读
0评论
3点赞
发布博客于 7 月前

谈谈如何防止抑郁?

生活节奏越来越快,社会或家庭压力越来越大,发现身边不少朋友都有那么点抑郁情绪。最近读到两方面的资料,感觉可能会帮到有需要的朋友。产生抑郁的原因很多,通常表现为情绪低沉,整日忧心忡忡,对自我才智能力估计过低,对周围困难估计过高。曾少在一篇文章中提到导致抑郁的一种原因:长时间思考,不去行动,人会转而向内进行自我攻击,就是把所有责任,统统归咎到自己身上。你是否有这样的经历:原本计划好好学习,结果刷了一天的抖音,晚上睡觉时感觉特空虚,甚至陷入深深的自责,觉得自己怎么这么差劲?这就是自我攻击的一种表现。久而久
原创
459阅读
0评论
1点赞
发布博客于 7 月前

你了解世界上功能最强大的开源数据库吗?

如果不是领导强制要求,可能根本不会留意到这款号称世界上功能最强大的开源数据库——PostgreSQL。如果你不读这篇文章,或许也会错过一个跃跃欲试想挤进前三的优秀数据库。为了能够熟练运用,特意买书研究,发现这款数据库还真有点意思。汇总一篇文章与大家分享,目的只有一个:让大家多少了解一下这款数据库。你会发现与Mysql相比,PostgreSQL的社区并不活跃,中文资料可以说是少得可怜,在数据库中排行老四。前三都不一定全用过,谁会去记住老四呢。但下面的数据不得不让我们留意。下面是DB-Engines数据库
原创
462阅读
0评论
2点赞
发布博客于 7 月前
如此行事的人怎能不优秀?
发布Blink于 7 月前

如此行事的人怎能不优秀?

在写这篇文章时,我是满怀感激与赏识之情的。来夸一个人,讲一个道理,写给大家,也是写给自己。来自读者的反馈先说说事情的经过。新书出版之后,昨天第一次看到(抱歉看到的比较晚)读者的反馈。所谓反馈就是在书中留了GitHub的地址,如果书中有错误的地方,读者可以通过该链接提交Issues(问题),来进行反馈。如果能够收到读者的反馈意味着:读者认真读了书,发现了问题,并热衷于帮忙,找到了反馈链接,再把问题描述出来……有这样一位读者的出现,对作者来说是最欣慰的事了:我的书帮到了他,而他也愿意来互动,一起改进
原创
1853阅读
5评论
3点赞
发布博客于 7 月前