- 博客(47)
- 资源 (6)
- 收藏
- 关注
原创 MySQL: ON DUPLICATE KEY UPDATE 用法
使用该语法可在插入记录的时候先判断记录是否存在,如果不存在则插入,否则更新,很方便,无需执行两条SQL 这个语句知识mysql中,而标准sql语句中是没有的。 INSERT INTO .. ON DUPLICATE KEY更新多行记录 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRI
2014-07-10 10:46:16
604
原创 error C2664: 'strcmp' : cannot convert parameter
int strcmp(const char* str1, const char* str2); 这个函数是C标准库的函数,处理的是C风格0结尾字符数组字符串。 C++标准库中的string类有可以直接使用的,=,==,!=运算符,通常也用不到这个函数。 _____________________________________________
2014-07-10 10:42:00
1815
原创 MAHOUT_LOCAL is not set;adding HADOOP_CONF_DIR to classpath
在Mahout中出现错误:MAHOUT_LOCAL is not set;adding HADOOP_CONF_DIR to classpathMAHOUT_LOCAL与HADOOP_CONF_DIR以上的两个参数是控制Mahout是在本地运行还是在Hadoop上运行的关键。$MAHOUT_HOME/bin/mahout文件指出,只要设置MAHOUT_LOCAL的值为一个非空(
2014-05-21 22:42:02
956
原创 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'(Windows平台)
提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'。前两天也出现过这个问题,网上找了一个比较流行的方法(见方法一),搞定了。今天又用这个试了试,却搞不定,在网上找了半天,终于发现是因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但
2014-03-19 22:27:15
809
原创 C++中cout输出顺序(VC6)
c++中对于cout后面的表达式的求值顺序是未定义的,具体的运行结果要由编译器的实现来决定.本人是在vc++ 6.0下编译的.测试代码:#include "stdafx.h"#include using namespace std;int add(){ cout<<"function add"<<endl; return 1;}int sub(){
2014-03-11 13:00:12
1255
原创 C++智能指针的设计和实现
一、智能指针 在C++语言编程时,当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计
2014-03-10 16:57:20
591
转载 C++ 智能指针详解
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared
2014-03-10 16:27:58
358
原创 关于i++;++i;i=i+1;i+=1 的效率问题
(1) i=i+1 它的效率最低,因为其执行过程如下: 1-1 读取右x的地址; 1-2 x+1; 1-3 读取左x的地址; 1-4 将右值传给左边的x (temp=i+1; i=temp;)(2) i+=1它的执行过程是: 2-1 读取右x的地址; 2-2 x+1; 2-3 将得到的值传给x (3) i++它的执行过程是: 3-
2014-03-10 11:54:16
1393
原创 B树、B-树、B+树、B*树的区别
B树即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入
2014-03-08 20:38:38
733
原创 SQL语句优化策略
总体来说,SQL语句优化策略有以下几个方面:● 创建表的时候。应尽量建立主键,根据主键查询数据;● 大数据表删除,用truncate table代替delete。● 合理使用索引,在OLTP应用中一张表的索引不要太多。组合索引的列顺序尽量与查询条件列顺序保持一致;对于数据操作频繁的表,索引需要定期重建,以减少失效的索引和碎片。● 查询尽量用确定的列名,少用*号。尽量少嵌套子查
2014-03-08 16:21:49
788
转载 数据库面试题集合
在整理准备数据库面试的过程中,先是在网上一顿海搜,找到历史面试题,然后一个骨头一个骨头的啃完,现在基本上这些问题(或者说叫做实践)都没有问题了。遇到的困难是:PL/SQL居多,T-SQL太少,所以需要筛选,修改答案,甚至有一些在T-SQL里面还没有支持。下一步再把数据库T-SQL经典教程在翻看一遍,基本上对数据库就算告一段落了,前前后后共整整1个多月的时间(去年10.1是二周,下载是三周),学
2014-03-08 16:14:49
496
转载 由浅入深理解数据库中索引的底层实现
这篇文章是介绍MySQL数据库中的索引是如何根据需求一步步演变最终成为B+树结构的以及针对B+树索引的查询,插入,删除,更新等操作的处理方法。Oracle和DB2数据库索引的实现基本上也是大同小异的。文章写得很通俗易懂,就转在这了。关于B+树和索引内部结构可以参考:《B 树、B- 树、B+ 树和B* 树》和《深入理解DB2索引(Index)》。00 – 背景知识- B-Tree
2014-03-08 16:11:43
843
转载 深入理解DB2索引(Index)
索引(Index)是数据库管理系统中一个非常重要的数据结构,索引的合理使用能够极大提高数据库系统的性能。那么,什么是索引?索引有时如何提高数据库系统性能的呢?阅读本文时建议参考:《深入理解数据库磁盘存储(Disk Storage)》索引概念以一本书为例,通常一本书开头会有目录,而后才是正文,通过目录中每行左侧的标题和右侧的页码,我们可以快速定位到需要阅读的页面,而无需一
2014-03-08 16:08:03
775
原创 数据库索引的实现原理
说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了
2014-03-08 15:59:38
658
原创 C++句柄类
一、句柄类思想 Thinking in c++ 第一卷的中文翻译实在是无法忍,偏偏我就有这么一本(还是合订本的)。 幸好读到了一个从前没意识到的问题,也算是值了:句柄类,也叫Cheshire Cat。 问题背景是这样的:1)在极为安全的领域,即使核心实现已经封闭在库中不可见,但是头文件中的变量定义仍然可能会曝露一些内部信息; 2)在设计初期,实现部分固然需要经常变动,连
2014-03-08 11:05:53
1072
原创 memset函数详解
函数介绍void *memset(void *s, int ch, size_t n);函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法memset函数详细说明1。void *memset
2014-03-07 15:17:06
734
原创 友元函数和友元类
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和
2014-03-07 14:43:12
513
原创 语法盐
语法盐(英语:syntactic salt)是指在计算机语言特别设计,不容易产生不良代码的特性。语法盐就像一个程序员必须跳过的圈,来证明他们知道将会发生什么,而不是只表达一个程序行为。比如,在没有额外的语言明确地说明意图的情形下,Java不允许将一个声明为float类型的变量赋值给一个声明为int类型的变量,但是C和C++会自动把float类型的变量缩短并赋值给int类型的变量。在C#中,
2014-03-06 11:28:40
918
原创 语法糖
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。语法糖的例子for 循环一个例子是C语言中的for 循环:
2014-03-06 11:26:09
661
原创 给定一个整数实现奇偶比特位互换-改进方案
刚看到一篇《给定一个整数实现奇偶比特位互换》,笔者做了一下小小的改进,在最后。创新工场笔试,有个题目叫做定义一个宏实现,给定一个整数,进行奇偶比特位互换,比如整数6互换之后就变成9,当时毫无头绪,回头想想也不是很难思路如下:左移一位,则偶数位到了奇数位,将偶数位清零右移一位,则奇数位到了偶数位,将奇数位清零 让两者相加,则得结果
2014-02-20 10:55:43
755
原创 雅思听力中出现频率最高的同意转换
同意转换(Paraphrase, 以下简称PP)是听力考试贯穿始末的核心,Section 1有,Section 4也有,旅游场景有,生物场景也有,填空题里有,选择题里也有。一个PP,既是听力出题的路数所在,又是听力做题的必经之路。毋宁说PP是一个技巧,不如说PP是一种解题方法。技巧是‘巧’,方法是‘方’;考试没有投机取‘巧’,只有破解良‘方’。所以PP不是‘巧’而是‘方’,而这个‘方’的基
2014-02-20 09:08:47
645
原创 Linux shell编程 之 if条件
比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 2 注意到等号两边各有一个空格:这是unix shell的要求 3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相
2014-02-19 17:06:31
831
原创 linux中shell date获取时间的相关操作归纳
获得当天的日期date +%Y-%m-%d输出: 2014-02-19 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d)有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数 获取明天的日期date -d next-day +%Y%m%d获取昨天的日期date -d last
2014-02-19 16:22:25
639
原创 关于Java浮点数运算精度丢失问题
前几天看了一个朋友的博客,说Java中浮点数运算精度丢失的问题,他给出了问题,也指出了C语言相对于Java的优势,其实,Java中也是可以解决浮点运算精度丢失问题的。那就是:BigDecimal。先看一段程序:public class DoubleTest{ public static void main(String args[]) { System.out.println
2014-02-19 10:51:14
1405
1
原创 直接插入排序的三种实现
直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。
2014-02-18 11:51:12
461
1
转载 冒泡排序的三种实现
冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。 按照定义很容易写出代码:[cpp]
2014-02-18 11:15:16
410
原创 Linux统计某文件夹下文件、文件夹的个数
统计某文件夹下文件的个数ls -l |grep "^-"|wc -l统计某文件夹下目录的个数ls -l |grep "^d"|wc -l统计文件夹下文件的个数,包括子文件夹里的ls -lR|grep "^-"|wc -l如统计/home/han目录(包含子目录)下的所有js文件则:ls -lR /home/han|grep js|wc -l 或 ls
2014-02-17 17:09:16
437
1
原创 atoi 和 itoa的实现
atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:1, atoi原型: int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。#include
2014-02-17 16:38:14
742
1
原创 常用数据类型在32位和64位CPU上的字节数比较
测试语句(C语言):printf("char[%d] char*[%d] s_int[%d] int[%d] u_int[%d] float[%d] double[%d] long[%d] LL[%d] UL[%d]\n", sizeof(char),sizeof(char *), sizeof(short int),sizeof(int),sizeof(uns
2014-02-17 15:57:00
398
原创 linux中ps命令介绍及常见应用
来源《鸟哥的linux私房菜》ps:将某个时间点的程序运作情况撷取下来[root@linux ~]# ps aux[root@linux ~]# ps -lA[root@linux ~]# ps axjf参数:-A :所有的 process 均显示出来,与 -e 具有同样的效用;-a :不与 terminal 有关的所有 process
2014-02-17 15:40:26
534
1
原创 异或运算原理常见作用(精华在最后)
定义 异或(xor)是一个数学运算符。它应用于逻辑运算。异或符号为“^”。 其运算法则为a异或b=a'b或ab'(a'为非a)。 真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。简单点说就是异或的两个值'相同为假,不同为真'。 异或运算法则 1. a ^ b = b
2014-02-17 09:58:32
934
转载 Thinking in BigDate(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
纯干货:Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解。 通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS、MapReduce、Hbase、Hive是如何运行,以及基于Hadoop数据仓库的构建和分布式数据库内部具体实现。如有不足,后续及时修改。HDFS的体系架构 整个Hadoop的体系结构主要是通过H
2014-02-16 22:30:43
413
转载 Thinking in BigDate(七)大数据技术核心之NoSql(一)
曾在Thinking in BigDate(三)大数据运作机理与趋势,一文中谈到结构化数据面临的挑战,随着持续增长的海量数据,NoSql应运而生。本文,我们将续续揭开NoSql的神秘面纱,打开非结构化数据的大门(不再过多的探讨关系型数据库的特点)。原文章总结于《NoSql Distilled》作者:Pramod J.Sadalage ,Martin Fowler著,爱飞翔 译
2014-02-16 22:30:07
459
转载 Thinking in BigDate(六)大数据技术核心之ETL
前几篇文章都是根据自己所见所知,在前人的基础上加以整合,对大数据概念有了初步的了解。接下来的四篇文章,抛开大数据的概念与基本知识,进入核心。我们从:数据采集、数据存储、数据管理、数据分析与挖掘,四个方面讨论大数据在实际应用中涉及的技术与知识点。核心技术架构挑战:1、对现有数据库管理技术的挑战。2、经典数据库技术并没有考虑数据的多类别(variety)、SQL(结构化
2014-02-16 22:29:27
753
转载 Thinking in BigDate(五)大数据之统计学与数据挖掘
今天回来,在原来的文章中,添加了一些数据挖掘方面的概念。 上篇博客,我们从”大”,”价值”两点来揭示大数据主要源于哪些企业和在哪些企业应用更广泛。在最后,我么指出了大数据真正的价值:数据挖掘。而什么是数据挖掘,我们抛开传统定义上的数据挖掘的概念,在新形式下,我们应该给数据挖掘的重新认识。由于时间有限,虽题目命名为大数据之统计许与数据挖掘,但是整篇文章基本没有涉及大数据下的这
2014-02-16 22:28:45
660
转载 Thinking in BigDate(四)大数据之“大”的来源与价值
大数据之“大”的来源与价值 在上篇博客中,我们仅仅是从一个简单的利用案例,谈到了大数据的机理和趋势。但我们更多的人,还是对大数据模糊。究竟多少算是“大”?大数据究竟来源于哪些产业?大数据在哪些公司应用更广泛?大数据的价值是什么?大数据阻碍了哪些商业的发展?又究竟给哪些产业带来新的活力?究竟多少算大? 在前面的几篇博客中,我们已经谈到,大数据,并不在于
2014-02-16 22:27:49
560
转载 Thinking in BigDate(三)大数据运作机理与趋势
大数据运作机理与趋势 结束了,上一篇的大数据变革。接下来,我们将更加深入的探讨大数据是如何运行的?以及大数据将会在哪些具体的领域产生改变以及如何实施它们?大数据运作机理 2013年12月5-6日,在北京召开的,中国大数据技术大会。从一开始,这个名词似乎已经预示着,这将是再一次将大数据的影响力进一步拉大。集结上百名国内外顶级的技术专家,在一起谈
2014-02-16 22:26:39
745
转载 Thinking in BigDate(二)大数据时代下的变革
大数据时代的思维变革 A Revolution That Will Transform How We Live, Work, and Think. 不期而遇的一本《大数据时代》将我引进大数据的领域。这个浪里淘沙的时代,我们都站在这个时代改革的前沿,而作为互联网最具爆发力的一种媒介,它给我传递着什么资讯?如果说我们错过了2000年左右的互联网浪潮,错过电商竞
2014-02-16 22:25:56
657
转载 Thinking in BigDate(一)前序
谁也无法说服他人改变,因为我们每一个人都守着一扇只能从内开启的改变之门,不论动之以情或说之以理,我们都不能替别人开门。 ——弗格森 BigDate这一名词,第一次蹦出脑袋应该是13年3月份,一次地铁悄然而遇。自此11个月之后至今,它可能俨然成为这个时代阶段性的代言词。也在你的思维与轨迹中产生深远的影响,以至于你的生
2014-02-16 22:24:50
540
原创 继承、重写、覆盖、重载、多态的区别
override->重写(=覆盖)、overload->重载、polymorphism -> 多态 1、继承(inheritance) 一旦你已经创建了一个定义了对象一般属性的超类,该超类可以被继承以生成特殊用途的类。每一个子类只增添它自己独特的属性。这是继承的本质。Java 不支持多超类的继承。 超类变量可以引用子类对象(这个具体有什么作用,有待补充)2、重写(覆盖)
2014-02-16 22:04:02
486
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人