MoreRSS

site icon为自己写代码修改

c4ys = Code for yourself
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

为自己写代码的 RSS 预览

关于AI使用的一点思考:未来规范化越高的项目和团队效率越高

2025-12-22 14:12:31

定位

  • 合作伙伴

优点

  • 知识丰富
  • 不会累
  • 不怕麻烦
  • 干活极快

缺点

  • 对业务不熟悉
  • 容易健忘
  • 偶尔幻觉

总结

  • 通过AI学习和尝试新东西的效率更高
  • 用AI写文档形成规范,规范可以让AI快速回忆、限制幻觉以及形成技能来提高效率
  • 未来规范化越高的项目和团队效率越高

如何应用到开发

  • 问AI能在哪些地方给自己工作和学习带来帮助;
  • 学习一个AI编程工具:推荐codex,claude code,copilot cli,gemini cli, open code,kilo code, cusor,trae等,编写至少一个demo项目或者完成一个工作任务;
  • 第三方API聚合平台使用,如openrouter,packyapi;
  • 了解什么是agent,sub agent,mcp,skills,memory;
  • 学习以及使用开源的编程智能体,如claude code plugin marketplace, gemini cli extension marketplace。

我当前选择的开发工具

  • claude code cli + opus 4.5 速度和智能都是最趁手
  • cc-switch 用来多代理切换
  • superpowers插件 SDD工具。提出需求让AI先做个头脑风暴,然后让他写计划,然后让他执行,我只做个检查和监工即可,我是辅助。
  • mcp 主要使用context7
  • 其他 开发工具集成lsp正在研究

广告

https://www.packyapi.com/register?aff=jrBO

  • 自由使用gemini cli, claude code, codex cli的最新模型;
  • 按需付费;
  • 充值1rmb等于1usd !!!
  • 价格cc最低为官网价格的0.15倍,codex最低为官网价格的0.25倍,记得选低费率的通道;
  • 个人亲身体验最低可以充值50rmb,可以自由使用最新模型1-2个月!!!
  • 使用方法:https://docs.packyapi.com/docs/ccswitch/2-claude.html
  • 免责申明:1,代码里面不要有敏感内容,可能导致泄露。敏感内容可以存到环境变量。2,一次充值50RMB跑路也不用太心痛。

RocketMQ 5.3快速上手

2025-09-17 16:04:27

本地部署 RocketMQ

参考:https://rocketmq.apache.org/zh/docs/quickStart/01quickstart

修改conf/broker.conf

# 增加acl配置
#aclEnable=true
namesrvAddr 
authenticationEnabled = true
authenticationProvider = org.apache.rocketmq.auth.authentication.provider.DefaultAuthenticationProvider
initAuthenticationUser = {"username":"rocketmq","password":"12345678"}
innerClientAuthenticationCredentials = {"accessKey":"rocketmq","secretKey":"12345678"}
authenticationMetadataProvider = org.apache.rocketmq.auth.authentication.provider.LocalAuthenticationMetadataProvider
authorizationEnabled = true
authorizationProvider = org.apache.rocketmq.auth.authorization.provider.DefaultAuthorizationProvider
authorizationMetadataProvider = org.apache.rocketmq.auth.authorization.provider.LocalAuthorizationMetadataProvider

修改conf/tools.yml

accessKey: rocketmq
secretKey: 12345678

启动服务

# 启动NameServer
nohup sh bin/mqnamesrv >> logs/mqnamesrv.log &
tail -f logs/mqnamesrv.log
# 启动Broker+Proxy
nohup sh bin/mqbroker -c conf/broker.conf --enable-proxy >> logs/mqbroker.log &
tail -f logs/mqbroker.log
# 停止NameServer
bin/mqshutdown namesrv
# 停止Broker+Proxy
bin/mqshutdown broker

使用命令行工具

# 查看cluster状态
bin/mqadmin clusterList
# 查看broker状态
 bin/mqadmin brokerStatus -c DefaultCluster
# 创建topic
bin/mqadmin updatetopic -c DefaultCluster -t TestTopic
bin/mqadmin updatetopic -c DefaultCluster -t %RETRY%TestTopic
# 主题列表
bin/mqadmin topicList -c DefaultCluster
# 创建组
bin/mqadmin updateSubGroup -c DefaultCluster -g TestGroup
# 创建用户
bin/mqadmin createUser -c DefaultCluster -u TestUser -p TestPassWd
# 查看用户
bin/mqadmin listUser -c DefaultCluster
# 创建acl
bin/mqadmin createAcl -c DefaultCluster -s User:TestUser -r Topic:TestTopic -a ALL -d ALLOW
# 查看当前acl
bin/mqadmin listAcl -c DefaultCluster

clash verge 自定义规则配置,解决打开钉钉和QQ图片慢问题

2025-08-02 10:44:35

一次点击“订阅”=》“全局扩展脚本”,修改脚本示例如下

// 自定义规则
const prependRule = [
  "DOMAIN-SUFFIX,taobao.com,DIRECT",
  "DOMAIN-SUFFIX,alibaba.com,DIRECT",
  "DOMAIN-SUFFIX,aliyuncs.com,DIRECT",
  "DOMAIN-SUFFIX,dingtalk.com,DIRECT",
  "DOMAIN-SUFFIX,alicdn.com,DIRECT",
  "DOMAIN-SUFFIX,wechat.com,DIRECT",
  "DOMAIN-SUFFIX,taobao.com,DIRECT",
  "DOMAIN-SUFFIX,wx.qlogo.cn,DIRECT",
  "DOMAIN-SUFFIX,qpic.cn,DIRECT",
];

// 把旧规则合并到自定义规则后面
function main(config, profileName) {
  let oldrules = config["rules"];
  config["rules"] = prependRule.concat(oldrules);
  return config;
}

用GPT写个代码来模拟仓位管理

2025-06-11 14:40:22

运行结果如下

胜率设置:35.0%
胜利赔率:2.5倍
最大下注比例:50.0%
下注降低比例:70.0%
下注增长比例:1.3倍
最小下注金额:1

马丁格尔策略:
平均最终资金: 0.00
最高最终资金: 0.00
最低最终资金: 0.00
爆仓次数: 100 次,爆仓率: 100.00%

反马丁格尔策略:
平均最终资金: 3137.26
最高最终资金: 3904.19
最低最终资金: 2352.77
爆仓次数: 0 次,爆仓率: 0.00%

代码如下

"""
"""
马丁格尔策略 vs 反马丁格尔策略模拟程序

需求说明:
1. 模拟两种博彩策略的效果对比
   - 马丁格尔策略:输了就加倍下注,赢了降低下注(而不是重置为初始赌注)
   - 反马丁格尔策略:赢了就加倍下注,输了降低下注(而不是重置为初始赌注)

2. 核心参数:
   - 初始资金:100
   - 初始赌注:1
   - 每线程游戏次数:10000次
   - 线程数量:100个
   - 胜率:可调整(默认40%)
   - 赔率:可调整(默认1.5倍)
   - 最大下注比例:资金的20%
   - 降低下注比例:示例降低50%
   - 加倍下注比例:示例2倍
   - 最小下注金额:0.1

3. 风险控制:
   - 单次下注不超过当前资金的指定比例
   - 资金为0时停止游戏并记录为爆仓

4. 统计输出:
   - 平均最终资金
   - 最高/最低最终资金
   - 爆仓次数和爆仓率
   - 支持多线程并发模拟
"""

import threading
import random

# 参数配置
INITIAL_CAPITAL = 100     # 初始资金
INITIAL_BET = 1           # 初始赌注
COIN_FLIP_TIMES = 10000   # 每线程抛硬币次数
THREAD_COUNT = 100        # 线程数量
WIN_PROB = 0.35            # 胜率,示例40%
WIN_ODDS = 2.5            # 胜利赔率,示例1.5倍
MAX_BET_RATIO = 0.5       # 最大下注比例,示例20%
BET_REDUCTION_RATIO = 0.7 # 降低下注比例,示例降低30%
BET_INCREASE_RATIO = 1.3  # 加倍下注比例,示例1.3倍
MIN_BET = 1             # 最小下注金额

# 结果存储
results_martingale = []
results_anti_martingale = []

martingale_busts = 0
anti_martingale_busts = 0

lock = threading.Lock()   # 多线程锁,保护共享变量
def simulate(strategy_type):
    global martingale_busts, anti_martingale_busts

    capital = INITIAL_CAPITAL
    bet = INITIAL_BET

    for _ in range(COIN_FLIP_TIMES):
        # 检查是否有足够资金继续游戏
        if capital < MIN_BET:
            with lock:
                if strategy_type == 'martingale':
                    martingale_busts += 1
                else:
                    anti_martingale_busts += 1
            capital = 0
            break

        # 应用最大下注比例限制
        max_bet = capital * MAX_BET_RATIO
        bet = min(bet, max_bet)

        # 确保下注不超过当前资金
        actual_bet = min(bet, capital)

        win = random.random() < WIN_PROB

        if win:
            capital += actual_bet * WIN_ODDS
            if strategy_type == 'anti_martingale':
                bet *= BET_INCREASE_RATIO
            else:  # martingale策略
                bet = max(bet * BET_REDUCTION_RATIO, MIN_BET)
        else:
            capital -= actual_bet
            if strategy_type == 'martingale':
                bet *= BET_INCREASE_RATIO
            else:  # anti_martingale策略
                bet = max(bet * BET_REDUCTION_RATIO, MIN_BET)

    # 无论是否爆仓,都记录最终资金
    with lock:
        if strategy_type == 'martingale':
            results_martingale.append(capital)
        else:
            results_anti_martingale.append(capital)

threads = []

for _ in range(THREAD_COUNT):
    t1 = threading.Thread(target=simulate, args=('martingale',))
    t2 = threading.Thread(target=simulate, args=('anti_martingale',))
    threads.extend([t1, t2])

for t in threads:
    t.start()

for t in threads:
    t.join()

print(f"胜率设置:{WIN_PROB*100:.1f}%")
print(f"胜利赔率:{WIN_ODDS}倍")
print(f"最大下注比例:{MAX_BET_RATIO*100:.1f}%")
print(f"下注降低比例:{BET_REDUCTION_RATIO*100:.1f}%")
print(f"下注增长比例:{BET_INCREASE_RATIO}倍")
print(f"最小下注金额:{MIN_BET}\n")

print("马丁格尔策略:")
if results_martingale:
    print(f"平均最终资金: {sum(results_martingale) / THREAD_COUNT:.2f}")
    print(f"最高最终资金: {max(results_martingale):.2f}")
    print(f"最低最终资金: {min(results_martingale):.2f}")
else:
    print("无数据")
print(f"爆仓次数: {martingale_busts} 次,爆仓率: {martingale_busts / THREAD_COUNT * 100:.2f}%")

print("\n反马丁格尔策略:")
if results_anti_martingale:
    print(f"平均最终资金: {sum(results_anti_martingale) / THREAD_COUNT:.2f}")
    print(f"最高最终资金: {max(results_anti_martingale):.2f}")
    print(f"最低最终资金: {min(results_anti_martingale):.2f}")
else:
    print("无数据")
print(f"爆仓次数: {anti_martingale_busts} 次,爆仓率: {anti_martingale_busts / THREAD_COUNT * 100:.2f}%")

postgresql慢查询中止

2025-04-01 10:51:58

查询慢查询

SELECT
    pid,
    usename,
    application_name,
    client_addr,
    query_start,
    state,
    query
FROM
    pg_stat_activity
WHERE
    state = 'active' -- 只查询正在执行的查询
    AND query_start < NOW() - INTERVAL '5 minutes' -- 筛选出执行时间超过5分钟的查询
ORDER BY
    query_start;

中止慢查询

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE
    state = 'active'
    AND query_start < NOW() - INTERVAL '5 minutes'; 

rye使用镜像下载python和pypi包

2025-01-09 18:48:54

rye使用镜像下载python

echo 'export PYTHON_BUILD_MIRROR_URL=https://registry.npmmirror.com/-/binary/python' >> ~/.bashrc
source ~/.bashrc

让rye默认使用阿里云镜像下载包

rye可以自定义源,自定义源有限官方源,参考:https://rye.astral.sh/guide/sources,所以:

code ~/.rye/config.toml

[[sources]]
name = "aliyun"
url = "https://mirrors.aliyun.com/pypi/simple"