[转]图解冲突域、广播域

网络互连设备可以将网络划分为不同的冲突域、广播域。但是,由于不同的网络互连设备可能工作在OSI模型的不同层次上。因此,它们划分冲突域、广播域的效果也就各不相同。如中继器工作在物理层,网桥和交换机工作在数据链路层,路由器工作在网络层,而网关工作在OSI模型的上三层。而每一层的网络互连设备要根据不同层次的特点完成各自不同的任务。
下面我们讨论常见的网络互连设备的工作原理以及它们在划分冲突域、广播域时各自的特点。
1、传统以太网操作
传统共享式以太网的典型代表是总线型以太网。在这种类型的以太网中,通信信道只有一个,采用介质共享(介质争用)的访问方法(第1章中介绍的 CSMA/CD介质访问方法)。每个站点在发送数据之前首先要侦听网络是否空闲,如果空闲就发送数据。否则,继续侦听直到网络空闲。如果两个站点同时检测 到介质空闲并同时发送出一帧数据,则会导致数据帧的冲突,双方的数据帧均被破坏。这时,两个站点将采用"二进制指数退避"的方法各自等待一段随机的时间再 侦听、发送。
在图1中,主机A只是想要发送一个单播数据包给主机B。但由于传统共享式以太网的广播性质,接入到总线上的所有主机 都将收到此单播数据包。同时,此时如果任何第二方,包括主机B也要发送数据到总线上都将冲突,导致双方数据发送失败。我们称连接在总线上的所有主机共同构 成了一个冲突域。
当主机A发送一个目标是所有主机的广播类型数据包时,总线上的所有主机都要接收该广播数据包,并检查广播数据包的内容,如果需要的话加以进一步的处理。我们称连接在总线上的所有主机共同构成了一个广播域。

图1 传统以太网
2、中继器(Repeater)
中继器(Repeater)作为一个实际产品出现主要有两个原因:
第一,扩展网络距离,将衰减信号经过再生。
第二,实现粗同轴电缆以太网和细同轴电缆以太网的互连。
通过中继器虽然可以延长信号传输的距离、实现两个网段的互连。但并没有增加网络的可用带宽。如图2所示,网段1和网段2经过中继器连接后构成了一个单个的冲突域和广播域。

图2 中继器连接的网络
3、集线器(HUB)
集线器实际上相当于多端口(在本章,我们常用"端口"一词代替"接口"这个术语)的中继器。集线器通常有8个、16个或24个等数量不等的接口。
集线器同样可以延长网络的通信距离,或连接物理结构不同的网络,但主要还是作为一个主机站点的汇聚点,将连接在集线器上各个接口上的主机联系起来使之可以互相通信。
如图3所示,所有主机都连接到中心节点的集线器上构成一个物理上的星型连接。但实际上,在集线器内部,各接口都是通过背板总线连接在一起的,在逻辑上仍构成一个共享的总线。因此,集线器和其所有接口所接的主机共同构成了一个冲突域和一个广播域。

图3 集线器连接的网络
4、网桥(Bridge)
网桥(Bridge)又称为桥接器。和中继器类似,传统的网桥只有两个端口,用于连接不同的网段。和中继器不同的是,网桥具有一定的"智能"性,可以"学习"网络上主机的地址,同时具有信号过滤的功能。
如图4所示,网段1的主机A发给主机B的数据包不会被网桥转发到网段2。因为,网桥可以识别这是网段1内部的通信数据流。同样,网段2的主机X发给主机 Y的数据包也不会被网桥转发到网段1。可见,网桥可以将一个冲突域分割为两个。其中,每个冲突域共享自己的总线信道带宽。

图4 网桥连接的网络
但是,如果主机C发送了一个目标是所有主机的广播类型数据包时,网桥要转发这样的数据包。网桥两侧的两个网段总线上的所有主机都要接收该广播数据包。因此,网段1和网段2仍属于同一个广播域。
5、交换机(Switch)
交换机(Switch)也被称为交换式集线器。它的出现是为了解决连接在集线器上的所有主机共享可用带宽的缺陷。
交换机是通过为需要通信的两台主机直接建立专用的通信信道来增加可用带宽的。从这个角度上来讲,交换机相当于多端口网桥。
如图5所示,交换机为主机A和主机B建立一条专用的信道,也为主机C和主机D建立一条专用的信道。只有当某个接口直接连接了一个集线器,而集线器又连接 了多台主机时,交换机上的该接口和集线器上所连的所有主机才可能产生冲突,形成冲突域。换句话说,交换机上的每个接口都是自己的一个冲突域。

图5 交换机连接的网络
但是,交换机同样没有过滤广播通信的功能。如果交换机收到一个广播数据包后,它会向其所有的端口转发此广播数据包。因此,交换机和其所有接口所连接的主机共同构成了一个广播域。
我们将使用交换机作为互连设备的局域网称为交换式局域网。
交换机不能避免产生广播风暴。交换机是二层的,虽然是点对点,但是广播风暴针对的是三层的,在广播域里面发生的。所以使用交换机不能避免产生广播风暴。
顾名思义,广播风暴当然是由不正常的广播引起的
但广播风暴不都是有PC 所引起的,有广播能力的二层或三层都可以产生广播风暴
二层上也有广播风暴,HUB上会出现得比较多,switch的出现很大程度上缓解了二层上的广播风暴
三层上的广播可以通过划分VLAN来缓解和隔离
广播风暴不能完全消除,但可以避免它的扩散和对整个网络的影响
并不是说是说使用了3层交换机就能够避免广播风暴了,广播风暴通常是由2层的环路导致的非常恶劣的影响. 3层的话只是说隔离的广播域而已。
如果真要避免广播风暴的话还是得从2层环路的避免以及LAN内部的攻击方面考虑去解决问题!
默认情况下交换机都启用了STP协议所以可以避免风暴。
“那问题是使用了交换机,到底能不能避免广播风暴?” 广播风暴是存在的不管是不是用了交换机都有风暴在里面,因此不能绝对的说“使用了交换机就能够避免广播风暴”。
另外,就是因为使用了交换机产生风暴所以才会有STP、PVST+等协议的出现。
若按你的说发“那问题是使用了交换机,到底能不能避免广播风暴?”若说能避免,那么还要用STP协议干嘛? 若说不能,那么全部是用路由器不就得了?(不知楼主明不明白我的意思,偶语文水平有点差,嗯~~~)
6、路由器(Router)
路由器工作在网络层,可以识别网络层的地址-IP地址,有能力过滤第3层的广播消息。实际上,除非做特殊配置,否则路由器从不转发广播类型的数据包。因 此,路由器的每个端口所连接的网络都独自构成一个广播域。如图6所示,如果各网段都是共享式局域网,则每网段自己构成一个独立的冲突域。

图6 路由器连接的网络
7、网关(Gateway)
网关工作在OSI参考模型的高三层,因此,并不使用冲突域、广播域的概念。网关主要用来进行高层协议之间的转换。例如,充当LOTUS 1-2-3邮件服务和Microsoft Exchange邮件服务之间的邮件网关。
注意,这里网关的概念完全不同于PC主机以及路由器上配置的默认网关(default gateway)。

Continue reading [转]图解冲突域、广播域

hyperic hq笔记

下载包的时候最好选择版本,它看你下载的平台默认为win32的。
http://sourceforge.net/projects/hyperic-hq/files/

在线文档说明安装步骤比较详细
http://support.hyperic.com/display/DOC/HQ+Documentation
默认安装的话(不带任何参数),就是自带的数据库postgresql ,解压缩后的安装bat脚本有些古怪,必须直接执行才可以,把它拖到,命令行执行反而不行。agent安装后,启动命令在安装目录下buldles文件夹下的bin里面,而不是安装目录的bin下面,搞不懂。

下载源码:
http://hyperic-hq.svn.sourceforge.net/viewvc/hyperic-hq/src/?view=tar

稍微看了一下tomcat plugin写法,基于jmx,要求tomcat开放jmx服务才行。
tomcat6是自动发现了,但是没有发现本机的tomcat5.5
plugin分针对server的和针对agent的。

HQU--可认为是服务端plugin,用于增加监视器,UI界面等。
http://support.hyperic.com/display/hypcomm/HQU+Documentation
4.5
http://support.hyperic.com/display/EVO/Introduction+to+Plugin+Development

如下的文档又说可以放在agent目录下面
http://support.hyperic.com/display/DOC/Plugin+Development+Center

对于ipf admin来说,只需要服务端plugin(JMX)来监听个机器上开放的(JVM Managaer)服务即可。

使用pdk:<Agent Directory>/pdk

这个Server UI大概是struts2写的,奇慢,又丑,……

测试本地jmx都没自动发现

Server 下面的tomcat的控制说明可知,需要配置tomcat才能控制
To configure Tomcat for JMX monitoring see http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html.
For a quick down and dirty method follow these instructions,
in /bin/catalina.sh add:
[ $1 != "stop" ] && JAVA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=6969 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
export JAVA_OPTS
看来还得自己实现
4.5的文档
http://support.hyperic.com/display/EVO/
用户手册中说
jmx必须自己配置plugin

它的文档真是恼火,看半天还是从这里看到一些信息:

The 3.0.2 and earlier versions of the MxServerDetector would auto-configure jmx.url using the port defined by the command line argument:
-Dcom.sun.management.jmxremote.port=xxxx

Servers run with just the local connector enabled do not define a port, so the jmx.url ptql query must be manually configured.
This enhancement will auto-configure jmx.url to use the local connector if java is start with -Dcom.sun.management.jmxremote and ptql query is defined as the value like so:
-

Dcom.sun.management.jmxremote=ptql:State.Name.eq=java,Args.*.eq=org.hyperic.MyMainClass

Note: for standalone apps using the "Sun JVM 1.5" server type, server auto-discovery is not enabled by default. It can be turned on by adding the following to agent.properties:
jmx.sun.discover=true

对于下面这样一段话,我看了n遍不知道什么意思,简直要骂人!

1. This code provides two methods — of which you must use one — for defining the install (base) path for
the process.style="width: 575px;height: 169px">

<!-- derive installpath from JAVA_HOME env prop... -->
<property name="PROC_HOME_ENV" value="JAVA_HOME"/>
<!-- derive installpath from -Dproc.java.home=... -->
<property name="PROC_HOME_PROPERTY" value="proc.java.home"/>

If using the first method, replace JAVA_HOME with the environmental property of the process. If using the

second method, replace proc.java.home with the defined name-value pair argument of the process; the

MxServer Detector class uses this variable to perform auto-discovery.

You could instead use a third method:

>

<property name="PROC_MAIN_CLASS" value="proc.java.home"/>

As with PROC_HOME_PROPERTY, this variable tells the MxServerDetector class to autodiscover the process

with this PTQL: State.Name.eq=java,Args.*.sw=-D<value of proc main class>.

Any of these methods will set the installpath config variable to be the current working directory of the process

in question. And while this is particularly useful for log-tracking and control plugins (which are outside the

scope of this tutorial), this value is also used later [55] in this XML descriptor.

安装配置手册里面:

agent向服务端发送数据包。

serveragent发送指令。

agent第一次连接server时会告知向server开放的端口,server记在database里面发起连接。

手册上说agent启动脚本是直接在agent_home/bin下的脚本。

linux下面是如此,但是windows下似乎要在bundles里面的。

如果出现No token file found, waiting for Agent to initialize的提示,说明原来的已经有个agent占用同样的端口运行在,需要停止。[这提示真是很威武]

57上安装agent后,能现实的就只有系统状态,其余都看不到。

   

websphere似乎是通过对安装路径里的分析来获得属性的。

api示例:

http://svn.hyperic.org/projects/hqapi/trunk/src/org/hyperic/hq/hqapi1/test/

不考虑跳过hyperic Server而写自己的jmx监视MBean的原因:

hyperic server 对于weblogic和websphere都有扩展的监控,如果跳过可能以后不好继续使用这方面的功能。

hyperic server还是做了些事情的,跳过它就丢弃了他提供的功能。

hyperic的支持非常差,经常搜到的问题没有回复。也需要购买才行吧。

测试:

对于如下的实例

<?xml version="1.0"?>

<plugin name="myjmx">

<server name="myjmx">

<property name="OBJECT_NAME"

value="*:type=abc"/>

<!-- derive installpath from -Djonas.base=... –>

line:10<property name="PROC_HOME_PROPERTY" value="proc.java.home" />

line:11<property name="PROC_MAIN_CLASS" value="co.ipmc.test.IpfServer"/>

<!-- XXX need to support time-stamp format -->

<property name="DEFAULT_LOG_FILE" value="logs/my.log" />

<config>

<option name="jmx.url" description="JMX URL to MBeanServer"

default="service:jmx:rmi:///jndi/rmi://localhost:29999/server" />

<option name="process.query" description="PTQL for Java Process" default="State.Name.eq=java,Args.*.sw=proc.java.home"/>

</config>

<properties>

<property name="serverVersion" description="Server Version" />

<property name="serverVendor" description="Server Vendor" />

</properties>

<plugin type="log_track"

class="org.hyperic.hq.product.Log4JLogTrackPlugin" />

<plugin type="autoinventory"

class="org.hyperic.hq.product.jmx.MxServerDetector" />

</server>

</plugin>

对于10,11行,需要在运行的命令加入参数,如下

java -jar run-test.jar -Dproc.java.home=/usr/java/jdk1.6.0_17 co.ipmc.test.IpfServer

注意,就算run-test.jar包里面已经指明了主类,任然要在命令行里面写出主类。不然就找不到。

最终通过如下命令测试

java -jar bundles/agent-4.5.1/pdk/lib/hq-pdk-4.5.1.jar -Dplugin.include=myjmx -p myjmx -m discover

 

终于发现了这个server了

ERROR [Thread-1] [MxServerDetector] 'myjmx 3.0 Linux' measurement plugin not found

org.hyperic.hq.product.PluginNotFoundException: measurement plugin name=myjmx 3.0 Linux not found

    at org.hyperic.hq.product.PluginManager.getPlugin(PluginManager.java:286)

    at org.hyperic.hq.product.ServerDetector.mergeConfigDefaults(ServerDetector.java:991)

    at org.hyperic.hq.product.ServerDetector.setMeasurementConfig(ServerDetector.java:1024)

    at org.hyperic.hq.product.DaemonDetector.newServerResource(DaemonDetector.java:201)

    at org.hyperic.hq.product.jmx.MxServerDetector.getServerResource(MxServerDetector.java:323)

    at org.hyperic.hq.product.jmx.MxServerDetector.getServerResources(MxServerDetector.java:379)

    at org.hyperic.hq.autoinventory.scanimpl.NullScan.scan(NullScan.java:83)

    at org.hyperic.hq.autoinventory.Scanner.start(Scanner.java:198)

    at org.hyperic.hq.autoinventory.ScanManager.mainRunLoop(ScanManager.java:141)

    at org.hyperic.hq.autoinventory.ScanManager.access$000(ScanManager.java:41)

    at org.hyperic.hq.autoinventory.ScanManager$1.run(ScanManager.java:107)

1 servers detected

Server: SERV myjmx 3.0 [/usr/java/jdk1.6.0_17]

AIID...../usr/java/jdk1.6.0_17

config...

product..process.query=State.Name.sw=java,Args.*.eq=co.ipmc.test.IpfServer,Args.*.eq=-Dproc.java.home=/usr/java/jdk1.6.0_17,jmx.url=service:jmx:rmi:///jndi/rmi://localhost:29999/server,

metric...

control..null

Runtime Resource Report...

Platform=Linux, fqdn=192.168.0.10 (CentOS 5.2)

config...

product..null

metric...platform.log_track.level=Warn,platform.log_track.enable=true,platform.config_track.enable=true,

control..null

cprops...cpuSpeed=8 @ 2128 MHz (8x16),defaultGateway=192.168.0.1,arch=x86_64,ram=16000 MB,vendor=CentOS,vendorVersion=5.2,primaryDNS=192.168.0.1,ip=192.168.122.1,version=2.6.18-92.el5xen,

   [No services discovered]

然后兴冲冲的去重启agent,不断地刷server,仍然没出来。

什么错也没报。真是很无语,这种东西用起来真吃力呀!

到此为止吧,就算我愚钝不堪,仅为这么个基本的jmx配置就搞这半天,这个工具也太不好用了吧。

总结一下感觉不爽的地方:

  • 相关资料稀少,使用者提出的问题鲜有人回答,往往是使用者之间的沟通而没有支持与使用者的沟通。估计使用的人也不多。
  • 官方写的文档这里引用那里,那里引用这里,转的头昏脑胀还是没搞明白,它就是不让你看懂。
  • HQ server的UI太俗不说,反应非常慢,一个操作要隔几秒钟,按得我手疼。
  • 本机器上安装server后,机器反应速度奇慢,关闭server服务则明显改善,如果再跑上个agent那更不得了。我对其性能持怀疑态度,如果agent所在服务器服务多,再开上个agent那就是雪上加霜,不知这样的监控有多少可评测性。

Continue reading hyperic hq笔记

QQ对战平台挤房器纯洁无毒版发布

本人爱玩星际,绝对菜鸟一族,QQ对战平台菜鸟群殴是我的最爱,但是挤房间很痛苦。网上下的挤房器都有毒,无奈之下自己写了个,绝对傻瓜,但也绝对纯洁。星际快乐:) .

挤房器下载地址

使用win7的筒子们,需要使用管理员权限运行此软件,如果看到乱码,你就使用F2(开始)和F3(停止)这两个按钮就行了。注意要将鼠标放在你想挤的房间上面哦。

Continue reading QQ对战平台挤房器纯洁无毒版发布

[随想]软件的务实

2010-07-09 23:04

提示:软件书籍中常常见到所谓“企业级开发”,“企业级应用”。软件工程师们也津津乐道于此类词汇。纵观java的发展历程,促进其发展的因素往往是来自实际项目总结出来的需求,而不是此消彼长的众多概念;
大型项目到底有多大,做一点事情就”高瞻远瞩“,webservice,SOA,Mashup,基于构件,基于服务,弄出一堆好看不好用,实际应用到底需不需要这些;
hibernate,spring为什么不知觉中抛弃了ejb;
最近又发现很多很潮的概念都是IBM提出来的,想想微软也是爱忽悠,筒子们以后看他们的文章要多个心眼啊,不要不小心就成为他们的跟屁虫了.
最后International Big Mouse --shit!

Continue reading [随想]软件的务实

the object invoked has disconnected from its clients 问题

IE8 下出现 the object invoked has disconnected from its clients 脚本错误:
原因是跨窗体创建数组。解决办法是,数组在主窗体创建,而不要在别的窗体创建它。
It seems like it is no longer safe to pass objects between windows. If the window that created the object is closed, the object will no longer be usable in other places. This causes a problems for popup-windows that tried to "remember" the active tab. The information must be stored in the main page, and the array object is created by the popup page. But once the popup was closed, the array could no longer be used. The result was an error message: the object invoked has disconnected from its clients. The solution is to let the main page create the array.

Continue reading the object invoked has disconnected from its clients 问题

window.open 子窗体的onload事件

下面的写法:
<script type="text/javascript">
function ops(){
var win = window.open('','_blank');
win.onload = function(){
alert('ok');
};
win.location.href = 'test.html';
}
</script>
</head>
<body>
<div class="bb" onclick="ops();">
圆角三边 这里是内容
</div>
</body>
火狐里面是可以alert的,但是ie8就不行。
解决办法是子窗体调父窗体的方法模拟回调。(IE真是让人纠结。)

Continue reading window.open 子窗体的onload事件

我看人件

[44/13]不要对员工太敏感,因为一个短期的考察结果错误的判断了长期的情况。
[]有些功力是无法用实际度量的,还是不要太急躁。--催化剂效应
西班牙人理论和英国人理论--看看英联邦国家和南美国家的现状就可以比较。
没有加班这回事--在中国企业,行得通吗?
人员流动的成本,有经验的和没经验的,对公司的感情?原始居民比率?
[62/31]
[70/39]越是成熟的公司,工作越无趣--你以为 google是例外?
第六章:苦杏仁苷
这与我的软件务实一个意思
[89/58]
一人一间办公室,做梦吧,中国
[102/71]

度量标准,度量往往是起反作用的。你怎么度量一个人?用评分制?中国高考是好参照。这是反话!

[113/82]

flow顺流,环境因子=不被打扰的时间/体力出勤时间.

电话

关门

一起工作的在一间办公室

[136/105]

窗子,空间,平等,特色……

爆米花不够专业

工作试讲,能力倾向性测试

[170/139]

公司 搬迁--说白了,还是要为员工考虑而不是其他的理由

员工的归属感,注重培养,培训,好的公司人员流动率低

[181/150]

当一个团队被完全确定了的程度时,他就完全丧失了自愈能力。

【被确定我觉得是指它的功效,能力等方面。大方法论-按照方法来,按部就班,那么最终会达到一个目的。做好了,是方法论定好了的,本该如此,没做好,那是你团队的问题。-这个论调你会经常碰到----这期间团队员工的付出努力一开始就被忽略了。

为什么会产生方法论?

你遇到一个比较复杂的问题时,你希望它的最终结果是顺利解决。那么你使用你“高瞻远瞩”的眼光和思考能力想出一个流程来解决这个问题,你认为你所想出的流程会解决大部分问题,这就是方法论。】

[183/152]

大方法论的疯狂

1:繁文缛节

2:极小量的方法

3:缺少责任感

4:缺少激励机制

[185/154]

脑力劳动员工强烈的独立意识,在新的前沿工作的牛仔意识。--我们应该尊重这种意识

完成方法汇集的方法

1:培训

2:工具支持

3:同级评审

不要轻易制定标准,规则

霍桑效应:人们在尝试新东西时,他们会表现得更好--应该是针对年轻人

标准必须要灵活宽松,让人有发挥的空间。所以不能太细。

[193/162]

胶东团队,只需要为他们排除障碍保证没人挡路,不需要传统的管理他们,他们自己会有动力。

一个团队的目的不是达到目的而是向目的看齐

[229/198]

公司亲和力建设策略

1:质量崇拜

2:提供更多令人满意的完型[closure]--制定合适时间段的目标,并让团队完成它。将大的目标分切为阶段式的目标。不要人觉得遥遥无期。

[233/202]

3:建立精英意识--要坐就要坐头等舱,施乐公司

4:允许和鼓励异端

5:保持和保护成功的团队

6:提供战略而不是战术指导

团队是平级的集合体,经理不是团队成员

经理的工作室把混乱拆散再分发出去

适当的的混乱是动力

一个项目中不要尝试太多的新技术,最好专注一方面的新技术,不要四面出击

社会学比技术或钱更重要

[264/233]

海报往往在贬低你

孩子之间不要竞争,团队成员之间也是如此

个人的成功注定要与整体的成功相联系

[273/242]

开始贬CMM,呵呵。

当今世界有关标准的成功都是有关标准接口的成功而不是产生这些接口的过程!

[282/251]

对于CMM,不要为了评级而评级。在提高纯熟度的时候,尽量不要考虑评分的事情。

[301/341]

人力成本,投资和支出是两回事。有经验员工的衔接时间。

公司的学习

      如果流动量大,学习就不可能坚持

成功的学习的公司总是以强大的中层管理层为特点。

中层间需要保持畅通的交流,但是实际中往往存在相反的情况。

项目早期[设计阶段]可保持少量人员.

时间分割[一人同时多个任务]是浪费时间。

[322/291]

社区的重要性

[完]

------------------

如果是中国人写这样的言论,那似乎在说梦话。然而这本书都是通过实际的例子来说明的,可惜他们都不是在中国发生的。也就看看而已……

Continue reading 我看人件

IT人 相轻

一晃IT行业做得有些岁月了,虽然没参加过几次面试,但是几乎次次感受到“IT人相轻”,在工作中也是如此,对于同事,也倾向于证明别人是水枪。
也面试过别人一次,说实话那人确实很水,但我不想鄙视你呀,我想的是找一个工作的伙伴啊,所以我尽量平和的问一些你熟悉的问题呀,靠,你倒好,反倒比我还大大咧咧,倒鄙视起我来了,非得我旁边的外行问你才消得了你的气焰。
也常看javaeye的文章,经常是口水大战,火药味十足,我也只是笑笑,从来不发表言论,看看吵架也是猥琐的乐事。
有些人事业比较顺的时候,就发那么一篇闷骚的帖子,极力掩盖的炫耀一番,但是表面上看去确实彪悍了一番。哎,吵来吵去不都是些打工的人吗,多个一万两万的月薪,今天你鄙视我,明天我鄙视你,确实乐此不疲!
为什么与老板直接面试的时候感觉就好些呢,觉得他是求贤若渴一般。
为什么IT人士普遍有这种现象呢,得思考一番……
也许,是竞争的关系吧……

Continue reading IT人 相轻

Pagination


Total views.

© 2013 - 2023. All rights reserved.

Powered by Hydejack v6.6.1