自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(218)
  • 资源 (1)
  • 问答 (30)
  • 收藏
  • 关注

原创 RX-JAVA distinct debounce defer merge

distinct 去重 Observable.just(1, 1, 1, 2, 2, 3, 4, 5) .distinct() .subscribe(new Consumer<Integer>() { @Override public void accept(Integer integer) throws Exception {

2021-02-24 11:00:10 378

原创 RXJAVA-doOnNext

它的作用是让订阅者在接收到数据之前干点有意思的事情。假如我们在获取到数据之前想先保存一下它,无疑我们可以这样实现。package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.functions.Consumer;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class RxJavaTest { public static void main(Strin

2021-02-23 17:18:29 693

原创 RXJAVA-filter

Filter你会很常用的,它的作用也很简单,过滤器嘛。可以接受一个参数,让其过滤掉不符合我们条件的值。package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.functions.Consumer;import io.reactivex.functions.Predicate;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class RxJavaTest .

2021-02-23 17:00:57 558

原创 RXJAVA-concat

concat操作符可以连接俩个Observable,只有第一个Observable调用了onComplete后,才会触发第二个Observable。比如在读取数据时,先查询缓存,缓存存在直接处理,不存在查询数据库,然后在处理。package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.disposables.Disposable;import io.reactivex.functions.Consumer;

2021-02-23 10:38:23 724 1

原创 RXJAVA-concatMap

与flatMap类似,concatMap它和flatMap的作用几乎一模一样, 只是它的结果是严格按照上游发送的顺序来发送的, 来看个代码吧:package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.functions.Consumer;import io.reactivex.functions.Function;import io.reactivex.schedulers.Schedulers;impor

2021-02-22 15:48:17 612

原创 RXJAVA-FlatMap

FlatMap将一个发送事件的上游Observable变换为多个发送事件的Observables,然后将它们发射的事件合并后放进一个单独的Observable里.package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.functions.Consumer;import io.reactivex.functions.Function;import io.reactivex.schedulers.Sc.

2021-02-22 15:46:32 999

原创 RXJAVA-Map

map是RxJava中最简单的一个变换操作符了, 它的作用就是对上游发送的每一个事件应用一个函数,使得每一个事件都按照指定的函数去变化. 用事件图表示如下:package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.functions.Consumer;import io.reactivex.functions.Function;import lombok.extern.slf4j.Slf4..

2021-02-22 15:39:44 1145

原创 RXJAVA-Maybe

Maybe是Single和Completable的结合,需要注意的是onSuccess和onComplete方法只会执行其中一个,这不同于Observable和Flowable最后是以onComplete()结尾.package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.disposables.Disposable;import io.reactivex.schedulers.Schedulers;impor

2021-02-22 14:44:09 680

原创 RXJAVA-Completable

Completable 不会发射数据,只会给下游发送一个信号。回调onComplete方法。package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.disposables.Disposable;import io.reactivex.schedulers.Schedulers;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class RxJavaTest.

2021-02-22 14:39:14 547

原创 RxJAVA-Single

interface SingleObserver<T> { void onSubscribe(Disposable d); void onSuccess(T value); void onError(Throwable error);}订阅者一共三个方法可以处理。给出示例package com.netty.demo.vertx;import io.reactivex.*;import io.reactivex.disposables.Disposab.

2021-02-22 14:18:51 959 1

原创 Aspose Cells Excel模板转PDF Linux中文乱码解决

版本20.11Copying Fonts from a Windows Machine An easy and quick way to get TrueType fonts on a Linux system is to copy .TTF and .TTC files from the C:\Windows\Fonts directory on a Windows machine to some directory on your Linux machine. You do not need

2020-12-16 17:53:39 3331 9

原创 Netty源码分析-HttpObjectEncoder

/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance...

2020-04-28 11:19:56 799

原创 Netty源码分析-HttpObjectDecoder

/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance *...

2020-04-27 16:36:44 1675

原创 Netty源码分析-ChunkedFile和ChunkedWriteHandler

/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance *...

2020-04-24 22:19:36 5032 1

原创 Netty源码分析-NioEventLoop

/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance *...

2020-04-22 15:39:18 607 1

原创 Netty源码分析-SingleThreadEventExecutor

/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance *...

2020-04-21 15:20:22 912

原创 wireshark无法识别出TSL SSL数据包

最近发现使用wireshark打开HTTPS流量包,在协议部分看不到SSL/TLS,数据流量显示如下截图:

2020-04-16 09:53:22 1635 1

原创 Netty源码分析-Bootstrap客户端连接过程

Netty源码分析-Bootstrap客户端连接过程下面是客户端连接模板代码 public static void main(String[] args) throws Exception { EventLoopGroup workerGroup = new NioEventLoopGroup(); try { Bootstr...

2020-04-13 16:53:08 1041

原创 Netty源码分析-MessageToMessageEncoder

消息到消息的编码器/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in co...

2020-04-13 10:35:41 647

原创 Netty源码分析-PromiseCombiner

这个类的作用是用户传递一个消息和一个Promise对象,但是实际编码时把一个消息转化为多个消息输出,那么实际会生成多个Promise对象,PromiseCombiner的作用就是代理用户传递的Promise,当所有消息输出操作完成时,通知用户。/* * Copyright 2016 The Netty Project * * The Netty Project licenses ...

2020-04-13 10:30:32 468

原创 Netty源码分析-MessageToMessageDecoder

package io.netty.handler.codec;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInboundHandler;import io.netty.channel.ChannelInboundHandlerAdapter;import io.nett...

2020-04-11 19:31:54 1120

原创 Netty源码分析-NioByteUnsafe(read读取流程)

NioByteUnsafe封装了NioSocketChannel读取底层数据的流程。NioEventLoop负责监听Selector上所有的事件,当发生事件时根据事件类型调用Channel的UnSafe中的方法去处理。private void processSelectedKey(SelectionKey k, AbstractNioChannel ch) { fina...

2020-04-10 17:34:20 763

原创 Netty源码分析-AbstractUnsafe(register注册流程)

Netty当中的Channel,对外提供的API都封装再了AbstractUnsafe对象里面。我们分析一个新的客户端连接NioSocketChannel是如何完成注册的。注册h @Override public ChannelFuture register(final ChannelPromise promise) { ObjectUtil...

2020-04-10 16:53:16 457

原创 Netty源码分析-AdaptiveRecvByteBufAllocator

这个类的核心目的就是根据从底层socket读取的字节数量,动态调整分配空间,以及是否继续从socket读取字节流 @Override public final void read() { final ChannelConfig config = config(); if (shouldBreakReadRea...

2020-04-09 10:42:00 1171

原创 Netty源码分析-MessageToByteEncoder

MessageToByteEncoder是一个抽象编码器,子类可重新encode方法把对象编码为ByteBuf输出。源码分析package io.netty.handler.codec;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.channel.Channel...

2020-03-28 09:21:06 861

原创 JWT-JAVA简单测试用例

package com.ht.web.util;import com.auth0.jwt.JWT;import com.auth0.jwt.JWTVerifier;import com.auth0.jwt.algorithms.Algorithm;import com.auth0.jwt.exceptions.JWTCreationException;import com...

2020-03-11 15:49:59 794

原创 Netty源码分析-ChannelInitializer

ChannelInitializer是一个PPLine的初始化工具,可以往PPLine里面设置Handler。protected abstract void initChannel(C ch) throws Exception;我们可以重写此方法来完成初始化动作,往PPLine当中加入Handler。.childHandler(new ChannelInitializer<S...

2020-03-09 14:23:57 1001

原创 Centos6-IPtables配置端口转发

开启IP转发首先开启IP转发功能,默认是关闭的。临时修改:# echo 1 >/proc/sys/net/ipv4/ip_forward修改过后就马上生效,但如果系统重启后则又恢复为默认值0。永久修改:vi /etc/sysctl.conf# 找到下面的值并将0改成1net.ipv4.ip_forward = 1# sysctl -p(使之立即生效)默...

2020-03-05 16:29:15 1376

原创 以太网数据帧(802.3)最大与最小长度

转载https://blog.csdn.net/farmwang/article/details/64131318以太网(IEEE 802.3)帧格式:1、前导码:7字节0x55,一串1、0间隔,用于信号同步2、帧起始定界符:1字节0xD5(10101011),表示一帧开始3、DA(目的MAC):6字节4、SA(源MAC):6字节5、类型/长度:2字节,0~1500保留为长度域值,...

2020-02-25 17:31:53 11424

原创 Netty-源码分析WeakReference用例

在研究Netty源码是大量使用了WeakReference引用,它是一个弱引用对象,当GC发生以后,会根据内存情况回收WeakReference引用的对象,届时WeakReference这个对象会被加入到队列中,进行最后的资源清理。public class MyReference extends WeakReference { public MyReference(Objec...

2020-01-09 16:52:08 493

原创 Netty-源码分析WebSocketClient客户端

WebSocketClient客户端使用Netty实现的源码分析EventLoopGroup workerGroup = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); // (1) b.group(workerGroup); // (2) ...

2019-12-26 09:31:37 1506

原创 JAVA中的时区设置

JAVA中的时区设置第一种方式、通过代码指定。final TimeZone timeZone = TimeZone.getTimeZone("GTM+8");TimeZone.setDefault(timeZone);第二种方式、通过JVM参数指定 -Duser.timezone=Asia/Shanghai第三种方式、通过环境变量指定export TZ=...

2019-12-16 13:31:50 11260 2

原创 Netty-源码分析DelimiterBasedFrameDecoder

DelimiterBasedFrameDecoder自定义分隔符解码器package io.netty.handler.codec;import static io.netty.util.internal.ObjectUtil.checkPositive;import io.netty.buffer.ByteBuf;import io.netty.channel.Chann...

2019-12-16 10:22:42 863

原创 Netty-源码分析LineBasedFrameDecoder

LineBasedFrameDecoder源码分析package io.netty.handler.codec;import io.netty.buffer.ByteBuf;import io.netty.channel.ChannelHandlerContext;import io.netty.util.ByteProcessor;import java.util.List;...

2019-12-10 13:28:34 719

原创 Netty-源码分析ByteBuf-readSlice和readRetainedSlice使用细节

返回从当前readerIndex开始的此缓冲区的子区域的新分片,并将readerIndex增加新分片的大小(=长度)。另请注意,此方法将不会调用retain(),因此不会增加引用计数。跟slice极为相似,只是把原始缓冲区的readerIndex进行了增加@Override public ByteBuf readSlice(int length) { ch...

2019-12-09 18:08:29 3952

原创 Netty-源码分析ByteBuf-slice和retainedSlice使用细节

Netty-源码分析ByteBuf-slice和retainedSlice使用细节slice()=slice(buf.readerIndex(), buf.readableBytes())源码片段,返回原始ByteBuf可读字节的一部分,修改返回的缓冲区或此缓冲区的内容会影响彼此的内容,他们维护单独的index和makers,此方法不会修改原始缓冲区的readerIndex或wri...

2019-12-09 18:01:54 5013

原创 Netty-TCP握手与挥手研究

客户端TCP状态装换时序图服务器端状态装换时序图package com.ht.web.tcp;import java.io.IOException;import java.net.Socket;import java.util.Arrays;public class TcpClient { public static void main(Strin...

2019-11-22 14:14:28 754

原创 Netty-(interestOps & readInterestOp) != 0写法的意义

//OP_READ = 1 00000001//OP_WRITE = 4 00000100//OP_CONNECT = 8 00001000//OP_ACCEPT = 16 00010000 protected final void removeReadOp() { SelectionKey key = selectionKey(); ...

2019-11-21 21:10:23 1053

原创 Netty-DirectByteBuffery源码分析

JVM参数 -XX:MaxDirectMemorySize=1024M 来设置可以使用的堆外内存大小。代码中可以使用VM工具类获取VM.maxDirectMemory()DirectByteBuffer源码分析DirectByteBuffer(int cap) { // package-private super(-1...

2019-11-21 16:17:11 300

原创 CentOS6.8Minimal安装Gnome桌面并安装Tigervnc进行远程管理

一、给Centos6.8Minimal安装桌面环境@1、安装桌面软件yum groupinstall "Desktop"@2、安装X-Window组件yum groupinstall "X Window System"@3、安装字体yum -y install dejavu-sans-* dejavu-serif-fonts@4、开机启动编辑/etc/inittab...

2019-11-19 16:55:17 597

Jquery框架 有文档

Jquery1.3目前流行的框架.有中文文档。

2009-06-20

FreeMarker 技术应用在哪些场景

2014-02-07

Spring 与 Cglib代理的诡异问题

2013-10-28

谁能真正整明白java volatile 关键字? 一知半解的莫入!

2013-10-10

JDK动态代理 CGLIB动态代理 AspectJ静态代理的区别是什么?

2013-10-06

Spring3.2MVC ContextLoaderListener DispatcherServlet 加载冲突

2013-08-19

log4j如何配置日志,就是想看哪个就看哪个

2013-08-11

Fiddler 如何设置拦截代码发起的HTTP请求

2013-07-01

Tomcat7.0.32 Filter拦截不到 @<%@ include file='xxx.jsp'%>请求

2013-05-17

java中 volatile关键字具体什么作用

2013-05-12

在Spring中 BeanFactory与 ApplicationContext 俩个接口的区别是什么

2013-05-09

请教 Aspose.Cells for Java 自定义excel模板问题

2013-04-28

java如何获取 request payload 里面的数据

2013-04-13

Jackson 序列化 如何让为NULL的属性不参与序列化

2013-03-29

springmvc @ResponseBody日期格式化

2013-03-16

Json_lib 序列化对象 如果属性为null 不序列化

2013-03-14

Hibernate 查看SQL语句

2013-02-23

ExtJs 实现类似JqGrid的搜索功能,求能人指点

2013-02-18

Jackson Json序列化的问题

2013-01-25

java自动识别图片固定位置的编号

2013-01-09

请问console.log([]==![]);的输出结果,原理是什么?

2013-01-01

ExtJs JsonStore 配置问题

2012-12-07

javaScript 回调函数问题

2012-12-01

spring3 与 hibernate3.2集成时的问题,个人感觉配置没什么问题好像是jar从冲突

2012-11-19

为什么往匿名类的方法中传参数必须定义长final的

2012-11-16

JsonObject 解析java对象的问题

2012-11-14

Hibernate4.1.7 配置proxool 问题

2012-11-10

怎么样能让tomcat6 在死掉的时候自动重启

2012-09-28

jquery validate 让普通按钮 代替 submit 来激发表单验证

2012-09-25

mybatis-3.1.1的配置文件下载地址

2012-09-10

关于ibaits返回map缓存问题

2012-09-07

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

TA关注的人

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