自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

且炼时光

韶华未褪,且炼时光 linshenkx.cn

  • 博客(77)
  • 收藏
  • 关注

原创 个人博客系统设计(支持hexo和halo同步)

本文主要介绍自己的博客系统是如何设计的,并使用[Halo博客同步器](https://github.com/linshenkx/haloSyncServer) 将hexo(git pages: https://linshenkx.github.io )文章自动同步到halo( http://linshenkx.cn )。实现一次编写、两套博客系统并存、多个网址访问的效果。

2022-01-19 23:20:16 1863

原创 深入解析Spring使用枚举接收参数和返回值机制并提供自定义最佳实践

本文的目的在于提供一种在 restful接口兼容使用code接收枚举参数的实现方案。文章目录一 目标与思路0 起因1 目标2 思路二 代码实现1 通用code枚举接口2 转换器工厂类3 Spring MVC 配置类三 相关知识一 目标与思路0 起因《阿里巴巴Java开发手册》将接口中枚举的使用分为两类,即 接口参数和接口返回值,并规定:接口参数可以使用枚举类型,但接口返回值不可以使用枚举...

2019-01-14 09:54:10 17632 8

原创 Spring Security 5.0的DelegatingPasswordEncoder详解

本文参考自Spring Security 5.0.4.RELEASE 的官方文档,结合源码介绍了DelegatingPasswordEncoder,对其工作过程进行分析并解决其中遇到的问题.包括There is no PasswordEncoder mapped for the id "null"的非法参数异常的正确处理方法PasswordEncoder1 NoOpPasswordE...

2018-05-07 14:30:32 19726 9

原创 一文流:hive使用 bulk load 批量导入数据到 hbase

本文主要参考了hbase和hive官方文档的说明,并结合cdh和hdp的一些教程以及个人在生产中的实践进行记录。主要内容有hbase bulkload的原理以及对应hive的操作步骤,最后基于cdh进行完整实验提供参考实例。实验环境为:CDH6.3.2,对应的各个组件版本为:hadoop3.0.0,hbase2.1.0,hive2.1.1文章目录一 hbase bulk loading批量加载 原理1 概述2 批量加载架构1. 通过MapReduce作业准备数据2. 完成数据加载二 hive 操作步骤1

2020-11-23 22:49:02 2076

原创 hive编写udf实践记录

官方教程:https://cwiki.apache.org/confluence/display/Hive/HivePlugins简单使用查看上面官方的文档即可。这里记录一下我使用的实践和一点注意事项。文章目录一 编写udfgradle配置UDF类打jar包二 创建function1 创建临时function2 创建永久function一 编写udf这里的需求是写一个udf,用于将经纬度转换成geohash。参数有 经纬度和geohash的精度。gradle配置gradle 部分配置如下:de

2020-11-10 23:47:22 769

原创 CDH客户端环境搭建

最近遇到一个需求:要使用azkaban对接客户的CDH集群,CDH用的是oozie,azkaban只能部署在我们客户端的机器上,所以需要在客户机上手动搭建CDH的hadoop环境。操作很简单,过程比较麻烦,这里记录一下。文章目录一 获取所需CDH rpm包1. 搭建本地CDH package仓库2. 使用 yumdownloader 获取rpm包二 安装CDH rpm包三 配置CDH 环境1. 配置环境变量2. 添加配置文件四 验证1. hdfs2. yarn3. hbase4. hive5. spark

2020-11-10 21:51:20 893 1

原创 kafka单机部署(含SASL认证)

适用于搭建zookeeper+kafka本地测试环境,使用密码认证,并给出相关shell测试例子。文章目录一 下载安装二 zookeeper1. 配置2. 启动三 kafka1. 配置1. 修改server.properties2. 添加 kafka_jaas.conf 文件2. 启动四 测试0. 编写连接配置文件kafka_client.properties1. 创建topic2. 浏览topic3. producer4. consumer5. 查看consumer group列表一 下载安装直接去

2020-11-10 00:53:58 1006 1

原创 oracle logminer学习和实践笔记

文章目录一 搭建环境1 使用docker提供oracle运行环境2 加入功能包3 启用补充日志4 开启archivelog mode二 实践1 创建字典文件2 创建归档日志一 搭建环境1 使用docker提供oracle运行环境docker run -d --name my-oracle --restart=always -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g-r2连接配置如下:hostname: lo

2020-09-24 17:03:16 368

原创 hdfs-ftp-server:基于hdfs的ftp服务器的设计与技术实现

项目基于hdfs-over-ftp进行升级改造,支持hadoop2.9.2,支持高可用连接及kerberos认证,并提供docker镜像,开箱即用,适用于生产环境。本文主要对项目的设计和实现思路进行记录。具体代码和使用方法可直接到GitHub:https://github.com/linshenkx/hdfs-ftp-server 和DockerHub:https://hub.docker.com/r/linshen/hdfs-ftp-server一 设计1 参考项目主要参考了 https://gi

2020-09-14 00:27:09 926 2

原创 Kubernetes应用中使用TLS/SSL证书的两种方法及实践 详细整理版

在k8s应用注入自签发的TLS/SSL证书有两种思路:1.使用certificates.k8s.io API 进行签发。2. 自己生成CA证书进行签发,将所需的证书及公密钥打包进secret。本文将对这两种方法进行比较并动手实践。文章目录零 获取自签发CA根证书1. 准备好openssl工具2. 创建 CA证书签名申请 配置文件(ca-csr-config.json)3. 生成 CA密钥及证书一 certificates.k8s.io API签发1 配置kubernetes使用自定义的CA根证书二 使用自

2020-08-27 23:55:09 6912 1

原创 Xloggc实践(JVM1.8及之前)

Java服务器服务器调优免不了要对gc日志就行分析,我一般是使用GCEasy上传gc日志文件分析的,一般希望gc日志文件在不能丢失(但允许超过一定时间或大小被清理掉)的情况下控制gc日志的大小或者按时间切割,即像Java日志框架那样的效果。Java9对jvm的日志系统进行了比较大的升级,可以比较好的实现这些需求,但大部分服务端的Java软件还只支持Jdk8,本文记录作者自己的相关配置。首先推荐看两篇gceasy的博客文章,网上对UseGCLogFileRotation的相关讨论很多都来自于这里:http

2020-08-20 00:55:34 6904

原创 kafka动态调整副本因子replication.factor及json生成脚本

kafka默认的副本因子default.replication.factor是1,即无额外副本,如果在创建topic时没有指定副本数,则无高可用性。该参数在topic创建时生效,topic创建后无法直接对topic级别的副本数进行修改,但官方提供了在partition级别增加副本数的功能,用于集群添加节点的情况。详情参考官方文档:https://kafka.apache.org/documentation/#basic_ops_increase_replication_factor简单来说就是使用js

2020-08-19 09:54:58 3219

原创 centos利用yumdownloader获取含依赖的rpm安装包

工作经常会遇到需要离线安装软件的情况,特此记录下来,避免每次都得去翻笔记。解决思路为:1.使用docker提供目标包洁净隔离环境(如centos7、centos8)。2.使用yumdownloader -resolve下载完整依赖。3.在目标环境使用yum -y localinstall 一键安装这里写自定义目录标题一 构造运行环境1 使用docker提供目标操作系统2 更新yum镜像仓库二 使用yumdownloader1. 安装yumdownloader2. 下载依赖包3. localinstall

2020-08-18 11:55:04 3250

原创 空间索引 S2 学习指南及Java工具类实践

原先公司使用相对主流的geohash生成空间索引进行区域查询,后来发现geohash对于大区域查询表现极不良好,经调研测试,改用google的s2。因为涉及的资料、工具较多,特此记录,以备后用。文章目录一 学习指南0 介绍说明1 s2 对比 geohash 的优点2 相关资料二 Java实践一 学习指南0 介绍说明班门不弄斧,这里推荐 halfrost 大神的空间搜索系列文章,推荐先浏...

2020-04-29 01:23:21 2838 9

原创 HBCK2修复RIT实践笔记

本文记录了作者使用HBCK2工具对线上HBase发生RIT状态的处理

2020-04-16 01:40:39 1171

原创 最强大的Docker插件 fabric8io/docker-maven-plugin

fabric8io的插件不仅支持docker镜像构造(build),镜像推送(push),还支持对容器操作(如run,stop,remove等),也就是说它可以实现对Docker从构建镜像到运行和推送完整的控制流程,这是它独树一帜的地方. 在众多docker-maven插件中,fabric8io的docker-maven-plugin毫无疑问是最强大的. 现在网上相关的教程大多是使用spoti...

2019-01-18 00:53:26 21771 4

原创 Paxos学习笔记及图解

一 从CAP定理到Paxos算法1 CAP定理CAP定理是相对于一个分布式计算系统而言的,首先需要了解C、A、P的定义:C:Consistency一致性:所有节点持有相同最新数据副本(对外一致)A:Availability可用性:所有节点都能提供数据副本,但不一定最新(对外可用,但不一定好用)P:Partition tolerance分区容错性:分区即指系统在一定的通信时限内不能...

2019-01-10 13:49:08 1556

原创 Java 设计模式 轻读汇总版

一 创建类模式1 单例模式2 简单工厂和工厂模式3 抽象工厂模式4 建造者模式5 原型模式二 结构类模式1 代理模式2 适配器模式3 装饰模式4 门面模式5 桥接模式6 组合模式7 享元模式三 行为类模式1 策略模式2 观察者模式3 责任链模式4 模板方式模式5 状态模式6 迭代器模式7 命令模式8 备忘录模式9 访问者模式10 中介者模式11 解...

2018-12-24 22:26:39 767

原创 从零写分布式RPC框架 系列 2.0 (4)使用BeanPostProcessor实现自定义@RpcReference注解注入

之前服务提供方 RpcServer 我们是使用 ApplicationContextAware 来扫描 @RpcService 注解,添加一个注解即可实现服务暴露。现在,我们用 BeanPostProcessor 来实现服务注入,自动将服务实现类注入到被@RpcReference注解标记的接口上。首先我会先介绍 BeanPostProcessor 的相关信息,以及有所了解的直接跳到第二部分即可。...

2018-12-01 16:42:35 2630

原创 从零写Spring注解版框架系列 IoC篇 (2)实现 @Component、@Autowired、@Qualifier注解

一 结构设计首先创建一个 Maven 工程 winter-core,这里我们我们只需要依赖于 commons-lang 工具包,另外还有测试用的 junit 包。再创建各个类如下:核心注解在 annotation 包下,util 包下是 ClassUtil 工具类 和 StringUtil 工具类,真正的核心组件是 BeanFactory 下的 ClassPathAnnotaionAppli...

2018-11-30 22:28:55 422

原创 从零写Spring注解版框架系列 IoC篇 (1) 框架设计

一 设计思想1 IoC的定义IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。所谓 IoC ,就是由 Spring IoC 容器来负责对象的生命周期和对象之间的关系2 Spring中的 IoC模块结构传统xml模式下的Spring实现IoC由几个模块组成:Resourc...

2018-11-30 18:34:59 301

原创 从零写分布式RPC框架 系列 2.0 (3)RPC-Server和RPC-Client模块改造

2.0版本RPC-Server改动不大,主要变化在于RPC-Client使用了服务地址缓存,并引入监控机制,第一时间获取zk集群中服务地址信息变化并刷新本地缓存。另外,RPC-Client还使用了RpcClientProperties开放对负载均衡策略和序列化策略的选择。系列文章:专栏:从零开始写分布式RPC框架手写通用类型负载均衡路由引擎(含随机、轮询、哈希等及其带权形式)实现 序列化引...

2018-11-23 16:27:45 1302

原创 从零写分布式RPC框架 系列 2.0 (2)RPC-Common模块设计实现

RPC-Common模块相对于1.0版本复杂了很多,最主要的变化在于将 Rpc的Netty处理器从RPC-Server和RPC-Client收回。1.0 版本的设计思路是尽可能减少冗余依赖,所以RPC-Common一般只放通用的功能。现在则是尽可能都放在RPC-Common模块,以方便工程升级复杂化后的统一协调管理。以后功能将集中在一个模块下(名字不一定还是RPC-Common),RPC-Serv...

2018-11-23 14:16:43 520

原创 从零写分布式RPC框架 系列 2.0 (1)架构升级

针对1.0版本的性能问题,本版本做了从服务地址列表缓存等方面做了优化处理,并加入负载均衡引擎、序列化引擎、服务端限流等新功能,并对通信模型进行改造,使其支持新特性、避免粘包半包问题并对后续升级改造留下支持空间。具体可见 项目GitHub地址 。本文将介绍 2.0 版本的逻辑架构和模型设计,部分内容在 从零写分布式RPC框架 系列 1.0 (1)架构设计 已有说明,此处不再赘述。0 版本说明增...

2018-11-23 10:40:54 518

原创 实现 序列化引擎(支持 JDK默认、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列化方式)

本文将实现一个包含JDK默认、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列化方式的序列化引擎。用户可以提供使用 SerializerEngine 方便快捷地切换序列化方法实现。文章目录一 使用效果二 总体结构1 结构图2 组件介绍序列化方法分类序列化方法场景推荐3 相互关系三 结构实现1 ISerializer2 Serial...

2018-11-18 16:37:13 790

原创 手写通用类型负载均衡路由引擎(含随机、轮询、哈希等及其带权形式)

本文记录了通用类型负载均衡路由引擎(工厂)的实现过程和思路。通过路由引擎获取指定枚举类型的负载均衡器,降低了代码耦合,规范了各个负载均衡器的使用,减少出错的可能,并简化了其对应带权负载均衡的实现(提供默认实现),而无需另外编写和集成。文章目录一 使用效果二 总体结构1 结构图2 组件介绍3 相互关系三 结构实现1 RouteStrategy2 WeightGetAble3 WeightUtil4...

2018-11-15 20:34:31 777

原创 从零写分布式RPC框架 系列 1.0 (5)整合测试

本篇将对前面几篇文章作整合处理,使用spring-boot-starter的形式进行发布。

2018-11-08 18:05:26 411

原创 从零写分布式RPC框架 系列 1.0 (4)RPC-Client模块设计实现

RPC-Client模块负责创建 动态代理对象 供 服务消费者 使用,而动态代理对象的方法执行则是通过RPC调用RPC-Server的服务实现。即RPC-Client屏蔽了底层的通信过程,使得服务消费者可以基于接口透明使用服务提供者的服务。一 介绍1 整体结构2 模块介绍整体结构如下:RpcClientRPC-Client模块核心类,也是服务消费者会直接使用到的类。该类负责根据传入...

2018-11-08 14:46:48 495

原创 从零写分布式RPC框架 系列 1.0 (3)RPC-Server模块设计实现

RPC-Server模块负责(1)将@RpcService注解标记的服务和自身信息注册到ZK集群,(2)对外提供RPC服务实现,处理来自RPC-Client的请求。该模块整体的核心类为 RpcServer ,而真正处理请求的核心类是 RpcServerHandler 。另外还有一个 ZKServiceRegistry 负责和 ZK集群交互。一 介绍1 整体结构2 模块介绍注意,因为最终是...

2018-11-07 21:20:32 514

原创 从零写分布式RPC框架 系列 1.0 (2)RPC-Common模块设计实现

RPC-Common模块提供RPC-Server和RPC-Client的通用对象,封装统一规则,使RPC Server和RPC Client 可以基于同一协议通信。主要包含底层通信的Netty所需的编码解码器(RpcEncoder,RpcDecoder),实现自定义协议的传输对象(RpcRequest、RpcResponse)以及编码解码器对Java对象序列化(反序列化)使用的工具 ProtoSe...

2018-11-07 13:04:59 482 1

原创 依赖排除 provided,optional 和 exclusion 最全区分指南

本文将介绍 Maven工程中3种避免依赖冲突的手段 provided,optional 和 exclusion 及其使用场景,并对其进行比较区分,最后以一个应用实例来做归纳总结。本人在网上寻找相关说明时大多语焉不详,模棱两可,有些甚至自己也没弄明白,故根据官方说明和自身试验写下此文,如有纰漏,还望指教。转载需经本人同意,注明出处方可转载。文章目录一 介绍1 scope设为provided2 op...

2018-11-06 14:23:13 3259 1

原创 从零写分布式RPC框架 系列 1.0 (1)架构设计

本系列文章的目的是搭建出一个基于Netty,Zookeeper和SpringBoot的简易分布式RPC框架,并且发布到Maven中央仓库以 spring-boot-starter 的形式对外提供开箱即用的服务。1.0 版本使用 protobuf 来做序列化,最终的使用形式比较接近于 Dubbo 。最终效果可见:https://github.com/linshenkx/rpc-netty-sprin...

2018-11-06 12:40:02 785 1

原创 使用gpg插件发布jar包到Maven中央仓库 完整实践

本文记录了在maven环境下使用gpg插件将 jar 包部署到中央仓库的完整实践过程。相对于网上其他教程使用oss-parent作为父工程的方法,这种方法入侵度低,自由度高,也是官方推荐使用的。实践过程解决了gpg验证以及javadoc注解不规范的问题。文章目录先行知识1. 项目基础配置2. Maven发布相关网址一 注册并提交工单(register sonatype)二 使用gpg生成密钥三 ...

2018-11-03 18:55:51 6416 6

原创 SonarQube学习系列2:Maven+SonarQube 最佳实践

本文记录了Maven工程使用SonarQube完成代码评估,并对其中指定模块进行排除和项目权限管理等有些代码是使用相关插件或工具生成的,这些代码通常存在高冗余或书写不规范现象,不符合代码质量要求,但不影响使用,应排除在代码质量评估之外本文基于上一篇文章的基础配置本文将通过一个gRPC项目作为例子,该项目有 eureka-server,lib,provider,consumer 4个模块,其中...

2018-10-22 12:36:50 6749 2

原创 SonarQube学习系列1:安装和初始化、安全配置

本文将通过docker安装SonarQube,并进行相关初始化配置(如中文配置)和安全性配置(禁止游客访问项目和禁止游客提交代码质量评估等)一 安装安装之前请注意SonarQube的要求,具体请见:https://docs.sonarqube.org/display/SONAR/Requirements个人或小团队使用时硬件要求内存至少在2GB以上并预留1GB供系统使用SonarQube默...

2018-10-21 22:26:35 4456

原创 Docker搭建私有Nexus-maven仓库

本文使用docker镜像实现nexus的一键部署,并且进行相关配置,测试完成maven工程的打包上传文章目录一 利用Docker镜像搭建Nexus仓库1 建立 nexus-data 数据卷2 启动镜像二 完成Nexus设置修改密码添加用户获取仓库url三 配置本地Maven0 maven 配置文件基础知识1 配置 servers2 配置profile3 配置activeProfiles4 配置镜...

2018-10-20 15:59:07 1103

原创 Spring Boot 2+gRPC 学习系列2:搭建Spring Cloud +gRPC集群项目

本项目基于Spring Boot 2.0.5+yidongnan/grpc-spring-boot-starter 2.0.1.RELEASE+SpringCloud Finchley.SR1,通过2个grpc-eureka-server模拟Eureka集群,多个可横向弹性扩容的grpc-spring-cloud-provider负责提供gRPC服务,再用grpc-spring-cloud-co...

2018-10-14 09:26:07 7742 4

原创 Spring Boot 2+gRPC 学习系列1:搭建Spring Boot 2+gRPC本地项目

本项目基于Spring Boot 2.0.5+yidongnan/grpc-spring-boot-starter 2.0.1.RELEASE一 项目结构1 项目结构根项目(com.linshen:grpc-springboot-lin:1.0-SNAPSHOT)下有3个子模块:grpc-lib:包含原始proto文件,并负责将其转换为java代码grpc-server:grpc服务端...

2018-10-13 10:45:17 14009 3

原创 Excel解析easyexcel工具类

本文使用基于阿里的easyexcel编写的工具类对xls后缀的Excel文件(即03版)读取并写成xlsx后缀的Excel文件(即07版),中间转换过程使用String二维数组和对象列表两种形式.easyexcel 项目git地址为: https://github.com/alibaba/easyexcel官方使用指南见: https://github.com/alibaba/easyexce...

2018-10-06 16:19:48 29242 6

原创 使用Minikube在本地部署单节点Kubernetes集群及操作

本文使用最新版本的Minikube完成在本地部署单节点Kubernetes集群,并以nginx集群为例,展示使用kubectl完成对集群的扩展,收缩,滚动升级以及回滚操作等.安装方法参照 最后 ,因为我本来就安装了Docker,所以没有再去安装一个Hypervisor(如VirtualBox和KVM),不过得注意启动Minikube的时候要指定 –vm-driver=none ,另外,由于国内网...

2018-09-20 10:08:47 2476 1

空空如也

空空如也

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

TA关注的人

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