webAssembly 开发者指导

本页面提供一步一步的操作将一个简单的程序编译成webassembly

前提要求

为了编译成webAssembly,需要提前安装一些工具:

  • Git。在Linux和OSX下已自带了Git,在Windows下需要安装 Git for Windows
  • CMake。在Linux和OSX下可以使用像apt-get 或 brew 这样的包管理工具来安装,在Windows下下载CMake installer;
  • 编译工具。 在linux下安装GCC,在OSX下安装Xcode。在Windows下安装 Visual Studio 2015 Community with Update 3 或更新的版本;
  • Python2.7.x。在Linux和OSX下大部分都内置了Python2.7版本,没有的需要安装,Windows下需要自动下载安装;

    Read More

js变量

es5 中得变量

es5 中变量使用var关键字声明,var 声明得关键字存在变量提升,没有块级作用域,可重复定义,后面定义得覆盖前面定义

1
2
3
4
console.log(a); // undefined,变量a在后面申明,发生了变量提升,但赋值没有提升,所以是 undefined
var a = 1;
var a = 2; // 覆盖前面定义得a变量
console.log(a);

Read More

leetcode-add-two-numbers

leetcode 两数相加问题描述

原问题链接 https://leetcode.com/problems/add-two-numbers

问题描述: 输入两个非空链表 l1,l2, 链表节点为{val:'', next: node}, 链表每个节点的 val 都在 0~9 之间. l1,l2 代表两个数, 链表的第一个节点存储对应数的个位数,第二个节点存储对应数的十位数依次类推.

任务: 计算 l1, l2 代表的两个数之和,然后将和转换成链表表示, 并输出链表.

链表格式

1
2
3
4
function ListNode(val, next) {
this.val = val === undefined ? 0 : val;
this.next = next === undefined ? null : next;
}

example:

1
2
3
输入: l1 (2 -> 4 -> 3), l2 (5 -> 6 -> 4)
输出: 7 -> 0 -> 8
解释: 342 + 465 = 807

Read More

ssh别名登陆服务器

介绍

做开发时常常需要登陆远程服务器执行一些操作,以前每次都是使用 ssh userName@ip 来登陆,然而 ip 地址很难记,每次都需要查找下,导致效率太低下,使用 ssh 别名登陆后可以简化为 ssh userName@aliasName 登陆,方便记忆,操作也简化了,而且 aliasName 还可以用于 scp 之类的操作中

Read More

fetch

fetch 概览

本文翻译自 devdocs 文档中的 Fetch API: Using Fetch 一节

Fetch API 提供了访问和操作部分 HTTP 管道的 js 接口, 比如 request(请求)和 response(响应). 同时也提供了一个使用异步方法简便获取网络资源的全局函数 fetch().

Read More

python.1基础

python 代码转换成二进制

python 代码的执行过程是:源代码-》解析器-》字节码-》解析器-》机器码,pyc 和 pyo 文件是以字节码的形式存在,可以加速代码加载速度,两者不一样的地方在于 pyo 文件是经过优化的字节码

1
2
3
# 生成pyc和pyo文件的方式
python -m py_compile file.py #将file.py转化成pyc 文件
python -O -m py_compile file.py #将file.py转化成pyo文件

Read More

nodejs事件模块

nodejs 里所有事件类型基本都是由 events 模块开提供, js 是异步执行的,在很多情况下需要同步执行, 这时可以使用 events 模块来实现同步

event 模块主要是 EventEmitter 类, 使用 event.EventEmitter 类来实例化一个事件对象

1
2
let event = require("events"); // 引入events模块
let emit = new event.EventEmitter(); // 实例化一个events对象

Read More

js对象之实例工厂

new相关

1
2
3
4
let Person = function (name) {
this.name = name;
};
let lihua = new Person('lihua'); // lihua是Person对象的一个实例

new操作符有执行过程:

  • 设置行为: 创建一个新对象,其原型为 Person.prototype
  • 设置数据: Person接受刚上一步创建的对象作为隐式参数 this,设置新创对象的属性值this.name

Read More

js对象之对象间的原型

原型

原型用来描述对象之间的继承关系。每个对象都有原型,通过[[prototype]]这个内部属性描述。对象会继承其原型的所有属性和方法。

1
2
3
4
5
6
7
8
9
10
let obj1 = {
name: 'obj1',
desc: function() {
console.log("obj name is:", this.name)
}
}

let obj2 = Object.create(obj1); //通过obj1创建对象obj2, obj2的原型是obj1
obj2.name = 'obj2';
obj2.desc(); // obj2 继承了obj2的原型 obj1中的方法

Read More