-
面试高频考点:hashCode与equals2021/12/27
来源:https://juejin.cn/post/7011713684015677471先来看阿里巴巴Java开发手册中的一段话:【强制】关于 hashCode 和 equals 的处理,遵循如下规则:1) 只要重写 equals,就必须重写 hashCode。2) 因为 Set 存储的是不重复的对象,依据 hash......
-
系统架构性能问题诊断及优化思路,纯干货!2021/12/20
今天谈下业务系统性能问题分析诊断和性能优化方面的内容。这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点。| 系统性能问题分析流程我们首先来分析下如果一个业务系统上线前没有性能问题,而在上线后出现了比较严重的性能问题,那么实际上潜在的场景主要来自于以下几个方面。业务出现大并发的访问,导致出现性能......
-
自从学会 JMX 监控和管理 Java 程序,睡得真香!2021/12/13
1. JMX 是什么?Java Management Extensions(JMX)技术是 Java SE 平台的标准功能,提供了一种简单的、标准的监控和管理资源的方式,对于如何定义一个资源给出了明确的结构和设计模式,主要用于监控和管理 Java 应用程序运行状态、设备和资源信息、Java 虚拟机运行情况等信息。JMX......
-
运维规则的10个总结2021/12/06
1、勿重复劳作不要重复劳动力,也不要什么都从外部获取,如工具、代码、框架等。需要考虑的是在合适的时间以合适的成本切入,投资回报率也是需要考虑的。一般来说,每个公司都存在重复造轮子的现象,而且许多人都热衷于此,可能需要用这样的项目来证明自己,而却忽略了投入/产出比这个重要的指标。如果能够充分利用社区的成果,利用公司已有的......
-
Java 锁机制了解一下2021/11/29
在多线程环境下,程序往往会出现一些线程安全问题,为此,Java提供了一些线程的同步机制来解决安全问题,比如:synchronized锁和Lock锁都能解决线程安全问题。悲观锁和乐观锁我们可以将锁大体分为两类:悲观锁乐观锁顾名思义,悲观锁总是假设最坏的情况,每次获取数据的时候都认为别的线程会修改,所以每次在拿数据的时候都......
-
Java 线程池配置的常见误区2021/11/22
来源:https://zhenbianshu.github.io由于线程的创建和销毁对操作系统来说都是比较重量级的操作,所以线程的池化在各种语言内都有实践,当然在 Java 语言中线程池是也非常重要的一部分,有 Doug Lea 大神对线程池的封装,我们使用的时候是非常方便,但也可能会因为不了解其具体实现,对线程池的配......
-
Spring Boot + Redis 实现各种操作,写得真好!2021/11/15
一、Jedis,Redisson,Lettuce 三者的区别共同点:都提供了基于 Redis 操作的 Java API,只是封装程度,具体实现稍有不同。不同点:1.1、Jedis是 Redis 的 Java 实现的客户端。支持基本的数据类型如:String、Hash、List、Set、Sorted Set。特点:使用阻......
-
Redis存储结构体信息,选hash还是string?2021/11/08
在讲到使用hash还是string存储的选择前,先了解Redis的hash和string结构。 一、string string和hash都是Redis的一种数据结构。string结构常用来缓存用户信息,通常将用户信息结构体使用JSON序列化成字符串,然后将序列化后的字符串存入Redis进行缓存。String数据结构R......
-
Java为什么需要虚拟机?2021/11/01
曾几何时,我们还是初识Hello World的时候,我们哪曾知道,Java这门神奇的语言,在执行我们的代码的时候,不是直接将我们所编写的Java代码交付给操作系统底层进行解析编译,而是采用了JDK来对Java代码进行编译,编译成dotClass文件后,将dotClass文件转交至JRE中。(dotClass其实就是.c......
-
分享几个工作中实用的代码优化技巧!2021/09/22
类成员与方法的可见性最小化 举例:如果是一个private的方法,想删除就删除 如果一个public的service方法,或者一个public的成员变量,删除一下,不得思考很多。 使用位移操作替代乘除法 计算机是使用二进制表示的,位移操作会极大地提高性能。 左移相当于乘...