自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(47)
  • 收藏
  • 关注

转载 【转】Netflix工程总监眼中的分类算法:深度学习优先级最低

摘要:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain根据奥卡姆剃刀原理依次推荐了逻辑回归、SVM、决策树集成和深度学习,并谈了他的不同认识。他并不推荐深度学习为通用的分类技术。针对Quora上的一个老问题:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain近日给出新的解答,他根据奥卡姆剃刀原理依次推荐了逻辑

2015-06-13 22:33:52 694

原创 死锁问题

程序正常情况下不会出现死锁,异常情况下,没有执行解锁,因此需要在try后的finally执行解锁。也是坑,待续。

2015-05-24 22:20:49 730

原创 SimpleDateFormat线程不安全

大坑,待续。

2015-05-12 23:18:59 707

原创 Effective JAVA笔记

1,列表优先于数组数组是协变的,泛型是不可变的;数据是具体化的,运行时才报错,而泛型时通过擦除来实现的,只在编译时强化类型信息。2,优先考虑泛型扩展性更强3,返回零长度的数组或集合,而不是null调用方如客户端很可能忘记处理null;认为null返回值避免分配数组所需的开销观点站不住脚,因为(1)这个级别上性能几乎没有差别;(2)对于每次调用可以返回同一个零长度的数组,

2015-05-10 22:13:26 708

原创 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 8642

原创 MongoDB和Redis区别

简介MongoDB更类似Mysql,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。Mysql在大数据量时效率显著下降,MongoDB更多时候作为关系数据库的一种替代。内存管理机制Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。MongoDB数据存在内存,由linux系统mmap

2015-02-17 09:10:08 74930 6

原创 cas实现共享session

cas是开源的登录认证方案,可以实现多个web应用的单点登录。随着用户量的增加,web应用需要部署多个实例,要实现不同应用、多实例的共享session,需要先了解cas的logout机制。简单的说,web应用在接入cas的时候需要继承cas-client-core,这个模块完成的事情如下:拦截到web应用的请求,验证登录状态,若未登录则跳转到登录页登录成功,web应用的tomcat

2015-02-15 11:51:42 16903 11

转载 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 887

转载 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 1077

转载 Android中的Handler, Looper, MessageQueue和Thread [zz]

对于这部分的内容,将分成4小节来描述:1.职责与关系2.消息循环3.线程与更新4.几点小结-------------------------------------------------------------------------------------

2011-08-15 21:07:25 745

原创 QuickSearchBox的一点改进

Google自带的Android源码中包含一些原生程序的源码,比如QuickSearchBox,Music,Gallery3D等等。        最近拜读了QuickSearchBox部分源码,QuickSearchBox有可以搜索联系人、音乐、信息、应用程序等等。当我们在

2011-08-11 23:46:33 5345 4

转载 从HTTP GET和POST的区别说起

在推特上抱怨面试时问HTTP GETE和POST的区别得到回答都不满意,有人不清楚,当时只回复了看 RFC2616。趁有空说说面试时得到的回答大多是:POST是安全的,因为被提交的数据看不到,或者被加密的,其它的还有GET的时候中文出现乱码(在地址栏里),数据最大长度限制等等。说 POST 比 GET 安全肯定是错的,POST跟GET都是明文传输,用httpfox等插件,或者像Wire

2011-06-19 11:23:00 865 1

转载 C++和java中多态机制的异同(zz)

以前我有个错误的观点:即使在C++和java中多态性的实现机制可能不同,但它们的表现形式应该相同,也就是说如果代码结构相同,那么执行结果也应该相同。可惜事与愿违,事情并不总是你想象中的那样子。(在看下文以前,你最好先考虑一下这个问题,你有什么看法呢?) ok,让我们进入正题。         首先本文不讨论面向对象编程的基本概念,如封装、继承和数据抽象等,这方面的资料现在应

2011-06-03 11:10:00 861

转载 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 1128

转载 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 1904 1

原创 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 2081

转载 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 2163

原创 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 693

转载 malloc和free内存信息详解[zz]

<br />malloc()到底从哪里得来了内存空间<br /> <br />1、malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。就是这样!<br />   说到这里,不得不另外插入一个小话题,相信大家也知道是什么话题了。什么是堆?说到堆,又忍不住说到了栈

2011-04-12 19:26:00 1114

原创 openwrt路由系统添加启动项

<br />        最近被mesh路由器项目搞得焦头烂额的,想死的心都有了,当然,夸张了点,呵呵。<br />        openwrt是基于linux内核的路由操作系统,经过裁剪,因此与普通linux系统文件结构有所不同。近来搞定了在ubuntu上搭建openwrt的交叉编译环境,另外搞定了openwrt先添加启动项。<br />        说说添加启动项问题吧。在/etc/init.d里添加需要启动的shell脚本,假设名字为my-plugin。接下来模仿该目录下其他启动脚本的格式,添加

2011-03-26 15:14:00 31942 3

转载 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 825

转载 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 18903 4

转载 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 930

转载 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 1615

转载 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 44290 1

原创 排序学习总结(待续)

自己一直都是算法盲,看到算法的东西就头疼,开复老师说了,算法才是王道,于是开始慢慢接触排序,有点收获,总结一下。    首先来说说排序的分类。    1. 插入排序---直接插入排序、折半插入排序、希尔排序;    2. 交换排序---冒泡排序、快速排序;    3. 选择排序---直接选择排序、堆排序;    3. 归并排序;    4. 分配排序---桶排序、基数排序;    5. 外部排序。    内部排序和外部排序的概念:在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据的内、外存

2010-12-09 21:20:00 991

原创 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 479

转载 回调函数

<br />简介<br /><br />  对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 <br /><br />什么是回调函数?<br /><br />  简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。<br /><br />为什么要使用回调函数?<br /

2010-11-20 21:05:00 486

转载 隐式类型转换

<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 791

原创 对象赋值测试

最近对对象赋值做了小测试#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 705

转载 引用和指针

<br />(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. <br />由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值. <br />String & rs = string1; <br />由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需要测试其的有效性. <br />(2)指针可以被重新赋值而reference则总是指向最

2010-11-13 21:22:00 494

转载 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 412

转载 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 1186

转载 C++中Static作用和使用方法-zz

<br />1、什么是static?<br />       static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。<br />    2、为什么要引入static?<br />       函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一 个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破

2010-10-19 09:41:00 638

转载 堆、栈、自由存储区、全局/静态存储区和常量存储区-zz

<br />在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 <br />栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 <br />堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 <br />自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过

2010-10-19 09:34:00 562

转载 C++和Java比较-zz

对比C++和Java “作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。” 然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。 (1) 最大的障碍在于速度:解释过的Java要比

2010-10-19 09:19:00 564

转载 c++虚函数表探究-zz

C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 当然,相

2010-10-18 11:28:00 487

转载 函数中分配内存的问题-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 587

原创 构造函数和变量初始化顺序

<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 1501

转载 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 449

空空如也

空空如也

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

TA关注的人

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