拷贝

前端面试总结(看看那些是你不知道的)

馋奶兔 提交于 2019-12-06 12:07:11
一、什么是闭包?闭包的工作原理?闭包的优缺点? 闭包最简单的理解就是在函数内部还有函数,为了解决JavaScript的局部变量问题, 如何从函数外部访问到函数内部的局部变量。 想了解更多请参考: 什么是闭包?闭包的工作原理?优缺点 二、JS的垃圾回收机制? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是 标记清除 。 工作原理:是当变量进入环境时,将这个变量标记为“进入环境”。当变量离开环境时,则将其标记为“离开环境”。标记“离开环境”的就回收内存。 工作流程: 1. 垃圾回收器,在运行的时候会给存储在内存中的所有变量都加上标记。 2. 去掉环境中的变量以及被环境中的变量引用的变量的标记。 3. 再被加上标记的会被视为准备删除的变量。 4. 垃圾回收器完成内存清除工作,销毁那些带标记的值并回收他们所占用的内存空间。 引用计数 方式 工作原理: 跟踪记录每个值被引用的次数。 工作流程: 1. 声明了一个变量并将一个引用类型的值赋值给这个变量,这个引用类型值的引用次数就是1。 2. 同一个值又被赋值给另一个变量,这个引用类型值的引用次数加1. 3. 当包含这个引用类型值的变量又被赋值成另一个值了,那么这个引用类型值的引用次数减1. 4. 当引用次数变成0时,说明没办法访问这个值了。 5. 当垃圾收集器下一次运行时

es6 Object.assign()深浅拷贝问题

梦想的初衷 提交于 2019-12-06 11:47:15
基本类型深拷贝,值传递有自己的内存空间,不会被修改 带有对象,修改对象里面的值都会被修改(浅拷贝),修改属性名则不会(深拷贝,仅限对象只有一层的情况) 浅拷贝,新旧对象共享共一个内存空间 深拷贝就是增加一个指针,并且申请一个新的内存地址,使这个增加的指针指向这个新的内存,再复制原变量对应内存地址里的值 深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象 来源: https://www.cnblogs.com/zhipengw/p/11981300.html

day05

本秂侑毒 提交于 2019-12-06 10:34:46
今日内容 集合 作用 增 删 改 查 其他操作 数据类型总结 深浅拷贝 is 和 == 的区别 浅拷贝 深拷贝 二次编码 编码 解码 昨日回顾 列表 -- 存储大量数据,可变,有序,可以存储不同数据类型 增 append insert 删 pop del 改 list[索引] = "值" 查 索引 for 循环 其他操作 sort 升序 sort(reverse=True) reverse 反转 字典 -- 存储大量数据,可变,无序,键值对数据,查找速度快.可以让数据和数据之间产生关联 增 字典[键] = 值 删 字典.pop(键) 改 字典[键] = 值 查 字典[键] for 循环 字典.get(键) 其他操作 keys 获取所有的键 values 获取所有的值 items 获取所有的键值对 作业讲解 今日总结 集合 -- 去重 -- 无序 -- 可变的 增 set.add() set.update() # 迭代增加 删 set.pop() # 随机删除 set.remove() # 通过元素删除 ***** set.clear() # 清空 -- set{} del set() 改 1.先删后加 2.数据转换 查 for循环 其他操作 交集 & 并集 | 差集 - 反交集 ^ 超集 > 子集 < 深浅拷贝 is 是判断两边的内存地址是否一致, == 是判断两边的值是否一致

设计模式之原型模式、策略模式、观察者模式

一笑奈何 提交于 2019-12-06 09:52:29
一、原型模式 1、什么是原型模式 克隆 原型模式是一个创建型的模式。原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。 2、原型模式应用场景 (1)类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。 (2)通过new产生的一个对象需要非常繁琐的数据准备或者权限,这时可以使用原型模式。 (3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用,即保护性拷贝。 Spring框架中的多例就是使用原型。 3、原型模式UML类图(通用) 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: (1)实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedException异常。 (2

scp 拷贝 针对软连接的问题

和自甴很熟 提交于 2019-12-06 07:03:44
scp时经常把软连接变成拷贝了两遍,rsync -l可以避免这个问题 1. ln 软连接的scp 我们在系统中,经常用到软连接;当我们从远程机器scp 数据时,这个软连接不会cp过来;而是: 把软连接到的目录中的内容完全cp过来;这样之前的软连接就失效了;这样会造成一系列的问题。 2. scp 文件夹 正确的方法:tar 打包在解压 sudo tar -czvf test.tgz /..../test scp ~/test.tgz ./ sudo tar -xzvf ./test.tgz -C /   注释:将待远程拷贝的文件夹压缩之后再拷贝, 可以避免软连接的拷贝 利用tar等压缩命令将文件夹压缩 但是如果文件夹无法操作, 则需要用下面的命令替换。 注释:使用rsync命令可以避免软连接问题 # 列出几个参数如下, 具体请man rsync查看 -u, --update: skip files that are newer on the receiver 增量同步,跳过比本地较新的文件 -a, --archive: archive mode; equals -rlptgoD (no -H,-A,-X) 归档模式, 相当于-rlptgoD, 不包括(no -H,-A,-X);最常用的参数 -z, --compress: compress file data during the

Kafka 线上环境部署需要考虑的因素

♀尐吖头ヾ 提交于 2019-12-06 07:02:55
【操作系统选型】 【硬件规划】 【容量规划】 操作系统选型 目前部署最多的三类操作系统为:Linux,OS X和Windows, 其中部署在Linux的最多,Linux也是推荐的操作系统。下面是两个主要原因: IO模型的使用 对于IO模型,Linux下有5种主流的模型: 阻塞IO , 非阻塞IO , 多路复用IO , 信号驱动IO , 异步IO . 每一种IO模型都有典型的使用场景,如Socket的阻塞模型和非阻塞模型对应于前两种,Linux中的select函数属于IO多路复用模型,至于第五种很少有UNIX和类UNIX支持,Windows的IOCP(IO Completion Port)属于第五种。至于Linux的epoll模型,可以看作兼具第三种和第四种模型的特性。 通常情况下我们认为epoll比select模型更高级,毕竟epoll取消了轮询机制,取而代之的是回调机制callback。相当于底层连接Socket过多时,可以避免很多无意义的CPU时间浪费。 在Kafka的client底层网络设计中,新版本采用了Java NIO的Selector机制,这种机制在Linux的实现就是epoll,但在windows上,Java NIO的selector底层使用的是select模型而非IOCP实现,,只有Java NIO2才使用IOCP实现,因此在这一点上

传统IO拷贝与零拷贝技术比较

我只是一个虾纸丫 提交于 2019-12-06 05:44:58
1. 传统IO 由上面图知,传统io需要经过4次copy, 3次状态切换 第一次: 从硬盘 经过 DMA 拷贝 到 kernel buffer (内核buferr) 第二次: 从kernel buffer 经过cpu 拷贝到 user buffer ,比如拷贝到应用程序 第三次: 从user buffer 拷贝到 socket buffer 第四次: 从socket buffer 拷贝到 protocol engine 协议栈 第一次状态切换: 用户态---》 内核状 (或者叫着 用户上下文----》 内核上下文) 第二次状态切换: 内核状---》 用户状 第三次状态切换: 用户状---》 内核状 DMA : direct memory access 直接内存拷贝 2. mmap优化 mmap : 通过内存映射 ,将文件映射到内核缓冲区,同时用户空间可以共享内核空间的数据。这样在网络传输时就减少了内核空间到用户空间的拷贝次数 第一次拷贝: DMA拷贝,从硬件拷贝到内核空间 因为user buffer 与kernel buffer共享数据 ,所以不需要将数据从kernel buffer 拷贝到 user buffer , 数据可以直接在内核空间修改 第二次拷贝: kernel buffer 中的数据经过 cpu 拷贝到 socket buffer 第三次拷贝: socket

深入了解Netty【二】零拷贝

别来无恙 提交于 2019-12-06 03:39:13
引言 以下翻译自: Zero Copy I: User-Mode Perspective 零拷贝是什么? 为了更好地理解问题的解决方案,我们首先需要理解问题本身。让我们来看看什么是参与网络服务器的简单过程dæmon服务数据存储在一个文件通过网络客户端。下面是一些示例代码: read(file, tmp_buf, len); write(socket, tmp_buf, len); 看起来很简单;您会认为只有这两个系统调用不会带来太多开销。事实上,这与事实相去甚远。在这两个调用之后,数据至少复制了四次,并且几乎执行了相同数量的用户/内核上下文切换。(实际上这个过程要复杂得多,但我想让它保持简单)。为了更好地了解所涉及的流程,请看图1。顶部显示上下文切换,底部显示复制操作。 图1。复制两个示例系统调用 第一步:read系统调用导致上下文从用户模式切换到内核模式。第一个副本由DMA引擎执行,它从磁盘读取文件内容并将其存储到内核地址空间缓冲区中。 第二步:将数据从内核缓冲区复制到用户缓冲区,read系统调用返回。调用的返回导致上下文从内核切换回用户模式。现在数据存储在用户地址空间缓冲区中,它可以再次开始向下移动。 第三步:write系统调用导致上下文从用户模式切换到内核模式。执行第三次复制,再次将数据放入内核地址空间缓冲区。不过,这一次,数据被放入一个不同的缓冲区

YOYO软件使用指南

天涯浪子 提交于 2019-12-06 03:32:34
YOYO 简介 YOYO 安装 YOYO 功能 yoyo 快速入门 yoyo 菜单操作 YOYO 快捷键 YOYO 简介 网络改变生活 YOYO领航网络 Foolab yoyo是一小巧精致的网络化资源收集管理程序(纯绿色)。为您提供了一个统一简洁 可自定制的界面,帮助您管理保存 本地文件 、 网络连接 以及丰富的 RSS 源(虽然她具有强大 的RSS阅读、管理、保存功能,但她决不仅仅是简单的RSS阅读器);同时,她也能协助您及 时方便地寻找、发现、分享您感兴趣的内容—浩瀚的网络中 一叶扁舟载您自由穿梭于云水间 ; 另外,她也通过丰富的 WIDGET 提供个人日记、天气预报、每日一点点等等小工具;她还特别 的关注您的用户体验,所有操作您只需轻轻点点、拖拖拉拉就能完成。 特别的YOYO具有以下特性: 采用WTL开发,简洁高效 采用XML存储,清晰通用 可订制化的界面风格,自由随意 鼠标拖放式收藏分类保存,方便快捷 菜单式RSS阅读,体贴自然 查找浏览本地保存,灵活方便 可标记式菜单,一目了然 独创的压缩式WIDGET,开放强大 垃圾箱、最近浏览记录以及方便的快捷键,体贴关心 网络同步化保存、分享,及时便捷 丰富的每日一点点订制,体贴关心舒心 开放的个人日记及时捕捉您的灵感快捷备份发布您的BLOG 找到你所要、收藏你所爱、分享你所好,欢迎使用yoyo软件。 YOYO 安装