yesterdaysun

yesterdaysun

V2EX 第 145085 号会员,加入于 2015-10-30 14:03:58 +08:00
今日活跃度排名 17877
根据 yesterdaysun 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
yesterdaysun 最近回复了
117 天前
回复了 yesterdaysun 创建的主题 Java RocketMQ 拉取消费过滤条件的问题
@Scarb 好像有点理解了, 所有的消息会广播给所有的消费组, 但是组内会直接拉取全部并过滤, 所以如果我想要的是一部分消费 t1, 一部分消费 t2, 搞两个消费组就行, 我之前以为消息只回传一次, 一边消费完了就没有了, 其实如果新建消费组订阅的话, 消费位点会从 0 开始, 这样理解对吧
117 天前
回复了 yesterdaysun 创建的主题 Java RocketMQ 拉取消费过滤条件的问题
@onepunch 我就是按文档写的呀, 按我的理解, 我生产了一条 tag=t1 的消息, 然后我订阅 tag=t2 的消息, 这个消息不应该被消费者收到, 我也确实没有收到, 但是这条消息同时也应该留在队列里面, 不应该是被消费的状态, 但是我这里确实显示被消费了, 所以百思不得其解
经过几天研究, 可能搞定了, 主要还是靠 pmset -g log 分析日志, 看 WakeRequest 都是些什么东西

一开始是 CSPNEvaluation, 反正是跟 PowerNap 有关的, 想办法改配置文件禁用掉了, 不行

后来是一些 Scheduled power events, 用 sudo pmset schedule cancelall 全部取消掉, 还是不行

再后来发现第二天所有的计划任务又重新冒出来了, google 之后, 先全部 cancel 掉, 然后 sudo chflags schg /Library/Preferences/SystemConfiguration/com.apple.AutoWake.plist 把配置文件设为只读, 貌似可以了

现在过去 2 天都没有半夜耗电的毛病了, 感觉差不多应该是好了, 真是艰难啊
昨天晚上观察了一下, 问题依旧, 早上起来只剩 50%电, 观察活动监视器的能耗没有结论, 因为这个就像是普通的唤醒电脑的样子, 都是一些正常的 APP 的待机能耗使用, 整个看上去就像是半夜 2 点电脑被唤醒打开, 然后 APP 正常待机工作的感觉, 但是实际上是全程不插电, 没有任何外接, 合盖的情况下发生的, 完全搞不懂了, 看日志的话, 只能看到是 0 点的时候进入睡眠, 但是只计划睡眠 2 个小时, 然后两个小时后 DarkWake from Deep Idle, 时间是 6 小时, 反正搞不懂这些计划安排是怎么来的, 头大

2024-07-18 00:15:12 +0800 Sleep Entering Sleep state due to 'Maintenance Sleep':TCPKeepAlive=disabled Using Batt (Charge:97%) 6422 secs
2024-07-18 00:15:14 +0800 Wake Requests [*process=powerd request=CSPNEvaluation deltaSecs=6459 wakeAt=2024-07-18 02:02:53] [process=powerd request=UserWake deltaSecs=23163 wakeAt=2024-07-18 06:41:17 info="com.apple.alarm.user-invisible-com.apple.calaccessd.travelEngine.periodicRefreshTimer,480"]
2024-07-18 00:15:14 +0800 PM Client Acks Delays to Sleep notifications: [com.apple.bluetooth.sleep is slow(1555 ms)] [com.apple.apsd is slow(2025 ms)]
2024-07-18 02:02:13 +0800 Assertions PID 128(powerd) Created InternalPreventSleep "Holding in darkwake for up to 20 seconds to query model for inactivity prediction" 00:00:00 id:0x0xd0000972d [System: DeclUser SRPrevSleep kCPU kDisp]
2024-07-18 02:02:13 +0800 Assertions PID 128(powerd) Released InternalPreventSleep "Holding in darkwake for up to 20 seconds to query model for inactivity prediction" 00:00:00 id:0x0xd0000972d [System: DeclUser kDisp]
2024-07-18 02:02:13 +0800 Assertions PID 318(mDNSResponder) Created MaintenanceWake "mDNSResponder:maintenance" 00:00:00 id:0x0xd0000972f [System: DeclUser kDisp]
2024-07-18 02:02:13 +0800 Assertions PID 318(mDNSResponder) Released MaintenanceWake "mDNSResponder:maintenance" 00:00:00 id:0x0xd0000972f [System: DeclUser kDisp]
2024-07-18 02:02:14 +0800 DarkWake DarkWake from Deep Idle [CDN] : due to EC.SleepTimer/SleepTimer Using BATT (Charge:97%) 21039 secs
2024-07-18 02:02:14 +0800 HibernateStats hibmode=3 standbydelaylow=10800 standbydelayhigh=86400 1704
2024-07-18 02:02:14 +0800 WakeTime WakeTime: 1.516 sec
2024-07-18 02:02:15 +0800 Kernel Client Acks Delays to Sleep notifications: [AppleIntelFramebuffer driver is slow(msg: SetState to 1)(988 ms)] [powerd is slow(17629 ms)] [UPSB driver is slow(msg: SetState to 2)(936 ms)] [UPSB driver is slow(msg: SetState to 2)(935 ms)] [AppleHPMIECS driver is slow(msg: WillChangeState to 2)(1094 ms)] [AppleHPMIECS driver is slow(msg: WillChangeState to 2)(1097 ms)] [AppleUSBVHCIBCE driver is slow(msg: SetState to 1)(318 ms)] [RP01 driver is slow(msg: SetState to 0)(1009 ms)]
2024-07-18 02:02:15 +0800 Kernel Client Acks Delays to Wake notifications: [RP17 driver is slow(msg: SetState to 2)(316 ms)] [UPSB driver is slow(msg: SetState to 2)(948 ms)] [UPSB driver is slow(msg: SetState to 2)(948 ms)] [ADIO driver is slow(msg: SetState to 2)(627 ms)] [ATY,Boa driver is slow(msg: SetState to 1)(366 ms)] [UPSB driver is slow(msg: SetState to 2)(942 ms)] [UPSB driver is slow(msg: SetState to 2)(962 ms)] [AppleHPMIECS driver is slow(msg: WillChangeState to 2)(1113 ms)] [AppleHPMIECS driver is slow(msg: WillChangeState to 2)(1118 ms)] [AppleIntelFramebuffer driver is slow(msg: SetState to 0)(352 ms)] [ATY,Boa driver is slow(msg: SetState to 0)(344 ms)] [AppleUSBVHCIBCE driver is slow(msg: SetState to 1)(324 ms)] [RP01 driver is slow(msg: SetState to 0)(1015 ms)] [RP17 driver is slow(msg: SetState to 2)(313 ms)] [UPSB driver is slow(msg: SetState to 2)(941 ms)] [UPSB driver is slow(msg: SetState to 2)(941 ms)] [ADIO driver is slow(msg: SetState to 2)(620 ms)] [ATY,Boa driver is slow(msg: SetState to 1)(371 ms)]
我没有接任何外设显示器之类的, 和这些无关, tcpkeepalive,powernap 原先设定是 1, 感觉关系应该不大, 1 代表接电源才启用, 我这个是没接电源就耗电的, 反正这两个先设成 0 试试

倒是那个音频的东西是有可能的, 通过 pmset -g assertions 能看到 PreventUserIdleSystemSleep 是 1, 是由火狐进程触发的 BuiltInSpeakerDevice 的 preventuseridlesleep, 退出火狐就没了, 还有之前也装过 blackhole 的虚拟声卡, 现在我也卸了

该做的都做了, 就看会不会复发了
@kafkaonsea @arcaitan 谢谢, 这两个我都试一下, 观察几天看看效果
https://en.wikipedia.org/wiki/Rounding
可选的舍入方式有 6 种, 常说的四舍五入对应 infinity 这种, 在 c#里面也叫 AwayFromZero, 但是这个会有统计学误差, 所以另一种常见的舍入方式是 even, c#里叫 ToEven, Java 里叫 HalfEven, 也就是上面有人提到的银行家舍入

不同的语言, 不同的函数使用的舍入规则都是不一样, 比如 toFixed 和 Math.round 用的就是不一样的, MySQL 的 decimal 和 float 规则不一样, 如果追求 100%精确的话就得去看文档他们用的到底是哪一种方案, 或者 Java/c#这种可以有选项让你控制使用哪一种舍入规则
之前有段时间研究过数独, 如果像第五版里说的用类似穷举的方法解数独没有问题, 可以解出来, 顶多一些难题要花费好几秒钟, 但是即使是一些简单的题, 没有经过优化, 计算机最终的步骤数都在千到万这个级别, 这样出结果没有问题, 但是要输出可以给人看的步骤太粗犷了一点.

说白了, 这里的穷举只是相当于应用了基本的唯一余数技巧和候选数加回溯的算法, 要真的生成可以给人看的步骤, 需要实现人所用的技巧, 比如 https://hodoku.sourceforge.net/en/techniques.php 这里列出的几十种从简单到复杂的解题技巧, 但是这样算法逻辑就会大大复杂了

不过这个 HoDoKu 是开源的, 可以用他的 C#算法复刻一遍转成文字再输出, 大概可以
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5316 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 08:52 · PVG 16:52 · LAX 00:52 · JFK 03:52
Developed with CodeLauncher
♥ Do have faith in what you're doing.