首页
学习
活动
专区
圈层
工具
发布

Kotlin | 实现数据类(data)深拷贝

在Kotlin中,data数据类默认的copy方法实现的是浅拷贝,但我们有时候需要实现深拷贝。 在kotlin中,实现就比较容易了。 那么什么是深拷贝与浅拷贝呢?...简单理解,浅拷贝指的是如果要拷贝A对象,则会重新创建一个B对象,并将其内部变量全部赋值给B对象,所以我们称之为浅拷贝。...而浅拷贝则相反,当你操作B对象中的某个引用对象时,就会影响到A对象。对于基本类型,深拷贝与浅拷贝都是直接赋值,并没有什么区别。...最终返回一个新的映射map,即返回一个属性值重新组合的map,并调用callBy返回指定的对象 }.toMap().let(primaryConstructor::callBy) } } data...class A(val name: String) data class Dep(val a: A) fun main() { val dep = Dep(A("123"))

2.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【JAVA】文件拷贝方式

    本篇博文的重点是,Java 有几种文件拷贝方式?哪一种最高效?...概述 Java 有多种比较典型的文件拷贝实现方式,比如: 利用 java.io 类库,直接为源文件构建一个 FileInputStream 读取,然后再为目标文件构建一个 FileOutputStream...注意,transferTo 不仅仅是可以用在文件拷贝中,与其类似的,例如读取磁盘文件,然后进行 Socket 发送,同样可以享受这种机制带来的性能和扩展性提高。...简单起见,只分析同类型文件系统拷贝过程。...参考教程 后记 以上就是 【JAVA】文件拷贝方式 的所有内容了; 分析了 Java IO/NIO 底层文件操作数据的机制,以及如何实现零拷贝的高性能操作,梳理了 Buffer 的使用和类型,希望对你在日常开发可以有所帮助

    1.2K20

    Java文件copy拷贝

    要说到文件拷贝,我们最先想到的估计就是,使用Java原生的InputStream和OutputStream了,实现一边读取一边拷贝。下面就来实现以下。...下面这个方法只能拷贝2G以内的文件。它会首先判断你这个文件是否大于2G,如果大于就不进行后续的拷贝了,直接返回-1。小于2G就去拷贝,并返回我们这个文件的大小。...e.printStackTrace(); } } 大文件的拷贝 能拷贝大文件首先你名字就要有大的样子,确实copy大文件的名字就比copy多了一个large,把名字换成copyLarge就可以了...返回值也是文件的大小。 copy和copyLarge有很多重载的方法,不过就这两个就够用了。 使用Java的java.nio 原来Java还真实现了,看来我只真的天真了。...Guava呢 文件对文件,不支持追加 我们不用担心文件存不存在,如果文件不存在的话,他会帮我们创建 @Test public void fileCopy(){ File src = new File

    2.1K20

    JAVA IO——文件拷贝

    前言 友友们大家好,我是你们的小王同学 今天给大家带来的是 JAVA IO——文件拷贝 希望能给大家带来有用的知识 小王的主页:小王同学 小王的gitee:小王同学 小王的github:...小王同学  一个文件从一个地方拷贝到一个地方具体的流畅就是如图:  在完成程序时,应该是读取部分数据 就写入到指定文件中 小王同学在d盘有一张background.jpg图片  小王同学想把通过输入流...将e:\\background.jpg拷贝到c:\\ * 思路分析 * 1、创建文件的输入流 将文件读入到程序 * 2、创建文件的输出流,将读取到的文件数据...将e:\\background.jpg拷贝到c:\\ * 思路分析 * 1、创建文件的输入流 将文件读入到程序 * 2、创建文件的输出流,将读取到的文件数据...d盘 好了今天小王同学带给大家的文件拷贝 就到此结束了

    1.1K20

    文件拷贝工具 原

    它的主要功能就是在本地与远程计算机间安全的复制文件。.winscp也可以链接其他系统,比如linux系统 sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。...可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。...其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是...中文名 安全文件传送协议 外文名 Secure File Transfer Protocol 缩写 sftp 作用 为传输文件提供一种安全加密方法 连接方法 windows中可以使用Core FTP,FileZilla..., WinSCP,Xftp来连接SFTP进行上传,下载文件,建立,删除目录等操作。

    1.3K30

    MySQL LOAD DATA INFILE—从文件(csv、txt)批量导入数据

    后改为"load data infile"大概,10万条数据平均1秒~1.5秒,实际的代码示例如下: query = "LOAD DATA INFILE '/var/lib/mysql-files/es.csv...需要开启对"load data inflie"的权限支持     mysqlcur.execute("SET GLOBAL local_infile = 1") (2)需要对mysql文件目录(笔者:...笔者通过python pandas to_csv()导出的csv是带标题的,如下: 不需要标题导入到数据库,就跳过嘛 (5)@dummy ,通过占位符,跳过不需要的数据 导入到表的column顺序必须和文件保持一致... (自备梯子)  MySQL 官方文档说明 — https://dev.mysql.com/doc/refman/8.0/en/load-data.html **********************...5年内把代码写好,技术博客字字推敲,坚持零拷贝和原创 写博客的意义在于打磨文笔,训练逻辑条理性,加深对知识的系统性理解;如果恰好又对别人有点帮助,那真是一件令人开心的事 ****************

    11.3K11

    MySQL的零拷贝技术

    ;data files:innodb buffer pool 是 data files 在内存中的缓存区,data files 是磁盘上的数据文件(B+tree);innodb_flush_method...对 log files 使用 O_SYNC 打开与刷新日志文件,使用 fsync 来刷新 data files 中的数据;O_DIRECT,即取值 4。...利用 Direct I/O 的方式打开 data files,但是每次写操作并不会调用 fsync 系统调用进行落盘;补充说明:以 O_SYNC 方式打开文件意味着文件的每一次写操作都直接导致将数据本身以及元数据刷新到磁盘上...否则,请使用 O_DIRECT,不然文件元数据的丢失可能会导致 MySQL 运行错误。4....write 方法进行;文件的 write 方法直接导致数据写于磁盘上;定时进行文件的 fysnc 调用,确保文件元数据写于磁盘上;REFERENCE1Buffer与Cache2MySQL :: MySQL

    1.6K40

    linuxunix 多线程拷贝文件示例

    为了进一步加深对线程的操作,本文介绍了使用多线程实现拷贝文件的一个案例,网络上虽然有很多多线程拷贝的案例,但是都存在重大 bug。...我们独辟蹊径,首先将一个文件分段映射到内存(mmap),随后将每一段映射的内存通知给线程,由线程去对每一段已经映射的内存进行复制。.... // 5 个线程 #define THREAD_COUNT 5 // 用以线程之间传递参数 struct tag_mmap { // 要读取源文件的起始内存位置 void* r_mem; // 要写入目标文件的起始内存位置...int wfd; // 创建被写文件,如果不存在则创建,并截断文件 wfd = open(argv[2], O_RDWR O_CREAT O_TRUNC, 0644); // 拓展文件 lseek...,那么就直接整个文件都映射进去处理 pthread_t tid; struct tag_mmap single; // 读文件映射 single.r_mem = mmap(NULL, buf.st_size

    84510
    领券