'随记' 目录归档

广告定义与发展

定义 广而告之         广而告之。广告是为了某种特定的需要,通过一定形式的媒体,公开而广泛地向公众传递信息的宣传手段,广告有广义和狭义之分。         广义广告包括非经济广告和经济广告,非经济广告指不以盈利为目的的广告,又称效应广告,如政府行政部门、社会事业单位乃至个人的各种公告、启事、声明等,主要目的是推广;         狭义广告仅指经济广告,又称商业广告,是指以盈利为目的的广告,通常是商品生产者、经营者和消费者之间沟通信息的重要手段,或企业占领市场、推销产品、提供劳务的重要形式,主要目的是扩大经济效益。         —— 百度百科 传播活动         广告是由已确定的出资人通过各种媒介进行的相关产品(商品、服务和观点)的、有偿的、有组织的、综合的、劝服性的非人...

阅读全文

TCP长连接一端宕机(掉电,拔网线)会发生什么?

场景: 客户端与服务端通过tcp长连接的方式进行数据交互,当服务端机器突然宕机(掉电、拔网线等)客户端会发生什么。 过程: 正常情况下当服务端执行kill -9/-12/-15 客户端会收到-1的数据包,当客户端收到-1数据包时,执行关闭socket既可以正常关闭socket。(关闭socket执行正常4次握手过程)         回到问题本身,为了复现该问题,我们找两台机器进行测试,客户端(x.x.156.57)服务端(x.x.36.14)通过tcp长连接进行数据交互,客户端先发送10条数据到服务端,然后sleep 3分钟,客户端sleep的过程中,关闭服务端(服务端机器不关进程直接执行poweroff模拟宕机情况).客户端sleep 3分钟后,再给服务端发送一条数据。 1、当服务端宕机...

阅读全文

TCP主动关闭连接原理简介

        在编写网络通信模块时,经常会遇到主动断开连接和被动断开连接的情况,针对主动断开连接时,要执行4次握手过程。而非正常断开连接有多种,比如说 连接的一端执行kill -9时,另一端需要针对 -1 状态码做处理,然后调用close主动断开连接。还有一种情况是链接的一端宕机(拔网线、掉电),这种情况请参考 “TCP长连接一端宕机(掉电,拔网线)会发生什么?”         这里主要说的是主动关闭连接情况。关闭4次握手过程如下图:         假如连接的两端分别为客户端(C)和服务端(S)。         一、C/S 执行close 客户端(C)或者服务端(S)一端执行关闭时,另一端会捕获到 -1 状态码,当获取到 -1 状态码时应该主动关闭,否则当前连接为坏连接。 看到这点的...

阅读全文

java面试题

问题:switch(exp)语句能作用的数据类型 参考答案: 问题:说出ArrayList,Vector, LinkedList的存储性能和特性 参考答案:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 问题:Collection 和 Collections的区别 参考答案:Collection是...

阅读全文

浅谈自动化测试

为什么要做自动化 纵观整个软件测试的发展,我们就不难理解自动化测试深厚的“群众基础”了。 自动化测试是随着软件开发的规模和迭代的速度而产生的,这是历史发展的必然,因此作为测试人员来说,必须要顺应这个发展趋势,否则就会被社会滚滚向前的车轮所碾压,消失在了历史的长河中,消无声息。 自动化测试的实现 要实现自动化测试就需要测试人员有一定的编码能力,能够实现测试工具的开发和应用,那就会有部分测试人员提出疑问了:对于测试人员来说,开发能力成了我们的核心竞争力?那我们如何竞争得过专业的开发同学呢? 这个问题咱们放到后面专门的文章里再具体讨论,先来看看现在测试行业中自动化测试的现状如何? 首先从我收到的简历来看,大多数人在简历中会写上有自动测试经验,做过接口测试,会使用业界常用的自动化测试工具进行测试;但...

阅读全文

Java如何定位占用CPU比较高的问题?

编写Java项目时,经常会遇到两种问题。 第一种:Java进程占用CPU比较高 第二种:Java进程堆内存溢出 今天主要跟大家聊聊第一种问题如何排查。 一、确定消耗CPU的Java进程 从上图可以看到Java进程 27459 消耗的CPU比较高。 二、查找 27459 Java进程消耗CPU线程ID 方式一: top -p [pid] 或 top -H -p [pid] 执行命令后按shift + h (显示进程各线程运行情况) 1)、top -p 27459 2)、shift + h 如下图: 方式二: ps -mp [pid] -o THREAD,tid,time ps -mp 27459 -o THREAD,tid,time 方式三: pidstat -p [pid] -t 1 pid...

阅读全文

Java如何定位堆内存溢出问题?

编写Java项目时,经常会遇到两种问题。 第一种:Java进程占用CPU比较高 第二种:Java进程堆内存溢出 上一篇主要介绍了第一种问题的排查手段,今天主要跟大家聊聊第二种问题如何排查。 一、查看Java进程堆内存使用情况 jstat -gcutil [pid] 2000 随着进程运行时间的推移内存会上下浮动。如果内存上升后执行FGC,内存没有被回收,则需要查看是否有内存泄露风险。 二、排查 获取内存信息 jmap -dump:format=b,file=[文件输出路径] [pid] ex: jmap -dump:format=b,file=/opt/app/27459.dump 27459 备注: 1、执行jmap dump 前可以手动触发一次fgc(jmap –histo:live [...

阅读全文