node

npm基础入门

泪湿孤枕 提交于 2020-01-20 13:58:51
1. npm简介 先来看下官方介绍: npm makes it easy for JavaScript developers to share and reuse code, and it makes it easy to update the code that you’re sharing 大概的意思就是: npm 是一个包管理器,让 JavaScript 开发者分享、复用、更新代码更方便。 npm有两层含义:一层含义是Node的开放式模块登记和管理系统(存包系统),网址:https://www.npmjs.com/;另一层含义是Node默认的模块管理器,是一个命令行软件,可以用来安装、管理和发布Node模块。 我们考虑下,没有npm之前前端程序员的操作方式: 当项目需要jQuery,需要手动去 jQuery 官网下载 jQuery 当项目需要BootStrap ,手动去 BootStrap 官网下载 BootStrap 当项目需要Underscore ,手动去 Underscore 官网下载 Underscore ....... 当有了npm之后,这些事情都不需要我们手动去处理了,npm自动去帮我们处理,其主要思想就是使用npm来把这些代码集中到一起来管理。 买个服务器作为代码仓库(repository,也就是:https://www.npmjs.com/)

Java多线程之JUC包:AbstractQueuedSynchronizer(AQS)源码学习笔记

ⅰ亾dé卋堺 提交于 2020-01-20 08:51:16
若有不正之处请多多谅解,并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/go2sea/p/5618628.html AbstractQueuedSynchronizer(AQS)是一个同步器框架,在实现锁的时候,一般会实现一个继承自AQS的内部类sync,作为我们的自定义同步器。AQS内部维护了一个state成员和一个队列。其中state标识了共享资源的状态,队列则记录了等待资源的线程。以下这五个方法,在AQS中实现为直接抛出异常,这是我们自定义同步器需要重写的方法: ①isHeldExclusively():该线程是否正在独占资源。只有用到condition才需要去实现它。 ②tryAcquire(int):独占方式。尝试获取资源,成功则返回true,失败返回false。 ③tryRelease(int):独占方式。尝试释放资源,成功则返回true,失败返回false。 ④tryAcquireShared(int):共享方式。尝试获取资源。成功返回true,失败返回false。 ⑤tryReleaseShared(int):共享方式。尝试释放资源,成功则返回true,失败返回false。 其中isHeldExclusively需要在使用Condition时重写

centos7 k8s 启动

坚强是说给别人听的谎言 提交于 2020-01-20 07:39:21
# 启动etcd存储服务 service etcd start # 运行master cd /opt/kubernetes/bin ./apiserver.sh 192.168.220.135 http://192.168.220.135:2379 ./scheduler.sh 192.168.220.135 ./controller-manager.sh 192.168.220.135 # 运行node(需要先禁用swap交换缓存,运行命令 swapoff -a) cd /opt/kubernetes/bin ./kubelet.sh 192.168.220.135 192.168.220.136 10.10.10.2 ./proxy.sh 192.168.220.135 192.168.220.136 # node 节点日志 tail -f /var/log/messages # 查看集群状态 kubectl get node kubectl get componentstatus 来源: https://www.cnblogs.com/rigid/p/8988254.html

【nodeJS爬虫】前端爬虫系列

白昼怎懂夜的黑 提交于 2020-01-20 05:36:32
本文转自 http://www.cnblogs.com/coco1s/p/4954063.html 写这篇 blog 其实一开始我是拒绝的,因为爬虫爬的就是cnblog博客园。搞不好编辑看到了就把我的账号给封了:)。 言归正传,前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 php , python 等。当然这是在 nodejs 前了,nodejs 的出现,使得 Javascript 也可以用来写爬虫了。由于 nodejs 强大的异步特性,让我们可以轻松以异步高并发去爬取网站,当然这里的轻松指的是 cpu 的开销。 要读懂本文,其实只需要有 能看懂 Javascript 及 JQuery 简单的nodejs基础 http 网络抓包 和 URL 基础 本文较长且图多,但如果能耐下心读完本文,你会发现,简单的一个爬虫实现并不难,并且能从中学到很多东西。 本文中的完整的爬虫代码,在 我的github上可以下载 。主要的逻辑代码在 server.js 中,建议边对照代码边往下看。 在详细说爬虫前,先来简单看看要达成的最终目标,入口为 http://www.cnblogs.com/ ,博客园文章列表页每页有20篇文章,最多可以翻到200页。我这个爬虫要做的就是异步并发去爬取这4000篇文章的具体内容,拿到一些我们想要的关键数据。 爬虫流程 看到了最终结果

BST

≯℡__Kan透↙ 提交于 2020-01-20 03:47:28
纸不短,情不长 /** * @Classname BST * @Description * @Date 2020/1/19 10:27 * @Author SonnSei */ public class BST < E extends Comparable < E > > { private Node root ; private int size ; public BST ( ) { root = null ; size = 0 ; } public int getSize ( ) { return size ; } public boolean isEmpty ( ) { return size == 0 ; } public void add ( E e ) { root = add ( root , e ) ; } private Node add ( Node node , E e ) { if ( node == null ) { size ++ ; return new Node ( e ) ; } if ( e . compareTo ( node . value ) < 0 ) node . left = add ( node . left , e ) ; else if ( e . compareTo ( node . value ) > 0 ) node .

娱乐时间利用node爬取表情包

时光怂恿深爱的人放手 提交于 2020-01-20 03:40:07
安装 npm install request 先引入需要的文件 var request = require('request'); var http = require("http") const fs = require('fs') const cheerio = require('cheerio') var path = require('path') 以上是引入 所需要的包 用到那个引入那个 大概流程就是 请求 拿数据 分析数据 获取需要的资源 保存资源 var request = require('request'); var http = require("http") const fs = require('fs') const cheerio = require('cheerio') var path = require('path') function runCode(id) { id++ request({ url: 'https://www.ivsky.com/bizhi/nvxing', method: "get", json: true, headers: { "content-type": "application/json", }, }, function (error, response, body) { let $ = cheerio.load

AbstractQueuedSynchronizer AQS源码分析

为君一笑 提交于 2020-01-20 03:15:11
申明:jdk版本为1.8 AbstractQueuedSynchronizer是jdk中实现锁的一个抽象类,有排他和共享两种模式。 我们这里先看排他模式,共享模式后面结合java.util.concurrent.locks.ReentrantReadWriteLock单独写一篇随笔。 后面还会分析可重入锁java.util.concurrent.locks.ReentrantLock。 言归正传,一起来看看吧。 AQS中主要是通过state变量来控制锁状态的,子类通过重写下面的某些方法并控制state值来达到获取锁或者解锁效果: 一般情况下要实现自己的锁,会实现java.util.concurrent.locks.Lock接口,并通过内部类继承自java.util.concurrent.locks.AbstractQueuedSynchronizer实现。形如下面这样: 好了,AQS的扩展就先到这里,后面讲具体的锁时再详细分析。 下面分析AQS本身的代码实现。 核心方法是java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(int)获取指定数量的锁(实际就是给state加多少的问题)以及java.util.concurrent.locks.AbstractQueuedSynchronizer.release

nodejs用于跨域全部

巧了我就是萌 提交于 2020-01-20 01:51:53
app.all("*",function(req,res,next){ //设置允许跨域的域名, 代表允许任意域名跨域 res.header(“Access-Control-Allow-Origin”," "); //允许的header类型 res.header(“Access-Control-Allow-Headers”,“content-type”); //跨域允许的请求方式 res.header(“Access-Control-Allow-Methods”,“DELETE,PUT,POST,GET,OPTIONS”); if (req.method.toLowerCase() == ‘options’) {res.send(200); //让options尝试请求快速结束} }else{ next(); } }) 来源: CSDN 作者: luoxindong 链接: https://blog.csdn.net/luoxindong/article/details/104041095

javascript Dom 编程

一世执手 提交于 2020-01-20 01:19:56
 javascript Dom 编程 知识概要: (1)Dom是什么? (2)Dom结构模型 (3)XML DOM和 HTML DOM (4)NODE接口的特性和方法 (5)DOM结点的常用属性 (6)DOM结点的常见操作 1.Dom是什么? document object model 文档对象模型 是W3C织制订的一套用于访问XML和HTML文档的标准.允许脚本动态地访问和更新文档的内容、结构和样式. 分类 DOM Core XML DOM HTML DOM XML介绍 2.Dom结构模型 Dom树形结构图如下 XML DOM 定义了访问和处理 XML 文档的标准方法 HTML文档格式 符合XML语法标准,所以可以使用XML DOM API 在XML DOM每个元素 都会被解析为一个节点Node,而常用的节点类型又分为 元素节点 Element 属性节点 Attr 文本节点 Text 文档节点 Document HTML DOM 定义了针对 HTML文档的对象,可以说是一套 更加适用于 JavaScript 技术开发 的API HTML DOM是对XML DOM的扩展 进行 JavaScript DOM开发 可以同时使用 XML DOM和 HTML DOM Node结点的特性和方法: 特性 / 方法 类型 / 返回类型 说 明 nodeName String 节点的名字

nodejs实现简单爬虫

本秂侑毒 提交于 2020-01-20 00:47:09
nodejs结合cheerio实现简单爬虫 1 let cheerio = require("cheerio"), 2 fs = require("fs"), 3 util = require("util"), 4 html = "", 5 https = require('https'), 6 list = [], 7 buffer = null, 8 newslist = [], 9 url = 'https://www.yidaiyilu.gov.cn/'; 10 let req = https.request("https://www.yidaiyilu.gov.cn/",function(res){ 11 res.on("data",function(data){ 12 list.push(data) 13 }) 14 res.on("end",function(){ 15 buffer = Buffer.concat(list) 16 html = buffer.toString() 17 $ = cheerio.load(html) 18 for(var i=1;i<=3;i++){ 19 let dlist = `.con_yw_${i}`; 20 $(".mybox .main-1").find(dlist).find('a').each((index,ele)=