备忘录

2025 年 7 月4 条备忘录

更新于
公开 · 所有人可见

查询对话的点赞

select COALESCE(like_rating.id, dislike_rating.id) AS conversation_id, COALESCE(like_rating, 0) as like_rating, COALESCE(dislike_rating, 0) as dislike_rating
    from (

          (select c.id, count(*) as like_rating
            from conversations c
                     left join
                 message_feedbacks mf
                 on c.id = mf.conversation_id
            where c.app_id = '58663dd9-6354-4968-a0e3-c12017dafda8'
            and rating = 'like'
            group by c.id, rating) as like_rating
    full outer join
    (select c.id, count(*) as dislike_rating
    from conversations c
             left join
         message_feedbacks mf
         on c.id = mf.conversation_id
    where c.app_id = '58663dd9-6354-4968-a0e3-c12017dafda8'
    and rating = 'dislike'
    group by c.id, rating) as dislike_rating
    on like_rating.id = dislike_rating.id)
更新于
公开 · 所有人可见

推荐 rust 练手的小项目

当然!Rust 是个非常适合写高性能、类型安全、并发友好的项目的语言,以下是一些适合练手的 Rust 小项目推荐,按难度和方向分类:


🚀 初学者项目(熟悉语法 & 基本结构)

1. 命令行工具

  • To-Do 管理器:输入 todo add "写报告"、todo list、todo done 1。
  • 词频统计工具:统计一个文本文件中每个词出现的频率。
  • 随机密码生成器:支持指定长度、复杂度(特殊字符/数字/大写等)。

2. 文件处理工具

  • CSV 转 JSON:读入 CSV 文件,输出 JSON。
  • 小型日志分析工具:分析 Nginx/Apache 日志,统计 IP 访问量。

3. 小游戏

  • 猜数字游戏:随机生成一个 1~100 的数,提示“大了/小了”。
  • 井字棋(Tic Tac Toe):命令行实现。

🧠 中级项目(用上 crates、多线程、异步等)

1. 简易 HTTP 服务

  • 用 Axum / [Actix-web] 写个 RESTful 接口,比如博客 API 或留言板。

2. 代理工具

  • 一个简单的 HTTP 或 SOCKS5 代理(可以加日志、转发、鉴权)。
  • 类似 proxychains 的小工具,学习网络 IO 和 TCP。

3. 数据库封装

  • 使用 SQLite(配合 rusqlite 或 sqlx)写一个简单的个人账本或笔记应用。

4. 并发爬虫

  • 使用 reqwest + tokio + scraper 实现并发抓取网页标题/关键词。
  • 可以拓展为监控网页变化的工具。

⚙️ 高级项目(系统级编程、异步/并发深入)

1. 任务队列 / Job Worker

  • 简单的任务队列系统,支持 Redis 做消息中转,用 tokio 实现 worker 并发处理。

2. 文件同步工具

  • 类似 rsync,比较目录差异,拷贝变化的文件。
  • 熟悉文件 IO、哈希、线程池。

3. 简易向量数据库

  • 写一个嵌入式的向量搜索服务(用 HNSW 或暴力搜索),配合 Web 接口提供相似搜索。

🧪 项目生成器模板推荐

你可以用 cargo generate 来初始化一些模板项目:

cargo install cargo-generate
cargo generate --git https://github.com/cargo-generate/cargo-generate.git

🧰 一些常用 Crate 推荐

  • 网络请求:reqwest
  • Web 框架:axum, actix-web
  • 数据库:sqlx, rusqlite
  • 命令行:clap, structopt
  • 异步:tokio, async-std
  • 序列化:serde, serde_json
  • 测试:proptest, quickcheck

如果你能告诉我你感兴趣的方向,比如 Web、系统工具、命令行、网络编程、数据库,我可以给你定制一个具体项目💡。要不要试试?

公开 · 所有人可见

Why SERVER_WORKER_AMOUNT is 1 when you use SERVER_WORKER_CLASS=gevent?

https://github.com/langgenius/dify/issues/16248

When SERVER_WORKER_CLASS is set to gevent, SERVER_WORKER_AMOUNT should be set to 1 because gevent is designed to handle many connections with a single worker using asynchronous I/O. This approach leverages gevent's ability to manage multiple connections efficiently without the need for multiple workers, which is why the configuration suggests using a single worker for gevent