标签为 总结 的文章

2010年7月9日~11日工作札记

-----------------------------------------------------------------------------
1.中兴Corba接口程序在Windows下正常运行,但在Linux通过get方式取数据无问题,交互式却无返回数据信息(即由客户端push一个请求后由服务端主动将数据发送到给客户端的方式)。
期间中兴公司强势,仅提供了程序运行环境,不愿意配合调试,使问题的定位遇到了很大困难。

还好最终解决并找到了问题的原因,中兴Corbal程序会通过Linux客户端的hosts文件第一行返回的主机名和IP记录反解析后通过主机名回连客户端,但Linux的hosts文件默认第一行是127.0.0.1,解决办法是将127.0.0.1记录下移,而将133地址主机记录上移到第一行即可;

心得:当数据传输存在问题时,在排除了网络问题后,尽量思考程序的工作原理,从程序本身找原因。
-----------------------------------------------------------------------------
2.开发人员误操作,将原有的共20多张Oracle表空间物理数据文件直接用rm命令删除了,使得数据库在关闭后,就再无法启动。

最终解决办法:鉴于删除的表空间文件中的数据都不重要,因此重建整个数据库表空间结构,将已经删除的表空间文件所在结构删除,使数据库能够正常启动。 具体解决办法可参考以下资料:
http://hi.baidu.com/_linzi_/blog/item/d73855c48d3b85ce38db4959.html
http://zhoulifa.bokee.com/3286710.html

心得:通过几次出现的对Oracle直接删除数据文件、归档日志、REDO日志等问题来看,将基本的数据库维护注意事项要告之开发人员以及维护人员,是相当有必要的。
另外,在条件允许的情况下,尽量不要让开发人员与普通维护人员具有直接操作生产环境的权限。
-----------------------------------------------------------------------------
3.系统中的MapInfo地图无法显示,使平台的重要功能完全不能使用,前期所有开发人员都怀疑是操作系统字符集编码问题,因为地图程序在Windows上运行正常,在Linux就无法显示,且后台日志没有任何错误提示。

最后在通过各种方法尝试处理操作系统的字符集编码时,找到了软件上的一个漏洞,即地图文件存在与否都没有告警信息日志产生,借由这个漏洞配合程序员找到了代码中的问题,代码中针对操作系统的不同有不同的地图路径返回值,Linux默认返回值有问题,而该段代码又是没有日志抛出的,造成问题很难查找,最后通过修改代码后解决了问题。

心得:Java是跨平台的,但是代码不一定是跨平台的,因此在面临平台迁移后的问题时,不要首先排除代码的问题,而把目光聚焦在操作系统层面。
在重要的程序代码处,一定要将错误与告警信息抛出到日志中,便于在出现问题时进行跟踪。
-----------------------------------------------------------------------------

No Comments

子网掩码的定义与计算[原创总结]

按IP协议的子网标准规定,每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址(包括网络部分和子网掩码号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。

例如二进制位模式:11111111 11111111 11111111 00000000中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个字节全0,代表对应IP地址中最后的一个字节为主机地址。为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如C类地址子网掩码(11111111 11111111 11111111 00000000)为:255.255.255.0。

IP协议关于子网掩码的定义提供一定的灵活性,允许子网掩码中的 “0”和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难。并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码,像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用。

所以,一般可用来使用的掩码数值就只有以下了:
256-(128 64 32 16 8 4 2 1)=128,192,224,240,248,252,254,255。

这里面的(1 2 4 8 16 32 64 128)是我们的8个不同位数的1所计算出来的数值,可以用来作为主机数区间,意思就是,如果你需要60个IP,那么你就必须选择32-64的区间,那么掩码就是256-64=192,就是8+8+8+2=26位掩码了,即前24位+192的(11 00 0000 )的2位1。

关于位数的计算有个简单的方法,通过按照下面的排列来计算:
128 64 32 16 8 4 2 1
192就是128+64,那么就是2位1了咯,同样224=128+64+32,所以224就是3位1了咯,依次推理240就是4位1了。

通过上面的方法,可以根据所需的IP个数来快速的选择所需的掩码。

另外,很多时候需要通过已知的掩码,来计算IP所在的子网范围,方法其实也很简单:
比如,已知网络地址是 10.10.10.90/28,那么它的子网掩码就8+8+8+4,对应的掩码地址就是 256 - 16(2的4次方) = 240。
将0-255以每16个地址来划分出区块,90这个IP位于 16*5=80 与 16*6=96之间。
而80为全0子网地址,95为全1广播地址,因此IP范围就是 10.10.10.81 - 10.10.10.94。

这里,再给大家分享一个Windows上的图形小工具,可以完成上面的计算。
下载地址:http://heylinux.com/wp-content/uploads/2009/12/SubnetMask.zip
subnetmask

2 Comments

2008年7月30日工作札记

2008年7月30日工作札记
------------------------------------------------------------------------------------------------------------------------
1.Windows下双网卡设置默认路由的方法:
在外网网口的TCP/IP属性中设置 外网的IP地址、掩码和网关;
在内网网口的TCP/IP属性中设置 内网的IP地址、掩码,而不设置网关;
在DOS命令行添加以下语句:
Route -p ADD 10.0.0.0 MASK 255.0.0.0 10.10.10.1 METRIC 2 IF 2
或建立一个routeadd.bat文件,写入以下内容,然后放到“开始”菜单的“启动”文件夹中开机自动运行:
Route -p ADD 10.0.0.0 MASK 255.0.0.0 10.10.10.1 METRIC 2 IF 2
Route ADD 10.0.0.0 MASK 255.0.0.0 10.10.10.1 METRIC 2 IF 2
如此,便以外网的网关为默认网关,所有线路都会从默认网关出去,而10.x.x.x的内网线路则会从网关10.10.10.1出去,METRIC设置为2是因为其跃点数(可理解为优先级)最好低于默认网关的1,IF 2 是指定系统的网卡,也可以不加,一般系统会默认检测到其网段是在哪一张网卡上。
2.Linux下双网卡设置默认路由的方法:
在外网网口的配置文件中 设置 外网的IP地址、掩码和网关;
在内网网口的TCP/IP属性中设置 内网的IP地址、掩码,而不设置网关;
在Linux终端中执行以下命令:
route add default gw 192.168.1.1
添加默认网关(如果在外网网卡的配置文件中设置了这里会默认为外网网关,不需要再设置);
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.10.10.1 dev eth1 metric 2
将该指令也添加到 /etc/rc.local文件中以便每次开启系统自动添加该路由;
如此,便以外网的网关为默认网关,所有线路都会从默认网关出去,而10.x.x.x的内网线路则会从网关10.10.10.1出去,METRIC设置为2是因为其跃点数(可理解为优先级)最好低于默认网关的1,dev eth1 是指定系统的网卡。
------------------------------------------------------------------------------------------------------------------------
Windows 2000 Advanced Server 开机时报错“系统日志文件已被写满”;
然后发现已经装好的VNC server不能再通过客户端以“NT服务验证”的方式登陆,错误为在输入密码后提示有一个验证错误,请查看系统日志文件;
接着打开日志查看器,发现“应用程序日志”的确已经被写满,且点击该日志准备查看具体内容是,日志查看器突然自动关闭;
后来才发现是因为安装了FTP服务器Serv-U所导致的,卸载了Serv-U之后即恢复正常,VNC无法通过验证是因为其每一次以NT服务验证方式登陆都会在系统日志中记录,而日志被写满后无法再写入任何信息所以出错;
建议将系统日志文件的大小由默认的512K增大到10M左右,512K实在太小了,7天的清理时间也可根据需要修改。
------------------------------------------------------------------------------------------------------------------------
因为Serv-U与系统冲突,所以开始寻找一个其它的FTP服务器软件,无意间发现了一个好东西:
一个大小仅为27KB的,完全绿色的FTP服务器软件,仅一个exe文件,很方便好用,下载地址:
http://d.download.csdn.net/down/449212/daxingge
------------------------------------------------------------------------------------------------------------------------
如何将一个Windows的exe程序成功转换(用“注册”更贴切)为系统服务呢?
在网上查找了很多方法,下载了一些工具和软件,但是,很不幸,很多exe转换为服务之后都不能正确启动,那些用 service.exe、sc.exe以及SRVINSTW.EXE的都不能正确执行。
最后,终于在茫茫网络中找到了一位前辈的“批处理+工具”搞定了。
其软件下载地址:http://cpiz.com/blog/archives/174
------------------------------------------------------------------------------------------------------------------------
反省,以后给公司项目组搭环境的时候,要做得更专业些:
1.在搭建项目的前期,要提出合理的架构设计,考虑到之后的扩充性;更关键的是,在架构设计出来之后一定要通过局方的人同意再实施,否则后期返工带来的麻烦就相当大了;
2.在项目实施中,一定要考虑到如何让他人使用和维护起来很方便,一方面要提供完善的、包括了整个系统的搭建过程、后期如何维护和使用 的文档;一方面要 编写好一系列的shell脚本,以用途命名以方便开发人员和维护人员 的使用 以及 建立备份目录来存放备份文件,写好备份的shell脚本并加入到计划任务中进行定时备份和清理;
3.一定要考虑到系统监控和维护工具的安装,例如磁盘阵列柜,在开始就要安装好磁盘阵列的管理工具,以方便之后能够直接检查到盘阵中的磁盘健康程度以及是否有坏盘等,否则在后期因为一些商用软件的注册都需要机器码,而安装这些管理工具时会装一些驱动,导致其商用软件的机器码改变,从而无法使用,很是麻烦。

No Comments