自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用druid数据源,由于网络问题导致oracle SocketInputStream.socketRead0堵塞解决办法

线上Oracle数据库网络非常不稳定,不时发生连接闪断,发现一个线程一直堵塞,日志没有错误。dump出线程信息后如下:pool-4-thread-50" prio=10 tid=0x00007f92f5251000 nid=0x26e1 runnable [0x00007f929a1df000]   java.lang.Thread.State: RUNNABLEat java.n

2018-03-20 11:04:53 8249 1

原创 Netty NIO 源码分析

首先我们写一个单线程的代码模型:package com.zhp.springbootstreamdemo.net;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import j

2018-01-25 17:43:07 374

原创 spring 多数据源手动管理事务,最大程度保障数据一致性

模板代码如下: @Autowired private DataSourceTransactionManager transactionManager; public void insert(CardEntity card, String dataSourceCloud, String tableNo) { TransactionStatus status

2018-01-10 16:13:45 3978 1

原创 maven 打jar包的时候把依赖的包一起打包

maven-assembly-plugin false src/assembly/assembly-fat-jar.xml make-assembly package a

2017-12-28 11:17:11 1638

原创 aop:aspectj-autoproxy 标签解析

1.标签解析对应的handlerhttp\://www.springframework.org/schema/aop=org.springframework.aop.config.AopNamespaceHandler对应的解析类如下registerBeanDefinitionParser("aspectj-autoproxy", new AspectJAutoProxyBeanD

2017-12-06 14:19:36 3916

原创 使用jstack查看当前进程全部线程的状态

1.使用jps 命令找到进程的PID$ jps225648 Jps5268127284 Launcher226980 Launcher227624 ConcurrencyTest2.使用jstack命令dump出线程信息jstack 227624 > ./thread.dump3.分析线程的状态信息$ grep java.lang.T

2017-11-28 17:03:32 10040

翻译 空闲连接检查以及超时的ChannelHandler

IdleStateHandler:当连接空闲时间太长时,将会触发一个IdleStateEvent事件。然后你可以通过在你的ChannlInboundHandler中重写userEventTriggered()方法来处理该IdleStateEvent事件。ReadTimeoutHandler:如果在指定时间间隔内没有收到任何的入站数据,则抛出一个ReadTimeoutException并关闭

2017-11-28 14:22:34 1360

翻译 Netty websocket 实现服务端推送消息

当握手完成时,将channel加入到ChannelGroup中,当发生异常或失活的时候,将channel从ChannelGroup中移除。ChannelGroup维护着所有活动着的链接,使用ChannelGroup向所有Channel推送消息。package netty.pushmsg;import io.netty.channel.ChannelHandlerContext;

2017-11-28 11:02:31 7400 1

原创 spring boot websocket

1.消息广播/** * 广播模式 */@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketBroadcastConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void registerS

2017-11-23 16:27:58 741

原创 kafka producer 发送消息

package com.zhp.springbootstreamdemo.kafka;import org.apache.kafka.clients.producer.Callback;import org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kafka.clients.producer.Produce

2017-11-21 16:01:04 12644 1

原创 redis实现访问限制

package redis;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;import java.util.Arrays;import java.util.HashSet;import java.util.Set;public class RedisLimit {

2017-11-20 15:08:37 2177 1

原创 context:annotation-config 标签解析

激活@Required,@Autowired, @PostConstruct, @PreDestroy, @Resource, @PersistenceContext ,@PersistenceUnit注解registerBeanDefinitionParser("annotation-config", new AnnotationConfigBeanDefinitionParser())

2017-11-14 11:16:19 1002

原创 context:component-scan 标签解析

1.作用扫描classpath下带有注解的类,注册成spring bean。Spring 默认提供的注解包括@Component,@Repository,@Service,@Controller,@RestController,@ControllerAdvice, @Configuration。它有一个annotation-config属性默认是ture,它的作用和 一样。激活@R

2017-11-14 10:18:09 3970

原创 Netty 需要注意的细节

SimpleChannelInboundHandler 实现了channelRead 方法,使用了模版模式,最后有一个释放资源的动作。@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { boolean release = true; try {

2017-11-03 11:14:51 477

原创 @Sharable 注解作用

@Sharable 注解用来说明ChannelHandler是否可以在多个channel直接共享使用。下面我们做一个实验。1.Channel共享ChannelHandler对象。但是这个ChannelHandler没有添加@Sharable注解public static void start() throws InterruptedException { final Ech

2017-11-03 09:55:11 23627

原创 context:property-placeholder 标签解析

context:property-placeholder location="classpath*:application.properties"/>对应的handlerhttp\://www.springframework.org/schema/context=org.springframework.context.config.ContextNamespaceHandlerpubl

2017-11-02 09:30:08 671

原创 Spring 事务管理

1.配置解析tx:annotation-driven transaction-manager="transactionManagerMember" order="2"/>我们需要找到这个标签解析的handler,在spring-tx jar包下META-INF目录下spring.handlers文件中找到如下:http\://www.springframework.org/

2017-11-01 09:24:42 244

原创 Netty 时间轮算法实现HashedWheelTimer

1.HashedWheelTimer 参数解析public HashedWheelTimer( ThreadFactory threadFactory, long tickDuration, TimeUnit unit, int ticksPerWheel, boolean leakDetection, long maxPendingTime

2017-10-30 14:19:31 7288

原创 Spring web环境容器启动流程

1.初始化入口 org.springframework.web.context.ContextLoaderListenerpublic class ContextLoaderListener extends ContextLoader implements ServletContextListener 通过实现ServletContextListener 在ServletCo

2017-10-30 09:28:55 1252

原创 ClassPathXmlApplicationContext 初始化流程

1.configLocations的解析构造器代码如下:super(parent);setConfigLocations(configLocations);if (refresh) { refresh();}我们先看setConfigLocations代码this.configLocations = new String[locations.length];

2017-10-26 14:38:39 2173

原创 消息驱动:Spring Cloud Stream

1.stream 配置中的含义当我们使用默认group,和destination时默认创建名为input 的topic类型的exchangespring.cloud.stream.bindings.input.group=queueNamespring.cloud.stream.bindings.input.destination=exchangeName

2017-10-20 15:11:09 10568 5

原创 Spring Boot 配置文件和日志文件放到jar之外

1.设置打包jar的时候排除文件 src/main/resources *.properties logback.xml 2.启动的时候传入参数指定位置java -jar xxx.jar --spring.config.location=D:\springco

2017-10-19 15:24:26 11363

转载 Mybatis级联查询和缓存

1.表结构create table t_lecture( id int(20) not null auto_increment comment '编号', lecture_name varchar(60) not null comment '课程名', note varchar(1024) comment '备注', primary key (id));crea

2017-10-16 15:27:10 515

原创 Oracle批量插入

1.批量插入sql语法insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE) select 8000,0,'Multi 8000',1 from dualunion all select 8001,0,'Multi 8001',1 from dual或者INSERT ALL INTO t

2017-10-12 14:53:49 456

原创 Spring 循环依赖

1、两个都是prototype的bean   两个bean都是prototype,只有在使用的时候才去创建bean。 AbstractBeanFactory类中doGetBean方法检测循环依赖。// Fail if we're already creating this bean instance:// We're assumably within a circular refer

2017-10-12 09:17:24 371

原创 配置中心:Spring Cloud Config

1.Spring Cloud Config 服务端(基于git)1.1添加依赖 org.springframework.cloud spring-cloud-config-server1.2配置#spring.cloud.config.server.git.uri=file:///${user.home}/config-repo 本地调试用spring.

2017-10-10 16:45:56 412

原创 理解JSONP

1.AJAXajax是基于XMLHttpRequest 的,是不能跨域的。request = new XMLHttpRequest();request.onreadystatechange = function () { /*表示XMLHttpRequest对象的状态:0:未初始化。对象已创建,未调用open; 1:open方法成功调用,但Send方法未调用;

2017-09-28 11:00:07 281

原创 Thrift和Spring集成

1.服务端通过TMultiplexedProcessor同时暴露多个服务/** * Thrift通用服务启动类 可以和spring集成 */public class CommonServerDemo { private int port; private MapString, Object> exposedServerMap; public Common

2017-09-28 09:40:59 1292

原创 Thrift

1.DSL1.命名空间namespace java com.zhp 适用java语言namespace * com.zhp 适用于所有语言2.包含外部文件include "chapter3.thrift"引用包含文件的内容时使用 前缀.xxx。例如list getList(1:set ids) throws (1:MyError2 myerror,2:cha

2017-09-26 15:54:54 391

原创 API网关服务:Spring Cloud Zuul

1.Zuul简介        zuul的位置             zuul执行流程简单来说zuul将请求转发,并提供pre,post,error类型过滤器,这些过滤器执行的时间不同,对应不同的阶段

2017-09-21 16:05:34 532

转载 CAP/BASE理论

CAP理论告诉我们,一个分布式系统是不可能同时满足一致性(C:consistency)、可用性(A:Availability)和分区容错性(P: Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。  一致性(C):在分布式系统中所有数据备份在同一时刻是否有同样的值。  可用性(A):在集群中一部分机器节点故障,集群整体是否还能响应客户端的读写请求。

2017-09-18 11:15:55 488

原创 RabbitMQ三种Exchange

1.Direct Exchange    Direct Exchange是一种点对点模式。当消息发送到Direct Exchange时,如果routingkey匹配的话,消息就被投递到对应的队列。  注意有一个默认的direct类型交换器

2017-09-15 11:18:03 252

转载 趋势递增分布式ID生成方法:Snowflake

1.介绍 SnowFlake的结构如下(每部分用-分开): 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 1.第一位是标识位,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。 2.41位时间截(毫秒级)

2017-09-13 09:46:57 2938 1

原创 声明式服务调用:Spring Cloud Feign

1.使用方法   1.消费方基于spring mvc 注解自定义访问接口,这样相当于消费方和服务提供方各自维护一套接口。  2.基于继承的方法,服务提供方将对外接口打成单独的jar包提供出去,消费方依赖这个jar就可以了。缺点是服务提供方和消费方在构建期间就建立起依赖,修改接口的时候需要注意兼容性。  例:服务提供方提供接口public interface FeignContr

2017-09-12 13:17:13 4035

原创 客户端负载均衡 Spring Cloud Ribbon

1.基本思路客户端从服务中心获取服务提供者信息,当客户端使用服务名调用服务时,拦截器帮你把服务名替换为具体的服务地址,服务地址的选择是由路由规则先定。默认是线性轮询。

2017-09-08 15:12:52 460

原创 redis实现分布式锁

1.基本思想 http://doc.redisfans.com/string/set.html 有说明 如下命令 SET resource-name anystring NX EX max-lock-time 是一种在 Redis 中实现锁的简单方法。客户端执行以上的命令:如果服务器返回 OK ,那么这个客户端获得锁。如果服务器返回 NIL ,那么客户端获取锁失

2017-09-05 14:55:45 678

原创 服务治理 Spring Cloud Eureka

1.架构图1.ServiceProvider(服务提供者)会向EurekaServer做Register(服务注册)、Renew(服务续约)、Cancel(服务下线)等操作。2.EurekaServer之间会做注册服务的同步,从而保证状态一致,EurekaServer启动固定频率任务(默认60秒)检查租约是否到期(租约默认90秒)3.ServiceConsume

2017-09-04 15:49:35 317

润乾报表V4.5在J2EE下的部署

润乾报表V4.5在J2EE下的部署。润乾报表V4.5在J2EE下的部署。

2014-04-18

spket 1.6.23 Extjs 4.2 jsb提示文件

此文件需要关联ExtJS 4.2 包下的src文件,必须放在包的根目录下。

2013-11-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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