工作总结(持续更新版)
本文最后更新于5 天前,其中的信息可能已经过时,如有错误请发送邮件到3368129372@qq.com

开发
大模型开发用到kotlin,类型转换很麻烦,这里做枚举
JsonValue.from(String) -> JsonField
JsonField.asKnown()可解包

排查端口问题

lsof -i:8080查找指定端口相关文件(包括TCP,UDP连接)
kill -9 PID 强制杀死某个进程

工程tips

一个agent请求可能涉及到多次模型chat,例如functioncalling的处理就在一次while循环中,直到模型不再调用为止。因此在做日志时,上游可以将traceId存在上下文中,调airouter时使用同一个traceId,不同requestId,这样就能通过traceId将链路串联起来!


日志记录时,可以将上下文放在同一个context中,然后将file名按照traceId存储在blobstore中。


文件上传业内通用解决流程:
1.前端调upload-token,获取到上传所需要的地址和token。
2.前端根据地址和token上传文件。
3.前端调upload-finish把地址给予的resoureceId(blobstore地址)给到后端,后端做相应的存储处理。


guava耗时工具类,好用!

Stopwatch stopwatch = Stopwatch.createStarted();
doSomething();
long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS);

云厂商支持fileId肯定存在一定优化的,不然都存url不就好了。


*****再研究下百度云盘file做哈希是怎么做的,涉及到权限共享的问题可以研究下。


类不允许多重继承,但是接口可以


负载均衡可以总结为“记分”与“排序”


常见的按照权重做区间负载均衡

/**
     * 根据权重选择供应商
     */
    public static ProviderWeightInfo selectProviderByWeight(
            List<ProviderWeightInfo> providerWeightInfos
    ) {
        if (CollectionUtils.isEmpty(providerWeightInfos)) {
            return null;
        }

        // 计算总权重
        double totalWeight = providerWeightInfos.stream()
                .mapToDouble(ProviderWeightInfo::getWeightScore)
                .sum();

        if (totalWeight <= 0) {
            // 如果总权重为0,随机选择一个
            int index = ThreadLocalRandom.current().nextInt(providerWeightInfos.size());
            return providerWeightInfos.get(index);
        }

        // 生成随机数
        double random = ThreadLocalRandom.current().nextDouble() * totalWeight;
        double currentWeight = 0;

        // 按权重选择
        for (ProviderWeightInfo info : providerWeightInfos) {
            currentWeight += info.getWeightScore();
            if (random <= currentWeight) {
                return info;
            }
        }

        // 兜底返回最后一个
        return providerWeightInfos.get(providerWeightInfos.size() - 1);
    }

GenericKeyedObjectPool可以创建资源池,从中借与还资源,避免频繁创建销毁


hashLong & 0x7FFFFFFFFFFFFFFFL 这个与操作能够做到去符号化,抹掉首位的1.


grafana + loki能够迅速构建一个日志查看平台,推荐!


code review

可能为空的请注解@Nullable,这样会有编译提示,以防空指针。
数据的加解密都请放在repository层,以免外层忘记加密。
rpc输出结果不应为枚举,不方便新增枚举。
po层不应定义枚举,容易反序列化失败

感谢您的收看 祝你天天开心~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇