一、概要 不可变(immutable), 即对象一旦被创建,值就不能被改变,每次改变都会产生一个新对象。 不可变对象如下: string ImmutableStack ImmutableQueue ImmutableList ImmutableHashSet ImmutableSortedSet I ...
写在前边: list和tuple都是有序的,取值方式如list[1],tuple[1]。 list列表,是一种可变序列 tuple元组,是一种不可变序列,初始化后就不能修改 dict和set都是无序的。 dict字典,等同于map。dict存储键值对,如dict1 = {"key":"value"} ...
分类:
编程语言 时间:
2021-06-15 18:53:57
阅读次数:
0
1 从CopyOnWriteArrayList谈等效不可变对象在源码中的应用 CopyOnWriteArrayList的源码中应用了等效不可变对象。使得集合在遍历操作的时候,不用加锁也能保证线程安全。 1.1 CopyOnWriteArrayList Source Code public class ...
分类:
其他好文 时间:
2021-06-10 18:38:35
阅读次数:
0
这篇文章主要是对python中的数据进行认识,对于很多初学者来讲,其实数据的认识是最重要的,也是最容易出错的。本文结合数据与内存形态讲解python中的数据,内容包括: 引用与对象 可变数据类型与不可变数据类型 引用传递与值传递 深拷贝与浅拷贝 (id函数:你可以通过python的内置函数 id() ...
分类:
编程语言 时间:
2021-05-24 11:08:14
阅读次数:
0
浅拷贝:藕断丝连 深拷贝:原对象和新对象没有任何关系 1.python中对象的赋值实际上是对象的引用。 不可变对象:字符串、整形、元组。当你试图更改不可变对象的时候,例如执行了a = 1 实际是创建了一个新的值为1的对象让a指向它。 可变对象:列表、字典、集合。如列表list中适用append后li ...
分类:
编程语言 时间:
2021-05-24 07:05:47
阅读次数:
0
std::move 的定义 template <typename T> // typename表明type是一个类型 typename remove_reference<T>::type&& move(T&& t) { return static_cast<typename remove_refer ...
分类:
其他好文 时间:
2021-04-08 13:54:15
阅读次数:
0
数组作为函数参数传递的时候,会退化为指针,并不能得到数组的大小 一 void test1(int a[]) { cout << sizeof(a) << endl; } int main() { int a[4]; test1(a); } 输出结果是指针的大小,并不是数组的大小 二 void tes ...
分类:
编程语言 时间:
2021-03-18 14:12:35
阅读次数:
0
不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象、包装器对象等,那么到底为何Java语言要这么设计,真正意图和考虑点是什么?可能一些朋友没有细想过这些问题,今天我们就来聊聊跟不可变对象有关的话题。 以下是本文目录大纲: 一.什么是不可 ...
分类:
编程语言 时间:
2021-03-01 14:06:13
阅读次数:
0
Python语言特性 参数传递 (不)可变对象 可变参数 Python 异常机制常考题 Python性能分析与优化GIL常考题 什么是生成器 协程需要使用 send(None)或者 next(coroutine)来预激prime才能启动 在yield 处协程会暂停执行 单独的 yield value ...
分类:
编程语言 时间:
2021-02-18 13:56:04
阅读次数:
0
因为最近在研究线程安全和相关的可变对象和不可变对象的内容。 查看了下 StringBuffer 的源代码。 StringBuffer 的官方解释是,一个线程安全可变序列的字符串。StringBuffer 与 String 是一样的,但是是线程安全的。你可以在任何时候会存储一些字符串。有关 Strin ...
分类:
编程语言 时间:
2021-02-04 12:16:08
阅读次数:
0