admin管理员组

文章数量:1615676

MS 文件长度

word 文档的最大路径长度为254字符,Excel为218,
Microsoft Word: The total length of the path and the file name, including file name extension, exceeds 254 characters.
Microsoft PowerPoint: The total length of the path and the file name, including file name extension, exceeds 258 characters.
Microsoft Access: The total length of the path and the file name, including file name extension exceeds 258 characters.
Microsoft Outlook: The total length of the path and the file name, including file name extension, exceeds 258 characters.
Microsoft Excel: The total length of the path and the file name, including file name extension, exceeds 218 characters. 

fprintf

#include <stdio.h>
  int fprintf( FILE *stream, const char *format, ... );
  fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

类型转换函数

atof(将字符串转换成浮点型数)
atoi(将字符串转换成整型数)
atol(将字符串转换成长整型数)
strtod(将字符串转换成浮点数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII 码字符)
toupper(将小写字母转换成大写字母)
tolower(将大写字母转换成小写字母)

编译器

Linux CC与Linux GCC的区别概括介绍。从名字上看,老的unix系统的CC程序叫做C Compiler。但GCC这个名字按GNU的说法叫做Gnu Compiler Collection。因为gcc包含很多编译器(C, C++, Objective-C, Ada, Fortran,and   Java)。所以它们是不一样的,一个是一个古老的C编译器,一个是编译器的Gnu的编译器的集合(Gcc里的C编译器比CC强大太多了,所以你没必要用 CC)。当你调用gcc时不一定是调用的C/C++编译器,是gcc根据文件扩展名自动识别并调用对应的编译器,具体可查阅$man gcc。
你是下载不到CC的,原因是:CC来自于昂贵的Unix系统,CC是商业软件,要想用你需要打电话,写订单,而不是打开你的Browser去download。
linux下的 cc是gcc的符号链接。可以通过$ls –l /usr/bin/cc来简单察看.而编译时看到的控制台输出CC则是一个指向gcc的变量,该变量是make程序的内建变量,就算你在Makefile 中没有CC= ,该变量也会存在,并默认指向gcc。cc的符号链接和变量存在的意义在于源码的移植性,可以方便的用GCC来编译老的用cc编译的unix软件,甚至连 Makefile都不要改。而且也便于linux程序在unix下编译。
近几年的一个新情况是越来越多的unix用户,据我所知像solaris,bsd用户也不太使用CC了,人们都一定要装一个gcc,用它来编译C/C++程序。原因显而易见,gcc足够强大,健壮。支持估计目前为止只有它支持的ISO c/c++ 新特性。当然你最好不要使用night版本的gcc。

Q5:
Makefile是什么东东?有什么用?怎么用?
makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接-----但是不是所有的文件都需要重新编译,makefile能够纪录文件的信息,决定在链接的时候需要重新编译哪些文件!

在unix系统下,makefile是与make命令配合使用的。

 有了这个Makefile文件,不论我们什么时候修改了源程序当中的什么文件,我们只要执行make命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其它的文件它连理都不想去理的。


linux 下查找CC路径
  which   cc   或者   which   CC   

 堆和栈

http://www.360doc/content/11/0727/10/1317564_136091656.shtml
内存分配方式:
1) 静态内存分配。
程序编译时分配好,存在程序整个运行期间。
已经初始化的变量、全局变量,Static变量
2) 栈;函数执行结束时自动释放,函数内局部变量的存储单元。
3) 堆:malloc 和 new方式申请, 自己负责free和delete.

以下写法是不对的, 局部变量存储在栈区, 是会被自动清除的。
char* get_str(void)
{
    char str[]="testing...";
    return str;
}
但是调用结果有可能是对的, 因为还没来得急释放。 在VS下是会报warning.

但是以下这样是可以的.
保存在静态内存区
char* get_str(void)
{
    char* str="testing...";
    return str;
}
保存在堆
char* get_str3(void)
{
    char* str;
    str=(char *)malloc(100);
    if(!str)
        return NULL;
    strcpy(str,"testing");
    return str;
}
注意: 对于int型等基本类型的话,像  int* i; *i=1; 这样的定义是不对的。
char   a[5]= "aaa ";//在栈中分配内存
char*   b=   "bbb ";//在常量存储区分

数组名和指针变量

介绍数组名和指针变量的一个好的文章
http://blog.csdn/megaboy/article/details/482782

3. Web 窗体
自动回送 - AutoPostBack
doPostBack()

视图状态 -- EnableViewState
  web.config 设置maxPageStateFieldLength  视图状态的最大尺寸。

2.
内联代码
代码隐藏==》aspx 和 .cs
aspx 如何找到 .cs  ?
Page 指令定义的。 Inherits 来指示一个已经预编译的类的名称
partial --分部类-将一个单一的类分割到多个源代码文件中去, 这样的话, 使用inherits 和CodeFile来找到代码隐藏的文件

顺便发现一个卸载framework的工具,由于framework 2.0会在某盘留下安装文件夹,清理电脑的时候,如果不慎当垃圾处理掉了,就会无法正常卸载。工具名字叫 dotnetfx20_cleanup_tool ,百度下就有的下。 

1. 是编译执行
源码--》 MSIL(中间语言,C#,Visual Basic编译后的都相同)--》JIT(Just-In-Time,即时编译)

2. IL代码反编译
Vistual Studio中含有, Program Files\Microsoft Files\Microsoft SDKs\V7.0A\bin   ildasm.exe 
工具 Reflector,  http://www.red-gate/products/reflector

3. 代码混淆器
visual studio 包含一个简化版本的混淆器 -- Dotfuscator

4. CLE -- Common Language Runtime 公共语言运行时

5. 页面首次加载时执行
 protected void Page_Load(object sender, EventArgs e)

C#

包括四个组成部分:
1. VOS类型系统
2. 元数据
3. 公共语言规范
4. 虚拟执行系统

数据类型
1. 整数类型
sbyte
短字节型
8位有符号
-128 ~ 127
byte
字节型
8位无符号
0 ~ 255
short
短整型
16位有符号

ushort
无符号短整型
16位无符号

int
整型
32位无符号

uint
无符号整型
32位有符号

long
长整型
64位有符号

ulong
无符号长整型
64位无符号




2. 布尔类型
true false


3. 实数类型


float
单精度
精度7
1.5*10(-45次方)~3.4*10(38次方)
double
双精度
精度15-16
5.0*10(-324次方)~1.7*10(308次方)
decimal
十进制类型
28
1.0*10(-28次方)~7.9*10(28次方)


decimal d_value = 1.0m;
 
     4. 字符类型   
    char c  = 'A';

    char c = '\x0032';
    char c = '\u0032';

     5. 结构类型
   
     struct PhoneBook{
       public string name;
       public string phone;
       public string address;
     }
 
     6. 枚举类型
     enum WeekDay {Sunday,Monday};


     7. 引用类型
     类,代表,数组,接口
变量和常量
1. 命名变量
1) 变量名必须以字母开头 2) 变量名只能有字母、数字和下划线组成 3) 变量名不能与C#中的关键字名称相同  4) 变量名不能与C#中的数据库名称
相同 2)允许在变量名加前缀 "@"

变量类型
静态变量,非静态变量,数组元素,值参数,引用参数,输出参数,局部变量

六: 类型转换
其他整型值不能自动转换为char 类型
隐式枚举转换允许把十进制整数0转换成任何枚举类型,对应其他的整数则不存在这种隐式转换。

is操作符
动态地检查运行时对象类型是否和给定的类型兼容。
Console.WriteLine(1 is int);

as 操作符
用于通过引用转换或装箱转换将一个值显式地转换成指定的引用类型。不像显示类型转换, as 不会产生任何异常,如果转换不可以进行,那么结果值为null.

checked 和 unchecked 操作符
用于算术运算时控制当前环境中的溢出检查。

C++

1.
http://www.cxybl/html/bcyy/c/201109073086.html
在C++中,内存分为5个区, 堆、栈、自由存储区、全局/静态存储区和常量存储区

2. 什么是引用
对象的别名
引用经常用于“按引用传递”

 void swap(int& i, int& j)
 {
   int tmp = i;
   i = j;
   j = tmp;
 }
 
 int main()
 {
   int x, y;
   // ...
   swap(x,y);
 }

此处的 i 和 j 分别是main中的 x 和 y。换句话说,i 就是 x —— 并非指向 x 的指针,也不是 x 的拷贝,而是 x 本身。对 i 的任何改变同样会影响 x,反之亦然。

OK,这就是作为一个程序员所认知的引用。现在,给你一个不同的角度,这可能会让你更糊涂,那就是引用是如何实现的。典型的情况下,对象 x 的引用 i 是 x 的机器地址。但是,当程序员写 i++ 时,编译器产生增加 x 的代码。更详细的来说,编译器用来寻找 x 的地址位并没有被改变。C 程序员将此认为好像是 C 风格的按指针传递,只是句法不同 (1) 将 & 从调用者移到了被调用者处,(2)消除了*s。换句话说,C 程序员会将 i 看作为宏 (*p),而 p 就是指向 x 的指针(例如,编译器自动地将潜在的指针解除引用;i++被改变为 (*p)++;i = 7 被自动地转变成 *p = 7)。

很重要:请不要将引用看作为指向一个对象的奇异指针,即使引用经常是用汇编语言下的地址来实现的。引用就是对象。不是指向对象的指针,也不是对象的拷贝,就是对象。  

问题
#include<iostream>
int main()
{
        int i=5;
        int& r=i;
        r=7;
        std::cout<< "i的值是:" << i <<std::endl;


        return 0;
}

第二句不是把i的值赋给r的地址了吗?最后i为什么是7呢?希望明白的人讲解一下!
解答

这个问题有两个子问题,这两个问题问得都很好,因为它们正反应了C++中的引用对初学者的困惑。对第一个问题的回答:r不是i的地址,r是一个整型数据引用(int&),它是i的别名。请大家回头看看上面的代码,现在思考一个问题:r的类型是什么?我们知道i的类型是int。

如果你可以正确回答,r的类型是整型数据的引用(不是指针,更不是指针),那么说明你对类型的概念已经比较清楚了。C++中的引用实际上是一个抽象的东西,它自己不会有什么内存分配,它只是它所引用的对象的一个别名。大家可能有这样的经历,就是我们每个人可能都一个正式的名字,比如张三是你的正式名字,可是往往在家里我们还会一个小名,比如张三的小名字可能是“小三”。这个正式的名字“张三”就是上面的代码中的“i”,而小名“小三”就是上面代码中的“r”,尽管名字不一样但是代表的对象是一样的,就像“张三”、“小三”都是指一个人一样。

现在大家明白了,“r”和“i”指是同一个人──同一个对象,那么大家还会不明白后面一个问题,为什么“i”值会是7呢?因为“r”的值被我们赋值为7了,而“r”就是“i”。

Visual Studio

调式
 现象:在vs2008中,建立一个空项目,添加一个c++文件main
#include<iostream>
using namespace std;
int main()
{
cout << "hello"<<end;


return 0;
}
该程序能够编译得过,但是执行,无论是debug还是release,都很出现

“无法找到“xxx.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”

从网上找了一些解答,终于把这个问题给解决了。只要是“建立项目的时候不应建立空项目,而应当建立一个“win32控制台应用程序”。这样确实可以解决问题。只要你选择的是这个"win32控制台应用程序"则在附加选项里面选不选上“空项目”都可以

网上还有这样的解答:

其实问题在于,在空项目中不生成调试文件pdb,所以无法调试。
要让项目生成pdb文件,需要更改:
项目属性,configuration properties->linker->Generate Debug Info 从 no 改为 yes
但这样还是不够的,还需要更改:
项目属性,configuration properties->c/c++->debug information format为/ZI
项目属性,configuration properties->c/c++->optimization为Disabled
因为为了生成这个文件,需要设定debug信息的格式并关掉O2,还要更改linker生成调试信息的开关
       Qt的项目经常出现的问题,所以转载了。 

编译的时候在其他机器能够使用的话,需要选择。。。
1. Visual Studio 提供了两种创建ASP.NET Web应用程序的方法
基于项目的开发==>生成一个.csproj的项目文件, 它记录项目中的文件并保存一些调试设置。运行Web项目是, VS在启动Web浏览器前把所有代码编译成一个程序集。
无项目文件的开发==> VS不预编译代码, 而是由ASP.NET在第一次请求页面的时候编译网站。

2. .slu 和 .suo
保存位置: C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\项目名
这两个文件是解决方案文件, 提供一些不直接和ASP.NET相关的VS特定的特性,如调试设置。
断点信息会保持在.suo文件里
这两个文件的位置可以选择解决方案之后, 文件--》 另存为  保存到指定的位置。

3. 选择模板
ASP.NET网站--》 创建完整的ASP.NET网站,提供基本的框架。 这个网站包含一个定义整体布局的母版页(包含页头,页脚和菜单栏)。 还有一个Accounts文件夹,其中包括用于注册、登录和修改密码的页面, 另外还有一个Scripts文件夹,其中包含用于客户端JavaScript和 JQuery库。
ASP.NET 空网站, 几乎全空的网站, 只有一个简单的web.config配置文件。
ASP.NET 动态数据实体网站--》使用实体模板访问后端的数据库。
WCF服务--》创建WCF服务--远程客户端(如Windows应用程序)可以调用的服务端方法库。
ASP.NET报表网站-->创建使用Report View控件和SQL Server Reporting Service的ASP.NET网站。
4. 
.aspx -->  ASP.NET网页文件
.ascx  --> 用户控件
.asmx 或 .svc --》Web服务
web.config --> 配置文件
global.asax ->全局应用程序文件
.cs --> 代码隐藏文件

5.Web Development Helper

字符转码

字符编码介绍
http://lemonmilk.blog.51cto/499577/105942
http://space.itpub/178931/viewspace-353174
http://witmax/character-encoding-notes.html
http://www.beijixing001/post/644.html


UTF-8->Unicode
 http://wenwen.soso/z/q220009327.htm


字符串处理 - ANSI - Unicode - UTF8 转换
http://hi.baidu/end2012/blog/item/9ff286df5d57bc53cdbf1ab9.html


UTF-8, Unicode, GB2312格式串转换之-C语言版
http://wwwblogs/Kane_zzt/archive/2008/12/17/1356955.html


UTF-8、UTF-16、UTF-32之间的编码转换
http://blog.csdn/jhqin/archive/2010/06/22/5687505.aspx


在LINUX上进行编码转换时,既可以利用iconv函数族编程实现
http://wwwblogs/cy163/archive/2007/06/19/789711.html


2. Base64转码
http://wwwblogs/midea0978/archive/2007/05/22/755826.html


3. C语言中文本文件与二进制文件的区别是什么
http://blog.csdn/fanyuna/archive/2010/04/15/5490962.aspx


字符编码
http://baike.baidu/view/1204863.htm


UTF-8, Unicode, GB2312格式串转换之C语言版
http://wwwitblog/wujian-IT/archive/2007/12/13/37671.html


oracle 字符集
http://space.itpub/519536/viewspace-626952


windows下C语言实现UTF-8与GB2312互换
http://hi.baidu/%C2%B7%C4%CF%C6%BD/blog/item/dbe30d010e4af2007bec2cea.html


//
输出CSV文件后,用excel打 开所有中文都显示为乱码。
原因是excel默认是以中文编码打开文件的,而数据库的数据都是UTF-8编码
所以决定在写入到CSV之前,对中文消息进行编码的转换,最开始用的是gb2312:


    notice['content']=data.content.encode('gb2312')


本机测试输出CSV文件,打开,中文正常显示,以为问题就此解决。
后来放到服务器上,测试,输出CSV时出现以下错误:


    'gb2312' codec can't encode character u'\u56e7' in position 0: illegal multibyte sequence
    The string that could not be encoded/decoded was: 囧


搜索后发现gb2312对一些很生僻的中文字并不支持,比如 “囧” “苶”
然后自己写了几行代码来验证是否真的不支持:


    #coding:utf-8
    s=u"囧"
    b=u"我"
    print b.encode("gb2312")
    print s.encode("gb2312")


输出:


    我
    Traceback (most recent call last):
    File "test.py", line 6, in
    print s.encode("gb2312")
    UnicodeEncodeError: 'gb2312' codec can't encode character u'\u56e7' in position 0: illegal multibyte sequence


可以看到“我”被正确解码,而“囧”字解码时却出现了UnicodeEncodeError,果然够囧的…


解决方法:
将gb2312替换为GBK或者GB18030就好了


    notice['content']=data.content.encode('GBK')

本文标签: 拾贝