Fork me on GitHub
上一页 1 2 3 4 5 6 7 8 9 ··· 30 下一页
摘要: RedLock 是一种分布式锁的实现算法,由 Redis 的作者 Salvatore Sanfilippo(也称为 Antirez)提出,主要用于解决在分布式系统中实现可靠锁的问题。在 Redis 单独节点的基础上,RedLock 使用了多个独立的 Redis 实例(通常建议是奇数个,比如 5 个) 阅读全文
posted @ 2024-02-27 15:29 磊哥|www.javacn.site 阅读(1394) 评论(3) 推荐(2) 编辑
摘要: 限流是指在各种应用场景中,通过技术和策略手段对数据流量、请求频率或资源消耗进行有计划的限制,以避免系统负载过高、性能下降甚至崩溃的情况发生。限流的目标在于维护系统的稳定性和可用性,并确保服务质量。 使用限流的好处有以下几个: 保护系统稳定性:过多的并发请求可能导致服务器内存耗尽、CPU 使用率饱和, 阅读全文
posted @ 2024-02-26 15:10 磊哥|www.javacn.site 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 接下来的一段时间,我将出一些地方上比较值得去的公司,供 Java 程序员作为找工作和跳槽时进行挑选。 西安作为中国西部的科技和互联网产业发展的重要城市,拥有着少些知名且对 Java 程序员具有吸引力的互联网公司,接下来,我们将分这些公司分为 3 类来介绍: 私企 国企 外企 0.国企、私企和外企有什 阅读全文
posted @ 2024-02-23 12:01 磊哥|www.javacn.site 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 当问到 Java 内存模型的时候,一定要注意,Java 内存模型(Java Memory Model,JMM)它和 JVM 内存布局(JVM 运行时数据区域)是不一样的,它们是两个完全不同的概念。 1.为什么要有 Java 内存模型? Java 内存模型存在的原因在于解决多线程环境下并发执行时的内存 阅读全文
posted @ 2024-02-22 15:56 磊哥|www.javacn.site 阅读(428) 评论(0) 推荐(2) 编辑
摘要: 对于高并发系统来说,有三个重要的机制来保障其高效运行,它们分别是:缓存、限流和熔断。而缓存是排在最前面也是高并发系统之所以高效运行的关键手段,那么问题来了:缓存只使用 Redis 就够了吗? 1.冗余设计理念 当然不是,不要把所有鸡蛋放到一个篮子里,成熟的系统在关键功能实现时一定会考虑冗余设计,注意 阅读全文
posted @ 2024-02-20 16:05 磊哥|www.javacn.site 阅读(950) 评论(0) 推荐(3) 编辑
摘要: 当数据量比较大时,使用常规的方式来判重就不行了。 例如,使用 MySQL 数据库判重,或使用 List.contains() 或 Set.contains() 判重就不可行,因为 MySQL 在数据量大时查询就会非常慢,而数据库又是及其珍贵的全局数据库资源。 《阿里巴巴Java开发手册》上也说了,如 阅读全文
posted @ 2024-02-19 12:00 磊哥|www.javacn.site 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 考研成绩马上就要出来了,但是按照往年的录取情况,以及自己的考试表现来预估的话,相信大部分人心里早已有了答案。能上岸的同学还好,接下来几年继续自己的求学之后就好。但对于不能上岸的同学来说,已经到了不得不为自己将来考虑的时候了。 那么问题来了,之前一直在忙考研的事情,就业的知识一点都没学,而春招也马上也 阅读全文
posted @ 2024-02-09 11:59 磊哥|www.javacn.site 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 那是发生在多年前的一件事,当时我也是在那家公司做 Java 开发。公司很大,大到去了很长一段时间都感觉毫无存在感。 那年年会,作为技术部的我,依然被安排到一个比较边缘化的桌子,这么多年走来,早已经习惯了这样的安排。 可能只有我们做技术人的心里才会觉得“技术牛逼,技术万岁!”,但在公司领导层看来,这技 阅读全文
posted @ 2024-02-06 18:39 磊哥|www.javacn.site 阅读(41) 评论(0) 推荐(1) 编辑
摘要: 短信盗刷和短信轰炸是项目开发中必须要解决的问题之一,它的优先级不亚于 SQL 注入的问题,同时它也是面试中比较常见的一个经典面试题,今天我们就来看下,如何防止这个问题。 1.概念介绍 短信盗刷和短信轰炸的概念如下: 短信盗刷是指使用某种技术手段,伪造大量手机号调用业务系统,盗取并发送大量短信的问题。 阅读全文
posted @ 2024-02-05 17:08 磊哥|www.javacn.site 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 限流是一种通过控制系统对外提供的资源、服务或接口的访问数量或速率,以保护系统免受过载的一种策略。 它的目的是确保系统能够在承受范围内提供稳定和可靠的服务,避免因过多的请求而导致系统崩溃、资源耗尽或响应延迟过高的情况发生。 在 Sentinel 中,实现限流的方法有以下两种: 通过代码方法实现限流。 阅读全文
posted @ 2024-02-04 10:59 磊哥|www.javacn.site 阅读(206) 评论(0) 推荐(2) 编辑
摘要: 在 Spring Cloud Gateway 中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制。例如,它可以实现对传入的请求进行验证、修改、日志记录、身份验证、流量控制等各种功能。 在 Spring Cloud Gateway 中,过滤器总共分为以下两大类: 局部过滤器:只作用于 阅读全文
posted @ 2024-02-01 10:31 磊哥|www.javacn.site 阅读(149) 评论(0) 推荐(0) 编辑
摘要: JIT、逃逸分析、锁消除、栈上分配和标量替换等都属于 JVM 的优化手段,JVM 优化手段是指在运行 Java 程序时,通过对字节码的编译和执行过程进行优化,以提升程序的性能和效率。 JVM 优化手段主要有以下几个: JIT(Just-In-Time,即时编译):是一种在程序运行时将部分热点代码编译 阅读全文
posted @ 2024-01-31 10:27 磊哥|www.javacn.site 阅读(449) 评论(0) 推荐(1) 编辑
摘要: 零拷贝(Zero-copy)技术是一种计算机操作系统中用于提高数据传输效率的优化策略。在传统的数据传输过程中,需要将数据从一个缓冲区拷贝到另一个缓冲区,然后再传输给目标。这涉及到多次的 CPU 和内存之间的数据拷贝操作,会消耗 CPU 的时间和内存带宽。而零拷贝技术通过直接共享数据的内存地址,避免了 阅读全文
posted @ 2024-01-29 10:33 磊哥|www.javacn.site 阅读(205) 评论(0) 推荐(2) 编辑
摘要: 跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-Origin Policy),即只允许页面请求同源(相同协议、域名和端口)的资源,当 JavaScript 发起的请求跨越了同源策略,即请求的目标与当前页面的域名、端口、协议不一致时,浏览器会阻止请求的发送或接收。 解决跨域问题方案 阅读全文
posted @ 2024-01-25 12:21 磊哥|www.javacn.site 阅读(748) 评论(1) 推荐(4) 编辑
摘要: 今天早上上班很有意思,同时收到了两个同学询问,关于要不要辞职回家过年的消息。但是我却给了两个完全相反的意见,这是怎么回事呢?一起来看。 1.大厂实习的A同学 A 同学是 25 届的学生,目前在国内某知名公司实习,该公司的薪资是出了名的高,普通应届生也能轻松拿到 30W 以上的年薪,而 A 同学的困惑 阅读全文
posted @ 2024-01-23 09:44 磊哥|www.javacn.site 阅读(164) 评论(0) 推荐(1) 编辑
摘要: 数据持久化是指将数据从内存中,保存到磁盘或其他持久存储介质的过程,这样做的目的是为了保证数据不丢失。 而 Redis 的持久化功能默认是开启的,这样做的目的也是为了保证程序的稳定性(防止缓存雪崩、缓存击穿等问题)和数据不丢失。 Redis持久化能关吗?怎么关? Redis 持久化默认是开启的,但可以 阅读全文
posted @ 2024-01-22 10:13 磊哥|www.javacn.site 阅读(236) 评论(1) 推荐(2) 编辑
摘要: 缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。 那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系统呢? 实现方案概述 在 Spring Boot 启动之后,可以通过以下手段实现缓存预热: 使 阅读全文
posted @ 2024-01-19 15:25 磊哥|www.javacn.site 阅读(626) 评论(0) 推荐(2) 编辑
摘要: 分库分表后就不能使用自增 ID 来作为表的主键了,因为数据库自增 ID 只适用于单机环境,但如果是分布式环境,是将数据库进行分库、分表或数据库分片等操作时,那么数据库自增 ID 就会生成重复 ID,从而导致业务查询上的问题。所以此时,可以使用 UUID 或雪花 ID 来作为全局主键 ID。 1.UU 阅读全文
posted @ 2024-01-17 15:07 磊哥|www.javacn.site 阅读(374) 评论(0) 推荐(1) 编辑
摘要: 前两天有位朋友去应聘百度测试开发工程师,面试完自我感觉还行,手撕算法、手撕 SQL 都写出来了,八股也回答的不错,但被通知没通过一面。所以朋友就有点不解,于是就跑来问我原因。 从上面的聊天记录可以看出,面试官的反馈有两个未通过的原因: 自我思考力一般。 学习能力一般。 题外话:这也太较真了吧? 有人 阅读全文
posted @ 2024-01-16 15:36 磊哥|www.javacn.site 阅读(103) 评论(1) 推荐(0) 编辑
摘要: 有人可能看到“本地缓存”这四个字就会觉得不屑,“哼,现在谁还用本地缓存?直接用分布式缓存不就完了嘛”。 然而,这就像你有一辆超级豪华的房车一样,虽然它空间很大,设备很全,但你去市中心的时候,依然会开小轿车一样,为啥?好停车啊!所以,不同的缓存类型是有不同得使用场景的。 并且,为了防止缓存雪崩问题、缓 阅读全文
posted @ 2024-01-15 10:58 磊哥|www.javacn.site 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 自定义注解可以标记在方法上或类上,用于在编译期或运行期进行特定的业务功能处理。在 Java 中,自定义注解使用 @interface 关键字来定义,它可以实现如:日志记录、性能监控、权限校验等功能。 在 Spring Boot 中实现一个自定义注解,可以通过 AOP(面向切面编程)或拦截器(Inte 阅读全文
posted @ 2024-01-12 10:11 磊哥|www.javacn.site 阅读(352) 评论(1) 推荐(1) 编辑
摘要: 默认情况下,Spring Boot 中的 Bean 是非线程安全的。这是因为,默认情况下 Bean 的作用域是单例模式,那么此时,所有的请求都会共享同一个 Bean 实例,这意味着这个 Bean 实例,在多线程下可能被同时修改,那么此时它就会出现线程安全问题。 Bean 的作用域(Scope)指的是 阅读全文
posted @ 2024-01-11 15:28 磊哥|www.javacn.site 阅读(424) 评论(0) 推荐(0) 编辑
摘要: Cookie 和 Session 是 Web 应用程序中用于保持用户状态的两种常见机制,它们之间既有联系也有区别。 Cookie 是由服务器在 HTTP 响应中发送给客户端(通常是浏览器)的一小段数据。客户端将这些信息保存在本地,并在后续的请求中自动将其发送回服务器。 而 Session 是在服务器 阅读全文
posted @ 2024-01-10 15:32 磊哥|www.javacn.site 阅读(242) 评论(0) 推荐(0) 编辑
摘要: RedLock 是 Redis 分布式锁的一种实现方案,由 Redis 的作者 Salvatore Sanfilippo 提出。 RedLock 算法旨在解决单个 Redis 实例作为分布式锁时可能出现的单点故障问题,通过在多个独立运行的 Redis 实例上同时获取锁的方式来提高锁服务的可用性和安全 阅读全文
posted @ 2024-01-09 09:49 磊哥|www.javacn.site 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。它基于位数组和多个哈希函数的原理,可以高效地进行元素的查询,而且占用的空间相对较小,如下图所示: 根据 key 值计算出它的存储位置,然后将此位置标识全部标识为 1(未存放数据的位置全部为 0 阅读全文
posted @ 2024-01-05 12:29 磊哥|www.javacn.site 阅读(27) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 30 下一页