• 搜索:go

go语言 sync 包简介及使用

sync 包的简介 Go语言的sync包提供了常见的并发编程控制锁; 在并发编程中锁的主要作用是保证多个线程或者 goroutine在访问同一片内存时不会出现混乱; golang 中使用 go 语句来开启一个新的协程。 goroutine 是非常轻量的,除了给它分配栈空间,它所占用的内存空间是微乎其微的; 但当多个 goroutine 同时进行处理的时候,就会遇到比如同时抢占一个资源,某个 goroutine 等待另一个 goroutine 处理完某一个步骤之后才能继续的需求。 在 golang 的官方文档上,作者明确指出,golang 并不希望依靠共享内存的方式进行进程的协同操作。 而是希

mac 下修改 docker 国内镜像

mac下安装 docker 官网下载地址: https://docs.docker.com/docker-for-mac/install/ 安装启动 docker 左小角显示 docker running shell 执行 docker version $ docker version Client: Docker Engine - Community Cloud integration: 1.0.4 Version: 20.10.0 API version: 1.41 Go version: go1.13.15 Git commit:

mongd 解决“Error parsing YAML config file: yaml-cpp: error

mongod 启动报错 $ mongod --config /usr/local/etc/mongod.conf Error parsing YAML config file: yaml-cpp: error at line 9, column 9: illegal map value try 'mongod --help' for more information 报错原因 mongodb 3.0之后的配置文件采用YAML格式; YAML 格式约定如下: : 形式定义配置文件 : 后面如果有 key 前面有空格(一般是2个)不能是tab键 , value 前面必须有一个空格 :

go 语言实践: switch 语句的使用

go语言中的 switch 可以一个条件一个分支 switch flag { case 1: fmt.Println("one") case 2: fmt.Println("two") } 可以多条件写一个分支 switch flag { case 1: fmt.Println("one") case 2,3,4: fmt.Println("two,three,four") } 可以把判断条件写到case 后面 switch { case flag == 1:

go 语言实践:欧几里得算法-求最大公约数

go语言实现欧几里得算法 求2个数的最大公约数 辗转相除法 大数对小数求余 余数不为零时,小数对余数求余 余数为零时,小数就是俩个数的最大公约数 package main import "fmt" func divisor(min, max int) (maxDivisor int) { //用大数对小数取余 complement := max % min //余数不为零,小数作为大数,将余数作为小数,大数对小数递归求余 if complement != 0 { maxDivisor = divisor(complement, min)

go 语言实践:随机数生成

go语言中的随机数 math/rand包操作随机数, rand.Seed(seedNum)方法设定种子值, rand.Intn(n)获取一个小于n的随机数,[ 同一个种子值,生成的随机数是确定的 ] 所以go语言中的随机数取决于种子的随机性, 一般情况下可以采用系统时间的毫秒数作为种子值. 当种子值相同时 package main import ( "fmt" "math/rand" ) func main() { rand.Seed(888) //获取8个小于1000的随机数 for i := 0; i < 8; i++ {

Docker Compose 事半功倍,容器部署更方便简洁

Docker Compose是什么 Docker Compose 是一个工具,这个工具可以通过一个 yml 文件定义多容器的 Docker 应用. 通过一条命令就可以根据 yml 文件的定义去创建或者管理多个容器. 什么是yml文件 YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式, YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互. 如何定义yml文件 新建 docker-compose.yml 文件 version: '3.7' services: mongodb: contain

go 语言实践:冒泡排序法 和 选择排序法对比

go 冒泡排序 & 选择排序 冒泡排序 将每一个数同相邻的下一个数对比,如果比下一个数大则交换位置. func bubble(list []int) []int { //用来拍断是否完成排序 flag := true len := len(list) for i := 0; i < len-1; i++ { //预设没有发生交换 flag=true,当发生交换,flag=false flag = true for j := 0; j < len-1-i; j++ {

go 语言中的错误捕捉 panic 以及 recover修复错误

go语言中的错误处理 go语言中遇到错误,一般直接返回 error ,如果手动无法处理的 error ,可以直接触发 panic . 当遇到一些严重错误,比如数组,切片越界等错误,直接 panic 也会被触发. panic 一但被触发,当前执行的程序会退出. package main import ( "fmt" ) func main() { fmt.Println("before panic") panic("program crash") fmt.Println("after panic") } 执行结果: ./prog.go:24:2:

Go http.StripPrefix 和 File Server的使用

代码的整洁和进行合理的分流 http.StripPrefix函数的作用之一,就是在将请求定向到你通过参数指定的请求处理处之前,将特定的prefix从URL中过滤出去. 下面是一个浏览器或HTTP客户端请求资源的例子: /assets/js/page.min.js StripPrefix 函数将会过滤掉/assets/, 并将修改过的请求定向到http.FileServer所返回的Handler中去,因此请求的资源将会是: /js/page.min.js http.FileServer 返回的Handler将会进行查找,并将与文件夹或文件系统有关的内容以参数的形式返回给你 (在这里你将&

go 语言中如何实现继承

回顾 一.之前说到了go中如何实现类 传送门 二.go中如何实现类的封装 传送门 go 语言中如何实现继承 package main import ( "fmt" ) type people struct { name string age int } func (p people) GetName() string { return p.name } type Student struct { people grade int } func (s Student) GetGrade() int { return s.gr

go 语言中类的封装

go中的类的定义和使用 之前一篇博客详细介绍了go语言中如何定义类,使用类, 点击查看 go语言中如何实现封装? go是直接支持strut的封装的,go语言的可见性是根据首字母大小写来实现的. 首字母大写表示对外部可见,类似C#中的public,首字母小写,对外部不可见,类似C#中的private. package main import ( "fmt" ) type Student struct { name string age int } func (s Student) GetName() string { return s.name } func

go 语言中的类的实现,类的属性和方法

go语言中的类是如何实现的? go语言中严格意义来说是没有类的概念,当然也不存在面向对象的封装和继承, 但是go语言可以通过struct 结构体来模拟类的概念,试的我们用起来像是一种类. struct 如何来实现面向对象的类? struct 首先是一种类型,值类型.它是由一系列具有相同类型或不同类型的数据构成的数据集合. 和c语言的struct很像,用起来就相当于java / c# 中的的class . struct 的定义 下面的内容中我们直接把struct 称呼为 "类" type student struct { name string age

go语言换行的地方可以用分号替代吗?

go语言中默认用换行来表示语句结束,那么能不能用分号来代替换行呢? package main import ( "fmt" ) func main() { fmt.Println("hello world") main函数的左花括号必须在main同行,否则出错. 为什么go语言要这么玩呢? 这是为了在语言层面强制让所有使用者统一编程规范. 看看go圣经中的原话, 我来手动打一下: In effect, newlines following certain tokens are converted into semicolons, so where newline

Docker 容器之间互访的几种形式

容器之间为什么要互访 docker容器与容器之间是隔离状态,不能互相访问,但如果有些依赖关系的服务要如何访问对方呢? 介绍三种方法来解决容器互访问题. 虚拟IP访问 安装docker时,docker会默认创建一个内部的桥接网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问。 运行一个centos镜像, 查看ip地址得到:192.168.32.2 首先通过 docker ps 查看当前电脑上运行的容器实例 $ docker ps CONTAINER ID IMAGE COMMAND CREATE

docker 创建mongodb 容器 映射本地数据目录和配置文件

docker 创建mongodb 容器 安装 mongodb 镜像 拉取官方镜像 docker pull mongo 本地创建数据库目录 # zhangzhi @ ZhangZhi-MacBook-Pro in ~ [9:03:15] $ sudo mkdir mongodb 不要忘记给目录 777 权限 sudo chmod 777 mongodb 本地配置文件目录 # zhangzhi @ ZhangZhi-MacBook-Pro in ~ [9:27:24] C:130 $ sudo mkdir docker/mongodb 不要忘记给目录 777 权限 sudo chmod

Linux下强大的curl 命令行工具

curl curl是linux系统中一个利用URL规则在命令行下工作的文件传输工具. 语法 curl [option] [url] 参数 -A/--user-agent <string> 设置用户代理发送给服务器 -b/--cookie <name=string/file> cookie字符串或文件读取位置 -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中 -C/--continue-at <offset> 断

sequelize 5.0中文文档连接数据源及数据类型 (一) - node.js语言最好用的orm

前言 Node.js 社区中,sequelize 应该是最好用的 ORM 框架,它支持多种数据库,包括 PostgreSQL ,MySQL ,SQLite 和 MSSQL. 安装 npm install --save sequelize 在你的项目中使用了哪种数据源,那么对应的去安装此数据源的驱动程序: $ npm install --save pg pg-hstore # PostgreSQL $ npm install --save mysql2 # MySQL $ npm install --save mariadb # Mariadb (mysql的孪生兄弟) $ n

Typora搭配PicGo自定义图床 - 让你的markdown飞起来

前言 markdown的流行让大部分人脱离UI编辑专心致志写作,体验非常棒. 但是市场主流的markdown编辑器在上传附件功能方面一直都没有太得心应手的工具. 今天给大家推荐typora编辑器搭配PicGo自定义图床,让你随心所欲文档中插入图片. typora Typora是一款由Abner Lee开发的轻量级Markdown编辑器,适用于OS X、Windows和Linux三种操作系统,是一款免费软件。与其他Markdown编辑器不同的是,Typora没有采用源代码和预览双栏显示的方式,而是采用所见即所得的编辑方式,实现了即时预览的功能,但也可切换至源代码编辑模式。 ---维基百科 下载

算法的时间与空间复杂度

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。 因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡点。 下面我来分

区块链是什么

什么是区块链 区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求; 它具有分布式数据存储、点对点传输、共识机制、加密算法等计算机技术,通过维护数据块的链式结构进行持续增长的、不可篡改的数据记录. 区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块. 工作原理 区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组

vscode 高效率插件koroFileHeader注释辅助和GitLens代码追踪

前言 vscode优势强劲,让各种技术栈同学爱不释手,不仅仅是IDE足够优秀,而且他的生态也非常丰富,各种各样的插件让你武装到牙齿. 今天推荐的2款插件本人都在用. koroFileHeader 文件头部加注释 光标处添加函数注释 文件头部加注释 文件头部注释在你创建文件自动添加, 如果是老文件,保存时自动添加更新记录. /* * @Author: zhangzhi * @Date: 2019-07-11 13:40:28 * @LastEditTime: 07-11 17:15:57 * @LastEditors: zhangzhi * @Description: In User Set

docker 安装 redis 让宿主机访问

docker 安装 redis 拉取镜像 docker pull redis 宿主机创建映射目录 创建目录 sudo mkdir -p docker/redis/redis01/conf sudo mkdir -p docker/redis/redis01/data conf 目录放redis.conf 配置文件 data 目录映射redis数据目录 上面文件都要chmod 777 的权限 创建配置文件 在线拉取一个 redis.conf 放入 docker/redis/redis01/conf 目录下 cd docker/redis/redis01/conf wget http:

centOS用shell脚本定时备份mongodb并清理历史备份版本

前言 备份数据库是运维同志的日常工作之一, 但是对于中小公司,或者服务器托管在云服务商的公司来说,基本没有专业的运维工程师. 所以一部分公司中,开发工程师就要分担一些运维的事情. 我们本着能让计算机做的事情绝对不动手原则, 今天就和大家分享一下 centOS下定时自动备份mongodb数据库,并且清理历史备份记录. centOS安装crontab 如果你的系统已经安装,请直接跳过此步骤. [root@CentOS ~]# yum install vixie-cron [root@CentOS ~]# yum install crontabs 说明 vixie-cron软件包是cron的主程

go 语言实践:命名规则

go 语言命名 go 语言不像java 等传统面向对象语言一样有访问修饰符; 它是从语法层面做了限定: 想要对外暴露的名字必须大写字母开头 [类似 public 修饰符] 不想对外暴露的名字必须小写字母开头 [对其他包不可见,类似私有变量] 包名称命名规则 取名要有意义,不与标准库冲突; 包名与目录名一致; 包名要使用小写开头的单词; 不混合大小写或者下划线等; 如: package yijiebuyi 文件命名规则 取名要简短,有意义; 小写单词打头; 多个单词使用下划线分隔; blog_content.go 结构体命名规则 驼峰命名法. 至于大驼峰还是小驼峰取决于该结构体是否要向

mongodb客户端连接报错 Error: Failed to execute "listdatabases" command​

前言 本人当前使用的mongodb客户端版本Robo 3T 1.3.1 配置连接远程mongodb时报错: Error: Failed to execute "listdatabases" command 原因是因为今天mongodb config中指定了权限验证 开启mongodb验证 /etc/mongod.conf security: authorization: enabled 因为mongodb安装以后只在cmd中进行本地访问,所以要使用图形界面就需要使用登录账号及密码 解决方案 之前mongodb 采用 SSH 远程连接mongodb的方式, 现在需要重新编辑 添加Auth

使用Electron打造跨平台桌面应用

前言 早期桌面应用的开发主要借助原生 C/C++ API 进行,由于需要反复经历编译过程,且无法分离界面 UI 与业务代码,开发调试极为不便。后期出现的 QT 和 WPF 在一定程度上解决了界面代码分离和跨平台的问题,却依然无法避免较长时间的编译过程。近几年伴随互联网行业的迅猛发展,尤其是 NodeJS、Chromium 这类基于 W3C 标准开源应用的不断涌现,原生代码与 Web 浏览器开发逐步走向融合,Electron 正是在这种背景下诞生的。 electron Electron 是由 Github 开发,通过将Chromium和NodeJS整合为一个运行时环境,实现使用 HTML、CS

go 语言中的 Timers Tickers 的使用

go语言中的 Timers 和 Tickers go语言中对某段业务逻辑在未来某一时刻执行或以一定时间间隔周期性执行的需求提供了支持; timer 可以在未来某一时间发生; ticker 可以指定时间间隔周期发生. Timers的使用 Timer表示在未来某一刻执行仅一次的事件 一旦时间到达预设时期,触发程序执行并且 timer 会调用 Stop() 函数停止再次运行. /* * @Author: your name * @Date: 2021-01-14 16:29:13 * @LastEditTime: 2021-01-14 17:03:54 * @LastEditors: P

electron 使用tcp套接字

前言 electron由于集成Node.js和Chromium,所以它具有桌面GUI应用程序的开发的能力. 今天我们在electron环境下实现tcp连接示例. 使用node.js获得tcp能力 浏览器在js层是不能使用原生的tcp套接字的, 但是electron使用了node作为中间层, 所以我们可以依托node从而获得tcp能力. net模块 Node.js Net 模块提供了一些用于底层的网络通信的小工具,包含了创建服务器/客户端的方法,我们可以通过以下方式引入该模块. var net = require("net") nodejs中的socket, 即可作为server, 也可以作

vscode markdownlint插件让你的markdown更加规范 -- Rules规则提示信息

前言 我们在书写代码的时候, 经常会用到eslint来约束代码规范, 这样团队开发或者后期维护都省了很多烦恼. markdown书写时一样有这样的问题, 那么我们如何来约束markdown的书写规范呢. 今天介绍一款 vscode 的插件 markdownlint https://github.com/DavidAnson/markdownlint vscode 直接搜索安装插件 markdownlint 当你在vscode中书写markdown文本时,不符合规范的内容就会有黄色波浪线来提示及时修正. 语法规范提示内容 MD001 - Heading levels should only i

docker 实践:如何构建自己的镜像

创建自己的项目 我们用简单的 node.js web项目输出 helloworld 为例. 项目目录: npm start app.js 启动项目; app.js 代码 const Koa = require('koa'); const app = new Koa(); const main = ctx => { ctx.response.body = 'Hello World'; }; app.use(main); app.listen(3000); 编写dockerfile FROM node:8.4 COPY . /app WORKDIR /app RUN ["n

brew install时一直卡在Updating怎么办

前言 当你通过brew安装软件的时候, 发现一只卡在Updating Updating Homebrew... 这个时候有俩种办法来应对 找国内的源Updating Homebrew brew install 时不要 update 切换国内的源 //替换brew源 cd "$(brew --repo)" git remote set-url origin https://mirrors.ustc.edu.cn/brew.git //替换homebrew-core.git cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" gi

陌生域名解析到服务器ip - 这种异常流量对你的站点不一定是好事

前言 当你在百度统计/google统计平台发偶然发现一些关键词来源的站点和自己站点一点不相关时. 这时你要注意了,可能你的内容正在养着别人的域名. 如果你点击这些异常站点,打开的原来是你自己的站. 偶尔你也会收到云服务器平台发来的通知邮件: 大概是说解析到你服务器上的 xxx.com 域名, 违反了国家有关法规,请您尽快处理! 处理方式: 1.停止域名解析 ,完成域名备案后可重新恢复解析; 停止网站服务, 完成备案后可重新开启业务; 为什么有人要怎么做 陌生人把自己的域名解析到你的 IP ,就相当于原样复制了一个内容丰富的站点,这个域名被搜索引擎收录后,就能够短时间内得到和你的站点相同

go 语言中的channel

channel Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 它的操作符是箭头 <- ch <- v // 发送值v到Channel ch中 v := <-ch // 从Channel ch中接收数据,并将数据赋值给v (箭头的指向就是数据的流向) 就像 map 和 slice 数据类型一样, channel必须先创建再使用: ch := make(chan int) 类型 Channel类型的定义格式如下: ChannelType = ( "chan" | "ch

go 标准库 container list

list 个双链表(doubly linked list) 如何遍历链表, 其中 l 为 *List : for e := l.Front(); e != nil; e = e.Next() { //链表的每一个元素中通过Next()指针指向下一个元素,直至遍历完成 } 代码: package main import ( "fmt" "container/list" ) func main() { l := list.New() l.PushFront(1) l. PushBack(2) l. PushBack(3

java.lang.String 类定义的方法

char charAt(int index) 返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个 方法。 int codePointAt( int Index) 5.0 返回从给定位置开始的码点。 int offsetByCodePoints(int startlndex, int cpCount) 5.0 返回从 startlndex 代码点开始, 位移 cpCount 后的码点索引。 int compareTo(String other) 按照字典顺序, 如果字符串位于 other 之前, 返回一个负数; 如果字符串位于 other 之 后, 返回一个正数; 如果两

html5的语义化标签

语义化标签 HTML 5的革新之一:语义化标签. 在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义。(即使我们用css样式的id和class形容这块内容的意义)。这些标签只是我们提供给浏览器的指令,只是定义一个网页的某些部分。但现在,那些之前没“意义”的标签因为因为html5的出现消失了,这就是我们平时说的“语义” 如上图那个页面结构没有一个div,都是采用html5语义标签. 但是也不要因为html5新标签的出现,而随意用之,错误的使用肯定会事与愿违; 所以有些地方还是要用div的,就是因为div没有任何意义的元素,他只是一个标签,仅仅是用来构建外观和结构

glob node.js下可以像shell模式一样匹配文件

前言 早期 Unix (第 1-6 版,1969-1975)的命令行解释器依赖独立程序 /etc/glob 展开参数中的通配符。 这个程序会展开通配符并把展开后的文件列表传给命令。 它的名字是 "global command" 的简称。 后来这个功能由工具函数 glob() 提供,被 shell 等程序使用。 -- 维基百科 python语言中有了golb封装的包,接着有了今天我们看到的JavaScript实现的glob. Glob可以做什么 它可以根据指定的通配符来匹配文件,并且把匹配到的结果列表返回给你. 安装 npm install glob 用法 v

nginx代理node.js服务器http路由强制跳转https

nginx反向代理node.js服务器 我们服务器上node.js部署的服务通常会用 pm2 或者 forever 等工具接管, 然后nginx反向代理对应node.js服务所绑定的端口. server { listen 80; server_name yijiebuyi.com; access_log **这里是log日志目录** main; client_max_body_size 50m; location / { root html; exp

markdown编辑器如何自动生成目录 showdown toc插件的使用

markdown如何转化成html markdown 文本转化成 html 成熟的工具有不少, node 开源库中有 markdown-it showdown markdown-to-html marked markdown 上面的工具各有优势,自行google开源地址,找到一款最适合自己的. 本人博客一直是markdown编辑器撰写, 然后,一直再琢磨如何通过标题来自动生成内容目录, 造轮子的事情还是留给大牛们, 我们能把轮子使用好也是对大牛们的敬仰和支持. markdown-it 介绍 开源地址: https://github.com/markdown-it/markdown-it

node.js Express 中间件是如何实现的呢

什么是node.js 的中间件 在整个web请求的生命周期中, 客户端request 过来一个请求, 接着服务器端做出响应处理, 最后response结果给客户端. 上面这个请求过程中,其中服务器端做出响应处理时,会有一系列处理单元,这些处理单元可以简单的理解成中间件. node.js中间件: 它泛指一种设计模式、一系列的处理单元、过滤器和处理程序; 以函数的形式存在,形成一个异步队列,来完成对数据的预处理和后处理; 它的优点在于灵活处理业务逻辑中的单元模块; 使用中间件我们用极少的操作就能得到一个插件,用最简单的方法就能将新的过滤器和处理程序扩展到现有的系统上. Express 中间件实现

UCloud 云服务器 centOS6 64位 安装mongodb 数据库

mongodb 在centOS 64位服务器上安装 UCloud 云服务器 CentOS 系统 64 位 Step 1 设置mongodb源 vim /etc/yum.repos.d/mongodb.repo copy 下面内容 [mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1 保存上面内容并退出 Step 2 安装mongodb yum install mongo-10gen mongo-10

java 语法的命名规范

项目名 命名规范 全部小写 如:yijiebuyi , helloworld package 包名命名规范 强烈推荐使用公司或机构的顶级域名为包名的前缀; 包名的前几个为固定名称, 如果是网站的话,采用网站的域名的反写; package 包名全部为小写字母,以符号(. )来分隔, 但是不能包含*号,具有实际的区分意义. 如: com.yijiebuyi.blog //博客系统 com.yijiebuyi.wechat //微信H5服务站 要求 有意义的名词 传达其用途 结合模块名来命名 使用范例 应用系统中经常应用分层,Dao层(数据库访问)、Service层(业务处理)、Web层(页

lua Mac brew 安装使用 及简单语法介绍

什么是lua Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设施。 同时对面向对象编程、函数式编程和数据驱动式编程也提供了良好的支持。 它作为一个强大、轻量的嵌入式脚本语言,可供任何需要的程序使用 .(引用自 Lua 5.3 参考手册) mac 下如何安装 lua mac 下使用 brew 安装: brew search lua brew install lua 查看是否安装成功 ➜ ~ lua Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > print('Hello World!')

[投稿] 北京 招聘 node.js 全栈工程师

联系站长免费投稿发布招聘信息 职责 基于node.js 服务端开发 职位 node.js 全栈工程师 经验 2 年以上Server 开发 学历 大专以上 坐标 10号线地铁健德门站 要求 JavaScript 基本概念清晰 熟练掌握闭包、事件、回调、Promise 熟练掌握NodeJS核心模块的和常用模块 熟悉Node.js及其相关工具 有服务器端开发背景 (.NET、 Java、Python、PHP等其中一种后端语言的开发经验) 熟悉 MongoDB,Redis,MySQL,RabbitMQ 一种或多种 能阅读理解英文文档 GitHub帐号开通时间在半年以上 可以独立编

sails 框架下的 orm 实现 - Waterline

上一篇介绍了 使用sails框架快速搭建项目 今天和大家分享 sails 另外一个重要的功能模块: sails的ORM实现 什么是ORM Java 中的 Hibernate 框架的一个重要功能便是将数据库中的数据与 Java 中的对象进行映射,被称为 ORM (Object Relational Mapping), Node.js 里常用的 Mongoose ,便是将 MongoDB 的文档,映射为 JavaScript 的对象, 而 Waterline 可以看做是一个支持多种数据库的 Mongoose ,使得可以用一样的代码来实现对多种数据库的操作,无论是关系数据库还是文档数据库,都可

node.js 微信开发 提交菜单

前面连续分享2篇关于微信开发的文章. node.js 定时获取 access_token 使用 wechat 开发微信回调接口 今天分享 node.js 开发微信菜单 前提: 1.首先是切换到了开发者模式 2.微信管理后台已经授权自定义菜单,如下图例是没办法提交菜单的 当你的微信从编辑模式切换到开发者模式时, 之前你手动定义的关键词回复, 手动创建的菜单全部失效. 微信自定义菜单 说白了非常简单. 微信自定义菜单就是一次 POST 请求. 请求接口: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TO

node.js 下使用 wechat 开发微信接口

node.js 开发微信系列二 wechat 开发微信回调接口 上一篇我们介绍了 node.js下定时获取access_token 这里可能有个疑问,node.js 开发微信回调接口和定时获取 access_token 有关系吗? 其实没有必然的关系,通过微信回调接口我们可以方便的获取到交互者的 openid 但是,如果你想根据 openid 获取当前交互者的用户信息时,就必须要 access_token 了. 今天我们只谈 wechat 如何使用,获取用户详情在以后的博文中介绍. wechat 微信公共平台消息接口服务中间件 github地址: https://github.com/

node.js 微信开发 定时获取access_token

什么是access_token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效 [来自微信文档] 当你的多个微信开发相关服务并存时,多个服务各自去获取 access_token ,最后导致其中一些服务会不能正常访问. 所以这种情况下,应该设置一个获取 access_token 的中控服务器. 因为 access_token 的有效期为 2个小时,

mysql ,mongodb 针对坐标值按照距离远近排序

针对mysql 和 mongodb 不同数据库下坐标转换距离排序 mysql //坐标转换因子.是需要计算的. xFactor = cityObject.xFactor; yFactor = cityObject.yFactor; //地区坐标 latitude = location.latitude; longitude = location.longitude; //组合sql语句 let sql = [ 'SELECT *, ', ' sqrt(pow((latitude - ' + latitude + ') * ' + yFactor + ',2) + ', ' p

搭建自己的邮件服务器(postfix devocot cyrus-sasl) centos7 系统下配置

网上用了很多家企业邮箱 免费的不好用,或者收费的价格太贵....那干脆自己搭建邮件服务器了. 搭建邮件服务器目前最流行的应该是 postfix + devocot 组件. 而系统自带的 sendmail 配置起来相当困难,所以我压根就没有去试.并且在安装前直接卸载了 sendmail . 第一步 设置域名MX 解析 首先要有指定 ip 的 A 记录解析 @ A 111.111.111.111 需要有 mail 二级域名的 A 记录解析 mail A 111.111.111.111 MX 记录解析 @ MX mail.yij

mongodb 创建用户 mongoose 指定用户连接数据库

说实话,之前玩 mongodb 都是裸奔,都不需要用户名和密码直接连接 mongodb. 但是,正在在使用 mongodb 来开发的时候,还是要设置一个专属的账号,密码来连接数据库. 如何在mongodb 中创建一个用户 Mac下使用 brew 安装mongodb 请点击左侧链接打开. shell 下连接 mongodb ➜ /Users/zhangzhi >mongo MongoDB shell version: 3.2.0 connecting to: test 默认连接到 test 数据库. 切换数据库到 admin > show databases admi

centOS 下搭建 phpmyAdmin 服务

很久没来了,最近太忙(当然是借口~~) 今天和大家分享如何安装使用 phpMyAdmin 服务来管理mysql数据库. 首先你需要安装mysql (废话) yum -y install mysql 下载 phpMyAdmin 比如 我们下载了 phpMyAdmin-4.0.4.1-all-languages.zip [root@mail ~]# unzip phpMyAdmin-4.0.4.1-all-languages.zip [root@mail ~]# mv phpMyAdmin-4.0.4.1-all-languages /var/www/html/ [root@mail ~

sed 按日期过滤 nginx log 日志

针对 Linux 系统下 nginx 访问日志查询. 我们常常会直接上服务器使用 cat ,head , tail 等命令来查看. 但是面对几个G ,甚至几十个G 的log日志文件时,你想定位到多少行到多少行,谈何容易! 所以,今天和大家分享一个按日期提取 log 日志的方法. sed 命令简介 sed全名叫stream editor,流编辑器,用程序的方式来编辑文本,基本上就是玩正则模式匹配,相当的hacker. sed 参数简介 -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过

通过 find 这终端查找文件

find命令搜索文件 find命令非常高效,并且使用简单. find命令来自unix,OS X和Linux系统同样支持该命令. find命令格式: ** find 文件路径 参数** 这用户目录下查找 查找文件名中包含 redis.conf 的文件 find ~ -name "redis.conf*" -name 是指定参数 redis.conf* *号匹配任意字符,说明以 redis.conf 开头的文件 指定文件目录下查找 在特定的文件夹中寻找特定的文件,比如 这 / 目录下查找 redis.conf开头的文件 find ~ -name "redis.conf*" m

JavaScript 代码规范与约束

在开发过程中,团队代码风格统一,会让我妈避免不必要的错误和低级 Bug、控制代码质量,这样我们最好会预定一套编码规范. 检验JavaScript编码规范的工具有哪些? jslint jshint ESLint 下面简单看下这3个检验工具之间的差别: jslint jslint 的作者是 Douglas Crockford(《JavaScript: The Good Parts》的作者)。 Douglas Crockford 制订了一套 JavaScript 编码规则, JSLint 通过检查和分析 JavaScript 代码, 将任何违反规则的代码警告给开发者, 且无法通过配置关闭一

Node.js 中实现的ES6 新特性

ES6 的发布,给 JavaScript 开发带来了很多实实在在的特性,那么对于 node.js 的开发者而言,V8对于ES6新特性的支持有哪些? 如何查看node 的新特性 process.versions ➜ /Users/zhangzhi >node process.versions { http_parser: '2.5.0', node: '4.2.4', v8: '4.5.103.35', uv: '1.7.5', zlib: '1.2.8', ares: '1.10.1-DEV', icu: '56.1', modules: '4

通过 pm2 部署 node.js 项目

我们如何用 pm2 把 node.js项目 部署到服务器 安装 pm2 全局安装 ➜ /Users/zhangzhi >sudo npm install -g pm2 初始化 pm2 配置文件 ➜ /Users/zhangzhi >pm2 ecosystem ------------- Looking for a complete monitoring and management tool for PM2? Check out: _

angular.js 中 父级和 子集 controller 之间的通讯

在同个 angular.js 应用的控制器之间进行通信可以有很多种不同的方式,本文主要讲两种: 基于scope继承的方式 基于event传播的方式 基于scope继承的方式 最简单的让控制器之间进行通信的方法是通过scope的继承。假设有两个控制器Parent、Child,Child 在 Parent 内,那Child 可以称为子控制器,它将继承父控制器Parent的scope。这样,Child就可以访问到Parent的scope中的所有函数和变量了。 需要注意的是,由于scope的继承也是基于Js的原型继承,如果变量是基本类型的,那在Child中的修改(写),有可能会导致Parent中的

HTML5 video 元素及获取视频播放事件

Html5 的扩展极大的方便了web开发. 比如视频播放,在Html5 之前,全部依赖 flash / 银光 这样的插件. video 元素 Html5 的 video 元素扩展出来非常多的方法,属性,事件 等. 我们可以直接在此控件上播放,暂停 等操作. 现在,Safari 3以上、Firefox 4以上、Opera 10以上,以及Chrome 3.0以上的浏览器都实现了对video元素和audio元素的支持 表现形式: <video widht="500" height="300" src="http://wwww.devdo.net/demo/test.mp4>

node.js 单元测试 Unit Test 及 程序持续集成 CI 工具

JavaScript 单元测试、更因其执行环境复杂无比、自动化门槛超高. 目前 JavaScript 越来越复杂庞大,其实更需要单元测试来确保品质. 但是由于 PhantomJS、Travis CI 等工具… 写 JavaScript 单元测试变得轻松许多. 今天来聊一下关于 javascript 单元测试 Unit Test 及 CI 持续集成工具. Unit Test 单元测试 我们常写一些工具类的 JavaScript Function、甚至包装成组件、以方便未来重复使用. 单元测试 (Unit Test) 是另外一份代码、用来检查这些代码的正确性. 例如过去我们得替自己撰写 t

如何把别人项目代码修改后 提交到github

首先你需要了解基本的 git相关知识 如果你从 github 上clone了别人的代码,本地做了一些修改后,直接提交可能会遇到一些问题,首先需要你输入用户名,接着输入密码,最后返回错误提示信息. 试想一下,如果你可以把 clone 下来的代码随意修改完后,还能随意提交到github服务器,那整个开源生态可能要彻底乱为一团. 所以不让你提交就对了. 那如何把 clone 后修改的代码提交到 github 呢? github上 不是有个fork么, 好,那么给别人的项目提交代码的方式就有了,先fork下别人的代码,于是你的github上就出现了同名的项目,这个项目就属于你自己了

[转] github上 fork + Pull Request 开发模式

4.1. Fork + Pull模式 参与GitHub中的项目开发,最常用和推荐的首选方式是“Fork + Pull”模式。在“Fork + Pull”模式下,项目参与者不必向项目创建者申请提交权限,而是在自己的托管空间下建立项目的派生(Fork)。 如果一个开源项目派生出另外的项目,通常意味着项目的分裂和开发团队的削弱,而GitHub中的项目派生则不会,而且正好相反,GitHub中的项目派生是项目壮大的体现。所有的派生项目都会有链接指向原始项目,派生项目没有独立的缺陷追踪系统(ISSUE),而是必须利用创建者本人的项目中的缺陷追踪系统。至于在派生项目中创建的提交,可以非常方便地利用GitH

m3u8 跨平台 全兼容 移动 web在线视频 播放器

什么是m3u m3u是一个纯文本文件,虽然我们平时看到播放器首先加载了此文件,但是它并不是一个音频文件。 播放器并不是播放它,而是根据它的记录找到网络地址进行在线播放 什么是m3u8 m3u8 是在 m3u 格式下扩展出来的, 可以播流或者点播形式,目的是实现时实性及保密性它会不让你获取它的视频所在地址 浏览器使用的是 m3u8 文件。 m3u8 跟音频列表格式 m3u 很像,可以简单的认为 m3u8 就是包含多个 ts 文件的播放列表。 播放器按顺序逐个播放,全部放完再请求一下 m3u8 文件,获得包含最新 ts 文件的播放列表继续播,周而复始。 整个直播过程就是依靠一个不断更新

NPM如何发布node模块到社区

如何把自己写的 node.js 模块发布到 npm 开源社区 有下面几个前提条件: 你需要是 npm 社区注册的会员 如果你还没有,点击下面的链接注册 https://www.npmjs.com/ 你的开发环境需要 安装node.js 和 npm 创建repository 接下来我们需要创建module所需的repository,默认你拥有一个github账号(如果没有自行解决),这个repository用来托管我们module的代码,并方便用户报告bug,最重要的是可以让其他开发者向module贡献代码,这也是乐趣所在。 初始化package.json 接下来我们创建pa

webpack 前端加载工具 让 浏览器端 javascript 执行 CommonJS规范

#为什么用webpack 如果我们 前端 javascript 能像 node.js 一样 require 去引用一个依赖包,那么前端的世界就不会像现在这么乱 现在为什么乱? 假设: a.js 依赖 b.js b.js 依赖 c.js c.js 依赖 d.js 如果在我们前端去引用这些依赖的时候,往往是这样的: <script src='a.js'></script> <script src='b.js'></script> <script src='c.js'></script> <scri

levelDB 数据操作接口 实现 promise 规范

什么是levelDB google 公司开发的一款 高性能KV型nosql数据库 ,你可以点击链接查看以前的介绍. node.js 下使用leveldb 请移步到这里. 但是之前的所有leveldb 操作接口都是基于 callback 回调.所以今天这篇就是分享下leveldb 数据接口实现promise 规范. 什么是promise promise 规范让javascript拜托callback回调 请移步到上面的博文查看 levelup levelup 是 leveldb 在node.js 上的实现开源包. github地址: https://github.com/L

javascript 动态加载按顺序加载运行 js

javascript 在浏览器中的加载是如何的? 如何你的 script 上没有任何 异步,阻塞 等标注: 浏览器会异步加载 javascript 文件,但是会按照引用文件中的书写顺序从上到下执行解析 javascript Defer属性标记 defer是html4.0中定义的,该属性使得浏览器能延迟脚本的执行,等文档完成解析完成后会按照他们在文档出现顺序再去下载解析。 也就是说defer属性的 script 就类似于将 script 放在body中的加载 效果一致. 但是defer属性在各个浏览器中支持程度有点不同,就是说,有的浏览器不完全支持. Async属性标注 as

HTML5读取 本地文件 File Api 使用

javascript 访问本地文件,已经成为可能. HTML5 file api 该规范主要定义了以下数据结构: File FileList Blob HTML5 访问文件和大部分语言是一致的,先获取文件句柄,然后调用文件访问接口,打开文件句柄,读取文件! 选择文件 首先检测一下当前浏览器是否支持File Api: function isSupportFileApi() { if(window.File && window.FileList && window.FileReader && window.Blob

[投稿] 深圳 南山区 高薪招聘 web 开发 攻城狮

坐标: 深圳 , 南山区 职位: web 开发工程师 岗位职责: 1、负责后台相关业务系统的设计和研发; 2、负责平台开放接口的设计和研发; 3、优化性能、维护现有系统的功能模块、扩展的基础框架; 任职要求: 1、本科学历以上,计算机或相关专业,2年以上工作项目经验;对javascript语言本身有较为深刻的理解。 2、 了解NodeJS及其相关框架 ,要求至少有1年以上的服务器端研发经验; 3、对数据结构和算法设计有一定的理解; 4、熟悉MongoDB或MySQL ,有较强的SQL编程、优化能力; 5、熟悉Linux,熟悉常用的Shell命令; 6、熟练使用Git代码管理工具及

node.js webkit 项目 开启node.js 桌面应用

为什么是 node.js 桌面应用 准确的说,这只是一个浏览器, node-webkit 项目是 chromium 和 node.js 搭建起来的本地运行时环境. 我们知道node.js 是javascript 在服务器端通过强大的 V8 引擎实现的. chromium 内置了 V8 引擎 所以 node-webkit 就这样结合起来了. 回到刚才的问题,为什么说是桌面应用 Node支持的与操作系统交互的功能,文件系统,网络 , 操作系统资源等, 以及Node之上的第三方库都可以在node-webkit中进行使用 所以他很像是一个桌面级应用,但是又有区别 和传统桌面应用不

node-webkit 项目中的 package.json 格式

node.js 既然是依靠google V8引擎驱动的,而chrome浏览器内置了V8,所以就诞生了 node-webkit 这样的项目. 它的执行宿主也是 浏览器,但是由于 node.js 的支持,我们可以轻松访问当前执行环境的OS ,这不就是PC 客户端程序的功能吗. 可见 node-webkit 项目利用了web UI 的优势,node.js 访问本地OS 的优势,从而用 javascript 实现了一个本地 客户端程序. 今天我们首先来看下一个简单的 node-webkit 项目中 package.json 中,各项所代表的意义. 实例: { "name": "Ser

mac 系统下 如何 彻底 删除 node.js

mac 系统下,如何彻底删除 node.js 网上找到一段脚本,可以彻底从你的mac上卸载掉node.js #!/bin/bash lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \ | while read i; do sudo rm /usr/local/${i} done sudo rm -rf /usr/local/lib/node \ /usr/local/lib/node_modules \ /var/db/receipts/org.nodejs.* 首先创建一个 shell 文件 nano

JSX语法及学习

文章目录 对比 为什么使用 JSX JSX 是 Javascript 代码里直接写XML的语法 JSX (Javascript XML syntax transform) 是使用XML语法编写Javascript的一套解析工具; X代表XML;也可以理解为扩展(eXtension),因为实现JSX功能本身就是使用Javascript; React建议使用JSX(但非必要) 实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码 React 官方推荐使用JSX, 当然你想直接使用纯Javascript代码写也是可以的,只是使用JSX

spawn exec方法 在 node.js child_process模块中的应用及区别 解决 Error: maxBuffer exceeded

node.js 的child_process模块中有两个方法spawn和exec,这两个方法都可以被用来开启一个子进程来执行其他的程序 既然两个方法的功能一样,那么究竟应该选择哪个方法。在本文中,我们将一起来探索spawn和我exec方法的不同之处,以便你在将来能够选择正确的方法 spawn child_process.spaen会返回一个带有stdout和stderr流的对象。你可以通过stdout流来读取子进程返回给Node.js的数据。stdout拥有’data’,’end’以及一般流所具有的事件。当你想要子进程返回大量数据给Node时,比如说图像处理,读取二进制数据等等,你

[投稿] 北京 中关村 高薪招聘后端攻城狮

你有招聘/求职机会,请联系 QQ:378989619 免费发布! 地点: 北京 坐标: 中关村 职位: 后端开发工程师 我叫刘大民,是敢玩的一名普通员工,刚刚我的总监找到我。 总监:“大民,我记得你简历里说你参加广告比赛得过重在参与奖?” 我:“是啊总监。” 总监:“那你会写文案喽。” 我:“啊?” 总监:“很好,你给我写个招聘文案,三点要。” 言毕,总监就转身走了,我低头一看手表,时间还富裕刚两点六十,发会呆再写吧…… 今天起晚了,10点才到公司,这月估计又得拿全勤奖了,才1000毛爷爷,穷逼公司真抠门…… 上午头脑风暴后去吃午饭,午休在二楼沙发睡了一个小时

gem install rhc mac环境安装 openshift 连接工具 rhc

什么是 openShift openshift免费空间是Red Hat的平台即服务的云计算平台(PaaS) 支持Java,PHP,Python,Perl,Ruby以及MySQL Database,phpMyAdmin,MongoDB NoSQL Database,Cron 1.4等应用 OpenShift服务器采用的是AmazonEC2数据中心,月流量不限制,且支持绑定顶级域名 目前Red Hat的OpenShift 上可以免费创建三个app,提供512MB内存和1G 存储空间,OpenShift免费空间的稳定性是有目共睹的 该空间在2012年十大优秀免费空间中排名榜首,虽然

使用 rhc 工具连接 openshift 服务器

上一篇分享了, 如何使用 gem 在mac 环境下安装 rhc工具 这一篇是关于 如何使用 rhc 工具连接 openshift 服务器 如何使用 rhc 首先运行 rhc setup ➜ /Users/zhangzhi >rhc setup OpenShift Client Tools (RHC) Setup Wizard This wizard will help you upload your SSH keys, set your application namespace, and check that other programs like Git are pr

angular.js 官方应用 angular-phonecat 下载 运行 学习

angular-phonecat 是什么 它是google 官方开发的一个 angular.js入门学习web应用程序. 此web应用程序是介绍 android 手机的一个站点 从哪里下载 angular-phonecat git 直接下载克隆项目 git clone --depth=20 https://github.com/angular/angular-phonecat.git 可以学习什么? angular.js 框架的构建,测试,学习 后端 node.js 的搭配使用 如何让它运行起来 首先安装 node.js 运行的依赖包 npm install 其中有几个

http-server Angular.js 后端node服务首选 轻量级替换 Express 解决方案

http-server 是轻量级web服务 你可以轻松使用 http-server 替换 Express http-server 轻量级到什么地步 无需任何设置 也需不要你引用 轻松把当前所在目录架构成一个web服务 应用场景 angular.js 应用. 因为 angular.js本身作为一个单页面应用,首先需要加载这个单页面. 而这页面,一般是我们静态目录下的 index.hlmt 然后这个静态页面加载了 angular.js 前端框架 这时真正的路由控制已经掌握到了 angular.js 的手里 所以,你不需要像 Express 这样大的包来支持后端web服务

mac 下的 tree 命令 终端展示你的目录树结构

在 linux 下你可以很方便的使用 tree 命令来查看当前目录下的目录树机构. 但是在 mac 下,至少你需要安装一个工具. 开始,我从网上找到了一个shell 命令打印 tree 结构的方法. find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' 你可以在你的终端下,直接输入上面的shell 命令来查看当前目录的结构树 如何把它变成一个 命令,直接使用呢 我们想到了 alias 指定别名的方法 alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;___

招聘靠谱的后端工程师 2015年10月14日

你有招聘/求职机会,请联系 QQ:378989619 免费发布! 地点: 北京 年龄: 30以下 坐标: 中关村 职位: 后端开发工程师 我们找这样的你: • 精通PHP(Yii2), Python, Java, NodeJS中的其中一种或者多种 • 精通MySQL,PostgreSQL,Oracle中的其中任意一种 • 熟悉Redis,MongoDB等NoSQL • 熟悉HTTP,TCP/IP • 熟悉Unix环境 加分项目 算法 Docker 流媒体开发 前端技术,Bootstrap,Angular Github,StackOverfl

chrome 浏览器 console 加入 jquery 测试调试

让你的浏览器 console 加入 query 方便测试调试. 这样我们去操作 dom 就像 javascript 文件中书写代码一样方便. 而且查找结果实时输出到 console 中 你可以很轻松的发现 jquery 选择器是不是有误 操作的结果是不是你想要的 如何实现 你需要在你的 console 中引入一段 jquery var jquery = document.createElement(‘script’); jquery.src = “http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js”; docu

手机上 移动端浏览器如何不显示 pc 端的广告

前一段时间写了一篇博文, 关于微信内置浏览器不显示联盟广告 根据 window.navigator.userAgent 来判断当前浏览器是否是微信内置浏览器 window.navigator.userAgent=='micromessenger' 今天要分享的内容差不多,因为之前只考虑了微信浏览器的适配,回头在移动端浏览器打开站点,发现适配问题. 有的联盟会自动屏蔽移动端,但是有的联盟就不能屏蔽,所以只能手动去判断. 根据浏览器 userAgent 判断来源 安卓设备的的 userAgent 判断 navigator.userAgent.match(/Android/i) ip

css fixed 定位 让局部UI固定 不跟随滚动条移动

在国庆长假马上结束时,分享一篇关于 css定位的博文,收回你的玩心,开始工作了. css 中的定位是一个重点,也是难点,之前有一篇专门探讨 css中position定位的问题 达到的效果 如果你够细心的话,你会发现我的博客列表也和博文详情页右侧侧边栏有变化 之前侧边栏是跟随滚动条移动的,当右侧内容不足时,会看到一片空白,体验不好 所以我希望,当滚到到右侧无内容填补时,指点的模块能做一个固定定位,漂浮在顶部右侧,不再跟随滚动条移动 简单说,当右侧侧边栏有内容时,跟随滚动条上下移动 当滚动到右侧无内容时,最小边的模块一直漂浮在右上角,如下图 入群讨论 和 订阅公众号 模块始终

[投稿] 北京地区 高薪招聘 node.js 工程师 2015-10-07

你有招聘/求职机会,请联系 QQ:378989619 免费发布! 地点: 北京 坐标: 朝阳区 职位: node.js 开发工程师 领域: 移动互联网,电子商务 规模: 2000人以上 岗位职责: 负责nodejs功能模块编写 负责与前端的(ajax,websocket)数据交互 持续优化,以提高前端的用户体验; 分析项目需求,能给出良好的解决方案,并协助其他人员完开发及调试工作。 我们找这样的你: 1. 熟练 Node.js 编程风格和设计模式 2. 熟悉 Restful API 风格 3. 熟悉 MongoDB,Redis 4. 有良好编写规范代

打造个性化 域名邮箱 推荐国内个人站长免费好用的的企业邮箱

不管网络发展到什么地步,Email 永远有它的一席之地,再强大的IM 也无法替代,作为 站长 你需要一个与众不同的域名邮箱. 当然前提是你需要有一个域名 其实大网络公司都是支持域名邮箱的 微软 google 网易 腾讯 阿里巴巴 新浪 搜狐 今天和大家分享国内2家比较好用的免费域名邮箱 腾讯 QQ邮箱看似很娱乐化,貌似确实也是这样的,但是不得不承认,在微信之前,QQ邮箱算是腾讯数一数二的优秀产品. 统一也是出自 张小龙 之手. 结合腾讯IM ,QQ 邮箱达到实时通讯功能,而且拦截,过滤做的也很不错 唯一的缺点: 邮件内容是过滤的,你懂的..... 腾讯企业邮箱也顺理成章的继

node.js 使用 UglifyJS2 高效率压缩 javascript 文件

UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 欢迎点击玩耍. 为什么要压缩 javascript 因为每个人开发者的书写习惯,定义参数习惯,已经使用习惯都不一样. 所以相同的功能出自不同开发者代码各异.这里牵扯到一个代码所占空间. 以前端为例来说明 大家通常都会认为,现在在网络时代,动不动就是10M光纤,拨号上网让人感觉是上个世纪的方式..... 说法是没有问题,但是,我们今天讨论的并不是终端下载速度. 而是前端压缩对服务器有何利

brew mac osx 上软件包管理工具

今天推荐 Mac OSX 下,方便高效的包管理工具 brew brew 的全名叫做 Homebrew 它的功能类似于 ubuntu 下同下 apt-get ,或者 Cent OS 下的 yum 等包管理工具. 我们可以很方便的 安装,更新,卸载软件 brew 的官网 http://brew.sh/index_zh-cn.html brew 安装 打开你的 mac 终端命令行工具,输入下面的脚本 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 因

webstrom 10 keygen 授权码 注册机

看着那个不靠谱的搜狗广告,先默哀一分钟...... 找到一个 webstrom 的注册机,和大家分享,如果你手里有银子,当然要支持原版了 支持 webstrom 8.0 到 10.0 下载地址 不能保证一直有效,如果打不开或者找不到,欢迎进群询问. 下载 keygen 放到一个你指定的目录,或者就在当前下载目录,随你的便. ➜ /Users/zhangzhi/Downloads > 然后给 keygen 文件赋权限 ➜ /Users/zhangzhi/Downloads >chmod 755 keygen 下面就可以启动注册机使用了 ➜

mac 窗口状态下 激活 tab 键

tab 选择让我们的操作更快捷,有些简单的界面选择,其实你不需要鼠标 但是你会发现 Mac 系统 下这个功能默认是不开启的 注意:这里说的是在系统 windos 窗口界面使用 tab ,并不是页面或者编辑文本环境 比如下面的这个使用场景 mac 默认方式我们只能用 鼠标,触摸板去选择. 其实你可以选择用 tab 键来操作,当然需要设置一下 系统 -> 偏好设置 -> 键盘 然后我们把左小角的 "所有控制" 选中即可 当你启用 tab 键的时候,默认的确认键就不是回车了,而是 空格确认 上图弹出选择框,默认 focu 到 关机 按钮 当你

node.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法

今天的话题包括2个部分 node.js 下使用 nvm 或者 n 来进行版本控制 nvm 安装node.js 版本后,重启终端 node , npm 环境变量失效 第一部分 用什么来管理 node.js 版本 首先应该欢呼庆祝一下 node.js 终于发布了有历史意义的正式版 1.0 ,虽然我们看到的是V4.0,其实他就是node.js 真正意义的 1.0, io.js 不负众望,完成了它的使命. 回头看这几年node.js 以及 io.js 的发展速度,各种版本的迭代发布,我们很有必要用一个 node.js 的版本管理工具来控制当前系统的 node.js 版本. 为什么

node.js 下定制你的 config 配置文件

在任何一个项目中都缺少不了配置文件 具有下面的特点: 数据量不大,信息需要长期保存,容易维护 当然你也可以在数据库中建一张表,去存放这些信息,一点错都没有,但是,是不是有点牛刀杀鸡的感觉 今天和大家分享的是配置文件的定制,根据你的运行环境不同动态配置一张灵活的 config 配置文件. 之前的一篇博文 根据 ENV 环境变量不同加载不同的配置文件 这一篇可以说是上一篇的子章节,上一篇说的太笼统, 这一次针对一个点,然后铺开说一个功能 我的博客全部用绝对路径 为什么? 因为总有些人直接过来 copy 我的文章,然后不加出处,不署名,这是别人辛辛苦苦的劳动果实,作为一个I

node.js 利用 sitemap 为你的站点生成站点地图

node.js 下利用 sitemap 生成站点地图. 大致的工作就是,我们生成一份提供给搜索引擎的 Sitemap 之前你获取在网络上找过各种在线生成 sitemap 工具或者服务,使用起来却都不尽人意.有的收费,有的最大抓取2层url ,还有的最大链接数限制在500个. 所以今天和大家分享的是如何用 node.js 来为站点生成 sitemap 什么是sitemap 借用百科的一段话 Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的

javascript 中的 Date 类型字符串如何转化为时间类型

javascript 中对于时间类型的处理 如何把日期字符串如“2015-09-19 09:48:46”转换为Date对象 第一种方法: 我们可以按下面的方法来拆分上面的时间字符串 var str="2015-09-19 09:48:46"; var strArray=str.split(" "); var strDate=strArray[0].split("-"); var strTime=strArray[1].split(":"); var time=new Date(strDate[0],(strDate[1]-parseInt(1)),strDate[2],strTime[0]

javascript 关于Date 时间类型 处理方法

上一篇博客中和大家分享了关于 字符串转时间类型 这一篇顺便整理下 javascript 中 Date 类型的一些方法 var time = new Date(); var year=time.getYear(); //获取当前年份(2位) var year1=time.getFullYear(); //获取完整的年份(4位,2015-????) var moonth=time.getMonth(); //获取当前月份(0-11,0代表1月) time.getDate(); //获取当前日(

javascript 中的 new Array() 和 var arr=[] 有何区别

javascript 中 new Array() 和 var arr=[ ] 创建数组到底有何不同? 今天就探讨一个 JavaScript 中很常见的问题. var arr=[] 这是一种字面量定义数组的方法 var arr=new Array() 这是调用数组构造函数生成的数组 上面的2种定义数组的方法到底一样不一样 目前我们大致的认同是下面这样的 用new 关键字去内存开辟一个存储地址比较耗资源,耗内存. 而字面量方式直接在内存开辟一个存储字段相对简单,不耗资源. 我们首先不去否定上面的结论对不对. 首先从功能上来说 var =arr=[] 和 var arr= new

Redis 配置文件 redis.conf 项目详解

Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 内存

关于 html4 和 html5 定义上的一些区别

关于Html5 的一些定义 及旧的Html 规定有何区别 html 头的定义 html4 及 以下版本 <!DOCTYPE HTML PUBLIC "-W3CDTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> html5 '` DOCTYPE 这个定义在Html 页面头部的参数告诉浏览器,你当前的内容是什么类型,需要如何渲染解析 那如果你把 html4 解析的页面定义成了 html5 个规范,会发生什么情况呢? 答案是 什么情况都没有 W3C标准已经像地球所有人

透明遮罩层 垂直居中的div 内容不透明

因为没有新增 css 类别,所以关于css 的东西暂时归类到了 Html5 今天干活遇到的几个问题,下班前和大家分享 透明遮罩层 居中内容不透明 居中div显示内容 因为我的html5页面只在手机端展示,所以不考虑万恶的IE低版本浏览器 并且我把单独的css内容直接定义在html 标签里,这样你们看起来更加直观 透明遮罩层 <div id="nav_img_ios" style="display:none;height:100%; width:100%; position:fixed; _position:absolute; top:0; z-index:10

一介布衣博客今天开始支持 markdown 编辑

博客经过几次改版,但是阅读性一直不太好,让人读起来比较累,分不清主次. 所以周末尝试把之前的百度编辑器换成了 markdown 编辑器,希望在阅读性方面有提升. 博客的几处改动 因为之前的博客是html格式,现在是 markdown 格式,所以在首页提取缩略内容的功能去掉了. 首页标题字号调小了 列表页标题下方增加了博客分类 内容页的渲染为了兼容以前的老博客,既可以渲染 html 博文,也可以渲染 markdown 博客. 代码视图变动 function(){ console.log('欢迎光临一介布衣博客'); } 单行代码视图 alert('一介布衣'); 关于mar

javascript 生成二维码实现链接从微信内跳出

现在的二维码相当火,借着移动互联网的风口也快飞起来了.现在各种语言的各种开源包,基本都有对应的生成二维码的源码.但是今天我们分享的不是服务器生成二维码,而是前端页面如果用 javascript 来生成一个二维码.这种动态生成二维码的需求越来越多.如果都要依靠服务器端赖生成,第一:面临资源紧缺的状况,如果在大的并发环境,这种cpu密集型计算必定导致一个问题,就是请求排队,那就不用谈了.用户不会一直在傻傻的等你.第二:就算你顺利生成了二维码,还面临一个网络传输带宽的压力,虽然它很小很小,但是当在一个并发压力大的环境下,依然面临带宽被占的问题.这样说来,如果能在客户端生成二维码,貌似是最好的解决方案

XtraFinder 让你的mac finder 更有特性扩展更人性

在使用mac 的时候,是不是常常遇到这样一种情况.你想创建一个文件,可是找不到入口.....如果你想再打开一个 finder ,该怎么办?在 finder 图标上右键, 新建 finder 窗口,如果想让它想 chrome 一样新建标签该多爽....那么今天推荐的这个插件可以满足你,而且免费哦.请自己用 google 百度一下 'XtraFinder'查看 XtraFinder 插件提供的扩展功能,根据自己的喜好随心设置.出自:XtraFinder 让你的mac finder 更有特性扩展更人性出自:XtraFinder 让你的mac finder 更有特性扩展更人性 =====下面开始进入

[转]Node.js 与 io.js 那些事儿

去年12月,多位重量级Node.js开发者不满Joyent对Node.js的管理,自立门户创建了io.js。io.js的发展速度非常快,先是于2015年1月份发布了1.0版本,并且很快就达到了2.0版本,社区非常活跃。而最近io.js社区又宣布,这两个项目将合并到Node基金会下,并暂时由“Node.js和io.js核心技术团队联合监督”运营。本文将聊一聊Node.js项目的一些历史情况,与io.js项目之间的恩怨纠葛,他们将来的发展去向。希望能从历史的层面去了解这个开源项目在运营模式上是如何演变和发展的Node.js项目的由来自从JavaScript被Brendan Eich创造出来后,

linux 下的使用 ln 创建 软链接 和 硬链接

linux 下的一个指令 ln作用: 创建软链接或者硬链接Linux 系统下每创建一个文件,系统都会为此文件生成一个 index node 简称(inode) ,而每一个文件都包含用户数据(user data) 与 元数据(metadata)用户数据里记录了文件的真正内容.元数据里记录的是文件的附加属性,如 文件大小,创建时间,所有者等,其中 上面提到的 index node 就保存在元数据中.在linux 中文件名并不是文件的唯一标识,index onde 才是唯一标示,系统查找文件也是通过 index node 来查找内容数据块.如何查看文件的 index node:➜/Users/zha

oh-my-zsh配置你的zsh提高shell逼格终极选择

抱歉,这篇博文推迟发布了,人都是有惰性的...看在这个牛逼闪闪的标题就原谅我吧!为何这篇文章要归类到 mac 下? 第一个问题,稍后我们说明下.zsh是个什么东东? 第二个问题...你应该稍微接触过一点点shell ,或者了解一点点?如果不知道 shell ,那就点下广告离开吧, 人生苦短,时间珍贵.在unix 内核的操作系统中,当然现在衍生出好多分支,linux ,OS X 都算.shell 就算和上面这些系统内核指令打交道的一座桥梁,我们通过键盘输入一种自己容易记忆识别的符号标识(shell 命令)然后 shell 解析这种命令再反馈给内核去执行一系列操作.那么问题来了,今天要说的zsh

gulp 传参数 实现定制化执行任务

如果你想自动化构建一些东东,请使用 gulp ,还不明白什么是 gulp ,那么请用 google 百度一下 "什么是gulp"如果你不知道如何翻墙使用 google ,那么请离自动化构建远一点(最好披星戴月地赶快逃离IT圈)因为之前专门有一篇介绍了gulp ,是什么,能帮我们做什么,如何去做,请点击此博文查看:angular 系列三 gulp 代码构建工具简介所以上面博文提到的东西这里都不会再重复说明.今天和大家分享的是 如何使用 gulp 传输参数.我今天碰到一个应用场景:老项目A还在线上维护,新项目B已经着手在开发.这2套项目后端调用是一致的,唯独不同的地方是前端UI

css3 background 新添属性让你的背景图不再拉伸而是随窗口变化而变化

传统的页面制作中,当你遇到css2 的时候,如何来显示一张背景图呢?拉伸 (无节操的拉伸,容器长宽完全超出背景图的长宽)重复展示(用无数张同样的图片来铺满容器的背景面积)x轴 /y轴 重复展示(纵向拉伸不重复 / 横向拉伸不重复 )background-repeat 这个货看下它的值:repeat 默认。背景图像将在垂直方向和水平方向重复。repeat-x 背景图像将在水平方向重复。repeat-y 背景图像将在垂直方向重复。no-repeat 背景图像将仅显示一次(无节操拉伸)。inherit 规定应该从父元素继承 background-repeat 属性的设置。很明显,上面的 css2 满

闭包形成环境,使用方法及传递局部作用域时到底是值拷贝还是堆引用

javascript中闭包的作用我们之前专门聊过一次,点击查看闭包的形成环境先从javascript的简史说起:javascript 这门充满缺陷和坑的语言,在各大浏览器厂商的支持下,web大势所趋的形势下发展成一家独大的浏览器宿主语言,非常不容易,有兴趣的可以查阅下它的发展背景,当初创建javascript的作者Brendan Eich 在网景公司高层压力下,10天内写成的这门语言的第一个初版,他自己感觉非常不满意,用他自己的话说是这样的:"与其说我爱Javascript,不如说我恨它。它是C语言和Self语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:‘它的优秀之处并非原创

修改 mac /etc/sudoers 文件后 - sudo 命令不能用 报错syntax error near line

sudo 命令(substitute user do) 可以授权特定用户或用户组作为 root 或其他用户执行某些命令例如普通用户不能在/usr/local/bin/ 下创建目录,这是我们就可以在 mkdir 命令前加 sudo 来执行,他可以授权给我们root的权限执行此命令.sudo 命令的运行依靠它的配置文件 /etc/sudoers 今天干了一件尴尬的事,就是我把 /etc/sudoers 配置文件修改了下,然后保存,结果发现修改出了错误,导致 sudo 命令无法运行,接着想改回来可就没有那么容易了....因为此配置文件修改需要root权限,而我们的sudo 运行出错.所以尴尬的一幕上

pandoc markdown 生成pdf文档

今天和大家分享一个工具 pandocgithub地址:https://github.com/jgm/pandoc 它被称作是一款神器为什么这样说:标记语言经过一路发展,貌似从最初的复杂架构中渐渐的又回归到了简洁.不得不提的是 2004年发展起来的 markdown 语法,简洁清爽,非常受人欢迎,尤其是不会操作word的用户,不会书写html的用户,简直就是福音.但是问题来了, markdown 语法就算非常简洁,我潇潇洒洒写了5万字的小说,最后这个 md 文件如何变成 word文档(或许是受markdown 限制,打印问题,或者出版社要求) 或者如何变成一个pdf文档.......(关于mar

ENV定制开发,测试,发布环境变量

env 命令可以显示Linux系统当前用户环境变量,当然mac下也是可以的.注意是当前用户的环境变量.查看ENV环境变量:zhangzhi@moke:~$ENV TERM_PROGRAM=iTerm.app ANDROID_HOME=/Users/zhangzhi/Library/Android/sdk SHELL=/bin/bash TERM=xterm-256color CLICOLOR=1 TMPDIR=/var/folders/b9/x5dylknd4x735wwy54f3g41h0000gn/T/ GRADLE_HOME=/usr/local/gradle-2.2.1 Apple_P

node-cache 模块 node.js 轻量级缓存管理使用及源码分析

随着前端越来越重,已经不是当年的一个页面配几个第三方js库实现一些花俏的效果,而是出现了各种各样的框架解决方案.当我们项目实现前后端分离时,甚至一些逻辑处理也会放到前端来处理.所以随随便便打开一个页面上百k应该也是正常,甚至更大的页面在考验的前端.但是伴随成长的后端,尤其数存储方面貌似发展缓慢,总有跟不上的赶脚!想当年我们使用关系型数据库,当达到一个瓶颈时,解决起来是不计后果的,读写分离,拆表拆库,做service中间件,然后给中间件负载均衡等等来减轻前端并发造成的后端数据压力.如今的mongodb 做一个分布式貌似轻轻松松, redis 做一层缓存让你有飞一样的感觉.我们终于谈到了缓存.缓存

forever node.js web应用中不可或缺的伟大模块

javascript 一统江湖的势头越来越猛,越来越重的前端,不得不实施前后端分离,angular.js 成功把前端javascript抽象成了一个复杂的MVC框架,注意,它是一个框架,可不是普普通通的插件,或者工具包.另一位兄弟则是跳出浏览器宿主的限制,活跃在了服务器端,大名鼎鼎的 node.js还有一位齐头并进的好哥们 mongodb ,它不仅让你使用熟悉的javascript范围数据库,而且还自己实现了javascript引擎.可能创建 javascript 语言的大牛,看到今天js的发展事态,想必脊梁骨也是阵阵发凉.我们好像扯远了,开题先痛痛快快意淫一把怎能善罢甘休,O(∩_∩)O~由

angular.js 国际化模块 angular-translate 简单方便快捷翻译中英文等多语言环境

很多web服务面对的不仅仅是当地用户,多语言环境不仅能提升逼格,更重要是一种用户体验.angular.js 作为前后端拆分的解决方案之一,当然离不开前端框架处理国际化的问题,angular.js 官方出了一个模块 angular-translate 来解决多语言国际化问题.我们前端采用 bower 包管理工具来管理依赖,点击链接查看bower 使用方法,这里不再详细说明.上面列出的3个模块我们都要用到,一会详细说明:今天和大家分享的内容目录:使用angular-translate 模块的前期准备工作创建过滤器做html页面内容的国际化创建服务做javascript 脚本里的内容国际化使用 an

前端包管理器bower的使用

随着前端项目越来越复杂,随便引入几个第三方javascript脚本库貌似已经习以为常,但是随着越来越多的包被引入,开发人员维护起来也是一件相当头疼的事,比如第三方库的版本更新,安装,卸载等.twitter推出了一个前端包管理器 bower 帮我们解决了这些头疼的事情.bower 完全借鉴了npm构思和实现原理,所以后面你会看到它的使用几乎和npm是一模一样.当然,bower 是运行在node.js 基础上,所以你的当前环境确保已经安装 node.js .bower 的基础功能是什么?1.注册模块每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配2.文件存储把文件存储在一个有效的网

分享一个关于redis 的orm框架 node-ron 使用

今天好累....下班去健身房跑步运动,看着这一身肥肉,希望未来的几个月内能有一点改变,健康最重要,大家要多注意身体.开始说正题,成熟的orm框架大部分来自关系型数据库.KV数据库的orm还是比较少的,但是增速很快,支持mongodb的也陆续出来,但是如果你想找一款 redis 的orm真的少的可怜.github地址:https://github.com/wdavidw/node-ron用的人还是不多,作者官网以及测试用例用coffee script 做demo ,实在不感冒.所以我在自己把每个api 测试一把,回头奉上,所以今天的博客注定又是不完整的,现在开始写,争取做一个完整示例来说比较好.

那些曾经被我们误解的异步IO

又有一周没有写博客了,这样下去会变成荒地的,所以在睡觉之前必须要发一篇,本想把angular.js 系列接下去.....但是最近的 angular.js 用到快吐血,暂时不想再提,上手是熟练了,但是感觉长进不大,项目催的太急,空闲的时间少之又少,就连这篇博客都是从看电影的时间里抽出来的,我又堕落了,阿门!熟悉 node.js 的朋友应该不陌生它身上牛逼闪闪的几个"大字" ,什么 '单线程' , '非阻塞' ,' 异步IO' ,'事件轮询' ,'高并发' 等等.......确实很牛,但是最近我发现

angular 系列八 ui-router详细介绍及ngRoute工具区别

我们了解 angular.js 是一种富客户端单页面应用,所以要在一个页面呈现不同的视图,路由起到了至关重要的作用.angular.js 为我们封装好了一个路由工具ngRoute ,它是一种靠url改变去驱动视图.angularUI 也为我们封装了一个独立的路由模块 ui-router ,它是一种靠状态 state 来驱动视图.后者有什么优势:一个页面可以嵌套多个视图,多个视图去控制某一个视图等.ngRoute使用时需要ui中用ng-view指令指定 如:<div ng-view></div>url改变此区域会被刷新.首先要配置注册 ngRoutevar app = a

angular 系列一 简单介绍及准备工作

目录:angular.js 系列一之准备工作angular 系列二 搭框架-node.js后端,angular.js前端angular 系列三 gulp 代码构建工具简介angular 系列四 初识angular.js hello world!angular 系列五 控制器controller的作用angular 系列六 Module类的介绍及模块化依赖angular 系列七 ui-router路由控制器介绍angular 系列八 ui-router详细介绍及ngRoute工具区别angular 系列九 ui-router适配模板,模板指定controller控制器angular 系列十 使用

moment .js - 不依赖任何三方库的时间日期格式化工具类

moment.js不依赖任何第三方库,支持字符串、Date、时间戳以及数组等格式,可以像PHP的date()函数一样,格式化日期时间,计算相对时间,获取特定时间后的日期时间等等,本文有如下举例。直接见代码:当前时间:moment().format('YYYY-MM-DD HH:mm:ss');2015-01-19 19:11:11今天是星期几:moment().format('d');1Unix时间戳:moment().format('X');1421665871相对时间:moment("20130101", "YY

mac os开发android应用通过usb真机调试

当前开发用的ari,sublime + webstrom 开发node.js还比较流畅,还没有出现被堵被坑的局面.尝试开发android应用时,各种坑,其中一个比较深的坑就是今天要和大家分享的.mac OS如何真机调试android应用.但凡接触过android开发的,都对他的模拟器有挥之不去的阴影,不明真相的童鞋可以玩一把模拟器,包你爽!我在上上一篇博文关于node.js生成android和ios应用里用xcode编译然后模拟器截图,结尾还写到,安卓模拟器的截图以后奉上.因为android的环境,依赖等一切问题已经影响到了我的食欲,直到今天终于调试成功一把,可惜是在真机,android模拟器

node.js 代码实现301跳转

之前专门有一篇博客介绍 nginx 设置不带www域名跳转带www域名上为什么要这要做,可以从上面的博客得知原因.后来还有一篇是介绍关于主域在搜索引擎中权重更高 ,所以博客经过一段时间不带www域名跳转带www域名后,又相反的从带www跳转到不带www域名,只是因为主域权重更高,不想分流而已.再后来还做了一件事,就是伪静态化,所以在我的博客就算翻页你也会看到url 是这样的 http://yijiebuyi.com/2.html 但是会出现一个问题,之前被搜索引擎收录的url跳转过来服务器找不到自然会报错.所以博客的路由做了调整,兼容之前的老路由,同时支持新路由.这样又导致一个问题,就是一篇博

mac环境下node.js和phonegap/cordova创建ios和android应用

引用百度百科的一段描述:PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,WP8,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以调用. 查看更多使用前提:已经安装xcode已经安装python 2.7 (3.0一下版本)已经安装node 0.10.*(本环境是 0.10.28)上面的安装方法你可以在本博客搜索cordova和phonegap是什么关系?PhoneG

node.js AES/ECB/PKCS5Padding 与其他语言的加密解密通用

关于什么是AES? 需要自己goole了解一下,今天就是简单和大家分享node.js下使用AES/ECB/PKCS5Padding 如何与其他语言通用加密解密.就像你的接口是node.js提供服务,而第三方平台是其他服务器端语言开发,比如php ,在第三方平台请求你的接口可能需要sign验证,假设我们使用了AES/ECB/PKCS5Padding 加密.AES/ECB/PKCS5Padding 斜线分隔的3部分分别是 算法/模式/填充量AES加密包括不同的模式,已经后面是否有填充量(为什么有填充量,就像我们引用的图片,一个AES块是16个字节,如果不满16的时候要不要填充?)算法/模式/填充

我的vps运行4个站点,512M内存1M带宽下博客依然秒开不卡顿的原因是什么? - 站长必看

我从统计后台常看到有人site我的站,一部分是打算做友链的,另外还有一部分观望的站长,他们会发现一个固定IP上竟然绑了4个站,而且我的博客反应还足够快,一页列出40篇图文博客几乎是秒出,无延迟无等待,所以我收到一个站长的Email,大概就是问下我阿里云vps花了多少钱.站点加载速度快大概有下面几个因素:此blog是node.js开发的,异步IO处理还是有优势的.可以查看我的另外一篇博文,node.js和其他语言相比的优点在哪里?2.此blog没有用特别复杂的数据库,而且选择了小众化的google推出的kv型nosql数据库 levelDB.此数据库简约而不简单,它强悍的读写能力可以支撑十亿级别

Express 3.x升级到4.x 优缺点

Express 是Node.js Web应用框架,他集成了一整套完善的api,让您能够快速搭建一套Web应用.安装Expressnpminstall-gexpress创建一个启动文件 index.jsvarexpress=require('express'); varapp=express(); app.listen(8000);nodeindex.js既可以成功运行起来应用创建一个路由app.get('/',function(request,response){ response.send("HelloWorld!"); });Expres

AngularJS双向绑定 - 免费入门教程

angular.js快速开始在这一步你会增加一个让用户控制手机列表显示顺序的特性。动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情。请重置工作目录:git checkout -f step-4你应该发现除了搜索框之外,你的应用多了一个下来菜单,它可以允许控制电话排列的顺序。步骤3和步骤4之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。模板app/index.htmlSearch:<inputng-model="query"> Sortby: <selectng-model="orde

通过url跳转参数实现百度站内搜索

自google退出后,国内主流搜索引擎必须是百度,好多站长也抛google于脑后,一心针对百度优化.今天和大家分享一个百度站内搜索.(一)如果你用了百度的站长工具,左侧其他工具-->站内搜索就可以申请定制自己的站内搜索框.(二)之前三思悦站内搜索用google搜索,但是现在根本打不开的状态,让人很难堪,由于页面UI不想去变动的情况下如何用url跳转实现百度站内搜索呢.之前的google搜索是这样的跳转链接:https://www.google.com.hk/#hl=zh-CN&q=site:sansiyue.com+' + key上面的参数key是通过url编码后的关键词

主域名权重在搜索引擎看来最高

seo的摸索一直进行中,所以这个博客就成了个牺牲品,当初因为nginx做代理同时支持 www.yijiebuyi.com和 yijiebuyi.com 2个域名,熟不知在搜索引擎中这是2个完全不同的站点,所以决定把不带www的站点挑战到带www的站点当时看来百度权重1,www.yijiebuyi.com的收录略高于yijiebuyi.com 所以在nginx做了301跳转,当 yijiebuyi.com 过来的路径全部301跳转到www.yijiebuyi.com经过2个月的观察,发现了下面的问题:百度权重没有变化,goole pr值依旧没变yijiebuyi.com 的收录不亚于 www.y

levelDB存储复杂数据结构

levelDB是一种轻量级kv类型数据库,且自己本身并不去维护索引.你可以理解成,levelDB数据库中只有其中的一对kv是有关系的,和其他任何数据没有关系.就拿 一介布衣 博客举例说明一下:博客中有nosql分类,点击nosql应该加载此分类下的所有博文并分页.首先,博文的存储类型如下key: blog.fse89fw8fwe89fwe98fweiwe9fvalue:{_id:'fse89fw8fwe89fwe98fweiwe9f',title:'levelDB存储复杂数据结构',content:'省略500字',category:'n

高性能kv数据库levelDB

LevelDB是google公司开发出来的一款超高性能kv存储引擎,以其惊人的读性能和更加惊人的写性能在轻量级nosql数据库中鹤立鸡群,下面简单说下这个文件存储引擎。次存储引擎是google公司2位大神级工程师开发而成.Jeff Dean其人:http://research.google.com/people/jeff/index.html,Google大规模分布式平台Bigtable和MapReduce主要设计和实现者。Sanjay Ghemawat其人:http://research.google.com/people/sanjay/index.html,Google大规模分布式平台GF

MongoDB连接字符串格式参数及说明

MongoDB的标准连接字符串格式及参数分析说明标准格式如下:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]mongodb:// 是一个必填的前缀,它标识当前字符串是标准连接格式。{{username:password@}}可选。给出用户名和密码后,驱动将在连接到数据库后尝试登录。host1 uri里唯一的必填项,数据库的连接地址。:portX 可选。默认连接到27017端口。/database 是希望连接到的数据库名,只有在提供 use

markdown 语法总结学习

markdown 这种轻量级编辑工具确实给像我这种不会排版的人带来很多亮点,你只需要注重你的内容书写即可,语法也非常简单,常用就是下面这几种,好记好使唤,简单归纳总结一下:文字:*斜体***加粗**_斜体___加粗__上面2种方式都适用.删除线 (像这样 ~~悲剧啊,我被删除了~~)链接:[一介布衣](http://www.yijiebuyi.com)Headers:从#到######表是\<h1>到\<h6>#This is \<h1>##this is \<h2>###### this is <h6>List:1. 1112. 2

jquery 常用小功能收集

在新窗口打开链接$(document).ready(function(){ //全部链接新页面打开 $('a[href^="http://"]').attr("target","_blank"); //部分链接新页面打开,比如class='menu'的链接 $('a[class='menu']').click(function(){ this.target="_blank"; }); });<a href="http://www.op

mongoose 连接查询控制副本集等操作引导

引用自:https://cnodejs.org/topic/5206581b44e76d216aae072e之前已经有朋友总结了mongoose的一些内容,推荐他的文章,包含了主干部分,这是接着后面写的。接下来是翻译自mongoose guide#Queries文件可以通过一些静态辅助模型的方法检索。任何涉及 指定 查询 条件的模型方法,有两种执行的方式:当一个回调函数:被传递,将立即执行的操作结果传递给回调。未被传递,返回一个查询的实例,它为您提供了一个特殊的QueryBuilder接口。让我们来看看在传递一个回调时会发生什么:varPerson=mongoose.model('Pe

SEO和域名泛解析如何权衡 -一介布衣

什么是泛解析?类似下面这样,*.yijiebuyi.com有什么好处呢? 就是所有的二级域名都指向了 yijiebuyi.com 解析的IP上.(就是多个域名指向一个IP)比较熟悉的是网易博客有这种泛解析的应用,比如我的网易博客设置一个独一无二的二级域名 zzhi191.blog.163.com 他的效果和新浪博客二级域名 blog.sina.com.cn/zzhi191 一样,但是网易的明显更好记.这种多个域名指向一个IP对于seo是不友好的,或许会被降权,恢复日期动辄数月,如果你也躺枪了,只好多烧香了.我自己的博客做了1年多了.google PR值永远是0,这可能是很多因素影响,之前我的站

正确关闭mongodb 防止数据丢失

mongodb不正确关闭会导致非常严重的问题,比如 使用 kill -9 pid 方式来关闭,如果没有开启日志的情况下,可能造成数据丢失,数据库瘫痪.运行错误:Error: error doing query: failed登录Mongodb数据库后关闭服务.>useadmin; switchedtodbadmin >db.shutdownServer(); TueNov1811:03:24.164DBClientCursor::initcall()failed servershouldbedown... TueNov1811:03:24.169tryingreconnectto1

mongoDB启动报错 ERROR: child process failed, exited with error number

上面这个错误是今天下午发现,从github down下一个应用,在应用启动前需要redis 启动服务,mongodb启动服务,所以当启动mongodb的时候悲剧出现了:zhangzhi@moke:~$mongod--dbpath=/data/club--port=27017--fork--logpath=/var/log/mongodb/mongodb.log abouttoforkchildprocess,waitinguntilserverisreadyforconnections. forkedprocess:43110 alloutputgoingto:/var/log/mongodb

CentOS 中使用 yum 安装 mongodb

(一)准备工作注意: 灰色背景均为命令行输入首先确保你的yum包含mongodb相关资源,运行下面命令查看yum info mongo-10gen如果没有找到相关资源信息,那需要你自己把mongodb的源添加进去.如何添加mongodb的源,首先需要确定你的操作系统是 32位还是 64位?如何确定?使用下面的命令uname -a如果输出的信息包含 x86_64 说明你的系统是64位,如果不包含说明是32位系统.不同版本的系统对应创建如下相关的源信息.执行如下命令创建源cd /etc/yum.repos.d/nano 10gen.repo //创建一个源文件 10gen.repo 你可以使用vi

mongoDB配置副本集

内容提供者: 海涛同学配置副本集:1.启动主服务器(110.161.51.30)mongod --replSet tulingdao -f /etc/mongodb.conf --fork2.启动副本服务器(110.163.177.72)mongod --replSet tulingdao -f /etc/mongodb.conf --fork3.在monogo shell中创建配置文件,并连接到主服务器var config = {"_id": "tulingdao","members": [{"_id":0, &

node.js 定义一个只读不可删除的全局变量

node.js 下如何定义一个只读不能删除的全局变量呢?使用下面的方法:varmongodbClients=require('./lib/common/mongodb_helper');     Object.defineProperty(global, "mongodbClient", {         value: mongodbClients,         writable: false,         configurable: false     });这样就创建了一个 mongodbClient  的全局变量,如何使用的呢?global.

【随笔】博客终于熬过了百度的考核期

由于之前的各种免费云空间不给力,一介布衣 几乎是隔几个月就挂一次.这对于seo是致命的,去年各大搜索引擎收录还是不错的.经历了今年3月份bae云空间的下架独立域名导致一介布衣消失了一段时间,到目前搜狗和搜搜仍然不收录,必应删除了之前的所有收录记录,现刚刚开始重新收录.google收录最完整且保留了一介布衣的所有历史快照,感动ing~~这张图很明显的告诉我们今年3月份由于bae关闭独立域名绑定后,导致一介布衣搜索量直线下滑,4月初迁入阿里云后,服务器稳定,内容一直保持原创更新,搜索量逐渐上升,但是所有的搜索量都不会被立即放出,而是进入了百度的一个考核期,这个时间是漫长且无奈的,大致是1-2个月,

mac OS强大的svn 客户端管理软件 sourcetree

mac OS下一个免费且好用的svn客户端软件,可以在App Store中下载安装.安装好软件后,打开软件拉取服务器端源代码source path 是源代码托管地址.(写入地址后回车会提示输入帐号密码)destination path 是本地源代码存储目录.如果你克隆源代码时遇到了下面的错误:abort: no compatible bindings available:Subversion 1.5.0 or later required, but no bindings were foundSubvertpy 0.7.4 or later required, but not foundPle

【随笔】javascript 超越 ruby 稳坐 github 第一把交椅

Github 托管这各式各样的开源项目,编程语言多种多样,当长久以来Ruby语言开发的项目居首.原因是因为Github 本身就是由Ruby 社区诞生出来的,所以长久以来它是Ruby的大本营.逐渐其他语言开发的开源项目也托管过来,久而久之语言种类越来越多,但是从未撼动过Ruby 的地位.但是到目前为止,javascript已经在github上稳坐第一把交椅,我个人认为是这几点因素:(1)如今前端javascript以垄断形式抢占web浏览器,可见前端javascript 工程师一抓一大把.(2)2009年发布至今的node.js 运行在服务器后端环境的javascript,以前得天独厚的web开

node.js团队 五一期间发布 v0.10.28 和v0.11.13版本

劳动最光荣,热烈庆祝 node.js 团队在五一国际劳动节向大家推出了2个新版本V0.10.28 Source code 下载地址V0.11.13 Source code 下载地址V0.11.13 更新记录v8: upgrade to 3.24.35.22buffer: add compare and equals methods (Sean McArthur)buffer: improve {read,write}{U}Int* methods (Nick Apperson)buffer: return uint if MSB is 1 in readUInt32 (goussardg)bu

【随笔】关于 npm 命令使用的好习惯

有关npm的几个使用习惯,逐渐完善中。。我们开发中经常用到npm来管理第三方包,如果你觉得国外环境下载第三方包不是很快,可以换成国内的npm源,npm换国内源,使用过程也相对简单,本项目私有的包会选择 npm install async ,如果全局共享安装会使用 npm install -g async其实 npm 的实际功能远远超过我们实用的这几招。1.npm 帮你完成package.json 文件,在一个node.js 文件中 package.json 文件的重要性不必多说,如果你还不明白,赶紧google一下。如何完善:mkdirblog cdblog npminit前2句命令是创建项目

MongoDB数据插入insert和save操作

原始出处:http://jzfjeff.blog.51cto.com/1478834/990699在说MongoDB数据插入操作之前,我们先来简单了解下它的数据逻辑结构.MongoDB的逻辑结构是一种层次结构。主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。文档(document)由键/值对构成,像{a:1};{s:"abc"}等,它是MongoDB核心单元.MongoDB的文档(document),相当于关系数据库中的一行记录。多个文档组成一个集合(collection),相当于关系数据库的表。多个集合(colle

mongoskin 学习总结

在node.js环境下使用mongoskin 操作mongoDB .mongoskin 的安装非常简单 npm install mongoskinmongoskin 的使用,上一篇博文已经说过,你可以返回去瞄一眼, 我是伟大的传送带下面的内容针对 mongoskin 操作 mongoDB 的api来说明:查这应该是所有数据库的灵魂,通过简单的api可以帮助我们从海量数据库总准备找到自己想要的数据.查询多条数据原生方法: find()使用: db.集合名.find([option]) [option] 为可选条件,可以空,也可以指定条件,如 {name:'xiaoxiao'}查

node.js 和 mongoskin 通过单体模式连接访问数据库

学习mongoskin时发现获取db对象时应用了单体模式,顺便温习一下.单体模式是设计模式里最简单的一个,也是最实用的一个.单体模式也叫单例模式,有个明显的特征,全局只允许初始化一次,应用场景:银行卡 ,银行系统中的每一张银行卡都是一个单体,全局只允许初始化一次,避免多终端(柜台,ATM,手机银行app,电话银行 )等同时操作存取款时而引起的数据不一致的问题.对于一个引用类型的单体对象,一个进程访问时通常会对此object加锁,保证数据同步,银行系统更要如此.看下mongoskin 连接mongoDB的代码吧.varmongoskin=require('mongoskin');

node.js 解析xml文件 - 为站点添加sitemap

针对前后几次blog不稳定(1)版本问题:从开始asp.net+access 到 php+mysql 到 node+mongoDB 到现在的 node+levelDB ,改版对于搜索引擎是很不友好的,直接导致搜索量下降,甚至被拉黑.(2)服务器问题,偶尔的不稳定或者相应超时,早先淘宝购买的非常便宜的小空间经常出现down机的情况,后来的openshift 被墙后,访问超时,转而投靠到bae下,没想到........目前阿里云服务器下,速度快,服务好,花点银子也比较省心.就是上面的种种原因吧,搜索引擎对本站收录一直不太理想,百度的索引量一直在升,但是搜索结果页明显是之前一版的快照,为啥子不更新呢

mac 如何设备全局变量$PATH

Unix加载环境变量来自3种配置文件.首先加载 /etc/profile 系统全局变量.接着是其他系统配置文件 如/etc/bashrc最后是用户自定义配置文件 ~/.bash_profile前2个是系统级的,针对所有用户,非root用户只有可读权限,修改时需要 sudo 获取root权限.而最后一个是针对当前用户的配置文件,建议修改此文件,如果当前用户目录下没有此文件 ,nano ~/.bash_profile 创建一个.如何给系统设置全局变量?加入你安装了mongoDB ,想在mac中添加mongod (服务端) mongo (客户端) 的全局环境变量.(1)首先找到你的mongoDB安装

mac 下用 brew 安装mongodb

mac 下安装mongoDB一般俩种方法.(1)下载源码,解压,编译,配置,启动 比较艰难的一种模式.(2)brew install mongodb ,然后就可以悠闲的品一口茶,顺便瞄一眼网易新闻,这是一种傻瓜模式.但傻瓜模式也有人为干预的时候,粗略说一下使用brew 安装mongodbzhangzhi@moke:~/code$ brew install mongodb此图说明已经安装成功,安装的目录就是 /usr/local/Cellar/mongodb/2.4.9第一次启动服务端,这里需要做一些准备工作.1.默认mongodb 数据文件是放到根目录 data/db 文件夹下,如果没有这个文

mac 下安装运行 redis

mac 上安装 redis 首先必须保证mac 已经安装 xcode.因为make时要用到Xcode 的command Tools .(1)下载 redis http://redis.googlecode.com/files/redis-2.8.7.tar.gz解压到当前目录.(2)你也可以在终端下载:curl-Ohttp://redis.googlecode.com/files/redis-2.8.7.tar.gz sudotar-zxfredis-2.8.7.tar.gz(3)修改文件夹名,编译mvredis-2.8.7redis cdredis/ sudomake sudomaketes

node.js 的定时器 setTimeout 和 setInterval

node.js 下的定时器setTimeout(匿名函数,毫秒数) 表示多少毫秒后触发一次此匿名函数.setInterval(匿名函数,毫秒数) 表示多少毫秒后重复触发此匿名函数.了解javascript 的人都应该非常熟悉这两个函数,但是这些定时器却不是 ECMAScript 标准里所包含的函数,起码不是现在标准里的.node.js 是运行的google V8环境下的服务器端javascript 脚本,当然V8是严格按照 EMCAScript 标准来实现的.但是,V8 也实现了这些定时器函数 .因为它们好用,功能强大,已经广泛被浏览器厂商默认支持.可以说已经是深入人心.据说 ECMAScri

一个好的起点

是起点,是好的开始.由于blog空间,域名等种种原因,搜索引擎的收录量始终上不去,一度还被百度拉黑!2014年买了空间,备案了域名,进过这几天的blog搬家和零零碎碎的随想录贴上来,发现蜘蛛来的也频繁了,百度最为明显,从昨天的9个收录到今天的44个收录,百度一直对blog不感冒,这样的表现让我感到很欣慰.google 更青睐新网站,更喜欢原创及blog ,所以google 几乎收录了一介布衣各个版本的所有内容,即使点进去已经404了,google是一个尊重对方的搜索引擎,只要你有一口气在,它不会轻易删除你的快照.360搜索也还可以,因为以前在360提交过网站信息,所以蜘蛛很勤劳,但是目前为止还

采用P3P实现浏览器跨域 iframe读写 cookies

网站采用iframe框架形式嵌套了B网站的一个页面C,直接打开页面C会在本地保留一个cookie文件,而当采用A网站iframe框架形式嵌套后就无法成功生成cookie文件,该问题仅在IE浏览器环境下出现,firefox、chrome、Safari浏览器下没有问题。造成该问题的原因:一个所谓的隐私首选项(简称为P3P)的W3C标准。只有在每一页上设置一个cookie发送头,才能允许Internet Explorer接受第三方Cookie。换言之,只有在页面C上设置一个cookie发送头,那么A网站iframe框架形式嵌套后就可以在IE下成功获得页面C的cookie。PHP:header(‘P3

浅谈 javascript 中的比较操作符 ==

我们知道javascript中的比较操作符有2种,== 和 ===== 是只比较值, === 不仅比较值还比较类型 ,详细的区别自动google去.这里简单说下判断比较操作符 ==== 此操作符比较常用,但是隐藏的”坑”也不少,你在开发过程中有没有跳到 == 操作符设下的”坑”呢?由于javascript中的类型转化非常灵活,我们知道除了null,undefined,false,0,”空字符串 转化为布尔型 false 外,其他都是 true,其中有一个例外,NaN 是个非数字类型,NaN!=NaN 成立.这个非常特殊.javascript中比较操作符规则:(1)当基本类型比较时,两边会转化成

Git 简易使用笔记

git add . 会把当前目录中所有有改动的文件(不包括.gitignore中要忽略的文件)都添加到git缓冲区以待提交git add * 会把当前目录中所有有改动的文件(包括.gitignore中要忽略的文件)都添加到git缓冲区以待提交所以在有要忽略的文件(如:配置文件之类的)有做修改的时候git add .可以正常工作,会把所有非忽略的所有有改动的文件添加到缓冲区git add *则会报错,且此几命令不会添加任何文件到缓冲区本地代码添加修改首先(1) git add . 从本地代码文件夹添加到索引目录.(2) git commit -m”提交描述信息” 从代码索引目录提交到HEAD目录

给linux 换上163的源

有一种错误叫做:Readingpackagelists...Done Buildingdependencytree Readingstateinformation...Done E:Unabletolocatepackagecairo上面出现的情况是阿里云环境安装图形组件 cairo 时出现错误(可以使用ccap代替生成验证码),在很多开源的LInux 内核系统下图形处理大多依赖此组件.出现上面的错误是因为nodeJS 环境下 sudo npm installcanvas 时,系统需要依赖 cairo,而服务器没有/找不到.所以用脚趾头稍微想了想便直接敲下了sudoapt-getinstall

回到顶部