当前位置: 首页 > 编程日记 > 正文

UNICODE使用的一些知识和技巧

UNICODE宏和_UNICODE宏的关系

在windows编程中,经常要编译Unicode版本的程序,方法是工程文件的配置中加上UNICODE或者_UNICODE编译条件,那么到底是用哪一个呢?

Jeffrey Richter在《Windows核心编程》中说,_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件.当编译源代码模块时,通常必须同时定义这两个宏.究竟是怎么样的呢?

我在MFC的头文件中搜了一下,在Afxv_W32.h文件中找到这样一段代码:

#ifdef _UNICODE

#ifndef UNICODE

#define UNICODE

#endif

#endif

#ifdef UNICODE

#ifndef _UNICODE

#define _UNICODE

#endif

#endif

所以,在MFC程序中,只要设置了两个中其中一个就可以了.

但是对于SDK程序,我在头文件搜索中,发现出现次数最多的是UNICODE, _UNICODE仅仅在少数几个文件中,并且互相定义的地方也不多,所以写SDK程序,如果要编译成UNICODE程序,只要设置UNICODE宏就可以了

本篇文章来源于 黑客手册
原文链接:http://www.nohack.cn/code/other/2006-10-05/8850.html

【IT168知识库】

Unicode编码问题,编程方面的技巧集合

一、匹配Unicode字符的正则表达式

原文:http://tech.it168.com/KnowledgeBase/Articles/2/2/0/220fcae070b4f62461e3e99e17e30306.htm

这里是几个主要非英文语系字符范围(google上找到的):

2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。

3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。

4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。

A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。

AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。

F900~FAFFh:中日韩兼容表意文字区,总计收容302个中日韩汉字。

FB00~FFFDh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。

比如需要匹配所有中日韩非符号字符,那么正则表达式应该是^[\u3400-\u9FFF]+$
理论上没错, 可是我到msn.co.ko随便复制了个韩文下来, 发现根本不对, 诡异
再到msn.co.jp复制了个'お', 也不得行..

然后把范围扩大到^[\u2E80-\u9FFF]+$, 这样倒是都通过了, 这个应该就是匹配中日韩文字的正则表达式了, 包括我們臺灣省還在盲目使用的繁體中文

而关于中文的正则表达式, 应该是^[\u4E00-\u9FFF]+$, 和论坛里常被人提起的^[\u4E00-\u9FA5]+$很接近

需要注意的是论坛里说的^[\u4E00-\u9FA5]+$这是专门用于匹配简体中文的正则表达式, 实际上繁体字也在里面, 我用测试器测试了下'中華人民共和國', 也通过了, 当然, ^[\u4E00-\u9FFF]+$也是一样的结果

二、利用汉字Unicode范围来验证是否为汉字的JavaScript函数

1、function checkchinese(str){  
   
var re1 = new RegExp("^[\u4E00-\\u9fa5]*$")       //汉字的范围
   var re2 = new RegExp("^[\uE7C7-\uE7F3]*$")
   
var str = str.replace(/(^\s*)|(\s*$)/g,'');
   
if (str == ''){return false;}
   
if (!(re1.test(str) && (! re2.test(str)))){
      
return false;
   }
   
return true;
}



3.怎么判断是否是字符
if(/[^\x00-\xff]/g.test(s))
    alert("含有汉字");
else
    alert("全是字符");

3.怎么判断是否含有汉字
if(escape(str).indexOf("%u")!=-1)
    alert("含有汉字");
else
    alert("全是字符");

4、

String.prototype.existChinese   =   function()  
  {  
  //[\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全角符號  
  return   /[\u4e00-\u9fa5]/.test(this);  
  }



三、其他技巧

1、只能输入汉字,数字,英文大小写,符号只允许,。!的正则表达式

if(/[^\u4e00-\u9fa5\w,\.]/.test(obj.value)) obj.value="";return false;

function SpecChar(obj) { 
if(event.type=="keyup") { if(/[^\u4e00-\u9fa5\w,\.]/.test(obj.value)) obj.value=obj.value.substring(0,obj.value.length-1);return false; } }


四、Windows环境下Unicode编程总结

UNICODE环境设置

在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。



UNICODE编译设置:

C/C++, Preprocessor difinitions 去除_MBCS,加_UNICODE,UNICODE

在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup

反之为MBCS(ANSI)编译。



Unicode :宽字节字符集



1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数?

可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。

调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。



2. 如何对DBCS(双字节字符集)字符串进行操作?

函数 描述

PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址

PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址

BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值



3. 为什幺要使用Unicode?

(1) 可以很容易地在不同语言之间进行数据交换。

(2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。

(3) 提高应用程序的运行效率。

Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那幺系统首先要将字符串转换成Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串,然后将结果返回给你的应用程序。进行这些字符串的转换需要占用系统的时间和内存。通过从头开始用Unicode来开发应用程序,就能够使你的应用程序更加有效地运行。

Windows CE 本身就是使用Unicode的一种操作系统,完全不支持ANSI Windows函数

Windows 98 只支持ANSI,只能为ANSI开发应用程序。

Microsoft公司将COM从16位Windows转换成Win32时,公司决定需要字符串的所有COM接口方法都只能接受Unicode字符串。



4. 如何编写Unicode源代码?

Microsoft公司为Unicode设计了WindowsAPI,这样,可以尽量减少代码的影响。实际上,可以编写单个源代码文件,以便使用或者不使用Unicode来对它进行编译。只需要定义两个宏(UNICODE和_UNICODE),就可以修改然后重新编译该源文件。

_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。



5. Windows定义的Unicode数据类型有哪些?

数据类型 说明

WCHAR Unicode字符

PWSTR 指向Unicode字符串的指针

PCWSTR 指向一个恒定的Unicode字符串的指针

对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。

ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。



6. 如何对Unicode进行操作?

字符集 特性 实例

ANSI 操作函数以str开头 strcpy

Unicode 操作函数以wcs开头 wcscpy

MBCS 操作函数以_mbs开头 _mbscpy

ANSI/Unicode 操作函数以_tcs开头 _tcscpy(C运行期库)

ANSI/Unicode 操作函数以lstr开头 lstrcpy(Windows函数)

所有新的和未过时的函数在Windows2000中都同时拥有ANSI和Unicode两个版本。ANSI版本函数结尾以A表示;Unicode版本函数结尾以W表示。Windows会如下定义:

#ifdef UNICODE

#define CreateWindowEx CreateWindowExW

#else

#define CreateWindowEx CreateWindowExA

#endif // !UNICODE



7. 如何表示Unicode字符串常量?

字符集 实例

ANSI “string”

Unicode L“string”

ANSI/Unicode T(“string”)或_TEXT(“string”)if( szError[0] == _TEXT(‘J’) ){ }



8. 为什幺应当尽量使用操作系统函数?

这将有助于稍稍提高应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于这些函数使用得很多,因此,在应用程序运行时,它们可能已经被装入RAM。

如:StrCat,StrChr,StrCmp和StrCpy等。



9. 如何编写符合ANSI和Unicode的应用程序?

(1) 将文本串视为字符数组,而不是chars数组或字节数组。

(2) 将通用数据类型(如TCHAR和PTSTR)用于文本字符和字符串。

(3) 将显式数据类型(如BYTE和PBYTE)用于字节、字节指针和数据缓存。

(4) 将TEXT宏用于原义字符和字符串。

(5) 执行全局性替换(例如用PTSTR替换PSTR)。

(6) 修改字符串运算问题。例如函数通常希望在字符中传递一个缓存的大小,而不是字节。这意味着不应该传递sizeof(szBuffer),而应该传递(sizeof(szBuffer)/sizeof(TCHAR)。另外,如果需要为字符串分配一个内存块,并且拥有该字符串中的字符数目,那幺请记住要按字节来分配内存。这就是说,应该调用

malloc(nCharacters *sizeof(TCHAR)),而不是调用malloc(nCharacters)。



10. 如何对字符串进行有选择的比较?

通过调用CompareString来实现。

标志 含义

NORM_IGNORECASE 忽略字母的大小写

NORM_IGNOREKANATYPE 不区分平假名与片假名字符

NORM_IGNORENONSPACE 忽略无间隔字符

NORM_IGNORESYMBOLS 忽略符号

NORM_IGNOREWIDTH 不区分单字节字符与作为双字节字符的同一个字符

SORT_STRINGSORT 将标点符号作为普通符号来处理



11. 如何判断一个文本文件是ANSI还是Unicode?

判断如果文本文件的开头两个字节是0xFF和0xFE,那幺就是Unicode,否则是ANSI。



12. 如何判断一段字符串是ANSI还是Unicode?

用IsTextUnicode进行判断。IsTextUnicode使用一系列统计方法和定性方法,以便猜测缓存的内容。由于这不是一种确切的科学方法,因此 IsTextUnicode有可能返回不正确的结果。



13. 如何在Unicode与ANSI之间转换字符串?

Windows函数MultiByteToWideChar用于将多字节字符串转换成宽字符串;函数WideCharToMultiByte将宽字符串转换成等价的多字节字符串。



14. Unicode和DBCS之间的区别

Unicode使用(特别在C程序设计语言环境里)“宽字符集”。「Unicode中的每个字符都是16位宽而不是8位宽。」在Unicode中,没有单单使用8位数值的意义存在。相比之下,在“双位组字符集”中我们仍然处理8位数值。有些位组自身定义字符,而某些位组则显示需要和另一个位组共同定义一个字符。

处理DBCS字符串非常杂乱,但是处理Unicode文字则像处理有秩序的文字。您也许会高兴地知道前128个Unicode字符(16位代码从0x0000到0x007F)就是ASCII字符,而接下来的128个Unicode字符(代码从0x0080到0x00FF)是ISO 8859-1对ASCII的扩展。Unicode中不同部分的字符都同样基于现有的标准。这是为了便于转换。希腊字母表使用从0x0370到0x03FF的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代码。中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码。Unicode的最大好处是这里只有一个字符集,没有一点含糊。



15.衍生标准

Unicode是一个标准。UTF-8是其概念上的子集,UTF-8是具体的编码标准。而UNICODE是所有想达到世界统一编码标准的标准。UTF-8标准就是Unicode(ISO10646)标准的一种变形方式,

UTF的全称是:Unicode/UCS Transformation Format,其实有两种UTF,一种是UTF-8,一种是UTF-16,

不过UTF-16使用较少,其对应关系如下:

在Unicode中编码为 0000 - 007F 的 UTF-8 中编码形式为: 0xxxxxxx

在Unicode中编码为 0080 - 07FF 的 UTF-8 中编码形式为: 110xxxxx 10xxxxxx

在Unicode中编码为 0000 - 007F 的 UTF-8 中编码形式为: 1110xxxx 10xxxxxx 10xxxxxx



utf-8是unicode的一个新的编码标准,其实unicode有过好几个标准.我们知道一直以来使用的unicode字符内码都是16位,它实际上还不能把全世界的所有字符编在一个平面系统,比如中国的藏文等小语种,所以utf-8扩展到了32位,也就是说理论在utf-8中可容纳二的三十二次方个字符. UNICODE的思想就是想把所有的字符统一编码,实现一个统一的标准.big5、gb都是独立的字符集,这也叫做远东字符集,把它拿到德文版的WINDOWS上可能将会引起字符编码的冲突....早期的WINDOWS默认的字符集是ANSI.notepad中输入的汉字是本地编码,但在NT/2000内部是可以直接支持UNICODE的。notepad.exe在WIN95和98中都是ANSI字符,在NT中则是UNICODE.ANSI和UNICODE可以方便的实现对应映射,也就是转换 ASCII是8位范围内的字符集,对于范围之外的字符如汉字它是无法表达的。unicode是16位范围内的字符集,对于不同地区的字符分区分配,unicode是多个IT巨头共同制定的字符编码标准。如果在unicode环境下比如WINDOWS NT上,一个字符占两字节16位,而在ANSI环境下如WINDOWS98下一个字符占一个字节8位.Unicode字符是16位宽,最多允许65,535字符,数据类型被称为WCHAR。

对于已有的ANSI字符,unicode简单的将其扩展为16位:比如ANSI"A"=0x43,则对应的UNICODE为

"A"= 0x0043

而ASCII用七存放128个字符,ASCII是一个真正的美国标准,所以它不能满足其他国家的需要,例如斯拉夫语的字母和汉字于是出现了Windows ANSI字符集,是一种扩展的ASCII码,用8位存放字符,低128位仍然存放原来的ASCII码,

而高128位加入了希腊字母等

if def UNICODE

TCHAR = wchar

else

TCHAR = char

你需要在Project\Settings\C/C++\Preprocesser definitions中添加UNICODE和_UNICODE

UINCODE,_UNICODE都要定义。不定义_UNICODE的话,用SetText(HWND,LPCTSTR),将被解释为SetTextA(HWND,LPTSTR),这时API将把你给的Unicode字符串看作ANSI字符串,显示乱码。因为windows API是已经编译好存在于dll中的,由于不管UNICODE还是ANSI字符串,都被看作一段buffer,如"0B A3 00 35 24 3C 00 00"如果按ANSI读,因为ANSI字串是以'\0'结束的,所以只能读到两字节"0B A3 \0",如果按UNICODE读,将完整的读到'\0\0'结束。

由于UNICODE没有额外的指示位,所以系统必须知道你提供的字串是哪种格式。此外,UNICODE好象是ANSI C++规定的,_UNICODE是windows SDK提供的。如果不编写windows程序,可以只定义UNICODE。



开发过程:

围绕着文件读写、字符串处理展开。文件主要有两种:.txt和.ini文件

1. 在unicode和非unicode环境下字符串做不同处理的,那么需要参考以上9,10两条,以适应不同环境得字符串处理要求。

对文件读写也一样。只要调用相关接口函数时,参数中的字符串前都加上_TEXT等相关宏。如果写成的那个文件需要是unicode格式保存的,那么在创建文件时需要加入一个字节头。

CFile file;

WCHAR szwBuffer[128];

WCHAR *pszUnicode = L"Unicode string\n"; // unicode string

CHAR *pszAnsi = "Ansi string\n"; // ansi string

WORD wSignature = 0xFEFF;

file.Open(TEXT("Test.txt"), CFile::modeCreate|CFile::modeWrite);

file.Write(&wSignature, 2);

file.Write(pszUnicode, lstrlenW(pszUnicode) * sizeof(WCHAR));

// explicitly use lstrlenW function

MultiByteToWideChar(CP_ACP, 0, pszAnsi, -1, szwBuffer, 128);

file.Write(szwBuffer, lstrlenW(szwBuffer) * sizeof(WCHAR));

file.Close();

//以上这段代码在unicode和非unicode环境下都有效。这里显式的指明用Unicode来进行操作。

2. 在非unicode环境下,缺省调用的都是ANSI格式的字符串,此时TCHAR转换为CHAR类型的,除非显式定义WCHAR。所以在这个环境下,如果读取unicode文件,那么首先需要移动2个字节,然后读取得字符串需要用MultiByteToWideChar来转换,转换后字符串信息才代表unicode数据。

3. 在unicode环境下,缺省调用得都是unicode格式得字符串,也就是宽字符,此时TCHAR转换为WCHAR,相关得API函数也都调用宽字符类型的函数。此时读取unicode文件也和上面一样,但是读取得数据是WCHAR的,如果要转换成ANSI格式,需要调用WideCharToMultiByte。如果读取ANSI的,则不用移动两个字节,直接读取然后视需要转换即可。



某些语言(如韩语)必须在unicode环境下才能显示,这种情况下,在非unicode环境下开发,就算用字符串函数转换也不能达到显示文字的目的,因为此时调用得API函数是用ANSI的(虽然底层都是用UNICODE处理但是处理结果是按照程序员调用的API来显示的)。所以必须用unicode来开发。

转载于:https://www.cnblogs.com/bluesky_blog/archive/2009/08/04/1538872.html

相关文章:

编程学习网站收集

目录 1. 菜鸟教程 1.1 Java 教程 1.2 HTML 教程 1.3 CSS 教程 1.4 JavaScript 教程 1.5 JSP 教程 1.6 Servlet 教程 1.7 jQuery 教程 1.8 AJAX 教程 1.9 MySQL 教程 2. 易百教程 3. w3school 在线教程 1. 菜鸟教程 菜鸟教程 (www.runoob.com) 提供了编程的基础技术…

js短路表达式

今天碰见个题目,感觉短路表达式很好用。 题目: 定义一个计算圆面积的函数area_of_circle(),它有两个参数:r: 表示圆的半径;pi: 表示π的值,如果不传,则默认3.14function area_of_circle(r, pi) …

51nod 1065 最小正字段和 解决办法:set存前缀和,二分插入和二分查找

题目: 这题要求大于0的最小字段和,常规O(n)求最大字段和的方法肯定是没法解的。 我的解法是:用sum[i]存前i项的和,也就是前缀和。 这题就变成了求sum[j]-sum[i]的大于0的最小值( j > i )。 我们可以看到…

著名作者网站论文下载

http://www.cs.wright.edu/~agoshtas/ardyCV.htmlhttp://www.cse.msu.edu/~stockman/http://www.dkfz.de/tbi/people/homepages/rohr/转载于:https://www.cnblogs.com/stoneresearch/archive/2008/11/06/4336753.html

内存与进程管理

这一节的内容有点杂,只能自己手动输入了 1.uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。 uname -a显示全部信息 2.cat /etc/redhat-release 查看当前系统版本 3.free -m / -g 查看内存使用状况&…

Python的闭包和装饰器

什么是闭包 python中函数名是一个特殊的变量,它可以作为另一个函数的返回值,而闭包就是一个函数返回另一个函数后,其内部的局部变量还被另一个函数引用。 闭包的作用就是让一个变量能够常驻内存。 def count():fs []for i in range(1, 4):de…

用@Data注解的形式替代类中的setter、getter方法

目录 1. 封装 2. Data注解介绍 3. Lombok的使用 1. 封装 在类中,为了增强数据的安全性和隐蔽性,通常会对数据和与数据有关的方法进行封装; 封装的步骤: 1、将类中的属性设置为private(私有的),只能本类才能访问&…

note-在VisualStudio中使用正则表达式

前言:本来昨天已经写了,但由于意外给搞丢失了,由于刚刚看了这篇文章知道了一些真相;现在的心理状态已经和昨天不一样了,昨天是满心的高兴,对VisualSduio很有好感,当时自认为是没有把正则学好&am…

AS 发展小计

2000 -- 2003: ActionScript 1.0, 和 Flash 5.0 一起发布;变成可文本编辑(以前是从对话框和下拉菜单中选择,当然,那个时候不叫AS)添加 switch 语句和strict equality 操作;2003 -- 2006: ActionScript 2.0 …

2019年3月8日比赛(知网是什么)

第一题(对冒泡排序原理的理解) 题意:第一行的输入代表下一行输入的无序数的数的个数,然后下一行,数字与上一行数字对应,若对应为1则该数可以与下一个数交换位置。 根据冒泡排序可知,任何一个无序…

Mybatis 中$与#的区别

1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id #{id},当前端把id值1,传入到后台的时候,就相当于 select id,name,age from student where id 1. 2 $是将传入的数据直接显示生成sql语句,eg:select…

UUID.randomUUID()生成唯一识别码

目录 1、UUID 的概念 2、UUID的组成 3、UUID.randomUUID()使用 1、UUID 的概念 UUID(Universally Unique Identifier):通用唯一识别码,是一种软件建构的标准。 UUID 目的是让分布式系统中的所有元素,都能有唯一的…

人生应该记住的16句话(转载)

1、再烦,也别忘微笑;再急,也要注意语气; 再苦,也别忘坚持;再累,也要爱自己。 2、 低调做人,你会一次比一次稳健;高调做事,你会一次比一次优秀。 3、 成功的时…

转:一个简单的基于WEB的QTP自动化测试框架-SAFFRON

来源: http://www.itestware.com/ctest/index.php?optioncom_content&viewarticle&id62:webqtp-saffron&catid35:testing_is_believing 06年的时候,Mercury 提供了一个QTP自动化测试框架原型 - SAFFRON,可用于指导我们开发基于WEB的自动化测…

积极学习的朋友

自从去年7月反省之后,认识的朋友逐渐多了,天下那么大,优秀的人很多,通过网络认识是一个很不错的途径,经过一段时间后,圈子范围扩大了很多,行业上和非行业上都有涉及,对自己认知冲击很…

hive向表格中插入数据并分析语句

1,---导入mds_imei_month_info set hive.exec.max.dynamic.partitions 100000; //最大的动态分区表 set hive.support.concurrencyfalse; //是否支持并发 set hive.exec.max.dynamic.partitions.pernode 100000; //each mapper or reducer可以创建的最大动态分区数 …

资源与工具下载

Red Hat Linux镜像文件 链接:https://pan.baidu.com/s/1N3Khh6pyKpMkOnkEL-U9_A 提取码:0hnu jdk1.8(32位64位)安装版 链接:https://pan.baidu.com/s/15Jm6Ca6IBR3OEauge-4FYQ 提取码:uo2l Tomcat 8(32位64位)安装版 链接…

Global.asax中Application_Error无法执行

Global.asax中Application_Error无法执行问题解决后才发现这句是错误的,之前用VS2005开发后发布到服务器上也出现这种情况,后来莫名 的好了(是解决了没发现原因)。之前的文章链接后来用catch捕捉后真相大白,System.Security.SecurityExceptio…

虚拟化如何做实?详解戴尔2.0版解决方案

继5月份推出虚拟化解决方案后,2008年9月16日,戴尔又宣布推出包括新款服务器、存储产品,管理工具及基础设施咨询服务在内的全新虚拟化2.0解决方案,致力于为客户提供通向虚拟化的智慧之道。戴尔的虚拟化解决方案包括哪些具体的内容&…

Socket/ServerSocket 选项

Socket/ServerSocket 选项 原文:Socket/ServerSocket 选项在网络编程中,Socket/ServerSocket有一些选项用来自定义一些行为,现在分享一下。Socket选项 1.TCP_NODELAY 在Socket发送数据时,默认情况下,数据会先进入缓冲区&#xff0…

MySQL主从复制的常用拓扑结构

1、复制的常用拓扑结构 复制的体系结构有以下一些基本原则: (1) 每个slave只能有一个master; (2) 每个slave只能有一个唯一的服务器ID; (3) 每个master可以有很多slave; (4) 如果你设置log_slave_updates,…

统计java文件中的代码行数

统计Java代码行数工具类 —— CodeCounterUtil.java 统计指定目录下的java文件中代码行数 —— public static int getCodeNumFromFolder(String filePath)统计具体文件中的java代码行数 —— public static int getCodeNumFromFile(String filePath)import java.io.Buf…

jQuery插件thickbox在ie下垂直居中问题

jQuery 插件 thickbox 3.1 在ie下总不能垂直居中,按“http://jamazon.co.uk/web/2008/03/17/thickbox-31-ie7-positioning-bug/”上的方法改了也没用,咋办? 我是这样改的:管它ie6还是ie789,一视同仁! 原284…

dos分区:C语言建立多个PRI DOS分区

dos分区:C语言建立多个PRI DOS分区 来源: 发布时间:星期四, 2008年9月25日 浏览:127次 评论:0一、引言 在DOS系统下,在计算机应用培训中因培训要求不同, 对软件的要求也不同,由于学员的误操作,存放在硬盘上的软件和重要数据容 易被…

简单几步让CentOS系统时间同步

在使用CentOS系统的时候,我们可能会遇到时间不准的问题,那我们如何解决这个我问题呢,下面就来教大家一个CentOS系统时间同步的方法,希望大家可以解决自己所存在的疑问。 CentOS系统时间同步的步骤如下: 新装的CentOS系…

挨踢人生路--记我的10年18家工作经历 - 后记

挨踢人生路--记我的10年18家工作经历 - 前言挨踢人生路--记我的10年18家工作经历 - 从大学说起――不得不说的一些事情挨踢人生路--记我的10年18家工作经历 - 第1家公司,在老家的工作挨踢人生路--记我的10年18家工作经历 &#xf…

FileUtil

文件工具类 —— FileUtil.java 获取Web工程的根目录 —— String getBasePath()方法获取文件名称 —— public static String getFileName(String filePath)方法获取文件名称前缀 —— public static String getPrefixOfFileName(String filePath)方法获取文件名后缀(…

C# Sato CL4NX打印机发送SBPL指令打印表面信息、RFID芯片数据写入

待更新..转载于:https://www.cnblogs.com/zh7791/p/7650073.html

同步SQL Server 2000 数据库

为什么要同步SQL Server 2000 数据库,它都用在什么场合 数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份 数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡 数据实时备份同步,数据库服务器…

【Leecode】两数相加

学习了链表结构,链表中元素的访问,对象指针的初始化与赋值,链表的创建(多个节点链接起来),进位计算的表达。 100ms /*** Definition for singly-linked list.* struct ListNode {* int val;* ListN…