
日常
文章平均质量分 95
发表一些日常的文章
激流丶
目前从事互联网安全领域,Java技术专家,WEB架构师,公司级面试官,阿里云专家博主,华为云云享专家,我对软件开发有着深厚的热爱,并致力于通过高质量的代码和创新的设计来解决复杂的技术挑战。 在我的职业生涯中,我不仅积累了丰富的技术经验,还有宝贵的项目管理经验,还深入参与了多个大型系统的架构设计与优化工作,我对最新 的技术保持着敏锐的洞察力。 我的风格:对代码有洁癖,追求极致、干净的代码。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【日常探秘】深入探讨Java 对象引用
博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主。原创 2024-11-14 09:25:01 · 1033 阅读 · 0 评论 -
【数据治理】你知道如何做静态脱敏吗?
静态脱敏是一种数据保护技术,它通过对源数据进行转换处理,以防止在非生产环境中(如开发、测试环境)使用时敏感信息的泄露。这种转换通常是在数据迁移前完成的,确保了即使在非安全环境下数据也不会暴露真实的信息。原创 2024-11-12 20:55:35 · 957 阅读 · 0 评论 -
【数据治理】你知道数据加密和脱敏技术?
数据加密和数据脱敏是两种重要的数据保护技术,用于保护数据的机密性和隐私。数据加密定义:数据加密是将明文数据转换为密文数据的过程,以防止未经授权的访问者读取数据。只有拥有正确密钥的人才能解密数据,恢复成原始的明文形式。目的:保护数据在传输和存储过程中的安全,防止数据被窃取或篡改。数据脱敏定义:数据脱敏是将敏感数据转换为伪装数据的过程,使其在保留数据格式和统计特性的同时,失去其真实意义,从而保护个人隐私和敏感信息。目的:在数据共享和分析过程中,保护个人隐私和敏感信息,同时保持数据的可用性。原创 2024-11-12 20:38:29 · 827 阅读 · 0 评论 -
【大数据扫盲】你知道什么是大数据治理?
大数据治理是指管理和控制组织内大数据资产的过程,确保数据的质量、安全、合规性和可用性。它涉及数据的整个生命周期,从数据的采集、存储、处理到分析和归档。大数据治理的目标是最大化数据的价值,同时最小化数据相关的风险。原创 2024-11-12 20:18:38 · 983 阅读 · 0 评论 -
【高频面试题】如何设计一个秒杀系统?
架构原则:高性能、高可用性、可扩展性、安全性、数据一致性、用户体验。动静分离:使用 CDN、静态资源服务器、缓存策略。热点数据:使用缓存、数据库优化、读写分离。流量削峰:使用限流、队列、异步处理。减库存:使用乐观锁、悲观锁、分布式锁。通过合理应用这些技术和方案,可以设计出高性能、高可用的秒杀系统。精彩专栏推荐订阅:在下方专栏👇🏻✅2023年华为OD机试真题(A卷&B卷)+ 面试指导✅精选100套 Java 项目案例✅面试需要避开的坑(活动)✅你找不到的核心代码✅带你手撕 Spring✅。原创 2024-11-12 04:45:00 · 1060 阅读 · 0 评论 -
【日常知识点】Java 语法糖,你用过几个?
语法糖(Syntactic sugar),也称作糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)提出的一个术语。它指的是编程语言中为了使代码更加易读、易于编写而添加的某种简洁或方便的语法特性。这些语法特性并不会增加语言的基本功能,也就是说,使用语法糖和不使用语法糖实现的功能是等价的,但使用语法糖可以使代码更清晰,更符合人类的思维习惯。提高可读性:通过简化代码结构,使得代码更加直观,更容易被其他开发者理解。减少错误。原创 2024-10-27 11:37:07 · 1692 阅读 · 0 评论 -
【开发实战】 你知道布隆过滤器吗?
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。它由 Burton Howard Bloom 在 1970 年提出。布隆过滤器的核心思想是使用多个哈希函数将元素映射到一个位数组中,通过检查位数组中的相应位置来判断元素是否可能存在。如果现有库不能满足需求,也可以自定义实现布隆过滤器。布隆过滤器是一种高效的空间节省型数据结构,适用于需要快速判断元素是否存在的场景。原创 2024-11-10 19:45:23 · 341 阅读 · 0 评论 -
【缓存策略】你知道 Write Around(缓存绕过写)这个缓存策略吗?
博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主。原创 2024-11-12 12:06:50 · 1635 阅读 · 0 评论 -
【华为面试题】真有人能把零拷贝技术说的这么透彻吗?
零拷贝(Zero-Copy)是一种计算机操作,旨在减少数据在内存中的复制次数,从而提高数据传输的效率。在传统的IO执行流程中,数据从磁盘读取到用户空间,再到内核空间,然后再从内核空间传输到网络接口,这个过程中会有多次数据拷贝。零拷贝技术通过减少这些不必要的数据拷贝,提高了数据传输的性能。传统IO执行流程读取数据:应用程序调用read系统调用,将数据从磁盘读取到内核缓冲区。数据拷贝:内核将数据从内核缓冲区复制到用户缓冲区。写入数据:应用程序调用write系统调用,将数据从用户缓冲区复制到内核缓冲区。原创 2024-11-06 06:00:00 · 732 阅读 · 0 评论 -
【Java 探秘】带你认识Java反射机制详解
工作原理:通过Class对象获取类的信息,动态创建对象、调用方法和访问字段。应用场景:框架开发、动态代理、类信息的动态获取、插件化开发、配置文件驱动。优缺点:灵活性高、解耦性强、动态性强,但性能开销大、安全性差、代码复杂。使用案例:动态创建对象、动态调用方法、动态访问字段、动态代理。精彩专栏推荐订阅:在下方专栏👇🏻✅2023年华为OD机试真题(A卷&B卷)+ 面试指导✅精选100套 Java 项目案例✅面试需要避开的坑(活动)✅你找不到的核心代码✅带你手撕 Spring✅Java 初阶。原创 2024-11-12 07:45:00 · 1048 阅读 · 0 评论 -
【日常知识点】到底推不推荐用JWT?
JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为 JSON 对象传输。JWT 通常用于在客户端和服务器之间传递声明(claims),这些声明可以是身份验证信息、用户角色、权限等,从而实现无状态的身份验证机制。选择哪种框架或技术取决于你的具体需求和现有的技术栈。如果你需要一个标准化且灵活的解决方案,并且能够处理复杂的授权逻辑,OAuth 2.0 和 OpenID Connect是一个很好的选择。如果你希望保持简单并且不需要复杂的权限管理,原创 2024-10-27 11:47:12 · 679 阅读 · 0 评论 -
【阿里一面】你知道线程池的执行原理吗?如何优雅的关闭呢?
线程池的执行流程:提交任务:客户端通过 execute 或 submit 方法将任务提交到线程池。核心线程:如果当前运行的线程数小于核心线程数(corePoolSize),线程池会创建新的线程来执行任务,即使其他空闲的核心线程也可以执行新任务。工作队列:如果当前运行的线程数已经达到核心线程数,任务会被放入工作队列(workQueue)中等待执行。最大线程:如果工作队列已满且当前运行的线程数小于最大线程数(maximumPoolSize),线程池会创建新的线程来执行任务。拒绝策略:如果当前运行的线原创 2024-11-05 10:00:00 · 367 阅读 · 0 评论 -
【面试题】什么是内存溢出和内存泄漏?如何解决?
博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主。原创 2024-10-26 15:00:00 · 1749 阅读 · 0 评论 -
【面试题】为什么要给密码加盐?
在计算机安全领域,特别是在密码学和数据保护中,“盐”(salt)是指一种随机数据,它被添加到密码或其他敏感数据中,以增加其复杂性和唯一性。盐的主要目的是防止攻击者通过预计算的哈希表(如彩虹表)来破解密码。盐的作用增强安全性通过向每个用户的密码添加唯一的盐,即使两个用户使用了相同的密码,它们的哈希值也会不同。这使得攻击者无法使用预计算的哈希表(例如彩虹表)来快速查找密码,因为每条记录都需要单独处理。防止彩虹表攻击彩虹表是预先计算好的哈希值列表,用于快速查找密码。原创 2024-10-25 13:33:54 · 2166 阅读 · 0 评论 -
【开发实战】彻底了解 ThreadLocal
是 Java 中的一个类,用于在每个线程中存储独立的变量副本。每个线程都可以独立地设置和获取自己的变量值,而不会与其他线程的变量值发生冲突。通常用于需要在线程之间隔离数据的场景,例如在多线程环境下管理每个线程的数据库连接、用户会话信息等。是类内部的一个静态内部类,用于存储每个线程的变量副本。是一个定制的哈希表,它使用弱引用()作为键,强引用作为值。的设计目的是为了在每个线程中独立地存储和管理变量。原创 2024-11-08 06:30:00 · 142 阅读 · 0 评论 -
【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?
Standard 分词器(Standard Tokenizer)是 Elasticsearch 和 Lucene 中最常用的分词器之一。它主要用于处理自然语言文本,能够识别单词、数字、电子邮件地址、URL 等,并将它们分割成单独的词元(tokens)。Standard 分词器遵循 Unicode 文本分段算法(Unicode Text Segmentation Algorithm),能够处理多种语言的文本。特点:识别单词:能够识别常见的单词边界。处理标点符号。原创 2024-11-10 19:51:51 · 2170 阅读 · 0 评论 -
【缓存策略】你知道 Read Through(读取穿透)这个缓存策略吗?
博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主。原创 2024-11-12 09:17:12 · 1174 阅读 · 0 评论 -
【缓存策略】你知道 Write Back(回写)这个缓存策略吗?
博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主。原创 2024-11-12 12:10:49 · 976 阅读 · 0 评论 -
【Java 实战技术】你知道什么是 “看门狗”程序吗?
看门狗程序(Watchdog Program)** 是一种用于监控和管理其他应用程序或服务的程序。它的主要功能是在检测到被监控的程序出现异常(如崩溃、无响应等)时,自动采取措施(如重启、记录日志等)以恢复系统的正常运行。看门狗程序常用于提高系统的可靠性和稳定性原创 2024-11-05 06:00:00 · 1088 阅读 · 0 评论 -
【开发实战】彻底给你讲清楚 volatile关键字
volatile是 Java 中的一个关键字,用于修饰变量,确保变量的可见性和禁止某些编译器和处理器的优化。volatile变量的主要作用是确保多线程环境下的变量可见性和有序性。可见性:当一个线程修改了volatile变量的值,其他线程可以立即看到这个变化。有序性volatile变量的写操作不会被重排序到其前面的读操作之前,读操作也不会被重排序到其后面的写操作之后。原创 2024-11-08 09:30:00 · 1097 阅读 · 0 评论 -
【代码分支管理】你知道什么 GitFlow 吗?
GitFlow 是一种使用 Git 进行版本控制的工作流程,由 Vincent Driessen 在 2010 年提出。GitFlow 通过定义一系列分支及其用途,提供了一种结构化的方式来管理项目的开发、发布和维护。它特别适合于大型项目,尤其是那些需要频繁发布和维护多个版本的项目。原创 2024-11-07 13:29:30 · 674 阅读 · 0 评论 -
【前端新知识】Qiankun 微前端入门指南:从零开始构建模块化应用
随着现代 Web 应用的规模越来越大,单体应用逐渐显现出其局限性。微前端架构应运而生,它允许将大型应用拆分成多个小型、独立的应用,每个应用可以由不同的团队使用不同的技术栈开发,并且能够独立部署和更新。Qiankun 是一个由蚂蚁金服开源的微前端解决方案,基于 Single-SPA 框架,提供了强大的功能来帮助开发者实现这一目标。本文将带你从零开始构建一个基于 Qiankun 的微前端应用。Qiankun 是一个轻量级的微前端框架,它提供了一种简单的方式来将多个独立的小型前端应用集成到一个统一的界面中。原创 2024-10-29 13:41:07 · 1996 阅读 · 0 评论 -
【日常知识】你还不知道乾坤微前端吗?
乾坤(Qiankun)是蚂蚁金服推出的一个基于Single-SPA框架的微前端解决方案。它提供了一种将多个独立的小型前端应用集成到一个统一界面中的方法。乾坤的核心优势在于其支持多种技术栈共存、独立部署以及灵活的生命周期管理。这意味着不同团队可以使用不同的技术栈来开发各自的应用模块,并且这些模块能够无缝地组合在一起形成一个完整的大型应用。原创 2024-10-29 09:32:25 · 1741 阅读 · 0 评论 -
你知道什么是 BitMap 吗?
BitMap(位图)是一种数据结构,用于表示一个特定范围内的二进制位(0或1)序列。在计算机科学中,BitMap通常用于高效地表示大量的布尔值,每个位代表一个布尔值,可以表示存在或不存在、true或false等状态。原创 2024-03-03 14:52:37 · 2233 阅读 · 0 评论 -
什么是B+树,和B树有什么不同?
B+ 树是一种常用的数据结构,通常用于数据库索引和文件系统中。它是一种多路搜索树,具有以下特点:1. 每个非叶子节点都包含了一定数量的子节点,这使得 B+ 树具有更高的数据存储和检索效率。2. 所有数据都存储在叶子节点上,而非叶子节点只包含索引信息,这有助于减少磁盘 I/O 操作。3. 叶子节点之间通过指针连接,形成一个有序链表,方便范围查询和顺序访问。4. B+ 树的平衡性能保证了在数据插入和删除时树的高效性能。原创 2024-03-03 14:41:36 · 1420 阅读 · 0 评论 -
你知道什么是堆吗?有什么用处?
堆是一种数据结构,用于存储和组织数据。堆通常用于实现优先队列,其中具有最高(或最低)优先级的元素始终位于堆的顶部。堆分为最大堆和最小堆,最大堆中父节点的值大于或等于其子节点的值,而最小堆中父节点的值小于或等于其子节点的值。堆具有快速的插入和删除操作的优点,通常用于解决一些重要的算法问题。原创 2024-03-01 12:35:03 · 1414 阅读 · 0 评论 -
你知道什么是全双工吗?什么是半双工吗?
半双工(Half Duplex)是一种数据通信模式,允许数据在两个方向上进行传输,但不能同时进行。在半双工通信中,通信的双方可以交替地发送和接收数据,但不能同时进行发送和接收。这意味着当一方发送数据时,另一方只能接收数据,并且在数据传输完成之后才能切换角色。原创 2024-02-29 14:23:31 · 1607 阅读 · 0 评论 -
你知道什么是 CAS 吗?
CAS 是“Compare and Swap”的缩写,指的是一种并发编程技术。CAS 是一种乐观锁技术,用于实现多线程环境下的原子操作。CAS 操作包括三个步骤:比较内存中的值与预期值、如果相等则更新为新值、否则重试。在 Java 中,java.util.concurrent 包中的 Atomic 类和 AtomicReference 类提供了 CAS 操作的实现,例如 AtomicLong、AtomicInteger 等。CAS 可以用于实现非阻塞算法,提高并发性能。原创 2024-02-29 14:00:12 · 1351 阅读 · 0 评论 -
什么是保护性暂停模式 Guarded Suspension
保护性暂停模式(Guarded Suspension)是一种并发设计模式,用于在多线程环境中实现线程之间的协作和同步。在这种模式中,一个线程在等待某个条件满足时会进入暂停状态,直到条件满足后再继续执行。这种模式通常用于实现生产者-消费者模式或者线程间通信。原创 2024-02-28 13:52:36 · 1831 阅读 · 0 评论 -
你知道什么是康威定律吗?
康威定律是由计算机科学家马尔文·康威(Melvin Conway)于1967年提出的一个关于组织结构与系统设计之间关系的理论。原创 2024-02-28 13:45:27 · 1218 阅读 · 0 评论 -
系统中文保存后显示问号该如何解决(java+Springboot)
今天遇到一个现场问题,客户侧通过系统在界面保存一条数据,其中数据的title是中文,保存成功后,界面上中文显示一串问号。原创 2024-02-27 14:08:07 · 1426 阅读 · 0 评论 -
什么是三次握手和四次挥手?
三次握手(Three-Way Handshake)和四次挥手(Four-Way Handshake)是TCP协议中建立和断开连接时的过程原创 2024-02-27 13:40:20 · 1284 阅读 · 1 评论 -
你知道什么是IaaS、PaaS、SaaS?
IaaS是一种云计算服务模型,提供了基础的计算资源,如虚拟机、存储、网络等,用户可以根据需求按需使用这些资源,而无需购买和维护实际的硬件设备。IaaS服务提供商通常提供灵活的付费模式,按照实际使用量计费,用户可以根据需要扩展或缩减计算资源。原创 2024-02-27 12:36:23 · 2353 阅读 · 0 评论 -
你知道注册中心如何选型吗?
注册中心通常指的是一个用于管理和协调微服务架构中各个微服务实例的服务。它负责维护服务实例的注册和发现,以确保服务之间能够相互通信。注册中心通常包括服务注册、服务发现、健康检查等功能,是微服务架构中的重要组成部分。原创 2024-02-27 12:30:33 · 1034 阅读 · 0 评论 -
什么是回表查询,如何减少回表次数呢?
MySQL回表查询是指在使用索引进行查询时,MySQL数据库引擎在通过索引定位到数据行后,发现需要访问表中的其他列数据,而不是直接通过索引就能获取到所需的数据。这种情况下,MySQL需要再次访问表中的数据行,这个过程就称为回表查询(Referring to the table)。原创 2024-02-25 19:47:36 · 2940 阅读 · 0 评论 -
你知道什么是 CRSF 攻击吗?
CSRF(Cross-Site Request Forgery)攻击是一种网络安全攻击方式,攻击者利用用户已经认证过的会话来执行未经用户授权的操作。攻击者通过诱使用户访问恶意网站或点击恶意链接,在用户已经登录的情况下发送伪造的请求,以执行某些操作,如修改用户信息、发起转账等。这样的攻击可以导致用户数据泄露、账户被盗等安全问题。原创 2024-02-25 13:14:10 · 2414 阅读 · 0 评论 -
带你了解 JIT 优化技术
JIT(Just-In-Time)优化技术是一种在程序运行时动态优化代码的技术。它通过在程序执行过程中将部分代码编译成机器代码,从而提高程序的性能。JIT编译器可以根据程序运行时的上下文信息来优化代码,以适应不同的运行环境和硬件平台。这种技术可以帮助程序在运行时更高效地执行,减少不必要的性能损失。原创 2024-02-24 21:24:19 · 2695 阅读 · 0 评论 -
你真的了解分表算法吗?
分表可以提高数据库的性能和可维护性。通过将数据分散存储在多个表中,可以减少单个表的数据量,提高查询和操作的效率。此外,分表还可以更好地管理数据,避免单表数据过于庞大导致的性能问题。因此,合理地进行分表设计可以优化数据库的性能和可扩展性。原创 2024-02-24 13:35:56 · 1005 阅读 · 0 评论 -
带你了解拜占庭将军问题(分布式)
拜占庭将军问题是一个著名的分布式计算领域的问题,提出了一个有关分布式系统中节点之间通信可靠性和一致性的困境。问题的背景设想是,在拜占庭帝国的一支军队中,多个将军分布在不同的城市,必须通过消息传递来协调行动。然而,一些将军可能是叛徒,会发送虚假消息来混淆其他将军。原创 2024-02-23 15:22:30 · 1900 阅读 · 0 评论 -
Redis 为什么要定义 SDS
SDS(Simple Dynamic String)是Redis中的一种动态字符串类型,由Redis自己实现。Redis定义SDS(Simple Dynamic String)而不直接使用C语言的字符串主要是因为C语言的字符串存在一些限制和缺陷,而SDS可以弥补这些问题,提供更好的性能和安全性。常数时间复杂度的长度获取:SDS中存储了字符串的长度信息,因此可以在常数时间内获取字符串的长度,而C语言的字符串需要遍历整个字符串才能获取长度,时间复杂度为O(n)。自动扩展空间。原创 2024-02-23 14:15:02 · 1069 阅读 · 0 评论