common
介绍工具类java相关工具类及操作技巧
偏锋书生
day day up
展开
-
自定义classload与热加载
场景 Classload是java语言较为底层的技术,对于自定义框架,中间件开发等都有广泛的应用场景,可以利用它设置出较为灵活的应用。像duckula就是使用它完成插件机制,为扩展duckula提供了可能。还有插件平台,也是使用它来实现ES业务插件的热加载等功能。 双亲委派模型 类加载这个概念应该算是Java语言的一种创新,目的是为了将类的加载过程与虚拟机解耦,达到”通过类的全限定名来获取...原创 2019-11-04 15:37:04 · 439 阅读 · 0 评论 -
es插件平台
ES插件应用到ES很多地方,如:报警、分词、安全。。。。 但这些插件都是在技术层面的,业务层面肯定是缺失的,需要我们来补充 1、跟据某个业务字段或是业务规则来打分,打分高的排前面 2、跟据数据库字段来生成索引的mapping 3、异构数据的同步索引,跟据规则处理异构数据 4、跟据某些业务规则来触发告警 5、更多。。。。。。。。。 因此,我们很想自已来开发ES插件来满足业务需求,但ES插件在开发上确实不方便,如:权限严格、不支持热加载需要重启、对初学者不友好、版本升级(特别是大版本)后不向下兼容 等。所以我原创 2019-11-03 12:26:59 · 787 阅读 · 0 评论 -
业务与框架分离利器
现在互联网框架层出不穷,知识也是一个更新的过程,从传统行业的SSH,dubbo,grpc,springcloud,满足不同场景的业务需求,应该说框架技术没有好坏之分。但由于历史原因,我们经常性的有系统改造需求,如果是功能性的重新划分,连数据模型都推倒重来,那要考虑的问题倒少了,但如果修修补补,甚至只是切换一下底下的实现方式,把http改为rpc的,把原来的那种单体的改为微服务体系架构,如果之前没有把业务与框架做分离,那改起来也是一个较头疼的任务,单一个接口的输入输出就够喝一壶的。如果我们实现一个与业务无关的原创 2019-11-03 12:14:40 · 384 阅读 · 0 评论 -
httpclient的扩展
在java世界里,后端通过http协议来调用服务是非常常见的情形,犹其是现在微服务盛行,java一般是通过httpclient工具来做http调用的,但由于其功能较为强大,使用上倍感复杂,今天写的代码,过几天都快看不懂的事经常发生,common-http模块就是试图降低httpclient的复杂性,希望通过简单的的api,传几个我们一看就明白的参数来解决我们的问题。 common-http模块也对httpclient做了一些扩展,如大文件的多线程下载、异步调用等。这些个场景都是在开发中经常碰到的。原创 2019-10-30 16:26:59 · 363 阅读 · 0 评论 -
jdbc连接池
连接一个数据库很容易,直接引入依赖包,组装好jdbc地址,加载驱动类,如果想用连接池又得引入连接池的依赖包,一连串的动作简单而乏味,一般的做法是自己存一个工具类,要的时候复制,改改相应的链接了事。common-jdbc依赖包也就是把这些乏味的事做到一个api中,到要的时候只要修改配置文件的配置项,直接调用api就可以了。原创 2019-10-30 16:16:10 · 261 阅读 · 0 评论 -
jedis的扩展
jedis是redis的一款java客户端,对redis连接进行了池化,把短连接改为长连接,减小了网络连接的消耗,在项目中使用也比较多。但jedis也存在一些使用不方便的地方. - 需要手动关闭jedis连接,如果代码中存在异常跳过了jedis连接关闭的代码,那就存在连接泄漏的问题 - redis的独立模式 与 哨兵模式、集群模式使用时使用的池都不样,一般来说我们开发、测试环境使用redis独立模式而生产环境使用哨兵模式或集群模式。这时我们的代码就不能做到统一。 - jedis提供的api都是较为原原创 2019-10-23 20:57:21 · 812 阅读 · 0 评论 -
通过代码自由操作kubernetes
在kubernetes成为容器服务编排方案“标准”的今天,谈自动化运维就不能离开k8s,现在操作k8s有多种方式,集群外面k8s client通过kubeconfig配置文件连接k8s集群,通过k8s 暴露的apiserver服务操作k8s。通过暴露helm的服务service/tiller-deploy来操作k8s 等。k8s client和helm Client对于手工部署确实方便,但当应用程序量大的时候,通过手工来部署显然不够。通过apiserver的restfull形式的api来部署我们的应用确实可原创 2019-09-17 21:51:31 · 593 阅读 · 11 评论 -
让你的代码借助spring起飞
经常性的存在这种场景,我们写好了一些工具类,这些工具类即可以在非spring项目里使用,也可以在spring项目里使用 ,为了做的更灵活些,这些工具类需要各种配置项,一般来说,我们会把它们放到内存的某个变量 中,这样在所有的java项目里就可以直接使用,这在非spring项目中感觉没什么,但在spring项目中,spring有自己的一套属性管理方案,且可以通过 @value等许多的annotation工具直接在项目代码中注入,在使用上更加的便捷和自然。在内存在的配置项是不被spring所管理的,也就是说我们原创 2019-09-15 22:05:03 · 247 阅读 · 0 评论 -
内存配置中心
一提到配置中心,大家想得最多的是configserver,阿波罗,consule等微服务系统较为典型的配置中心,集中存放项目的配置信息,起到权限管理、发布审核、操作审计、灰度发布等重要作用。但这些都是依赖第三方中间件来达到配置集中管理的目的,怎么选都是较重的一种方案,但有些场景需要配置中心但又不想有太重的依赖,只想把这些配置存放到内存就够用了。如: - 工具jar包,特别是连接一些中间件的配置项。原创 2019-09-15 21:54:34 · 375 阅读 · 0 评论 -
flink用的binlog监听source
Flink可以用来做到批量处理与实时流式分析,在实时流式分析这块,常规的做法是业务主动发kafka消息,然后flink监听kafka来完成的。但这种方式却要借助中间件来完成监听发送kafka任务,现在要介绍的方案就是直连mysql,使binlog数据直接到Flink。原创 2019-09-15 21:00:34 · 3393 阅读 · 10 评论 -
轻量级的binlog监听方案
互联网体系架构具有可控性差、 数据量大、 架构复杂等特点,错综复杂的各业务模块需要解耦,各异构数据需要同步,双活/多活的容灾方案需要高实时性 等,在各种场合都需要一套可靠的数据实时推送方案。mysql已成为互联网项目存储的主力,围绕着它的各外围模块急需实时地获取它的数据,binlog监听是解决此实时同步问题的不二之选。原创 2019-09-15 20:51:56 · 7116 阅读 · 4 评论