- 博客(47)
- 收藏
- 关注
转载 【转】Netflix工程总监眼中的分类算法:深度学习优先级最低
摘要:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain根据奥卡姆剃刀原理依次推荐了逻辑回归、SVM、决策树集成和深度学习,并谈了他的不同认识。他并不推荐深度学习为通用的分类技术。针对Quora上的一个老问题:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain近日给出新的解答,他根据奥卡姆剃刀原理依次推荐了逻辑
2015-06-13 22:33:52
734
原创 Effective JAVA笔记
1,列表优先于数组数组是协变的,泛型是不可变的;数据是具体化的,运行时才报错,而泛型时通过擦除来实现的,只在编译时强化类型信息。2,优先考虑泛型扩展性更强3,返回零长度的数组或集合,而不是null调用方如客户端很可能忘记处理null;认为null返回值避免分配数组所需的开销观点站不住脚,因为(1)这个级别上性能几乎没有差别;(2)对于每次调用可以返回同一个零长度的数组,
2015-05-10 22:13:26
749
原创 LVS+Keepalived+nginx-rtmp-module搭建流媒体服务器集群
架构机器配置管理IP地址角色备注192.168.70.240LVS负载均衡服务器(Director server)对外提供服务的VIP为192.168.70.73(不存在的虚拟IP)192.168.70.241流媒体服务器1(Real server 1)
2015-02-17 09:46:51
8710
原创 MongoDB和Redis区别
简介MongoDB更类似Mysql,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。Mysql在大数据量时效率显著下降,MongoDB更多时候作为关系数据库的一种替代。内存管理机制Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。MongoDB数据存在内存,由linux系统mmap
2015-02-17 09:10:08
75028
2
原创 cas实现共享session
cas是开源的登录认证方案,可以实现多个web应用的单点登录。随着用户量的增加,web应用需要部署多个实例,要实现不同应用、多实例的共享session,需要先了解cas的logout机制。简单的说,web应用在接入cas的时候需要继承cas-client-core,这个模块完成的事情如下:拦截到web应用的请求,验证登录状态,若未登录则跳转到登录页登录成功,web应用的tomcat
2015-02-15 11:51:42
17127
1
转载 linux多线程编程【zz】
1. 如何来标识一个线程? 表示进程号的为pid_t类型,表示线程号的是pthread_t类型。pthread_t是一个结构体而不是整型。 使用pthread_equal确定两个线程号是否相等:#include int pthread_equal(pthread_t tid1, pthread_t tid2);Returns: nonzero if equal,
2013-11-23 21:18:02
923
转载 STL容器的遍历删除[zz]
剖析STL容器遍历删除时诡异的erase(iter++)---------------------------------------------------------------------STL中结点类容器(如:list,hash_map)遍历时进行删除时,需要这样做:for(list::iterator iter = m_list.begin(); iter != m_li
2013-11-14 12:40:30
1113
转载 Android中的Handler, Looper, MessageQueue和Thread [zz]
对于这部分的内容,将分成4小节来描述:1.职责与关系2.消息循环3.线程与更新4.几点小结-------------------------------------------------------------------------------------
2011-08-15 21:07:25
776
原创 QuickSearchBox的一点改进
Google自带的Android源码中包含一些原生程序的源码,比如QuickSearchBox,Music,Gallery3D等等。 最近拜读了QuickSearchBox部分源码,QuickSearchBox有可以搜索联系人、音乐、信息、应用程序等等。当我们在
2011-08-11 23:46:33
5413
转载 从HTTP GET和POST的区别说起
在推特上抱怨面试时问HTTP GETE和POST的区别得到回答都不满意,有人不清楚,当时只回复了看 RFC2616。趁有空说说面试时得到的回答大多是:POST是安全的,因为被提交的数据看不到,或者被加密的,其它的还有GET的时候中文出现乱码(在地址栏里),数据最大长度限制等等。说 POST 比 GET 安全肯定是错的,POST跟GET都是明文传输,用httpfox等插件,或者像Wire
2011-06-19 11:23:00
892
转载 C++和java中多态机制的异同(zz)
以前我有个错误的观点:即使在C++和java中多态性的实现机制可能不同,但它们的表现形式应该相同,也就是说如果代码结构相同,那么执行结果也应该相同。可惜事与愿违,事情并不总是你想象中的那样子。(在看下文以前,你最好先考虑一下这个问题,你有什么看法呢?) ok,让我们进入正题。 首先本文不讨论面向对象编程的基本概念,如封装、继承和数据抽象等,这方面的资料现在应
2011-06-03 11:10:00
899
转载 C++中重载与重写函数区别及虚函数(转载)
C++中的虚函数(virtual function) 1.简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public: virtual void foo() { cout };class B: public A{public: virtual void foo() { cout };那么,在使用的时候,我们可以:A * a = new B();a->foo(); // 在
2011-05-11 11:38:00
1166
转载 C++ STL中哈希表 hash_map
<br /> <br />对海量数据进行处理的时候经常要使用hash_map,java里使用hash_map比较简单,下面将介绍C++ STL中哈希表 hash_map的使用方法,主要内容引用下面链接内容。<br />http://blogold.chinaunix.net/u2/82382/showart.php?id=20729590 为什么需要hash_map<br />用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时
2011-05-01 16:45:00
1940
原创 for循环的优化
<br /><br /> <br /><br />优化以下for循环:<br />for(int i=0; i <10000;i++){<br /> for(int j=0; j <100;j++){<br /> for(int k=0; k <10;k++){<br /> System.out.print("out");<br /> }<br /> }<br />}<br />按照林锐的《高质量c++编程》中所说,小循环在外,大
2011-04-19 16:51:00
2136
转载 vector的增长机制(zz)
<br />假设我们希望从一个文件中将一串类型为double的值读进一个数据结构中,从而允许我们高效地访问这些值,通常的方法如下: <br />vector<double> values; <br />double x; <br />while (cin >> x) <br /> values.push_back(x); <br />当循环结束时,values会容纳有所有的值,我们将可以通过values高效地访问任何值。 <br />在直觉上,标准库vector类就像一个内建数组:我们可
2011-04-19 15:52:00
2195
原创 C++ Primer点滴(待续)
1. const形参 如果使用形参的唯一目的是避免复制实参,则应该将形参定义为const,即应该将不需要修改的引用参数定义为const引用。普通的非const引用形参在使用时不太灵活。这样的形参既不能用const对象初始化,也不能用字面值或产生右值的表达式实参初始化。 int incr(int &val){ return ++val;}void main(){ short v1 = 0; const int v2 = 42; int v3 = in
2011-04-18 11:12:00
735
转载 malloc和free内存信息详解[zz]
<br />malloc()到底从哪里得来了内存空间<br /> <br />1、malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。就是这样!<br /> 说到这里,不得不另外插入一个小话题,相信大家也知道是什么话题了。什么是堆?说到堆,又忍不住说到了栈
2011-04-12 19:26:00
1161
原创 openwrt路由系统添加启动项
<br /> 最近被mesh路由器项目搞得焦头烂额的,想死的心都有了,当然,夸张了点,呵呵。<br /> openwrt是基于linux内核的路由操作系统,经过裁剪,因此与普通linux系统文件结构有所不同。近来搞定了在ubuntu上搭建openwrt的交叉编译环境,另外搞定了openwrt先添加启动项。<br /> 说说添加启动项问题吧。在/etc/init.d里添加需要启动的shell脚本,假设名字为my-plugin。接下来模仿该目录下其他启动脚本的格式,添加
2011-03-26 15:14:00
32301
转载 typedef和#define的用法与区别
<br />typedef和#define的用法与区别<br /> <br />一、typedef的用法<br />在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:<br />typedef int INT;<br />typedef int ARRAY[10];<br />typedef (int*) pINT;<br />typedef可以增强程序的可读性,以及标识符的灵活性,但
2011-01-20 15:35:00
869
转载 linux添加开机启动项
使用chkconfig命令可以查看在不同启动级别下课自动启动的服务(或是程序),命令格式如下:chkconfig --list可能输出如下:openvpn 0:关闭 1:开启 ...... 6:关闭 (0-6 为启动级别 ; 关闭/开启为相应级别下该服务的自动启动选项)如果希望对自动启动选项做出改变,命令格式为:chkconfig --level x name on/offz.B. chkconfig --level 5 openvpn off以上的命令可以查询系统可提供的服务,如果希望开机时启动某一
2011-01-18 10:31:00
18988
1
转载 Linux文件系统结构
<br />作者:北南南北<br />来自:LinuxSir.Org<br />摘要: Linux文件系统是呈树形结构,了解Linux文件系统的目录结构,对于我们驾驭Linux还是有必要的。本文对Linux下比较重要的目录加以解说,以答初学者所说的“杂乱无章”目录结构,给一个简要的说明。 <br /><br />目录<br />1、什么是文件系统; <br />2、文件系统的组织结构简说;<br />3、文件系统的组织结构分析; <br />4、本文未尽事宜; <br />5、关于本文;<br />6、后记
2011-01-11 22:13:00
976
转载 STL容器比较
STL的容器可以分为以下几个大类: 一:序列容器, 有vector, list, deque, string.二 : 关联容器, 有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap三: 其他的杂项: stack, queue, valarray, bitsetSTL各个容器的实现: (1) vector内部数据结构:数组。随机访问每个元素,所需要的时间为常量。在末尾增加或删除元素所需时间与元素数目
2011-01-10 22:25:00
1638
转载 map和set异同
<br />节选一:<br /> <br />MAP的节点是一对数据. <br />SET的节点是一个数据.<br /><br />Map使用关键值Key来唯一标识每一个成员 map可以重复。<br />set是集合 <br />都属于关联容器 <br />只不过,map的形式 map<type1, type2> mymap; <br /> set的形式 set<type> myset
2011-01-10 22:17:00
44424
原创 排序学习总结(待续)
自己一直都是算法盲,看到算法的东西就头疼,开复老师说了,算法才是王道,于是开始慢慢接触排序,有点收获,总结一下。 首先来说说排序的分类。 1. 插入排序---直接插入排序、折半插入排序、希尔排序; 2. 交换排序---冒泡排序、快速排序; 3. 选择排序---直接选择排序、堆排序; 3. 归并排序; 4. 分配排序---桶排序、基数排序; 5. 外部排序。 内部排序和外部排序的概念:在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据的内、外存
2010-12-09 21:20:00
1050
原创 Effective C++点滴
<br />1. 对于单纯的常量,最好以const对象或者enums替代#define<br /> 对于形似函数的宏,最好用inline替代#define<br /> <br />2. 编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数。<br /> <br />3. 多态基类应该声明一个virtual析构函数,如果不是作为基类或者多态用,则不应该声明virtual析构函数<br /> <br />4. 赋值函数应该确保复制“对象
2010-11-28 16:16:00
511
转载 回调函数
<br />简介<br /><br /> 对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 <br /><br />什么是回调函数?<br /><br /> 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。<br /><br />为什么要使用回调函数?<br /
2010-11-20 21:05:00
512
转载 隐式类型转换
<br />● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。<br />● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。<br />double ←── float 高<br />↑<br />long<br
2010-11-19 14:44:00
839
原创 对象赋值测试
最近对对象赋值做了小测试#include "stdafx.h" #include using namespace std; class A { public: int a1; int *a2; //修改 }; int main() { A object1; object1.a1=10; object1.a2=&object1.a1;
2010-11-13 22:30:00
736
转载 引用和指针
<br />(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. <br />由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值. <br />String & rs = string1; <br />由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需要测试其的有效性. <br />(2)指针可以被重新赋值而reference则总是指向最
2010-11-13 21:22:00
524
转载 explicit关键字
<br />c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?<br /><br />如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class MyClass<br />{<br />public:<br />MyClass( int num );<br />}<br />....<br />MyClass obj = 1
2010-10-27 16:54:00
449
转载 new/delete和malloc/free的区别-zz
1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4、new 和 malloc效率比较new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void
2010-10-25 20:09:00
1222
转载 C++中Static作用和使用方法-zz
<br />1、什么是static?<br /> static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。<br /> 2、为什么要引入static?<br /> 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一 个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破
2010-10-19 09:41:00
675
转载 堆、栈、自由存储区、全局/静态存储区和常量存储区-zz
<br />在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 <br />栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 <br />堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 <br />自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过
2010-10-19 09:34:00
603
转载 C++和Java比较-zz
对比C++和Java “作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。” 然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。 (1) 最大的障碍在于速度:解释过的Java要比
2010-10-19 09:19:00
598
转载 c++虚函数表探究-zz
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 当然,相
2010-10-18 11:28:00
520
转载 函数中分配内存的问题-zz
<br />如果想要在在C++的函数中分配内存,那么就只得使用指针的引用传递,或是二级指针。<br /> <br />void MyNew(int** p)<br />{<br /> *p = new int;<br />}<br />void MyNew(int*& p)<br />{<br /> p = new int;<br />}<br /> <br />而通常我们在开始的学习中,都会写成 <br />void MyNew(int* p)<br />{<br /> p = new i
2010-10-18 10:31:00
627
原创 构造函数和变量初始化顺序
<br />class A<br />{ <br />public: <br /> A(){ cout<<"A()"<<endl;} <br /> ~A(){ cout<<"~A()"<<endl;} <br />}; <br />class B <br />{ <br /> <br />public: <br /> B(){ cout<<"B()"<<endl; } <br /> ~B(){ cout<<"~B()"<<endl; } <br /> <br />private: <
2010-10-17 11:48:00
1550
转载 C 语言的谜题
<br />1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?<br />#include<br />#include<br />int main()<br />{<br />while(1)<br />{<br />fprintf(stdout,"hello-std-out");<br />fprintf(stderr,"hello-std-err");<br />sleep(1);<br />}<br />return 0;<br />}<br />参考答案:stdout和std
2010-10-15 14:48:00
473
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人