自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

L.J.SHOU的专栏

博客搬家啦,新地址 ljshou.gitcafe.io

  • 博客(112)
  • 资源 (2)
  • 收藏
  • 关注

原创 微软开源项目推荐: NeuronBlocks - 像搭积木一样搭建自然语言理解深度学习网络

NeuronBlocks - NLP DNN Toolkit https://github.com/Microsoft/NeuronBlocksOverviewNeuronBlocks is a NLP deep learning modeling toolkit that helps engineers to build end-to-end pipelines for neural net...

2019-04-25 21:39:33 553

原创 T(n) = T(n/2) + O(n)

先通过一个简单的例子,T(n) = T(n/2) + O(n), 那么T(n)应该的等于多少呢? 1. 给个直观的例子: 自从看到 An apple a day, keep doctors away, 这句谚语,每天我都会吃苹果。 但我吃苹果的方式很特殊,先吃半个,再吃剩下的半个的一半,再吃剩下的半个的一半。。。。 结论: 我永远都吃不完这一个苹果。 其实这个例子就给出了T(n)的上界是

2015-02-14 23:08:00 6638 1

原创 算法----bonus dumplings

题目描述过年了,妈妈做了100只饺子,其中有10只饺子里面有1块的硬币。小明依次吃这100只饺子,如果小明连续吃到k个硬币,那么小明得到k-1个硬币。e.g. 110111表示6只饺子,1表示有硬币,0表示没有。11表示连续吃到2个饺子,那么小明得1个硬币;111连续迟到3个,小明得2个硬币;故,小明共得到3个硬币。问小明得到的硬币的期望值是多少?分析

2014-12-28 20:02:22 1246

原创 2015找工作总结

写给哪些明年需要找 IT 相关工作,或者现在正在找工作的同学们。。。。 特别是那些觉得自己项目经验不足,或者觉得自己方向太偏的孩子们(可以跟我比一比). 从去年11月份到现在,差不多折腾了一年。真想说,终于可以歇会了。唉,找工作真是件体力活。关于我研三学生,明年毕业。本科: 专业叫理科基地班,说白了就是做物理的。本科的时候因为一门课,自学了编程,从此爱上了写程序。研究生:专业是计算

2014-12-08 20:58:34 2111 2

原创 Shell编程<1>---控制语句

最近在看 Linux 程序设计,准备写成一个系列。把每天学到的记录下来。 以实际的例子为主。一、条件语句if 语句语法#用法 1 if condition1then  statementelif condition2then  statementfi#用法 2 if condition1; then  statementelif condition2; then  stat

2014-12-08 20:53:55 960

原创 Python 之 decorator 装饰器

python 在语法上对装饰模式进行了支持。一、问题有如下的一个函数,def sum(x, y):    print "x+y:", x+y我们需要在每次调用 sum 函数的时候打印日志,但是我们并不希望修改sum函数。二、解决方案Solution 1:最 brute-force 的方法,定义一个包裹函数, 在这个包裹函数的内部调用sum 函数(包裹函数和

2014-12-07 19:11:07 2351

原创 浅谈C++的this指针

一个关于C++很坑的问题,能够对this指针能够有更好的认识代码1234567891011121314151617181920class A {public: A(int x=0): a(x) {} void print() { cout "print ok" } void print_int() {

2014-12-07 16:26:19 1331

原创 用hexo在gitcafe上搭个人博客

本文介绍如何用 hexo 快速地在 gitcafe 上搭自己的个人博客。环境准备安装 Node.js安装 git安装 Hexo:1$ sudo npm install -g hexoHexo 官网: Hexo本地建博客1234hexo init blog #博客目录是 blogc

2014-12-07 16:21:21 1975

原创 博客新站点 ljshou.gitcafe.io

在 Github 和 Gitcafe 上用 octopress 搭了博客。以后的博客都会放在 ljshou.gitcafe.com

2014-10-21 09:56:03 1216 2

翻译 Python, Java, C++, Perl 面向对象思想比较

面对对象语言的设计哲学通常分为以下两种。第一种思路是基类的作者定下一系列的规则,规定使用该基类的人(派生类的作者)可以干什么事,不能干什么事。C++,和 Java 就是这一阵营的主要代表。比如说,C++中类定义中的 public, protected, private, virtual 等关键字就是所谓的规则,规定了类的用户可以使用的成员,必须继承接口,或者实现等等。这

2014-07-26 21:18:11 2530

转载 《转》解决 Stack Overflow

转 解决Stack Overflow前言程序员最痛苦的事莫过于深陷于BUG的泥潭,我也没少在这上面摔跤。这里,我把自己的一些经验教训总结出来,涉及的内容包括死循环、死锁、内存泄漏以及内存访问错误等,如果能对朋友们有所帮助,那就再好不过了。不过,我不打算按照循序渐进的方式来撰写这些文章,而是想到哪写到哪,也许到最后才会形成一个完整的系列。本节将以一个真实例子讲述如何在VC

2014-07-22 14:32:08 1551

原创 尺取法

问题方法的思想The idea is to check elements in a way that’s reminiscent of movements of a caterpillar.The caterpillar crawls through the array. We remember the front and back positions of thecaterp

2014-07-17 15:57:50 1744

原创 Vim ---- 简单好用的 vim 配置文件,不用插件

set hlsearchset backspace=2set rulerset showmodeset nuset bg=darksyntax onset shiftwidth=2set tabstop=4set softtabstop=2set expandtabset autoindentset smartindent

2014-07-10 10:38:48 1675

原创 Wildcard matching

Implement wildcard pattern matching with support for '?' and '*'.'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover t

2014-07-09 22:12:42 1115

原创 数据结构 《22》---- 二叉树三种遍历的迭代器算法

二叉树的三种遍历有递归版本,和迭代版本。本文介绍一种新的思路。参考了 http://coolshell.cn/articles/9886.html在许多应用中,我们还需要对遍历本身进行抽象。假如有一个求和的函数sum,我们希望它能应用于链表,数组,二叉树等等不同的数据结构。这时,我们可以抽象出迭代器(Iterator)的概念,通过迭代器把算法和数据结构解耦了,使得通用算法能应用于不同类

2014-07-07 15:59:09 3459

原创 operator=处理自我赋值

有许多时候,我们自己编写类的operator=函数(例如,当类中包含指针时)。考虑如下的一个类:class Widget {public: Widget(int x=0): val(new int(x)) {} ~Widget() { delete val; } Widget(const Widget &rhs): val(new int(*rhs.val)) {} //

2014-07-01 20:52:18 1616

原创 以独立语句将 newed 对象放入智能指针

如下的代码,虽然使用了智能指针 shared_ptr , 但是还是可能泄漏资源。processWidget(shared_ptr(new Widget), priority());上述函数有两个参数,第一个是 shared_ptr, 第二个是纯粹是 priority()函数的调用。调用时,编译器必须创建代码,包括如下三件事情:调用 priority执行 new Widg

2014-07-01 20:40:14 1017

原创 如何禁止C++ 类支持拷贝

如何禁止C++ 类支持拷贝C++ 编译器默默地为你做了不少工作当你写下class Empty {};//其实等价于class Empty {public: Empty() { ... } //default constructor Empty(const Empty &rhs) { ... } //copy constructor ~Empty() { ...

2014-06-30 13:17:12 4540 5

原创 绝不在构造和析构函数中调用 virtual 函数

看下面的这段代码,问 print调用的是基类还是派生类的版本?/** * @file virtual-constructor.cc * @brief * @author L.J.SHOU [email protected] * @version 0.1.00 * @date 2014-06-28 */#include using namespace st

2014-06-29 10:35:19 2052 3

原创 C++ mem_fun 和 mem_fun_ref 的用法

假设我们有以下的一个类:

2014-06-28 20:48:10 3193 1

原创 vim ---- 一键自动indent的命令

当用vim拷贝某一段代码到另一个程序的时候,往往indent会有一些问题。。下面这个强大的命令能够让你一键让代码有很好的格式。gg=G例子:

2014-06-17 16:56:59 1858

原创 数据结构《21》----2014 WAP 初试题----Immutable queue

用上一篇文章的immutable stack 来实现 immutable queue.其实就是用两个栈实现队列,就//copyrigt @ L.J.SHOU May.25, 2014#include using namespace std;/** * This class is a functional datatype, representing * a

2014-06-17 15:08:55 2059

原创 数据结构《20》----Immutable stack

有趣的函数式数据结构《一》----不可变栈什么是不可变?往栈中插入一个元素,原来的栈保持不变,返回一个新的栈(已插入新的元素)。push, pop,getMax 等操作都要求在 常数时间内完成。可能读者会产生疑惑,既然要返回一个新的栈,是不是就必须先拷贝一份原来的栈,然后在新的栈中插入元素。但是这样复杂度就是线性的,如何能够在常数时间内完成呢??这里,就是immutab

2014-06-17 14:55:42 1820

原创 C++ Daily 《6》---- 类静态对象与函数静态对象

C++ 的一个哲学基础是,你不应该为你使用的东西付出代价。class 拥有一个 static 成员,即使从未被用到,它也会被构造和析构;而 函数拥有一个 static 成员, 如果这个函数从未被调用,则这个对象不会被构造。做个简单的实验:#include using namespace std;class Printer{ friend Printer& the

2014-05-13 10:50:29 862 1

原创 C++ Daily 《5》----虚函数表的共享问题

问题:包含一个以上虚函数的 class B, 它所定义的 对象是否共用一个虚函数表?分析: 由于含有虚函数,因此对象内存包含了一个指向虚函数表的指针,但是这个指针指向的是同一个虚函数表吗?实验如下:class A{public: virtual void print() { cout << "print A:" << endl;}private: int

2014-05-11 11:21:12 1702

原创 数据结构《19》----String容器的三种实现

一、序言一个简单的string 容器到底是如何实现的?本文给出了 String 的三种从易到难的实现,涉及了 reference counting, copy on write 的技术。二、第一个实现我们设计的string类里面包含一个char* 的指针, 通过指针的管理,来实现string的基本功能。废话不多说了,直接上代码:{CSDN:CODE:

2014-05-10 16:29:21 1439

原创 数学----有趣的扑克牌《一》

问题:一副扑克牌,除去大小王后共52张牌,随机从中抽八张牌,问八张牌的和最有可能是多少?分析:这52张牌,其实就是数字 1 2 3 。。。13, 每个数字出现4次。随机抽出8个数,问组成的和最有可能是多少?聪明的你可能想到了另一个很类似的问题,2 sum: 问一个数组中是否存在两个数的和等于某个给定的值。当然,这里就类似于 8 sum。 但是,题目却问的是,最有

2014-05-08 22:37:17 1372

原创 数据结构 《18》----RMQ 与 LCA 的等价性 (一)

前言    RMQ: 数组 a0, a1, a2,..., an-1, 中求任意区间 a[i+1], a[i+2], ..., a[i+k] 的最小值    LCA: 求二叉树中两个节点的最低公共祖先    本文将证明这两个问题可以相互归约为另一个问题。证明   先通过一个简单的例子来说明问题。见下图:   求 [7 2 8 6] 的最小值

2014-05-01 00:22:04 1567

原创 数据结构《17》---- 自动补齐之《二》----Ternary Search Tree

一、 序言上一篇文章中,给出了 trie 树的一个实现。可以看到,trie 树有一个巨大的弊病,内存占用过大。本文给出另一种数据结构来解决上述问题---- Ternary Search Tree (三叉树)二、数据结构定义Trie 树中每个节点包含了 26 个指针,但有很大一部分的指针是 NULL 指针,因此浪费了大量的资源。一种改进措施就是,以一棵树来代替上述的指针数组。

2014-04-29 23:23:10 1873

原创 C++ Daily 《4》----一个简单的 int to string 的方法

经常会在项目中用到 int to string#include #include #include using namespace std;int main(void){ ostringstream num; num << 123; string str = num.str(); cout << str << endl; return 0;}

2014-04-29 16:31:04 1224 2

原创 C++ Daily 《3》----构造函数可否是虚函数

C++ 中构造函数可否是虚函数?绝不要!!而且,在构造函数中调用虚函数也是不提倡的行为,因为会引发预想不到的结果。因为,在 derived class 对象构造的过程中,首先调用的是基类的构造函数,等基类构造结束,才开始构造派生类的部分。这个过程中,编译器将该对象视为 基类,而非派生类(因为,派生类对象的专属部分还未初始化!!!)所以,如果在构造函数中调

2014-04-28 22:15:18 1075

原创 C++ Daily《2》----vector容器的resize 与 reserve的区别

C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么?1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size.2. vector内部其实包含了三个指针,如下图:resize()------改变 finish 指针reserve()----改变 end_of_storage 指针3

2014-04-26 13:16:27 1381 2

原创 C++ Daily 《1》----关于对象

1. 问题请问如下的一个 class 的一个对象占了多少内存? 具体包含哪些东西? non-static 变量? static member 变量? member function?? virtual function??class A{public: virtual void print();private: int a; static double b;};

2014-04-25 23:06:41 881

原创 数据结构《16》----自动补齐实现《一》----Trie 树

1. 简述Trie 树是一种高效的字符串查找的数据结构。可用于搜索引擎中词频统计,自动补齐等。在一个Trie 树中插入、查找某个单词的时间复杂度是 O(len), len是单词的长度。如果采用平衡二叉树来存储的话,时间复杂度是 O(lgN), N为树中单词的总数。此外,Trie 树还特别擅长 前缀搜索,比方说现在输入法中的自动补齐,输入某个单词的前缀,abs,立刻弹出

2014-04-25 22:47:09 2690

原创 TopCoder----卖柠檬

Problem Statement You are playing a game called Slime Tycoon.You will be selling Slimonades in this game, and your goal is to sell as many as you can.The game will consist of N game

2014-04-22 19:17:59 2725

原创 动手实现自己的 STL 容器《2》---- list

1. 序:   本文参考了侯捷的 《STL 源码分析》一书,出于兴趣,自行实现了简单的 list 容器。   学习了 STL 的 list 容器的源代码,确实能够提高写链表代码的能力。其中的 sort 函数,可谓是非常神奇。。。2. 实现的细节   STL 的 list 容器采用了一个带有尾节点的环状双向链表。 如下图所示:// Last Update:2014

2014-04-20 21:47:53 1259

原创 C++ Primer----智能指针类 2

指针带给了 C++巨大的灵活性,然而同样也带来无数的问题,悬挂指针,内存泄漏等。int *pInt = new int(1);// Do not forgetdelete pInt;智能指针就是一种能够有效避免悬挂指针的方法。通过一个类,来管理指针的复制,delete 等。从而使用户可以放心地使用指针。一种智能指针的实现方法是,通过一个计数,追踪当前指向同一块地址的指

2014-04-14 21:30:30 1129

原创 动手实现自己的 STL 容器 《1》---- vector

本文参考了侯捷的 《STL 源码分析》一书,出于兴趣,自行实现了简单的 vector 容器。之后会陆续上传 list, deque 等容器的代码,若有错误,欢迎留言指出。vector 容易实现的几点注意事项:1. 由于vector 是动态数组。出于效率的考虑,在往vector 中加入元素时,内存的扩展遵循的规则是:   1> 如果当前可用内存不够,开 2倍大的内存,将原

2014-04-11 15:58:11 3160

原创 STL 库中的陷阱----一个难以察觉的 bug

请找出下面程序的 bug

2014-04-09 14:19:18 2561 6

原创 Letter combinations of a phone number

Given a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons) is given below.Input:Digit string

2014-04-02 16:05:20 924

doxygen ppt

doxygen是自动化的文档产生工具,该ppt让你能快速掌握

2015-05-05

MPI 官方编程指导

非常完成详细的MPI 教程,详细讲解了关于MPI的方方面面,作为手头参考的极佳材料

2014-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除