Hello World 添加依赖: <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.132.Final</version> </dependency> 服务端: // 构建服务端的辅助类 new ServerBootstrap() // 添加事件循环组 .group…
Hello World 添加依赖: <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.132.Final</version> </dependency> 服务端: // 构建服务端的辅助类 new ServerBootstrap() // 添加事件循环组 .group…
NIO(non-blocking IO) 是 java 1.4 引入的新的 I/O 模型,相对于传统 IO,它的优势是非阻塞式的。 CS 模式的演变 要说明为什么需要 NIO,需要阐述 CS(Client-Server)模式的网络通信的演变。 最初和最简单的 CS 架构是这样的: 当服务端和客户端建立 socket 连接后,服务端启动一个单独的线程负责处理这个连接,直到任务完成,客户端断开连接。 如果连接数不多,这样的模式是可行的,因为单独的线程处理客户端请求,响应快延迟低。但如果连接数很多,就会在服务端产生大量的…
Eval eval可以执行一段 JS 代码片段: eval("console.log('hello world')"); eval可以执行多行语句,返回的结果时最后一条语句的结果: let result = eval("let i=0;++i;"); console.log(result); // 1 eval的词法环境包含于当前的词法环境,因此可以访问外部变量: let name = 'Jack'; eval("console.log('hello ' + name)"); // hello Jack 甚至是修改…
JS 中实现代理的语法: let target = {}; let proxy = new Proxy(target, {}); proxy.a = 1; console.log(proxy.a); console.log(target.a); for(let i in proxy){ console.log(i); } // 1 // 1 // a new Proxy接收两个参数,要代理的目标对象以及代理行为,这里代理行为使用的是空对象,因此所有对代理对象属性的读写都是由被代理的原始对象承担的。 get 可…
模块 在 JS 中,一个 JS 文件就是一个模块,可以使用export关键字暴露本模块的函数或变量给其它模块使用: export function sayHello(name) { console.log(`hello ${name}`); return `hello ${name}`; } 如果其他模块需要使用,可以使用import关键字导入: import {sayHello} from './hello.js' sayHello('Tom'); 如果是浏览器加载的 Html 文件,需要在代码片段<…
生成器 生成器函数 可以使用生成器函数返回一系列值: function* generator() { yield 1; yield 2; return 3; } var gen = generator(); console.log(gen); // Object [Generator] {} 如示例所示,使用function*定义的生成器函数,会在调用后返回一个生成器对象(Generator),生成器对象有一个next方法,可以用于遍历生成器产生的值: let next; do { next = g…
Promise JS 可以定义一个Promise对象,用于在一段异步调用后通过注册的回调函数获取执行结果: let promise = new Promise(function (resolve, reject) { setTimeout(() => { if (Math.random() > 0.5) { resolve(42); } else { reject(new Error('失败')); }…
工作中需要在同一个网站上登录多个用户,通常是开多个不同的浏览器,但是这样很消耗内存,发现一个 Chrome 插件可以实现不同的浏览器标签使用不同的 Session 以实现同一个浏览器同一个网站登录多个用户。 插件页面: https://chromewebstore.google.com/detail/sessionhub-multi-account/okjdkjeiihhiaakknbecdkdakmnhaaem 安装好后打开你需要多开的网站,并点击插件: 点击 + 号会为该网站生成一个独立的 Session: 现…
语法 类的本质是提供一种模版,用于创建一系列用途相似的对象,如果学习果其他编程语言,对下面的写法不会陌生: class User{ constructor(name, age){ this.name = name; this.age = age; } toString(){ return `${this.name} ${this.age}`; } } let user = new User('Mike', 30); console.log(use…
原型 如果你需要创建一个对象,但不希望从头创建,而是利用一个已存在的对象创建,只是修改(扩展)其部分属性,这种情况下可以使用原型继承的方式实现: let person = { name: 'Jonh', age: 20 } let teacher = { school: 'MIT', __proto__: person } console.log(teacher.name); console.log(teacher.age); console.log(teacher.school) …
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由
提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang