`
liudunxu2
  • 浏览: 30530 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论
文章列表
1 判断是否为linux系统 public static final String OS_NAME = System.getProperty("os.name"); if (OS_NAME != null && OS_NAME.toLowerCase().indexOf("linux") >= 0) { isLinuxPlatform = true; } 2 获取cpu个数 /** * 默认为CPU个数-1,留一个CPU做网卡中断 * ...
1.InetAddress.getLocalHost().getHostAddress()获取本机ip问题点击打开链接 2.java中的class.this方法,用在匿名类里面,明确表示匿名类内部实现表示的方法,直接用this代表匿名类上下文,而用class.this明确指定要引用的上下文,如外部类对象。如果匿名类和外部类含有同名方法,而且匿名类直接调用同名方法,虽然没有编译错误,但是容易让人误解
1.定义ZookeeperClient接口,抽象类AbstractZookeeperClient实现ZookeeperClient接口。ZkclientZookeeperClient继承 AbstractZookeeperClient抽象类。使用zkclient类库。作为默认的实现 2.程序启动,构造Ephemeral节点 3.com.alibaba.dubbo.config.ServiceConfig负责生成节点内容。使用InetAddress.getLocalHost().getHostAddress();作为获取本地ip的方法,如果本机ip配置不正确,可能存在隐患 ...
1.项目骨架相关 1.1 在骨架pom中,可通过${package}引用生成的项目的指定的包名,对指定项目相关的信息,比如main类位置等比较有效 1.2 根据项目生成骨架 mvn archetype:create-from-project 1.3 在target下运行命令mvn clean package deploy,产生项目骨架 1.4 在target下的pom配置<distributionManagement>上传到私服,如: <distributionManagement> <repository> <id> ...
using System; using System.Runtime.CompilerServices; using System.Threading; namespace Common.Engine { /// <summary> /// 限流器 /// 改写自:hadoop\src\hdfs\org\apache\hadoop\hdfs\server\datanode\BlockTransferThrottler.java /// </summary> public class Throttler { ...
原则: 1.原子性:要保证操作是原子的,线程安全的,java的atomatic包里的AtomicInteger符合这种要求 2.正数性:数字在java中是用补码进行表示的,第一位为符号位,0代表正数,1代表负数,可以对递增的数值进行与0x7FFFFFFF(int类型,4个字节)操作,保证永远为正数。当递增超过0x7FFFFFFF时,又会从0开始递增 附metaq中的实现,这个主要用在轮询的分区选择器上RoundRobinPartitionSelector,用于均匀的选择分区 /** * 正数的原子递增器,主要用于实现轮询 * * @author apple * */ publ ...
1.producer调用publish方法是为了向zookeeper注册topic,同时注册broker节点改变事件,用于新机器加入时生产者的负载均衡 2.sendmessage时,先选择partition,再根据partition选择一台broker 3.构造putcommand,传入opaque给putcommand(自增,线程安全),用于区分command,主要作用是区分本地的回调方法(消息发送过快而服务器响应过慢,可能由于本地回调对象过多造成内存溢出) 3.调用RemotingClientWrapper(是gecko的RemotingClient对象的装饰器,提供统计消息功能)的s ...
1.metaq如果不指定executor,则默认是单线程执行的。 2.如果一个consumer订阅了多个topic,也是单线程执行。 3.如果消费抛出异常,会重新加入到blockqueue(根据delayTimeStamp排序的优先队列),并更新延迟时间 4.当重试次数(在postReceiveMessage赋值,判断依据是iterator的offset是否为0)超过配置的最大值(默认为5次),则记录日志,丢弃消息
metaq的启动脚本是这样实现的: nohup $JAVA $BROKER_ARGS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.port=$JMX_PORT com.taobao.metamorphosis.ServerStartup $config_files 2>&1 >& ...
一种实现方式是(metaq是这种方式): 1.程序启动时写临时文件(亦可写到其他位置,如建立zookeeper永久节点) 2.注册ShutdownHook,在实现中删除临时文件 3.下次文件启动时,先判断临时文件是否存在,如果存在,则起线程对异常信息进行处理 liunx下kill -9不会使shutdownhook执行,eclipse调试下直接关闭也不会执行。使用kill -15可以使shutdownhook执行,具体可参考http://kenwublog.com/kill-java-correctly,http://blog.csdn.net/raintungli/article/ ...
1.metaq的数据传输基于gecko2.metaq的RemotingClientWrapper是gecko的RemotingClient的包装类,通过ConcurrentHashMap<String/* url */, Set<Object>/* references */>成员变量添加了连接的建立和关闭计数功能。 3.remoteclient的连接语句如下: for (int i = 0; i < connCount; i++) { try { final TimerRef timerRef ...
1.ZkConnection实现IZkConnection,是org.apache.zookeeper.ZooKeeper的代理类,通过ReentrantLock实现connect和close的并发控制。因为connect方法和close方法对成员变量_zk进行了赋值和判空操作,所有要进行并发控制。代码如下: @Override public void ...
zkclient通过BlockingQueue实现多线程的事件驱动,当zkClient对象构造时,调用connect方法启动eventthread线程,eventthread线程的run实现如下: @Override public void run() { LOG.info("Starting ZkClient event thread."); try { while (!isInterrupted()) { ZkEvent zkEvent = _events.take(); ...
1.org.I0Itec.zkclient.NetworkUtil,提供获取本机名称,端口是否被占用等功能,其中判断端口是否被占用的代码: public static boolean isPortFree(int port) { try { Socket socket = new Socket("localhost", port); socket.close(); return false; } catch (ConnectException e) { ...
1.debug as web项目 2.选择该web项目下的所有项目,确定 3.右键web项目,选择properties,找到deployment assembly项,然后add->java build path entries,将maven的依赖加入即可
Global site tag (gtag.js) - Google Analytics