![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开源工具与中间件
文章平均质量分 85
梦境迷离
点关注不迷路,您的点赞就是我的动力。
展开
-
Kamon 采样原理
采样方式通过kamon.trace.sampler可以配置一个采样器,这可以决定哪些 span 应该被发送到 span 报告器。采样器类型有几个可能的值,分别是:always:报告所有 trace,会忽略配置的其他规则。ConstantSampler类never:不报告任何 trace,会忽略配置的其他规则。ConstantSampler类random:随机采样器,由于概率设置中定义的概率决定。RandomSampler类,默认概率为 1%adaptive:自适应采样器,为每个操作保留动态采样器原创 2022-05-17 17:43:46 · 342 阅读 · 0 评论 -
Scala CSV转case class对象,支持自定义解析
背景转为对象:方便地读取CSV文件到Scala类型,便于使用已知数据。构造数据:随机Scala对象,写入CSV文件,便于创建或Mock新数据。要求&目标不引入任何第三方库,能够定制CSV某列的格式,可以解析复杂的CSV结构,而不仅限于普通的简单格式,最终能配置解析的一些规则。能使用类型安全的方式编程。下面这个使用shapeless实现,比较简洁,能处理一般的转换,主要问题是我们需要处理CSV中的JSON,而并不需要shapeless的其他功能,所以,嗯。。为了一个方法引入了一个库,不可取。原创 2022-05-03 01:03:41 · 588 阅读 · 0 评论 -
Scala zio-streams 与 akka-stream 的集成 & ZStream错误处理
zio-streams 与 akka-stream 的集成总的来说,我在 zim 中集成 akka-stream,其实只是为了集成 akka-http,众所周知,akka-http 是构建在 akka-stream 上的,而 akka-stream 依赖 akka-actor。对于任意 zio 应用,无外乎就是返回ZIO或ZStream类型的数据。zim 中为了省事,所有接口都使用了ZStream,这点其实很不好,因为ZStream比ZIO操作更多,更复杂。所以 zim 代码中到处都是runHead,原创 2022-03-31 15:21:53 · 363 阅读 · 0 评论 -
Scala ZIO 的流处理介绍和应用
zio 流处理介绍摘自官网流式库的主要目标是引入一个高级 API,该 API 抽象了使用数据源和目标进行读写操作的机制。在 zio 中 需要添zio-streams为依赖才能使用流。流式库帮助我们专注于业务逻辑,并将我们与低级实现细节分开。有很多人们可能不认识的流式库的示例,这是一个常见问题,尤其是对于初学者而言。初学者可能会说“我不需要流式库。我为什么要使用它?”。这是因为他们看不到流。一旦我们使用流式库,我们就会开始到处看到流,但在那之前我们不知道它们在哪里。在深入了解 ZIO Stream原创 2022-03-29 14:41:35 · 793 阅读 · 0 评论 -
Scala ZIO 的 Module Pattern 二 应用
即 Module Pattern 2.0基本介绍使用 Module Pattern 2.0 编写服务比上一章介绍的 1.0 模式容易得多。2.0 中删除了某种程度的间接性,与编写服务时的面向对象方法更为相似。Module Pattern 2.0 与面向对象的服务定义方式有更多的相似之处。我们使用类来实现服务,我们使用构造函数来定义服务依赖;归根结底,我们将类构造函数提升到ZLayer。Service Definition 服务定义 —— 在这个版本中定义服务与之前的版本相比略有变化。我们将获取.原创 2022-03-29 14:35:12 · 173 阅读 · 0 评论 -
Scala ZIO 的 Module Pattern 应用
ZIO 的 Module PatternModule Pattern 1.0让我们通过编写一个Logging服务开始学习这种模式:Bundling 捆绑 —— 定义一个为模块提供名称的对象,这可以(不一定)是一个包对象。我们创建一个logging对象,所有的定义和实现都将包含在这个对象中。Service Definition 服务定义 —— 然后我们创建Logging伴生对象。在伴生对象中,我们使用名为Service的trait来定义服务定义。特质是我们定义服务的方式。服务可以是与具有单一责任的一原创 2022-01-12 18:33:47 · 394 阅读 · 0 评论 -
Scala中如何基于ZIO构建可组合的程序(命令行)
设计一个命令行程序大多数命令行程序都是无状态的,这是理所当然的,因为它们可以很容易地集成到脚本中并通过shell管道链接。然而,对于本文,我们需要一个稍微复杂一点的程序。让我们写一个SQL命令行程序。用户将通过文本命令与之交互,根据不同的SQL命令创建不同的程序命令以输出不同的字符,同时我们还希望可以循环输入。对于这些问题中的每一个,我们将创建一个独立的模块,该模块依赖于其他模块,如下所示:基本程序ZIO 应用程序的基本构建块是ZIO[R, E, A]类型,它描述了有效的计算,其中:R 是运原创 2021-12-21 17:11:03 · 898 阅读 · 0 评论 -
Scala中使用SOFA jraft 实现rpc的优化 二
背景继第一版实现Processable宏之后,各方面已经满足需求,也正常使用,并引入进bitlap,使得我们能以方法的形式管理所有Processor对象,而不需要创建太多的类文件。但是细心的人会发现,为了实现这个小小的功能,我们在scala-macro-tools中引入了重量级包"com.alipay.sofa" % "jraft-core" % "1.3.9"。同时为了测试,我们还引入了protobuf-java。特别是sofa这个包,场景有限,当我们不需要使用Processable宏,却被迫引入了原创 2021-12-07 16:17:53 · 277 阅读 · 0 评论 -
Scala中使用SOFA jraft 实现rpc的优化
背景项目基于sofa jraft构建,顺便使用了其自带的rpc服务,协议使用protobuf,使用jraft创建一个rpc服务RaftRpcServerFactory.createRaftRpcServer(serverId.getEndpoint),并新增的rpc接口,这通常需要定义自己的Processor并继承com.alipay.sofa.jraft.rpc.RpcRequestProcessor,然后创建一个实例,使用rpcServer.registerProcessor将实例暴露的rpc注册到原创 2021-12-05 21:04:30 · 2858 阅读 · 0 评论 -
Scala 集成Mybatis和SpringBoot改进
Scala 集成Mybatis和SpringBoot改进Mybatis构造对象缺少默认的无参构造?通常Scala是这么定义实体类或领域对象的case class A(a: Int, b: String)但是这个类在Mybatis中是无效的,因为Mybatis通过反射无参构造来生成对象。1.一种方法是为样例类定义副构造函数case class A(a: Int, b: String) { def this()= { this(0, null) }}以上如果原创 2021-11-26 11:44:38 · 1201 阅读 · 0 评论 -
代码生成之Scala宏编程 类Lombok工具的实现
Scala 中的宏Scala 中的宏要复杂的多,但它对生成代码的方式,提供了更大的灵活性。Scala 宏仍然是用 Scala 写的,一定程序上保证了开发体验的一致。Scala 宏总是要返回一个AST,这需要你对 Scala AST 有一定的了解。但 Quasiquotes 可以帮你轻松生成 AST。import scala.reflect.macros.blackboximport scala.language.experimental.macrosobject Hello { d原创 2021-08-16 11:52:35 · 826 阅读 · 0 评论 -
Scala宏编程实战之宏的注解拓展 - 实现toString,builder,constructor,equalsAndHashCode等
项目地址Intellij IDEA 插件@toString@toString注解用于为Scala类生成toString方法。说明verbose 指定是否开启详细编译日志。可选,默认false。includeFieldNames 指定是否在toString中包含字段的名称。可选,默认true。includeInternalFields 指定是否包含类内部定义的字段。它们不是在主构造函数中。可选,默认true。callSuper 指定是否包含super的toStri原创 2021-07-20 16:48:31 · 311 阅读 · 0 评论 -
JDBC原理&浅析HIVE-JDBC
目录{:toc}什么是JDBC?JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。Java8 JDBC API使用Java程序访问数据库时,Java代码并不是直接通过TCP连接去访问数据库,而是通过JDBC接口来访问,而JDBC接口则通过JDBC驱动来实现真正对数据库的访问。例如,我们在Java代码中如果要访问MySQL,那么必须编写代码操作JDBC接口。注意到JDBC接口是Java标准库自带的,所以可以直接编译。而具体的JDBC驱动是.原创 2021-07-02 16:14:15 · 3130 阅读 · 0 评论 -
graphql-java-codegen - 基于模式驱动构建GraphQL应用程序 Kotlin
基于模式驱动构建GraphQL应用程序 release 4.0.0 发布支持生成Kotlin代码(预览阶段,目前仅支持JVM平台上的Kotlin),默认生成Java代码。一个经典示例如下:schema { query: Query}type Query { hero(episode: Episode) : Character human(id : String) : Human humans: [Human] droid(id: ID!) : Droid原创 2020-12-14 18:46:40 · 454 阅读 · 0 评论 -
Consul和Raft介绍
在本文中,我们展示了具有多个实例的高性能应用程序中的领导选举基础。我们演示了Consul的会话管理和KV存储功能如何帮助获得锁并选择领导者。Consul和Raft介绍Consul解决的问题多种多样,但是每个单独的功能已由许多不同的系统解决。尽管没有一个单一的系统可以提供Consul的所有功能,但是还有其他选项可以解决其中的一些问题。我们将Consul与其他一些选项进行比较。在大多数情况下,Consul不会与任何其他系统互斥。quorum在本文被翻译成了法定人数,即达到共识所需要的最少要求Con原创 2020-11-02 13:48:39 · 1187 阅读 · 1 评论 -
错误:ActionEnter cannot be resolved to a type
ActionEnter cannot be resolved to a type org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet jsp threw exceptionorg.apache.jasper.JasperException: Unable to compil原创 2017-09-01 13:39:39 · 8058 阅读 · 4 评论 -
layui富文本编辑器注意点
点击打开一个修改信息的页面,同时显示已有的信息,由于layui 富文本编辑器设置初始化必须在build之前,所有每次点击修改的时候只有第一次点击会build,猜测可能是缓存问题,造成无法获取到数据,原因还是因为数据必须在build之前被设置进去。禁用该页面的浏览器缓存即可。 火狐不需要。ie chrome 都需要禁用。下面是 thymeleaf 中 js 初始化必须是在构建富原创 2017-11-06 10:19:15 · 10077 阅读 · 0 评论 -
Freemarker2.3.19简单用法总结
模板 + 数据模型 = 输出 ${user}注:用最新的数据内容替换模板中${…}的部分,每级之间用点来分隔。数据模型可以被看做是树状结构的。标量存储单一的值,这种类型的值可以是字符串,数字,日期/时间或者是布尔值。哈希表是存储变量和与其相关且有唯一标识名称变量的容器。序列是存储有序变量的容器。存储的变量可以通过数字索引来检索,索引通常从零${…}:FreeMarker 将会输出真实的值来替换花...原创 2018-04-17 12:22:37 · 961 阅读 · 0 评论 -
工作中常用的Git命令~
## 常见的Git操作### 1、仓库从无到有本地生成ssh秘钥,如果不嫌麻烦当然可以不设置,使用HTTPS即可我的配置是Eclipse是HTTPS,使用GitHub,用来编写笔记,但是HTTPS需要记住密码,不然每次都需要填IDEA使用SSH,用来工作提交代码,使用Gitlab。ssh-keygen -t rsa -C "注册邮箱"id_rsa.pub文件添加到Git的...原创 2018-07-28 18:04:30 · 348 阅读 · 0 评论 -
最详细的 在Windows上 使用docker 搭建 consul 集群 (附单机版)
1.镜像环境准备Windows电脑使用1)下载ConEmu (x64) 工具并选择git-bash命令行2)下载Windows 版本的docker3)Docker Desktop setting中修改镜像源为国内的 (安装时选择安装linux容器)4)使用ConEmu,下载所需容器 搜索 consul docker search consul ...原创 2019-06-02 16:59:26 · 3605 阅读 · 0 评论 -
Web服务器的工作原理
Web服务器的工作原理本文由 ImportNew - 进林 翻译自 howtodoinjava。欢迎加入翻译小组。转载请见文末要求。Web服务器工作原理概述很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了什么动作?Java Servlet API(例如ServletContext,Se转载 2017-08-16 18:52:58 · 225 阅读 · 0 评论