序
不知不觉一年又要过去了,又到了写总结的时候了。
盘点
整体而言,今年技术层面稍微有点拓宽,跨入了外表看上去高大上的流式计算领域,打开了另外一扇窗;而基于java的分布式/微服务领域,今年变化比较大,spring cloud netflix的部分组件宣布将要进入维护阶段,而国内spring cloud alibaba组件逐渐活跃起来,目前看来处于PublicEvolving阶段;而java自身也处在不断进化中,今年发布了java10及java11,明年java12也要来了,版本变化非常快。稍不留神就跟不上技术更迭了。
今年不知道为什么没有什么想说的了,感觉整体而言自己表现非常一般,有点老气沉沉的感觉,可能是失去了年轻时候的激情,面对现实开始接受自己的平庸。
展望
面对纷繁复杂的技术,觉得技术真是无止境,有时候觉得自己真的很忙,时间真的不够用;但是面对生活,有时候又觉得人毕竟也是要生活的,是为技术而生活,还是为生活而技术,是一个值得思考的问题。
今年定的几个目标基本也没有实现,明年就不再定具体的目标了,大的几个方向就是深入研究流式计算及系统架构,同时也希望自己脚踏实地的同时多仰望星空,多感受人文的世界。
文章导航
arch
case
- 记一次spring schedule异常
- 记一个nginx host not found异常
- Flux OOM实例
- 频繁GC (Allocation Failure)及young gc时间过长分析
- 频繁产生对象造成gc时间过长案例分析
- No thread-bound request found异常
nginx
- nginx http模块配置参数解读
- nginx proxy cache配置参数解读
- nginx gzip配置参数解读
- nginx limit配置参数解读
- nginx rewrite配置解读
- nginx lua api解读
- nginx的port_in_redirect配置
- openresty下lua的function定义及调用
nlp
- 使用opennlp自定义命名实体
- NLP系统体系结构及主要流程
- 朴素贝叶斯算法文本分类原理
- 使用stanford nlp进行依存句法分析
- 使用opennlp进行词性标注
- 使用opennlp进行文档分类
- 使用opennlp进行依存句法分析
- Jena ARQ小试牛刀
java
- jvm排查工具箱jvm-tools
- java8 parallelStream性能测试
- 使用openjdk9-alpine运行springboot2
- 使用maven构建java9 service实例
- java9迁移注意事项
- java9 opens与exports的区别
- java9 module相关选项解析
- java9 gc log参数迁移
- java9系列(三)模块系统精要
- java9系列(四)Process API更新
- java9系列(五)Stack-Walking API
- java9系列(六)HTTP/2 Client (Incubator)
- java9系列(七)Variable Handles
- java9系列(八)Multi-Release JAR Files
- java9系列(九)Make G1 the Default Garbage Collector
- 聊聊java9的classloader
- java9+springboot2+undertow2启用http2及server push
- Java9的新特性
- java10系列(一)Time-Based Release Versioning
- java10系列(二)Local-Variable Type Inference
- Java10的新特性
- java10下编译lombok注解的代码
- 聊聊新版JDK对docker容器的支持
- JDK 10.0.1发布
- JDK11的ZGC小试牛刀
- Java11的新特性
- Java Flight Recorder小试牛刀
- Java11 HttpClient小试牛刀
- 聊聊jdk http的HeaderFilter
- 聊聊jdk httpclient的executor
- 聊聊jdk httpclient的retry参数
- 聊聊jdk httpclient的connect timeout异常
- 聊聊jdk httpclient的ConnectionPool
- 使用proguard混淆springboot代码
- 使用proguard混淆java9代码
- 命令行一键切换java版本的几种方式
- easy-rules小试牛刀
- 使用kotlin改善java代码
- jib打包docker镜像实战
- jib自定义entrypoint
- jmxtrans+influxdb+grafana监控zookeeper实战
- 聊聊ExecutorService的监控
spring boot/cloud
- 聊聊springboot2的micrometer
- 聊聊springboot的HeapDumpWebEndpoint
- 聊聊springboot2的MappingsEndpoint
- 聊聊springboot2的LoggersEndpoint
- springboot2增加diskspace指标
- 聊聊springboot2的ScheduledTasksEndpoint
- 聊聊springboot2的httptrace
- springboot2自定义HttpTraceRepository
- 聊聊springboot2的embeded container的配置改动
- springboot2自定义statsd指标前缀
- springboot2上报metrics到statsd
- springboot2输出metrics到influxdb
- 聊聊springboot1.x及2.x的JvmGcMetrics的区别
- 聊聊JvmGcMetrics的managementExtensionsPresent
- 聊聊micrometer的HistogramGauges
- micrometer自定义metrics
- spring-boot-admin 2.0小试牛刀
- chaos-monkey-spring-boot小试牛刀
- dubbo-spring-boot-starter小试牛刀
- springboot整合vue小试牛刀
- 聊聊servicecomb-saga的alpha-server
- 聊聊Spring Data Auditable接口的变化
- spring security reactive获取security context
- 聊聊springcloud的featuresEndpoint
spring cloud eureka
- 聊聊springcloud的serviceRegistryEndpoint
- 聊聊springcloud的EurekaClientAutoConfiguration
- 聊聊netflix的EurekaHttpClient
- 聊聊eureka client的shutdown
- 聊聊spring cloud eureka的instanceEnabledOnit属性
- 聊聊Eureka Server的REST API
- 聊聊eureka server的instance注册及元数据变更接口
- 聊聊eureka client的HeartbeatThread
- 聊聊eureka client的serviceUrl
- 聊聊spring cloud的DefaultEurekaServerContext
- 聊聊spring cloud的EurekaServerInitializerConfiguration
- 聊聊eureka的PeerAwareInstanceRegistryImpl
- 聊聊eureka的TaskDispatcher
- 聊聊eureka的renewal
- 聊聊eureka instance的lastDirtyTimestamp
- 聊聊eureka instance的overriddenstatus
- 聊聊JerseyEurekaHttpClient的参数
- 聊聊eureka的preferSameZoneEureka参数
- 聊聊eureka的appname属性
- 聊聊eureka的ZoneAffinityServerListFilter
- 聊聊eureka client的backup-registry-impl属性
- 聊聊eureka server的RemoteRegionRegistry
- 聊聊eureka client的fetch-remote-regions-registry属性
- 聊聊eureka的delta配置
- 聊聊eureka server的response cache
- 聊聊EurekaHealthCheckHandler
spring cloud gateway
- spring cloud gateway的stripPrefix配置
- 聊聊springcloud的GatewayControllerEndpoint
- 聊聊spring cloud gateway的RemoveHopByHopHeadersFilter
- 聊聊spring cloud gateway的XForwardedHeadersFilter
- 聊聊spring.cloud.gateway.default-filters
- 聊聊spring cloud gateway的ForwardedHeadersFilter
- 聊聊spring cloud gateway的NettyConfiguration
- 聊聊spring cloud gateway的SecureHeadersGatewayFilter
- 聊聊spring cloud的DiscoveryClientRouteDefinitionLocator
- 聊聊spring cloud gateway的RouteLocator
- 聊聊spring cloud gateway的streaming-media-types属性
- 聊聊spring cloud gateway的GlobalFilter
- 聊聊spring cloud gateway的GatewayFilter
- spring cloud gateway集成hystrix实战
- 聊聊spring cloud gateway的PrefixPath及StripPrefix功能
- 聊聊spring cloud gateway的RedirectToGatewayFilter
- 聊聊spring cloud gateway的PreserveHostHeaderGatewayFilter
- 聊聊spring cloud gateway的SetStatusGatewayFilter
- 聊聊spring cloud的RequestHeaderToRequestUriGatewayFilter
- 聊聊spring cloud的RequestRateLimiterGatewayFilter
- 聊聊spring cloud gateway的RetryGatewayFilter
- 聊聊spring cloud gateway的LoadBalancerClientFilter
- 聊聊spring cloud gateway的RedisRateLimiter
hystrix
- 聊聊spring cloud netflix的HystrixCommands
- 聊聊spring cloud的HystrixAutoConfiguration
- 聊聊spring cloud的HystrixCircuitBreakerConfiguration
- 聊聊HystrixThreadPool
- 聊聊hystrix的timeout处理
- 聊聊HystrixCircuitBreaker
- 聊聊HystrixPlugins
- 聊聊HystrixEventNotifier
- 聊聊HystrixConcurrencyStrategy
- 聊聊HystrixMetricsPublisher
- 聊聊HystrixPropertiesStrategy
- 聊聊HystrixCommandExecutionHook
- 聊聊hystrix的queueSizeRejectionThreshold参数
- 聊聊HystrixEventStream
- 聊聊hystrix的BucketedCounterStream
- 聊聊hystrix的execution.isolation.semaphore.maxConcurrentRequests属性
- 聊聊hystrix的fallback
resilience4j
- resilience4j小试牛刀
- 聊聊resilience4j的CircuitBreakerConfig
- 聊聊resilience4j的CircuitBreaker
- 聊聊resilience4j的CircuitBreakerStateMachine
- 聊聊resilience4j的bulkhead
- 聊聊resilience4j的Retry
- 聊聊resilience4j的fallback
spring cloud locadbalancer
- 聊聊spring cloud的LoadBalancerAutoConfiguration
- 聊聊spring cloud的AsyncLoadBalancerAutoConfiguration
- 聊聊spring cloud的AbstractLoadBalancingClient
- 聊聊ribbon的retry
- 聊聊ribbon的超时时间设置
- 聊聊EurekaRibbonClientConfiguration
- 聊聊RibbonLoadBalancerClient的choose方法
- 聊聊WebClient的LoadBalance支持
redis
- 聊聊spring-boot-starter-data-redis的配置变更
- redis的bitset实战
- redis的HyperLogLog实战
- redis的GEO实战
- RedisTemplate读取slowlog
- 聊聊redis的HealthIndicator
- 聊聊lettuce的指标监控
- redis的sentinel模式故障演练
- 聊聊lettuce的sentinel连接
- 聊聊spring-data-redis的连接池的校验
- 聊聊redisTemplate对lettuce的封装
- 聊聊lettuce的shareNativeConnection参数
- 聊聊LettucePoolingConnectionProvider
- 聊聊redis的slowlog与latency monitor
- 聊聊redis的事务操作
- 聊聊redis的数据结构的应用
- 聊聊redisson的分布式锁
- 聊聊redisson的DelayedQueue
- 聊聊redis的监控工具
- 聊聊redisson的RMap的computeIfAbsent操作
mongo
mq
- OpenMessaging概览
- 聊聊openmessaging-java
- 聊聊openmessaging的MessagingAccessPoint
- open-messaging使用实例
- 聊聊AbstractOMSProducer
- 聊聊rocketmq的ProducerImpl
- 聊聊rocketmq的SequenceProducerImpl
- 聊聊rocketmq的PullConsumerImpl
- 聊聊rocketmq的PushConsumerImpl
- 聊聊rocketmq的KVConfigManager
- 聊聊rocketmq的BrokerHousekeepingService
- 聊聊rocketmq的NettyClientConfig
- 聊聊rocketmq的RequestTask
- 聊聊rocketmq的NettyEncoder及NettyDecoder
- 聊聊rocketmq的RemotingException
- 聊聊rocketmq的FileAppender
- 聊聊rocketmq的RollingFileAppender
- 聊聊rocketmq的DailyRollingFileAppender
- 聊聊rocketmq的AsyncAppender
sentinel
- alibaba限流组件Sentinel实战
- 聊聊sentinel的SimpleHttpCommandCenter
- 聊聊sentinel的SentinelWebAutoConfiguration
- 聊聊sentinel的ModifyRulesCommandHandler
- 聊聊sentinel的DataSource
- 聊聊sentinel的SentinelResourceAspect
- sentinel自定义DataSource实战
- 聊聊sentinel的NettyHttpCommandCenter
- 聊聊sentinel的ArrayMetric
- 聊聊sentinel的DefaultSlotsChainBuilder
- 聊聊sentinel的StatisticSlot
- 聊聊sentinel的AuthoritySlot
- 聊聊sentinel的DegradeSlot
- 聊聊sentinel的FlowSlot
- 聊聊sentinel的SystemSlot
- 聊聊token bucket算法的实现
- 聊聊leaky bucket算法的实现
- 聊聊Guava的RateLimiter
- bucket4j使用实例
- bucket4j-spring-boot-starter小试牛刀
reactive
- reactive streams与观察者模式
- 聊聊reactive streams的Mono及Flux
- 聊聊reactive streams publisher的doOn方法
- 聊聊reactive streams的backpressure
- 聊聊reactive streams的schedulers
- 聊聊reactive streams的parallel flux
- 聊聊reactive streams的processors
- 聊聊reactive streams的tranform操作
- 使用SseEmitter不断向网页输出结果
- spring 5 webclient使用指南
- spring webflux文件上传下载
- spring webflux返回application/stream+json
- reactor3 flux的map与flatMap的区别
- 聊聊reactor extra的retry
- 使用webflux提升数据导出效率
- spring 5 webflux异常处理
- webclient的超时时间配置
- FluxInterval实例及解析
- FluxSink实例及解析
- webclient对reactor-netty的封装
- reactor-netty中HttpClient对TcpClient的封装
- reactor-netty中TcpClient的create过程
- reactor-netty中TcpClient的newHandler过程
- reactor-netty的TcpClient如何往eventLoop提交task
- 聊聊webflux参数校验
- 聊聊reactor异步线程的变量传递
- 聊聊reactor-netty的PoolResources的两种模式
- 聊聊NettyConnector的start及shutdown
- 聊聊Flux的compose与flatMap操作
- 聊聊FluxFlatMap的concurrency及prefetch参数
- reactor-kafka小试牛刀
- reactor-rabbitmq小试牛刀
jdbc
- 聊聊jdbc socketTimeout的设置
- 聊聊jdbc statement的fetchSize
- 聊聊pg jdbc的queryTimeout及next方法
- 聊聊mysql jdbc的queryTimeout及next方法
- 聊聊pg jdbc statement的maxRows参数
- 聊聊tomcat jdbc pool的默认参数及poolSweeper
- 聊聊jdbc的batch操作
- 聊聊jpa的batch操作的实现
- 聊聊jdbc的大数据量读写相关异常的防御措施
- 聊聊spring boot tomcat jdbc pool的属性绑定
- springboot2的hikari数据库连接池默认配置
- 聊聊hikari连接池的isAllowPoolSuspension
- 聊聊hikari连接池的validationTimeout
- 聊聊hikari连接池的leakDetectionThreshold
- 聊聊hikari连接池的maxLifetime属性及evict操作
- 聊聊hikari与tomcat jdbc pool的fail fast
- 聊聊hikari连接池的idleTimeout及minimumIdle属性
- 聊聊hikari连接池的fixed pool design
- 使用RSQL实现端到端的动态查询
- 聊聊jpa的动态查询
storm
- 聊聊storm的submitTopology
- 聊聊storm client的nimbus.seeds参数
- 聊聊storm nimbus的LeaderElector
- 聊聊curator recipes的LeaderLatch
- 聊聊storm supervisor的启动
- 聊聊storm worker的executor与task
- 聊聊storm的GraphiteStormReporter
- 聊聊storm nimbus的mkAssignments
- 聊聊storm的AssignmentDistributionService
- 聊聊storm的PartialKeyGrouping
- 聊聊storm的CustomStreamGrouping
- 聊聊storm的direct grouping
- 聊聊storm的tickTuple
- 聊聊storm的ack机制
- storm drpc实例
- 聊聊storm的reportError
- 聊聊storm的WindowedBolt
- 聊聊storm的WindowedBoltExecutor
- 聊聊storm的JoinBolt
- 聊聊storm的stream的分流与合并
- 聊聊storm的LinearDRPCTopologyBuilder
- 聊聊storm的IWaitStrategy
- 聊聊storm的maxSpoutPending
- 聊聊storm的messageTimeout
- 聊聊storm client的netty buffer watermark
- 聊聊storm的CheckpointSpout
- 聊聊storm trident的state
- 聊聊storm trident的operations
- 聊聊storm的IEventLogger
- 聊聊storm的LoggingMetricsConsumer
- 聊聊storm的LoggingClusterMetricsConsumer
- 聊聊storm tuple的序列化
- 聊聊storm TridentTopology的构建
- 聊聊storm trident的coordinator
- 聊聊storm-kafka-client的ProcessingGuarantee
- 聊聊storm的window trigger
- 聊聊storm TridentWindowManager的pendingTriggers
- 聊聊storm WindowTridentProcessor的FreshCollector
- 聊聊storm的AggregateProcessor的execute及finishBatch方法
- 聊聊storm TridentBoltExecutor的finishBatch方法
- 聊聊storm trident batch的分流与聚合
- 聊聊storm trident spout的_maxTransactionActive
- 聊聊storm的ICommitterTridentSpout
- 聊聊storm的OpaquePartitionedTridentSpoutExecutor
flink
- 聊聊flink LocalEnvironment的execute方法
- 聊聊flink的log.file配置
- 聊聊flink如何兼容StormTopology
- 聊聊flink的SpoutWrapper
- 聊聊flink的BoltWrapper
- 聊聊flink的CsvReader
- 聊聊flink的SourceFunction
- 聊聊flink的RichParallelSourceFunction
- 聊聊flink的InputFormatSourceFunction
- 聊聊flink的ParallelIteratorInputFormat
- 聊聊flink的PrintSinkFunction
- 聊聊flink的SocketClientSink
- 聊聊flink的TextOutputFormat
- 聊聊flink的JDBCOutputFormat
- 聊聊flink的CheckpointedFunction
- 聊聊flink的ListCheckpointed
- 聊聊flink的CheckpointScheduler
- 聊聊flink StreamOperator的initializeState方法
- 聊聊flink的checkpoint配置
- 聊聊flink的MemoryStateBackend
- 聊聊flink的OperatorStateBackend
- 聊聊flink的PartitionableListState
- 聊聊flink的MemoryBackendCheckpointStorage
- 聊聊flink的MemCheckpointStreamFactory
- 聊聊flink的FsStateBackend
- 聊聊flink的FsCheckpointStorage
- 聊聊flink的FsCheckpointStreamFactory
- 聊聊flink的TimeCharacteristic
- 聊聊flink的EventTime
- 聊聊flink的AscendingTimestampExtractor
- 聊聊flink的BoundedOutOfOrdernessTimestampExtractor
- 聊聊flink的Managed Keyed State
- 聊聊flink的StateDescriptor
- 聊聊flink的StateTtlConfig
- 聊聊flink的AbstractTtlState
- 聊聊flink的Broadcast State
- 聊聊flink的Queryable State
- 聊聊flink KeyedStream的KeySelector
- 聊聊flink KeyedStream的reduce操作
- 聊聊flink KeyedStream的aggregation操作