- 浏览: 164336 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (327)
- JAVA (130)
- 工作笔记 (49)
- SQLSERVER (5)
- ORACLE (28)
- nginx (1)
- Unix C (16)
- 系统 (19)
- 网络技术 (17)
- WEB前端 (22)
- Eclipse (2)
- Tomcat (1)
- spring (7)
- MYSQL (12)
- Maven (6)
- JETTY (2)
- 设计 (2)
- 开源项目 (7)
- asterisk (0)
- C++ (2)
- WINDOWS (2)
- SCALA (0)
- 协议 (1)
- Netty (1)
- SHELL (1)
- mybaits (4)
- 并发 (2)
- 架构 (2)
- TCP/IP (8)
- 虚拟化 (3)
- 不要再说java慢 (0)
- mac (2)
- mysql乱码完美解决 (1)
最新评论
http://www.javapractices.com/topic/TopicAction.do?Id=29
Immutable objects have a very compelling list of positive qualities. Without question, they are among the simplest and most robust kinds of classes you can possibly build. When you create immutable classes, entire categories of problems simply disappear.
Make a class immutable by following these guidelines:
ensure the class cannot be overridden - make the class final, or use static factories and keep constructors private
make fields private and final
force callers to construct an object completely in a single step, instead of using a no-argument constructor combined with subsequent calls to setXXX methods (that is, avoid the Java Beans convention)
do not provide any methods which can change the state of the object in any way - not just setXXX methods, but any method which can change state
if the class has any mutable object fields, then they must be defensively copied when they pass between the class and its caller
Defensive copying:
http://www.javapractices.com/topic/TopicAction.do?Id=15
http://www.manning-sandbox.com/message.jspa?messageID=30035
Collections is not immutable, so Encapsulate collections
http://www.javapractices.com/topic/TopicAction.do?Id=173
Immutable objects have a very compelling list of positive qualities. Without question, they are among the simplest and most robust kinds of classes you can possibly build. When you create immutable classes, entire categories of problems simply disappear.
Make a class immutable by following these guidelines:
ensure the class cannot be overridden - make the class final, or use static factories and keep constructors private
make fields private and final
force callers to construct an object completely in a single step, instead of using a no-argument constructor combined with subsequent calls to setXXX methods (that is, avoid the Java Beans convention)
do not provide any methods which can change the state of the object in any way - not just setXXX methods, but any method which can change state
if the class has any mutable object fields, then they must be defensively copied when they pass between the class and its caller
Defensive copying:
http://www.javapractices.com/topic/TopicAction.do?Id=15
http://www.manning-sandbox.com/message.jspa?messageID=30035
Collections is not immutable, so Encapsulate collections
http://www.javapractices.com/topic/TopicAction.do?Id=173
发表评论
-
[转]如何用消息系统避免分布式事务
2015-09-11 16:17 401http://mp.weixin.qq.com/s?__biz ... -
QQ 新浪 淘宝联合登录(转)
2015-08-11 10:53 493http://takeme.iteye.com/blog/1 ... -
Linkedin开源实时分析框架Pinot
2015-06-20 10:39 492[url]http://engineering.linkedi ... -
自增主键
2015-06-17 16:56 461http://www.cnblogs.com/heyuquan ... -
Spring-Petclinic
2015-04-04 08:27 341petclinic http://xpenxpen.itey ... -
nginx 基本配置
2015-04-03 21:31 490http://www.cnblogs.com/lost-198 ... -
日志异步化
2015-03-25 22:44 398http://www.oschina.net/translat ... -
hiberbate 包升级和oracle版本
2015-03-16 15:00 463hibernate 版本和oracle 版本的问题。 228 ... -
Maven配置本地库加载ojdbc14-10.2.0.4.0.jar文件
2015-03-16 09:46 504http://blog.sina.com.cn/s/blog_ ... -
hibernate自增主键
2015-03-14 21:11 391http://xiaowei-qi-epro-com-cn.i ... -
kafka
2015-03-10 23:21 424http://www.infoq.com/cn/news/20 ... -
c3p0 参数
2015-03-09 18:15 554http://haoran-10.iteye.com/blog ... -
网友的学习路线值得借鉴
2015-03-04 10:08 369http://blog.csdn.net/liuxiaoyi2 ... -
使用JDBC获取各数据库的Meta信息——表以及对应的列
2015-01-03 13:21 446http://blog.csdn.net/renfufei/a ... -
hadoop 在centos 64位上的编译,非常重要
2014-12-09 21:15 388http://blog.csdn.net/picassolov ... -
hbase 在虚拟机中的安装(单节点) (转)
2014-12-02 16:39 406http://www.tuicool.com/articles ... -
Spring管理多数据源
2014-11-22 12:45 317http://blog.csdn.net/lovesqcc/a ... -
Java高并发编程——为IO密集型应用设计线程数与划分任务
2014-11-22 12:29 1462http://blog.csdn.net/xichenguan ... -
netty 和nio
2014-11-16 12:38 396http://blog.csdn.net/column/det ... -
spring mvc 的几个注解
2014-11-12 19:39 407http://csjava.blog.163.com/blog ...
相关推荐
"Immutable 详解及 React 中实践" Immutable 是一种编程概念,指的是一旦创建,就不能再被更改的数据。它可以解决共享的可变状态问题,提高应用的...在 React 中,使用 Immutable 库可以提高应用的性能和可维护性。
2. **提高性能**:通过利用共享数据结构(如尾递归优化和 Map 的键值对引用不变性),Immutable.js 可以实现高效的浅层拷贝和对比,减少不必要的对象复制。 3. **时间旅行与状态管理**:在 Redux 或其他状态管理库...
Immutable.js 是一个著名的实现不可变数据结构的库,但“immutable-core”则更专注于提供核心的不变数据操作功能。 **二、为什么使用Immutable-core?** 1. **性能提升**:通过减少不必要的对象复制,immutable-...
本文将深入探讨“前端开源库-redux-immutable”,这是一个专为Redux设计的库,旨在解决在处理状态时的不变性问题。 Redux 是一个流行的状态管理库,它在JavaScript应用中扮演着中央数据仓库的角色,负责存储所有的...
在这个初学者教程中,我们将深入探讨C#中的不可变对象,包括“内部不变性”和“观察不变性”的概念。 首先,不可变对象是指创建后其状态无法改变的对象。在C#中,一旦对象被创建并赋值,其引用类型的属性不能更改。...
小型JS库,无需修改原始对象即可修改深层对象的属性(不变性)。 与React(特别是在使用setState() )和Redux(在reducer内部)配合使用时效果很好。 这可以看作是React Immutability Helpers和Immutable.js的一种...
此外,“immutability-util”还考虑了与其他流行的JavaScript库,如Redux和Immutable.js的兼容性。它提供了一种轻量级的解决方案,对于那些不想引入更大库如Immutable.js的项目来说,是一个不错的选择。 在...
当使用immutable.js时,开发者可以确保传递给组件的数据在本质上是“不变的”,即使数据看起来结构相同,也能通过比较数据引用的不变性,来确定数据是否真正发生变化。这样,React就可以只对那些实际发生变化的组件...
在实际开发中,`kotlinx.collections.immutable`库可以应用于各种场景,如配置管理、状态管理、缓存以及需要保持数据一致性的业务逻辑等。结合Kotlin的其他特性和库,如`coroutines`(协程)和`Flow`(流),可以...
此外,`Immutable`库还优化了性能,因为它利用了对象的引用不变性,可以高效地进行比较和缓存计算结果。 在"azu-immutable-array-prototype-0fa9d2a"这个压缩包中,可能包含了对`ImmutableArray`原型的扩展源代码,...
这种特性使得数据的每次变更都会生成一个新的副本,而不是直接修改原有数据,从而确保了数据的纯净和可预测性。 1.2 好处:Immutable数据的主要优势在于提高性能、减少错误、简化调试和实现优化。由于每次变更都...
其中,Immutable CSS作为一种独特的CSS处理方式,旨在提高代码可维护性,降低样式冲突,提升应用的可预测性和性能。本文将详细介绍 Immutable CSS 的概念、优势以及其在实际开发中的应用。 首先,我们来解释一下...
这意味着你可以像操作普通数组和对象一样来操作这些不可变数据结构,但它们会在内部执行深拷贝以维护不变性。例如,`push`、`pop`、`splice`等方法在不可变数组上会返回一个新的数组,而不是修改原始数组。 ### ...
但是,它们很少提供不变性,因此不是线程安全的。 此外,他们通常会使用您将来可能需要的所有方法来实现一个blo肿的接口,但可能不会。 由于可以随意应用许多可选扩展,因此该程序包启用了强大的类型安全集合,...
图的不变性是为了支持历史,而可变状态属性是为了实时显示和交互。用法 var CreateGraph = require('immutable-graph') , NodeRegistry = require('immutable-graph/lib/node')()var [rasterSlug, createRoot]= ...
- **优化性能**:由于不可变数据不允许直接修改,所以每次修改都会生成新的数据结构,但可以利用对象的引用不变性进行高效的比较,如React中的PureComponent或shouldComponentUpdate,减少不必要的渲染。...
这个ID在进程运行期间保持不变,确保了在多线程或者分布式环境中的数据追踪和标识的独特性。 不可变性(Immutability)在编程中是一个重要的概念,尤其是在JavaScript这样的语言中,它通常用于避免因对象状态改变而...
这个文档集会深入探讨这些概念和实践,帮助开发者更好地理解和使用Immutable.js,以提升JavaScript应用的性能和可维护性。通过阅读和学习,你可以掌握如何在实际项目中应用不可变数据,解决状态管理问题,并优化代码...
这意味着每次尝试修改数据时,都会返回一个新的数据结构,保持原有结构不变。这在多线程或并发环境中特别有用,因为它消除了数据竞争的可能性。 2. **持久化数据结构**:不可变数据结构是持久化的,意味着每次修改...
4. **测试友好**:不变性简化了单元测试,因为不需要对状态变化进行额外的考虑。 ### `kotlinx.collections.immutable`库提供的类型 1. **PersistentList**:不可变的链表实现,支持高效的尾部追加操作。 2. **...