自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 PLSQL安装流程备忘

       去ORACLE官网下载PLSQL安装包,如plsqldev1208x64(具体根据个人主机操作系统位数)。需要注册账号才能下载。        去Oracle官网下载oracle客户端压缩包instantclient_12_1(注意,一定要下载简易版,其他的不行,会老是报解析tns...

2018-08-06 20:16:34 107 0

原创 Eclipse切换JDK,JRE版本步骤总结

切换整个eclipse环境的版本 1.      首先得明白,所谓的切换版本是分成两大块,JDK和JRE,这两者要切换一致 2.      Window-> Preferences—>Java—>Compiler右侧面板选择想要的版本 3.      Window->...

2017-12-26 17:17:07 2264 0

原创 非web java项目部署到linux总结(非打包成jar,配置文件可以随时修改)

1.      首先要在eclipse中编译成功,并且运行没有问题。 2.      上传项目目录下的子目录,可以根据需要上传,但是bin和lib目录是必不可少的。Lib目录里应包含所有用到的依赖外包。 3.      编辑运行脚步,实际上是完成eclipse的工作。例子如下: start-...

2017-12-20 17:15:07 929 1

原创 Dubbo动态改变端口配置

对于一个dubbo服务程序,如果需要在一台机上启动多个进程,就需要每个进程占用不同的端口,对于dubbo而言,是不能在代码层面改变配置信息的,所以需要在JVM参数中指定不同的端口号:java -Ddubbo.protocol.port=20882 xxx.jar

2017-11-29 14:59:30 2865 0

原创 Dubbo调度机制解析(cluster扩展或者路由扩展)

1.      更详细的duboo的集群路由和负载均衡机制分析 首先进入XXClusterInvoker类: invoke(final Invocation invocation)-> Directory.list(invocation) 进入XXDirectory(RegistryD...

2017-11-13 17:12:03 699 0

原创 Dubbo调度机制解析(LoadBalance扩展)

由于项目需求特殊,需要在dubbo中实现一种能指定远程地址的分发机制,刚开始想在直连的配置上解决,后来发现对于已经加载了dubbo xml配置的spring容器中是无法在代码层面进行有效的修改的(因为貌似会重新加载xml文件中原有的配置记录),另一方面,这种做法会产生并发冲突的隐患。后来经同事提醒...

2017-11-03 17:00:20 5481 3

原创 Hbase API使用总结

举个例子: Hbase的java的API接口相对比较简单,举个创建表的例子来看: public class HbaseApiTest {          staticConfiguration conf = null;          static{        conf = HBaseC...

2017-10-27 16:54:05 305 0

原创 Hbase初步学习总结

Hbase单机版安装 对于单机版而言,hbase的安装非常简单 1.  下载hbase压缩包,比如hbase-1.3.1-bin.tar.gz,然后解压 2.  配置环境变量JAVA_HOME(如果机器上以及配置该变量,则直接使用) 3.  然后去conf目录下修改配置文件hbase-si...

2017-10-24 17:25:09 266 0

原创 Java NIO之文件监控机制

由于业务需要在主备切换时读取程序返回值文件,这样一来就涉及到了文件监控读取的问题,比较low的做法是程序备进程变主进程后每隔一段时间去轮询相关的文件,并读取里面的返回值。后来突然想到了socket相关有个NIO机制,于是觉得socket和文件对操作系统其实都是外设,应该有相关的NIO机制。后来发现...

2017-09-28 11:27:11 617 0

原创 Dubbo配置以及使用总结2

1. 消费方调用所有服务提供方的配置 <dubbo:serviceinterface="operatingPlatform.DispatchServer"  ref="DispatchServerImpl"executes="20"...

2017-09-26 17:21:14 214 0

原创 Zookeeper的API调用的同步和异步机制以及watcher机制总结

同步和异步调用 对于zookeeper的所有API调用都提供了正常的同步调用和异步调用两种类型的调用接口,比如zookeeper创建某个目录节点的接口为例: 同步调用接口: String create(final String path, byte data[], List acl,     ...

2017-09-25 15:53:19 1454 0

原创 日志控制log4j的使用总结

Log4j是个广泛使用的日志控制工具,并且使用起来相对方便,之前一直搞不大清楚如何使用。这两天稍微花时间简单使用和测试了一下。把使用过程和细节进行总结,以便以后忘记的时候进行翻阅。 1.引入jar包 首先准备引入log4j-1.2.16.jar包,还有说法说要同时引入commons-logging...

2017-09-21 16:38:22 218 0

原创 Dubbo配置以及使用总结

一直被dubbo的spring相关配置搞得比较晕,dubbo作为淘宝自己搞得东东,也没有太多像样的成系统的书籍资料,所以相关知识显得比较零碎。趁机会把相关知识尤其是配置知识整理记录一下,以供记忆。 Application层的配置 --应用配置,用于配置当前应用信息,不管该应用是提供者还是消...

2017-08-23 16:45:27 267 0

原创 Zookeeper客户端源码分析

1. 从ZooKeeper构造方法开始:     public ZooKeeper(String connectString, intsessionTimeout, Watcher watcher,             long sessionId, byte[]sessionPasswd, ...

2017-08-08 18:37:14 388 0

原创 Kafka的安装和使用总结

Kafak的单实例安装 1.      下载安装 http://apache.mirror.colo-serv.net/kafka/这个网址有各个版本的kafka下载 解压 tar -xzf kafka_2.11-0.11.0.0.tgz 进去bin目录下执行 bin/zookeeper...

2017-08-03 18:53:54 335 0

原创 Redis cluster 集群搭建以及API访问

1.  修改配置文件 拷贝原来非集群的配置文件并进行修改如cluster_redis_6379.conf,其他配置可以保持不变,只要把以下三项配置项去掉注释#就行 cluster-enabled yes cluster-config-file nodes-6379.conf            ...

2017-08-01 11:07:56 1057 0

原创 Redis主从集群以及sentinel集群安装和配置总结

1.   单机单实例或多实例安装 单实例的安装步骤很简单 (1)首先去redis官网上下载最新的稳定版本(可以直接去redis中文官网http://www.redis.cn/download.html) wget http://download.redis.io/releases/redis-4...

2017-07-29 10:58:04 362 0

原创 如何简单地实现易用的ShardedJedisSentinelPool

Jedis包中有个很恶心的问题,那就是包里面有支持分片的ShardeJedis客户端类,也有支持哨兵的池类JedisSentinelPool,就是没有既支持分片又支持哨兵的池类,所以必须自己自定义一个ShardedJedisSentinelPool,定义这个类,在网上有个很受欢迎的版本,是继承了P...

2017-07-27 15:34:05 2850 1

原创 从字节码角度分析java泛型数组的问题

关于java的泛型数组这个问题,之前就有遇到过,不过当时以为是自己代码语法错误的问题,现在系统地对java的基础知识进行深入总结,才发现这个问题某种程度是和泛型的类型擦除机制有关,其实我觉得这个解释有它的道路但是还是比较勉强。下面我们从字节码角度试图去分析一下java某种意义上是不支持泛型数组原因...

2017-07-24 15:50:46 386 0

原创 通过字节码扒一扒java编译器瞒着我们做了什么(3)

1.      数组和二维数组在字节码中的实现 源码:     int[] list1 = {1,2}; int[][] list2 = {{1,2},{3,4}}; 字节码:   int[] list1;     descriptor: [I     flags:  ...

2017-07-24 11:20:39 303 0

原创 从字节码角度分析泛型类,泛型方法,泛型接口的实现机制(类型擦除)

在java中泛型本质上是个语法糖,跟C++不一样,java根本不会创建泛型类,一切都只不过是编译器通过类型擦除机制实现的障眼法而已,比如 源码: public classChildTest extends test {     Ta = (T) "hello world&q...

2017-07-23 21:35:12 302 0

原创 从字节码角度分析接口中的成员域

在java中接口是可以有成员变量的,比如下面源码: public interfaceTestInterface {     int a = 999;     Stringstr= "hello world"; }   字节码:  Last modified ...

2017-07-23 16:36:08 184 0

原创 通过字节码深入分析java的枚举类型enum

1.      Java中的枚举究竟是什么鬼? 如果从C++转java的话,会发现一个现象那就是在java中的枚举跟C++区别非常大,甚至可以说除了名字一样外,其他实现等都是非常不同的,在C++枚举更像个常数,而java的枚举更靠近正常的普通成员内部类。让我们从字节码角度看看java中的enum...

2017-07-23 14:49:51 446 0

原创 通过字节码扒一扒java编译器瞒着我们做了什么(2)

1.      Int[] a={}和int[] a=newint[]{}有何区别? 定义数组时经常会产生一些以为,比如说上面两种数组定义格式是否在就JVM中的实现不同,是否前者没有new所以不会在堆中分配内存?如果不了解编译器私自做了什么,很容易被这个问题困扰住,那我们从编译后的字节码中看看这...

2017-07-22 20:00:42 254 0

原创 从字节码角度深入分析内部类(局部内部类,成员内部类,静态内部类,匿名内部类)

1.      局部内部类 源码: public void subscribeQueue(Jedis jedis,String[] channels) {            // TODO Auto-generated method stub            class MyJe...

2017-07-22 16:02:50 338 0

原创 通过字节码扒一扒java编译器瞒着我们做了什么(1)

1.       Foreach和泛型语法糖 Map map = newHashMap(); for(Entry iter:test.map.entrySet()){                      Stringstr = iter.getValue();            ...

2017-07-20 17:38:03 269 0

原创 Java字节码(class文件)解析

Java编译后生成的.class字节码文件里面的内容究竟是什么呢?一直比较困扰,现在终于看到了庐山真面目,比如对于test.class使用javap -p -verbose test可以查看生成的字节码里面的内容。用一个简单的test类来分析字节码里面的内容。 test.java: /** * ...

2017-07-19 17:26:27 330 0

原创 jedis API接口批量处理包装(事务,管道,分布式锁,lua脚本,发布订阅)

import java.util.List; import java.util.Map; import java.util.Set; import redis.clients.jedis.Jedis; /**  *  * @author : zhengrf1 * @date 创建时间:20...

2017-07-12 17:13:55 464 0

原创 Java加载类(Class)文件过程

其实对于任何编程语言而言,编译和链接都是必不可少的环节,对于java而言编译这环节比较简单,就是按照JVM指定的规范生成字节码文件(Class文件),因为字节码是JVM能认识的,并且会把这些字节码翻译成本地机器的机器指令。至于链接这块,Java作为动态动态编译编程语言,链接这块相对静态链接语言而言...

2017-07-10 19:29:39 325 0

原创 Java与C++差异总结(1)

最近的工作是把几份C++代码翻译成java,不搞不知道,一搞吓一跳,真的很麻烦,C++和java的语法和其他细节差异太大了。下面就把遇到的一些差异整理总结一下: 1.      一维数组的定义: C++:分为静态数组和动态数组,其中静态数组 int a[5],或int a[2]={1,2} ...

2017-07-07 19:15:11 197 0

原创 JNI转换通俗易懂的总结(Java调用C++篇)

相对C++调用java而言,使用JNI实现Java调用C++相对比较简单点,因为不用自己启动和管理一个JVM。 最简单的流程: 1.      编写一份简单的HelloWorld.java class HelloWorld { public native void displayHelloWorl...

2017-06-29 17:12:16 338 0

原创 JNI转换通俗易懂的总结(C++调用java篇)

主要的内容分成以下三部分: 1.      启动java虚拟机(JVM),C++和java接口的交互,实际上就是C++和JVM的交互。 例子如下: JavaVMOption options[3]; JNIEnv *env; JavaVM *jvm; JavaVMInitArgs vm_args; ...

2017-06-28 15:32:55 336 0

原创 HDFS初步学习总结

网上关于hdfs的一些初步总结不大好找,搞得初步了解hdfs花了比较多时间。现在准备写点初步学习总结以便能加深记忆,顺便为网上多添点资料。 以下就从5大方面进行初步总结: 1.      整体框架: 总体来说,hdfs的大体框架是比较简单的,作为分布式文件系统,相比普通的文件系统有很多类似之...

2017-06-26 17:36:06 273 0

原创 kafka消息队列运维工具和相关安装目录文件总结

kafka自带维护脚本工具总结: topic管理脚本:kafka-topics.sh(包括topic的创建,修改,删除,查询) 创建topic: sh kafka-topics.sh –zookeeper 132.121.121.4:2181 –create –topictest1 –partit...

2017-05-08 18:33:22 300 0

原创 Kafka服务端异步刷盘性能测试

前置条件: 每条话单大概0.7K 写客户端单线程 props.put("acks","all"); props.put("retries", 0); props.put("batch.size", 16384...

2017-04-28 11:14:44 1225 0

原创 Kafka消息队列原理总结

最近在测试kafka的读写性能,所以借这个机会了解了kafka的一些设计原理,既然作为分布式系统,我们还是按照分布式的套路进行分析。   Kafka的逻辑数据模型: 生产者发送数据给服务端时,构造的是ProducerRecord(String topic, Integer key,String v...

2017-04-26 16:49:38 9322 0

原创 Java基本类型的一些总结

Java基本类型的长度以及和C++的对比 Java(字节数)                               C++(字节数) Byte         1                                             C++没有字节类型,可以用unsig...

2017-03-24 15:33:07 322 0

原创 ReenTrantLock可重入锁(和synchronized的区别)总结

ReenTrantLock可重入锁(和synchronized的区别)总结 可重入性: 从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等...

2017-03-23 11:31:29 36174 9

原创 Java锁性能提高(锁升级)机制总结

锁的使用很难避免,如何尽量提高锁的性能就显得比较重要了 锁偏向 所谓的偏向锁是指在对象实例的Mark Word(说白了就是对象内存中的开头几个字节保留的信息,如果把一个对象序列化后明显可以看见开头的这些信息),为了在线程竞争不激烈的情况下,减少加锁及解锁的性能损耗(轻量级锁涉及多次CAS操作)...

2017-03-21 11:38:37 4502 7

原创 java中File类常用API总结

public class FileTest { /**  *  * @author : zhengrf1 * @date 创建时间:2017年3月15日 下午5:01:09  */ public static void main(String[] args) { // TODO Auto-ge...

2017-03-15 18:08:27 536 0

提示
确定要删除当前文章?
取消 删除