自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chen_shiyang的专栏

送人玫瑰 手有余香

  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

转载 15道简单的算法题

最近在公司里基本处于打酱油的状态,工作正在交接中。没事又做起了算法题目。好久没怎么写算法题了,感觉手气还不错,经常能一次就写对(编译通过,得到想要的结果,没怎么测试),可能是因为这些题目之前看过或是写过,或许就是自己进步了一点。这15道大部分来自《剑指Offer》,作者的博客之前看过几次,感觉写得很好,但看这本书时却没有那个感觉了,可能是因为看过博客的原因吧,没有了之前的那种惊喜。自己就试着实现里

2014-06-10 17:57:40 647

转载 Redis新的存储模式diskstore

Redis作者antirez是一个非常勤奋的开发者,在Redis性能已经非常惊人的情况下持续不断开发新的特性,比如从新的cluster源代码看到,作者已经把Dynamo及Paxos一些核心的思想考虑进去并进行了一些简洁的实现。相比其它产品如Memcached则几年没什么大变化,在Web 2.0时代,Memcached已经非常不够用,技术人员需要考虑做很多额外工作才能让Memcached适应新的变化

2014-05-22 18:21:28 4262

转载 在多台服务器上简单实现Redis的数据主从复制

在多台服务器上简单实现Redis的数据主从复制       Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面我演示下怎样在多台服务器上进行Redis数据主从复制。这里我假设有两台服务器,一台是Windows操作系统(局域网IP:192.168.3.82),一台是

2014-05-22 18:16:04 560

转载 redis 持久化

数据持久化通俗讲就是把数据保存到磁盘上,保证不会因为断电等因素丢失数据。redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。先介绍下这两种dump方式再讲讲自己遇到的一些现象和想法,前面的内容是从网上整理出来的。Snapshotting

2014-05-22 18:09:19 405

转载 不能为virtual 的函数

常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。  1、为什么C++不支持普通函数为虚函数?  普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。  2、为什么C++不支持构造函数为虚函数?  这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函

2013-05-09 17:08:20 457

转载 C++ 抽象类

拿前面交通工具类的程序进行思考,由交通工具派生出来的汽车类,飞机类,是具备更具体特性的描述的类,而对于交通工具这一个基类来说,它的特性是模糊的,广泛的,如果建立一个交通工具类的对象并没有实际意义,为了对这种没有必要能够建立对象的类进行约束,c++引入了抽象类的特性,抽象类的约束控制来源于纯虚函数的定义。   声明一个类的成员函数为纯虚函数的意义在于让c++知道该函数并无意义,它的作用只

2013-05-09 14:24:05 970

原创 重载与重写

C++重载与重写 重写(覆盖)是指派生类函数覆盖某基类函数:1.不同的范围,分别位于基类和派生类中2.函数名相同3.参数相同4.基类函数必须有virtual关键字 函数重载:1.同一个类中2.函数名相同3.参数相同4.virtual 关键字可有可无 重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数:1.如果派生类的函数和基类的函

2013-01-22 10:54:51 293

转载 快速排序

MoreWindows专注于Windows编程白话经典算法系列之六 快速排序 快速搞定快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说

2012-12-06 19:40:09 242

转载 动态内存传递

当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道.这些往往会使人受尽折磨.所以如果你想深入C/C++编程,你必须静下心来,好好苦一番.现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递.并且在软件开发中很多专业人员并不能写出相关的合格的代码.【引入】 看下面的例子,这是我们在编写库函数或者项目内的共同函

2012-12-04 18:34:02 279

转载 嵌入式系统根文件系统的制作和移植

理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。  根文件系统,我认为根文件系统就是一种特殊的文件系统,那么

2012-12-01 00:32:11 418

转载 进程和线程同步的方法

1.前言    共有四种同步方法:1.临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2.互斥量:为协调共同对一个共享资源的单独访问而设计的。 3.信号量:为控制一个具有有限数量用户资源而设计。 4.事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 2.各种方法的详述1、 Event      用事件(Even

2012-11-14 00:08:27 654

转载 双链表

双向链表双向链表中,每个结点都有两个指针域,一个指向其后继结点,另一个指针指向其前驱结点,如图1.1(a)所示,因此,可以从某个结点开始朝两个方向遍历整个链表。如果循环链表中每个结点都采用双向指针就构成了双向循环链表。图1.1(c)所示就是一个带头结点的双向循环链表,其尾结点的后继指针指向表的头结点,而表头结点的前驱指针指向表的尾结点。空的双向循环链表的结构如图1.1(b)所示。

2012-11-02 01:33:25 484

转载 c++构造函数详解

1.  构造函数不能为虚函数的理由(1.)存储空间角度一个虚函数对应一个虚函数表(vtable),可是这个vtable是存储在对象的内存空间中。如果构造函数是虚的旧需要通过vtable来调用,可是对象还没事例化,哪来的内存空间,怎么找vtable.所以构造函数不能是虚函数。(2.)使用角度虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是初始化实例,使用虚函数

2012-10-25 15:51:41 704

转载 库函数strcpy的工作方式

strcpy原型:extern char *strcpy(char *dest,char *src);用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中,其操作对象是字符串,完成从源字符串到目的字符串的拷贝。。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。    返回指向dest的指针。

2012-10-25 15:00:15 3166 1

转载 虚函数和纯虚函数的区别

首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plaincopyclass

2012-09-29 14:18:06 431

转载 娱乐,C语言模拟C++虚函数多态性

看有感,原来C语言可以这样玩。。仔细想想,C++不也是在汇编层面上的封装么。膜拜这些语言设计者,深谙计算机科学的精髓,真是长见识了。本文只是简单模拟下多态,大体上就是C++的虚函数表机制,并没有考虑类域与继承机制,真要讨论起来那就麻烦多了,推荐大家可以看看PY源码解析,里面有简单介绍。我拿传统的圆与正方形问题为例子,基类是Shape,每个类定义虚函数showShape(),从而体现多态。

2012-09-29 10:34:37 1030

转载 哈希表

哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。  对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快,树

2012-09-29 10:25:53 786

转载 C++ 虚函数解析

前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法

2012-09-26 17:31:27 325

转载 bootloader 详细介绍

Bootloader对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程。嵌入式Linux系统同样离不开引导程序,这个引导程序就叫作Bootloader。6.1.1  Bootloader介绍Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。对

2012-09-26 11:16:02 2585

转载 python 复制与删除

用python实现了一个小型的自动发版本的工具。这个“自动发版本”有点虚, 只是简单地把debug 目录下的配置文件复制到指定目录,把Release下的生成文件复制到同一指定,过滤掉不需要的文件夹(.svn),然后再往这个指定目录添加几个特定的文件。    这个是我的第一个python小程序。    下面就来看其代码的实现。首先插入必要的库:1 import os 2 i

2012-09-25 09:58:26 479

转载 makefile 作用 编写 详解

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一

2012-09-25 09:07:21 5252

转载 C语言连接Mysql

C语言连MySQL使用教程系统环境:Ubuntu8.04一:安装从官方网站下载需要的软件有:MySQL-server ,MySQL-client,MySQL-bench,MySQL-devel,MySQL-shared其实上面的几个文件,最需要的是MySQL-server ,MySQL-client,我下载的是还有mysql-connector-c-6.0.

2012-09-24 18:00:11 682

转载 C操作MYSQL

下来的时候赶紧找资料,刚才搜索了几下,终于找到一些:1,[比较详细]在 C 里嵌入 SQL:http://www.pgsqldb.org/pgsqldoc-7.4/ecpg.html2,[在MySQL数据库中使用C执行SQL语句]:http://www.dvbbs.net/tech/data/2006031818989.asp3,MySQL客户工具和API:http://www.yes

2012-09-24 17:55:04 571

转载 TCP\IP 基础

1、TCP/IP 概述TCP/IP 实际上并不是一个协议,而是一组协议,它包括IP、TCP、UDP、ICMP、ARP等;1.1 什么是IP、ARP、ICMP、UDP;IP (Internet Protocol),网际协议;IP是TCP/IP 的最底层,高层协议都要转化为IP包,IP包含了源地址和目的地址,路由决策也发生在IP层; ARP (Address Resol

2012-09-24 17:07:08 411

转载 linux 进程管理

1、程序和进程;推荐文章:《解析Linux内核获取当前进程指针的方法 》程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。一个运行着的程序,可能有多个进程。比如 LinuxSir.Org所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将

2012-09-24 17:01:25 417

转载 linux 汇编语言

一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地

2012-09-24 16:55:09 718

转载 C++ 虚函数 多态

1、什么是虚函数和多态  虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。举个例子说明虚函数、多态、早绑定和晚绑定

2012-09-24 16:27:01 334

转载 linux socket 编程

socket socket()我们使用系统调用socket()来获得文件描述符:#include#includeint socket(int domain,int type,int protocol);第一个参数domain设置为“AF_INET”。第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。第三个参数设置为0。系

2012-09-24 16:15:32 198

转载 linux 多线程同步方式

线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。  1)互斥锁(mutex)  通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。  int pthread_mutex_init(pthread_mutex_t *mutex,const pthrea

2012-09-24 16:03:57 321

转载 线程编程

线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些

2012-09-24 15:59:55 314

转载 多线程 编程

Linux--线程编程进程  系统中程序执行和资源分配的基本单位  每个进程有自己的数据段、代码段和堆栈段  在进行切换时需要有比较复杂的上下文切换线程  减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多  进程内独立的一条运行路线  处理器调度的最小单元,也称为轻量级进程可以对进程的内存空间和资源进行访问,并与同一进程中

2012-09-24 15:41:40 369

转载 linux 进程间通信

一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作

2012-09-24 10:40:22 1397

转载 socket阻塞与非阻塞区别

简单点说:阻塞就是干不完不准回来, 非组赛就是你先干,我现看看有其他事没有,完了告诉我一声我们拿最常用的send和recv两个函数来说吧...比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的数

2012-09-21 15:51:00 372

selenium chrome驱动

selenium chrome驱动

2016-06-16

Appium for Windows

Appium for Windows jdk Apache ant Apache mavenue安装

2015-04-29

空空如也

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

TA关注的人

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