baihongyu.com
博客
关于我
并发编程——Volatile原理
Volatile关键字深度解析:可见性与非原子性的权衡JMM内存模型:理解Java内存管理的核心在Java编程中,内存模型是JavaVirtualMachine(JVM)规范中定义的核心概念。它屏蔽了底层计算机的差异,为程序提供了一致的内存抽象。现代计算机系统为了提高性能,引入了高速缓存(cache),将内存与处理器之间作为缓冲层。这种设计虽然提高了性能,但也带来了缓存一致性(CacheCoher......
阅读量:
797 次
2023-03-28
剑指 Offer 33. 二叉搜索树的后序遍历序列
二叉搜索树后序遍历序列验证后序遍历与二叉搜索树定义后序遍历(PostorderTraversal)是指遍历树的顺序为“左、右、根”。在二叉搜索树(BinarySearchTree,BST)中,这种遍历方式能够验证某个序列是否为二叉搜索树的后序遍历。根据定义:后序遍历定义:遍历顺序为“左子树、右子树、根节点”。二叉搜索树定义:左子树中所有节点的值小于根节点的值;右子树中所有节点的值大于根节点的值;其......
阅读量:
797 次
2023-03-28
Java——如何判断整数溢出
如何检测整数相加是否溢出并处理在编程中,处理整数溢出的问题是非常重要的,尤其是在执行加法、减法和乘法操作时。Java中的整数类型有固定的范围,int的范围是从-2^31到2^31-1。溢出会导致意外的结果,因此需要检测并处理溢出情况。在本文中,我们将探讨如何检测int相加后是否溢出,并在溢出时返回Integer.MAX_VALUE。我们还将讨论减法和乘法的溢出检测方法。加法溢出检测对于加法操作,我......
阅读量:
797 次
2023-03-28
代码重构——JAVA开发规范设计
软件开发规约指南一、编程规约1.1命名风格**【强制】**所有编程相关的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。**【强制】**所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。**【强制】**代码和注释中都要避免使用任何人类语言中的种族歧视性或侮辱性词语。**【强制】**类名使用UpperCamelCase风格,以下情形例外:DO/PO/DTO/......
阅读量:
797 次
2023-03-28
算法问题——链表问题(中等难度)
链表算法与数据结构实现链表是一种常见的数据结构,广泛应用于编程中的各种场景。以下是一些链表相关的算法和实现,涵盖反转、排序、合并、判断回文以及树与链表转换等内容。链表反转反转链表是一项常见的链表操作,用于将链表的方向反转。以下是两种反转链表的实现方法:反转链表(递归方法)递归方法通过递归地交换链表中相邻节点,最终实现链表反转。这种方法适用于较短的链表,但在长链表情况下可能导致栈溢出。publicL......
阅读量:
797 次
2023-03-28
KubeSphere——Service-Mesh原理与实战
微服务架构与KubeSphere全解析微服务架构作为现代软件开发的核心理念之一,通过将应用分解为一系列小型、相互独立的服务模块,显著提升了系统的可维护性和扩展性。这种架构理念不仅推动了云原生应用的发展,还为企业的业务创新提供了坚实的技术基础。微服务架构的核心特点微服务架构的设计理念主要体现在以下几个方面:高可维护性与可测试性:通过将业务逻辑分散到独立的服务中,开发者可以更专注于单一功能模块的实现,......
阅读量:
798 次
2023-03-28
Leetcode(每日一题)——1139. 最大的以 1 为边界的正方形
以1为边界的最大正方形与仅包含1的最大正方形一、以1为边界的最大正方形动态规划解法为了找到边界全为1的最大正方形,我们可以使用动态规划的方法。以下是详细的步骤:1.预处理阶段创建一个三维数组dp[i][j][0]和dp[i][j][1],分别表示网格点(i,j)横向和竖向连续的1的个数。遍历网格中的每一个点(i,j)。如果当前点是0,跳过。如果是1,计算横向和竖向连续的1的个数。dp[i][j][......
阅读量:
797 次
2023-03-28
微服务系统设计(10)——分布式定时服务设计
微服务环境下的定时任务构建问题在用户绑定手机号注册并补充个人信息后,通过会员生日信息进行营销是非常有价值的。然而,这一过程需要定时任务来推送营销信息,这在微服务架构下如何实现是一个值得深入探讨的问题。本文将从定时任务的选型、构建以及实际应用三个方面,带你一起解决这一问题。一、定时任务的选型选择适合的定时任务框架对于实现分布式定时任务至关重要。常见的解决方案主要有以下几种:XXL-JOB:一个轻量级......
阅读量:
797 次
2023-03-28
Python——正则表达式语法与实践
正则表达式入门与实践指南正则表达式(RegularExpression,简称Regex)是一种强大的文本匹配工具,广泛应用于字符串处理、文本解析等场景。通过正则表达式,可以定义复杂的文本模式,从而实现文本的匹配、提取或替换操作。正则表达式基础正则表达式由多个特殊符号和元字符组成,每个符号都有特定的意义。以下是常见符号的解释及其示例:符号解释示例说明.匹配任意字符b.t可匹配bat/but/b#t等......
阅读量:
797 次
2023-03-28
数据库架构设计——mysql备份系统设计
数据库备份与数据安全高可用性是保障业务连续性的基础,但面对灾难性事件,如数据库被意外删除或破坏,仅靠复制技术或InnoDBCluster并不可靠。因此,构建一个完整的备份体系至关重要。一、数据库备份的重要性在线上数据库备份之外,我们需要建立一个全面的离线备份系统,以防止数据全面丢失。这种备份体系的核心目标是实现数据的可用性与安全性。首要任务是确保线上数据库与离线备份系统之间的权限隔离。只有当一个人......
阅读量:
797 次
2023-03-28
Leetcode(每日一题)——2389. 和有限的最长子序列
为了解决这个问题,我们需要找到一个整数数组nums中元素之和小于等于给定查询数组queries中每个元素的最长子序列的长度。子序列是可以删除不连续元素,但顺序不变。方法思路排序数组:首先对nums进行排序,这样可以方便地使用二分查找来找到最长的子序列。前缀和数组:计算nums的前缀和数组,这样可以快速计算前k个元素的和。二分查找:对于每个查询值,使用二分查找在前缀和数组中找到最大的k,使得前k个元......
阅读量:
797 次
2023-03-28
Redis——Redis事务性原理
摘要本文将深入探讨Redis事务处理的原理与实践。尽管许多人认为Redis没有事务支持,但实际上Redis同样具备事务特性。这一观点与众多读者的认知存在差异,但它是绝对正确的。通过本文的学习,读者将不仅了解Redis事务的基本概念,还能掌握其在实际应用中的操作方法。一、Java传统的事务处理事务是一种将多个操作打包进行执行的机制,确保这些操作要么全部成功完成,要么全部失败。它是关系型数据库的核心功......
阅读量:
797 次
2023-03-28
Netty——客户端Accpt源码分析
Netty中的请求处理与连接管理Netty中的reactor线程Netty的核心运转依赖于两种类型的reactor线程:boos线程组和worker线程组。Boos线程组负责监听新连接并将其封装为channel对象后交给worker线程组处理,而worker线程组则专门处理连接的读写操作。无论是boos线程还是worker线程,其工作流程均包含以下三个步骤:轮询selector上的IO事件:boo......
阅读量:
797 次
2023-03-28
ShardingJDBC——分库分表实践
Sharding-JDBC分库解决方案本文将介绍基于ShardingJDBC实现的单库分表解决方案,结合SpringBoot进行实际应用。一、Sharding-JDBC简介Sharding-JDBC是ShardingSphere开源分片工具中首款产品,作为轻量级Java框架,主要在JDBC层面提供增强功能。它采用客户端直连的方式,通过jar包形式提供服务,无需额外部署即可运行,相当于一个增强版的J......
阅读量:
797 次
2023-03-28
Kubernetes——KubeSphere部署worldpress应用
在KubeSphere中部署WordPress应用WordPress是一个由PHP开发的博客平台,用户可以在支持PHP和MySQL数据库的环境中架设属于自己的网站。本文将介绍如何将WordPress应用以Kubernetes的形式部署至KubeSphere集群中,并在集群外访问WordPress服务。一、创建密钥由于MySQL的环境变量MYSQL_ROOT_PASSWORD涉及敏感信息,不建议以明......
阅读量:
797 次
2023-03-28
KubeSphere——使用deployment文件部署实战(3)
Kubernetes部署(Deployment)详解Deployment文件详解Deployment文件结构Deployment文件是Kubernetes中定义应用部署的核心文件,其主要作用是声明应用的运行环境和配置。以下是标准的Deployment文件结构:apiVersion:extensions/v1beta1kind:Deploymentmetadata:name:cango-demo#D......
阅读量:
797 次
2023-03-28
Python——垃圾回收机制(3)
摘要本文将介绍Python中的垃圾回收机制及其与Java的区别。Python采用引用计数为主的垃圾识别算法,这种机制与Java的引用计数存在显著差异。引用计数算法在解释型语言中表现尤为突出,但也带来一定的性能开销。为了应对循环引用问题,Python引入了root链表和unreachable链表的管理机制。此外,Python还结合分代回收机制,对非即时回收的对象进行分类管理,通过设定代际划分阈值来优......
阅读量:
797 次
2023-03-28
Android学习——android:cacheColorHint=“#00000000”
ListView是一个常用的Android控件,以下是一些实用的美化技巧和常见问题的解决方法:拖动时背景图片消失黑色背景问题当ListView拖动时,如果背景图片消失并显示黑色背景,直到拖动结束后才显示原图,可以通过以下方式解决:在XML中加入android:scrollingCache="false"或android:cacheColorHint="#0000000......
阅读量:
798 次
2023-03-28
算法训练营——字典树和并查集(第十课)
字典树和并查集字典树是一种高效的数据存储结构,能够在有限的内存空间中存储大量的信息。它通过分割和共享前缀,减少了节点的数量,从而降低了存储和查询的成本。与字典树相比较,传统的哈希表在存储相同数据时,需要为每个键值对分配独立的节点,导致内存占用显著增加。字典树的优势在于其节省空间和提升查询效率的能力,尤其在处理大量数据时表现尤为突出。并查集是一种基于并查结构的数据管理算法,广泛应用于动态连接问题中。......
阅读量:
797 次
2023-03-28
java常见错误示例——JUC并发工具类库导致的线程安全问题
线程安全与并发工具的坑点解析在线程安全问题等方面,现代编程语言提供了丰富的并发工具类。然而,盲目使用这些工具可能会带来意想不到的问题。以下将从几个典型场景出发,分析线程安全与并发工具使用中的常见问题。一、线程安全问题导致的用户信息错乱在实际业务中,曾遇到一个诡异的现象:用户信息在多线程环境下可能会错乱。最初的怀疑点是ThreadLocal的使用场景分析不够准确。举例而言,业务逻辑中使用Thread......
阅读量:
797 次
2023-03-28
上一页
下一页