
java
hxpjava1
毕业于武汉理工大学计算机系,12年开发架构经验,擅长java,k8s
展开
-
CLOSE_WAIT状态的原因与解决方法
这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题。说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP的状态转移图吧。关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远...转载 2018-12-15 11:12:01 · 8468 阅读 · 0 评论 -
kaptcha验证码使用
查看原文:http://www.ibloger.net/article/135.html效果图:官方地址:https://code.google.com/p/kaptcha/w/listkaptcha 是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的验证码,因为它是可配置的。kaptcha工作的原理是调用 com.google.cod转载 2017-09-07 15:15:01 · 869 阅读 · 0 评论 -
Eclipse上red5插件安装
准备:jdkeclipse red5-eclipse-plugin 下载地址 https://github.com/Red5/red5-eclipse-pluginjdk和eclipse就不说怎么安装和配置了。1 点击Eclipse左上角File,点击下拉菜单中的Import。选择General下的Existing proje转载 2017-08-29 19:09:55 · 1241 阅读 · 0 评论 -
Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)
最近研究了一下流媒体技术,也试着用免费开源的Red5搭建了流服务器,实现了直播,视频播放,远程视频会议等功能,下面是近期实践的总结,一. 先介绍一下流媒体技术:所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看、收听(即所谓的“在线欣赏”),而不需要等整个压缩文件下载到自己的机器上才可以欣赏的网络传输技术。一般来说,一个转载 2017-08-29 18:55:44 · 1105 阅读 · 0 评论 -
JAVA实现远程控制(JAVA in RemoteControl)
远程控制(RemoteControl)远程控制的基本原理... 2远程控制(RemoteControl)拥有控制端和被控端双方...2事件回放原理... 2捕获桌面原理:... 3远程控制(RemoteControl)的核心技术 51 、Socket编程... 52、控制端事件的封装... 53、画面的传输... 6远程控转载 2017-08-29 14:16:52 · 1261 阅读 · 0 评论 -
使用JMF实现java写自己的视频播放器
JMF这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其他的请开发自己的插件,下面将代码贴上去 [java] view plain copy print?package com.bird.jmf; impo转载 2017-08-29 13:37:29 · 578 阅读 · 0 评论 -
Java GUI:图形用户界面三剑客相比拼
进行Java GUI(Graphical User Interface,图形用户界面)编程,大家或许经常徘徊在SWT/JFACE, Swing, AWT之间选择,哪一个更合适自己?AWT作为Java语言的第一个GUI类库包,在这三者之间中年龄最长,可谓开国元勋;老二Swing,兼容AWT,同时又对AWT进行了改进,可谓站在前辈的肩膀上,自然就会看的远了;老三SWT/JFace,则只能用不走寻常路来转载 2017-08-29 12:50:59 · 494 阅读 · 0 评论 -
Guava学习笔记:Google Guava 类库简介
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我转载 2017-09-05 18:17:09 · 261 阅读 · 0 评论 -
CAP理论
CAP理论在互联网界有着广泛的知名度,知识稍微宽泛一点的工程师都会把其作为衡量系统设计的准则。大家都非常清楚地理解了CAP:任何分布式系统在可用性、一致性、分区容错性方面,不能兼得,最多只能得其二,因此,任何分布式系统的设计只是在三者中的不同取舍而已。事实上,让人吃惊的是,CAP在国外的响力完全不如所想,相反还伴随着诸多的争论。下面我们系统地阐述一下CAP的来龙去脉。1.CAP的历史转载 2017-09-04 21:51:57 · 2600 阅读 · 0 评论 -
Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api
实际项目中非常需要写文档,提高Java服务端和Web前端以及移动端的对接效率。 听说Swagger这个工具,还不错,就网上找了些资料,自己实践了下。一:Swagger介绍Swagger是当前最好用的Restful API文档生成的开源项目,通过swagger-spring项目实现了与SpingMVC框架的无缝集成功能,方便生成spring restful风格的转载 2017-09-16 17:20:43 · 809 阅读 · 0 评论 -
Tomcat 8.0.30配置https的步骤
根据网上的案例,自己做了实际配置,记录如下,以备后续参考:环境说明:JAVA_HOME=D:\Programs\Java\TOMCAT_HOME=D:\Programs\tomcat80301. 生成证书:D:\Programs\Java\bin>keytool.exe -genkey -alias tomcert -keyalg R转载 2017-09-10 19:00:53 · 391 阅读 · 0 评论 -
JDK工具(查看JVM参数、内存使用情况及分析等)
在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能代码是在tools类库中实现的。命令行工具的好处是:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程telnet到服务器上...转载 2018-12-15 11:09:43 · 2268 阅读 · 0 评论 -
参考手册
1 spring data solr 2.1.7 2 elasticsearch java api3 elasticsearch mapping data types4 spring data cassandra5 gemfire命令6 spring data gemfire手冊7spring boot reference guide 1.5.78spring bo...原创 2017-10-01 14:24:50 · 608 阅读 · 0 评论 -
servlet/filter/listener/interceptor区别与联系
由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet、filter、listener?还有个interceptor?对于这转载 2017-10-09 20:20:18 · 219 阅读 · 0 评论 -
java中的SecureRandom在linux中的实现
在安全系统中,通常我们会使用securerandom去更安全的生成随机数,而默认的SecureRandom里使用的算法是SHA1PRNG。 Linux中的随机数发生器在Linux操作系统中,有一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器。/dev/random在读取时,/dev/random设备会返回小于熵池噪声总数的随机字节。/dev/rand转载 2017-10-29 18:09:58 · 758 阅读 · 0 评论 -
UUID 和 GUID 的区别
UUID 和 GUID 的区别UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长。比如:550e8400-e29b-41d4-a716-446655440000http://gohands.blogbus.com/logs/147479174.htmlGUID 是微软对UUID这个标准的实现。UUID是由开放软件基金会(OSF)定转载 2017-10-22 19:31:52 · 2282 阅读 · 0 评论 -
制作证书的keytool工具用法总结
一、keytool的指令Java 中的 keytool.exe (位于JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥,Keytool是一个Java数据证书的管理工具。二.转载 2017-09-12 13:00:41 · 545 阅读 · 0 评论 -
AVA技术路线图
在技术方面无论我们怎么学习,总感觉需要提升自已,却又不知道从哪里着手,同时也不知道自己处于哪个水平。这时候就需要有清晰的指示图来指引我们,这样我们能清楚的知道我们在哪方面不足,以及自己大概处于哪个阶段和水平。 Java程序员高级特性反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入转载 2017-09-27 13:04:29 · 708 阅读 · 0 评论 -
java 幂等性
理解HTTP幂等性基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都非常转载 2017-09-04 21:34:19 · 322 阅读 · 0 评论 -
面试问题当程序员和产品经理意见不一致你认为该怎么办
这个问题真的很难回答,我以前没遇到过这样的面试问题。个人以为程序员专注于实现,产品经理专注于产品设计。两者的分工和性质不一样对问题的看法的深度不一样。我作为程序员的一员当然要为程序员说话。产品经理设计的产品就是一个构想,能不能实现他们未必完全知道。所以产品经理在把控产品方向的情况下,很多细节都要听程序员的。当然程序员要说的有理有据,一个大而空的产品是虚幻的,没有程序员就没有血和肉。有思想的原创 2017-03-06 15:56:01 · 4133 阅读 · 0 评论 -
手动管理quartz任务
import org.quartz.CronScheduleBuilder;import org.quartz.CronTrigger;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quart原创 2017-02-16 10:47:16 · 1033 阅读 · 1 评论 -
Java Thread Dump 日志分析
jstack Dump 日志文件中的线程状态dump 文件里,值得关注的线程状态有:死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注)暂停,Suspended对象等待中,Object.wait() 或 TIMED_W转载 2017-02-17 08:58:55 · 428 阅读 · 0 评论 -
java 访问hdfs
读数据使用hadoop url读取比较简单的读取hdfs数据的方法就是通过java.net.URL打开一个流,不过在这之前先要预先调用它的setURLStreamHandlerFactory方法设置为FsUrlStreamHandlerFactory(由此工厂取解析hdfs协议),这个方法只能调用一次,所以要写在静态块中。然后调用IOUtils类的copyBytes将hdfs数据流拷贝到标转载 2014-02-10 15:24:54 · 875 阅读 · 1 评论 -
写了一个简单的数据库连接池
import java.sql.Connection;import java.sql.SQLException;import java.util.Iterator;import java.util.UUID;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.atomic.AtomicInte原创 2017-01-19 16:19:55 · 521 阅读 · 0 评论 -
java客户端操作Hbase
java客户端操作Hbase 首先,配置好 hadoop+hbase 环境后,确保 hbase 正常启动。1. 搭建开发环境 1.1、运行 Eclipse,创建一个新的 Java工程“ HBaseHelloWorld”,右键项目根目录,选择 “ Properties”->“Java Build Path”->“Library”->“Add Ext转载 2017-01-19 16:42:03 · 614 阅读 · 0 评论 -
Java注释@interface的用法
Java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类。@Override,@Deprecated,@SuppressWarnings为常见的3个注解。注解相当于一种标记,在程序中加上了注解就等于为程序加上了某种标记,以后,JAVAC编译器,开发工具和其他程序可以用反射来了解你的类以及各种元素上有无任何标记,看你有什么转载 2017-01-20 09:46:56 · 282 阅读 · 0 评论 -
写了一个从oracle导数据到hbase的多线程java程序,只要创建一个实体加上注解基本就可以导数据了
三个注解类:@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Column { String family() ; String column() default ""; String oracle_column() default "";}@Target(Eleme原创 2017-01-23 13:11:57 · 1568 阅读 · 1 评论 -
一个简单的分段锁hashmap
public class MyConcurrentHashMap { private HashMap map=new HashMap(); private Object[] locks=null; private int lockSize; public MyConcurrentHashMap(int lockSize){ this.lockSize=lockSize; l原创 2017-01-26 16:45:23 · 902 阅读 · 0 评论 -
一个简单的线程池实现
public class ThreadPool { private AtomicInteger maxSize; private BlockingQueue taskQueue; private List threads=null; private static ThreadPool instance =null; private static Lock lock=new Reent原创 2017-01-26 16:48:13 · 372 阅读 · 0 评论 -
jedis工具类
public class JedisUtils{ private static final Logger logger = LoggerFactory.getLogger(JedisUtils.class); /** * 私有构造器,防止类的实例化操作 */ private JedisUtils() { }原创 2017-02-17 13:57:27 · 1149 阅读 · 0 评论 -
面试问题java Object类有哪些方法
有一次面试官听我自我介绍后,就问Object有哪些方法。我平时也没注意太多Object,根据自己的印象说了,toString,hashCode,wait,notify,notifyAll,equals那么Object类有哪些方法呢:private static native void registerNatives();public final native Class getCl原创 2017-02-28 09:28:04 · 2358 阅读 · 1 评论 -
HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。转载 2017-02-18 20:01:45 · 21539 阅读 · 14 评论 -
java数据库连接池性能对比
testcase Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.preparedStatement("select 1"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { } rs.close();转载 2017-03-03 13:57:49 · 2453 阅读 · 0 评论 -
Lock与synchronized 的区别
一、synchronized和lock的用法区别 (1)synchronized(隐式锁):在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。 (2)lock(显示锁):需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对 象才能保证转载 2017-02-15 10:47:30 · 760 阅读 · 0 评论 -
面试题:关于一些nio的问题资料
Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据转载 2017-02-21 14:38:28 · 21333 阅读 · 1 评论 -
Java中的IO(面试有时会问java io的问题)
深入分析Java I/O 工作机制作者:egg邮箱:xtfggef@gmail.com微博:http://weibo.com/xtfggef博客:http://blog.youkuaiyun.com/zhangerqing论坛:http://www.qtlife.net(随便建了一个,方便大家一起交流!)IO是Java及众多编程语言很重要的一块,同时很多程序转载 2017-02-21 09:55:23 · 11532 阅读 · 0 评论 -
JVM的内存区域划分(面试问题:你了解java内存模型么)
JVM的内存区域划分 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢? 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:转载 2017-02-15 09:47:30 · 28104 阅读 · 3 评论 -
深入分析Java ClassLoader原理(面试问题:你了解java类加载器么)
一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在转载 2017-02-15 10:21:50 · 1741 阅读 · 0 评论 -
sleep和wait有什么区别(面试问题:sleep和wait有哪些区别)
第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩. 还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.第二种解释:sleep是Thread类转载 2017-02-15 10:49:57 · 2352 阅读 · 0 评论