是否可以关闭特定代码块的声纳(www.sonarsource.org)测量值,哪一个不想测量?
一个例子是Findbugs输出的"保留堆栈跟踪"警告.离开服务器时,我可能只想将消息传递回客户端,不包括我刚捕获的实际异常,如果客户端不知道该异常(因为客户端没有JAR,那么例如包含例外).
鉴于一个特点MyTrait:
trait MyTrait {
def doSomething = println("boo")
}
Run Code Online (Sandbox Code Playgroud)
它可以与extendsor 混合成一个类with:
class MyClass extends MyTrait
Run Code Online (Sandbox Code Playgroud)
它也可以在实例化一个新实例时混合:
var o = new MyOtherClass with MyTrait
o.doSomething
Run Code Online (Sandbox Code Playgroud)
但是......可以将特征(或任何其他如果产生影响的特征)添加到现有实例中吗?
我在Java中使用JPA加载对象,我想使用traits为它们添加一些功能.有可能吗?
我希望能够按如下方式混合特征:
var o = DBHelper.loadMyEntityFromDB(primaryKey);
o = o with MyTrait //adding trait here, rather than during construction
o.doSomething
Run Code Online (Sandbox Code Playgroud) 在eclipse 3.6之前,在调试透视图中,您可以通过突出显示变量并按ctrl + shift + i来"检查"变量.然后你可以调整弹出窗口的大小,eclipse记得你下次检查时的大小.
在eclipse 3.6中,您可以检查变量,但无论您是否调整窗口大小,下次检查时,窗口都会恢复为默认大小.这很烦人,因为我喜欢那个窗户,好看又大.
有没有办法设置eclipse来记住这个窗口的大小,还是一个bug?
我玩弄的JVM(甲骨文1.7 64位)在Linux机器上(AMD 6核心,16 GB RAM)看到线程的应用程序的数量如何影响系统性能.我希望测量上下文切换会降低性能.
我创建了一个创建线程执行池的小应用程序:
Executors.newFixedThreadPool(numThreads)
Run Code Online (Sandbox Code Playgroud)
我numThreads每次运行程序时都会调整,以查看它的效果.
然后我将numThread工作(实例java.util.concurrent.Callable)提交到池中.每一个增加一个AtomicInteger,做一些工作(创建一个随机整数数组并将其洗牌),然后睡一会儿.我们的想法是模拟Web服务调用.最后,作业重新提交给池,以便我总是有numThreads工作.
我正在测量吞吐量,就像每分钟处理的作业数一样.
有几千个线程,我每分钟可以处理多达400,000个工作.超过8000个线程,结果开始变化很大,这表明上下文切换正成为一个问题.但我可以继续将线程数增加到30,000,并且仍然可以获得更高的吞吐量(每分钟420,000到570,000个作业).
现在的问题是:我获得了java.lang.OutOfMemoryError: Unable to create new native thread超过31,000个工作岗位.我试过设置-Xmx6000M没有帮助.我试过玩,-Xss但这也无济于事.
我读过这ulimit可能很有用,但增加ulimit -u 64000并没有改变任何东西.
有关信息:
[root@apollo ant]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127557
max locked memory (kbytes, -l) 64
max memory size …Run Code Online (Sandbox Code Playgroud) 我不知道它是否是UML 1.4或ArgoUML的限制,但在序列图中,我想显示一个对象在自己的类中调用一个方法,即调用一个子过程.
如果我从对象拖到自己,没有任何反应:-(
谢谢,蚂蚁
我已经在可以从 Internet 访问的服务器上安装了 minikube。
我创建了一个可用的 kubernetes 服务:
>kubectl get service myservice
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myservice 10.0.0.246 <nodes> 80:31988/TCP 14h
Run Code Online (Sandbox Code Playgroud)
minikube的IP地址为:
>minikube ip
192.168.42.135
Run Code Online (Sandbox Code Playgroud)
我希望 URL http://myservice.myhost.com(即端口 80)映射到 minikube 中的服务。
我在主机上运行了 nginx(与 kubernetes 完全无关)。我可以设置一个虚拟主机,将 URL 映射到192.168.42.135:31988(节点端口)并且它工作正常。
我想使用入口。我已经添加并启用了入口。但我不确定:
a) yaml 文件应该包含什么
b) 来自浏览器的端口 80 上的传入流量如何重定向到入口和 minikube。
c) 我还需要使用 nginx 作为反向代理吗?
d) 如果是这样,运行 ingress-nginx 的地址是什么(以便我可以将流量映射到它)?
我正在做一个小爱好项目,我正在尝试做一些不同的事情.
我正在构建的系统是ERP系统,包括产品目录,销售数据库,销售日志(类似于数据库,但用于会计目的),打印机,支付合作伙伴和购物篮(购物车).
虽然打印机是硬件,但我需要编写更高级别的代码来打印收据.
我不需要编程的唯一部分是支付合作伙伴.
我有两个问题.
1)向用户出售一堆产品的用例是一个名为"直到销售商品"的用例,或者将被分成几个,例如"添加产品到购物车"和"完全销售"(其中会编写销售日志并打印收据).
2)虽然我正在编写目录,销售数据库,销售日志,购物篮等,但我可以将它们建模为我的用例中的演员吗?或者是销售人员和付款合作伙伴的唯一参与者?
我有这个运行良好的 Java 8 代码:
//Java 8
@Test public void testPredicates(){
Predicate<Integer> p1 = (i) -> true;
Predicate<Integer> p2 = (i) -> true;
Predicate<Integer> p3 = p1.and(p2);
List<Integer> is = new ArrayList<>();
is.add(1);
is.add(2);
assertTrue(is.stream().allMatch(p1.and(p2)));
}
Run Code Online (Sandbox Code Playgroud)
我在 Groovy (2.2) 中最接近它的是:
//Groovy 2.2
@Test
void test(){
Predicate<Integer> p1 = { i -> true}
Predicate<Integer> p2 = {i -> true}
Predicate<Integer> p3 = p2.and(p1)
List<Integer> is = new ArrayList<>()
is.add(1)
is.add(2)
assert(is.stream().allMatch(p1.and(p2)))
}
Run Code Online (Sandbox Code Playgroud)
Groovy 代码在调用该and方法的行上失败并显示以下内容:
java.lang.ClassCastException: java.lang.Boolean
cannot be cast to …Run Code Online (Sandbox Code Playgroud) 如果没有恒定的输入记录流,则看起来好像带有宽限期和抑制的会话窗口的 Kafka Stream 无法输出最终事件。
上下文:我们正在使用变更数据捕获 (CDC) 来监控对旧数据库的更改。当用户使用 UI 进行更改时,数据库事务将更改 1..n 个表。每个 SQL 语句都会生成一条 Kafka 记录。这些需要聚合以创建一个“触发记录”,用于启动一个昂贵的过程。该过程应在提交遗留数据库中事务的一秒钟内启动。只有少数用户使用旧应用程序,因此事务之间可能会有大量时间。
我们有一个 Kafka Stream 应用程序,它使用会话窗口和 400 毫秒的不活动间隔来聚合共享相同密钥(事务 ID)的传入记录,并输出触发记录。
我们有一个可行的解决方案,但只要其他事务正在运行,触发器记录只会写入输出主题,以便生成稳定的传入记录流。我们需要关闭窗口并写入触发记录,即使没有进一步的输入记录。
工作代码在这里:https : //github.com/maxant/kafka-data-consistency/blob/714a44689fd48aa28b05b855638ac7ed50dd5ee9/partners/src/main/java/ch/maxant/kdc/partners/ThroughputTest5Stream.java#L6
以下是该代码的摘要:
stream.groupByKey()
.windowedBy(SessionWindows.with(Duration.ofMillis(400)).grace(Duration.ofMillis(0)))
.aggregate(...)
.suppress(Suppressed.untilWindowCloses(Suppressed.BufferConfig.unbounded()))
.toStream((k,v) -> k.key())
.to("throughput-test-aggregated");
Run Code Online (Sandbox Code Playgroud)
最初我没有压制,也没有宽限期。仅使用默认配置,我总是收到包含所有聚合记录的窗口的最终事件,但在 400 毫秒窗口之后最多需要 6 秒,这对我们来说太长了,无法等待。
为了减少延迟并加快速度,我将 CACHE_MAX_BYTES_BUFFERING_CONFIG 设置为 1,但这会在每次聚合后导致输出记录,而不仅仅是单个输出记录。
我引入了抑制(并随之引入了 0 毫秒的宽限期),以确保仅创建一个输出记录。
现在的问题是我只收到一个输出记录,如果新的输入记录在窗口关闭后到达(不管它们的键)。
该测试创建了 10 个输入记录,所有输入记录都具有相同的键,相隔 10 毫秒,都在 100 毫秒内。然后它休息 3 秒钟,让我在一组 10 个记录后将其关闭。我希望收到一个输出记录,但没有到达,除非我让测试运行,以创建第二组输入记录。这个问题是可重现的。
我已阅读以下文章,但找不到任何描述我所看到的内容的内容,即最终记录仅在处理附加记录(无论键值如何)后才会发送到输出主题。
我必须更改什么才能将最终记录发送到我的输出主题,即使没有进一步处理记录?
(在 Linux 上将 Kafka 2.4.1 与客户端和服务器一起使用)
这里笔者使得后续的语句:
而不是为每个连接产生一个新的OS线程(并为其分配附带的内存),每个连接都创建一个PROCESS,它不需要内存块.
Node是否真的为每个请求生成一个进程?!这不是我理解的方式......我认为node是一个单线程,单个进程?当然,你可以在许多过程中实现负载平衡,但这不是他所声称的.
谢谢,
蚂蚁
如果我定义了以下需要Long的函数,并且我定义了以下隐式函数,那么当我将Date传递给第一个函数并且一切按预期工作时,将使用隐式函数:
def millisToDays(in: Long): Int = (in / (1000L * 3600L * 24L)).toInt
implicit def dateToLong(d: Date) = d.getTime
println(millisToDays(new Date))
Run Code Online (Sandbox Code Playgroud)
但是对于下面的第二个例子,我在第三行得到编译器错误:"推断类型参数[Int]不符合方法mySum的类型参数bounds [t <:java.lang.Number]"
def mySum[T <: Number](as: T*): Double = as.foldLeft(0d)(_ + _.doubleValue)
implicit def intToInteger(n: Int): Integer = new Integer(n.toInt)
var r = mySum(2, 3)
Run Code Online (Sandbox Code Playgroud)
我做错了什么?为什么不使用intToInteger隐式函数?
我猜测问题是隐式函数不返回"T <:Number",而是返回一个Integer,因此编译器无法猜测隐式函数实际上是否有用.
无论如何,我可以给编译器一个提示,它应该使用隐式函数?
谢谢!蚂蚁
我有一个包含客户记录的 Kafka 主题,称为“客户创建”。每个客户都是主题中的一个新记录。有4个分区。
我有两个基于 docker image 的 ksql-server 实例正在运行confluentinc/cp-ksql-server:5.3.0。两者都使用相同的KSQL 服务 ID。
我创建了一个表:
CREATE TABLE t_customer (id VARCHAR,
firstname VARCHAR,
lastname VARCHAR)
WITH (KAFKA_TOPIC = 'customer-created',
VALUE_FORMAT='JSON',
KEY = 'id');
Run Code Online (Sandbox Code Playgroud)
我是 KSQL 的新手,但我的理解是 KSQL 构建在 Kafka Streams 之上,并且每个 ksql-server 实例大致相当于一个 Kafka 流应用程序实例。我注意到的第一件事是,一旦我启动 ksql-server 的新实例,它就已经知道在第一个实例上创建的表/流,即使它是开发人员模式下的交互式实例。其次,我可以根据两个实例的 ID 选择同一个客户,但我希望只能从其中一个实例中选择相同的客户,因为我假设 KSQL 表等同于 KTable,即它应该只包含本地数据,即来自 ksql-server 实例正在处理的分区。
SET 'auto.offset.reset'='earliest';
select * from t_customer where id = '7e1a141b-b8a6-4f4a-b368-45da2a9e92a1';
Run Code Online (Sandbox Code Playgroud)
无论我将 ksql-cli 附加到哪个 ksql-server 实例,我都会得到结果。在使用普通的 Kafka Streams 时,我可以让它工作的唯一方法是使用全局 KTable。我从两个实例中得到结果的事实让我有点惊讶,因为根据文档,“只有 …