node

【Vue】vue的双向绑定原理及实现

我们两清 提交于 2020-01-04 00:23:14
vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,那么vue是如果进行数据劫持的,我们可以先来看一下通过控制台输出一个定义在vue初始化数据上的对象是个什么东西。 代码: var vm = new Vue({ data: { obj: { a: 1 } }, created: function () { console.log(this.obj); } }); 结果: 我们可以看到属性a有两个相对应的get和set方法,为什么会多出这两个方法呢?因为vue是通过Object.defineProperty()来实现数据劫持的。 Object.defineProperty( )是用来做什么的?它可以来控制一个对象属性的一些特有操作,比如读写权、是否可以枚举,这里我们主要先来研究下它对应的两个描述属性get和set,如果还不熟悉其用法, 请点击这里阅读更多用法 。 在平常,我们很容易就可以打印出一个对象的属性数据: var Book = { name: 'vue权威指南' }; console.log(Book.name); // vue权威指南 如果想要在执行console.log(book.name)的同时,直接给书名加个书名号,那要怎么处理呢?或者说要通过什么监听对象 Book 的属性值。这时候Object.defineProperty( )就派上用场了

Docker swarm搭建(1)

你说的曾经没有我的故事 提交于 2020-01-03 19:48:17
Docker swarm docker swarm集群:三剑客之一 一. Docker Swarm 的基本概念和原理 Docker Swarm 简介 Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用go语言来完成开发,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。 Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息. Docker Swarm 工作原理 Docker 客户端通过 Docker API 向 Swarm 管理端发送请求,Swarm Manager 通过守护进程调用集群中的某个节点来执行任务。因为容器都是运行在节点上

kubernetes系列教程(十六)基于nginx ingress实现服务暴露

吃可爱长大的小学妹 提交于 2020-01-03 19:27:17
文章目录 写在前面 Ingress简介 Nginx Ingress 2.1 Nginx ingress介绍 2.2 Nginx ingress安装 Ingress资源定义 3.1 Ingress定义 3.2 Ingress动态配置 3.3 Ingress路径转发 3.4 Ingress虚拟主机 3.5 Ingress TLS加密 Nginx Ingress高级功能 4.1 定制化参数 4.2 虚拟主机和路由 写在最后 参考文献 写在前面 本章介绍 kubernetes系列教程 的ingress概念,在kubernetes中对外暴露服务的方式有两种:service(NodePort或者外部LoadBalancer)和ingress,其中service是提供四层的负载均衡,通过iptables DNAT或lvs nat模式实现后端Pod的代理请求。如需实现http,域名,URI,证书等请求方式,service是无法实现的,需要借助于ingress来来实现,本文将来介绍ingress相关的内容。 1. Ingress简介 An API object that manages external access to the services in a cluster, typically HTTP. Ingress can provide load balancing, SSL

Java集合之LinkedList

我是研究僧i 提交于 2020-01-03 07:22:17
上一篇写的是ArrayList,这一篇写一下LinkedList. 开宗明义,因为Vector已经被废弃了,所以list家族只剩下ArrayList和LinkedList两兄弟了,这里直接对比一下二位: ArrayList基于动态数组的实现,它长于随机访问元素,但是在中间插入和移除元素时较慢 LinkedList基于链表实现,在List中间进行插入和删除的代价较低,提供了优化的顺序访问。LinkedList在随机访问方面相对比较慢,但是它的特性集较ArrayList更大。 那么,到底特性集大在哪里呢? 这就是这篇博客的重点,在JAVA中,LinkedList可以作为我们最经常使用的两种数据结构来使用:栈和队列。Java中实现队列一般都是用LinkedList实现。 这是因为LinkedList的实现是一个双向链表,所以无论是FIFO还是FILO都可以实现。 (1)初始化: 先看一下LinkedList的继承情况吧: public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable 然后看一下LinkedList的成员变量 transient int size = 0; transient Node<E>

题解:复制带随机指针的链表

∥☆過路亽.° 提交于 2020-01-02 23:54:49
算法描述:先复制节点,将复制的节点连接在原节点的后面 拷贝节点的random ; 复制节点的random若非空节点,则复制节点的random为原节点random的next 链接复制链表和恢复原链表 Node * copyRandomList ( Node * head ) { //复制节点 Node * cur = head ; while ( cur ) { Node * next = cur -> next ; Node * copy = ( Node * ) malloc ( sizeof ( Node ) ) ; //拷贝数值 copy -> val = cur -> val ; //链接拷贝的节点 cur -> next = copy ; copy -> next = next ; //迭代 cur = next ; } //置拷贝的random cur = head ; while ( cur ) { Node * copy = cur -> next ; if ( cur -> random == NULL ) { copy -> random = NULL ; } else { copy -> random = cur -> random -> next ; } //迭代 cur = copy -> next ; } //把拷贝的节点接下来,连接成链表并把原链表回复

java实现带头结点的双向链表

帅比萌擦擦* 提交于 2020-01-02 21:31:19
在上一篇文章中,我们分享了如何使用java创建带头结点的单向链表,今天我们分享如何使用java实现双向链表,双向链表也叫 双链表 ,是链表的一种,它的每个数据结点中都有两个 指针 ,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。它的实现与单向链表及其相似,不同的就在add值,与remove值,具体的实现代码如下: ​ package com.zp; /** * 实现带头节点的双向链表 * @author zhaopeng * @create 2019-12-30 20:57 */ public class BidirectionalLinkedList<E> { //定义一个节点类 private class Node{ public E data; public Node next;//指向后一个节点 public Node pre;//指向前一个节点 public Node(E data,Node pre,Node next){ this.data=data; this.pre=pre; this.next=next; } public Node(E data){ this(data,null,null); } public Node(){ this(null,null,null); } } private int

node child_process模块

跟風遠走 提交于 2020-01-02 21:00:06
NodeJs是一个单进程的语言,不能像Java那样可以创建多线程来并发执行。当然在大部分情况下,NodeJs是不需要并发执行的,因为它是事件驱动性永不阻塞。但单进程也有个问题就是不能充分利用CPU的多核机制,根据前人的经验,可以通过创建多个进程来充分利用CPU多核,并且Node通过了child_process模块来创建完成多进程的操作。 child_process模块给予node任意创建子进程的能力,node官方文档对于child_proces模块给出了四种方法,映射到操作系统其实都是创建子进程。但对于开发者而已,这几种方法的api有点不同 child_process.exec(command[, options][, callback]) 启动 子进程来执行shell命令,可以通过回调参数来获取脚本shell执行结果 const { exec } = require('child_process'); exec('cat *.js bad_file | wc -l', (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } console.log(`stdout: ${stdout}`); console.log(`stderr: ${stderr}`);

链表反转算法

 ̄綄美尐妖づ 提交于 2020-01-02 16:23:10
闲余时间把看了一些常见的算法题,把链表对应的常见算法写了一下 如有疑问可加我QQ:1051980588共同探讨 1 package com.trs.codetool.sort; 2 3 /** 4 * @author zheng.changgang 5 * @date 2020-01-02 09:57 6 * 链表的常见算法 7 */ 8 public class LianBiao { 9 static Node head = new Node(0); 10 public static void main(String[] args) { 11 int[] nums = {1,2,3,4,5}; 12 for(int i=0;i<nums.length;i++) { 13 addNode(nums[i]); 14 } 15 //printNode(head); 16 17 /* // 递归反转链表 18 Node invertNode = invertLinkedList(head.next); 19 System.out.println(); 20 head.next = invertNode; 21 printNode(head); 22 // 非递归反转链表 23 iterationInvertLinkedList(head); 24 printNode(head); 25

基于Node.js的爬虫工具 – Node Crawler

拟墨画扇 提交于 2020-01-02 12:27:34
Node Crawler 的目标是成为最好的node.js爬虫工具,目前已经停止维护。 我们来抓取光合新知博客tech栏目中的文章信息。 访问 http://dev.guanghe.tv/category/tech/ ,右键查看页面源代码,可以看到文章信息等内容,如下所示: 1 2 3 4 5 6 7 8 9 10 11 < ul class = "posts" > < li > < span class = "post-date" > Dec 31 , 2015 < / span > < a class = "post-link" href = "/2015/12/Getting-Started-With-React-And-JSX.html" > React和 JSX入门指导 < / a > < / li > < li > < span class = "post-date" > Dec 30 , 2015 < / span > < a class = "post-link" href = "/2015/12/ReactJS-For-Stupid-People.html" > React 懒人教程 < / a > < / li > < / ul > 因为每篇文章都是一个 <li> 标签,所以我们从页面代码的所有 <li> 中获取文章的发布时间、链接和标题。 爬虫代码: 1 2

JavaScript DOM

巧了我就是萌 提交于 2020-01-02 04:09:34
JavaScript DOM   版权声明:未经授权,严禁分享!   DOM 概述    DOM (Document Object Model) 文 档对象模型 。   定义了访问和操作 HTML 文档的 API。   DOM 是 W3C(万维网联盟)的标准,W3C规定了所有的浏览器操作网页内容的统一API标准。 DOM 标准的 发展 历程 - DOM标准发展至今,共三级:   - DOM1级规范:98年最初的DOM规范,定义了文档的内容底层结构,所有的浏览器100%都兼容。   - DOM2级规范:基于DOM1级增加了许多交互模块,比如:     - 1、DOM Level 2 Core:基于 DOM1 扩展更多方法和属性。     - 2、DOM Level 2 Style:专门操作 HTML 样式的 API。     - 3、DOM Level 2 Traversal and Range :专门遍历DOM树结构的API。     - 4、DOM Level 2 Event:标准化的事件 API,仅 IE8 不支持,自成一套。   - DOM3级规范:进一步扩展了方法和属性,添加了新类型。 DOM 标准 W3C DOM 标准被分为 3 个不停的部分。   - 核心 DOM 针对任何结构化文档的标准模型。   - XML DOM 针对 XML 文档的标准模型。   - HTML