- 博客(69)
- 问答 (3)
- 收藏
- 关注
原创 kafka配置参数
############################# System ##############################唯一标识在集群中的ID,要求是正数。broker.id=0#服务端口,默认9092port=9092#监听地址,不设为所有地址host.name=debugo01# 处理网络请求的最大线程数num.network.threads=2# 处理磁盘I
2017-07-21 13:06:31
562
原创 java注解使用
语法声明public @interface成员以无参无异常方式声明可以用default为成员指定一个默认值如果注解只有一个成员,则成员名必须为value(),在使用时可以忽略成员名和赋值号(=)注解类可以没有成员,没有成员的注解为标识注解元注解+ @Target- Annotation所修饰的对象范围(Type,Field,Method)+ @Retention- Annotation
2017-07-20 17:36:19
379
原创 java使用泛型
泛型方法是否拥有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。 public static <T> void test(T param){ System.out.println("value="+param+", type="+param.getClass().getName()); }//调用test("hello");//
2017-07-20 16:39:12
334
原创 Orika简单使用
使用orika进行对象间Mapping1. 当两个类的属性名都一样package com.orika;/** * Title:CopiedStudent.java * Description: * * @author zhuyang * @version 1.0 2017/7/18 */public class CopiedStudent { private St
2017-07-18 09:51:43
3910
转载 Java基础学习过程
JVM 1. 内存模型( 内存分为几部分? 堆溢出、栈溢出原因及实例?线上如何排查?) 2. 类加载机制 3. 垃圾回收 Java基础 什么是接口?什么是抽象类?区别是什么? 什么是序列化? 网络通信过程及实践 什么是线程?java线程池运行过程及实践(Executors)
2017-04-05 14:58:46
406
原创 一些面试java
最近一直在找工作京东 阿里这些都去过好几次的,但是结果都是一样。所以,还是自己能力不行吧,虽然自己觉得答的不那么差。在这里做一个总结吧,我想随着我面试失败次数的增加,文章内容也会不断修改,大公司一般问的干货比较多,话不多说.1. java自动装箱和拆箱java将基本数据类型自动转成相对应的对象(int->Integer)叫自动装箱,反之(Integer->int)叫自动拆箱。因为装拆箱动作
2017-02-25 16:43:29
367
转载 hashMap的原理 深入理解
前言:这篇文章写的越品越有味首先再次强调hashcode (==)和equals的真正含义(我记得以前有人会说,equals是判断对象内容,hashcode是判断是否相等之类):equals:是否同一个对象实例。注意,是“实例”。比如String s = new String(“test”); s.equals(s), 这就是同一个对象实例的比较;等号(==):对比对象实例的内存地址(也即对象实
2017-02-07 21:44:00
422
原创 JVM运行机制
本文主要讨论以下内容:1. JVM启动流程2. JVM基本结构3. 内存模型JVM启动流程1. 我们在启动一个JAVA程序的时候一般是通过java命令启动。2. 运行java命令后JVM会首先加载jvm.cfg文件3. 通过cfg找到JVM.DLL4. jvm.dll初始化jvm并获得JNIEnv接口用来findClass5. 最后运行class里的ma
2017-01-18 22:53:05
364
原创 SpringCloud(六)springcloud feign
概念:Feign是一个可声明式的webservice客户端。它能让调用webservice更加简单,通过对接口的注解便可轻松使用。spring cloud同时集成了Ribbon和Eureka来对Feign提供负载均衡。大概使用:Example spring boot app@Configuration@ComponentScan@EnableAutoConfiguration
2017-01-16 22:21:59
1605
原创 SpringCloud(五)Ribbon自定义负载均衡插件
上篇文章介绍了怎么配置不同的负载均衡的方式,使用的是ribbon自带的几种策略。现在我们通过插件的方式添加新的一种策略。package com.zhuyang.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.
2017-01-11 23:41:45
2727
原创 SpringCloud(四)Ribbon自定义负载均衡
上篇文章我们已经完成了Ribbon负载均衡的功能。做法很简单,只需要在RestTemplate添加@LoanBalanced 的注解。默认情况下,Ribbon的负载均衡策略是RoundRobbin(轮训)的方式,可很多时候在特定场景下需要不同的策略,这个时候就需要自定义Ribbon策略了。看下面代码:package com.zhuyang.cloud.controller;import o
2017-01-11 23:15:17
12722
5
原创 Oracle PL/SQL复习
这是很早以前写在javaeye的,现在搬过来。 DESC STUDENTTABLESET SERVEROUTPUT ON;declare v_str1 VARCHAR2(10);v_str2 VARCHAR2(50);begin v_str1:='hello'; select STUDENT_NAME into v_str2 from STUDENTTABLE where S
2017-01-10 23:00:26
332
原创 Jedis实现发布(Publish) 订阅(Subscribe)
package com.zhuyang.redis.mq;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * get Jedis * @author zhuyang * */public c
2017-01-10 22:46:37
5741
原创 Java使用Jedis操作Redis
package com.zhuyang.redis.command;import redis.clients.jedis.Jedis;public class Utils { public static Jedis getJedis (){ return new Jedis("localhost"); }}package com.zhuyang.redis.command;
2017-01-10 22:43:21
514
原创 SpringCloud(三)Ribbon负载均衡
上篇文章我们成功的将providr和consumer注册到eureka上面了。但是有两个问题:1、 consumer通过rest请求provider的时候,url是硬编码return this.restTemplate.getForEntity("http://localhost:8001/simple/" + id, User.class).getBody();2、 provide
2017-01-09 23:16:55
6441
原创 SpringCloud(二)将服务注册到Eureka
在上篇文章中我们已经写好了服务站和消费者。本文将会把两个服务注册到Eureka服务中。Eureka Serverpackage com.zhuyang.cloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootAppli
2017-01-09 22:59:48
3900
原创 SpringCloud(一)构建SpringBoot微服务
本篇文章将会展示两个springboot项目,一个是provider(服务提供者),另一个是consumer(服务消费者).基本思路是provider通过查询数据库返回信息,consumer通过rest的方式访问provider.下面看代码:ProviderDemoMicroserviceProviderUserApplication.javapackage com.zhuya
2017-01-09 22:47:06
2710
1
原创 ActiveMQ之HelloWorld
本篇文章从代码角度去实现一个mq。因为ActiveMQ是对JMS的一种实现,因此,AMQ的开发步骤就应该和JMS的开发模型一样。1. 创建ConnectionFactory2. 创建Connection3. 创建Session4. 创建Destination/Topic5. 创建Producer/Consumerpackage com.zhuyang.mq.p2p;im
2017-01-09 21:49:02
422
转载 JMS基本概念基本概念
基本概念JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。消息模型○ Point-to-Point(P2P)○ Publish/Subscribe(Pub/Sub)即点对点和发布订阅模型P2PP2P模式图 涉及到的概念 消息队列(Queue)发送者(Sender)接收者(Receiver)每个消息
2017-01-09 21:40:55
340
原创 Redis常用命令
String set --设置字符 set hello world setnx --设置key对应的值。如果key存在,则返回0,且设置不生效。 setnx hello new_world setex --设置key对应的值。且设置其失效时间。 setex hello2 10 'i will be expi
2016-12-30 20:48:54
324
转载 深入理解Java内存模型之系列篇
深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来
2016-12-27 20:26:51
370
转载 垃圾收集器(二)
1、Serial收集器曾经是虚拟机新生代收集的唯一选择,是一个单线程的收集器,在进行收集垃圾时,必须stop the world,它是虚拟机运行在Client模式下的默认新生代收集器。2、Serial Old是Serial收集器的老年代版本,同样是单线程收集器,使用标记整理算法。3、ParNew收集器是Serial收集器的多线程版本,许多运行在Server模式下的虚拟机中首选的新生
2016-12-26 23:05:40
271
原创 垃圾收集器(一)
引用计数法很多地方判断一个对象是否存活的算法是给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就+1;档引用失效时,计数器-1;任何时刻计数器为0的对象就是不可能在被使用。但是主流Java虚拟机没用选用引用计数器算法来管理内存,其中最主要的原因是它很难解决对象之间相互循环引用的问题。(示例代码参考周志明 《深入理解java虚拟机 62p》)可达性分析法在主流的商用程序语言的主
2016-12-26 22:03:59
231
原创 JAVA内存区域
运行时数据区域程序计数器程序计数器是一块很小的内存空间,它可以看做是当前线程执行的字节码的行号指示器。JAVA虚拟机栈与程序计数器一样,java虚拟机栈也是线程私有的,他的生命周期与线程相同。虚拟机栈藐视的是java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用知道执行完成的过程,就对应着一个 栈帧在
2016-12-26 21:42:52
350
原创 SpringBoot Dubbo ZooKeeper项目(一)
该系列是一个以springboot dubbo zookeeper为技术栈的练习项目。很多东西不懂,还望大家多多指点。开始吧。前提安装好zookeeper最好是集群的,3个节点吧。项目结构user_manager_api -- 提供服务UserManager - 接口,定义了登录,查询更新3个接口UserManagerImpl - 实现User -
2016-12-25 14:20:18
463
原创 Dubbo应用
在朋友的推荐下,最近在看阿里巴巴出的Dubbo项目,这个做一些笔记需求在大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡。(1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。此时需要一个服务注册中心,动态的注册和发现服务,使服务
2016-12-24 19:42:34
387
原创 CompletionService使用
前面说到Callable和Future。 每一个Callable都会返回一个Future.但是如果ExecutorService启动了多个callable,那么我们就需要处理多个Future,这个时候就应该用到CompletionServiceExecutorService exe2 = Executors.newFixedThreadPool(10); CompletionServi
2016-12-18 22:41:21
573
原创 Callable & Future
我们知道创建一个线程可以通过实现Runnable接口和继承Thread类,并重写run方法。但是run方法是不带返回的。而Callable接口同样是用于多线程,并能返回一个FutureExecutorService exe = Executors.newFixedThreadPool(2); Future future =exe.submit(new Callable() {//sub
2016-12-18 22:36:37
292
原创 ThreadPool使用
为什么要用线程池:1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,线程开的越多,消耗的内存也就越大,最后死机)。Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorSer
2016-12-18 22:20:56
489
原创 ThreadLocal使用
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。package com.zhuyang.concurrency.threadlocal;import java.util.HashMap;import java.util.M
2016-12-18 22:08:25
340
原创 java Atomic分析
JAVA在java.util.concurrent中提供了对原子操作的包,用来实现一些原子操作。package com.zhuyang.concurrency.atomic;import java.util.concurrent.atomic.AtomicInteger;public class AtomicIntegerTest extends Thread { private s
2016-12-18 21:55:32
377
原创 java多线程Lock Condition生产消费者
直接看代码吧,log写的很清楚了,重点是在Queue.java类Consumer用来消费package com.zhuyang.concurrency.lock.notify;import java.util.List;public class Consumer implements Runnable { private Queue queue; public Consum
2016-12-12 00:46:13
387
原创 java 单例模式
/*** 饿汗式* 饿汗式单例模式虽然免除了多线程所带来的影响,但是该对象是在类加载的时候就放到内存。如果该对象足够大,占用资源较多势必会影响程序的性能。** @author Administrator**/public class Singleton1 {private static final Singleton1 instance = new Singleton1();pr
2016-12-10 21:44:29
279
原创 js闭包和循环
function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i]=function(){ return i; } } return arr;}var b = box();console.log(b.length);for(var i=0;i<b.length;i++){ console
2016-12-10 21:38:58
274
原创 javascript闭包
概念: 闭包就是能读取到其他函数内部变量的函数。创建一个闭包方式: 在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。function box(){ var user ='Zhu'; return function(){ return user; }}var b = box();console.log(b(
2016-12-10 21:34:39
234
原创 zookeeper配置文件管理
最近在学ZK知识,刚刚入门,写了一个客户端监控节点配置文件内容的小程序。package com.zhuyang.zk.configuration;import java.io.File;import java.io.FileInputStream;import org.apache.zookeeper.AsyncCallback.StringCallback;import org.ap
2016-12-08 22:42:59
701
原创 js闭包和循环
function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i]=function(){ return i; } } return arr;}var b = box();console.log(b.length);for(var i=0;i<...
2016-11-30 17:25:57
161
原创 javascript闭包
概念: 闭包就是能读取到其他函数内部变量的函数。创建一个闭包方式: 在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。function box(){ var user ='Zhu'; return function(){ return user; }}var b = box();console.log(b())cons...
2016-11-30 17:11:15
105
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人