V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  corningsun  ›  全部回复第 3 页 / 共 32 页
回复总数  638
1  2  3  4  5  6  7  8  9  10 ... 32  
感谢分享
133 天前
回复了 XCG0000 创建的主题 分享创造 送龙年微信红包封面
感谢
最后半天,下午火车
“生怕兄弟苦,更怕兄弟开路虎”

千万不要实话实说,他先说了,就说比你少点,入不敷出,存不下钱,月月光。
@irisfor 可以看,但是千万别改。 一行注释都不要动!
133 天前
回复了 dododada 创建的主题 程序员 第一次写总结, 2023 总结
感谢分享。

我今年也遇到过干咳的情况,第一家医院,抽血 CT 都做了,查不出来原因,随便开点药吃了一个月没效果。

果断换医院,医生推荐上呼吸机检查,发现是 “气道高敏”,属于过敏反应,吃了孟鲁司特钠片,只要几十块钱,就好了。

去医院一定要注意,不是每个医生都有良心,第二次去复查,换了医生,就被开中药,贵死了还没效果。

在医生开药的时候一定要提前说不要喝中药。
133 天前
回复了 chanChristin 创建的主题 装修 预计装修房子,求指点
多参考邻居家的装修,看到比较好的,就问下装修公司。
智能家居有个问题要注意,现在很多只支持 2.5G Wi-Fi ,选购路由器时需要注意下参数。
最好是能混合 2.5G 和 5G 的。
这个文章总结的挺好,OP 可以参考下。

https://post.smzdm.com/p/a90zg47o/

如果是我的话,会先上一个能科学的路由器,看看实际信号情况。如果哪个房间网络差,再上有线 mesh
@cloudzhou 小霸王学习机就有,哈哈哈
134 天前
回复了 corningsun 创建的主题 汽车 我自己在使用的一些汽车好物分享
@cssk 从来没用过,哈哈哈
首先推测 checkExistRule(List<String[]> keywordRule, String text) 的实现有问题,OP 的实现只会用到第一条规则。
其次 String 的 contains 匹配是数组下标查找,也是一层循环,效率不高。
建议是先分词,得到 哈希数组,然后再比较,示例代码如下:


public static boolean checkExistRuleV2(List<Set<String>> keywordRule, Set<String> textSet) {
return keywordRule.stream().anyMatch(textSet::containsAll);
}


Benchmark 压测结果如下:循环 10000 次的时间,从 13 ms 降低到 0.5 ms

Benchmark Mode Cnt Score Error Units
Print1024Test.checkExistRule avgt 6 13.877 ± 0.148 ms/op
Print1024Test.checkExistRuleV2 avgt 6 0.528 ± 0.035 ms/op

单元测试代码

package org.corning.v2ex.year2024;

import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.junit.jupiter.api.Test;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
import org.openjdk.jmh.runner.options.TimeValue;

import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

public class Print1024Test {

public static List<String[]> keywordRule = Lists.newArrayList(
new String[]{"鼎赛龙", "男士春夏", "D-FINING", "深灰色", "锥形牛仔裤"},
new String[]{"DIESEL", "男士春夏", "DFINING", "深灰色", "锥形牛仔裤"}
);
public static String text = "#DIESEL 大牌好友# @宋雨琦_G-I-DLE 演绎#DIESEL2023 秋冬系列# 牛仔坠饰 D-VINA 包袋。渐变丹宁渲染不羁格调,另类包型注解无畏想象";
public static List<Set<String>> keywordRuleSet = keywordRule.stream()
.map(Sets::newHashSet)
.collect(Collectors.toList());

// 这里可能需要更好的分词手法,trim / 去掉逗号等
public static Set<String> textSet = Arrays.stream(text.split(" ")).collect(Collectors.toSet());

@Test
public void runBenchmarks() throws Exception {
Options options = new OptionsBuilder()
.include(this.getClass().getName() + ".*")
.mode(Mode.AverageTime)
.warmupTime(TimeValue.seconds(1))
.warmupIterations(6)
.threads(1)
.measurementIterations(6)
.forks(1)
.shouldFailOnError(true)
.shouldDoGC(true)
.build();
new Runner(options).run();
}


@Benchmark
@Test
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void checkExistRule() {
for (int i = 0; i < 10000; i++) {
Print1024.checkExistRule(keywordRule, text);
}
}

@Benchmark
@Test
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void checkExistRuleV2() {
for (int i = 0; i < 10000; i++) {
Print1024.checkExistRuleV2(keywordRuleSet, textSet);
}
}

}
136 天前
回复了 toBeRich 创建的主题 汽车 决赛圈,买 s60 还是领克 08
有娃后就满载 6 人了? 这两个车还够用吗
@ramirezyolis808 正确答案
137 天前
回复了 unt 创建的主题 职场话题 今天才知道年终奖一次性计税的惊天 bug
新版 “皇帝的新装”

大家都明白,但仍然将错就错。
137 天前
回复了 testy 创建的主题 生活 你们结婚后会上交工资卡吗?
@LING97 #58 祝早点领证
137 天前
回复了 testy 创建的主题 生活 你们结婚后会上交工资卡吗?
@lift 哈哈哈,牛,高级版 “过家家”
137 天前
回复了 aaronlau 创建的主题 问与答 有没有已经在春运路上的朋友?
@phpdev 高德啊
1  2  3  4  5  6  7  8  9  10 ... 32  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4901 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 09:37 · PVG 17:37 · LAX 02:37 · JFK 05:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.