Neil的博客

我庆幸,我正在做我最喜欢的事

猜你喜欢-----推荐系统原理介绍

写在正文之前   最近在做推荐系统,在项目组内做了一个分享。今天有些时间,就将逻辑梳理一遍,将ppt内容用文字沉淀下来,便于接下来对推荐系统的进一步研究。推荐系统确实是极度复杂,要走的路还很长。   A First Glance     为什么需要...

2015-07-05 18:08:37

阅读数 4905

评论数 0

万剑归宗—架构设计中的抽象思维与具象思维

新项目上线,用户量不断增加,工作中继续不断发现问题,解决问题。花一点时间来总结一下自己对架构设计的理解。   小小的打个广告。这篇文章是发布在neil的微信公众号上。neil的文章都会第一时间发布在微信公众号上。欢迎小伙伴们关注。                        ...

2015-06-14 19:34:48

阅读数 1559

评论数 0

写给程序员的心理学入门知识(一)

正文之前 neil是14年毕业的一枚后台开发,在大学的时候除了钻研技术外,还喜欢看一些其他领域的书籍。作为工科学生,我们都很擅长逻辑思维。但作为社会人,工作和生活中不可避免地需要跟很多人打交道,学点简单的心理学大有裨益。其实在我看来,心理学等很多社会科学的知识在本质上都是逻辑,只是换了一种思维...

2015-04-21 10:55:51

阅读数 2465

评论数 2

用递归方法对二叉树进行层次遍历

在这里看到了这个题。层次遍历是用队列,一级一级地入队列然后输出。而用递归的话,我首先想到是用两个栈来模拟队列,在递归遍历二叉树的过程中入栈,然后最后一次性出栈。但仔细思考后发现无法做到层次遍历。在这里看到了正确的方法。      主要代码如下: 1 void PrintNodeA...

2013-04-04 08:57:30

阅读数 3847

评论数 0

C/C++内存管理 笔记

内存管理是个比较复杂的东西,我这里记录一些比较重要的笔记。      0.永远保持谦虚的态度来使用指针和操作内存。      1.在用free释放内存后,要记得将指针赋值为NULL,防止产生"野指针"。      2.尽量不要用指针指向常量字符串。看一个小例子...

2013-03-30 08:51:49

阅读数 1060

评论数 0

二叉树的非递归遍历-----2013年3月20日

二叉树的递归遍历算法非常漂亮和易读,但是非递归算法就没那么容易懂了,尤其是后序遍历的非递归算法。 一. 前序遍历        1 void PreOrderTraverse(Node *root) 2 { 3 stack ns; 4 Node *n=ro...

2013-03-20 17:03:43

阅读数 1094

评论数 0

僵尸进程

僵尸进程就是父进程fork之后并没有wait子进程。在子进程退出的时候,内核释放该进程所有的资源,比如文件描述符,内存,等等,但是依然为该进程保留一定的信息,只有该进程的父进程wait之后才会释放掉这些保留的信息。如果父进程没有wait,那么子进程就变成了僵尸进程。在高并发的服务器中,僵尸进程会有...

2013-03-12 18:59:12

阅读数 1011

评论数 0

无限式查找-----2013年2月28日

问题描述:已知一个数组x[],元素个数有多少并不很清楚,但是数组元素已经依顺序从小到大排好,而且在数组最后添加了足够多的MAX记号;MAX表示最大的值,比数组中每一个元素都大,而且个数足够多。编写一个程序,在这个数组中找出某个给定的值。       思路:二分查找法是一个非常高效的算法,但要...

2013-02-28 11:01:29

阅读数 775

评论数 0

寻找固定的和----2013年2月26日

问题描述:有两个数组x[]与y[],各有m与n个元素,而且各个元素没有依顺序排列;d是一个已知的值。请写一个程序,看看在x[]与y[]中有没有满足x[i]+y[j]=d的元素。例如,若x[]为3,7,2,4,y[]为1,5,2,3,d为9;那么x[1]+y[2]与x[3]+y[1]都合乎条件,也即...

2013-02-26 10:25:51

阅读数 727

评论数 0

寻找脚码----2013年2月24日

题目来自:《C语言精选名题百则技巧篇》      问题描述:已知一个整数数组x[],其中的元素彼此都不相同,而且也已经从小到大排列好。请用比较大小,相等的方式编写一个程序,找出给定的数组中是否有一个元素满足x[i]==i(注意:在代码中是从0开始索引的,也就是x[0]是第一个数,所以对应于代...

2013-02-24 13:22:07

阅读数 1158

评论数 0

找出没有相邻的1的二进制数的个数---2013年2月17日

问题描述:用G(n)表示在有n位的二进制数中没有相邻的两个1的二进制数个数。比如,当n=3时,000,001,010,011,100,101,110,111这8个数中只有000,001,010,100,101这5个是没有相邻为1的,故G(3)=5。请写一个程序,输出G(n)的值。      ...

2013-02-17 12:45:17

阅读数 1071

评论数 0

busybox源码剖析(3)---cat.c

cat显示一个文件的内容。需要注意的是,cat并不能处理目录。 1 extern int cat_main(int argc, char **argv) 2 { 3 int status = EXIT_SUCCESS; 4 5 if (argc == 1) {...

2013-02-15 12:20:41

阅读数 1121

评论数 0

busybox源码剖析(2)---pwd.c

pwd命令是列出当前的路径。 1 extern int pwd_main(int argc, char **argv) 2 { 3 static char *buf; 4 5 buf = xgetcwd(buf); 6 7 if...

2013-02-15 11:03:08

阅读数 989

评论数 0

整数的所有不同分割数目--非递归算法

递归算法见:整数的所有不同分割数目--递归算法      思路:非递归与递归的思维顺序是互逆的,所以很容易写出以下代码。 1 #include 2 #define MAX 1000 3 4 int p[MAX][MAX]={0}; 5 6 int ...

2013-02-15 10:45:33

阅读数 954

评论数 0

整数的所有不同分割数目----2013年2月15日

问题描述:把一个正整数写成若干个正整数的和。比如4=3+1,2+2,2+1+1,1+1+1+1,再加上自己,就一共有5种分割方式。      思路:求解4的所有分割方式,实际上就是求分割中以4为最大值而且和为4的所有分割方式,可以用p[4][4]来表示。抽象出来,就是p[n][m],表示分割...

2013-02-15 09:51:21

阅读数 961

评论数 0

busybox源码剖析(1)---whoami.c

想找个简单的代码来看,学习代码的架构设计,就找到了busybox。先从最早的版本开始看。      whoami命令是获取当前终端的用户名。/etc/passwd文件存储了所有用户名的清单。要注意的是/etc存储的配置文件大多是系统级的配置文件。而whoami想要达到目的,就需要与/etc/...

2013-02-14 21:42:59

阅读数 986

评论数 0

集合的所有分割方式---2013年1月28日

问题描述:分割集合成多个子集合,这几个子集合间没有交集且他们的并集是原集合。        思路:将包含n个元素的集合set的分割表示为n个数字。比如set[]={1,2,3,4},那么{1,2},{3,4}就可以表示为1122,这4个数分别表示set[0]在第一个分割集合,set[1]在第...

2013-01-28 12:58:33

阅读数 900

评论数 0

递归统计项目中的非空白代码行数

在准备阅读一个开源项目的代码前,可以大约看看整个项目共有多少代码,估计项目的规模。我就写了一个简单的程序来达到此目的,其中的一些代码参考了apue中的代码。       代码如下: View Code 1 //程序功能:统计一个文件夹(一个项目)中所有文件的有效代码行...

2013-01-26 17:59:50

阅读数 804

评论数 0

列出所有K个元素的子集-----2013年1月26日

问题描述:列出一个集合的元素个数为k的所有子集。       思路:在字典顺序列出所有子集的基础上判断元素个数就可以了,比较简单。代码如下: 1 #include 2 #define MAX 1000 3 4 int main() 5 { 6 int n=...

2013-01-26 09:16:30

阅读数 860

评论数 0

产生所有排列---字典顺序-----2013年1月23日

问题描述:以字典顺序产生所有排列。假定集合set是连续的并且按从小到大顺序排列好了的,并且有n个元素。        思路:算法的思路分成两个部分:A是递归产生以某个数字开头的排列,B是调用A来依次生成  1为第一位的所有排列,2为第一位的所有排列,....n为第一位的所有排列。   ...

2013-01-23 20:01:36

阅读数 818

评论数 0

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