摘要: Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回 阅读全文
posted @ 2016-08-25 11:03 程序员修练之路 阅读(677) 评论(0) 推荐(0) 编辑
摘要: 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Ve 阅读全文
posted @ 2016-08-25 11:01 程序员修练之路 阅读(2208) 评论(0) 推荐(0) 编辑
摘要: 通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类的函数有哪一些,然后再罗列出函数的原型,最后到代码的实现标准C++中提供的string类得功能也是非 阅读全文
posted @ 2016-08-25 10:59 程序员修练之路 阅读(566) 评论(0) 推荐(0) 编辑
摘要: C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。 这里有一个简单的程序,可用于说明... 阅读全文
posted @ 2016-06-29 11:04 程序员修练之路 阅读(1340) 评论(0) 推荐(0) 编辑
摘要: 一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值... 阅读全文
posted @ 2016-04-16 15:14 程序员修练之路 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。 阅读全文
posted @ 2016-04-15 10:43 程序员修练之路 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据... 阅读全文
posted @ 2016-03-29 22:31 程序员修练之路 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 以下分三个方向讲解,每个方向都是一个学长独自撰稿。 (一) C语言篇 C语言求职血泪史 华为(实习):机试、一面、性格测试被鄙视、优招被鄙视、普招被鄙视 锐捷:笔试、面试莫名其妙被鄙视 创新工场:笔试、一面、二面、offer 阿里巴巴:笔试被鄙视 cvte:网测、面试没去 大众点评:网测悲剧 IGT:笔试、一面、二面、offer 烽火众智:霸笔、等两个小时面五分钟、offer直接拒 酷派:笔试、... 阅读全文
posted @ 2016-03-24 21:11 程序员修练之路 阅读(9641) 评论(1) 推荐(3) 编辑
摘要: 三个函数的申明分别是:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_t numElements, size_t sizeOfElement);都在stdlib.h函数库内它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL malloc用于申请一段新的地址,... 阅读全文
posted @ 2016-03-23 22:06 程序员修练之路 阅读(1088) 评论(0) 推荐(1) 编辑
摘要: vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include vector属于std命名域的,因此需要通过命名限定,如下完成... 阅读全文
posted @ 2016-03-23 22:02 程序员修练之路 阅读(924) 评论(0) 推荐(0) 编辑
摘要: 1、修改数据表 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在 localhost 的那台电脑,登入MySQL后,更改 “MySQL” 数据库里的 “user” 表里的 “Host” 项,从“localhost”改称“%”,%表示所有机器都允许。 mysql> use mysql mysql> update user set Host='%' where User=... 阅读全文
posted @ 2016-01-10 13:11 程序员修练之路 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 一,常用推荐系统算法总结 1、Itemcf (基于商品的协同过滤) 这个算法是cf中的一种,也是当今很多大型网站都在采用的核心算法之一。对于商城网站(以Amazon为代表,当然也包括京东那种具有搞笑特色的推荐系统在内),影视类推荐,图书类推荐,音乐类推荐系统来说,item的增长速度远不如user的增长速度,而且item之间的相似性远不如user之间的相似性那么敏感,所以可以在离线系统中将item的... 阅读全文
posted @ 2016-01-08 20:08 程序员修练之路 阅读(2050) 评论(0) 推荐(0) 编辑
摘要: 在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人。 基本思想 俗话说“物以类聚、人以群... 阅读全文
posted @ 2016-01-08 20:06 程序员修练之路 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 聚类分析 什么是聚类分析? 聚类 (Clustering) 就是将数据对象分组成为多个类或者簇 (Cluster),它的目标是:在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。所以,在很多应用中,一个簇中的数据对象可以被作为一个整体来对待,从而减少计算量或者提高计算质量。 其实聚类是一个人们日常生活的常见行为,即所谓“物以类聚,人以群分”,核心的思想也就是聚类。人们总是不断地... 阅读全文
posted @ 2016-01-08 19:55 程序员修练之路 阅读(558) 评论(0) 推荐(0) 编辑
摘要: “探索推荐引擎内部的秘密”系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基本的优化方法,例如聚类和分类的应用。同时在理论讲解的基础上,还会结合 Apache Mahout 介绍如何在大规模数据上实现各种推荐策略,进行策略优化,构建高效的推荐引擎的方法。本文作为这个系列的第一篇文章,将深入介绍推荐引擎的工作原理,和其中涉及的各种推荐机制,以及它们各自的优缺点和适用场景,帮助... 阅读全文
posted @ 2016-01-08 19:52 程序员修练之路 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 集体智慧和协同过滤 什么是集体智慧 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web 应用中利用集体智慧构建更加有趣的应用或者得到更好的用户体验。集体智慧是指在大量的人群的行为和数据中收集答案,帮助你对整个人群得到统计意义上的结论,这些结论是我们在单个个体上无法得到的,它往往是某种趋势或者人群中共性的部分。 ... 阅读全文
posted @ 2016-01-08 19:51 程序员修练之路 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法。本文将带你深入了解协同过滤的秘密。下面直接进入正题 1 什么是协同过滤 协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看... 阅读全文
posted @ 2016-01-08 19:49 程序员修练之路 阅读(181) 评论(0) 推荐(0) 编辑
摘要: (文/Joseph A. Konstan & John Riedl) 讲完了推荐算法是如何“猜你喜欢”的,现在,你对于每回上网购物时在线零售商是如何打量你,并努力把你的喜好和其他人的相匹配有了一个基本的概念。 推荐系统还有另外两大特点,也对你最终看到的推荐结果有着显著的影响:第一,在弄清楚你和其他购物者的相似度有多高之前,推荐系统必须先弄明白你真正喜欢什么;第二,推荐系统依照一组商业规则运行,以确... 阅读全文
posted @ 2016-01-08 19:48 程序员修练之路 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 文/Joseph A. Konstan & John Riedl)如今,到网上购物的人已经习惯了收到系统为他们做出的个性化推荐。Netflix 会推荐你可能会喜欢看的视频。TiVo 会自动把节目录下来,如果你感兴趣就可以看。Pandora 会通过预测我们想要听什么歌曲从而生成个性化的音乐流。 所有这些推荐结果都来自于各式各样的推荐系统。它们依靠计算机算法运行,根据顾客的浏览、搜索、下单和喜好,为顾... 阅读全文
posted @ 2016-01-08 19:46 程序员修练之路 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 在使用NumPy进行学习统计计算时是枯燥的,大量的数据令我们很头疼,所以我们需要把它图形化显示。 Matplotlib是一个Python的图形框架,类似于MATLAB和R语言。 Matplotlib的官网地址是 http://matplotlib.org/ ,下载地址为 http://matplotlib.org/downloads.html,选择对应的版本即可安装,我选择的版本为 matplo... 阅读全文
posted @ 2015-12-12 10:26 程序员修练之路 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 今天给大家介绍一下经典的开源机器学习软件: 编程语言:搞实验个人认为当然matlab最灵活了(但是正版很贵),但是更为前途的是python(numpy+scipy+matplotlib)和C/C++,这样组合既可搞研究,也可搞商业开发,易用性不比matlab差,功能组合更为强大,个人认为,当然R和java也不错. 1.机器学习开源软件网(收录了各种机器学习的各种编程语言学术与商业的开源软件) ht... 阅读全文
posted @ 2015-11-29 15:46 程序员修练之路 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正... 阅读全文
posted @ 2015-11-25 18:15 程序员修练之路 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关键字,然而,带有 yield 的函数执行流程却和普通函数不一样,yield 到底用来做什么,为什么要设计 yield ?本文将由浅入深地讲解 yield 的概念和用法,帮助读者体会 Python 里 yield 简单而强大的功能。 您可能听说过,带有 yield 的函数在 Python 中被称之为 generat... 阅读全文
posted @ 2015-11-25 16:27 程序员修练之路 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 这是一本好书, 可以让你认清自己对C++的掌握程度.看完之后,给自己打分,我对C++了解多少? 答案是不足20分.对于我自己是理所当然的问题, 就不提了, 记一些有启发的条目和细节: (*号表示不能完全理解,实力升级了之后回头看) 一般性问题: 1. 不要在注释中重复写代码语义,这样很容易产生不一致. 应该编写的是解释方法和原理的说明性注释. 2. 不要对每个项目每个文件进行强制的排版格式规定, ... 阅读全文
posted @ 2015-11-18 22:18 程序员修练之路 阅读(3400) 评论(1) 推荐(2) 编辑
摘要: 前面的话:提到依赖注入,大家都会想到老马那篇经典的文章。其实,本文就是相当于对那篇文章的解读。所以,如果您对原文已经有了非常深刻的理解,完全不需要再看此文;但是,如果您和笔者一样,以前曾经看过,似乎看懂了,但似乎又没抓到什么要领,不妨看看笔者这个解读,也许对您理解原文有一定帮助。1.依赖在哪里老马举了一个小例子,是开发一个电影列举器(MovieList),这个电影列举器需要使用一个电影查找器(Mo... 阅读全文
posted @ 2015-11-06 22:24 程序员修练之路 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 1. 依赖 如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。例如下面类 Human 中用到一个 Father 对象,我们就说类 Human 对类 Father 有一个依赖。public class Human { ... Father father; ... public Human() { ... 阅读全文
posted @ 2015-11-06 22:14 程序员修练之路 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 《strcpy拷贝越界问题》 一. 程序一 #include #include void main() { char s[]="123456789"; char d[]="123"; strcpy(d,s); printf("d=%s,\ns=%s",d,s); } 执行结果: 解释: 首先要解释一下,char s[]="123456789"; char ... 阅读全文
posted @ 2015-11-03 10:37 程序员修练之路 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN) 树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如 JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点 的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结点的路径长度 为叶结点的... 阅读全文
posted @ 2015-11-02 21:20 程序员修练之路 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 三叉链表存储表示 改进于二叉链表,增加指向父节点的指针,能更好地实现结点间的访问。 存储结构/* 二叉树的三叉链表存储表示 */ typedef struct BiTPNode { TElemType data; struct BiTPNode *parent,*lchild,*rchild; /* 双亲、左右孩子指针 */ }BiTPNode,*BiPTree; 下面给出二叉... 阅读全文
posted @ 2015-10-31 23:11 程序员修练之路 阅读(3277) 评论(0) 推荐(0) 编辑
摘要: 我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。 在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句: if(假设成立) { 程序正常运行; } else { 报错&&终止程序!(... 阅读全文
posted @ 2015-10-31 22:59 程序员修练之路 阅读(998) 评论(0) 推荐(0) 编辑
摘要: VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。网上查找了些资料,在这 罗列汇总下,做为备忘~ 一、Debug 和 Release 的区别 Debug 通常称为调试版本,它包含... 阅读全文
posted @ 2015-10-31 22:54 程序员修练之路 阅读(1390) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 只要你在Unix环境中写过程序,你必定会邂逅神秘的Lex&YACC,就如GNU/Linux用户所熟知的Flex&Bison,这里的Flex就是由Vern Paxon实现的一个Lex,Bison则是GNU版本的YACC.在此我们将统一称呼这些程序为Lex和YACC.新版本的程序是向上兼容的(译注:即兼容老版本),所以你可以用Flex和Bison来尝试下我们的实例. 这些程序实用性极广,... 阅读全文
posted @ 2015-10-30 11:46 程序员修练之路 阅读(10563) 评论(0) 推荐(2) 编辑
摘要: 写在前面的几句废话 最近在项目的过程中接触了lex 和 yacc,他们可以帮助我们来实现自己的领域语言。最典型的应用就是可以帮助我们来实现自定义测试脚本的执行器。但是,这里也有一个限制,就是测试脚本要做的基本事情必须有现成的C语言库来实现,否则就做不到了;如果基本的操作是用java来做的,那么还可以用Antlr,这里不对Antlr做详细介绍。 lex是什么? 教科书上把lex的作用的作用叫做“词法... 阅读全文
posted @ 2015-10-30 11:26 程序员修练之路 阅读(16136) 评论(0) 推荐(3) 编辑
摘要: Hello World 模块以及对应的内核makefile详解 hello.c: #include //所有模块都需要的头文件 #include // init&exit相关宏 MODULE_LICENSE("GPL"); MODULE_AUTHOR("feifei"); MODULE_DESCRIPTION("hello world module"); static int __i... 阅读全文
posted @ 2015-10-28 21:30 程序员修练之路 阅读(1612) 评论(0) 推荐(0) 编辑
摘要: makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile... 阅读全文
posted @ 2015-10-28 21:09 程序员修练之路 阅读(3201) 评论(1) 推荐(1) 编辑
摘要: 一位网友windows xp sp3下安装virtualbox 4.1.20版本,安装好了重启过后,可以打开virtualbox,但是等到创建好虚拟电脑后按启动按钮,就出现了错误提示:“Cannot access the kernel driver”,启动不了 virtualbox。根据错误的提示说明virtualbox不能访问核心驱动,也就是驱动除了问题,一般来说可能是杀毒软件导致安装virtu... 阅读全文
posted @ 2015-10-26 20:36 程序员修练之路 阅读(705) 评论(0) 推荐(1) 编辑
摘要: C语言中*(volatile unsigned int *)0x500的解释: 如下; (unsigned int *)0x500:将地址0x500强制转化为int型指针*(unsigned int *)0x500=0x10:对地址为0x500赋值为0x10 其中volatile关键字有以下用途: (1)用来同步,因为同一个东西可能在不同的存储介质中有多个副本,有些情况下会使得这些副本中的值不同,... 阅读全文
posted @ 2015-10-26 19:48 程序员修练之路 阅读(5745) 评论(0) 推荐(0) 编辑
摘要: 1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100。我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质不就是一个指针嘛。所以我们可以用下面的方法: int *p = (int *)0x12ff7c; *p = 0x100; 需要注意的是将地址0x12ff7c赋值给指针变量p的时候必须强制转换。 1.1... 阅读全文
posted @ 2015-10-26 19:45 程序员修练之路 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 这俩兄弟长得实在太像,以至于经常让人混淆。然而细心领会和甄别就会发现它们大有不同。 前者是指针数组,后者是指向数组的指针。更详细地说。 前: 指针数组;是一个元素全为指针的数组.后: 数组指针;可以直接理解是指针,只是这个指针类型不是int也不是char而是 int [4]类型的数组.(可以结合函数指针一并看看......) int*p[4]------p是一个指针数组,每一个指向一个int型的i... 阅读全文
posted @ 2015-10-26 19:41 程序员修练之路 阅读(1397) 评论(0) 推荐(0) 编辑
摘要: 学了那么多程序语言,总是有一个Hello world开头,不禁感叹Hello world的强大。呵呵,废话少说,咋们的故事当然要从这个Hello world开始。 先查看自己OS使用的内核版本[dongliang@dongliang:~]$ uname -r2.6.22-14-generic /* 这是我显示的结果 */ 如果安装系统时,自动安装了源码。在 /usr/src 目录下有对应的使用的版... 阅读全文
posted @ 2015-10-26 10:07 程序员修练之路 阅读(1025) 评论(0) 推荐(0) 编辑