求助, iPhone 升级到 ios18.7.7 后反复弹窗“运营商设置更新”,怎么办?
RT 。日版 iphone15pro 买来时 ios 系统是 17.0.3 ,用了 2 年多了一直没有升级。前天升级到 ios18.7.7 后就一直弹窗“运营商设置更新”,我点了“更新”和“以后”按钮后,还是会弹窗,很烦人。现在的运营商配置文件是中国联通 64.0 ,还有更新的运营商配置文件吗?怎么解决这个反复弹窗问题呢?感谢
xiaohack博客专注前沿科技动态与实用技术干货分享,涵盖 AI 代理、大模型应用、编程工具、文档解析、SEO 实战、自动化部署等内容,提供开源项目教程、科技资讯日报、工具使用指南,助力开发者、AI 爱好者获取前沿技术与实战经验。
RT 。日版 iphone15pro 买来时 ios 系统是 17.0.3 ,用了 2 年多了一直没有升级。前天升级到 ios18.7.7 后就一直弹窗“运营商设置更新”,我点了“更新”和“以后”按钮后,还是会弹窗,很烦人。现在的运营商配置文件是中国联通 64.0 ,还有更新的运营商配置文件吗?怎么解决这个反复弹窗问题呢?感谢

一款简易的私人 DNS 服务器
DockerHub: https://hub.docker.com/r/billghifun/gogdns
GayHub: https://billghifun.github.io/gogdns-docs/
程序具体工作细节可以看文档站中的介绍。
文档站有很长时间没更新了,计划近日更新。
朋友们遇到问题或 bug 可在此贴回复,如有意见或建议同样也欢迎多多回复。
由于此程序是一位不愿透露姓名的菜的抠脚的人进行的古法编程,所以程序一定会有各种稀奇古怪的问题,还请见谅。
大家可以先用于测试,待设置调整趋于稳定后再进行部署。
注:暂时还未开源,担心有问题的朋友还请慎重下载使用。
周二参加了个面试,上来就让填写基本信息的表;
家庭住址、父母信息等等;
没有入职填写这些做什么?
linux 下有个程序每天在 NFS 共享目录(生成一个当天日期的文件夹)下缓存 100 万左右的文件,大小差不多 3-5T ,这个程序处理完成后可以删除,如何在 Linux 下快速删除它们呢。
按照网上的这个同步空目录的方法,差不多耗时 7 个小时。
rsync --delete-before -d -H -O --progress /tmp/empty/ 2026-04-02/
这个是我之前一直想找时间静下心来写的,也足足拖了小半个月了,没有当时那么澎湃的感觉了,但是目前来说,还是能依稀留下一些概念,核心概念,这很重要。
第一,我之前一直不知道为什么写日记,也不知道该写什么,觉得是记流水账,别人告诉我,写下有意义,这些都非常抽象,包括父母也不知道该怎么指导我。直到这两天,我突然意识到,日记,就是其实是换一个视角来观察自己。
所以日记到底在记什么?
日记就是,用一个第三方的视角,一个上帝视角,来观察自己的内心,自己的行为,自己的欲望,自己的一切:我今天想早起但是没有早起成功,我今天计划做完预计的工作但最后没有达成,我今天精力比昨天更好了我做对了什么,我今天跟唱大张伟的歌突然很激动我流眼泪了…… 这些琐事都能写,讲讲今天的目标,今天的行为,今天的进度,今天开心的事,心塞的事,兴奋的事情,难忘的事情。
当然,心塞、兴奋、难忘等等的事情不是每天都有,但是其他的所有一切事情,自己的感受,自己的想法看法都能记。所以也才在这刻,才意识到这些是什么。
这些是记录者的人生碎片,用来复盘的人生碎片。
我曾经记流水账,记着记着就记不下去了,大概是这样,不过也是有缩减的:
第一天:今天做的很好继续加油,我今天把什么什么完成了,咋滴咋滴;
第二天:今天没有达成目标,有 xxx 没有完成,明天努力完成;
第三天:今天状态很不对,很多事情都没达成,我要继续改进;
第四天:今天还是没有改变好,没有弄好,我要继续调整
(没有第五天了,我停止写日记了,因为越写越丧了……)
但是这次,我为什么会觉得不一样?因为我意识到,之前还是在应付地记录流水账,也不知道为什么而记,只是为了别人说的那句“应该写日记”,而实际上,我到现在真的才意识到,把前面所说的那些写进来的意义,就是方便自己审视自己,以及应该写什么能够复盘。
一个人如果只靠感觉但是没有反馈,就要自己去找反馈,根据自己的行为、心理等去分析,可以更好地知道自己做的对不对,而不是用生物本能去应对,那和低等动物没什么区别——害怕就逃跑,兴奋就张狂。外部反馈很重要,为什么学生需要考试,不单单是在筛选人才,更重要的是,让学生有直观反馈知道自己掌握的如何。
第二,复盘这个词还是听着太装了,自己一个人到底能复盘什么?我今天是不是对谁的态度太苛刻;我今天的心情不好,仔细剖析为什么会心情不好,继续深挖;我今天的状态很对,我应该保持什么;一直输入输出,一直观察自己,就像大模型训练,不断提炼出最佳的心智模型。输入输出这里是指,一方面观察自己待人接物三观等,在面对不同的问题挑战困境顺境机会时,自己怎么做怎么应对,自己的心态内心活动是恐惧害怕兴奋还是什么。对自己进行评价和优化,做的是否好,是否有改进的地方,下次再次面对应该怎么做,这样,就已经开始避开了命运之轮,不是靠天生的直觉去应对,而是不断用更优的解决方案去应对,不断强化成长。
所以在这个过程中,人生就能拥有越来越多的心智模型(或者叫,人生工具?),面对各种问题也会越来越得心应手,因为可能面对的这个新的问题,你之前已经在无数次复盘中,准备好了无数的心智模型,拼装起来,已经是可以解决这个新问题了。把心智模型训练成个人习惯不断优化,这个听着就很美好,这个持续迭代的过程不知道能让写日记复盘的人变得多强大。
最后,可能是三段论的习惯?写到这里其实我已经不知道还有什么,但是觉得还是应该凑一段。反正就这些,后面有再补充吧。
不容易呀不容易,今天的第一件好事
没有绝对的 “更好”,只有更适合场景的选择。总体而言:ECC 更高效、更安全、更省资源,是未来趋势;RSA 更兼容、更成熟、生态更完善,适合传统环境。 安全强度等效对比(NIST): 结论:同等安全下,ECC 密钥长度远短于 RSA。 ↓ SSL证书:https://www.joyssl.com/certificate/select/free.html?nid=7 ↑ 表格 RSA ECC 选 ECC 如果你: 选 RSA 如果你:一、核心原理与安全强度
二、性能与资源消耗(关键差异)
维度 RSA ECC 优势方 密钥长度 长(2048/3072/4096 位) 短(256/384/521 位) ECC(省存储 / 带宽) 签名速度 慢(约 300 次 / 秒) 快(约 3000 次 / 秒) ECC(快 10 倍) 验签速度 快 较慢 RSA CPU / 内存占用 高 低(约省 80%) ECC TLS 握手 慢、耗资源 快(吞吐量 + 115%) ECC 电池功耗 高 低(约省 50%) ECC 三、兼容性与生态
四、抗量子威胁
五、适用场景(怎么选)
六、一句话总结
3 月底开始的试用 pro ,前天提示 pro trail 全部暂停,今天一看变成 free 账号了,wtf ?
最近想买个电纸书,有个十年前的 499Kindle 闲置很久了,体验不咋地,最近买了 ipadmini 又想试试电纸书了。
需求有点乱:
求懂的老哥们给个意见。
时间:04:55:47
数额:+1
类型:签到
描述:检定结果(签到勤勉检定大失败,获得 1 金币。投掷点数:0,勤勉属性修正:6,难度:11,总点数:6。)
物极必反,否极泰来!看来好运马上就要来啦
淘宝 API(拍立淘) 是基于图像识别的相似商品检索利器,通过上传图片即可在淘宝 / 天猫库中精准匹配同款、相似商品,广泛用于比价、选品、竞品监控等场景。 功能:上传图片(URL/Base64)→ 返回相似商品列表 二、接入流程 核心接口涵盖接入与配额: 平台提供多款接口,分为竞品内容监测,用户画像与细分群体分析,舆情监控与危机预警,市场趋势与热点预测,内容创作辅助,商业情报收集等场景,无需自主申请接口(如添加 Taobaoapi2014),直接调用封装 API,一键获取已封装好的数据API采集,适合批量查询、中小卖家使用。 权限管理 → 申请 taobao.item.search.img 格式:JPG / PNG 三、关键参数 image:图片 Base64 或 URL(必填) 四、典型应用场景 同款比价:上传商品图 → 找全网最低价 总结
一、核心接口(拍立淘)
taobao.item.search.img (或 taobao.image.search)
技术:ResNet/MobileNet 深度学习提取特征,毫秒级匹配
返回字段:商品 ID、标题、价格、主图、店铺、相似度 (0-100)
填写使用场景(如:商品比价、智能推荐)
大小:≤ 2MB
分辨率:≥ 800×800
主体:商品占比 ≥ 60%
背景:纯色、无水印、无遮挡
cat:类目 ID(可选,缩小范围)
sort:排序(price_asc/price_desc/sales_desc)
page:分页(默认 1,最多 50 条)
商品溯源:识别图片商品 → 查源头 / 同款
智能推荐:图文 / 视频带货 → 匹配相似商品
竞品监控:监测同款价格、销量、上新
淘宝图片搜索 API 是电商视觉检索的工业级方案,低成本、高精准、易集成。适合快速搭建同款比价、商品溯源、智能推荐等系统。
ID: 12320 美刀余额 * 1 。共计 50 份
2026 年 4 月 17 日 15:00
SN(S + k × 7) % N( k = 0, 1, 2, ...)步长取质数 7 ,使中奖楼层分布更均匀,结果完全可验证。
假设沪指收盘 3500 点,楼层总数 300:
| 序号 | 计算 | 楼层 |
|---|---|---|
| 1 | 3500 % 300 |
200 楼 ✅ |
| 2 | 3507 % 300 |
207 楼 ✅ |
| 3 | 3514 % 300 |
214 楼 ✅ |
| ... | ... | ... |
若某楼层用户已中奖,则顺延到下一位未中奖用户,直到选满 50 人。
今天账号被封的理由改了:短时间发送大量重复请求。
我一直在用别的大模型。最近用 glm5.1 ,只有一个用途:zread cli,给我本地的代码生成文档。
看来是我错了,我不该用。发帖提个醒
突然想起来,想讨论讨论,不针对哪一个商家(下面的白象只是举个栗子)
像这种商标,当然还有很多(“手打”挂面,今麦郎“1 袋半”,“山里来的土”鸡蛋,“千禾 0”添加,等等)
https://i.imgur.com/fyj9hUY.jpeg
商标文字游戏,商家的投机取巧是肯定的,但作为审核的机制,是商标局的不作为,是商标法的缺漏
有些操作很慢,Agent 不能干等着。例如长时间编译/构建: 这段代码引入了后台任务系统,解决了 Agent 在执行长时间任务时的阻塞问题 关键洞察:Agent 可以在命令执行时继续工作,而不是被阻塞。 核心思想:从同步阻塞的任务执行升级为异步非阻塞的并发处理,让Agent能够同时处理多个耗时任务,实现"并行计算"能力,大幅提升效率和响应性。 从 ContextCompactSystem 到 BackgroundTasksSystem 的升级:make, mvn compile, gradle build 或 大数据处理:hadoop, spark-submit 等的一些工作Java实现代码
public class BackgroundTasksSystem {
// --- 配置 ---
private static final Path WORKDIR = Paths.get(System.getProperty("user.dir"));
private static final Gson gson = new GsonBuilder().setPrettyPrinting().create();
// --- 后台任务管理器 ---
static class BackgroundManager {
// 任务存储
private final Map<String, TaskInfo> tasks = new ConcurrentHashMap<>();
// 通知队列
private final Queue<TaskNotification> notificationQueue = new ConcurrentLinkedQueue<>();
// 任务 ID 生成器
private final AtomicInteger taskIdCounter = new AtomicInteger(1);
// 锁
private final Object lock = new Object();
static class TaskInfo {
String taskId;
String status; // running, completed, timeout, error
String result;
String command;
long startTime;
Thread thread; // 关联的执行线程
}
static class TaskNotification {
String taskId;
String status;
String command;
String result;
}
/**
* 启动后台任务
* 立即返回任务 ID,不等待命令完成
*/
public String run(String command) {
String taskId = "task_" + taskIdCounter.getAndIncrement();
TaskInfo task = new TaskInfo(taskId, command);
tasks.put(taskId, task);
// 创建并启动后台线程
Thread thread = new Thread(() -> executeTask(task), "BackgroundTask-" + taskId);
thread.setDaemon(true);
task.thread = thread;
thread.start(); // 立即返回,不阻塞
return String.format("Background task %s started: %s",
taskId, command.substring(0, Math.min(command.length(), 80)));
}
/**
* 线程目标:执行子进程,捕获输出,推送结果到队列
*/
private void executeTask(TaskInfo task) {
String output;
String status;
try {
ProcessBuilder pb = new ProcessBuilder("bash", "-c", task.command);
pb.directory(WORKDIR.toFile());
pb.redirectErrorStream(true);
Process process = pb.start();
boolean finished = process.waitFor(300, TimeUnit.SECONDS); // 5分钟超时
if (!finished) {
process.destroy();
output = "Error: Timeout (300s)";
status = "timeout";
} else {
output = new String(process.getInputStream().readAllBytes()).trim();
status = "completed";
}
} catch (Exception e) {
output = "Error: " + e.getMessage();
status = "error";
}
// 更新任务状态
task.status = status;
task.result = output.isEmpty() ? "(no output)" :
output.substring(0, Math.min(output.length(), 50000));
// 添加通知到队列
synchronized (lock) {
notificationQueue.offer(new TaskNotification(
task.taskId,
status,
task.command.substring(0, Math.min(task.command.length(), 80)),
task.result.substring(0, Math.min(task.result.length(), 500))
));
}
}
/**
* 检查任务状态
* 如果指定 taskId,检查单个任务;否则列出所有任务
*/
public String check(String taskId) {
if (taskId != null && !taskId.isEmpty()) {
TaskInfo task = tasks.get(taskId);
if (task == null) {
return "Error: Unknown task " + taskId;
}
return String.format("[%s] %s\n%s",
task.status,
task.command.substring(0, Math.min(task.command.length(), 60)),
task.result != null ? task.result : "(running)");
} else {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, TaskInfo> entry : tasks.entrySet()) {
TaskInfo task = entry.getValue();
sb.append(String.format("%s: [%s] %s\n",
task.taskId,
task.status,
task.command.substring(0, Math.min(task.command.length(), 60))));
}
return sb.length() > 0 ? sb.toString().trim() : "No background tasks.";
}
}
/**
* 清空通知队列并返回所有待处理的通知
*/
public List<TaskNotification> drainNotifications() {
synchronized (lock) {
List<TaskNotification> notifications = new ArrayList<>();
while (!notificationQueue.isEmpty()) {
notifications.add(notificationQueue.poll());
}
return notifications;
}
}
/**
* 获取所有任务
*/
public Map<String, TaskInfo> getAllTasks() {
return new HashMap<>(tasks);
}
}
// 初始化后台管理器
private static final BackgroundManager BG_MANAGER = new BackgroundManager();
// --- 工具枚举 ---
public enum ToolType {
BASH("bash", "Run a shell command (blocking)."),
READ_FILE("read_file", "Read file contents."),
WRITE_FILE("write_file", "Write content to file."),
EDIT_FILE("edit_file", "Replace exact text in file."),
BACKGROUND_RUN("background_run", "Run command in background thread. Returns task_id immediately."), // 新增
CHECK_BACKGROUND("check_background", "Check background task status. Omit task_id to list all."); // 新增
public final String name;
public final String description;
ToolType(String name, String description) { this.name = name; this.description = description; }
}
// --- 工具处理器映射 ---
private static final Map<String, ToolExecutor> TOOL_HANDLERS = new HashMap<>();
static {
// ... 省略基础工具注册
// 后台任务工具
TOOL_HANDLERS.put(ToolType.BACKGROUND_RUN.name, args -> {
String command = (String) args.get("command");
return BG_MANAGER.run(command);
});
TOOL_HANDLERS.put(ToolType.CHECK_BACKGROUND.name, args -> {
String taskId = (String) args.get("task_id");
return BG_MANAGER.check(taskId);
});
}
// ... 省略相同的工具实现
// --- Agent 主循环(集成后台任务通知)---
public static void agentLoop(List<Map<String, Object>> messages) {
while (true) {
try {
// 在 LLM 调用前检查后台通知
List<BackgroundManager.TaskNotification> notifications = BG_MANAGER.drainNotifications();
if (!notifications.isEmpty() && !messages.isEmpty()) {
StringBuilder notifText = new StringBuilder();
notifText.append("<background-results>\n");
for (BackgroundManager.TaskNotification notif : notifications) {
notifText.append(String.format("[bg:%s] %s: %s\n",
notif.taskId, notif.status, notif.result));
}
notifText.append("</background-results>");
messages.add(Map.of(
"role", "user",
"content", notifText.toString()
));
messages.add(Map.of(
"role", "assistant",
"content", "Noted background results."
));
// 异步结果注入:将后台任务结果插入到对话中
// 结构化格式:用XML标签包裹,便于LLM解析
}
// 显示当前活动任务
Map<String, BackgroundManager.TaskInfo> activeTasks = BG_MANAGER.getAllTasks();
int runningTasks = (int) activeTasks.values().stream()
.filter(t -> "running".equals(t.status))
.count();
if (runningTasks > 0) {
System.out.printf("[Active background tasks: %d]\n", runningTasks);
}
// ... 省略相同的 LLM 调用和工具执行逻辑
} catch (Exception e) {
System.err.println("Error in agent loop: " + e.getMessage());
e.printStackTrace();
return;
}
}
}
}异步任务处理架构
// 后台任务管理器 - 异步执行引擎
static class BackgroundManager {
// 任务存储
private final Map<String, TaskInfo> tasks = new ConcurrentHashMap<>();
// 通知队列
private final Queue<TaskNotification> notificationQueue = new ConcurrentLinkedQueue<>();
// 任务 ID 生成器
private final AtomicInteger taskIdCounter = new AtomicInteger(1);
// 并发安全:使用线程安全集合
// 异步通信:通过队列传递任务结果
// 唯一标识:自动生成任务ID
}任务信息结构设计
// 任务信息实体
static class TaskInfo {
String taskId; // 唯一标识
String status; // 状态:running, completed, timeout, error
String result; // 执行结果
String command; // 执行的命令
long startTime; // 开始时间
Thread thread; // 关联的执行线程
// 完整状态跟踪:从启动到完成的全生命周期
// 线程关联:可以控制或监控执行线程
// 时间戳:支持超时和性能分析
}
// 任务通知实体
static class TaskNotification {
String taskId;
String status;
String command;
String result;
// 轻量传输:只包含必要信息
// 结构化:易于解析和处理
// 结果截断:避免过大的通知消息
}异步任务启动机制
/**
* 启动后台任务
* 立即返回任务 ID,不等待命令完成
*/
public String run(String command) {
String taskId = "task_" + taskIdCounter.getAndIncrement();
TaskInfo task = new TaskInfo(taskId, command);
tasks.put(taskId, task);
// 创建并启动后台线程
Thread thread = new Thread(() -> executeTask(task), "BackgroundTask-" + taskId);
thread.setDaemon(true); // 守护线程,不会阻止JVM退出
task.thread = thread;
thread.start(); // 立即返回,不阻塞调用者
return String.format("Background task %s started: %s",
taskId, command.substring(0, Math.min(command.length(), 80)));
// 异步启动:立即返回任务ID,不等待命令完成
// 守护线程:不会阻止程序正常退出
// 线程命名:便于调试和监控
}任务执行与结果收集
/**
* 线程目标:执行子进程,捕获输出,推送结果到队列
*/
private void executeTask(TaskInfo task) {
String output;
String status;
try {
ProcessBuilder pb = new ProcessBuilder("bash", "-c", task.command);
pb.directory(WORKDIR.toFile());
pb.redirectErrorStream(true);
Process process = pb.start();
boolean finished = process.waitFor(300, TimeUnit.SECONDS); // 5分钟超时
if (!finished) {
process.destroy();
output = "Error: Timeout (300s)";
status = "timeout";
} else {
output = new String(process.getInputStream().readAllBytes()).trim();
status = "completed";
}
} catch (Exception e) {
output = "Error: " + e.getMessage();
status = "error";
}
// 更新任务状态
task.status = status;
task.result = output.isEmpty() ? "(no output)" :
output.substring(0, Math.min(output.length(), 50000));
// 添加通知到队列
synchronized (lock) {
notificationQueue.offer(new TaskNotification(
task.taskId,
status,
task.command.substring(0, Math.min(task.command.length(), 80)),
task.result.substring(0, Math.min(task.result.length(), 500))
));
}
}智能通知注入机制
// 在 LLM 调用前检查后台通知
List<BackgroundManager.TaskNotification> notifications = BG_MANAGER.drainNotifications();
if (!notifications.isEmpty() && !messages.isEmpty()) {
StringBuilder notifText = new StringBuilder();
notifText.append("<background-results>\n");
for (BackgroundManager.TaskNotification notif : notifications) {
notifText.append(String.format("[bg:%s] %s: %s\n",
notif.taskId, notif.status, notif.result));
}
notifText.append("</background-results>");
messages.add(Map.of(
"role", "user",
"content", notifText.toString()
));
messages.add(Map.of(
"role", "assistant",
"content", "Noted background results."
));
// 自动注入:自动将后台结果插入到对话中
// 结构化格式:XML标签明确标识内容类型
// 对话完整:添加assistant确认,保持对话结构
// 时机智能:在LLM调用前插入,确保LLM能看到最新结果
}工具集成架构
// 后台任务工具集
public enum ToolType {
BACKGROUND_RUN("background_run", "Run command in background thread. Returns task_id immediately."),
CHECK_BACKGROUND("check_background", "Check background task status. Omit task_id to list all.");
// 异步执行:立即返回,不阻塞
// 状态查询:支持单个和批量查询
// 语义清晰:工具名明确表示异步特性
}
// 工具处理器映射
TOOL_HANDLERS.put(ToolType.BACKGROUND_RUN.name, args -> {
String command = (String) args.get("command");
return BG_MANAGER.run(command);
// 委托执行:将命令转交给后台管理器
// 立即返回:不等待任务完成
});
TOOL_HANDLERS.put(ToolType.CHECK_BACKGROUND.name, args -> {
String taskId = (String) args.get("task_id");
return BG_MANAGER.check(taskId);
// 灵活查询:支持单任务详查和列表概览
});架构演进与价值
维度 ContextCompactSystem BackgroundTasksSystem 执行模式 同步串行 异步并行 吞吐量 一次一个任务 并发多个任务 响应性 阻塞等待 立即响应 资源利用 单线程 多线程并发 任务类型 短任务为主 长短任务混合
那以后是不是中转站也用不上了,自己买也买不到了。
那裁员是不是也裁不动了
总感觉 windows 自带的记事本很傻。
最近总想让豆包干点活,想记一点给它的指令,后续可以备查干了些啥。
为了把这个去掉甚至充了个 pro,
但是 opus 在写了那个 files.exclude 文件将各种 dot 文件屏蔽掉了
但是始终未能得到解决,这里也是力竭了
(图片好像不太会贴)
我一般都是直接打开项目的但是有时要做一些文件整理看到一堆 dot 文件就是很烦但纯终端笨人又难以适应
希望有佬遇到过相同的事
金币仍然给各位拉满了希望不吝指教
机器是 512g 的,nas 划了 1T 做时间机器备份,今天又报空间不足了,但是页面上明明写着老旧备份会在空间不足时删除,这机制看着没用啊
顺便说一下这是第二次了,上一次我是清了整个时间机器盘,重新备份的
很羡慕软件大佬可以开论坛,搞社区;学习硬件久了,感觉软件能够输出的东西更加丰富多彩,硬件很局限!