有没有千元以下的山寨平板推荐?
主要用来给老爸看剧刷视频。不想买品牌的,性价比不高 。淘宝上看了一圈,大多在 600~800 这个区间,感觉水有点深,不敢随意出手。
主要用来给老爸看剧刷视频。不想买品牌的,性价比不高 。淘宝上看了一圈,大多在 600~800 这个区间,感觉水有点深,不敢随意出手。
月初刚发过关于家宽封停的帖子,这回轮到我自己了,甚至不是家宽而是专线。
是的,企业专线,正经合同,合同里没有不允许跑跨省/限制上传。
刚收到客户经理消息,我这条线路被省公司上榜 PCDN 专线,省外流量过多,不整改就会通报升级。
目前没有直接给停机,但是如果再跑流量估计就会被停了。
我从来没跑过 PCDN ,而且近 6 个月连 BT/PT 也停了,只挂了一个企鹅物流数据统计的国内站(已备案),网站一个月流量大概 500GB 。
刚刚查了一下过去两个月的日志,我自己是没跑 PCDN ,但是有一段时间有服务被 PCDN 刷流量用来平衡下行,两个月跑走了 55TB 。
不知道该先骂谁好……
也骂骂自己,这么多异常流量也没发现。
本人是程序员,最近闲暇时间在考虑后面的出路。因家里是做跟服装有关的。现有一款专门卖给程序员的 T 恤衣服,整体设计为纯色,只在左胸口处有简单的程序员梗图或者只有程序看的懂的图案。 单价在 50 左右,与其他衣服的差异点和特点。
各位大佬们会去消费吗?
先说下背景,苹果手机,大概几年前买了个外区账号(具体哪个区不记得了),装了 TG 以及火箭等应用,没有退出过,但是期间很少用,唯一加入的就是一个 Alist 群组。TG 绑定了国内手机号。PC 端也是很早装过客户端,但是用的很少。
今天想加入一个 emby 群组的时候提示密码是否还记得,手贱去试了试,结果不记得了,然后就提示要 7 天后重置。茶尝试 PC 端登录也不行。这个时候手机端还是登录状态,还能正常使用。结果在某个群组里面查看消息提示版本不支持,于是考虑更新。
切换到美区 ID 登录,点击更新的时候提示 APP 已经下架,搜索得知,可能是之前下载的那个区把 TG 下架了,当时没多想,直接把手机上的 TG 卸载了。然后重新下载,很顺利就装上了。
启动后直接进入输入手机号的界面,输入之前的手机号,然后又要求输入邮箱和邮箱验证码,通过后要输入手机短信验证码,但是始终收不到。
如果还想使用之前的账号,这种情况还有办法登录吗?
众所周知,RAG 最基本的流程是:
数据处理 → 向量化 → 存储 → 匹配文本 → 结果优化 → 最终的匹配结果
其中,数据预处理与匹配结果优化尤为重要。
在处理一篇长篇幅的文章时,通常需要将整个文本切分为多个小块,每个小块分别向量化后再存储。
如果分块方式不合理,可能会导致无法命中真正相关的内容。因此,合理的分块策略至关重要。
看这里:
👉 Text Splitters Overview - LangChain
Text-structured
Document-structured
即使文本被拆成多个块,匹配结果依旧可能不准确。因为 RAG 本身存在局限性:若问题与任何文本块都不相关,匹配效果自然不佳。
简单来说,就是将文本拆分成不同大小的块再配上关键词索引
小块可以提供更多细节,但也可能带来噪音信息。
多维度匹配后可能得到大量候选文本,因此需要做进一步排序:
import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters"
const getBaseTextRecursiveSplitter = () => {
const bigSplitter = new RecursiveCharacterTextSplitter({
chunkSize: SPLITTER_BIG_CHUNK_SIZE,
chunkOverlap: SPLITTER_BIG_CHUNK_OVERLAP,
separators: SPLITTER_SEPARATORS
});
const miniSplitter = new RecursiveCharacterTextSplitter({
chunkSize: SPLITTER_MINI_CHUNK_SIZE,
chunkOverlap: SPLITTER_MINI_CHUNK_OVERLAP,
separators: SPLITTER_SEPARATORS
});
return {
bigSplitter,
miniSplitter
}
}
// split chunk relate
export const SPLITTER_BIG_CHUNK_SIZE = 1000; // 大块字符数
export const SPLITTER_BIG_CHUNK_OVERLAP = 200; // 大块重叠字符数
export const SPLITTER_MINI_CHUNK_SIZE = 150; // 小块字符数
export const SPLITTER_MINI_CHUNK_OVERLAP = 30; // 小块重叠字符数
export const SPLITTER_SEPARATORS = ["\n\n", "\n", "。", ";", ",", " ", ""]
使用 lunr.js
+ jieba
(处理中文更优)
考虑到运行在客户端的性能问题没使用 rerank 模型,仅通过加权与归一化排序处理并优化了一点打分逻辑
参考代码如下:
let [lshRes, fullIndexResFromDB] = await Promise.all([
searchLshIndex(),
searchFullTextIndex(),
]) as [Search.LshItemRes[], lunr.Index.Result[]]
// 向量匹配排序
const sortedLshRes = lshRes.sort((a, b) => b.similarity - a.similarity)
.slice(0, config.SEARCH_RESULT_HEADER_SLICE_SIZE)
// 全文匹配排序
const sortedFullIndexResFromDB = fullIndexResFromDB.sort((a, b) => b.score - a.score)
.slice(0, config.SEARCH_RESULT_HEADER_SLICE_SIZE)
// 重新打分、归一化
await FullTextIndex.loadJieBa()
const fullIndexFromDBTextChunkRes = await store.getBatch({
storeName: constant.TEXT_CHUNK_STORE_NAME,
keys: sortedFullIndexResFromDB.map((item) => Number(item.ref))
})
FullTextIndex.add([{ field: 'text' }], fullIndexFromDBTextChunkRes.map(item => ({
id: item.id,
text: item.text
})))
let newFullIndexRes = FullTextIndex.search(question)
newFullIndexRes = newFullIndexRes.sort((a, b) => b.score - a.score)
const maxScore = newFullIndexRes[0]?.score || 1
const reRankFullIndexRes = newFullIndexRes.map(item => ({
...item,
score: item.score / maxScore
}))
// 合并向量和关键词匹配结果
let mixIndexSearchedRes: { id: number, score: number }[] = []
const vectorWeight = config.SEARCHED_VECTOR_WEIGHT
const fullTextWeight = config.SEARCHED_FULL_TEXT_WEIGHT
sortedLshRes.forEach(lshItem => {
const match = reRankFullIndexRes.find(item => Number(item.ref) === lshItem.id)
if (match) {
mixIndexSearchedRes.push({
id: lshItem.id,
score: lshItem.similarity * vectorWeight + match.score * fullTextWeight
})
} else {
mixIndexSearchedRes.push({
id: lshItem.id,
score: lshItem.similarity
})
}
})
// 补充关键词匹配的尾部数据
const lshTailStartIndex = Math.floor(vectorWeight * sortedLshRes.length)
const lshTailMaxScore = sortedLshRes.slice(lshTailStartIndex)?.[0]?.similarity || 1
reRankFullIndexRes.forEach(item => {
if (!mixIndexSearchedRes.find(i => i.id === Number(item.ref))) {
mixIndexSearchedRes.push({
id: Number(item.ref),
score: item.score * lshTailMaxScore
})
}
})
mixIndexSearchedRes = mixIndexSearchedRes
.sort((a, b) => b.score - a.score)
.filter(item => item.score > config.SEARCH_SCORE_THRESHOLD)
啥,你觉得这一套不靠谱,看下面!!!
代码已开源(有帮助的话来个 star 吧)
想看实际演示?这里
有啥能证明这个玩意靠谱呢?这里
1.上了阮一峰的周刊 科技爱好者周刊(第 337 期):互联网创业几乎没了
2.上了 DeepSeek 的集成推荐 https://github.com/deepseek-ai/awesome-deepseek-integration
比如什么天气、股票,真是,哎,如何干掉呢
雷军突然宣布,小米自研的手机 SoC 芯片命名为“玄戒 O1”,并计划于 5 月下旬正式发布。这一消息令业界震惊,同时标志着小米在芯片研发领域的重要突破。
回顾小米的造芯历程,雷军表示:“小米十年造芯路,始于 2014 年 9 月。超长周期、超大投入和无限的勇气,终于迎来了这一时刻。”事实上,小米在自研芯片的道路上已经走过了不少波折。
支持命令:
$ echo
$ cd
$ clear
$ cp
: 支持 -r 递归复制
$ pwd
$ cat
$ mkdir
: 支持 -r 递归创建
$ mv
$ touch
$ rm
: 支持 -r 递归删除
$ ls
$ vi
/vim/edit: 编辑文件
$ help
$ download
: 文件下载
$ upload
: 加载文件到终端当前目录
$ ffmpeg
: gif / 视频 处理
注册到申请几小时就通过了也没打电话 过程中就发了一个邮件验证, 点击里面 URL 进去确认然后就验证通过了(美国公司); 创建证书然后就能直接用 jsign 签名了,可集成到 CI/CD 中, 不需要微软那些 SDK 工具; 实测可过 smartscreen
brew install azure-cli
az login
region=eus
account=Trusted-Signing-account
profile=cert-profile-name
app=Download/app-win-x64-1.0.0-test.exe
jsign \
--storetype 'TRUSTEDSIGNING' \
--keystore "${region}.codesigning.azure.net" \
--alias "${account}/${profile}" \
--storepass "$(az account get-access-token \
--resource 'https://codesigning.azure.net' \
--query 'accessToken' -o tsv)" \
"$app"
然后就签好了
嘗試過,
都还是无法正常连结 App Store 、TV 、Music…
請問有什麼解決辦法嗎?
换机到 m4pro ,能耗模式选自动,亮度自动,只开了一些 chrome 和 vscode 远程以及一些其他没啥负载的程序,70 的电只能用 4h ? 和之前用 M1 mbp 时候的体验差太多了。也已经用了一段时间,大致可以排除 spotlight 重建索引的原因?其他用 m4pro 的朋友们耗电是个什么情况呢?