- 博客(45)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 千万不要不断向 List 添加对象
优化方向具体方法适用场景选择合适 ListArrayList尾部插入,LinkedList中间插入根据操作类型选择数据结构预分配容量初始化ArrayList时指定容量数据量可预估的批量操作批量操作使用addAll()或减少方法调用和扩容开销对象复用重用可重置状态的对象高频插入且对象状态可重置的场景并行化使用并行流或线程安全集合大规模数据插入的高并发场景通过结合场景选择优化策略,可显著提升List插入性能。实际应用中建议通过性能测试工具(如 JMH)验证优化效果。
2025-03-16 10:17:12
745
原创 Java的方法引用语法(::)
在 Java 里,是方法引用(Method References)操作符,是 Java 8 引入的新特性,用于简化 Lambda 表达式,让代码更加简洁易读。它提供了一种简洁的方式来引用现有的方法或构造函数。在这种方式下,参数的传递是隐式进行的,它会根据方法引用的上下文和目标方法的签名来自动适配。
2025-03-11 17:38:03
281
原创 JVM中是如何定位一个对象的
在 Java 中,对象定位指的是如何通过引用(Reference)在堆内存中找到对象实例及其元数据(如类型信息)。JVM 主要通过和。
2025-03-11 08:37:06
450
原创 volatile 在 JVM 层面的实现机制
机制实现方式可见性通过内存屏障强制刷新主内存和本地缓存,确保多线程数据一致性。禁止重排序插入 StoreStore、StoreLoad 等屏障,限制编译器和处理器的优化。跨平台适配根据 CPU 架构选择最优屏障策略(如 x86 省略部分屏障)。字节码支持通过标志触发 JVM 的屏障插入逻辑。volatile的底层实现是 JVM 内存模型、处理器架构和编译器优化共同作用的结果,其核心目标是为开发者提供轻量级的线程安全保证。
2025-03-10 14:44:19
1227
原创 单例模式,有必要用volatile么?
必要性:在双重校验锁中,volatile是保证线程安全的必要条件,而非可选项。底层原理:理解内存屏障、指令重排序和JMM(Java内存模型)是掌握并发编程的关键。实践建议优先选择枚举或静态内部类实现单例(无需复杂同步逻辑)。若必须使用双重校验锁,务必声明volatile并确保JDK版本≥5。在双重校验锁单例中,volatile不可或缺。它通过禁止指令重排序和保证内存可见性,守护了单例模式的线程安全底线。
2025-03-09 16:26:55
737
原创 RabbitMQ系列(七)基本概念之Channel
虚拟通信链路Channel 是建立在 TCP 连接(Connection)上的轻量级虚拟连接,允许在单个 TCP 连接上复用多个独立的信道(Channel)。为了确保其私有性和线程安全性,每个 Channel 拥有唯一的 ID,类似于在一个物理连接上创建多个“逻辑子通道”。与 Connection 的关系TCP 连接(Connection):客户端与 RabbitMQ 服务器之间的物理连接,负责底层数据传输。信道(Channel)
2025-02-27 14:29:24
1345
原创 RabbitMQ系列(六)基本概念之Routing Key
消息路由的核心标识生产者发送消息时需指定,交换机根据此值和队列绑定的决定消息流向。类比:类似快递单上的“地址”,决定包裹应送往哪个区域。与交换机类型强关联的具体匹配规则由交换机类型决定。例如::精确匹配和。:支持通配符(匹配一个词,通配符,匹配多个词)进行模式匹配。:忽略,广播到所有绑定队列1。核心作用:通过规则匹配实现消息的精准或灵活路由。选择建议精确路由 → Direct Exchange多维度分类 → Topic Exchange广播 → Fanout Exchange。
2025-02-27 01:06:39
854
原创 RabbitMQ系列(五)基本概念之Queue
消息存储容器Queue 是 RabbitMQ 中实际存储消息的实体,生产者发送的消息最终会被路由到队列中,等待消费者处理。类比:类似于“邮箱”,消息在队列中按顺序排列,消费者按需读取。消费者与消息的解耦生产者仅需关注将消息发送到Exchange(交换机),无需关心消费者数量和消费速度;消费者独立从队列中拉取或接收推送的消息,从而做到和生产者和Exchange的解耦。特性说明持久性决定队列和消息是否在服务重启后保留独占性控制队列是否仅限当前连接访问自动删除根据消费者连接状态自动清理队列消息确认机制。
2025-02-26 22:26:17
1065
原创 RabbitMQ系列(四)基本概念之Exchange
在 RabbitMQ 中,是消息路由的核心组件,负责根据规则将生产者发送的消息分发到对应的队列(Queue)中。
2025-02-26 21:13:05
995
原创 RabbitMQ系列(三)基本概念之Consumer
消息处理终端Consumer 通过订阅或拉取队列中的消息,进行业务逻辑(如数据处理、通知发送等)处理,是消息传递的最终使用者。解耦生产者与消费速度生产者(Publisher)只需关注消息发送,无需感知消费者的数量和处理能力,消费者(Consumer)独立按需处理消息,不直接与生产者关联,解耦他们的关系。
2025-02-26 18:55:45
644
原创 RabbitMQ系列(一)架构解析
RabbitMQ 是一个基于 AMQP 协议的开源消息中间件,其核心架构通过多组件协作实现高效、可靠的消息传递。
2025-02-26 18:30:05
1039
原创 RabbitMQ系列(二)基本概念之Publisher
消息发送者Publisher 将消息发送到 RabbitMQ 的Exchange(交换机),而非直接发送到队列。Exchange 根据消息的Routing Key(路由键)和绑定规则将消息路由到对应的队列(Queue)。解耦生产与消费生产者仅需关注消息的发送逻辑,无需知道消费者如何消费消息,实现了系统间的异步通信4。
2025-02-26 18:29:54
956
原创 RabbitMQ系列(零)概要
消息队列(Message Queue)是一种异步通信机制,允许分布式系统中的服务通过生产-消费模型传递数据。解耦性:生产者与消费者无需同时在线或直接交互削峰填谷:应对流量突发场景,避免系统过载(如秒杀系统请求缓冲)可靠性:通过持久化、重试机制保障消息不丢失。
2025-02-26 15:41:41
518
原创 RabbitMQ死信队列
在RabbitMQ中,死信队列(Dead Letter Queue, DLQ)是一种用于处理无法被正常消费的消息的机制。这些无法处理的消息称为“死信”(Dead Letter),它们会被重新路由到一个特定的队列(即死信队列),以便后续分析或处理。:捕获因各种原因无法被消费者处理的消息,避免消息丢失。:通过分析死信消息定位问题,或实现延时重试(如结合TTL实现延迟队列)。:将异常处理逻辑与主业务逻辑分离,提高系统健壮性。
2025-02-26 13:00:06
512
原创 MySql 获取表结构的4中方法
SELECT table_name AS `表名`, table_type AS `类型`, engine AS `引擎`, VERSION AS `版本`, TABLE_COLLATION AS `字符集`FROM information_schema.tablesWHERE
2025-02-26 11:04:50
227
1
原创 分布式事务核心理论:CAP与BASE
C(Consistency)一致性:所有节点同时看到相同数据A(Availability)可用性:每个请求都能获得响应P(Partition Tolerance)分区容忍性:网络故障时系统仍能运作理解CAP与BASE理论是设计分布式系统的基石。实际应用中需要:明确业务优先级合理选择一致性级别设计有效的补偿机制建立完善的监控体系随着分布式技术的发展,新的理论如PBS(概率有界过时)正在兴起,但CAP与BASE仍然是构建可靠分布式系统的核心指导思想。
2025-02-20 18:44:11
794
原创 Seata
如果使用DB模式存储Seata Server数据,那么需要创建一个seata库,并且创建对应的表。可以在一下地址获取到响应的表结构SQL。
2025-02-20 11:30:35
292
原创 在docker上部署nacos
三、创建一个本地文件夹,用来存放配置文件(比如:/user/xx/mydata/nacos),并且映射到docker里,然后把解压缩nacos文件夹里的conf文件拷贝到/user/xx/mydata/nacos下。这里需要特别注意的地方是,在2.0版本以前,只需要映射8848端口就可以了。所以要注意多映射两个端口,9848和9849,命令:-p 8848:8848 -p 9848:9848 -p 9849:9849。二、然后下载nacos的安装包,这里是为了拿到他的配置文件。下载完解压缩后,以备后用。
2025-01-26 01:51:31
760
原创 nacos配置中心
这样就可以读取到配置信息了。不给如果SpringBoot的配置信息是写在bootstrap.yml里的,可以实现配置信息的实时更新,如果是写在application.yml里的却不能实时更新。首先配置maven,添加spring-cloud-starter-alibaba-nacos-config。不需要OrderServiceApplication里写任何代码。最后在controller里加入@RefreshScope注解。
2025-01-25 09:34:05
182
原创 sea 框架学习入门
第一次知道sea是在14年底,微信不让用xxbridge分享网页时可以自定义分享图片,分享内容;于是跑去看微信的js脚本,发现一切全都变了,也看到了这个sea,于是至今耿耿于怀,今天趁着同事没命改代码,俺决定看看这个sea到底是个啥http://seajs.org/docs/#docs,sea的官方文档地址,说是推荐顺序阅读,不过说实话,看了那个5分钟入门的教程,我彻底晕没搞明白,后来
2015-02-03 20:04:02
1753
原创 The underlying provider failed on open 问题解决
用Entity Framework6,链接MS SqlServer,本地测试
2014-11-11 15:56:54
28759
1
原创 mysql 获取所有表定义
SELECT table_name AS `表名`, table_type AS `类型`, engine AS `引擎`, VERSION AS `版本`, TABLE_COLLATION AS `字符集`FROM information_schema.tablesWHERE
2014-08-03 21:50:11
633
原创 Asp.Net MVC 添加和更新页面缓存
1. 添加页面缓存添加页面缓存非常容易[OutputCache( Duration=6000)]public ActionResult CachePage(){ // Do something return View();}2. 更新缓存如果页面数据发生变化,则需要更新此缓存。此时可使用HttpResponse.RemoveOutputCacheItem("pa
2013-06-15 12:52:00
2224
原创 Asp.Net MVC 中获取Controller, Action 和参数的值
var controllerName = RouteData.Values["controller"];var actionName = RouteData.Values["action"];var parameterName = RouteData.Values["id"];
2013-06-15 11:05:41
1409
原创 JQuery 高亮显示文本
new document .keyword { color: red; background-color: yellow; } $(document).ready(function() { $('
2011-07-12 14:28:35
886
原创 Silverlight Out-Of-Browser 打开网页浏览器
最近在把一个silverlight项目弄成Out-Of-Browser(OOB),这个东西本身很简单,只要配置属性即可实现。但我的项目里有一个功能是下载文件,这个问题搞得我有点难受,耗费了很多精力。终于找到了方法,很高兴,记录一下using System.Runtime.InteropServices.Automation;//要添加这个引用 private void Hyp_Click(
2011-06-23 16:42:00
792
原创 MVC in Joomla! -- Component
<br />创建一个最基本的组件需要5个文件<br />site/hello.php 这个是组件的入口<br />site/controller.php 控制器<br />site/views/hello/view.html.php 视图,它将接受显示所需要的数据,并把数据传递给模板文件<br />site/views/hello/tmpl/default.php 模板文件<br />hello.xml 这个文件将告诉 Jooml
2011-02-27 11:26:00
729
转载 silverlight wcf 异常处理
http://www.cnblogs.com/agiledev/archive/2010/02/03/1662626.html
2011-01-12 11:12:00
654
翻译 Identity列
<br />原文地址 : http://www.simple-talk.com/sql/t-sql-programming/identity-columns/<br />Identity 列,有名字,基数,步长。当向表中插入一条记录,Identity列会以当前基数加上步长的结果插入到表中。<br /><br />注意:Identity列,既不会保证不重复,也不会保证其数据的连续性。所以,如果你的系统需要其唯一,一定要在该Identity列加上唯一索引。<br /> <br /> <br />创建和使用Ide
2010-11-28 17:43:00
1097
原创 获取选中的文本
<br /><script language=javascript><br />function getSelText()<br />{<br /> var txt = '';<br /> if (window.getSelection)<br /> {<br /> txt = window.getSelection();<br /> }<br /> else if (document.getSelection)<br /> {<br /
2010-07-20 16:55:00
379
原创 Sql server 里取得行号的方法
SELECT ROW_NUMBER() OVER(ORDER BY OrderDate, OrderID) AS RowNum ,OrderID ,OrderDate ,CustomerID ,EmployeeID FROM dbo.Orders
2010-07-20 16:52:00
1133
原创 sql server 中获得主键的方法
<br />select COLUMN_NAME = convert(sysname,c.name)<br />from sysindexes i, syscolumns c, sysobjects o<br />where o.id = object_id('[asp_lookup]')<br />and o.id = c.id<br />and o.id = i.id<br />and (i.status & 0x800) = 0x800<br />and (c.name = index_col('[a
2010-07-15 16:35:00
348
HTML5.Web.Application.Development.By.Example
2014-06-23
Pro Multithreading and Memory Management for iOS
2013-12-22
下载网站如何配置服务器
2015-01-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人