skill 的本质是流程沉淀和经验复用。
以前我用 superpowers 惊呆了,现在觉得繁琐了。
因为当前大模型已经可以逐步 skill 内置了。
所以 skill 也越来不重要了。
大模型现在会根据你的问题,分析你的意图,然后给出最佳思考和解决路线了,
以前 Brainstorming 是经验总结,让火车跑在轨道上,
现在这类是限制,大模型已经是自动驾驶汽车了,很多时候不需要给他轨道了。
skill 的本质是流程沉淀和经验复用。
以前我用 superpowers 惊呆了,现在觉得繁琐了。
因为当前大模型已经可以逐步 skill 内置了。
所以 skill 也越来不重要了。
大模型现在会根据你的问题,分析你的意图,然后给出最佳思考和解决路线了,
以前 Brainstorming 是经验总结,让火车跑在轨道上,
现在这类是限制,大模型已经是自动驾驶汽车了,很多时候不需要给他轨道了。
codex+gpt 5.4context7参考:https://rocketmq.apache.org/zh/docs/quickStart/01quickstart
# 增加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
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
一次点击“订阅”=》“全局扩展脚本”,修改脚本示例如下
// 自定义规则
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;
}
胜率设置: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}%")
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';
echo 'export PYTHON_BUILD_MIRROR_URL=https://registry.npmmirror.com/-/binary/python' >> ~/.bashrc
source ~/.bashrc
rye可以自定义源,自定义源有限官方源,参考:https://rye.astral.sh/guide/sources,所以:
code ~/.rye/config.toml
[[sources]]
name = "aliyun"
url = "https://mirrors.aliyun.com/pypi/simple"
首先,你得理解为什么浏览器要限制跨域:
所以,浏览器限制了跨域请求。
问:那么,我们开发时,想要访问线上接口怎么办?
答:我们可以用 vite 之类 nodejs 的代理功能,通过代理访问线上接口,代理一词的意思是我们访问本地的接口,代理服务器通过本地程序(非浏览器)转发到线上接口。
问:如果我们确实有线上项目的跨域请求的需求怎么办?
答:我们可以在服务器设置 Access-Control-Allow-Origin ,将我们自己人加入白名单。
最近反思自己为什么老亏?以下为反思内容:
为什么大家在下跌的时候会焦虑,而有些人反而开心?根本可能在于自己的投资是否建立在安全边际之内。
如何通过资金管理建立安全边际?
举一个例子,假设投资以上证指数为参照,上证的筑底点位为 2400-3600 点,我们可以在 3000 点建立 70%,如果下降到 2400 时逐步升级到 90%,如果下降到 2400 以下的时候观望等待复苏,始终保持 10%的现金。如果逐步上升到 3600 点时降低到 50%仓位。股市到 3600 点以上时,我们逐步抛出剩余 50%。这样我们至少有 50%的仓位是能获取 600 点的收益的。
安全边际还有很多,比如现金流,股息,国资,垄断,品牌,创始人等等。
结论:我们大部分的投资都应该构建在安全边际之内。
群友问:
“如果你买的是个股,大部分人大盘 3000 到 2400 时亏的不止 600 点,大盘 2400 回到 3000 赚不到 600 点,所以“至少有 50%的仓位是能获取 600 点的收益”这个概率得降低。”
答:
所以需要结合其他几条,选择有安全边际的位置和投资标的。思路差不多。
比如我通过技术分析,发现化工行业可能已经达到筑底区域,那么我接下来继续重点选择化工行业的股票,为了提高安全边际,那么我选择股息率大于 3%(不涨就继续持有吃股息),近三年 roe 都大于 8%(保证有钱能吃股息),最好是国资(老板卖公司概率降低),现金流充沛(能持续发展,发股息),行业趋向回暖(比如煤炭石油降价受益标的),然后首先投入 50%的资金,等待发展下跌持续加仓,这时候越跌你是越开心的,因为可以吃到更多的低位筹码了。最后,能不能赚钱,就靠老天爷赏口饭吃了。。。
以上只是思考的思路,未经验证。请勿作为投资依据。
小时候最有意思的事情莫过于跟着堂哥抓鱼捉兔,堂哥是我们那一片丘陵中这个领域数一数二的好手,每次跟他出去都能有收获,哪怕我这完全啥都不懂的小白,也能跟着涨点见识,吃点荤。
农忙过后的秋天是狩猎野兔的好时机,我和堂哥会翻过一座由一座丘陵的山,寻找兔子踪迹。
在山谷的池塘边的山路上,听堂哥分析野兔的脚印应该是几天内还是几天前留下的;
在一片被啃过的菜地边,听堂哥分析野兔的家在哪里,通过哪里来到这里,是不是经常来;
在一堆沙土上,看着一堆圆圆的粪便,我们猜测这个兔子是今年的头窝,还是一条可能有四五斤的老兔子,年轻的往往往大说,年长的只是笑笑,可能还会偶尔用特殊的音调回一句“还不止”。。。
而这些分析完后,剩下的就简单了,我们就会在野兔的必经之路上,装上手工打造的套子或则买来的夹子,装好后做一些掩盖,然后奔赴下一个可能的山谷。。。
========故事结束============
“但凡经过,必留下痕迹”
这是我当前总结的量化的基础原理,个人没有强大的计算资源,无法像气象台预测天气一样预测经济,也没有精力通过高频交易加以对冲,我们只能通过那些小兔子留下来的痕迹,抓些倒霉的小兔子。
我们可以选择在气象台警告台风即将降临时不出海,
我们可以选择在禁渔期过后立马跑出去捞第一网,
我们可以选择只在我们熟习的海域撒网;
我们可以选择寻找一片还没有人到达的海域。。。
“市场和狩猎不同的是,这里我们即是猎人,更可能是小野兔子。”
"我们也不能守株待兔,历史往往不是简单的重复。"