`
文章列表
 引言   java自从1995问世以来,经过20多年的发展,涉及的领域很广,业界都把它为它j2se,j2ee,j2me(已被android代替)。在apache的官方上,可以看到,从a-z字母排序的这些开源项目中,绝大多数的开源工具都是使用java开发的,由此可 ...
前言      记得第一次在项目中使用zookeeper是在2013年,其实也就是写了最简单的功能--配置。场景是这样,当在程序运行时,不重启程序的情况下,能动态改变其参数时。通过的做法时,把配置写在配置文件或数据库,定时去 ...
      平时很少看连续剧,每次下班回来开电视后基本都是听CGTN,上周末因身份证回老家一趟,路途虽不远,但也着实无聊,就事先下载好了《我的前半生》,以打发一路的颠簸。     《我的前半生》,故事发生在魔都, ...
      因项目需要,经常需要面试开发人发。求职人的工作经验从应届生到十几年,简历也从一页到数页,发现有很多工作年限很长的开发人员、甚至是架构师。但是简历上的内容,看了半天,却不知所云,没有任何亮点,没 ...
       在java项目中,如果不是swing,当要用到事件、通知机制的时,时下最流利的、最简单的方式就是使用 google的guava-EventBus,它简洁、强大、使用方便,最大多数开源爱好者的首选。        使用EventBus的好处有:       1. ...
     因项目中大量使用zookeeper,最近在面试几位候选人时,经常会问他们一个问题, 为什么说zookeeper建议配置为奇数台?他们只知道需要这么配置,但回答却不尽人意。        使用过zookeeper的同学都知道,集群中的zookeeper需要超过半数,整个集群对外才可用。 这里所谓的整个集群对外才可用,是指整个集群还能选出一个Leader来,zookeeper默认采用 quorums来支持Leader的选举。        其实quorums机制有两个作用:          1.可以保证集群中选举出leader,且是唯一的一个,不会出现脑裂(split ...
引言     字符串是java编程中用得最多的类型,它的性能不容小觑。以下从几个操作来看它的性能。   一。创建 1.通过new出来的字符串,不是常量,所以尽量不用 2.使用StringBuffer,尽量根据实际情况,在创建时,设置初始容量大小,如果不设置,默认是16,当达到一定程度后会扩为length() * 2,会耗费一定时间。如下图1所示 3.避免使用StringBuffer sb = new StringBuffer("test")创建,通过源码发现,它会先扩充容量再再append("test")。  所以尽量先创建StringBu ...
调用方式        模块之间的通信,总是存在一定的调用。从调用方式上来看,可以分为两种:同步调度、异步调用。 同步调度:即阻塞调用,A调用B,A会等待B执行完,A所在线程会阻塞,属于双向通信 异步调用:当前线程不阻塞,A调用B后继续往下执行。如果A需要B的返回,则B在执行完成后要调用A,这就是回调,属于双向通信。如果A不需要B的返回,属于单向通信     java的回调机制       诸如javascript、actionscript等脚本语言,函数可以作为参数来传递,所以通过将函数作为参数,就可以实现回调。如: //注册鼠标按下时的事件回调 this.addEven ...
    框架就是一个完整的流程,是一个黑匣子,它规定了应用程序的体系结构,且把整个流程的各个环节基本上都已实现,并把流程串起来了,用户要做的事,就是实现自己的业务逻辑,然后通过即定的步骤,按部就班的把自 ...
前言        在敏捷开发中,迭代周期较快,版本发布频繁,需要经常更新到生产环境。新版本发布时,需要停止旧版本的程序。在停止旧版本程序的过程,我们希望旧版本程序能平滑停止,所谓的平滑停止,是指不会产生脏数据、事务不一致、数据状态已改变却未更新到数据库、kafka消费了数据而没有更新offset等问题。   如何让java程序退出 1.kill -9 pid   强制退出 2.kill -15 pid  发送信号给java程序,java程序如有Runtime.getRuntime().addShutdownHook(thread),会执行完后再退出 3.jmx,在程序中开放相应 ...
       曾经有一段垃圾代码放在我的面前,我没有拒绝,等我真正开始接手的时候我才后悔莫及,程序员最痛苦的事莫过于此!---------改编于周星星的经典台词。         虽然有点夸张,但编码界确实大大存在这种情况,每当接手别人的代码,都有一种想重新写一遍的感觉,等到别人再来接手你的代码时,同样的感觉。。。为什么会有这种现象存在?因为没有Code Review   一。前言        Code Review中文应该译作"代码审查"或是"代码评审",也叫代码QC,这是一个流程,当开发人员写好代码后,需要让别人来review一下代码, ...
 一。前言        在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改源代码,然后重新 ...

常用maven mirror

<mirror>      <id>repo2</id>      <mirrorOf>central</mirrorOf>      <name>Human Readable Name for this Mirror.</name>      <url>http://repo2.maven.org/maven2/</url>    </mirror><mirror>      <id>net-cn</id>      <mirro ...

mesos系列文章

http://database.51cto.com/art/201404/434829.htm

获取客户端ip

    博客分类:
  • java
/** * 获取客户端IP * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader(" ...
Global site tag (gtag.js) - Google Analytics