摘要:
一直关注磊哥的朋友都知道,磊哥出来创业(做 Java 就业指导)也快一年了,从最初的纠结彷徨、不知所措,到现在逐渐找到自己的节奏,也算是半个媳妇熬成婆了。 磊哥现在每天做的事儿,就是通过文章和视频的方式分享 Java 干货,并且还能顺便赚点钱,解决自己的温饱问题,这种感觉真是太好了。既能帮助别人找到 阅读全文
摘要:
优雅停机(Graceful Shutdown) 是指在服务器需要关闭或重启时,能够先处理完当前正在进行的请求,然后再停止服务的操作。 优雅停机的实现步骤主要分为以下几步: 停止接收新的请求:首先,系统会停止接受新的请求,这样就不会有新的任务被添加到任务队列中。 处理当前请求:系统会继续处理当前已经在 阅读全文
摘要:
今天周五,按道理来说,今天应该是一个快乐的日子,因为明天不上班啊。 但是,我今天收到的大部分消息都是在问我:“磊哥,为什么我投递的简历没有响应呢?”,例如下面这样: 那么问题来了,导致投递的简历没有响应的主要原因有哪些呢?接下来,我们来盘点一下。 1.投递简历太少 简历不是投递 10 来份、20~3 阅读全文
摘要:
反射是 Java 面试中必问的面试题,但只有很少人能真正的理解“反射”并讲明白反射,更别说能说清楚它的底层实现原理了。所以本文就通过大白话的方式来系统的讲解一下反射,希望大家看完之后能真正的理解并掌握“反射”这项技术。 1.什么是反射? 反射在程序运行期间动态获取类和操纵类的一种技术。通过反射机制, 阅读全文
摘要:
微服务的通讯方式主要有以下几种: RESTful API:基于 HTTP 协议的 RESTful API 是最常用的微服务通讯方式之一。服务之间通过 HTTP 请求和响应进行通讯,实现数据交换。这种方式简单、通用,适用于各种场景,但可能不适合对实时性要求非常高的场景。 RPC(远程过程调用):RPC 阅读全文
摘要:
线程池的底层是基于线程和任务队列来实现的,创建线程池的创建方式通常有以下两种: 普通 Java 项目,使用 ThreadPoolExecutor 来创建线程池,这点《阿里巴巴Java开发手册》中也有说明,如下图所示: Spring 项目中,会使用代码可读性更高的 ThreadPoolTaskExec 阅读全文
摘要:
微服务中的灰度发布(又称为金丝雀发布)是一种持续部署策略,它允许在正式环境的小部分用户群体上先部署新版本的应用程序或服务,而不是一次性对所有用户同时发布全新的版本。 这种方式有助于在生产环境中逐步验证新版本的稳定性和兼容性,同时最小化潜在风险,不影响大部分用户的正常使用。 1.灰度发布关键步骤 在 阅读全文
摘要:
AOP(Aspect-Oriented Programming,面向切面编程)是一种编程技术,它允许开发者在不改变现有代码的情况下,增加新的功能或行为,这些功能或行为被称为“切面”。 AOP 可以通过预编译方式和运行期动态代理的方式来实现,它的主要目的是降低业务逻辑的耦合性,提高程序的可重用性和开发 阅读全文
摘要:
最近朋友们反馈,笔试和面试都多起来了,下午投的简历,没一会的功夫就收到笔试邀请了,比如金山: 还塞力斯: 其他的还有华为 OD 也开始做笔试了,招银网络最近也开始约面试了,所以春招的氛围慢慢来了,还没投递简历的小伙伴可以动起来了。 越早投递越有优势,面试后期的岗位招聘人数会少很多,因此面试难度就会大 阅读全文
摘要:
单点登录(Single Sign-On, SSO)是一种让用户在多个应用系统之间只需登录一次就可以访问所有授权系统的机制。单点登录主要目的是为了提高用户体验并简化安全管理。 举个例子,您在一个大型企业工作,该企业拥有一套由多个独立应用程序组成的生态系统,例如:内部邮箱系统、项目管理系统、员工自助服务 阅读全文
摘要:
在 Java 并发编程中,有 3 个最常用的关键字:synchronized、ReentrantLock 和 volatile。 虽然 volatile 并不像其他两个关键字一样,能保证线程安全,但 volatile 也是并发编程中最常见的关键字之一。例如,单例模式、CopyOnWriteArray 阅读全文
摘要:
Redis 高可用(High Availability,HA)是指 Redis 通过一系列技术手段确保在面临故障的情况下也能持续提供服务的能力。 Redis 作为一个内存数据库,其数据通常存储在内存中,一旦发生故障,可能导致数据丢失或服务中断,所以,为了保证 Redis 的高可用,它主要采用了以下两 阅读全文
摘要:
RedLock 是一种分布式锁的实现算法,由 Redis 的作者 Salvatore Sanfilippo(也称为 Antirez)提出,主要用于解决在分布式系统中实现可靠锁的问题。在 Redis 单独节点的基础上,RedLock 使用了多个独立的 Redis 实例(通常建议是奇数个,比如 5 个) 阅读全文
摘要:
限流是指在各种应用场景中,通过技术和策略手段对数据流量、请求频率或资源消耗进行有计划的限制,以避免系统负载过高、性能下降甚至崩溃的情况发生。限流的目标在于维护系统的稳定性和可用性,并确保服务质量。 使用限流的好处有以下几个: 保护系统稳定性:过多的并发请求可能导致服务器内存耗尽、CPU 使用率饱和, 阅读全文
摘要:
接下来的一段时间,我将出一些地方上比较值得去的公司,供 Java 程序员作为找工作和跳槽时进行挑选。 西安作为中国西部的科技和互联网产业发展的重要城市,拥有着少些知名且对 Java 程序员具有吸引力的互联网公司,接下来,我们将分这些公司分为 3 类来介绍: 私企 国企 外企 0.国企、私企和外企有什 阅读全文
摘要:
当问到 Java 内存模型的时候,一定要注意,Java 内存模型(Java Memory Model,JMM)它和 JVM 内存布局(JVM 运行时数据区域)是不一样的,它们是两个完全不同的概念。 1.为什么要有 Java 内存模型? Java 内存模型存在的原因在于解决多线程环境下并发执行时的内存 阅读全文
摘要:
对于高并发系统来说,有三个重要的机制来保障其高效运行,它们分别是:缓存、限流和熔断。而缓存是排在最前面也是高并发系统之所以高效运行的关键手段,那么问题来了:缓存只使用 Redis 就够了吗? 1.冗余设计理念 当然不是,不要把所有鸡蛋放到一个篮子里,成熟的系统在关键功能实现时一定会考虑冗余设计,注意 阅读全文
摘要:
当数据量比较大时,使用常规的方式来判重就不行了。 例如,使用 MySQL 数据库判重,或使用 List.contains() 或 Set.contains() 判重就不可行,因为 MySQL 在数据量大时查询就会非常慢,而数据库又是及其珍贵的全局数据库资源。 《阿里巴巴Java开发手册》上也说了,如 阅读全文
摘要:
考研成绩马上就要出来了,但是按照往年的录取情况,以及自己的考试表现来预估的话,相信大部分人心里早已有了答案。能上岸的同学还好,接下来几年继续自己的求学之后就好。但对于不能上岸的同学来说,已经到了不得不为自己将来考虑的时候了。 那么问题来了,之前一直在忙考研的事情,就业的知识一点都没学,而春招也马上也 阅读全文
摘要:
那是发生在多年前的一件事,当时我也是在那家公司做 Java 开发。公司很大,大到去了很长一段时间都感觉毫无存在感。 那年年会,作为技术部的我,依然被安排到一个比较边缘化的桌子,这么多年走来,早已经习惯了这样的安排。 可能只有我们做技术人的心里才会觉得“技术牛逼,技术万岁!”,但在公司领导层看来,这技 阅读全文
摘要:
短信盗刷和短信轰炸是项目开发中必须要解决的问题之一,它的优先级不亚于 SQL 注入的问题,同时它也是面试中比较常见的一个经典面试题,今天我们就来看下,如何防止这个问题。 1.概念介绍 短信盗刷和短信轰炸的概念如下: 短信盗刷是指使用某种技术手段,伪造大量手机号调用业务系统,盗取并发送大量短信的问题。 阅读全文
摘要:
限流是一种通过控制系统对外提供的资源、服务或接口的访问数量或速率,以保护系统免受过载的一种策略。 它的目的是确保系统能够在承受范围内提供稳定和可靠的服务,避免因过多的请求而导致系统崩溃、资源耗尽或响应延迟过高的情况发生。 在 Sentinel 中,实现限流的方法有以下两种: 通过代码方法实现限流。 阅读全文
摘要:
在 Spring Cloud Gateway 中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制。例如,它可以实现对传入的请求进行验证、修改、日志记录、身份验证、流量控制等各种功能。 在 Spring Cloud Gateway 中,过滤器总共分为以下两大类: 局部过滤器:只作用于 阅读全文
摘要:
JIT、逃逸分析、锁消除、栈上分配和标量替换等都属于 JVM 的优化手段,JVM 优化手段是指在运行 Java 程序时,通过对字节码的编译和执行过程进行优化,以提升程序的性能和效率。 JVM 优化手段主要有以下几个: JIT(Just-In-Time,即时编译):是一种在程序运行时将部分热点代码编译 阅读全文
摘要:
零拷贝(Zero-copy)技术是一种计算机操作系统中用于提高数据传输效率的优化策略。在传统的数据传输过程中,需要将数据从一个缓冲区拷贝到另一个缓冲区,然后再传输给目标。这涉及到多次的 CPU 和内存之间的数据拷贝操作,会消耗 CPU 的时间和内存带宽。而零拷贝技术通过直接共享数据的内存地址,避免了 阅读全文