- 博客(71)
- 收藏
- 关注
原创 Spring Boot 2.3 支持分层 Jar包、优雅停机、完美支持 Docker/k8s 了,赶紧跟我一起来尝鲜儿
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。Spring Boot 2.3 已经发布两个月了,这两天才想起来尝一尝鲜儿。除了常规的升级外,很大部分的升级是针对 Docker 的,让你不得不相信,Docker 容器化微服务已然大势所趋。还没有用过的同学,再不下手就晚了。此次升级主要包括如下几个方面,接下来就跟着我一起来尝一尝吧。准备工作.
2020-07-08 09:46:52 814
原创 看完这一篇 7000 字 HashMap,跟面试官扯皮没问题了
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。这是上篇文章 有趣的条漫版 HashMap,25岁大爷都能看懂 的文字版。有不少同学说条漫版的比较有意思,简单易懂,但是毕竟图片画不了那么详细,只能从大面而上理解。真正的了解细节,还得看这一篇。其实是这篇先写完,然后画了不少图片,所以就写了一篇图片版的。本篇 7000 多字,建议三连呦。在 Ja.
2020-06-23 10:03:24 3387 10
原创 终于知道公钥、私钥、对称、非对称加密是什么了
加密就是通过一种方式将一个显而易见的东西变成难以理解的东西。比如这儿有个字符串“我真棒”,这三个字儿要摆在你面前不是一眼就知道我很棒了吗。但是我要给你看这样一串东西呢?你还能一下子知道是什么意思吗?其实这还是那三个字,只不过是经过加密的密文,只有知道了加密的方法才能还原出来,也就是解密。首先买一本叫做《人间清醒》的书;然后按照逗号分隔,每一个逗号分隔开的表示一个字;然后每一组是三个数字,第一个数字表示所在页,第二个数字表示所在行,第三个数字表示所在列(第几个字),所以232 10 5。
2023-12-13 10:18:22 399
原创 什么时候用 Runnable?什么时候用 Callable ?
Runnable在java.lang这个包下,而当JDK1.5发布的时候,新加入的Callable被安置在了这个包下,这是 Java 里有名的并发编程相关包,各种锁啊、多线程工具类啊,都被放在这个包下。按道理,Runnable也应该在这里才对。可见再厉害的项目也是随着项目的扩大而慢慢的规划,而前期的一些看似不太合理的地方,只能做兼容和妥协。
2023-12-13 10:16:37 801
原创 差生文具多系列之最好看的编程字体
📢 声明:🍄🌍 作者主页:【⚠️ 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正,不胜感激。直达博主:「(搜索或点击扫码)对于我们程序员而言,每天面对时间最长的就是各种 IDE 了。选择一款好看的编程字体就变得很重要了,赏心悦目,对身心健康还是很有帮助的,可能吧。如果你现在还在使用默认的字体,或者随便用的,那可以考虑一下下面这三款字体。没准换上之后,心情一好,还能少写俩 bug 呢。
2023-12-12 09:52:14 1580
原创 「差生文具多系列」推荐两个好看的 Redis 客户端
📢 声明:🍄🌍 作者主页:【⚠️ 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正,不胜感激。直达博主:「(搜索或点击扫码)软件推荐时间到,推荐两款我常用的 Redis 客户端,都是免费的,且支持Mac、Windows,如果你之前的 Redis 客户端用的不顺手,可以试试下面这两个。
2023-12-12 09:47:41 798
原创 当接口要加入新方法时,我后悔没有早点学设计模式了
通过适配器模式和策略模式,我们即可以保证具体的实现类实现共同的接口或继承共同的基类,同时,又能在新增功能(方法)的时候,尽可能的保证设计的清晰。不像之前那种破罐子破摔的方式,接口和实现类几乎脱离了关系,每个实现类,各玩儿各的。推荐阅读➿剑走偏锋,无头浏览器是什么神奇的家伙➿新项目决定用 JDK 17了➿5000字,10张图,完全掌握 MySQL 事务隔离级别。
2023-12-11 11:23:59 79
原创 如何用Docker快速搭建本地开发环境
第一次可能比较慢,熟悉了之后就非常快了,比你在本地直接安装配置要快的多,而且一些软件安装配置起来非常繁琐,会浪费很多不必要的时间。还有很多开源的框架、应用提供docker版本,掌握了这个方法后,可以很快的安装这些框架、应用来验证和使用,用户体验直接上升一个数量级。推荐阅读➿剑走偏锋,无头浏览器是什么神奇的家伙➿新项目决定用 JDK 17了➿5000字,10张图,完全掌握 MySQL 事务隔离级别。
2023-12-11 11:21:34 593
原创 前端同事最讨厌的后端行为,看看你中了没有
有前端的朋友曾经问过我,他说,他们现在做的系统中有些接口是根据用户身份来展示数据的,但是前端调用登录接口登录系统后,在调用其他接口的时候,除了在 Header 中加入 token 外,还有传很多关于用户信息的很多参数,这样做是不是不合理的。假设在一个详情页面,以前端的角度就是,我获取详情信息,就调用详情接口好了,为什么调用详情接口之前,要调用3、4个其他的接口,你详情里需要啥参数,我直接给你传过去不就好了吗。就想着,万一接口有问题,别人可能会怀疑你水平不行,你水平不行,就是你不行啊,程序员怎么能不行呢。
2023-12-10 14:27:26 117
原创 彻底理解零拷贝,看这一篇就够了
问题出来数据拷贝和模态切换上。但既然是 I/O 操作,不可能没有数据拷贝的,只能减少拷贝的次数,还有就是尽量将数据存储在离应用程序(用户缓冲区)更近的地方。而区分用户态和内核态有其他更重要的原因,不可能单纯为了 I/O 效率就改变这种设计吧。那也只能尽量减少切换的次数。零拷贝的理想状态就是操作数据不用拷贝,但是显示情况下并不一定真的就是一次复制操作都没有,而是尽量减少拷贝操作的次数。尽量减少数据在各个存储区域的复制操作,例如从磁盘缓冲区到内核缓冲区等;
2023-12-10 14:23:26 4277
原创 Nacos 配置加密功能也太鸡肋了吧,有种更好的方式
当项目中用了 Nacos 做配置中心,是不是所有的配置都放到里面呢,大部分时候为了省事和统一,系统所有的配置都直接放在里面了,有时候,会包括一些账号、密码、秘钥等信息。这时候你们的项目是怎么处理的呢?一种方式,不管它,反正 Nacos 有密码,如果 Nacos 都被攻破了,那也没办法。还有一种方式,这些涉及到密码、秘钥的信息放到本地环境变量中,这种方式虽然也还算方便,但是管理起来就不是很统一了。
2023-12-09 14:53:24 1163 1
原创 程序员的职业连续性就那么重要吗?
年初的时候时候一个同学跟我聊天说起最近面试的经历。说投了不少简历,但是面试的机会不多,而且有的负责照片的 HR 直接跟他说:“你的工作连续性不达标,无法安排面试”。是因为去年他家里有些事情就辞职了,在老家呆了将近一年。结果今年找工作的时候,被面试的 HR 各种盘问。为什么将近一年的时间没有工作经历?这一年的时间都在干什么?结果前两天,看到一位前端自由职业者发帖,说自己最近面试的经历,也提到了工作连续性的问题。
2023-12-09 14:49:52 195
原创 AI带火的向量数据库到底是什么?
向量数据库,顾名思义,存储的内容是向量。那什么又是向量呢?我们最早接触向量应该是在数学里面,例如一个二维的向量用(x,y)表示在x轴和y轴的值,用(x,y,z)表是在x轴、y轴和z轴的三维向量。还可以有更多的维度表示多维向量。向量数据库应用最多的场景就是相似度搜索,就是根据用户的一个输入匹配出几个相似度最高的结果。有点儿像模糊查询或者全文检索的意思,但是原理又不一样,全文检索的核心技术应该是分词+索引 ,而向量数据库是向量化(Embedding)+索引。
2023-12-08 18:48:10 248
原创 当你还在纠结用什么技术时,这位独立开发者用PHP和JavaScript实现财务自由了
一个个人产品卖了5400万,这大概就是最成功的独立开发者了吧这位独立开发者是 levelsio,他的真名是 Pieter Levels,是一位荷兰的独立开发者。看看人家的工作状态,躺在沙发上写代码,果然财务自由之后就真的自由了。听说最近有一个产品作家 5400 万美元卖掉了。
2023-12-08 18:43:15 1471
原创 就一个css的bug,害我找了大半天儿
事情是这样子的,我前两天用 Hugo 搭了一个个人网站,我添加了几个菜单,其中有一个菜单是「可爱的 Java」。但是,当网站跑起来之后,发现「可爱的 Java」在菜单栏并不是原样输出的,而是变成了「可爱的 JAVA」,英文变成了大写的,就像下面这个样子的。哦,对了,我的网站是。
2023-12-07 21:49:26 80
原创 新项目决定用 JDK 17了
最近在调研 JDK 17,并且试着将之前的一个小项目升级了一下,在测试环境跑了一段时间。JDK 1.8:“不是说好了,他发任他发,你用 Java 8 吗?不光是我呀,连 Spring Boot 都开始要拥护 JDK 17了,下面这一段是 Spring Boot 3.0 的更新日志。Spring Boot 3.0 需要 JDK 的最低版本就是 JDK 17,如果你想用 Spring Boot 开发应用,你需要将正在使用的 Java 8 或 Java 11升级到 Java 17。
2023-12-06 10:12:05 1461
原创 10年前,我就用 SQL注入方式发现了学校网站的漏洞
SQL注入,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。SQL 注入一般发生在用户交互场景中,比如需要用户自已输入信息的输入框,或者下拉选择选项的这种,如果不做好输入内容的过滤,就很可能发生 SQL 注入。就拿这个登录界面来说,用户名和密码都是你要输入的内容,点击登录按钮之后,会把你输入的值传递到服务端,服务端再到数据库进行查询。
2023-12-05 11:46:16 310
原创 JDK21你可以不用,新特性还是要了解的
不管怎么升级,还是有很多公司、很多人会持续用 Java 8的,毕竟技术服务于业务,业务稳定才是根本。应该很快从 Java 8 升级到更高版本的团队和个人会越来越多,毕竟相比 8 而言,新版本有了更多的新特性,支持的场景更多,而且性能也更好了。有没有用高于 Java 8 版本的同学,上来举个手。
2023-09-22 09:52:57 2734
原创 剑走偏锋,无头浏览器是什么神奇的家伙
关于浏览器还有一个很好玩儿的梗,对于一些对计算机、对互联网不太了解的同学,你跟他说浏览器,他/她就默认是百度了,因为好多小白的浏览器都设置了百度为默认页面。所以很多小白将浏览器和搜索引擎(99%是百度)划等号了。浏览器里我百分之99的时间都是用 Chrome,不过有一说一,这玩意是真耗内存,我基本上是十几、二十几个的 tab 开着,再加上几个 IDEA 进程,16G 的内存根本就不够耗的。
2023-06-14 15:05:46 777
原创 JDK21要来了,并发编程更加丝滑了
目前 Java 的最新稳定版是 JDK 20,但这是个过渡版,JDK21就是 LTS 版的了,也快要发布了,在今年9月份(也就是2023年9月)就要正式发布了。但是,猜都不用猜,你肯定还在用 Java 8 吧!
2023-06-14 14:55:30 866
原创 用了这么久 IDEA,你还没用过 Live Templates 吗?
有时候我们经常会高频词的使用一段相似的代码, 比如做网络开发的同学,会经常用到 Socket 相关的初始化代码。对于这种我们自己经常要写的某些类似的代码段,就可以抽取出一个 Template 出来,方便我们使用。下面我就实现一个自定的 Template,来看一下是不是大大简化了重复性劳动。有的同学可能觉得无所谓的事儿,复制、粘贴也挺省事儿。见仁见智吧,觉得有用的可以尝试一下,觉得鸡肋的也无所谓,反正也不影响最后的功能实现。比如我最新在做一些系统优化的工作,这个过程中,我会频繁的用的StopWatch。
2023-01-10 10:09:13 384
原创 过两年 JVM 可能就好被 GraalVM 替代了
虽然我们还没有看到有哪个公司说在用 GraalVM 了,但是Quarkus、、Spring等很多的框架都已经支持 GraalVM 的 Native-image 模式,而且在 Orcale 的大力推广下,相信不久之后就会出现在更多的产品中。赶紧体验一下吧。如果觉得还不错的话,给个赞吧!
2022-12-16 09:43:18 2843 1
原创 MySQL 全文检索的实现
这有朋友聊到他们的系统中要接入全文检索,这让我想起了很久以前为一个很古老的项目添加搜索功能的事儿。一提到全文检索,我们首先就会想到搜索引擎。也就是用一个词、一段文本搜索出匹配的内容。一般这种技术都有对应的实现方式,ES(ElasticSearch)就是专门干这个的,如果你们的业务中明确需要全文检索,或者简单一点说,需要根据关键词搜索出匹配的内容,那就直接用 ES 就好了。无论你怎么调研,都不推荐使用 MySQL 实现这种需求,显而易见,MySQL 作为关系型数据库,本身就不适合做搜索这种需求。
2022-11-21 09:35:00 6470 3
原创 一个 MySQL 隐式转换的坑,差点把服务器整崩溃了
本来是一个平静而美好的下午,其他部门的同事要一份数据报表临时汇报使用,因为系统目前没有这个维度的功能,所以需要写个SQL马上出一下,一个同事接到这个任务,于是开始在测试环境拼装这条 SQL,刚过了几分钟,同事已经自信的写好了这条SQL,于是拿给DBA,到线上跑一下,用客户端工具导出Excel 就好了,毕竟是临时方案嘛。
2022-11-08 18:48:37 185
原创 手动实现一个 Redis 客户端需要掌握什么知识点
那面试又问了,你知道 AOF 持久化之后的文件是什么格式吗?答:好像就是文本文件吧?好,文本文件,那你知道它有什么规则吗?或者说,它和 Redis 的协议有什么关系吗?答:啊,这个,恩,不太清楚呢。
2020-12-04 11:02:50 258
原创 『CDN』让你的网站访问起来更加柔顺丝滑
我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。当你在访问淘宝、京东准备剁手的时候,虽然进入页面的时候有很多的图片、很多的内容,但是加载起来确很快,让你剁手的动作如水般丝滑。嗖的一下好看的商品图片就出来了,嗖的一下就付款了。当然图片算是比较小的资源了,那些视频网站呢,每一个视频好几百M、好几个G,同时有好多的请求过来,就算服务器能抗住,带宽能跟的.
2020-12-04 11:00:55 295
原创 听说 synchronized 性能不行,是真的吗?
在多线程环境中,锁的使用是避免不了的,使用锁时候有多种锁供我们选择,比如 `ReentrantLock`、`CountDownLatch`等等,但是作为 Java 开发者来说,刚刚接触多线程的时候,最早接触和使用的恐怕非 `synchronized`莫属了。那你真的了解`synchronized`吗,今天我们就从以下几个方面彻底搞懂 `synchronized`。
2020-11-19 14:08:27 3346 2
原创 JVM 的几种死法,知己知彼才能百战不殆
我们都知道 Java 程序都是跑在 JVM 上的,一旦 JVM 有什么风吹草动,必然会影响服务的稳定性。幸运的话,服务会发生抖动,可能有部分请求出现延迟或异常。不幸的话,JVM 直接崩溃,导致服务完全中断。
2020-11-06 09:06:59 221
原创 高频面试题:Java程序占用 CPU 过高怎么排查
线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因?
2020-11-03 12:42:25 2160 4
原创 90%的开发者都没搞清楚的 Java 字符串常量池
字符串问题可谓是 Java 中经久不衰的问题,尤其是字符串常量池经常作为面试题出现。可即便是看似简单而又经常被提起的问题,还是有好多同学一知半解,看上去懂了,仔细分析起来却又发现不太明白。
2020-08-27 09:42:13 3750 7
原创 写给 Java 开发者:你知道各种 JVM 监控工具背后的实现技术和原理吗?
比如你如果用 Spring Boot,那你用过 Spring Boot Actuator 吧,它就用到了 JMX 。比如你用过 JConsole 或者 VisualVM 吧,它们也用到了 JMX。
2020-08-20 11:08:11 689
原创 『JWT』,你必须了解的认证登录方案
JWT 全称是 JSON Web Token,是目前非常流行的跨域认证解决方案,在单点登录场景中经常使用到。有些人觉得它非常好用,用了它之后就不用在服务端借助 redis 实现认证过程了,但是,还有一部分人认为它生来就有缺陷,根本不能用。
2020-08-19 10:02:38 550
原创 避免使用 Spring Cloud 踩到坑,送你一套详细的系列专栏(配备完整代码)
但是使用的过程中,你会发现组件众多,但是官方文档说实话写的并不够简单,往往你想使用一个组件的时候,会遇到各种各样的问题,而通过阅读官方文档,大多数时候并不能彻底解决问题。
2020-08-17 17:00:33 845
原创 应该是最详细的 Spring Cloud OAuth2 实现用户认证及单点登录教程了
OAuth 2 有四种授权模式,分别是授权码模式(authorization code)、简化模式(implicit)、密码模式(resource owner password credentials)、客户端模式(client credentials),具体 OAuth2 是什么呢?
2020-08-13 10:08:55 1821 1
原创 Spring Cloud 消息中间件 Spring Cloud Stream
Spring Cloud Stream 是消息中间件组件,它集成了 kafka 和 rabbitmq 。本篇文章以 Rabbit MQ 为消息中间件系统为基础,介绍 Spring Cloud Stream 的使用。如果你没有用过消息中间件,可以到 RabbitMQ 的官网看一下,或者参考这个 http://rabbitmq.mr-ping.com/。理解了消息中间件的设计,才能更好的使用它。
2020-08-10 11:18:20 821
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人