LSX-blog

Feed Rss

linux和windows下TIME_WAIT过多的解决办法

如果使用了nginx代理,那么系统TIME_WAIT的数量会变得比较多,这是由于nginx代理使用了短链接的方式和后端交互的原因,使得nginx和后端的ESTABLISHED变得很少而TIME_WAIT很多。这不但发生在安装nginx的代理服务器上,而且也会使后端的app服务器上有大量的TIME_WAIT。查阅TIME_WAIT资料,发现这个状态很多也没什么大问题,但可能因为它占用了系统过多的端口,导致后续的请求无法获取端口而造成障碍。
虽然TIME_WAIT会造成一些问题,但是要完全枪毙掉它也是不正当的,虽然看起来这么做没什么错。具体可看这篇文档:

 

了解更多

!!!千万注意:如果你有幸读到这篇文章,中间如果有任何问题或危险,千万不要来问我,我只是记录一下我的安装过程,恕不回答任何问题。
昨天装了台服务器,配置:
XEON5405/Intel S5000VSA4DIMM/金士顿 ECC FBD DDR2 667 4G*2/西数 WD3202ABYS*2/CPU散热片/联志1U 1365/台达400
OS想装成:SuSE Linux Enterprise Server。
两块西数企业级硬盘(比一般的每块贵四五十块钱),准备做RAID1,济南这边装Linux服务器的比较少,在装服务器的卖家那,鼓捣了半天,最终RAID也没弄好,最后只能搬着服务器回来自己研究了。
主板带的驱动盘中的驱动实在是太老了,只能支持到SLES 10,不支持11。
另外,按照主板中提供的RAID驱动安装说明,必须使用usb的软驱+软盘才能安装上,但是这东西,一般谁也不会买,还很贵,这也构成了本次安装RAID的最大障碍。
基本情况如上,下面按步骤记录一下,如何不用软驱,通过U盘做虚拟软盘,在S5000VSA上安装RAID1+SLES。

 

了解更多

公司准备自己实施CDN的项目:

这里有个关键的问题:

如何来实现智能化判断,智能化程度到市级别,当然精确度及考虑实用性,经过仔细的揣摩,改省级别,也就是智能DNS可以判断出来用户的访问是从那过来,具体到省的级别,其他公司的智能DNS最多也就能判断是:电信还是 网通 还是铁通,这只是线路的判断,今天所说的是更具体的识别方式,在网上找了几家做DNS的发现,他们都无法误别,我当时在想一些做CDN的如何来判断的呢,我百思不得其解,当然我的技术圈也不大,没有这方面的高人指点,所以只能根据自己的网络知识来做相关的技术分析,当然中间遇到很多问题,但最终还是成功了,这时我才明白,原来没有高人指点,也可以搞的定。

大家都知道关键的问题是IP的列表问题如何解决,当然这个问题,也是让我头痛了许久的问题,当时因为判断失误,我是到各个网站去查找相关的资料,到APNIC官网,下载相关的IP分配信息,当然APNIC的官网IP分配信息库也是挺大的,要一时的整理出来每一个IP是那个地区,更是一个体力话,当然也看到网上有通过相关代码实现IP归属地的方法,但识别的级别也只能到电信网通 各个ISP运营商之间,要想识别到省的级别那误差就相当大了,和没有误别差不了多少,最后我还是放弃了这条路,于是呼,开始到网上查相关的DNS列表,下载,当时想着,应该会有这方面的资料,毕竟CDN还是很多人用的,总要有人共享一下吧,可现实打击了我幼小的心灵,没有找到,郁闷。

经过头痛式的思考,我想到了纯真IP库,这东西引导我进入了一个正确方向,打开发现IP信息很多,准确度也相当的高,不定期的更新,总算看到太阳了,很美,开始想如何把这些列表都提取出来,归类,当然不可能手动一个一个复制,那就让计算机搞定吧,开始拿出来百年不用的MFC和C# 功底,头痛式的编程,程序搞定后那就开始提取列表了,很快,很舒服。

了解更多

原文地址:http://www.hackline.net/a/news/ldfb/2009/0914/573.html
早前有暴出一个IIS6.0下文件名解析漏洞,遇到http://www.xxx.com/uppic/1.asp/xiaoma.jpg会自动解析成asp文件执行。此漏洞产生在IIS6.0,处理文件夹扩展名出错导致以.asp命名的文件夹后面的文件直接以asp代码执行。所以无论*.asp文件夹后面是什么格式的文件都被当作ASP程序执行。同理可得只要是可执行程序都可以利用此解析。如:在IIS没有删除扩展名的情况下,1.asa/xiaoma.jpg 1.cer/xiaoma.jpg都可以当作asp代码被执行。
如图所示:

了解更多

第一种方法:
cat -A filename 就可以看到Windows下的断元字符 ^M
要去除他,最简单用下面的命令:
dos2unix filename

第二种方法:
sed -i ‘s/^M//g’ filename
#注意:^M的输入方式是 Ctrl + v ,然后Ctrl + M

第三种方法:
#vi filename

:1,$ s/^M//g
^M 输入方法: ctrl+V ,ctrl+M
第四种方法:
#cat filename |tr -d ‘\r’ > newfile
#^M 可用 \r 代替

一,dump的原理,优点及限制
dump和restore默认已经安装在RHEL5中,如果你使用的Linux中没有,可以自己去google中搜一下并下载安装。
使用dump命令时,它会建立一份自上次备份操作以来进行修改过的文件列表,然后把这些文件打包成一个单独的文件。在做备份时,需要指定一个备份级别,它是0-9之间的一个整数。级别为N的转储会对从上次进行的级别小于N的转储操作以来修改过的所有文件进行备份,而级别0就是完全备份。通过这种方式,可以很轻松的实现增量备份,差异备份,甚至每日备份。例如,第一次备份时可选择级别0(具体操作看后面),以后每天做增量备份时就可以每天依次使用级别1,级别2,级别3等等… …;当需要每天做差异备份时,可先选择级别0做完整备份,然后每天都使用同一大于0的级别就行了,比如说第二天用5,第三天也用5,第四天也一样。
使用dump的优点:
1,备份可以跨多卷磁带
2,能备份任何类型的文件,甚至是设备
3,备份时,文件的权限,宿主,宿组,修改时间等都会被保存
4,能够正确处理从未包含任何数据的文件块(孔洞文件)
5,能够做增量,差异备份
了解更多

最近在迁移服务器的时候发现服务器上面存在一个博客,准备迁移到新服务器,万事具备,只欠东风,迁移完成访问,出现

zendoptimeizer没有安装的提示错误,下载zendoptimeizer安装,死活安装不上去,搜索无果只有在原来的环境与新的环境
进行对比,最后发现是 线程安全的问题,新环境启动了线程安全,采用的是wroker 工作方式,老环境是perker工作方
式,不知道zend对于这两种模式的支持效果,共它也不多想了,重新编译环境OK

名片
—————————————————————————————————————
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

标准的Base64
—————————————————————————————————————
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充’=’号,并将标准Base64中的“+”和“/”分别改成了“*”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
规则
关于这个编码的规则:
①.把3个字符变成4个字符..
②每76个字符加一个换行符..
③.最后的结束符也要处理..
这样说会不会太抽象了?不怕,我们来看一个例子:
转换前 aaaaaabb ccccdddd eeffffff
转换后 00aaaaaa 00bbcccc 00ddddee 00ffffff
应该很清楚了吧?上面的三个字节是原文,下面的四个字节是转换后的Base64编码,其前两位均为0。
转换后,我们用一个码表来得到我们想要的字符串(也就是最终的Base64编码),这个表是这样的:(摘自RFC2045)

了解更多

一、系统运行环境

ESXI 5.0虚拟出来的CentOS 5.5 X64

安装操作系统只选择开发工具、开发库及基本包

二、软件环境

1、  CentOS5.5 X64 版本

2、  LAMP环境全套软件

3、  postfix-2.8.2.tar.gz

4、  phpMyAdmin-3.4.3.2-all-languages.tar.gz

5、  courier-authlib-0.63.0.tar.bz2

6、  cyrus-sasl-2.1.23.tar.gz

7、  courier-imap-4.9.3.tar.bz2

8、等等

三、准备工作

1、  禁用selinux

Vim /etc/selinux/config

了解更多

ado.net提供了丰富的数据库操作,在这些操作中SqlConnection和SqlCommand类是必须使用的,但接下来可以分为两类操作:
一类是用SqlDataReader直接一行一行的读取数据库。
第二类是SqlDataAdapter联合DataSet来读取数据。

两者比较:
SqlDataReader由于是直接访问数据库,所以效率较高。但使用起来不方便。
SqlDataAdapter可以把数据库的数据缓存在内存中,以数据集的方式进行填充。这种方式使用起来更方,便简单。但性能较第一种稍微差一点。(在一般的情况下两者的性能可以忽略不计。)

了解更多

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MySQLDriverCS;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MySQLConnection conn = null;
conn = new MySQLConnection(new MySQLConnectionString(“127.0.0.1”, “Dvbbs”, “root”, “123456”).AsString);
conn.Open();
MySQLCommand commn = new MySQLCommand(“set names gb2312”,conn);
commn.ExecuteNonQuery();
string sql = “select title,topicID, boardId ,dateandtime,hits from Dv_topic order by dateandtime desc limit 10”;
MySQLDataAdapter mda = new MySQLDataAdapter(sql,conn);
DataSet ds = new DataSet();
mda.Fill(ds, “table1”);
this.Repeater1.DataSource = ds;
this.Repeater1.DataBind();
conn.Close();
}
}
就这样就可以实现在.NET环境下对MySQL数据的访问。在这之前还要做一些准备,下载MySQLDriverCS,安装,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中就OK了。也许你对这行代码
MySQLCommand commn = new MySQLCommand(“set names gb2312”,conn);
commn.ExecuteNonQuery();
不太理解。这是因为如果没有这句话从数据库里读出的数据中如果有中文将显示乱码,只要把这个语句“set names gb2312”当作SQL语句执行一遍就可以了。

下面是commond:
MySQLCommand cmd;
cmd = new MySQLDriverCS.MySQLCommand(“DROP TABLE IF EXISTS test.mysqldrivercs_test”,conn);
cmd.ExecuteNonQuery();
cmd.Dispose();
了解更多

Microsoft Windows是一个为个人电脑和服务器用户设计的操作系统,它有时也被称为“视窗操作系统”。它的第一个版本由微软公司发行于1985年,并最终获得了世界个人电脑操作系统软件的垄断地位。所有最近的Windows都是完全独立的操作系统。
黑暗到光明
【MS-DOS:Microsoft在Win之前制造的操作系统】

1975年4月4日 Microsoft 成立
1979年1月1日 Microsoft 从北墨西哥州Albuquerque迁移至华盛顿州Bellevue市
1981年6月25日 Microsoft 正式登记公司
1981年8月12日,IBM推出内含Microsoft的16位元作业系统 MS-DOS 1.0的个人电脑。
MS-DOS是Microsoft Disk Operating System的简称,意即由美国微软公司(Microsoft)提供的磁盘操作系统。在Windows 95以前,DOS是PC兼容电脑的最基本配备,而MS-DOS则是最普遍使用的PC兼容DOS。
最基本的MS-DOS系统由一个基于MBR的BOOT引导程序和三个文件模块组成。这三个模块是输入输出模块(IO.SYS)、文件管理模块(MSDOS.SYS)及命令解释模块(COMMAND.COM)。除此之外,微软还在零售的MS-DOS系统包中加入了若干标准的外部程序(即外部命令),这才与内部命令(即由COMMAND.COM解释执行的命令)一同构建起一个在磁盘操作时代相对完备的人机交互环境。有关MS-DOS的各种命令,请参见MS-DOS命令列表。
MS-DOS一般使用命令行界面来接受用户的指令,不过在后期的MS-DOS版本中,DOS程序也可以通过调用相应的DOS中断来进入图形模式,即DOS下的图形界面程序。
1985年11月,Microsoft Windows 1.0发布,最初售价为100美圆;当时被人所青睐的GUI电脑平台是GEM及Desqview/X,因此用户对Windows 1.0的评价并不高。
Microsoft Windows 1.0是微软第一次对个人电脑操作平台进行用户图形界面的尝试。Windows 1.0本质上宣告了MS-DOS操作系统的终结。
Microsoft Windows 1.0是Windows系列的第一个产品,于1985年开始发行。
当时很多人认为Microsoft Windows 1.0只是一个低劣的产品。当时最好的GUI电脑平台是GEM。另外一个选择是Desqview/X。

了解更多

7:计算机运行命令全集 winver———检查Windows版本
wmimgmt.msc—-打开windows管理体系结构
wupdmgr——–windows更新程序
winver———检查Windows版本
wmimgmt.msc—-打开windows管理体系结构
wupdmgr——–windows更新程序
wscript——–windows脚本宿主设置

了解更多

1、Java
Java编程语言(第三版)—Java四大名著—-James Gosling(Java之父)
Java编程思想(第2版)—-Java四大名著—-Bruce Eckel
Java编程思想(第3版)—-Java四大名著—————-Bruce Eckel
JAVA 2核心技术 卷I:基础知识(原书第7版)—Java四大名著—–Cay Horstmann
JAVA 2核心技术 卷II:高级特性(原书第7版)—-Java四大名著—–Cay Horstmann
Effective Java中文版——Java四大名著——–Joshua Bloch
精通Struts:基于MVC的Java Web设计与开发—孙卫琴
精通Hibernate:Java对象持久化技术详解—孙卫琴
Tomcat与Java Web开发技术详解————孙卫琴
Java与模式——————————阎宏
了解更多

配套软件支持
ghost浏览器:在以前的ghost版本中,我们只能对系统进行简单的备份、复制、还原,要恢复单个的文件和文件夹还要使用外带的ghostexp软
件。现在,symantec公司已经将ghost浏览器整合在软件中。ghost浏览器采用类似于资源管理器的界面,通过它,我们可以方便迅速地在备份
包中找出我们想要的文件和文件夹并还原。
gdisk:gdisk是一个新加入的实用工具,它彻底取代了fdisk和format:
* 快速格式化。
* 隐藏和显示分区的能力。此功能允许一个以上的主DOS分区,并且每个分区上的操作系统有不同的版本。隐藏分区的能力使计算机习惯于引 导到选定的可引导分区,忽略其他隐藏分区中相同操作系统的安装。
* 全面的分区报告。

了解更多

ADebug (原意杀虫子)这里是机器调试工具。

Debug常用命令集

名称 解释 格式
a (Assemble) 逐行汇编 a [address]
c (Compare) 比较两内存块 c range address
d (Dump) 内存16进制显示 d [address]或 d [range]
e (Enter) 修改内存字节 e address [list]
f (fin) 预置一段内存 f range list
g (Go) 执行程序 g [=address][address…]
h (Hexavithmetic) 制算术运算 h value value
i (Input) 从指定端口地址输入 i pataddress
l (Load) 读盘 l [address [driver seetor>
m (Move) 内存块传送 m range address
n (Name) 置文件名  n filespec [filespec…]
o (Output) 从指定端口地址输出 o portadress byte
q (Quit) 结束  q
r (Register) 显示和修改寄存器 r [register name]
s (Search) 查找字节串  s range list
t (Trace) 跟踪执行  t [=address] [value]
u (Unassemble) 反汇编 u [address ]或range
w (Write) 存盘  w [address[driver sector secnum>
? 联机帮助 ?

了解更多

和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。

String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的 String “ abc ”,其格式为:

“abc”
除了字符 “,/,/ 和一些控制符(/b,/f,/n,/r,/t)需要编码外,其他 Unicode 字符可以直接输出。下图是一个 String 的完整表示结构:

图 1. String 的完整表示结构

了解更多

首先谈谈为什么要抛弃PS/2,很简单就是因为USB端口绝对的方便,支持热插拔和即插即用,因此可以大大方便我们平时的使用。每台电脑理论上可以支持 127个USB接口,随着USB的发展成熟,USB很有可能统一计算机接口,另外陈旧的PS/2接口有其本身的弊端,抛开热插拔等不说,PS/2接口在插入的时候很不方便,6个细小的针脚很难对准,而且很容易造成针脚的弯曲、折断。所以我们有理由通过改造去抛弃它。

仔细研究一下两种接口的针脚,PS/2的针脚是6针的,而USB针脚却是4针,两者都提供+5v的电压。拆开键盘(小心里边的橡胶小帽儿,弄不好撒的到处都是,别说我没提醒你),里边竟然有4根线(黄、红、白、绿),这就说明真正起作用的也就是4个针脚,和USB应该是一一对应的。有了这点我想改造基本上是可行的,马上找了相关针脚资料看看。

了解更多

在一些环境下例如samba 加 apache这种环境下,开发者通过samba 映射到本地开发,我们在给文件夹权限时最后产生疑问,samba虽然里面有设置相关生成文件夹及文件的权限,但apache没有相关的设置选项,用户手动创建的文件可以删除,但apache自动产生的文件的权限采用的是系统默认的022掩码,这就造成,生成后的文件没有相应的删除权限,这时我们可以在apachectl 这个文件里面加入

umask 002

这时apache进程产生的都将是以这个掩码为标准的权限设置。