abedai / blog_hexo Goto Github PK
View Code? Open in Web Editor NEW个人博客站点
个人博客站点
简介Node.js的单线程含义,实际上说的是执行同步代码的主线程。一个Node程序的启动,不止是分配了一个线程,而是我们只能在一个线程执行代码。当出现I/O资源调用,TCP连接等外部资源申请的时候,不会阻塞主线程,而是委托给I/O线程进行处理,并且进入等待队列。一旦主线程执行完成,将会消费事件队列(Event Queue)。因为只有一个主线程,只占用CPU内核处理逻辑计算,因此不适合在CPU密集型
数据类型介绍数值类型 类型 大小 范围 详情 TINYINT 1 字节 有符号:(-128,127) 无符号:(0,255) 极小整数值 SMALLINT 2 字节 有符号:(-32 768,32 767) 无符号:(0,65 535) 小整数值 MEDIUMINT 3 字节 有符号:(-8 388 608,8 388 607) 无符号:(0,16 777 215) 中等整数值
为什么需要Socket心跳包实现方式上,TCP keepalive 和Socket心跳包机制类似。TCP keepalive 机制通过,在进行TCP连接时,发送keepalive数据包,来判断当前TCP连接是否仍然有效。问题来了,既然已经有了TCP keepalive,为什么还需要Socket心跳机制呢? 个人认为,需要Socket心跳机制的原因如下: 真实网路环境中,TCP keepalive
Koa洋葱圈模型Koa的中间件选择了洋葱圈模型。中间件结构如下所示: 所有的请求经过一个中间件的时候都会执行两次,Koa 的洋葱圈模型可以非常方便的实现后置处理逻辑。 Koa洋葱圈实例1234567891011121314151617181920212223242526272829303132const Koa = require('koa');// 构建koa实例const app = new
数据类型介绍数值类型 类型 大小 范围 详情 TINYINT 1 字节 有符号:(-128,127) 无符号:(0,255) 极小整数值 SMALLINT 2 字节 有符号:(-32 768,32 767) 无符号:(0,65 535) 小整数值 MEDIUMINT 3 字节 有符号:(-8 388 608,8 388 607) 无符号:(0,16 777 215) 中等整数值
http://blog.daiyibo.cn/2019/01/20/%E7%BD%91%E7%BB%9C-Https%E7%9A%84%E7%90%86%E8%A7%A3/
Http有啥问题? 窃听风险(eavesdropping):第三方可以获知通信内容 篡改风险(tampering):第三方可以修改通信内容 冒充风险(pretending):第三方可以冒充他人身份参与通信 SSL/TLS协议是为了解决这三大风险而设计的,希望达到: 所有信息都是加密传播,第三方无法窃听 具有校验机制,一旦被篡改,通信双方会立刻发现 配备身份证书,防止身份被冒充 Htt
http://blog.daiyibo.cn/2018/09/19/%E5%BB%BA%E7%AB%99%E5%88%9D%E8%A1%B7/
初衷工作角色逐渐从客户端开发者转变为独立开发者。之前读大学的时候,还有写博客的习惯,后来慢慢转变为做笔记,最近变成了只看书不做笔记了。感觉在学习过程中,缺乏了深度思考的过程。于是,打算搭建个人博客,逼着自己做些深度思考的事情吧。将博客产出作为学习的考核标准。贵在坚持,持之以恒~ 博客地址: http://blog.daiyibo.cn 安装方法Hexo搭建,算是比较简单了。在安装好git开发环
http://blog.daiyibo.cn/2018/10/01/Effective-Java-%E5%BC%82%E5%B8%B8/
只针对异常情况才使用异常控制正常流程时不应该使用异常,只有当程序发生异常时才应该抛出Exception。Exception就是来描述程序发生异常的,不要职责不清地让异常来处理非异常的事情。例如下面的for-each循环,不应该用异常来控制循环,而应该用状态测试来控制循环。 12345678910111213141516// 错误示范,通过异常来控制for-each循环流程// 通过Iterator
http://blog.daiyibo.cn/2018/09/20/Effective-Java-%E6%96%B9%E6%B3%95%E8%AE%BE%E8%AE%A1/
检验参数的有效性 应该在方法开头就检验参数的有效性,及时报出参数错误。 传递无效参数给方法,这个方法在执行之前先对参数进行检验,那么他很快就会失败,并且清楚地呈现出适当的异常。如果这个方法没有检查他的参数,就有可能发生以下几种情景。该方法可能在处理过程中失败,并且产生令人费解的异常。更糟糕的是,该方法可以正常方法,但是会悄悄地计算出错误结果。最糟糕的是,该方法可以正常返回,但是却使得某个对象处于
声明类es6中的class关键字,其实只是一个语法糖,本质上是对原型链的一个封装。 声明属性截止es6,声明属性的最佳实践如下: 12345678910// 声明类class Clazz { constructor(){ // 建议将静态属性和对象属性的声明的初始化都放在构造函数中进行 // 声明对象属性 this.field = "对象属性&qu
http://blog.daiyibo.cn/2019/01/07/%E7%BD%91%E7%BB%9C-RESTful%E6%8E%A5%E5%8F%A3%E8%AE%BE%E8%AE%A1/
Http Methods描述 HTTP Methods 操作方式 POST 创建数据 Create GET 读取数据 Read PUT 修改数据 Update 整条修改修改除ID外的所有属性 PATCH 修改数据 Update 部分修改 修改一条记录的部分属性 DELETE 删除数据 Delete RESTful是什么?http://www.ruanyifeng.
数据类型介绍数值类型 类型 大小 范围 详情 TINYINT 1 字节 有符号:(-128,127) 无符号:(0,255) 极小整数值 SMALLINT 2 字节 有符号:(-32 768,32 767) 无符号:(0,65 535) 小整数值 MEDIUMINT 3 字节 有符号:(-8 388 608,8 388 607) 无符号:(0,16 777 215) 中等整数值
前言本文主要是对编译时注解展开讨论。Android端对自定义注解的应用程度远没有达到Java Web端的那种程度,而且市面上也没有一个专注于抽象编译时注解底层技术的库。 在真实开发场景中,如果想要实现一个利用编译时注解的功能,往往需要花大量精力来处理APT这块的繁琐逻辑。例如,遍历所有注解相关类然后生成一定规律的代码。这些繁琐操作阻碍了大家使用注解的热情。设想一下,如果使用编译时注解只需要增加一两
类型转换JS中取值类型非常灵活,在进行算数运算符或比较运算符操作时,常常会进行类型转换操作。最近对类型转换做了系统的梳理。原始值之间的转换规则如下: 对象转换操作对象转换,相比于原始值相互转换要稍微复杂点。在讲解对象转换前,先说两个对象内置的方法: 1234567891011121314151617/** * 默认情况下,toString() -> "[object Object]" * 许
简介红黑树,一种自平衡的 二叉查找树,但在每个节点上有一个额外的存储位表示节点的颜色,可以是Red或者Black。这些颜色位用来确保红黑树在插入和删除操作后仍能近乎平衡。 红黑树的应用场景到此,我们可能已经对红黑树有了一点初步的认识了,但是我们却不知道为什么要有红黑树,红黑树是为了解决什么问题被提出来的呢?我们知道,二叉查找树在大多数情况下查找和插入在效率上是没有问题的,但是在最坏的情况下效率比较
http://blog.daiyibo.cn/2019/02/04/%E6%88%90%E9%95%BF-%E4%BB%80%E4%B9%88%E6%98%AFOKR/
定义OKR是一套思考框架和持续的纪律要求,旨在确保员工紧密协作,把精力聚焦在能促进组织成长的、可衡量的贡献上。
http://blog.daiyibo.cn/2018/10/11/%E7%BD%91%E7%BB%9C-OSI-%E4%B8%83%E5%B1%82%E9%80%9A%E8%AE%AF/
table th:nth-of-type(1) { width: 100px; } OSI七层通讯 通讯层 作用说明 应用层 它的作用fancybox是为应用程序提供服务并规定应用程序中通讯相关的细节。是最贴近应用开发人员的网络层。常见的协议有 HTTP,FTP,TELNET、SMTP 等。 表示层 它的作用是将应用层处理的信息从主机特有的格式转换为网络标准传输格式
数据类型介绍数值类型 类型 大小 范围 详情 TINYINT 1 字节 有符号:(-128,127) 无符号:(0,255) 极小整数值 SMALLINT 2 字节 有符号:(-32 768,32 767) 无符号:(0,65 535) 小整数值 MEDIUMINT 3 字节 有符号:(-8 388 608,8 388 607) 无符号:(0,16 777 215) 中等整数值
http://blog.daiyibo.cn/2018/10/03/Effective-Java-%E5%90%8C%E6%AD%A5/
同步访问共享的可变数据当多线程共享可变数据时,每个读或者写数据的线程都必须执行同步。同步方式可以是加锁,也可以是volatile。如果没有同步,就无法确保一个线程所做的修改可以被另一个线程获知。 避免过度同步 在设计一个可变类的时候,要考虑一下它们是否应该自己完成同步操作。过度的帮助类进行同步操作,会带来性能上的损耗 为了避免不可控性,千万不要在同步区域中调用外来方法。要把同步操作的控制权牢牢抓在
http://blog.daiyibo.cn/2018/11/25/Node-JS%E4%B8%ADPromise%E7%9A%84%E7%90%86%E8%A7%A3/
Promise简介Promise对象代表一个异步操作,里面保存着某个未来才会结束的事件的结果。对象的状态不受外界影响。 Promise对象有三种状态:pending(进行中)、resolve(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。一旦状态改变,就不会再变,任何时候都可以得到这个结果。 Promise对象的状态改变,只有
http://blog.daiyibo.cn/2018/11/10/Node-JS%E4%B8%AD%E5%8E%9F%E5%9E%8B%E7%9A%84%E7%90%86%E8%A7%A3/
prototype与__proto__的区别概念介绍 所有对象都具有__proto__属性。在JS中,一切皆对象。方法(Function)是对象,方法的原型(Function.prototype)也是对象,因此它们都有__proto__属性。 方法(Function)是一个特殊的对象,它除了有__proto__属性之外,还有自己特有的prototype属性。prototype属性指向一个所有实例共
数据类型介绍数值类型 类型 大小 范围 详情 TINYINT 1 字节 有符号:(-128,127) 无符号:(0,255) 极小整数值 SMALLINT 2 字节 有符号:(-32 768,32 767) 无符号:(0,65 535) 小整数值 MEDIUMINT 3 字节 有符号:(-8 388 608,8 388 607) 无符号:(0,16 777 215) 中等整数值
http://blog.daiyibo.cn/2018/09/22/Google-I-O-2018-%E6%91%98%E8%A6%81/
简介主要是了解下未来的趋势,开阔眼界。 机器学习今年大会的重点之一,感觉这方面是未来的大势所趋。降低生产力成本,改善生活。 Google为了推广TensorFlow,作出了很多努力。在社区上积极帮助开发者解决机器学习遇到的各种问题,希望将TensorFlow推广到各个领域。 介绍了TensorFlow应用于医学的案例,希望通过机器学习为更多人提供医疗支持。举例在糖尿病眼球病变检测专业,已经做到
http://blog.daiyibo.cn/2018/09/24/%E4%BA%A7%E5%93%81-%E8%A7%84%E5%88%92%E4%B8%8E%E8%BF%AD%E4%BB%A3/
简介最近在看《人人都是产品经理》,帮助程序员提升全局意识,还是蛮有用的。本次主要记录了《第八章 成长:规划与迭代》的内容摘要。 规划是战略布局,是定方向,做正确的事;迭代是战术实施,是定走法,正确地做事。规划的重点在于想,迭代的重点在于动手实现。 规划,是以自我为中心,以公司为中心的,是生产驱动的。 迭代,是需求驱动的,是对用户反馈的不断响应,需要根据市场信息的变化一步步的调整。 规划由于互联
koa-route在koa中负责路由分发,是很重要的一环。本打算自己写篇文章总结下的,但在segmentfault上看到了一篇总结得很到位的文章。感觉自己写也就只能写成这样了,所以直接转载了😂 文章地址:https://segmentfault.com/a/1190000007468233 代码结构 执行流程 上面两张图主要将koa-router的整体代码结构和大概的执行流程画了出来,画
将局部变量的作用域最小化将局部变量的作用域最小化,使代码减少出错,更加可读。 降低出错的可能性 如果变量在它的目标使用区域之前或者之后被意外地使用的话,会产生意想不到的错误。示例如下: 123456789101112131415161718192021// 错误示范Iterator<Element> i = c.iterator();while(i.hasNext())
简介Node 中的许多核心 API 都是通过事件驱动的异步架构实现的,具体来说就是当 emitters 发送事件后,相应的响应函数( listeners )会被执行。例如:net.Server 会在每次收到连接时发出事件,fs.ReadStram 会在文件打开时发出事件,stram会在有数据可读时发出事件。 所有这些对象都是 EventEmitter 的实例,它们通过向外暴露的 eventEmit
动态代理使用介绍动态代理,利用Java的反射技术,在运行时创建一个实现某些给定接口的新类及其实例。代理的是接口,不是类,更不是抽象类。演示代码如下: 12345678910111213141516171819202122232425262728293031public class Main { public static void main(String[] args) {
exports、module.exports、require的使用介绍exports和module.exports都是用来指定js文件需要导出的属性值。本质上,exports只是module.exports的引用,辅助后者添加内容用的。1234567891011// 下方等价,因为exports相当于module.exports的引用exports.func1 = function(){
简介最近在看《人人都是产品经理》,帮助程序员提升全局意识,还是蛮有用的。本次主要记录了《第六章 功能:细化与打包》的内容摘要。 功能评估在动手之前,应该先对功能进行评估。功能的评估,主要从价值,成本,功能定位三个角度进行考量。参考一个性价比公式: 12// 价值最好分为6个等级(1,2,3,4,5,无限高) 成本最好按照 人/天 为单位性价比 = 价值/成本 从理论上讲,性价比高的功能优先级也就高
定义OKR是一套思考框架和持续的纪律要求,旨在确保员工紧密协作,把精力聚焦在能促进组织成长的、可衡量的贡献上。 OKR带来的收益 OKR制定技巧OKR数量Objective建议是25个,Key Result建议是24个 目标衡量标准(Objective) 挑战性: 目标应当具备鼓舞人心的力量,驱动人们达到更高的绩效。如果你知道10%的提升对你来说轻而易举,那么就不应该把他设置为你的目标。因
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.