分类 编程 下的文章

VS2010出现FileTracker : error FTK1011编译错误的解决办法

<div><p>FileTracker : error FTK1011编译错误的解决办法有三个。</p><p>方法一:把目标框架改为Framewotk=4.0
方法二:新增环境变量TRACKFILEACCESS=false:
操作步骤:右击"我的电脑"(或"计算机")-->"高级"-->"环境变量"-->"新建系统变量"-->填写"变量名"为"TRACKFILEACCESS",变量值为"false",保存即可.</p><p></p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>方法三:</p><p>打开文件: C:WINDOWSMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.Targets</p><p>找到</p><p><GenerateResource</p><p>…</p><p>TrackFileAccess="$(TrackFileAccess)&quot;<br />TrackerLogDirectory=&quot;$(TrackerLogDirectory)"</p><p>…</p><p></GenerateResource></p><p>删除</p><p>TrackFileAccess="$(TrackFileAccess)&quot;<br />TrackerLogDirectory=&quot;$(TrackerLogDirectory)"</p><p>三种方式均可解决这个编译时的错误。</p></div>

- 阅读剩余部分 -

推荐 15 款很棒的文本编辑器

<div><p>本文中提及的文本编辑器软件,并非全部开源,仅供参考。</p><p>1. <u>Notepad++</u>:</p><p></p><p>这是 Windows 记事本一个最好的替换产品,主要特点包括:</p><p>a. 自动完成
b. 语法高亮
c. 拖放特性
d. 搜索
e. 缩放</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>2. <u>PSPad</u>: </p><p></p><p>PSPad 是一个Windows平台上免费的适合程序员使用的编辑器。它可以让你保持上一次编辑状态,这样在你下次打开编辑器的时候可以直接显示原来的文件。此外它还支持通过FTP进行远程编辑,支持多文件的比较等。</p><p>a. 语法高亮
b. 支持多文档编辑
c. 内建 FTP 客户端
d. 完整的十六进制编辑器
e. 桌面会话保存</p><p>3. <u>Komodo</u>:</p><p></p><p>Komodo IDE可以在 Windows、Mac OS X 和 Linux 上运行,并支持通用的开源语言 —— Perl、PHP 和 Ruby。代码智能引擎非常可靠。它扫描所有语言安装找到定制扩展,比如 PEAR 模块。在项目方面,它支持与 CVS、Subversion 和 Perforce 的集成,也允许直接向服务器 FTP 传递代码。</p><p>主要特点:</p><p>a. 代码折叠
b. 即时语法检查
c. 支持多种语言
d. 跨平台支持:Windows, Linux and Mac</p><p>4. <u>Coda</u>:</p><p></p><p>只支持 Mac 平台的文本编辑器,主要特点:</p><p>a. 语法高亮
b. 行数计算
c. 自动完成
d. 自动保存代码片段</p><p>5. <u>Vim</u>:</p><p></p><p>Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。</p><p>6. <u>TextMate</u>:</p><p></p><p>Mac 平台下一款强大的文本编辑器,主要特性:</p><p>a. 代码自动完成
b. 可直接在文档中运行 SHELL 命令
c. 支持多种风格
d. 支持宏
e. 目前已提供 Windows 版本</p><p>7. <u>TotalEdit</u>:</p><p></p><p>Windows 下的免费编辑器,功能:</p><p>a. 语法高亮
b. 文件浏览器
c. 拼写检查
d. 扩展工具集成
e. 环境定制</p><p>8. <u>Gedit</u>:</p><p></p><p>这是 Linux 下的一个纯文本编辑器,但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。</p><p>9. <u>Crimson Editor</u>:</p><p></p><p>一个小型的代码编辑器,加载时间很短,主要特性:</p><p>a. 语法高亮
b. 多文档编辑
c. 拼写检查
d. 查找和替换
e. 宏</p><p>10. <u>UltraEdit</u>:</p><p></p><p>这个工具大家都非常熟悉,不再废话。</p><p>11. <u>TextPad</u>:</p><p></p><p>一款常用的文本编辑器,主要特性:</p><p>a. 多语言拼写检查
b. 自动文本完成
c. 宏录制
d. 搜索工具条</p><p>12. <u>NoteTab</u>:</p><p></p><p>便携式 HTML 编辑器,支持 Windows,特性:</p><p>a. 搜索和替换
b. Tabbed 接口
c. HTML文档格式化
d. 高便携,可在 U盘中运行
e. 快速可靠</p><p>13. <u>EditPlus</u>:</p><p></p><p>这是我喜欢的文本编辑器,特点:</p><p>a. 语法着色
b. 多语言支持
c. 内建文件浏览器
d. 自动完成
e. 拼写检查</p><p>14. <u>Nvu</u>:</p><p></p><p id="zh_p">NVU 实际上起源于Netscape,还记得那个有点笨拙的HTML编辑器Netscape Composer吗?NVU就是在它的基础上进一步开发出来的,不过,最新版本的NVU已经不是当年的那只丑小鸭,它完全能够胜任专业网页设计工作的需 求。与FrontPage和Dreamweaver这类商业HTML编辑器一样,这款软件(目前支持Windows、Linux和Mac OS平台)同时提供了源代码直接编辑和“所见即所得”这两种网页设计环境。</p><p id="zh_p">NVU严格遵循W3C联盟的标准,其生成的 HTML代码也相当紧凑,它会帮你排除错误或冗余的代码。这款编辑器提供了拼写和语 法检查功能,并且允许你采用不同的主题方案对界面进行定制。你可以自行创建并保存模版,还可以利用内置的FTP客户端把页面迅速上传到Web服务器上。</p><p>15. <u>E-TextEditor</u>:</p><p></p><p>Windows 下的编辑器,具有以下特性:</p><p>a. 键盘快捷键
b. 自动化以提升性能
c. 多语言支持
d. 修订版本控制
e. 个性化定制</p></div>

- 阅读剩余部分 -

文本流和二进制流

我们在写C程序的时候经常会涉及到对流的操作,比如说从标准输入流读取一串字符串,然后通过标准输出流输出显示在屏幕上,这也就是所谓的IO操作。那么流究竟是什么东西?下面首先对流这个概念做一下解释。

一.流(stream)的概念

计 算机有很多外部设备,比如键盘、鼠标、CD-ROM驱动器、硬盘、网络接口、视频适配器等。这些设备都和IO操作有关系,而每种设备都具有不同的特性和操 作协议。操作系统负责实现微处理器和和这些外设的通信细节,并向应用开发程序员提供更为简单和统一的IO接口,比如Linux操作系统下的 open(),read(),write()等系统调用使我们可以以文件的形式打开并读写一个设备。

- 阅读剩余部分 -

面向对象编程和面向过程编程的差异

<p>1、面向过程是是一种以过程为中心的编程思想,其思想体现在:
   
    ● 是一种最基础的方法,考虑的是实际的实现。
   
    ● 认为一个系统应该划分为数据和功能,并且数据和加工数据的功能是分离的。
   
    ● “面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>
   
    ● 分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,即面向过程最重要的是模块化的思想方法。
   
    2、面向对象主要是把事物给对象化,它的思想体现在:
   
    ● 包含了面向过程的特征,是一种更高级的解决问题的思路--从现实世界中的客观对象出发,尽量运用人类的自然思维方式(如抽象和分类)来构造软件系统
   
    ● 摒弃了数据和功能独立的特点,而是定义为一组正在交互的对象。对象可以完成一些事情(即功能,具体实现表现为类方法),也知道一些事情(即数据,具体实现表现为属性)
   
    ● 用对象的属性表示事物的静态特征,用对象的方法来表示事物的动态特征
   
    ● 运用人类的思维对事物进行分类
   
    ● 类具有封闭性,即把类内部的属性和服务隐藏起来,只有公共的服务对外是可见的
   
    ● 复杂的对象可以用简单的对象作为其构成部分(聚合的思想)
   
    ● 对事物进行分层,采用继承的思想对事物一般化和特殊化
   
    ● 对象之间通过消息进行通信,来实现对象之间的动态联系(消息机制)
   
    从上面的思想可以看出面向对象的三大基本特征:
   
    ● 封装:把客观事物封装成抽象的类。类包含数据和方法,封装即只让可信的类或者对象操作,对不可信的类进行信息隐藏。通过接口,类隐藏其中的属性和方法的具体实现。
   
    ● 继承:按层分类的概念。继承实现了子类和父类:子类可以使用父类的所有功能,并且对这些功能进行扩展。继承的过程,就是从一般到特殊的过程。
   
    ● 多态:同种事物,多种状态,即同一个接口名称,但是体现为不同的功能。多态有两种方式:覆盖和重载。覆盖是指子类重新定义父类的方法,而重载是指同一个中 允许存在多个同名方法,而这些方法的参数不同(或者是参数个数不同,或者是参数类型不同,或者两种都不同)。
   
    说了这么说,还是借用百科中的例子来说明两者的差异吧!
   
    学生早上起来的事情来说说这种面向过程吧。粗略的可以将过程拟为:
   
    (1)起床
   
    (2)穿衣
   
    (3)洗脸刷牙
   
    (4)去学校
   
    那么面向过程设计的思路为,将四个过程分为四个子程序,然后在主程序中按照这四步一步步的顺序调用子程序完成即可。而如果是用面向对象的方法的话,可能就只抽象出一个学生的类,它会包括这四个方法,但是具体的顺序就不需要体现出来。
   
    如果学生又可分为文科生、理科生的话,他们的上课科目不一样。那么面向过程就需要重新分情况来设计子模块,使得维护成本大大增加。而面向对象设计则在重用学生类的基础上只需要采用将学生类特殊化为理科生和文科生,可扩展性和维护性较高。
   
    从这个例子中可以看出,面向对象的代码更加支持重用,能降低软件开发和维护的成本,提高软件的质量。因此面向对象在实际的软件设计中应用广泛--这就是思维高度发展的必然趋势吧!</p>

- 阅读剩余部分 -

JSONObject与JSONArray的使用

1.JAR包简介

要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar 
ezmorph.jar
json-lib-2.2.2-jdk15.jar






- 阅读剩余部分 -

C# 实现置顶窗体(可实现单次置顶或持续置顶)

<div><p>//首先要说明的是与TopMost的效果不同,TopMost是属性定义,而且设置True后,如果不设为Flase则一直置顶,效果很差,</p><p>//以下方法解决了TopMost使用上的不足</p><p>//调用API
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow(); //获得本窗体的句柄
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
public static extern bool SetForegroundWindow(IntPtr hWnd);//设置此窗体为活动窗体
//定义变量,句柄类型
public IntPtr Handle1;</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>//在窗体加载的时候给变量赋值,即将当前窗体的句柄赋给变量</p><p>void Form1_Load(object sender, EventArgs e)
{
Handle1 = this.Handle;
timer2.Enabled = true;
}</p><p>//加载一个定时器控件,验证当前WINDOWS句柄是否和本窗体的句柄一样,如果不一样,则激活本窗体</p><p>private void timer2_Tick(object sender, EventArgs e)
{
if (Handle1 != GetForegroundWindow()) //持续使该窗体置为最前,屏蔽该行则单次置顶
{
SetForegroundWindow(Handle1);</p><p>//timer2.Stop();//此处可以关掉定时器,则实现单次置顶
}
}</p><pre>namespace WinFormsApp_GetForegroundWindowTest</pre><pre>{</pre><pre>publicpartialclass Form1 : Form</pre><pre> {</pre><pre>//调用API</pre><pre> [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]</pre><pre>publicstaticextern IntPtr GetForegroundWindow(); //获得本窗体的句柄</pre><pre> [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]</pre><pre>publicstaticexternbool SetForegroundWindow(IntPtr hWnd);//设置此窗体为活动窗体</pre><pre>//定义变量,句柄类型</pre><pre>public IntPtr Handle1;</pre><pre> Timer timer2 = new Timer();</pre><pre> </pre><pre>public Form1()</pre><pre> {</pre><pre> InitializeComponent();</pre><pre> }</pre><pre> </pre><pre> Form Form2;</pre><pre> </pre><pre>//在窗体加载的时候给变量赋值,即将当前窗体的句柄赋给变量</pre><pre>void Form1_Load(object sender, EventArgs e)</pre><pre> {</pre><pre> Handle1 = this.Handle;</pre><pre> timer2.Tick += new EventHandler(timer2_Tick);</pre><pre> timer2.Interval = 1000;</pre><pre> }</pre><pre> </pre><pre>//加载一个定时器控件,验证当前WINDOWS句柄是否和本窗体的句柄一样,如果不一样,则激活本窗体</pre><pre>privatevoid timer2_Tick(object sender, EventArgs e)</pre><pre> {</pre><pre>//if (Handle1 != GetForegroundWindow()) //持续使该窗体置为最前,屏蔽该行则单次置顶</pre><pre>//{</pre><pre> SetForegroundWindow(Handle1);</pre><pre> timer2.Stop();//此处可以关掉定时器,则实现单次置顶</pre><pre>//}</pre><pre> }</pre><pre> </pre><pre>privatevoid btnSetForm2ToTop_Click(object sender, EventArgs e)</pre><pre> {</pre><pre>if (Form2 == null) return;</pre><pre> </pre><pre> timer2.Enabled = true;</pre><pre> Handle1 = Form2.Handle;</pre><pre> }</pre><pre> </pre><pre>privatevoid btn_OpenForm2_Click(object sender, EventArgs e)</pre><pre> {</pre><pre> Form2 = new Form();</pre><pre> Form2.Text = "Form2";</pre><pre> Form2.Show();</pre><pre> }</pre><pre> }</pre><pre>}</pre></div>

- 阅读剩余部分 -

20分钟读懂程序集(3)

<div><p>(2)部署GAC--强命名</p><p>部署到GAC之前,一定要给这个程序集赋一个强命名,它就像是.NET中的GUID,是一个唯一标识符。它的作用是用于标识给定.NET二进制文件的发行者。</p><p>强命名的组成包括:</p><ul> <li>程序集的友好名称</li> <li>程序集的版本号</li> <li>公钥值</li> <li>等等。。 <div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div> </li></ul><p>那怎么生成强命名呢?有2种方法,一种是命令形式,另外一个VS 图形化,最后的时候附带上。</p><p>①生成强命名文件</p><p>sn.exe 工具生成一个文件 以 *.snk(strong name key)后缀的文件。</p><p>语法是:</p><blockquote><p>sn -k 文件名.snk</p></blockquote><p></p><p>②把强命名文件放进程序中</p><p>我们只需要把刚我们myTestKey.snk 告诉编译器就好了。那怎么告诉呢?就是把信息写进AssemblyInfo.cs 文件。</p><p></p><p>③安装强命名的程序集</p><p>我们需要使用gacutil.exe 工具。</p><blockquote><p>安装:gacutil.exe -i 程序集名称</p><p>查看:gacutil.exe -l 程序集名称</p><p>卸载:gacutil.exe -u 程序集名称</p></blockquote><p></p><p>现 在我们打开“C:Windowsassembly”的时候,我们并没有找到刚MyLibrary.dll。原来在.NET 4中,GAC 被分在2个地方。.NET 1.0 到.NET 3.5的基础类库 就放到“C:Windowsassembly”这里。而且.NET 4 编译下的程序集,是放到“C:WindowsMicrosoft.NETassemblyGAC_MSIL&rdquo;中。。</p><p></p><p>3.3 使用共享GAC</p><p>那我们就导入就好了!!。如果我们导入了一个共享的GAC,这个时候 我们没法再本地程序集下面找到这个程序集,只能在刚我们所说的位置。</p><p>3.4图形化配置GAC</p><p>①打开properties</p><p></p><p>我们选择 <New ...></p><p>②创建强命名文件</p><p></p><p>③显示</p><p></p></div>

- 阅读剩余部分 -

20分钟读懂程序集(2)

<div><p>三。程序集的分类</p><p>程序集分为私有程序集和共享程序集</p><p>3.1私有程序集。</p><p>(1)啥是私有程序集。顾名思义,私 就是 私有的意思。就是我们新建的项目库中保留的dll 都是私有程序集。比如,在我其中一个MyTestConsle的项目,在Bin/Debug里面都是私有程序集。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p></p><p>(2)配置私有程序集(probing 属性)</p><p>一般情况下,我们需要dll,直接copy过去,是的,这样很方便。但是,有的时候,我们需要把dll放到不同的文件中,那么这个时候,就需要进行配置。别担心,特别的简单哦。</p><p>比如,我们在C盘下面新建一个 MyTest的文件夹。我把刚的2个程序拷到这里来,并且点击MyTestProject.exe,Ok,可以运行 这样没问题。。</p><p></p><p>但是,如果我新建一个“MyAllLibraries”文件夹,把我的Lanny.dll 文件放进去,如下图,那我运行,我们都知道 肯定会报错</p><p></p><p>咋办呢?这个时候就需要我们去配置了。我们在MyTestProject.exe同级下新建一个“MyTestProject.exe.config”文件。入下图:</p><p></p><p>MyTestProject.exe.config的内容是:</p><pre> </pre><ol> <li><?xml version="1.0" encoding="utf-8" ?> </li> <li><configuration> </li> <li>  <runtime> </li> <li>    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> </li> <li>      <probing privatePath="MyAllLibraries" /> </li> <li>    </assemblyBinding> </li> <li>  </runtime> </li> <li></configuration> </li></ol><p>特别好理解,就是指明程序如果没有找到这个dll文件,那么我去哪里寻找。。。这样,我们就能顺利运行了。不截图了。</p><p>(3)使用VS IDE 进行配置</p><p></p><p>我们能新建Application Configuration File,然后进行配置。这个时候,它会自动把更新的内容更新到相应的 程序名.exe.config中。。</p><p>3.2共享程序集</p><p> (1)了解共享程序集</p><p>上一节中,我们梳理了下私有程序集,现在我们说下共享程序集。那么它们之间最大的区别是什么呢?它们的本质区别是共享程序集的一个副本可供一台机器上的多个应用程序使用。</p><p>比 如,我现在新建一个 Windows Forms的程序,里面有一个“MessageBox.Show()”方法,可是很遗憾,你没法再你新创建的应用程序下面找 到:System.Windows.Forms.dll的引用,为啥?因为它是共享的程序集。不信 你看下图,我没骗你把。</p><p></p><p>那么共享文件部署到哪里呢?它安装在GAC(Globle Assemble Cache)中,这个GAC  在下面的目录中。</p><p></p></div>

- 阅读剩余部分 -

随机文章

最近回复

分类

其它

友情连接

推广链接