分享一个QQ关闭窗口的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <script> function QqClose() { window.opener = null; window.open('', '_top'); window.top.close(); window.close(); } </script> <a href="javascript:window.close();void(0);">正常关闭</a> <a href="javascript:QqClose();void(0);">QQ关闭</a> </body> </html> |
View Details
线程间操作无效: 从不是创建控件“label1”的线程访问它
Thread thread=null; //定义线程 //开始线程 private void button1_Click(object sender, EventArgs e) { thread = new Thread(new ThreadStart(StartThread)); thread.Start();//开始线程 } private void StartThread() { int i = 0; while (true) { this.label1.Text = i.ToString(); //此处报错 i++; } } //结束线程 private void button4_Click(object sender, EventArgs e) { thread.Abort(); } 问题:当我们运行的时候会出现错误:"线程间操作无效: 从不是创建控件“label1”的线程访问它。" 解决方案:在程序运行的时候增加一句话,如下: public Form1() {InitializeComponent();Control.CheckForIllegalCrossThreadCalls = false; //这是增加的一句话 } 缺点:将UI传给了子线程,违背了弱耦合、封装的思想。子线程去更新UI的状态,如果有多个不同主线程要获取子线程状态,怎么办?
View DetailsJS中操作table的方法
JS中操作table的方法 var myTable = document.getElementById("myTable "); //添加行 var newTR = myTable.insertRow(index); 该方法创建一个新的 TableRow 对象表示一个新的 <tr> 标记,并把它插入表中的指定位置。 新行将被插入 index 所在行之前。若 index 等于表中的行数,则新行将被附加到表的末尾。 如果表是空的,则新行将被插入到一个新的 <tbody> 段,该段自身会被插入表中。 //设置行的id和class属性 newTR.id = "myid"; newTR.className="MainContentText"; //添加列:序号 var newTD=newTR.insertCell(0); //添加列内容 newTD.innerHTML = "dfdsf"; //删除表所有行,只留标题行 var rows = myTable.rows.length; for(var i=0;i<rows-1;i++){ myTable.deleteRow();//不给参数,代表删除最后一行 } JS本身不支持方法重载 Js中实现方法重载的方式也知道了呵呵(会默认调用参数最多的那个方法) 转自:http://www.cnblogs.com/judy/archive/2010/06/05/1752230.html
View DetailsC#进制转换
1 |
//十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));//十进制转十六进制Console.WriteLine("十进制166的十六进制表示: "+Convert.ToString(166, 16)); //二进制转十进制Console.WriteLine("二进制 111101 的十进制表示: "+Convert.ToInt32("111101", 2));//八进制转十进制Console.WriteLine("八进制 44 的十进制表示: "+Convert.ToInt32("44", 8));//十六进制转十进制Console.WriteLine("十六进制 CC的十进制表示: "+Convert.ToInt32("CC", 16)); |
View Details
详解在IIS中配置并运行WCF服务
【IT168 技术文档】WCF是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。 在IIS中运行服务 之前我们让Derivatives Calculator服务在一个.NET可执行文件中运行,在这个练习中,我们将让服务在IIS中运行。 利用IIS作为宿主程序来运行WCF服务通常有许多好处。 ·将项目构建到\bin目录中 为了方便部署,我们需要对服务项目进行配置,让它编译到一个bin目录中。 1. 在Solution Explorer中右键单击DerivativesCalculatorService项目并选择Properties菜单项。 2. 在Project designer中,单击Build选项卡。 3. 将Output path从bin\Debug\改为bin\,如图所示。 Project designer中经过调整的Output path属性 4. 选择File | Save All菜单项。 5. 选择File | Close菜单项来关闭Project designer。 现在,在构建服务时产生的所有文件都会被输出到\bin目录中。 ·添加一个.svc文件 为了让WCF服务能够在IIS中运行,我们需要用一种特殊的内容文件(.svc文件)表示它。这种模型和ASMX页面在IIS中的表示方法类似。.svc文件包含一个WCF专用的处理指示符(@ServiceHost),这个指示符告诉WCF运行库在收到消息时激活服务。 1. 在Solution Explorer中右键单击DerivativesCalculatorService项目并选择Add | New Item菜单项。 2. 在Add New Item对话框中,选择Text File模板。 wordend 相关阅读: 3. 在Name文本框中输入Service.svc。 4. Add New Item对话框看起来应该如图所示。 添加一个svc文件 5. 单击Add按钮。 6. 在Service.svc文件中添加下面这行语句。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/ <%@ServiceHost Service="DerivativesCalculatorService.Calculator" […]
View Details深入浅出Node.js(二):Node.js&NPM的安装与配置
Node.js安装与配置 Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0.6.x的版本上介绍Node.js的安装和配置。(本文一律以0.6.1为例,0.6的其余版本,只需替换版本号即可。从http://nodejs.org/#download可以查看到最新的二进制版本和源代码)。 Windows平台下的Node.js安装 在过去,Node.js一直不支持在Windows平台下原生编译,需要借助Cygwin或MinGW来模拟POSIX系统,才能编译安装。幸运的是2011年6月微软开始与Joyent合作移植Node.js到Windows平台上(http://www.infoq.com/cn/news/2011/06/node-exe ),这次合作的成果最终呈现在0.6.x的稳定版的发布上。这次的版本发布使得Node.js在Windows平台上的性能大幅度提高,使用方面也更容易和轻巧,完全摆脱掉Cygwin或MinGW等实验室式的环境,并且在某些细节方面,表现出比Linux下更高的性能,细节参见http://www.infoq.com/news/2011/11/Nodejs-Windows。 在Windows(Windows7)平台下,我将介绍二种安装Node.js的方法,即普通和文艺安装方法。 普通的安装方法 普通安装方法其实就是最简单的方法了,对于大多Windows用户而言,都是不太喜欢折腾的人,你可以从这里(http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi )直接下载到Node.js编译好的msi文件。然后双击即可在程序的引导下完成安装。 在命令行中直接运行:
1 |
node -v |
命令行将打印出:
1 |
v0.6.1 |
该引导步骤会将node.exe文件安装到C:\Program Files (x86)\nodejs\目录下,并将该目录添加进PATH环境变量。 文艺的安装方法 Windows平台下的文艺安装方法主要提供给那些热爱折腾,喜欢编译的同学们。在编译源码之前需要注意的是你的Windows系统是否包含编译源码的工具。Node.js的源码主要由C++代码和JavaScript代码构成,但是却用gyp工具(http://code.google.com/p/gyp/ )来做源码的项目管理,该工具采用Python语言写成的。在Windows平台上,Node.js采用gyp来生成Visual Studio Solution文件,最终通过VC++的编译器将其编译为二进制文件。所以,你需要满足以下两个条件: Python(Node.js建议使用2.6或更高版本,不推荐3.0),可以从这里(http://python.org/)获取。 VC++ 编译器,包含在Visual Studio 2010中(VC++ 2010 Express亦可),VS2010可以从这里(http://msdn.microsoft.com/en-us/vstudio/hh388567)找到。 下载Node.js的0.6.1版本的源码压缩包(http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz )并解压之。 通过命令行进入解压的源码目录,执行vcbuild.bat release命令,然后经历了漫长的等待后,编译完成后,在Release目录下可以找到编译好的node.exe文件。通过命令行执行node -v。 命令行返回结果为:
1 |
v0.6.1 |
事实上,如果你的编译环境中存在WiX工具集(http://wix.sourceforge.net/ ),执行vcbuild.bat msi release命令,你将会在Relase目录下找到node.msi。 是的,我们回到了一开始的普通安装方法。所谓文艺就是多走一些路,多看一些风景罢了。 Unix/Linux平台下的Node.js安装 由于Node.js尚处于v0.x.x的版本的快速发展中,Unix/Linux平台的发行版都不会预置Node的二进制文件,通过源码进行编译安装是目前最好的选择。而且用Unix/Linux系统的同学们多数都是文艺程序员,本节只介绍如何通过源码进行编译和安装。 安装条件 如同在Windows平台下一样,Node.js依然是采用gyp工具管理生成项目的,不同的是通过make工具进行最终的编译。所以Unix/Linux平台下你需要以下几个必备条件,才能确保编译完成: Python。用于gyp,可以通过在shell下执行python命令,查看是否已安装python,并确认版本是否符合需求(2.6或更高版本,但不推荐3.0)。 源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++)。如果没有,请通过当前发行版的软件包安装工具安装make,g++这些编译工具。 Debian/Ubuntu下的工具是apt-get RedHat/centOS下通过yum命令 Mac OS X下你可能需要安装xcode来获得编译器 相关厂商内容 进阶xUnit培训课程,由Jolt大奖著作作者Gerard亲自授课,越早报名优惠越多! 京东网架构师何斌,确定QCon杭州分享主题:虚拟化如何支撑京东业务! oolShell博主,亚马逊中国研发经理陈皓,确定QCon杭州分享主题:建一支强悍的小团队! 百度技术沙龙第三十一期:推荐引擎算法与技术(10月20日 周六) 相关赞助商 QCon杭州2012大会10月25~27,10月10日前报名享受9折优惠,5人以上团购享有更多优惠! 其次,如果你计划在Node.js中启用网络加密,OpenSSL的加密库也是必须的。该加密库是libssl-dev,可以通过apt-get install libssl-dev等命令安装。 检查环境并安装 完成以上预备条件后,我们获取源码并进行环境检查吧:
1 |
wget <a href="http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz">http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz</a> tar zxvf node-v0.6.1.tar.gz cd node-v0.6.1 ./configure 上面几行命令是通过wget命令下载最新版本的代码,并解压之。./configure命令将会检查环境是否符合Nodejs的编译需要。 Checking for program g++ or c++ : /usr/bin/g++ Checking for program cpp : /usr/bin/cpp Checking for program ar : /usr/bin/ar Checking for program ranlib : /usr/bin/ranlib Checking for g++ : ok Checking for program gcc or cc : /usr/bin/gcc Checking for program ar : /usr/bin/ar Checking for program ranlib : /usr/bin/ranlib Checking for gcc : ok Checking for library dl : yes Checking for openssl : yes Checking for library util : yes Checking for library rt : yes Checking for fdatasync(2) with c++ : yes 'configure' finished successfully (7.350s) |
如果检查没有通过,请确认上面提到的三个条件是否满足。如果configure命令执行成功,就可以进行编译了:
1 |
make make install |
Nodejs通过make工具进行编译和安装(如果make install不成功,请使用sudo以确保拥有权限)。完成以上两步后,检查一下是否安装成功:
1 |
node -v |
检查是否返回:
1 |
v0.6.1 |
至此,Nodejs已经编译并安装完成。如需卸载,可以执行make uninstall进行卸载。 小结 以上介绍了*nix和Windows平台下Nodejs的安装,之后可以如同Nodejs官方网站上介绍的那样,编写example.js文件。
1 |
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/'); |
在命令行中执行它:
1 |
node example.js |
你就可以通过浏览器访问http://127.0.0.1:1337得到Hello World的响应。 安装NPM NPM的全称是Node Package Manager,如果你熟悉ruby的gem,Python的PyPL、setuptools,PHP的pear,那么你就知道NPM的作用是什么了。没错,它就是Nodejs的包管理器。Nodejs自身提供了基本的模块。但是在这些基本模块上开发实际应用需要较多的工作。所幸的是笔者执笔此文的时候NPM上已经有了5112个Nodejs库或框架,这些库从各个方面可以帮助Nodejs的开发者完成较为复杂的应用。这些库的数量和活跃也从侧面反映出Nodejs社区的发展是十分神速和活跃的。下面我将介绍安装NPM和通过NPM安装Nodejs的第三方库,以及在大陆的网络环境下,如何更好的利用NPM。 Unix/Linux下安装NPM 就像NPM的官网(http://npmjs.org/)上介绍的那样,安装NPM仅仅是一行命令的事情:
1 |
curl http://npmjs.org/install.sh | sh |
这里详解一下这句命令的意思,curl http://npmjs.org/install.sh是通过curl命令获取这个安装shell脚本,按后通过管道符| 将获取的脚本交由sh命令来执行。这里如果没有权限会安装不成功,需要加上sudo来确保权限:
1 |
curl http://npmjs.org/install.sh | sudo sh |
安装成功后执行npm命令,会得到一下的提示:
1 |
Usage: npm <command> where <command> is one of: adduser, apihelp, author, bin, bugs, c, cache, completion, config, deprecate, docs, edit, explore, faq, find, get, help, help-search, home, i, info, init, install, la, link, list, ll, ln, ls, outdated, owner, pack, prefix, prune, publish, r, rb, rebuild, remove, restart, rm, root, run-script, s, se, search, set, show, star, start, stop, submodule, tag, test, un, uninstall, unlink, unpublish, unstar, up, update, version, view, whoami |
我们以underscore为例,来展示下通过npm安装第三方包的过程。
1 |
npm install underscore |
返回:
1 |
underscore@1.2.2 ./node_modules/underscore |
由于一些特殊的网络环境,直接通过npm install命令安装第三方库的时候,经常会出现卡死的状态。幸运的是国内CNode社区的@fire9同学利用空余时间搭建了一个镜像的NPM资源库,服务器架设在日本,可以绕过某些不必要的网络问题。你可以通过以下这条命令来安装第三方库:
1 |
npm --registry "<a href="http://npm.hacknodejs.com/">http://npm.hacknodejs.com/</a>" install underscore |
如果你想将它设为默认的资源库,运行下面这条命令即可: npm config set registry "http://npm.hacknodejs.com/" 设置之后每次安装时就可以不用带上—registry参数。值得一提的是还有另一个镜像可用,该镜像地址是http://registry.npmjs.vitecho.com,如需使用,替换上面两行命令的地址即可。 Windows下安装NPM 由于Nodejs最初在Linux开发下的历史原因,导致NPM一开始也不支持Windows环境,但是随着Nodejs成功移植到到Windows平台,NPM在Windows下的需求亦是日渐增加。下面开始Windows下的NPM之旅吧。 安装GIT工具 由于github网站不支持直接下载打包了所有submodule的源码包,所以需要通过git工具来签出所有的源码。从http://code.google.com/p/msysgit/downloads/list,可以下载到msysgit这个Windows平台下的git客户端工具(最新版本文件为Git-1.7.7.1-preview20111027.exe)。在下载之后双击安装。 下载NPM源码 打开命令行工具(CMD),执行以下命令,可以通过msysgit签出NPM的所有源码和依赖代码并安装npm。 […]
View DetailsHTTP 错误 500.19 Internal Server Error的解决方法
以下从网络中搞定我的Win7下IIS错误: HTTP 错误 500.19 Internal Server Error 第一种可能,能解决一部分问题 http://wenku.baidu.com/view/c5cb4a08bb68a98271fefa3f.html 第二种可能,解决另外一部分问题 经过检查发现是由于先安装vs2008后安装iis的缘故,只需重新注册下AspNet就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示符窗口。 2 进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录。 3 输入aspnet_regiis.exe –i 执行既可 注意:如果系统为64位 第二步的路径为C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727 第三种可能解决方法: Win7下我碰到的问题 WIN7下.Net开发遇到的又一问题:HTTP 错误 500.19 – Internal Server Error,无法访问请求的页面,因为该页的相关配置数据无效。 详细错误信息模块 IIS Web Core 通知 BeginRequest 处理程序 尚未确定 错误代码 0x80070021 配置错误 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。 配置源 219: <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></modules> 220: <handlers> 221: <remove name="WebServiceHandlerFactory-Integrated"/> […]
View DetailsMIME TYPE 大全
Mime-Typ Dateiendung(en) Bedeutung application/acad *.dwg AutoCAD-Dateien (nach NCSA) application/applefile AppleFile-Dateien application/astound *.asd *.asn Astound-Dateien application/dsptype *.tsp TSP-Dateien application/dxf *.dxf AutoCAD-Dateien (nach CERN) application/futuresplash *.spl Flash Futuresplash-Dateien application/gzip *.gz GNU Zip-Dateien application/listenup *.ptlk Listenup-Dateien application/mac-binhex40 *.hqx Macintosh Binär-Dateien application/mbedlet *.mbd Mbedlet-Dateien application/mif *.mif FrameMaker Interchange Format Dateien application/msexcel *.xls *.xla Microsoft Excel Dateien application/mshelp *.hlp *.chm Microsoft Windows Hilfe Dateien application/mspowerpoint *.ppt *.ppz *.pps *.pot Microsoft Powerpoint Dateien application/msword *.doc *.dot Microsoft Word Dateien application/octet-stream *.bin *.exe *.com *.dll *.class Ausführbare Dateien application/oda *.oda Oda-Dateien application/pdf *.pdf Adobe […]
View DetailsmyEclipse/Eclipse插件安装、更新、删除
Eclipse插件安装、更新、删除 Eclipse的插件可以装在内部,也可以装在外部,装在内部的方法很简单:把插件的features和plugins目录copy到eclipse的安装目录即可。eclipse和其插件升级比较频繁,用过eclipse的朋友应该都有体会,插件装在外部相比装在内部有很多优点,此处不再赘述。 装在外部的插件的的目录结构通常应该类似如下: samplePlugins |——eclipse |——features |——plugins |——.eclipseextension 其中.eclipseextension文件只是标识这是一个eclipse外部插件,没有实际意义。有些插件解压后没有这个文件,可以手工创建一个空的即可。 在外部安装插件的两种方法: 1、使用Software Update功能 在Eclipse中选择Help > Software Updates > Manage Configuration,在这里会列出所有已经安装的插件。右键单击Eclipse Platform,选择New > Extension Location…,然后找到要安装的插件的目录,如:samplePlugins,确定,ok,安装成功。Eclipse会提示你重启以使应用生效。继续点击yes,然后就可以使用新插件了。 2、使用links目录功能 进入Eclipse安装目录,查看是否有links目录,如果没有,则新建之。进入links目录,新建一个后缀为.link的文本文件,如:samplePlugs.link,此文件只有一行内容,格式为:path=插件目录。例如:安装汉化插件,将汉化包解压出来应该是eclipse文件夹(包含features和plugins两个文件夹),放在C:\Java\eclipse\language目录下,在同一目录新建links文件夹,在links文件夹下新建language.ini(language.link)文本文件,内容:path=language保存退出,重启eclipse,就完成了Eclipse的汉化,^=^。 Eclipse的升级也有两种方法: 1、使用Help —> Software Updates —> Find and Install,选中需要升级的插件,按提示操作即可。 2、下载全新安装文件,解压新版本的eclipse,把以前安装的插件按照前述方法导入,如果需要再修改workspace的指向即可。 插件升级的方法也是同理,可以在线升级,或者下载新版插件,然后在links目录里修改.link文件即可。 插件卸载的方法: 在Help —> Software Updates —> Manage Configuration 里disable相应插件即可。如果要完全删除,则需要删除eclipse目录下的configuration目录,这步操作其实无甚必要。 以上操作从Eclipse2.1到Eclipse3.x下都经过试验。如果修改之后eclipse不能正常启动,到configuration目录下查看错误日志,再寻找解决办法。通常如果是配置问题,只要删除configuration目录基本都可以解决。 接下来主要说一下Eclipse集成的一些插件及其在线更新地址: 1. Subversion是下一代版本(或源码)控制系统,它的目的是代替CVS下载. 在线更新地址 : http://subclipse.tigris.org/update_1.2.x/ 2.PyDevPyDev是一个允许用户利用Eclipse进行Python开发。它提供了一些很好的功能如:代码填空,语法高亮显示,语法分析,重构(refactor)和调试等等. 在线安装更新地址 : http://pydev.sourceforge.net/updates/ 3. JyDT Jython开发工具。 在线安装更新地址 :http://www.redrobinsoftware.net/jydt/ 4. 基于Eclipse的Java反编译插件 在线更新地址 : http://www.technoetic.com/eclipse/update/ 5. JSEclipse可以编辑JavaScript 文件,支持语法突出显示和包括了一些常用的面向对象的方法。支持的面向对象的功能有:构造函数,类方法,实例方法,类变量等等。支持代码错误提示,警靠报告等。 在线更新地址 : http://download.macromedia.com/pub/labs/jseclipse/autoinstall/ 6. Implementors当追踪方法代码时,Eclipse默认是转到方法的接口类,而接口中是只有方法名称没有具体的实现代码,此插件提供了追踪到具体实现类的实现代码的功能。 在线更新地址 : http://eclipse-tools.sourceforge.net/updates/ 7. Easy ExplorerEasy Explorer 打开在eclipse中选定文件所在的目录 在线安装更新地址 : http://easystruts.sourceforge.net/eclipse/updates/ 8. […]
View DetailsEclipse:修改字符编码
一、设置代码的编码格式: 有时候大家也许会看到这个错误:Save could not be completed. Reason: some characters cannot be mapped using “ISO-8859-1“ character encoding 这个错误是因为你的文件格式是ISO-8859-1,右键点击报错文件->选择Properties->Text file enconding->把ISO-8859-1改为UTF-8或者GBK就解决这个问题了。 这是因为Eclipse默认的文件格式都是ISO-8859-1,那如果大量文件该怎么办呢?我们不会一个一个手动改吧?答案是NO。 方法如下: Eclipse-->Window-->Preferences-->General-->Content Types然后在选择 右边的Text下边的Java Properties File,修改其编码(推荐UTF-8)。 二、编辑器字体(全体,包括PyDev、cdt、jdt的编辑器) Eclipse-->Window-->Preferences-->General-->Appearance--> Colors and Fonts -->Basic --> Text Font-->Change 喜欢哪个就选哪个字体。
View Details