想做技术博客,但却更喜欢分享生活。
2017-05-06

你真的想学编程吗?

我是很赞成大家都来学编程的,脑子里一下能浮现出的赞成的理由就有:
1. 编程是把事物不断细分的过程,能够锻炼人的逻辑能力;
2. 编程需要一个清晰的思路,能锻炼人的思维能力;
3. 编程是一个创造的过程,能提高人的创造力;
4. 编程可以帮助人将重复的手工劳作转化成自动化的过程;

理解Javascript中的作用域与作用域链

任何程序设计语言都有作用域,简单的说,作用域就是变量或函数的可访问范围。作用域控制着变量与函数的可访问性与生命周期。
在绝大部分程序设计语言中,作用域的范围有全局作用域、函数作用域、块级作用域。
* 全局作用域:属于全局作用域的代码在任何地方都能访问到;
* 函数作用域:在定义该变量/函数的函数体内可以访问到;
* 块级作用域:在定义该变量/函数的语句块中可以访问到。

然而对于Javascript(ES5)来说,不存在块级作用域。

理一理Javascript的原型链

在Javascript中,大致存在两种对象:普通对象和函数对象。
一般而言,通过new Function()创建的对象是函数对象,其他的是函数对象。每当创建函数对象时,该对象中都会内置一些属性,其中包括prototype__proto__prototype即为原型对象
其内记录着函数对象的一些属性和方法。
prototype的主要作用是继承。prototype内定义的属性和方法都是留给自己的后代使用的。
说到后代,就必须说说js中的原型链。此时,另一个属性__proto__就登场了。

React组件构造方法createClass(ES5)和class(ES6)的研究

在使用React的时候,根据官方文档,发现了两种创建组件的方式。一种是使用React.createClass({})的方式来创建,还有一种是使用ES6的class并继承React.Component来创建。 刚开始学的时候自己觉得有点迷,并且一直都是使用ES6语法来创建组件(毕竟先进嘛)。这段时间稍稍有空,来钻研一下两者之间的区别。

使用Webpack+React建立基于Ant Design的页面

本文所用到的代码已上传githubclone下来之后进入项目根目录,控制台输入

npm install

等待包安装完成后,输入

npm start

查看效果

Ant Design 是蚂蚁金服体验技术中心出品的一个致力于提升『用户』和『设计者』使用体验的中台设计语言。它模糊了产品经理、交互设计师、视觉设计师、前端工程师、开发工程师等角色边界,将进行 UE 设计和 UI 设计人员统称为『设计者』,利用统一的规范进行设计赋能,全面提高中台产品体验和研发效率。其提供了完整的设计资源,也提供了一套完整的基于React的前端组件。

移动端弹出浮动层内部滚动的解决方案

在移动端开发的时候,未免会遇到这样的情况:
有一个弹出的浮动层,这个层有滚动条,可以上下滚动。
此时就会发现,当用户在操作这个浮层的时候,整个页面也可能会随之滚动。
ScrollPrevent.js就是为了解决这种情况而被制作的!

对线程池ExecutorService的关闭的研究

最近在使用ExecutorService的时候,对其关闭操作的概念非常模糊。查阅了许多文章、问答之后,有了一个总结。
shutdown:
1. 调用之后不允许继续往线程池内继续添加线程;
2. 线程池的状态变为SHUTDOWN状态;
3. 所有在调用shutdown()方法之前提交到ExecutorSrvice的任务都会执行;
4. 一旦所有线程结束执行当前任务,ExecutorService才会真正关闭。

shutdownNow():
1. 该方法返回尚未执行的task的List;
2. 线程池的状态变为STOP状态;
3. 阻止所有正在等待启动的任务,并且停止当前正在执行的任务;

2017-02-15

UnsupportedOperationException 的研究

最近设计的一个类中,有成员属性Map<String, List>,其因为某些奇怪的原因,在给value的List调用add或者remove方法时抛出了UnsupportedOperationException异常,于是对其进行了研究。

记一个在制作服务器过程中遇到的坑

关于HTTP 的响应头 Content-Range的记录。

Content-Range
用于响应头,指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth]

全民普及HTTPS有意义吗?

我的回答是,有,不仅有意义,而且意义重大。
有些人可能不知道一种攻击方式叫做“中间人(Man In The Middle)攻击”。
我这里简单介绍一下中间人攻击的一种,局域网内的ARP欺骗。
什么是ARP?ARP是地址转换协议的英文缩写,是用来把IP地址转换为MAC地址的。
假设A(192.168.1.105)和B(192.168.1.100)在同一局域网内部,A想和B通信,那么A首先会发一个数据包到广播地址(192.168.1.255),该数据包内包含A的IP,A的MAC地址,目的(B)的IP,目的(B)的MAC地址,这个数据包会被发放给局域网内的所有主机,此时B收到包之后会进行返回,返回包的内容大致有B的IP,B的MAC地址,目的(A)的IP,目的(A)的MAC地址。A收到B的返回包之后,会将B的IP和MAC地址保存在ARP缓存表中。
因为A在保存B的地址的时候没有经过验证,所以就有了欺骗的可能。