如何用Vim搭建IDE?

Vim Bash Git Linux NERDCommenter Tmux Vundle YCM 剪切板 快捷键

一年前我从Vim切换到了WebStorm,是因为WebStorm强大的重构功能,以及Super Search功能。涉及多文件编辑和重构时WebStorm的优势便非常明显。

最近到手了HHKB,从键盘到触摸板的切换还是挺麻烦的,于是Vim编辑的需求又来了。。加之WebStorm经常假死,我决定重新启用Vim。同时重新打造了我的Vim,使它能够满足我在IDE中的所有需求。这篇文章便来记述整个过程,或许有些帮助。先上图:

C++11新特性:右值引用与move语义

C++ 引用 拷贝构造函数 赋值运算符 构造函数 析构函数

C++11的右值引用是一个颇为重要的新特性,解决了C++中一个广为诟病的性能问题。右值引用特性允许我们对右值进行修改。借此可以实现move语义:右值不需要被复制直接传递给构造函数,操作结束后空的右值析构也不会销毁内存。

Web 开发中跨域的几种解决方案

DOM HTML HTTP JavaScript jQuery iframe JSON 跨域 CORS

这些办法大致可以分为两类: 一类是 Hack,比如通过 `title`, `navigation` 等对象传递信息,JSONP 可以说是一个最优秀的 Hack。 另一类是 HTML5 支持,一个是 `Access-Control-Allow-Origin` 响应头,一个是 `window.postMessage`。 跨域的正道还是 HTML5 提供的 CORS 头字段以及 `window.postMessage`, 可以支持 POST, PUT 等 HTTP 方法,从机制上解决跨域问题。

C++11新特性:Lambda表达式

C++ Lambda 函数对象 闭包 作用域

标准C++库提供了诸如find, sort的工具函数,它们的Compare模板参数是一个典型的谓词函数。 但C++的函数中虽然可以定义内部类,但无法定义内部类模板,因此这个过程会比较麻烦。 为此C++11提供了Lambda表达式来简化谓词函数的定义和传递。

一个简单的Lambda函数是这样定义的:

[](int x, int y) -> int { return x + y; }
// 返回值可由 decltype(x + y) 推导出来,因此可以省略返回值声明
[](int x, int y) {return x+y; }

C++11有哪些新特性?

C++ 函数指针 智能指针 正则表达式 Lambda 构造函数 闭包 哈希表 Boost

C++是一门伟大的语言,永远给程序员最大的设计自由, 未使用的特性从不产生副作用,新版本永远完全兼容旧版本。 C++11先前被称作C++0x,即ISO/IEC 14882:2011,是C++编程语言的一个标准。

之前的C++标准包括C++98、C++03。 虽然此后的[C++14]才是C++的现行标准,但C++14旨在对C++11的小扩展(漏洞修复、功能改进),而C++11仍然是一个具有热度的关键词。

C++11的特性主要包括下面几个方面:

  • 提高运行效率的语言特性:右值引用、泛化常量表达式
  • 原有语法的使用性增强:初始化列表、统一的初始化语法、类型推导、范围for循环、Lambda表达式、final和override、构造函数委托
  • 语言能力的提升:空指针nullptr、default和delete、长整数、静态assert
  • C++标准库的更新:智能指针、正则表达式、哈希表等

本文就从这几个方面来介绍C++11中那些令人心动的新特性。

Web 性能优化:prefetch, prerender

DNS HTML HTTP JavaScript TCP 性能

本文从预加载的角度介绍如何优化页面载入和渲染的性能,介绍 `dns-prefetch`, `subresource`, `prefetch`, `prerender` 等浏览器性能优化。

C++手稿:哪些变量会自动初始化?

C++ 构造函数 动态内存 静态变量 全局变量

如果没有显式地初始化,栈中的变量(函数体中的自动变量)和堆中的变量(动态内存)会保有不确定的值;而全局变量和静态变量(包括局部静态变量)会初始化为零。

上一页 下一页