前端笔记之NodeJS(一)初识NodeJS&内置模块&特点

mufengsm 2019-04-19 13:37:00 阅读数:682 评论数:0 收藏数:0

一、NodeJS简介

NodeJS是开发服务器后台的东西,和PHPJavaEEpython类似,和传统的浏览器的关注DOMJS完全不同,将JavaScript触角伸到了服务器端。内核是Chrome浏览器的V8引擎,解析JavaScript的效率是非常快的。

 创始人。

在不升级服务器配置的情况下,如何用软件手段来提升服务器性能:Ryan Dahl大致的感觉到了解决问题的关键是要通过事件驱动和异步I/O来达成目的。

传统的服务器模型:当我们做I/O操作的时候(I表示读,O表示写),CPU被磁盘操作阻塞了,此时我们称这叫做“同步I/Osynchronous I/O),阻塞I/Oblocking I/O)”。

CPU会经常对磁盘驱动发出I/O命令

此时磁盘特别忙,CPU就歇着了。造成了资源浪费。上图这种模式叫做“同步I/O”。

同步(synchronous):当系统遇见了一个需要耗费大量时间的事情的时候,选择死等。
异步(Asynchronous):当系统遇见了一个需要耗费大量时间的事情的时候,不死等,先做后面的事情,耗时事情做完之后,执行回调函数。

 

PHP做一个例子:下面程序中红色部分是I/O操作,此时CPU被阻塞,此时为什么不限做蓝色计算部分?等红色部分做完了用“回调函数”来显示文件内容多好。

<?php
    //读取文件
    $myfile = fopen("txt.txt", "r");
    //打印文件内存
    echo fread($myfile, filesize("txt.txt"));

    for($i = 2; $i < 100; $i++){
        $count = 0;
        for($j = 1; $j <= $i; $j++){
            if($i % $j == 0){
                $count++;
            }
        }
        if($count == 2){
            echo $i."<br/>";
        }
    }

    fclose($myfile);
?>

V8引擎来了。V8满足他关于高性能Web服务器的想象:

● 没有历史包袱,没有同步I/O。不会出现一个同步I/O导致事件循环性能急剧降低的情况。

V8性能足够好,远远比PythonRuby等其他脚本语言的引擎快。

JavaScript语言的闭包特性非常方便,比C中的回调函数好用。

 创始人Ryan Dahl想到了用V8引擎内核,用JS当做语言去开发服务端程序。

 

 

下面是Nodejs的画风,Nodejs不是语言,语言是JavaScriptNodejs是一个平台,让我们的JS可以运行在服务端的平台。

var fs = require("fs");
fs.readFile("./txt.txt" ,function(err, data){ console.log(data.toString()); })

for(var i = 2; i < 100; i++){
    count = 0;
    for(var j = 1; j <= i;j++){
        if(i % j == 0){
            count++;
        }
    }
    if(count == 2){
        console.log(i)
    }
}

红色的I/O操作没有将蓝色计算操作阻塞,称为“Non-Blocking I/O”非阻塞I/O。紫色语句是回调函数。

 

官网:https://nodejs.org/en/

中文:http://nodejs.cn/

NodeJS是一个JS运行环境,它构建在chromeV8引擎上。使用了事件驱动、非阻塞I/O模型,使它轻量并且方便。NodeJS有一个全球最大的包生态系统npm

 

Node.js使JavaScript的触角伸到了服务器开发中,在Node的世界中,我们关心的不再是用JS操作网页上的DOM、制作交互动画、表单验证……而是服务器端的事情:HTTP请求的处理、GET请求和POST请求、数据库增删改查、cookiesession等等。

 

Node.js的特点:单线程、非阻塞异步I/O、事件驱动。

NodejsJS的运行环境,它构建在ChromeV8引擎上。

Nodejs是一个小极客,追求极致的服务器性能,剑走偏锋的产物。

与其很多服务员闲着,还不如一个服务员100%的工作。

 


二、NodeJS的安装

 

NodeJSJava虚拟机一样,是跨平台的,也就是说只要写一份代码,可以运行在任何平台上。

 

NodeJS官网下载:

 

 

 

安装的欢迎界面

 

 

同意协议

 

 

安装路径全程不能有中文。

事实上很多软件公司已经去中文化,文档都是英语的文件名,文件夹都是英语的。

 

 

这个界面不需要改变任何的配置,但是要知道:这里安装了4个东西。

 

 

 

点击下一步就开始安装了

 

 

系统的防火墙,选择是

 

 

nodejs已经被成功的安装。

 

安装完毕之后,按windows键加R键(run),输入cmd(表示commond命令)按回车:

 

 

这是系统的密令提示符,可以输入类似DOS的命令。但是现在要输入

node -v

追求以下真理,安装过程,到底发生了什么?发现了一个Nodejs程序:

我们发现系统的环境变量中,已经添加了这个路径:

系统的环境变量可以保证我们的node在任意CMD盘符下可以被运行

nodejswindows中是一个exe程序。


 

三、运行Nodejs程序

c盘创建一个nodejs_study文件,然后写01.js文件

 

将文件拖拽到浏览器中不能执行的。

因为js的执行需要宿主环境(runtime),目前我们只知道一个环境:浏览器+HTML环境。

想要运行01.js程序:

<html>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
</body>
<script type="text/javascript" src="01.js"></script>
</html>

浏览器会渲染html就能执行js

 

NodeJS是一个全新的JS宿主环境runtime。也就是说可以用node运行js程序,而不需要html和浏览器。

打开CMD,首先注意光标所在盘符位置:

 

01.js文件不在C:\Users\admin>中,而是在C:\nodejs_study,所以要用cd命令来切换光标所在盘符位置:

 

当用cd切换到01.js所在目录时,此时可以用node命令执行js文件:

 

 

也就是说,运行js文件的时候:

① 要保证光标所在位置正确

② 运行谁,就node谁。

 

为了快速打开正确光标所在位置,此时有奇淫技巧:

 

要求大家,在运行node程序的时候,必须进入准确的盘符,不能使用绝对路径

 

最快的运行node程序的方法就是使用visual studio code,或者webstrom直接按F5IDE(编程工具)内置的控制台会输出结果。

 

CMD的命令:
cls
清屏。

cd ..
回退到上一级文件夹

cd 文件夹名字
进入这个文件夹

dir
列出当前目录中所有的文件

↑上箭头
重复上一条指令。

四、NodeJS内置模块

4.1 fs模块

NodeJS没有自己的语法,JS能写什么,node就能运行什么

但是要注意,仅限于JS语言核心部分。DOMBOM不能用,node没有浏览器的那些东西

document.getElementById("box"); window alert()

 

但是可以用定时器

setInterval(function(){
    console.log(Math.random());
},100)

ctrl+c可以打断Nodejs程序的执行。

 

Nodejs中提供了很多内置模块,帮助我们开发,可以提供浏览器所不具备的功能,模块是内置的,不需要额外安装。从fs内置模块学起,fsfile system文件系统的意思,提供了对文件的所有操作

// require表示得到,引入fs内置模块,file system文件系统模块
var fs = require("fs");

//fs模块有个方法叫readFile,可以异步读文件内容
//这个函数是异步函数,也就是说读取文件不会阻塞CPU执行,所以读取到的内容通过回调函数返回
//err参数:错误信息,没有错误将返回null
//data参数:返回文件的内容
fs.readFile("./test1.txt",function(err,data){
    if(err){
        console.log("文件读取错误!");
        return;
    }
    //读取的是信息流,是Buffer是缓冲的二进制,用toString()转为字符串
    console.log(data.toString());
});

利用fs.readFile()这个API来读取文件,并且是异步读取文件,这里注意两个事情:

1) 第一个参数是路径,必须以"./"开头,表示从相对于当前的cmd盘符位置去读取文件。

2) 第二个参数是回调函数,注意回调函数中提供了两个参数,分别是errdata。注意,nodejs中的所有回调函数的第一个参数都是err对象,表示错误。如果没有错误,这个对象是null

 

要会看APIhttps://nodejs.org/dist/latest-v6.x/docs/api/

 

var fs = require("fs");

fs.readFile("./test1.txt",function(err,data){
    console.log(data.toString());
});

fs.readFile("./test2.txt",function(err,data){
    console.log(data.toString());
});

fs.readFile("./test3.txt",function(err,data){
    console.log(data.toString());
});

 

在Nodejs中要适应回调套回调函数的写法:

var fs = require("fs");

fs.readFile("./test1.txt",function(err,data){
    console.log(data.toString());

    fs.readFile("./test2.txt",function(err,data){
        console.log(data.toString());

        fs.readFile("./test3.txt",function(err,data){
            console.log(data.toString());
        });
    });
});

4.2 http模块

http模块,Nodejs可以开发服务器。创建服务器的API要自己背诵记忆一下,不过,后面讲解Express,极大简化服务器的创建:

var http = require('http'); //读取内置http模块,这个模块提供了http服务

//创建一个服务器,是异步函数,事实上node中基本所有函数都是异步的
var server = http.createServer(function(req,res){
    //req表示request用户的请求
    //res表示response服务器的响应

    //设置响应报文头,让类型变为html并且是utf8编码
    res.setHeader("Content-type", "text/html;charset=UTF8");
    //页面上输出内容,输出内容用write,end表示结束!
    res.end("<h1>你好,我是nodejs开发的服务器!</h1>");
});

//监听3000端口,默认是80端口,但80被Apache占用了,所以改用3000
server.listen(3000,function(err){
    if(err){
        console.log("服务器开启失败!");
        return;
    }
    console.log("服务器开启成功,在3000端口,快打开浏览器看看吧!");
});

 

此时CMD会被挂起,按ctrl+c打断(打断之后,服务器也打不开了)

 

我们来验证程序确实在服务器上运行的: 

var http = require('http');

var server = http.createServer(function(req,res){
    res.setHeader("Content-type", "text/html;charset=UTF8");
    res.end("<h1>你好,我是nodejs开发的服务器!已经诞生了"+ (3 + 3) +"年了</h1>");
});

server.listen(3000);

 

在浏览器中,看不到后端node的源代码:

 

原因是Nodejs执行在服务器端,语句在服务器被执行、编译,此时发给浏览器的就是执行之后、编译后的纯文本了,不含有计算的。

 

两个问题:

1、我用Nodejs搭建的服务器,访问者也必须安装nodejs吗。

不需要的,因为nodejs是服务器程序,生成的内容仅需要浏览器就能访问

 

2、我们用高级ES6语法书写Nodejs程序,必须用高级浏览器访问吗。

不需要的,因为Nodejs程序不在浏览器执行。

 

req表示request用户的请求,访问者的所有必要信息在req中存储,比如

req.url
表示访问路径
req.connection.remoteAddress
表示访问者的ip地址
res表示response服务器的响应,服务器应该给与的反馈。
res.setHeader("Content-type", "text/html;charset=UTF8");
设置HTTP下行报文体

res.end() res.write()负责写下行报文体(就是网页)。

res.end()结束响应,告诉客户端所有消息已经发送完毕,当所有要返回的内容发送完毕时,该函数必须被调用一次,如果不调用该函数,客户端将永远处于等待状态。

 

var http = require('http');

var server = http.createServer((req,res)=>{
    res.setHeader("Content-type", "text/html;charset=UTF8");

    //页面显示的内容
res.write("<h1>hello world!</h1>");
    res.write("<ul>");
    res.write("<li>Nodejs</li>");
    res.write("<li>npm</li>");
    res.write("<li>Express</li>");
    res.write("<li>Mongodb</li>");
    res.write("</ul>");
   res.end(); //必须结束,否则本次操作不结束,浏览器显示为载入中
});

server.listen(3000);

五、NodeJS特点

5.1单线程

写一段程序,证明NodeJS是单线程的:

var http = require("http");

//在服务器外面定义一个变量a
var a = 0;

var server = http.createServer(function(req,res){
a++;
    res.end(a.toString());
});

server.listen(3000)

我们发现不是每个访问者来了都有新的a值,而是全班共用一个a,每个人访问的时候看到的都是已经被刷过的a值。

 

var http = require("http");

var server = http.createServer(function(req,res){
    var a = ~~(Math.random() * 1000);

    if(a == 38){
        throw new Error("有人踩地雷了,此人IP:" + req.connection.remoteAddress);
    }

    res.end("<h1>"+ a +"</h1>");
});

server.listen(3000)

JavaPHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的进程。而每个进程需要耗费大约2MB内存。也就是说,理论上一个8GB内存的服务器可以同时连接的最大用户数为4000个左右。要让Web应用程序支持更多的用户,就需要增加服务器的数量,而Web应用程序的硬件成本当然就上升了。

打个比喻,PHP假如是一个餐馆,那么就是一个这样的餐馆:来一个用户,它就给你新招聘一个服务员,专门伺候你。你点菜的时候,这个服务员帮你点菜,你开始吃了,你这个服务员就闲置。这就造成了大量的浪费,凭什么闲置服务员,为什么不去服务别人?

 

Node.js不为每个客户连接创建一个新的线程,而仅仅使用一个线程当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Node.js程序宏观上也是并行的。使用Node.js,一个8GB内存的服务器,可以同时处理超过4万用户的连接。

 打个比喻,Node.js假如是一个餐馆,那么就是一个这样的餐馆:总共就一个服务员,A用户来了,帮A用户点菜,B用户来了,B用户稍微被阻塞一下,A点完菜之后,厨师开始做,服务BB开始点菜,点菜的时候A的菜做好了,给B点完菜之后再去给A端菜,A开始吃,此时C来了,说了句欢迎光临之后,“您看看菜单先”,就去给B端菜去了,B开始吃上了,此时C开始点菜……。

 

 微观上,ABC不是并行的,但是宏观上他们是并行的!

 另外,单线程的带来的好处,还有操作系统完全不再有线程创建、销毁的时间开销。

 

 


5.2异步I/O特性

再来一个案例,用户访问页面的时候,服务器要读取两个文件,此时用console查看唯一的服务员如何工作:

var server = http.createServer((req,res) => {
     //用户访问的时候执行的语句。
    console.log(req.connection.remoteAddress + "进门了!我招呼他去!");
    res.setHeader("Content-Type","text/html;charset=UTF8");

 console.log(req.connection.remoteAddress + "用户开始读1号文件");
     fs.readFile("./test1.txt",(err,data1) => {
         console.log(req.connection.remoteAddress + "用户读完毕1号文件,开始读2号文件");
         fs.readFile("./test2.txt",(err,data2) => {
             console.log(req.connection.remoteAddress+"用户读完2号文件,开始发送response");
             
             res.write("<h1>" + data1.toString() +"</h1>");
             res.write("<h1>" + data2.toString() +"</h1>");
             res.end("");
         });
     });
});

你I/O的时候CPU并没有被阻塞,去伺候别人,当别人也I/O了此时执行你的回调函数。

综上所述,nodejs是一个服务员在伺候所有人,所以擅长I/O越多的业务。I/O越多,效率越高,nodejs不会错乱,采用就是事件环机制,也叫事件驱动机制,nodejs不擅长计算多的业务,因为给一个用户计算去了,此时唯一的线程就被阻塞了,其他用户进来就等待。

 

比如下面的程序,红色的部分是计算水仙花数,计算很复杂,但是是同步的,所以小服务员就被阻塞了:

var server = http.createServer((req,res) => {
     //用户访问的时候执行的语句。
    console.log(req.connection.remoteAddress + "进门了!我招呼他去!");
    console.log(req.connection.remoteAddress + "开始计算水仙花数了!");

    for(var i = 100 ; i <= 999 ; i++){
        // 给三位数拆分成三个单独的数
        var ge = i % 10;
        var shi = parseInt(i / 10) % 10;
        var bai = parseInt(i / 100);
        // 计算三次方的和
        var sum = Math.pow(ge,3) + Math.pow(shi,3) + Math.pow(bai,3);
        // 判断输出
        if(sum == i){
            console.log(req.connection.remoteAddress + "计算出了水仙花数" + i); } }
    res.setHeader("Content-Type","text/html;charset=UTF8");

    console.log(req.connection.remoteAddress + "开始读取文件");
     fs.readFile("./test1.txt",(err,data1) => {
         console.log(req.connection.remoteAddress + "读取文件完毕,开始输出响应流");
        res.write("<h1>" + data1.toString() +"</h1>");
        res.end("");
     });
});

5.3事件驱动

事件驱动是nodejs的底层机制,我们只需了解nodejs不会“上错菜”,原因就是事件驱动,有一个事件环。

 

Node中,客户端请求建立连接,提交数据等行为,会触发相应的事件。在Node中,在一个时刻,只能执行一个事件回调函数,但是在执行一个事件回调函数的中途,可以转而处理其他事件(比如,又有新用户连接了),然后返回继续执行原事件的回调函数,这种处理机制,称为“事件环”机制。

Node.js底层是C++V8也是C++写的)。底层代码中,近半数都用于事件队列、回调函数队列的构建。用事件驱动来完成服务器的任务调度,这是鬼才才能想到的。

 

 

 

2013年开始,Nodejs突然间火爆,因为Nodejs的工作流工具火了!

我们现在学习nodejs的意义,已经从学习HTTP服务器的构建,变为学习它的工作流工具。

公司的服务器都是PHPJSPPython.net制作的,nodejshttp服务是很少的。但是,每一个前端必须会Nodejs,因为之后用的所有的东西webpackbabelgulpgrunt等等都是基于nodejs的。

 


 


版权声明:本文为[mufengsm]原创文章
转载请带上:http://copyfuture.com/blogs-details/31769eb6b119e5468253d3e6fa88726f
或:https://www.cnblogs.com/rope/p/10724604.html


  1. 关于坚持和发展中国特色社会主义的几个问题
  2. 7种意式西装穿搭法,散发出优雅男人味!
  3. 日本反对无效!俄军500士兵70辆坦克登岛,北海道在导弹射程内
  4. 乐视控股:韬藴至今未支付收购易到资金,将提起诉讼
  5. 海底捞员工“神”服务背后的“核武器“
  6. Docker 下载镜像
  7. Spotify痛斥苹果:就是个垄断头子
  8. 《机器学习实战》-机器学习基础
  9. 一个曾经带来感动的时代:你还记得你玩过的家用主机吗?
  10. nginx+uwsgi+flask+supervisor 项目部署
  11. javascript ES6 新特性之 let
  12. 喝了一杯果汁,测餐后2小时血糖8.6算高吗?高到多少就算升高了?
  13. 物联网卡在智能家居之中,主要有什么用?
  14. 第3个1亿台冰箱下线,海尔将“世界第一”进化到未来
  15. 只比霸道贵3万,最便宜的陆巡来了,低配53万起,配手动变速箱
  16. xshell连接到服务器代理上网
  17. css炫酷动画收藏
  18. 库里复出26分,勇士力克活塞返西部第一!汤神24分,追梦14+8
  19. 桑切斯效应?德赫亚后,曼联又有两主力索要高薪,不给就离队!
  20. 科学家将液态金属转化为等离子体!
  21. 一分钟充好电是什么概念?菲斯克声称将造1分钟充好电的电动汽车
  22. 每年追《权力的游戏》,都提前一个月做好挨虐准备
  23. 荐读|水不试,不知深浅;人不交,不知好坏。
  24. 签到抽奖功能——常见前端抽奖需求
  25. 人工智能时代:哪些行业迎来重大变革?
  26. 京东财报电话会议实录:刘强东称今年会更关注三四线城市
  27. LOL:不进季后赛的LGD才是真正的LGD!2:1击败OMG让出垫底的位置
  28. 《强奸日》引起众怒 苏格兰议员强烈谴责黄色暴力游戏
  29. 如何写工程代码——重新认识面向对象
  30. Java集合--TreeSet详细解析
  31. 为啥买车的人越来越少?知道原因后,你还敢买车吗
  32. java jdk动态代理模式举例浅析
  33. 【计算机网络】TCP/IP若干问题
  34. RSA2019创新沙盒 | Duality: 基于同态加密的数据分析和隐私保护方案
  35. 核潜艇通讯:决定全球海洋归属权的暗网系统
  36. 迪丽热巴已成立自己的工作室,看到名字后,网友:杨幂没白疼你
  37. 霉变食物不可惜,当心黄曲霉素成肝之殇!
  38. 货架半空四个月,全时便利店终于找到“接盘侠”
  39. 营养师提醒您:糖友别吃汤泡饭
  40. [Swift]LeetCode606. 根据二叉树创建字符串 | Construct String from Binary Tree
  41. 科学家在石墨中观察到“第二类声”,神奇特性再加一?
  42. 揭秘顺治皇帝壮年而毙的背后隐情
  43. 大连工业制造领域开始应用5G技术
  44. 在线制作数据库ER模型
  45. [Cake] 2. dotnet 全局工具 cake
  46. 中国无人机手起刀落,百万美元T72直接被打爆,沙特说“买值了”
  47. “高价回收驾照分”?那驾照分值不值钱,能不能进行买卖?
  48. 爆款20万元日系标杆SUV 动力媲美同级别轿跑
  49. Kubernetes集群搭建之Master配置篇
  50. 写得太好了!做餐饮不是一般人能干的,只要干好的都不是一般人!
  51. 歌名是晴天歌词是雨天,多少年后才懂:周杰伦《晴天》
  52. 宇宙起源:宇宙大爆炸(1)
  53. 联想上演碰瓷闹剧, PPT发布会被网友集体吐槽
  54. 10部结局极具争议的电影,直至今日,人们仍在争论
  55. Android 四大组件之broadcast的理解
  56. Elastic Search 安装和配置
  57. 12点聊电商:淘宝规范商务等行业 对严重违规者立即清退
  58. mysql实现主从备份
  59. “村与村的战斗”?日本战国时代的战争规模真的那么小吗?
  60. 三个关键点,确保以普惠多赢理念助推“一带一路”
  61. 吴京新片正式开拍,继成龙章子怡加盟后,如今又来了一位人气男星
  62. PYPL 二月榜单发布:最受欢迎的编程语言、IDE 和数据库都是哪些
  63. 评论:一个豆瓣差评没什么大不了
  64. 地球是唯一有表面液态水的星球,为啥会有水存在?没水会有啥变化
  65. Python爬虫入门教程 38-100 教育部高校名单数据爬虫 scrapy
  66. #Java干货分享:这五个网站能打通你的任督二脉,让你技术大增
  67. 一个亡国之君,那些击败、戏弄他的人,都被“他的名字”熬死了
  68. 解决下一个500亿快递!未来的千亿快递,需要智慧物流骨干网!
  69. 没想到吧,《绿皮书》的台词居然还能这样读?
  70. 外媒曝《复联4》主演片酬,钢铁侠赚5亿,黑寡妇1.3亿
  71. iate id generator错误
  72. 十年老策划把他想对萌新说的话做成了一款游戏
  73. 比亚迪F3终将被取代,新车型内外更漂亮,1.5L自吸5万将开卖!
  74. 拼多多发布2018扶贫助农年报,农产品销售653亿同比增233%
  75. 啥都涨,粮价不涨?该如何确保粮食安全?
  76. MATLAB 音响系统工具箱
  77. 一个新手程序员 2019 的九大尴尬瞬间
  78. 一季度31省消费支出榜出炉!10省花钱比赚钱“能干”,广东“超车”江苏,辽宁黑龙江名次跌(多图)
  79. 与河南巡抚田文镜斗法,直隶总督李绂却为何输了?
  80. 基于CAS实现单点登录(二)
  81. 魏建军们用实力“打脸”不懂中国汽车工业的人
  82. 前端知识分享.md
  83. 转载,汉语世界上最先进的语言(来自几年前的转发,如今重新转发)
  84. 硝苯地平缓释片、硝苯地平控释片,哪一个好?告诉你答案
  85. Sign Up Account In CloudAMQP
  86. 湖人绿军在总决赛相遇13次,湖人却只赢了4次?只因一人遭8连亚军
  87. 【品金庸】武馋仁“三绝”——洪七公
  88. 张庭背小三骂名委屈20年?林瑞阳前妻疑怒怼:该感谢我静默21年
  89. 揭开趣头条的“土味”流量生意经
  90. 华为有哪些“备胎”?这里有一份中国芯片企业权威榜单
  91. 华为高通就专利和解谈判:或每年支付高通超5亿美元
  92. 程序员:如何正确使用你的黄金时间
  93. python3入门教程之基本数据类型(一)
  94. 这十个人的背后,是2018年游戏业的悲欢离合
  95. "年轻人离开工厂送外卖"不应被误读,也不该有偏见
  96. 刀塔自走棋:野兽流不完全攻略
  97. 无状态点赞 王思聪骂Uzi,直播间惨遭爆破!官博秒回应!
  98. 齐王司马冏为何会兵败身亡?绝不是史书所说的“贪图享乐”
  99. 有些句子真的很美,这就是语言文字的魅力
  100. “团贷网”案:实控人近9亿转移隐匿资金被追缴冻结

  1. Python开发:部分第三方库无法在线安装解决方法(947)
  2. [Swift]LeetCode325. 最大子数组之和为k $ Maximum Size Subarray Sum Equals k(779)
  3. Matlab 2019a 安装包下载以及安装和激活(717)
  4. 仅限Edge和Chrome访问 全新网页端Skype应用上线(685)
  5. 前端笔记之NodeJS(一)初识NodeJS&内置模块&特点(682)
  6. C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序(663)
  7. 【预警通告】Weblogic反序列化远程代码执行漏洞(640)
  8. Visual Studio 2019 正式发布,重磅更新,支持live share(599)
  9. 【预警通告】Apache Tomcat远程代码执行漏洞CVE-2019-0232(573)
  10. 网上赌博平台维护审核提不了款怎么办?(535)
  11. React 与 React-Native 使用同一个 meteor 后台(525)
  12. Sublime Text3 最新版3207 安装及破解(458)
  13. Visual Studio 2019 正式发布(389)
  14. [翻译] Visual Studio 2019: 极速编码. 智能工作. 创造未来.(388)
  15. 刘强东身边的CXO还有谁“幸存”(373)
  16. 舍命生子产妇吴梦丈夫怒斥:没抢肺源不是精神分裂,网友断章取义(371)
  17. Confluence SSRF及远程代码执行漏洞处置手册(370)
  18. 机器学习 ML.NET 发布 1.0 RC(369)
  19. 阿里巴巴2018年纳税516亿元 同比增40%(368)
  20. K8s集群安装--最新版 Kubernetes 1.14.1(336)
  21. 雷军清华演讲实录:小米9年的创新、变革与未来(332)
  22. 小米手机卖不动了?(327)
  23. F#周报2019年第14期(317)
  24. 积分一样却选手下败将出战国际赛,《最强大脑》云队选手被坑了?(300)
  25. 《最强大脑》要垮?桑洁魏坤琳出轨细节被扒,戚薇才是神助攻(257)
  26. 华电教授孙玉兵被指与昔日同学共同学术造假,多所高校调查(250)
  27. F#周报2019年第15期(249)
  28. 日本明仁天皇退位,日本“平成”年代结束(246)
  29. linux系统安装cdcfordb2udb(241)
  30. Oracle甲骨文大规模裁员,你背离时代就会被淘汰(240)
  31. 他联系叙恐怖分子“卖军火”,称能搞到2000枚导弹,关键时刻中国警察出手(237)
  32. 魔兽世界:8.15搏击俱乐部坐骑获取流程 鳄鱼布鲁斯坐骑(236)
  33. 针对django2.2报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: ill....(235)
  34. 女友被曝插足许志安郑秀文婚姻 知情人透露马国明已下定决心分手(232)
  35. 视觉中国深夜道歉:全面配合监管部门彻底积极整改(228)
  36. 为什么国内汽车用沥青阻尼片,而欧洲主机厂却用树脂?(228)
  37. SQL简介及MySQL的安装目录详解(227)
  38. 谁是苏小明饭局爆粗偷拍者?知情人称另有其人(223)
  39. NodeJs之邮件(email)发送(222)
  40. 迪玛希好惨!昨晚《歌手》为声入人心男团帮帮唱,却再被指控侵权(222)
  41. 市值暴跌90%,世界零售巨头申请破产战胜了所有对手却输时代(221)
  42. 函数防抖,与函数节流(219)
  43. 机器学习基石笔记:01 The Learning Problem(217)
  44. 深度学习python的配置(Windows)(215)
  45. [深度应用]·实战掌握Dlib人脸识别开发教程(213)
  46. 许志安出轨视频系蓄谋偷拍?司机被曝收40万装红外摄像头(210)
  47. Google AI 系统 DeepMind 高中数学考试不及格(210)
  48. 干货!21部漫威电影观影顺序指南,在《复联4》之前赶紧补齐!(208)
  49. 赌命生子九个月后,吴梦离世:前半辈子任性了,我用生命买单(206)
  50. 威廉王子出轨凯特王妃闺蜜? 外媒称婚外情致兄弟反目(203)
  51. spring-cloud-sleuth+zipkin源码探究(203)
  52. WebGL three.js学习笔记 纹理贴图模拟太阳系运转(201)
  53. 新更新kb4493472导致无法正常开机(195)
  54. 杜敬谦死因疑曝光!或因他这一特殊的训练方式,泳迷高呼孙杨退役(190)
  55. 韦杰落网,金诚集团终局(188)
  56. AntDesign Form表单字段校验的三种方式(188)
  57. 华为推出方舟编译器 称可提升安卓系统效率(185)
  58. 山东庆云民企3000亩土地被贱卖 国企接盘拟转性(184)
  59. 《权力的游戏》龙妈有那么多爱她的人,为什么最终会选择琼恩雪诺(182)
  60. 张无忌为什么爱上她?陈钰琪版赵敏终于给答案了(181)
  61. “国防”靠美国? 韩国瑜=马英九2.0? 走着瞧(180)
  62. Python破解Wifi密码思路(180)
  63. 直认与老公感情淡了!27岁TVB上位女星:我们不是好熟(179)
  64. CUBA Studio 8.0 发布,企业级应用开发平台(179)
  65. 张丹峰出轨最新锤来了!毕滢的朋友圈简直刷新下限啊!(177)
  66. Github 上 Star 最多的个人 Spring Boot 开源学习项目(176)
  67. 使用 C 语言实现一个 HTTP GET 连接(175)
  68. 拿着普通员工超300倍的工资裁员800人,这家游戏公司CEO引发员工不满|一周新闻(175)
  69. AntD框架的upload组件上传图片时遇到的一些坑(175)
  70. 币安称 4000 万美元比特币被盗(174)
  71. 不要996!程序员创建955.WLB不加班公司名单,GitHub周榜第二(174)
  72. Weblogic CVE-2019-2647等相关XXE漏洞分析(173)
  73. Codejam Qualification Round 2019(173)
  74. simulink创建简单模型(172)
  75. 《跃迁-成为高手的技术》之联机学习(171)
  76. python爬虫重定向次数过多问题(171)
  77. [NewLife.XCode]高级查询(168)
  78. 强大的jQGrid的傻瓜式使用方法。以及一些注意事项,备有相应的引入文件。(167)
  79. 核心算法缺位,人工智能发展面临“卡脖子”窘境(165)
  80. Algolia使用教程 , 超详细傻子看都会(165)
  81. Delphi 开发微信公众平台 (二) 用户管理(164)
  82. 只需知道电话号码 即可监控任意一部手机,获取位置,太可怕(163)
  83. 范斯晶对祖母的称呼很意外,范志毅很心疼,缺少母爱的孩子不容易(162)
  84. 如何定位前端线上问题(如何排查前端生产问题)(162)
  85. 告诉你去越南芽庄必带回的好东西(161)
  86. 数学家发现完美的乘法(160)
  87. 百度网盘下载神器 PanDownload v2.0.9(破解版、不限速)(159)
  88. 双双出轨!许志安劈腿马国明港姐女友,二人被拍16分钟激吻超20次(159)
  89. 高管被警方带走背后:巧达科技操盘2亿人简历生意(159)
  90. 定义工作,解读自我——IT帮2019年2月线下活动回顾(159)
  91. 吹爆惠英红,《铁探》这位霸道总警司超带感!真乃港剧罕见大女主(156)
  92. vue生成图片验证码(155)
  93. 三国正史第一猛将:一人单挑数千人,不是吕布也不是关羽(154)
  94. 从0到1上线一个微信小程序(154)
  95. FreeSql 如何现实 Sqlite 跨库查询(154)
  96. 向佐的弟弟叫向佑,网友:那郭碧婷生的孩子叫什么?(153)
  97. spring-boot-2.0.3不一样系列之源码篇 - pageHelper分页,绝对有值得你看的地方(153)
  98. [Node.js] 3、搭建hexo博客(152)
  99. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的(152)
  100. TensorFlow从1到2(十)带注意力机制的神经网络机器翻译(151)

  1. 大数据技术之_24_电影推荐系统项目_07_工具环境搭建(具体实操)
  2. 前端限制显示的文本字数的几种方法——不换行与换行
  3. 【实验吧】该题不简单——writeup
  4. 反向传播算法
  5. =、==、===、equals()的区别
  6. GitHub 推出开发者赞助项目
  7. 剑指Offer的学习笔记(C#篇)-- 从上往下打印二叉树
  8. argparse 在深度学习中的应用
  9. 张云雷复出?西城区文旅局:德云社在辖区内演出未发现违法违规问题
  10. Maven安装与配置
  11. acWing 825. 排队购物
  12. ajax&&jquery
  13. 苏联攻击机的悲壮行动,明知德军战机拦截,仍在无护航状态下出击
  14. 华为的5G技术,源于这种数学方法
  15. 一站式自动化测试平台 http://www.Autotestplat.com
  16. RabbitMQ总结
  17. 第九组 通信3班 063 自反ACL
  18. 短线还有最后一跌?大V们表示:反弹近了!(5月23日)
  19. 第九组 通信3班 063 OSPFv2与OSPFv3综合实验
  20. C# IE选项 - 重置IE
  21. Spring_数据校验和自定义检验规则
  22. 谈谈Java的string为什么是不可变的
  23. OFFICE 365 A1 Plus账号注册
  24. 初学python—做一个数组的增删改查操作
  25. oc工程中oc、swift混编代码打包成静态framework踩坑笔记
  26. 阿里云推“智能秒停系统”:50秒内短信通知 再不怕吃罚单
  27. 今天购买了一个云服务器
  28. 神奇!乌鸦竟然会传达悲观和怀疑情绪 还会对同伴“冷嘲热讽”
  29. 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例
  30. 点击事件的坐标计算(client || offset) +(X || Width || Left) 各种排列组合别绕晕
  31. windows下dubbo-admin2.6.x之后版本的安装
  32. linux 之基本命令学习总结
  33. 传祺难续“传奇”?销量暴跌超4成 加价卖车被“断裂门”尽毁
  34. 香港豪门后宫持续曝光:他用选美比赛“选妃”,与几万女星交往
  35. 小窥React360——用React创建360全景VR体验
  36. Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
  37. .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)
  38. “80后”女博士已任团中央书记处书记
  39. 杨元庆:现在是联想的最好时刻 我们四大战役全部打了胜仗
  40. Java开发环境的搭建(JDK和Eclipse的安装)
  41. oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词
  42. 机构风向标:外资出逃超500亿 美的集团等白马股表现欠佳
  43. 跟踪记录ABAP对外部系统的RFC通信
  44. c++11多线程详解(一)
  45. 小蓝杯,跌破发行价了
  46. [NewLife.XCode]百亿级性能
  47. 33岁何洁商场走穴被曝光,路人镜头下的她与精修图差别好大
  48. 途牛第一季度净亏损2240万美元 同比亏损幅度扩大
  49. 00 | Two Sum
  50. 智能威胁分析之图数据构建
  51. 快速掌握RabbitMQ(二)——四种Exchange介绍及代码演示
  52. Neo4j 第六篇:Cypher语法
  53. Java微信公众平台开发(三)--接收消息的分类及实体的创建
  54. Java8 中的 Optional
  55. 如何显示超大图像(3)
  56. 贵州检察机关依法对袁仁国决定逮捕
  57. 有关xerospolit运行报错问题的有效解决方案
  58. ADO学途 one day
  59. Linux 中 ip netns 命令
  60. Python爬虫之设置selenium webdriver等待
  61. BSOJ1040 -- 【练习题目】美元DOLLARS
  62. 外媒:稀土是中国手中的一张王牌
  63. sql server添加sa用户和密码
  64. 深入理解JVM的类加载
  65. querySelector和getElementById之间的区别
  66. 简说设计模式——观察者模式
  67. 扰动函数和拉链法模拟HashMap的存储结构
  68. 东芝中国:“上海东芝公司”不存在 未停止与华为的合作
  69. 彭于晏马思纯主演张爱玲这部小说,却被说更适合演《骆驼祥子》?
  70. 停止向华为供货?东芝辟谣回应
  71. 云米第一季度净利润5310万元 同比增长68%
  72. 贪吃的古蛙,古生物学家发现亿年前两栖动物之间战争
  73. APICloud发布低代码开发平台 效率提升30%至60%
  74. Golang 读写锁RWMutex 互斥锁Mutex 源码详解
  75. shell初级-----数据呈现方式
  76. 白玉兰入围名单公布!《知否》《都挺好》上榜,还有这部豆瓣3分剧
  77. 深网 | 京东618接入快手、抖音 实现“即看即买”
  78. 解决 APP启动白屏黑屏问题
  79. Spring Cloud Hystrix理解与实践(一):搭建简单监控集群
  80. 浏览器与服务器通信技术——jsonp
  81. 【刷题笔记】LeetCode 606. Construct String from Binary Tree
  82. 央行副行长刘国强:应对汇率波动经验丰富,政策工具储备充足
  83. 部署Azure Log Analytics
  84. 计算机基础--http的基础整理和巩固
  85. 章子怡:女人四十,不止表面风光
  86. 直击|对话杨元庆:希望今年创最好盈利 要震慑住谣言
  87. 微软通过合作为美国270万农村退伍军人提供高速宽带服务
  88. Java进程占用内存过高,排查解决方法
  89. Go语言中使用切片(slice)实现一个Vector容器
  90. 商务部回应美宣布对13个中国企业或个人实施制裁:反对“长臂管辖”
  91. 优酷土豆的Redis服务平台化之路
  92. shell初级-----处理用户输入
  93. 感受lambada之美,推荐收藏,需要时查阅
  94. 美团点评发布2019年第一季度财报,营收192亿元超预期
  95. 任正非:Arm暂停合作对华为没影响
  96. redis和memcached的区别(总结)
  97. Spring Cloud与Duddo比较
  98. File类
  99. 朝鲜最强智能手机!人脸识别、无线充电、画质感人还支持无线耳机
  100. “断供”传闻屡遭反转,谁在制造恐慌?