-
为什么会有这么多编程语言?2022/08/15
为什么会有这么多编程语言?在编程语言如此丰富的今天,相信许多开发者都有过上面的疑问。不过早在 1960 年代初,人们就已经提出了这个问题。《ACM 通讯》期刊近日发表了题为《Why Are There So Many Programming Languages?》的文章,作者在文中指出了一个重要原因:公司基于商业利益的......
-
如何重构千行“又臭又长”的类?IntelliJ IDEA 几分钟就搞定!2022/07/25
作者 | 围军儿来源 | juejin.cn/post/6844904038383747086最近在对已有项目进行扩展的时候,发现要改动的一个类它长766行,开放了近40个public接口,我流着泪把它给改完了。为了防止这样的惨剧再次发生在我的身上,我觉得有必要写一篇博客来让广大程序猿同胞知道代码重构的重要性如果你身......
-
关于 Linux 之父,你不知道的 6 件事!2022/07/18
如果让你现在说出三个程序员的名字,Linus 很可能就在其中。作为世界上最著名的电脑程序员、黑客之一,Linus Benedict Torvalds 写出了 Linux 内核 1.0 版,发起了开源运动,开发了代码管理工具 Git。这三个成就中的任意一个,都深刻地改变了编程世界,而 Linus 把它们集齐了。关于 Li......
-
Tomcat太重,Undertow轻量多了~2022/07/11
目录前言SpringBoot 中的 Tomcat 容器SpringBoot 设置 UndertowTomcat 与 Undertow 的优劣对比最后前言在 SpringBoot 框架中,我们使用最多的是 Tomcat,这是 SpringBoot 默认的容器技术,而且是内嵌式的 Tomcat。同时,SpringBoot ......
-
适配器模式在 MyBatis 中的妙用!2022/07/04
什么是适配器模式适配器模式角色划分适配器模式应用场景适配器创建的方式适配器快速入门例子使用适配器模式实现日志收集对象适配器方式实现适配器模式优缺点写在前面:设计模式源于生活,而又高于生活!什么是适配器模式定义:将一个系统的接口转换成另外一种形式,从而使原来不能直接调用的接口变得可以调用。适配器模式角色划分适配器模式涉及......
-
还在 MySQL 中使用枚举?这些陷阱一定要注意!2022/06/27
为什么使用枚举限定值的取值范围,比如性别(男,女,未知)等。枚举类型使用陷阱1.超级不推荐在mysql中设置某一字段类型为enum,但是存的值为数字,比如‘0’,‘1’,‘2’;解释1: 你会混淆,因为enum可以通过角标取值,但它的角标是从1开始,对于不熟悉这个字段的人这里会出错解释2: enum类型的字段对于0与‘......
-
前后端分离的接口规范2022/06/20
1. 前言随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。然而带来的另一个问题:前后端的对接界面双方却关注甚少,没有任何接口约定规范情况下各自撸起袖子就是干,导致我......
-
Istio 可以代替 Spring Cloud 吗?2022/06/13
目录背景SpringCloud 与 K8S 对比SpringCloud vs IstioSpringBoot+K8SServiceMesh 的价值| 背景过去,我们运维着“能做一切”的大型单体应用程序。这是一种将产品推向市场的很好的方式,因为刚开始我们也只需要让我们的第一个应用上线。而且我们总是可以回头再来改进它的。部......
-
Tomcat JDBC Pool 源码实现简单分析2022/06/06
什么是连接池?池,不由自主的会想到水池。小时候,我们都要去远处的水井挑水,倒进家中的水池里面。这样,每次要用水时,直接从水池中「取」就行了。不用大老远跑去水井打水。数据库连接池就如此,我们预先准备好一些连接,放到池中。当需要时,就直接获取。而不要每次跟数据库建立一个新的连接。特别对数据库连接这类耗时,耗资源的操作。当连......
-
Spring Bean默认是单例的,高并发情况下,如何保证并发安全?2022/06/01
Spring的bean默认都是单例的,某些情况下,单例是并发不安全的,以Controller举例,问题根源在于,我们可能会在Controller中定义成员变量,如此一来,多个请求来临,进入的都是同一个单例的Controller对象,并对此成员变量的值进行修改操作,因此会互相影响,无法达到并发安全(不同于线程隔离的概念,......