Java性能优化的50个细节(珍藏版)
在Java程序中,性能问题的大部分原因并不在于Java语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 此时静态变量b的生命周期与A类同步,如果A类不会卸载,那么b对象…
SpringBoot--数据校验(普通校验、分组校验)
@Size表示一个字符串的长度或者一个集合的大小,必须在某一个范围中;min参数表示范围的下限;max参数表示范围的上限;message表示校验失败时的提示信息。 给User参数添加@Validated注解,表示需要对该参数做校验,紧接着的BindingResult参数表示在校…
58同城大裁员,大厂断臂自保的背后:“神奇的网站”不再神奇
58同城掌门人姚劲波微博沦陷了,起因是治下公司正深陷裁员风波。 众所周知,这场突如其来的疫情,给包括互联网在内的各行各业带来不小的冲击,中小企业哀鸿遍野,为了自救不得不裁员、降薪,而像58同城这种大企业抗风险能力相对较强,即便遇到困难也能与全体员工共克时艰,不至于走到为了活下去…
你猜一个 TCP 连接上面能发多少个 HTTP 请求
一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么,大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来。但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢? 在…
9种设计模式在 Spring 中的运用,记住!
BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 读取bean的xml配…
请不要在JDK7及以上用Json-lib了
Json-lib 是以前 Java 常用的一个 Json 库,最后的版本是 2.4,分别提供了 JDK 1.3 和 1.5 的支持,最后更新时间是 2010年12月14日。虽然已经很多年不维护了,但在搜索引擎上搜索 "Java Json" 等相关的关键词发现好像一直还有人在介绍…
Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件
Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的We…
用Spring的BeanUtils前,建议你先了解这几个坑!
最近项目中在和第三方进行联调一个接口,我们这边发送http请求给对方,然后接收对方的回应,代码都是老代码。根据注释,对方的SDK中写好的Request类有一个无法序列化的bug,所以这边重新写了一个Request类,基本属性都是相同的,但是重点是有一个属性是静态内部类,还有两个…
不用找了,大厂在用的分库分表方案,都在这里!
不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下…
Java:实现文件批量导入导出实践(兼容xls,xlsx)
java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。 目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似…
select count(*) 底层到底干了啥?
SELECT COUNT( * ) FROM TABLE 是个再常见不过的 SQL 需求了。 在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为 O(N),其中 N 为表的行数。 而…
专属开源开发者的羊毛福利,作者实际到手现金 5K+(namebase airdrop)
前天睡前我在 v 站看到有人发了一个贴 20190204 以前有 16 位以上 GitHub 粉丝的,可领取目前价值 $2000 的空投 本来以为是玩笑,后面看回帖好像确有其事,大致就是一个区块链企业给开发者送福利,看了下也不费事,就花了十几分钟领了下,然后就去睡觉了。 第二天…
解读京东的积木理论
我之前在做业务需求的时候,很多的个性化需求并不能快速响应,实现后有时也很难保证系统的可阅读性。不过好消息是,我今年在做京东内容领域的组件化改造和能力输出,之前的问题或许会得到根本性的解决。那么,接下来我将分享一些个人对于组件化的认知,希望能帮助到你。 组件,它是基于可复用、可插…
Nginx为什么快到根本停不下来?
Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU 资源,增加上下文切换的损耗。 request:Nginx 中 http 请求。 Nginx 也是这个套路,整体流程一致。 event…
分布式与集群的区别是什么?
在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已结束,分布式开发的时代实际上…
设计模式学习分享
最常用到的几个评判代码质量的标准是:可维护性、可读性、可扩展性、灵活性、简洁性、可复用性、可测试性。 如果要表示一种is-a的关系,并且是为了解决代码复用问题,就使用抽象类。如果要表示一种has-a的关系,并且为了解决抽象而非代码复用问题,就使用接口。 做软件设计的时候要有抽象…
这个 Spring 循环依赖的坑,90% 以上的人都不知道
1. 前言 这两天工作遇到了一个挺有意思的Spring循环依赖的问题,但是这个和以往遇到的循环依赖问题都不太一样,隐藏的相当隐蔽,网络上也很少看到有其他人遇到类似的问题。这里权且称他非典型Spring循环依赖问题。但是我相信我肯定不是第一个踩这个坑的,也一定不是最后一个,可能只…
你连 HTTPS 原理都不懂,还讲“中间人攻击”?
随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了: 本文将层层深入,从原理上把 HTT…
IM的扫码登录功能如何实现?一文搞懂主流的扫码登录技术原理
扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方式登录),但不得不说还是很酷的。 于是,搞IM产品的老板和产品经理们,从此又多了一个要抛给程序员们的需求——“为什么微信有扫一扫登录,而我们的没有?”。 好吧,每次只要是微信有的功能,IM程序…
你真的了解 volatile 吗?
最近经过查阅各种资料,并结合自己的思考和实践,对volatile有了比较深刻的认识,在此总结并分享给大家。 工作内存:即java线程的本地内存,是单独给某个线程分配的,存储局部变量等,同时也会复制主存的共享变量作为本地的副本,目的是为了减少和主存通信的频率,提高效率。 可见性是…