(转载)字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)

声明:转载自“简单生活——Kevin Yang的博客

以诙谐幽默的笔法将字符编码的发展历史娓娓道道,内容详尽,囊括了ASCII码、ASCII码扩展、全角半角、GB2312、GBK、UNICODE、UTF-8等要点。

—————————————————————————————————————–

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们认为8个开关状态作为原子单位很好,于是他们把这称为[……]

>> 阅读全文…

Effective C++ 学习笔记

1. C++编程范型

Programming Paradigms,也就是编程的风格和模式

  • Procedural-based,面向过程编程
  • Object-based,基于对象
  • Object-Oriented,面向对象编程
  • Generics,范型编程
  • Template MetaProgramming,TMP,模板元编程

一般认为是四种:面向过程OP(C风格),面向对象OO(使用类),范型编程GP(使用模板),模板元编程TMP(使用模板和递归,获得编译期间执行的代码)

2. 函数签名(signature)

函数的参数和返回类型。函数在重载时利用函数签名区分不同函数。

int add(int[......]

>> 阅读全文...

C++计时的几种方法总结及例程

程序中经常会用到计时,下面总结了常见的几种计时方法,包括clock()、time()、GetTickCount()、QueryFrequencyCount(),使用的方法大致一致,符合下面的规范。通过在代码开始和结束处分别获得某个计数值,计算(计数值差值/计数的频率)获得代码的执行时间。

start = GetCurrentCount();//获取当前的计数
//some code... //需要计时的代码
end = GetCurrentCount(); //

duration = (end-start)/frequency;//计时

1. 使用clock()计时

头文件
clock()[……]

>> 阅读全文…

python 自动获取天气程序(Version1.0)

自动获取用户当前的城市,显示城市的最新天气信息

程序流程

1. 获取用户所在城市

抓取http://pv.sohu.com/cityjson ,其返回结果如下

pythoncityjson.png

从返回结果的json结构中读取去当前用户的所在城市。

city_info = urllib2.urlopen( 'http://pv.sohu.com/cityjson').read()
city = city_info.split('=')[1].split(',')[2].split('"')[3] #split out the city n[......]

>> 阅读全文...

python string的中文字符串截取

下面函数是从我在写的一个python自动获取天气的程序中截取的。

该函数将从中文字符串“浙江省杭州市”中,截取出"杭州"

首先将字符串编码为gbk,使用unicode(str,code),将code型编码的 str字符串转换成unicode

然后判断字符串中是否含有"省"和"市"字,如果有就截取掉;这里注意使用 u“省”

最后返回截取的字符串。

函数如下:

def convertName(cityName):
    '''''将 “浙江省杭州市” 转换成“杭州”''[......]

>> 阅读全文...

C++线程同步总结(笔记)

主要有四种方式:临界区(CRITICAL_SECTION)、互斥对象(Mutex,Mutual Exclusion)、事件对象(Event)、信号量(Semaphore)

其中临界区效率最高,但只能实现本进程内的线程同步。其它三个可以实现多个进程内的线程同步。信号量功能最强大可实现线程互斥也可以用于共享的多个资源访问控制。

Windows中,Mutex和CRITICAL_SECTION是两种使用了不同API的互斥量。两者的差别在于,Windows的标准Mutex对象是一种内核机制,它的使用需要从用户模式切换到内核模式,可以实现跨进程的同步。CRITICAL_SECTION是用户级互斥量,加快[……]

>> 阅读全文…

显示鼠标当前的屏幕位置

首先的想到的自然是响应Windows的mousemove消息。

可是试过之后就会发现,当窗口不是最大化显示时,会出现两个问题:

  • 第一个,坐标系的不同,以致于显示的坐标是以窗口坐标系为基准的,而不是屏幕,这个问题虽然可以通过ClientToScreen()函数来解决,但是还会有下面一个问题;
  • 第二个,当鼠标超出窗口,在窗口外(准确的是在客户区外)之后,就会没有mousemove消息发送给窗口,这样我们显示的坐标就不变了。

所以我想着利用线程来实现鼠标位置的捕获和显示,方法如下

在Dialog 的OnInitDialog()函数中创建一个线程

hThread = CreateThread(NU[......]

>> 阅读全文...

C\C++ static用法

预备知识

变量分类:

按作用域分: 局部变量;全局变量
按生存周期分:动态变量;静态变量

名称
定义
按定义位置的称谓

局部变量
函数内定义的变量
内部变量

全局变量
函数之外定义的变量
外部变量

名称
定义
说明

动态变量
声明为auto的变量[auto默认省略不写]
出了作用域其内存就被释放

静态变量
声明为static的变量
保存在全局数据区,程序运行期间不释放

C\C++中static的用法

主要为以下4种,其中1-3为C\C++共有,4为C++特有(因为涉及到类)

1.  声明静态局部变量

即将一个局部变量的生存周期设定为整个应用程序的[……]

>> 阅读全文…

Windows下动态链接库的创建和使用(笔记)

在学习过程中,一次次的感觉到dll文件的重要性,所以乘着这两天有时间,又把孙鑫老师的视频回顾了一遍,很经典,很透彻,在此做下笔记,以供后续温故。

IDE:Visual C++ 6.0

动态链接库的创建

下面的方法是层层递进的关系,下一个方法是在上一个的基础上做改善。

方法一:(单个*.cpp文件)

  1. 新建dll工程
  2. 添加C/C++源文件(c++)
  3. 在源文件中,编写函数(每个函数结尾不需要‘;’)(如下图)
  4. 在需要导出的函数前加 _declspec(dllexport)
  5. 编译连接即可,获得dll和lib文件。

这是最基础的方法,但是不利于后续动态链接库的使用,因为使用者不知道该动态库中都[……]

>> 阅读全文…

SQL Server 版本号和备份还原

版本信息

使用SQL Server过程中通常会出现因版本不同而无法打开数据库文件的问题,比如会提示“数据库的版本为 661,无法打开。此服务器支持 655 版及更低版本”。下面总结一下SQL Server 的版本号。

SQL Server 2008 SP2 662
SQL Server 2008 RTM2 661
SQL Server 2008 SP1 655
SQL Server 2005 SP2 612
SQL Server 2005 611
SQL Server 2000 539

 

备份还原

1. 数据库文件,即mdf文件,可以直接将mdf文件和log文件复制到别处使用。

注意:必须要先停止数据库服务

使用方法:附加数据库

 

2. 备份文件,即bak文件

生成:右击数据库,任务–>备份

使用:任务–>恢复数据库

[……]

>> 阅读全文…

在Windows7下从硬盘安装 Redhat5.4方法图解

文章目录结构如下

1.设置引导,启动Redhat安装程序。

  • 1.1. 下载 rhel-server-5.4-i386-dvd.iso
  • 1.2. 格式化一个分区为FAT32,用来放置我们的安装文件,譬如说是K盘
  • 1.3. 将rhel-server-5.4-i386-dvd.iso 复制到K盘
  • 1.4. 将rhel-server-5.4-i386-dvd.iso解压到K盘
  • 1.5. 设置引导
  • 1.6. 启动引导程序

2. RedHat安装过程

  • 2.1. 分区

3. Windows7与RedHat双系统启动项问题

  • 3.1 进入RedHat系统
  • 3.2 打开/boot/grub/grub.conf 文件
  • 3.3 添加Windows7启动项。
  • 3.4 保存并重启电脑
  • 3.5 默认引导项和等待时间设置

[……]

>> 阅读全文…

C\C++标准及各编译器的支持情况

C语言关键字(32+)

基本的有32个保留关键字(Reserved Keywords),后续的C99和C11标准又增添了一些关键字。

32个保留关键字(C89)

char short int unsigned
long float double struct
union void enum signed
const volatile typedef auto
register static extern break
case continue default do
else for goto if
return switch while sizeof

注意: sizeof是关键字,而不是函数或者宏

C99标准新增关键字

_Bool _Complex _Imaginary inline restrict

_Bool与C++中的bool类型相同,值为0或1,定义在<stdbool.h>中

_Complex和_Imaginary用于定义复数类型。

inline与C++中的inline相同,内联支持。

restrict用于修饰指针。

C11标准新增关键字

_Alignas _Alignof _Atomic _Generic
_Noreturn _Static_assert _Thread_local

主要来源:维基百科“C语言”

[……]

>> 阅读全文…

Windows Live Writer+SyntaxHighter实现WordPress博客离线撰写时代码高亮

由于WordPress在线编写代码的不便,尤其是插入代码后对齐和缩进格式方面,一直都没有找到一个好的解决方案。索性就尝试使用Windows Live Writer离线撰写文章,不过对我这样一个整体和代码打交道的人来说,仍然绕不开代码的语法高亮和对齐。话说Windows Live Writer可以插入代码高亮插件,而且还是SyntaxHighter这款我很喜欢的风格,叫做“Windows Live Writer Source Code plugin for SyntaxHighlighter”,所以就急忙安装软件进行了尝试,结果却给热情的我足足的浇了一盆冰水,因为发布后的文章打开,浏览器会弹出“[……]

>> 阅读全文…

eVC开发WinSock程序时connect函数总是立即返回0的问题

Wince下eVC开发WinSock程序,connect函数总是返回0的问题。

前提:

一台Wince设备,一个串口线,一台PC。

Wince设备通过串口线连接到PC,使用ActiveSync工具同步,动态分配IP(DHCP)。

现象(问题):

在Wince下运行socket程序(系统底层利用ActiveSync通过PC连接网络),但connect函数立即返回,并且返回值始终为0(表示成功),

即便将PC的网络断开,即便连接的是一个任意的IP和端口,依旧立即返回一个0。

设计测试方案和分析:

方案一:将socket部分的程序移植到PC机上