- 博客(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
483
原创 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
824
原创 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
662
原创 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
839
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
703
原创 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
1106
原创 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
1250
原创 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
814
原创 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
749
原创 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
1077
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
4147
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
943
原创 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
1830
原创 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
5326
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
682
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
1038
原创 wireshark无法识别出TSL SSL数据包
最近发现使用wireshark打开HTTPS流量包,在协议部分看不到SSL/TLS,数据流量显示如下截图:
2020-04-16 09:53:22
1863
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
1187
原创 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
705
原创 Netty源码分析-PromiseCombiner
这个类的作用是用户传递一个消息和一个Promise对象,但是实际编码时把一个消息转化为多个消息输出,那么实际会生成多个Promise对象,PromiseCombiner的作用就是代理用户传递的Promise,当所有消息输出操作完成时,通知用户。/* * Copyright 2016 The Netty Project * * The Netty Project licenses ...
2020-04-13 10:30:32
556
原创 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
1178
原创 Netty源码分析-NioByteUnsafe(read读取流程)
NioByteUnsafe封装了NioSocketChannel读取底层数据的流程。NioEventLoop负责监听Selector上所有的事件,当发生事件时根据事件类型调用Channel的UnSafe中的方法去处理。private void processSelectedKey(SelectionKey k, AbstractNioChannel ch) { fina...
2020-04-10 17:34:20
833
原创 Netty源码分析-AbstractUnsafe(register注册流程)
Netty当中的Channel,对外提供的API都封装再了AbstractUnsafe对象里面。我们分析一个新的客户端连接NioSocketChannel是如何完成注册的。注册h @Override public ChannelFuture register(final ChannelPromise promise) { ObjectUtil...
2020-04-10 16:53:16
521
原创 Netty源码分析-AdaptiveRecvByteBufAllocator
这个类的核心目的就是根据从底层socket读取的字节数量,动态调整分配空间,以及是否继续从socket读取字节流 @Override public final void read() { final ChannelConfig config = config(); if (shouldBreakReadRea...
2020-04-09 10:42:00
1244
原创 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
930
原创 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
913
原创 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
1196
原创 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
1523
原创 以太网数据帧(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
13330
原创 Netty-源码分析WeakReference用例
在研究Netty源码是大量使用了WeakReference引用,它是一个弱引用对象,当GC发生以后,会根据内存情况回收WeakReference引用的对象,届时WeakReference这个对象会被加入到队列中,进行最后的资源清理。public class MyReference extends WeakReference { public MyReference(Objec...
2020-01-09 16:52:08
559
原创 Netty-源码分析WebSocketClient客户端
WebSocketClient客户端使用Netty实现的源码分析EventLoopGroup workerGroup = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); // (1) b.group(workerGroup); // (2) ...
2019-12-26 09:31:37
1699
原创 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
12624
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
945
原创 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
793
原创 Netty-源码分析ByteBuf-readSlice和readRetainedSlice使用细节
返回从当前readerIndex开始的此缓冲区的子区域的新分片,并将readerIndex增加新分片的大小(=长度)。另请注意,此方法将不会调用retain(),因此不会增加引用计数。跟slice极为相似,只是把原始缓冲区的readerIndex进行了增加@Override public ByteBuf readSlice(int length) { ch...
2019-12-09 18:08:29
4100
原创 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
5321
原创 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
836
原创 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
1117
原创 Netty-DirectByteBuffery源码分析
JVM参数 -XX:MaxDirectMemorySize=1024M 来设置可以使用的堆外内存大小。代码中可以使用VM工具类获取VM.maxDirectMemory()DirectByteBuffer源码分析DirectByteBuffer(int cap) { // package-private super(-1...
2019-11-21 16:17:11
350
原创 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
657
FreeMarker 技术应用在哪些场景
2014-02-07
Spring 与 Cglib代理的诡异问题
2013-10-28
谁能真正整明白java volatile 关键字? 一知半解的莫入!
2013-10-10
JDK动态代理 CGLIB动态代理 AspectJ静态代理的区别是什么?
2013-10-06
log4j如何配置日志,就是想看哪个就看哪个
2013-08-11
Fiddler 如何设置拦截代码发起的HTTP请求
2013-07-01
java中 volatile关键字具体什么作用
2013-05-12
请教 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
为什么往匿名类的方法中传参数必须定义长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关注的人