'JAVA' 目录归档

广告定义与发展

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

阅读全文

findbugs在eclipse&idea中安装与使用

介绍         基于字节码分析,大量使用数据流分析技术,不注重style及format,注重检测真正的bug及潜在的性能问题 ,尤其注意了尽可能抑制误检测的发生,侧重运行时错误检测,如空指针引用等。 特点         一款很流行的静态代码分析工具,通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。         运行环境需要JDK1.7及以上,能够分析1.0到1.8的编译代码。         默认自动检测关闭,需要进行设置。         对代码规范检测较弱,检测代码漏洞、代码严谨性与bugs;         findbugs目前版本为3.0.1,最后一次更新为2015年3月6号;findbugs-IDEA目前版本为1.0.1,...

阅读全文

sonarlint在idea&eclipse中安装与使用

介绍         代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。集成了CheckStyle,PMD,Findbugs等工具校验规则,具有重复代码发现,代码测试覆盖率,代码注释率,及所有的检测率变化追踪的功能特性。 特点         SonarQube:开源的代码质量管控平台,我们使用的http://localhost:9000即为SonarQube。         SonarLint:一个扩展插件,可以安装在idea与eclipse等开发工具中 当打开java文件时可自动分析静态文件,也可以手动对整个项目做分析; 可连接到Sona...

阅读全文

JAVA自定义注解(Target,Retention,Documented,Inherit)

    Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。     注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。 1、元注解     元注解是指注解的注解。包括  @Retention @Target @Document @Inherited四种。 1.1、@Retention     定义注解的保留策略     @Retention(RetentionPolicy.SOURCE)     // 注解仅存在于源码中,在class字节码文件中不包含     @Retention(RetentionPolicy.CLASS)        // 默认的保留策略,注解会在cla...

阅读全文

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常用集合类

在Java中有一套设计优良的接口和类组成了Java集合框架,使程序员操作成批的数据或对象元素极为方便。所有的Java集合都在java.util包中。 1、List接口及其实现类 List接口继承于Collection接口。 List接口及其实现类是容量可变的列表,可按索引访问集合中的元素。 特点: 集合中的元素有序、可重复; 实现类: ArrayList是以Arayy方式实现的List,允许快速随机存取,相对于LinkedList不适合进行插入和移除元素操作; LinkedList提供最佳顺序存取,适合插入和移除元素。 2、Set接口及其实现类 Set接口同样继承于Collection接口。 特点: 集合中的元素无序、不包含重复的元素。 实现类; HashSet 能够快速定位一个元素,要注意...

阅读全文

java面试题

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

阅读全文

java注解详解

一、什么是注解 定义:注解(Annotation),也叫元数据(metadata),所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。一种代码级别的说明。注解是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 二、为什么学习注解 为了能读懂别人的代码,特别是框架相关的代码; 让编程更加简单,代码更加清晰; 注解可以通过代码里标识的元数据生成文档;可以对代码进行分析;可以让编译器实现基本的编译检查。 三、注解有哪几种类型 java自带注解 @Override:注解表示子类要重写父类的对应方法。如果方法利用此注释类型进...

阅读全文

Java异步调用中的Future

Future是什么? 最近写了一些关于netty的相关代码,发现类似netty 的这种异步框架大量的使用一个Future的类。利用这个Futuer类可以实现,代码的异步调用,程序调用耗时的网络或者IO相关的方法的时候,首先获得一个Future的代理类,同时线程并不会被阻塞。继续执行之后的逻辑,直到真正要使用远程调用返回的结果的时候,才需要调用Futuer的get()方法。这样可以提高代码的执行效率。 于是就花了一点时间研究Futuer是如何实现的。调用方式如何知道,结果什么时候返回的呢?如果使用一个线程去轮询flag 标记?那么就很难及达到及时获取新状态,又降低性能开销。所以我们需要了解java的等待通知机制。利用这个机制来构建一个节能环保的Future。等待通知机制一个线程修改了一个对象的...

阅读全文