我用过Zend Studio 5.5这个经典版本,后从一直在用Zend Studio7 系列。
Zend Studio公认是最好的PHP开发工具,随着Zend Studio 6/7的发布,Zend Studio也转向Eclipse开发环境,5.5时代的快捷键很多都不能用了,还好6的快捷键基本和Eclipse相同,整理了一下,熟练使用确实能提高不少开发效率。
我们这帮80后的一大特点就是,打字指法凌乱,速度却不慢,IDE追求强大,快捷键却很少用,当然,也有一帮全用记事本、DW编程的家伙。
这里列的快捷键,着实比较方便,不过,我记了N遍也没记住,现在放到桌面上,每天看一遍。
Ctrl+1 快速显示OutLine(不是Eclipse的快速修复哦)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(project,file)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码(笔记本就享受不了了)
Ctrl+*(小键盘) 展开当前类中的所有代码(笔记本就享受不了了)
Alt+/ 代码助手完成一些代码的插入
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变为小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符
Zend Studio公认是最好的PHP开发工具,随着Zend Studio 6/7的发布,Zend Studio也转向Eclipse开发环境,5.5时代的快捷键很多都不能用了,还好6的快捷键基本和Eclipse相同,整理了一下,熟练使用确实能提高不少开发效率。
我们这帮80后的一大特点就是,打字指法凌乱,速度却不慢,IDE追求强大,快捷键却很少用,当然,也有一帮全用记事本、DW编程的家伙。
这里列的快捷键,着实比较方便,不过,我记了N遍也没记住,现在放到桌面上,每天看一遍。
Ctrl+1 快速显示OutLine(不是Eclipse的快速修复哦)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(project,file)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码(笔记本就享受不了了)
Ctrl+*(小键盘) 展开当前类中的所有代码(笔记本就享受不了了)
Alt+/ 代码助手完成一些代码的插入
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变为小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符
以前用过1st JavaScript Editor ,但是收费的,现在最新版本3.85,今天发现有个免费版,版本更新4.2的,完全免费,下载包才7m多,真是轻巧啊,大家可以试试,功能不弱,给个下载地址http://www.yaldex.com/Ready/freejse.zip ,今天补上直接下载。(第二个是3.8的xx文件,里面有trojan,有能力的清除一下,胆小的莫下),补充一下:哪位要能把XX文件里的trojan清除掉再发上来就太感谢了,虽然这个trojan不影响正常使用,但总感觉别扭还得调整杀软的设置。
http://www.javaeye.com/topic/313451
http://www.javaeye.com/topic/313451
1 进入:http://www.aptana.com/docs/index.php/Debugger_Error_Page
2 进入:
If you use Firefox 3.0+ browser, see Firefox 3.0/Firebug 1.2 support ASAP Issue for details.
For problems with Firefox 1.5+ browser, see Firefox 1.5+/Aptana Debugger ASAP Issue .
If you use Aptana debugger for Internet Explorer , see some IE debugger troubleshooting tips .
全面兼容:

我们进第一个Firefox3的.
下载:
1. aptanadebugger_1.2.0rc3.xpi (55 kb)
2. firebug-1.2.0b13.xpi (469 kb)
3. test_files.zip (5 kb)
1 安装前两个插件到Firefox中,.
2 在Aptana中新建工程, 把第三个文件test_files.zip解压,放入工程中. 就可以下断点调试了.
你会发现, 你在Aptana中下了断点,在FireFox的fireBug插件中也有同样的数点.
想支持在IE中debug, 那安安装Aptana Studio Pro版本,是要注册的. 而我用的是免费版本,不能用IE debug了.
http://www.javaeye.com/topic/348515
2 进入:
If you use Firefox 3.0+ browser, see Firefox 3.0/Firebug 1.2 support ASAP Issue for details.
For problems with Firefox 1.5+ browser, see Firefox 1.5+/Aptana Debugger ASAP Issue .
If you use Aptana debugger for Internet Explorer , see some IE debugger troubleshooting tips .
全面兼容:
我们进第一个Firefox3的.
下载:
1. aptanadebugger_1.2.0rc3.xpi (55 kb)
2. firebug-1.2.0b13.xpi (469 kb)
3. test_files.zip (5 kb)
1 安装前两个插件到Firefox中,.
2 在Aptana中新建工程, 把第三个文件test_files.zip解压,放入工程中. 就可以下断点调试了.
你会发现, 你在Aptana中下了断点,在FireFox的fireBug插件中也有同样的数点.
想支持在IE中debug, 那安安装Aptana Studio Pro版本,是要注册的. 而我用的是免费版本,不能用IE debug了.
http://www.javaeye.com/topic/348515
一)用vim时,鼠标右键不能粘贴而是进入了visual模式。
方法一:
在普通模式下键入:set mouse-=a【不包括引号)】
方法二:
编辑 ~/.vimrc 文件,加入如下代码:
if has('mouse')
set mouse-=a endif
1
2
方法一每次打开vim时都需要设置一次。
方法二改了配置文件后,问题就解决了。
set mouse=a【这个是用来开启鼠标功能的,a表示所有模式】
---------------------
原文:https://blog.csdn.net/foryouslgme/article/details/52688285
二)
对路由器或以太网交换机进行批量粘贴配置的时候出错,导致正在运行的数据配置错误,不得不对大量的配置逐条修改。
处理方法
出现类似的问题主要是因为在批量粘贴配置的时候,笔记本电脑或调测PC向路由器或以太网交换机发送的命令间隔时间太短造成的。可以修改超级终端、SecureCRT的行输入延迟来调整。
超级终端的调整方法:
菜单 文件—>属性,修改行延迟,建议修改为500毫秒。
SecureCRT的调整方法:
菜单Options—>Global Options,修改Line send delay[在advanced里面的一个选项],建议修改为500毫秒。
通过调整行输入延迟,我们可以在开局的时候通过修改配置模板,然后把修改后的配置在超级终端或SecureCRT进行粘贴,生成最终配置,这样可以大大提高工作效率。
深层分析:
该现象常发生于低端路由器交换机中,其原因并非因为粘贴数据编码错误,具本人调试过大部分网络设备命令均为asic码,及用windows记事本即可将命令写出,粘贴,呈现该错误原因为网络设备cpu编码时处理字符能力问题,将延时调至cpu可完成识别处理状态即可,该问题为一般性硬件问题.
方法一:
在普通模式下键入:set mouse-=a【不包括引号)】
方法二:
编辑 ~/.vimrc 文件,加入如下代码:
if has('mouse')
set mouse-=a endif
1
2
方法一每次打开vim时都需要设置一次。
方法二改了配置文件后,问题就解决了。
set mouse=a【这个是用来开启鼠标功能的,a表示所有模式】
---------------------
原文:https://blog.csdn.net/foryouslgme/article/details/52688285
二)
对路由器或以太网交换机进行批量粘贴配置的时候出错,导致正在运行的数据配置错误,不得不对大量的配置逐条修改。
处理方法
出现类似的问题主要是因为在批量粘贴配置的时候,笔记本电脑或调测PC向路由器或以太网交换机发送的命令间隔时间太短造成的。可以修改超级终端、SecureCRT的行输入延迟来调整。
超级终端的调整方法:
菜单 文件—>属性,修改行延迟,建议修改为500毫秒。
SecureCRT的调整方法:
菜单Options—>Global Options,修改Line send delay[在advanced里面的一个选项],建议修改为500毫秒。
通过调整行输入延迟,我们可以在开局的时候通过修改配置模板,然后把修改后的配置在超级终端或SecureCRT进行粘贴,生成最终配置,这样可以大大提高工作效率。
深层分析:
该现象常发生于低端路由器交换机中,其原因并非因为粘贴数据编码错误,具本人调试过大部分网络设备命令均为asic码,及用windows记事本即可将命令写出,粘贴,呈现该错误原因为网络设备cpu编码时处理字符能力问题,将延时调至cpu可完成识别处理状态即可,该问题为一般性硬件问题.
本部分设定了隐藏,您已回复过了,以下是隐藏的内容公司绝不会告诉你的20大秘密 值得一看很受用
1.入职时的工资高低不重要,只要你努力工作你会得到相应待遇的
我估计几乎找过工作的人都听过这句话,当我们确定被聘用跟公司谈工资时,他们都会说“如果以后你业绩突出、努力工作,你的报酬也会相应增加的”,特别是当第一次找工作的时候大多数人会相信这些话,但是千万~~别相信。
刚入职时,你的工资就是你的全部(当然有一些岗位,比如销售或弹性工资的岗位除外),而且你入职以后大部分待遇都会跟着你的工资而浮动,工资调整也是按你目前的工资乘于一定的百分比,保险、公积金也跟工资有关系,当你的基本工资低的时候你今后的报酬增长空间也不大。
所以,找工作时千万不要心软,多争取一些基本工资,因为这是你的所有。
我第一次找工作时就是犯了这个错误,当时心软没要求更高的工资,当时觉得基本工资比别人低几百块钱无所谓,但是后来才发现它有一个杠杆作用,尽管以后每年你工资涨幅比别人大,但是工资还是比别人低。
比如你入职时的基本工资为4000,第二年涨幅为20% (一般的企业极少数人能涨20%),那第二年工资为4800; 如果你的同事入职时基本工资为4500,第二年涨幅为10%(一般涨幅),那他第二年工资为4950。
是不是看到差距了? 请记住,入职时工资就是你的全部,一定不能心软。
2.人事部不是你的倾谈对象
阅读全文
1.入职时的工资高低不重要,只要你努力工作你会得到相应待遇的
我估计几乎找过工作的人都听过这句话,当我们确定被聘用跟公司谈工资时,他们都会说“如果以后你业绩突出、努力工作,你的报酬也会相应增加的”,特别是当第一次找工作的时候大多数人会相信这些话,但是千万~~别相信。
刚入职时,你的工资就是你的全部(当然有一些岗位,比如销售或弹性工资的岗位除外),而且你入职以后大部分待遇都会跟着你的工资而浮动,工资调整也是按你目前的工资乘于一定的百分比,保险、公积金也跟工资有关系,当你的基本工资低的时候你今后的报酬增长空间也不大。
所以,找工作时千万不要心软,多争取一些基本工资,因为这是你的所有。
我第一次找工作时就是犯了这个错误,当时心软没要求更高的工资,当时觉得基本工资比别人低几百块钱无所谓,但是后来才发现它有一个杠杆作用,尽管以后每年你工资涨幅比别人大,但是工资还是比别人低。
比如你入职时的基本工资为4000,第二年涨幅为20% (一般的企业极少数人能涨20%),那第二年工资为4800; 如果你的同事入职时基本工资为4500,第二年涨幅为10%(一般涨幅),那他第二年工资为4950。
是不是看到差距了? 请记住,入职时工资就是你的全部,一定不能心软。
2.人事部不是你的倾谈对象

.exc_img3{width:400px;height:98px;float:left;background-image:url(/images/exchange_03.jpg); background-repeat:repeat-y; background-position:bottom}
住下对齐。Y重重复!
住下对齐。Y重重复!
<SCRIPT src="resource/jquery-1.2.6.js" type=text/javascript></SCRIPT>
<SCRIPT src="resource/ui.core.js" type=text/javascript></SCRIPT>
<SCRIPT src="resource/ui.dialog.js" type=text/javascript></SCRIPT>
<script type="text/javascript">
function jumppage(){
$('#bloomup').dialog( {modal: true,resizable:false,width:'400px', height:'300px',overlay: { opacity: 0.7, background: 'black' } });
}
function closejumppage(){
$('#bloomup').dialog('close');
}
</script>
<iframe name="iframexq" id="iframexq" src="exchange.php" frameborder="0" scrolling="no" style="width:400px; height:300px"></iframe>
<area shape="rect" coords="168,108,368,147" href="#" onClick="jumppage()"/>
<img src="images/index_03.jpg" border="0" usemap="#Map2"/>

1.用telnet连到远程服务器
可以
telnet mail.test.com 25
或者
telnet mail.test.com smtp
2.跟服务器打招呼
HELO mail.test.com
服务器应该返回
250
如果服务器smtp需要验证,进行第三步,否则到第四步
3.输入
AUTH LOGIN
会一次提示你
334 VXNlcm5hbWU6
和
334 UGFzc3dvcmQ6
后边的内容是提示输入用户名和口令,信息是经过base64编码的
输入的用户名和口令也要经过编码,这里是一个编码、解码的工具
smtp认证通过后会显示
235 2.0.0 Authentication successful
4.写信
输入
MAIL FROM: <juhui@test.com>
和
RCPT TO: <phpbird@test.com>
分别是发自,发往
如果正常都应该返回250
输入
DATA
开始写信
Subject:test mail
test email
.
250 2.0.0 Ok: queued as 93223136C8E
退出
QUIT
Postfix上试用通过。
都是用rcpt to命令,对于抄送和密送的区分问题如下:
实现抄送及密送
在SMTP 命令集中并没有RCPT CC 或RCPT BCC 相关命令, 那要如何来实现抄送和密送功能呢?
在网络上找到这样一句话: “ 所有的接收者协商都通过RCPT TO 命令来实现,如果是BCC ,则协商发送后在对方接收时被删掉信封接收者”, 开始一直不明白这句话是什么意思? 后来通看查看foxmail 的邮件原文发现:
Date: Wed, 6 Jan 2010 12:11:48 +0800
From: "carven_li" < carven_li @smtp.com>
To: "carven" <carven@smtp.com>
Cc: "sam" <sam@smtp.com>,
"yoyo" <yoyo@smtp.com>
BCC: "clara" <clara@tsmtp.com>
Subject: t
X-mailer: Foxmail 5.0 [cn]
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="=====001_Dragon237244850520_====="
才恍然大悟, 所谓的” 协商” 应该就是指发送方在Data 中指定哪些为CC, 哪些为BCC, 默认情况下什么都不写, 只发送第一个RCPT TO 的mail, 其他的都被过滤掉.
可以
telnet mail.test.com 25
或者
telnet mail.test.com smtp
2.跟服务器打招呼
HELO mail.test.com
服务器应该返回
250
如果服务器smtp需要验证,进行第三步,否则到第四步
3.输入
AUTH LOGIN
会一次提示你
334 VXNlcm5hbWU6
和
334 UGFzc3dvcmQ6
后边的内容是提示输入用户名和口令,信息是经过base64编码的
输入的用户名和口令也要经过编码,这里是一个编码、解码的工具
smtp认证通过后会显示
235 2.0.0 Authentication successful
4.写信
输入
MAIL FROM: <juhui@test.com>
和
RCPT TO: <phpbird@test.com>
分别是发自,发往
如果正常都应该返回250
输入
DATA
开始写信
Subject:test mail
test email
.
250 2.0.0 Ok: queued as 93223136C8E
退出
QUIT
Postfix上试用通过。
都是用rcpt to命令,对于抄送和密送的区分问题如下:
实现抄送及密送
在SMTP 命令集中并没有RCPT CC 或RCPT BCC 相关命令, 那要如何来实现抄送和密送功能呢?
在网络上找到这样一句话: “ 所有的接收者协商都通过RCPT TO 命令来实现,如果是BCC ,则协商发送后在对方接收时被删掉信封接收者”, 开始一直不明白这句话是什么意思? 后来通看查看foxmail 的邮件原文发现:
Date: Wed, 6 Jan 2010 12:11:48 +0800
From: "carven_li" < carven_li @smtp.com>
To: "carven" <carven@smtp.com>
Cc: "sam" <sam@smtp.com>,
"yoyo" <yoyo@smtp.com>
BCC: "clara" <clara@tsmtp.com>
Subject: t
X-mailer: Foxmail 5.0 [cn]
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="=====001_Dragon237244850520_====="
才恍然大悟, 所谓的” 协商” 应该就是指发送方在Data 中指定哪些为CC, 哪些为BCC, 默认情况下什么都不写, 只发送第一个RCPT TO 的mail, 其他的都被过滤掉.
使用memchche代替php默认的file来存储session,能够实现更快的速度,而且很容易实现多主机共享session的需求。本文简要介绍一下安装设置的办法
系统环境:FreeBSD6.1 ,apache2.2.3, php5.2.0
1.首先安装memcache,因为是在FreeBSD环境下,所以我们采用最简单的ports方式来安装memcache
cd /usr/ports/databases/memcached/
make install clean
ports会自动寻找源进行下载,然后编译安装
安装好memcache以后,编辑/etc/rc.conf文件,在最后一行加一句memcached_enable="YES"
然后保存退出。memcache会随着开机自动启动,手动启动的命令是:
/usr/local/etc/rc.d/memcached start
好了,现在memcache已经安装并启动完毕了。
2.安装pecl::memcache扩展,这是php的扩展,安装以后可以使用Memcache函数库,php手册上有详细的使用法说明。
cd /usr/ports/databases/pecl-memcache/
make install clean
安装好以后,会自动在/usr/local/etc/php/extension.ini 加上一行 extension=memcache.so
用命令查看一下:
cat /usr/local/etc/php/extensions.ini
如果看见最后一行有 extension=memcache.so
说明已经安装好了,这个时候重新启动一下apache server即可,phpinfo()可以看到memcache扩展的信息。
3.设置session用memcache来存储
编辑php.ini文件,做如下修改
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
当然,也可以在httpd.conf文件中加上,前提是php以模块方式载入,如果是cgi方式无效
php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"
重启一下,apache server,好了,写一小段测试代码看看session是否正常吧
系统环境:FreeBSD6.1 ,apache2.2.3, php5.2.0
1.首先安装memcache,因为是在FreeBSD环境下,所以我们采用最简单的ports方式来安装memcache
cd /usr/ports/databases/memcached/
make install clean
ports会自动寻找源进行下载,然后编译安装
安装好memcache以后,编辑/etc/rc.conf文件,在最后一行加一句memcached_enable="YES"
然后保存退出。memcache会随着开机自动启动,手动启动的命令是:
/usr/local/etc/rc.d/memcached start
好了,现在memcache已经安装并启动完毕了。
2.安装pecl::memcache扩展,这是php的扩展,安装以后可以使用Memcache函数库,php手册上有详细的使用法说明。
cd /usr/ports/databases/pecl-memcache/
make install clean
安装好以后,会自动在/usr/local/etc/php/extension.ini 加上一行 extension=memcache.so
用命令查看一下:
cat /usr/local/etc/php/extensions.ini
如果看见最后一行有 extension=memcache.so
说明已经安装好了,这个时候重新启动一下apache server即可,phpinfo()可以看到memcache扩展的信息。
3.设置session用memcache来存储
编辑php.ini文件,做如下修改
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
当然,也可以在httpd.conf文件中加上,前提是php以模块方式载入,如果是cgi方式无效
php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"
重启一下,apache server,好了,写一小段测试代码看看session是否正常吧
1.启动成本低,投资少
2.市场需求量大,人人都需要
3.能够重复购买,易耗用品
4.做商品流通环节,做代理分销商
5.最终可以自动运转,有自动生命力
6.能够杠杆别人的力量,借力使力不费力
7.是否能够接触成功人士
8.是否能够使生活越来越好,实现人生理想
9.能够发挥你的天赋和激情,有属于自己的舞台
10.能不断被别人认同并被别人需要
2.市场需求量大,人人都需要
3.能够重复购买,易耗用品
4.做商品流通环节,做代理分销商
5.最终可以自动运转,有自动生命力
6.能够杠杆别人的力量,借力使力不费力
7.是否能够接触成功人士
8.是否能够使生活越来越好,实现人生理想
9.能够发挥你的天赋和激情,有属于自己的舞台
10.能不断被别人认同并被别人需要
mysql5.X开启日志方法:
修改my.cnf的mysqld部分:
long_query_time = 1 //定义慢查询的时间1表示1秒
--log-slow-queries[=file_name] //记录慢查询到日志文件
--log-queries-not-using-indexes //将没使用索引的sql记录到日志文件
我配置的正确实例情况如下:
Sql语句优化
Sql语句优化工具
·慢日志
如果发现系统慢了,又说不清楚是哪里慢,那么就该用这个工具了。只需要为mysql配置参数,mysql会自己记录下来慢的sql语句。配置很简单,参数文件里配置:
slow_query_log=d:/slow.txt
long_query_time = 2
就可以在d:/slow.txt里找到执行时间超过2秒的语句了,根据这个文件定位问题吧。
·mysqldumpslow.pl
慢日志文件可能会很大,让人去看是很难受的事。这时候我们可以通过mysql自带的工具来分析。这个工具可以格式化慢日志文件,对于只是参数不同的语句会归类类并,比如有两个语句select * from a where id=1 和select * from a where id=2,经过这个工具整理后就只剩下select * from a where id=N,这样读起来就舒服多了。而且这个工具可以实现简单的排序,让我们有的放矢。下面介绍下用法。因为这是个perl脚本,先要安装perl环境。脚本在mysql自带的脚本目录里,我的是在D:\mysql-5.1.30-win32\scripts
先mysqldumpslow –help以下,俺主要用的是
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 slow.txt
mysqldumpslow -s r -t 20 slow.txt
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” slow.txt
这个是按照时间返回前10条里面含有左连接的sql语句。
修改my.cnf的mysqld部分:
long_query_time = 1 //定义慢查询的时间1表示1秒
--log-slow-queries[=file_name] //记录慢查询到日志文件
--log-queries-not-using-indexes //将没使用索引的sql记录到日志文件
我配置的正确实例情况如下:
Sql语句优化
Sql语句优化工具
·慢日志
如果发现系统慢了,又说不清楚是哪里慢,那么就该用这个工具了。只需要为mysql配置参数,mysql会自己记录下来慢的sql语句。配置很简单,参数文件里配置:
slow_query_log=d:/slow.txt
long_query_time = 2
就可以在d:/slow.txt里找到执行时间超过2秒的语句了,根据这个文件定位问题吧。
·mysqldumpslow.pl
慢日志文件可能会很大,让人去看是很难受的事。这时候我们可以通过mysql自带的工具来分析。这个工具可以格式化慢日志文件,对于只是参数不同的语句会归类类并,比如有两个语句select * from a where id=1 和select * from a where id=2,经过这个工具整理后就只剩下select * from a where id=N,这样读起来就舒服多了。而且这个工具可以实现简单的排序,让我们有的放矢。下面介绍下用法。因为这是个perl脚本,先要安装perl环境。脚本在mysql自带的脚本目录里,我的是在D:\mysql-5.1.30-win32\scripts
先mysqldumpslow –help以下,俺主要用的是
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 slow.txt
mysqldumpslow -s r -t 20 slow.txt
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” slow.txt
这个是按照时间返回前10条里面含有左连接的sql语句。
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。
1、TCP连接
手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。
建立起一个TCP连接需要经过“三次握手”:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
2、HTTP连接
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
3、SOCKET原理
3.1套接字(socket)概念
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
3.2 建立socket连接
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
4、SOCKET连接与TCP连接
创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。
5、Socket连接与HTTP连接
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
该贴来自http://hi.baidu.com/%D2%B9%D1%A9%B3%E6/blog/item/d6a72d2bbf467cf2e7cd406d.html
1、TCP连接
手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。
建立起一个TCP连接需要经过“三次握手”:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
2、HTTP连接
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
3、SOCKET原理
3.1套接字(socket)概念
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
3.2 建立socket连接
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
4、SOCKET连接与TCP连接
创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。
5、Socket连接与HTTP连接
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
该贴来自http://hi.baidu.com/%D2%B9%D1%A9%B3%E6/blog/item/d6a72d2bbf467cf2e7cd406d.html
功能强大的jquery提示信息插件jquery.poshytip.js:
http://www.sharejs.com/code/jquery/plugin/poshytip-1.0/demo/index.html
<script type="text/javascript" src="/js/jquery.validate.min.js"></script>
<link href="/css/colorbox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery.colorbox-min.js"></script>
<link type="text/css" href="/css/ui.datepicker.css" rel="stylesheet" />
<script type="text/javascript" language="javascript" src="/js/jquery.ui.datepicker-zh-CN.js"></script>
DownLoad较常用的插件:
下载文件
真正可用的文件上传插件
找了很多才发现这个相当不错插件:
http://www.jcupload.com/documentation/ http://demo.swfupload.org/v220/index.htm
强大的js画图功能
http://draw2d.org/draw2d/files/demo/YahooUI_integration/index.html
jquery实现右键菜单:
http://www.trendskitchens.co.nz/jquery/contextmenu/
jquery 消息插件--仿QQ消息弹出提醒:
http://www.cnblogs.com/qiantuwuliang/archive/2009/06/08/1498826.html
query仿照开心网的好友查找:
http://itlea.com/archiver/?tid-290982.html
http://www.playgoogle.com/demo/friendsuggest/default.html
一好很漂亮的jquery上传插件:
http://www.jqueryajax.com/jquery979
jQuery:Scrolltop滑动插件推荐(修正注释版)
http://www.ihiro.org/jquery-scrolltop-plugins
jquery插件 scroll follow,层随着窗口滚动
http://kitchen.net-perspective.com/open-source/scroll-follow/
jQuery基础---filter()和find()
http://www.cnblogs.com/qiantuwuliang/archive/2009/10/18/1585682.html
37个更加出色的jQuery插件:
http://paranimage.com/37-plug-ins-even-more-outstanding-jquery/
从零开始学习 jQuery 事件与事件对象
http://www.xueit.com/html/2009-05/33_2020_00.html
jQuery Flash Plugin:
能判断fash是否加载完毕和自动生成flash的嵌入代码:
参考:http://hi.baidu.com/otherrrr/blog/item/b65bd016461f1e1d972b431a.html
下载:http://jquery.lukelutman.com/plugins/flash/
jquery上传头像的插件(感觉不错):
http://www.cnblogs.com/xuanye/archive/2009/04/02/1428202.html
09年插件总结:
http://blog.csdn.net/yuhaibao324/archive/2009/12/19/5037288.aspx
jQuery心跳包插件:
http://www.oschina.net/p/jheartbeat
jQuery UI组件 jQuery UI:
http://www.oschina.net/p/jquery+ui
suggest 技术
http://www.webwoo.net/jquery/200902/15-33819.html
suggest 技术,实际上就是大家看到的 google 在搜索的时候当您输入时有一个自动提示框
下面我给大家介绍一个jquery suggest插件
用起来很简单
只需要加一句
$("#suggest").suggest("demo.php",{
onSelect: function() {alert("You selected: " this.value)}});
});
就可以了
演示
http://www.cnjquery.com/demo/suggest/demo.html
我经常用到的:
阅读全文
http://www.sharejs.com/code/jquery/plugin/poshytip-1.0/demo/index.html
<script type="text/javascript" src="/js/jquery.validate.min.js"></script>
<link href="/css/colorbox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery.colorbox-min.js"></script>
<link type="text/css" href="/css/ui.datepicker.css" rel="stylesheet" />
<script type="text/javascript" language="javascript" src="/js/jquery.ui.datepicker-zh-CN.js"></script>
DownLoad较常用的插件:

真正可用的文件上传插件
找了很多才发现这个相当不错插件:
http://www.jcupload.com/documentation/ http://demo.swfupload.org/v220/index.htm
强大的js画图功能
http://draw2d.org/draw2d/files/demo/YahooUI_integration/index.html
jquery实现右键菜单:
http://www.trendskitchens.co.nz/jquery/contextmenu/
jquery 消息插件--仿QQ消息弹出提醒:
http://www.cnblogs.com/qiantuwuliang/archive/2009/06/08/1498826.html
query仿照开心网的好友查找:
http://itlea.com/archiver/?tid-290982.html
http://www.playgoogle.com/demo/friendsuggest/default.html
一好很漂亮的jquery上传插件:
http://www.jqueryajax.com/jquery979
jQuery:Scrolltop滑动插件推荐(修正注释版)
http://www.ihiro.org/jquery-scrolltop-plugins
jquery插件 scroll follow,层随着窗口滚动
http://kitchen.net-perspective.com/open-source/scroll-follow/
jQuery基础---filter()和find()
http://www.cnblogs.com/qiantuwuliang/archive/2009/10/18/1585682.html
37个更加出色的jQuery插件:
http://paranimage.com/37-plug-ins-even-more-outstanding-jquery/
从零开始学习 jQuery 事件与事件对象
http://www.xueit.com/html/2009-05/33_2020_00.html
jQuery Flash Plugin:
能判断fash是否加载完毕和自动生成flash的嵌入代码:
参考:http://hi.baidu.com/otherrrr/blog/item/b65bd016461f1e1d972b431a.html
下载:http://jquery.lukelutman.com/plugins/flash/
jquery上传头像的插件(感觉不错):
http://www.cnblogs.com/xuanye/archive/2009/04/02/1428202.html
09年插件总结:
http://blog.csdn.net/yuhaibao324/archive/2009/12/19/5037288.aspx
jQuery心跳包插件:
http://www.oschina.net/p/jheartbeat
jQuery UI组件 jQuery UI:
http://www.oschina.net/p/jquery+ui
suggest 技术
http://www.webwoo.net/jquery/200902/15-33819.html
suggest 技术,实际上就是大家看到的 google 在搜索的时候当您输入时有一个自动提示框
下面我给大家介绍一个jquery suggest插件
用起来很简单
只需要加一句
$("#suggest").suggest("demo.php",{
onSelect: function() {alert("You selected: " this.value)}});
});
就可以了
演示
http://www.cnjquery.com/demo/suggest/demo.html
我经常用到的:

Flot是Ole Laursen开发的基于JQuery的纯JavaScript实现的绘图库,Flot使用起来非常简单,绘图效果相当绚丽,而且还支持一些图片的操作功能,例如图片的缩放。可以看一下Flot的demo:
http://ajaxian.com/archives/plotting-in-jquery
绘制上面的图形所编写的JS也非常简单易读:
# <script id="source" language="javascript" type="text/javascript">
# $(function () {
# var d1 = [];
# for (var i = 0; i < 14; i += 0.5)
# d1.push([i, Math.sin(i)]);
#
# var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];
#
# var d3 = [];
# for (var i = 0; i < 14; i += 0.5)
# d3.push([i, Math.cos(i)]);
#
# var d4 = [];
# for (var i = 0; i < 14; i += 0.5)
# d4.push([i, Math.sqrt(i * 10)]);
#
# var d5 = [];
# for (var i = 0; i < 14; i += 0.5)
# d5.push([i, Math.sqrt(i)]);
#
# $.plot($("#placeholder"), [
# {
# data: d1,
# lines: { show: true, fill: true }
# },
# {
# data: d2,
# bars: { show: true }
# },
# {
# data: d3,
# points: { show: true }
# },
# {
# data: d4,
# lines: { show: true }
# },
# {
# data: d5,
# lines: { show: true },
# points: { show: true }
# }
# ]);
# });
# </script>
http://code.google.com/p/flot/
http://ajaxian.com/archives/plotting-in-jquery
绘制上面的图形所编写的JS也非常简单易读:
# <script id="source" language="javascript" type="text/javascript">
# $(function () {
# var d1 = [];
# for (var i = 0; i < 14; i += 0.5)
# d1.push([i, Math.sin(i)]);
#
# var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];
#
# var d3 = [];
# for (var i = 0; i < 14; i += 0.5)
# d3.push([i, Math.cos(i)]);
#
# var d4 = [];
# for (var i = 0; i < 14; i += 0.5)
# d4.push([i, Math.sqrt(i * 10)]);
#
# var d5 = [];
# for (var i = 0; i < 14; i += 0.5)
# d5.push([i, Math.sqrt(i)]);
#
# $.plot($("#placeholder"), [
# {
# data: d1,
# lines: { show: true, fill: true }
# },
# {
# data: d2,
# bars: { show: true }
# },
# {
# data: d3,
# points: { show: true }
# },
# {
# data: d4,
# lines: { show: true }
# },
# {
# data: d5,
# lines: { show: true },
# points: { show: true }
# }
# ]);
# });
# </script>
http://code.google.com/p/flot/
我试了,在expose_event函数中放置绘图函数,此函数以一定的时间间隔画不同的曲线。
结果,只有将窗口拖到屏幕的边缘(将窗口画图区隐藏起来),再拖出来,这样画图区的曲线才有变化。
然到,expose_evnet函数只有在这种情况下才能被触发?如果我想实时显示,该怎么办呢?
参考 gtk-demo 里面的 Pixbufs
gtk-demo 装了gtk开发包的应该就代了吧?
$ gtk-demo
结果,只有将窗口拖到屏幕的边缘(将窗口画图区隐藏起来),再拖出来,这样画图区的曲线才有变化。
然到,expose_evnet函数只有在这种情况下才能被触发?如果我想实时显示,该怎么办呢?
参考 gtk-demo 里面的 Pixbufs
gtk-demo 装了gtk开发包的应该就代了吧?
$ gtk-demo
text-decoration:none
css:
a:link{text-decoration:none;color:#fff}
<style type="text/css">
a:link{text-decoration:none;color:#515151}
</style>
引申:
--------------------------------------------------------------------
.header a:link{text-decoration:none;color:#fff}
<span class=header><a href=#>MM</a></span>
这个用来表示超链接的颜色
text-decoration:none;表示没有下划线
color:#ffffff表示链接颜色
这个只表示页面上链接的颜色
其他的还需要使用
a:hover,a:visited等来表示鼠标经过链接的样式和链接被访问以后的样式。
直接在<a href 里去掉下划线的方法:(注意单双引号)
$("#"+logindiv).html('您好,<a style="text-decoration:none" href="javascript:XXXX();">[ 登录 ] </a>');
$("#"+logindiv).html("欢迎您,"+ data.nick+ "<a style='text-decoration:none' href=javascript:CCCC({url:'/'});> [ 注销 ]</a>");
Demo,涉及到软文颜色:
CSS:
a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:hover {text-decoration:none;}
a:active {text-decoration:none;}
<a href="XXX.php"><span style="color:#b08a68; text-decoration:none;">无极:</span><span style="color:#975c0d ;text-decoration:none;">6月3日无极战个痛快!</span></a>