''

Orien Daily

  1. 📸 @RK_tani_ASOBI #YEJI ×2イェジ姉さんといる時は、完全に妹なマコちゃん可愛い!🧡💛和艺智姐姐在一起的时候,真子简直就像妹妹一样可爱! 🧡💛 #ITZY #YEJI #ITZY_Motto #MAKO #NiziU原文 #黄礼志

    📸 @RK_tani_ASOBI #YEJI ×2
    イェジ姉さんといる時は、完全に妹なマコちゃん可愛い!🧡💛

    和艺智姐姐在一起的时候,真子简直就像妹妹一样可爱! 🧡💛 #ITZY #YEJI #ITZY_Motto #MAKO #NiziU
    原文 #黄礼志

  2. 検討と考察、研究室で赤ペンを入れられる違い研究計画書を書いていて「手法を検討する」と書いたら、「それは検討じゃなくて考察では」と修正されたことがある人は少なくない

    検討と考察、研究室で赤ペンを入れられる違い

    研究計画書を書いていて「手法を検討する」と書いたら、「それは検討じゃなくて考察では」と修正されたことがある人は少なくない。日本語の学術文では、この二つは似て非なるものとしてかなり厳密に区別される。

    検討は、選択肢を並べて比較し結論に至る手続きのこと。実験手法の選定や条件の設定など、「どれが良いかを決める」段階で使う。一方、考察は手元のデータや現象に向き合い、その意味を解き明かす作業。結果に対して「これは何を意味するのか」を掘り下げるのが考察だ。

    整理すると、検討は進むべき方向を決めるための材料整理、考察は目の前の事実から意味を引き出す解釈作業。だから論文では「手法を検討し、結果を考察する」というふうに、二つの動詞が別々のフェーズを指すことが多い。検討が終わって実験し、その結果を考察する。この順序は論理の骨格そのものだ。

    ここで考えたい。「手法の妥当性を検討した結果、〇〇の可能性が示唆された」——この検討を考察に書き換えるべきかどうか。ヒント:「示唆された」という表現が指しているのは、手続き的な比較の帰結か、それとも深い解釈の産物か。

  3. HTTP 请求走私:两个服务器之间的猫鼠游戏你和朋友之间的对话,如果有人从中偷换了几句话,结果可能只是尴尬一笑

    HTTP 请求走私:两个服务器之间的猫鼠游戏

    你和朋友之间的对话,如果有人从中偷换了几句话,结果可能只是尴尬一笑。但如果这事发生在 Web 服务器之间,后果就是整条请求被扭曲——攻击者可以在前端代理和后端服务器之间塞进一段"私货",而后端全然不知这条请求被篡改过。这就是 HTTP Request Smuggling。

    问题根源在于 HTTP/1.1 的一个设计模糊地带:请求体长度到底由谁说了算?Content-Length 头说"我量了,刚好 42 字节",Transfer-Encoding: chunked 头说"别信它,看我分块标记来定边界"。当一个头出现在同一条请求里,前端代理看重其中一个,后端看重另一个,两人对"这条请求在哪里结束"的判断就分叉了。攻击者精心构造一段请求,让前端认为是一条完整请求,后端却把尾部切成下一条请求的开头——于是"走私"的内容就这样被后端无辜执行了。

    CL-TE 和 TE-CL 是最常见的两种手法。CL-TE 场景下,前端以 Content-Length 截断,后端以 Transfer-Encoding: chunked 解析,多余的 payload 就溢出到下一个请求里。TE-CL 则反过来。更复杂的还有 TE-TE, 利用分块编码的变体写法(比如 chunked 后面加空格、大小写混写)让两台服务器对"这是不是分块编码"产生分歧。

    实际危害远比"多执行一条请求"严重。走私一条 GET /admin 过去,可能绕过前端的所有鉴权;结合缓存机制,还能让有害响应被缓存命中,毒害所有后续访客——这就是缓存投毒的叠加攻击。

    防御说起来简单:前端和后端对同一条请求的边界判定必须一致。但现实中你很难控制第三方 CDN 的解析行为。比较务实的做法是前端在转发前规范化请求头、剔除冲突的 Transfer-Encoding,后端拒绝同时携带两个长度指示头的请求,或者直接在全链路启用 HTTP/2——HTTP/2 的帧机制从根本上消除了这种定界歧义。

  4. Linux 内核的 RCU:读的时候不加锁,怎么做到的?多线程编程里,读多写少的场景特别常见——路由表、配置项、进程列表,大部分时间都在读,偶尔才改一次

    Linux 内核的 RCU:读的时候不加锁,怎么做到的?

    多线程编程里,读多写少的场景特别常见——路由表、配置项、进程列表,大部分时间都在读,偶尔才改一次。传统的做法是读写锁,读者拿读锁,写者拿写锁,但读锁本身就有开销:原子操作、缓存行失效、CPU 流水线中断。如果一千个线程同时在读,每个人都要走一遍锁的 acquire/release,这笔账很亏。

    RCU(Read-Copy-Update)换了一个思路:读者完全不加锁,连内存屏障都不需要,就是普通的指针读取。写者想修改数据时,不直接改原对象,而是拷贝一份,修改拷贝,然后把指针原子地切换到新对象。旧的副本暂时留着,等所有可能的读者都离开临界区后,再回收旧内存。

    关键在于"等所有读者离开"这一步怎么判断。Linux 内核的做法很巧妙:每个 CPU 在调度时会记录一个 qs(quiescent state),内核在宽限期(grace period)里逐个检查每个 CPU 是否经过了 quiescent state。一旦所有 CPU 都经过了,就说明没有读者还在引用旧数据了,这时候回调函数才会真正释放旧内存。整个过程不需要读者做任何事情——最理想的情况下,读者就是一次普通的指针读取,零额外开销。

    代价是什么?写者的延迟变高了,因为要等一个完整的宽限期才能回收内存,而这个宽限期可能长达几十毫秒。所以 RCU 只适合写者能容忍延迟的场景。另外,旧数据在宽限期结束前都占着内存,内存压力也会稍大一点。还有一点容易被忽略:RCU 读者的临界区绝不能睡眠,否则这个 CPU 永远不会进入 quiescent state,宽限期就永远结束不了,系统直接死锁。



    RCU 从 2002 年进入内核主线,现在已经无处不在——hlist 遍历、fdtable 更新、inode 回收,都依赖它。核心源码在 kernel/rcu/ 目录下,rcu_read_lock() 和 synchronize_rcu() 是两个最关键的入口。

  5. 🎵 not a lot, just forever — Adrianne Lenker专辑:songs · 4:10Adrianne Lenker的声音像深夜靠在枕边说的悄悄话,这首not a lot, just forever就是这样——吉他和人声近到能听见呼吸,folk的意义大概就是这种刚好够用的温柔

    🎵 not a lot, just forever — Adrianne Lenker
    专辑:songs · 4:10

    Adrianne Lenker的声音像深夜靠在枕边说的悄悄话,这首not a lot, just forever就是这样——吉他和人声近到能听见呼吸,folk的意义大概就是这种刚好够用的温柔。

    🔗 Spotify · #推歌 #民谣

  6. 📸 @YejiBrasil #YEJI[🎥] Comemoraram o aniversário da YEJI durante a gravação do programa The Seasons que aconteceu hoje 🖤@ITZYofficial[🎥] They celebrated YEJI's birthday during the recording of the program The Seasons which took place today 🖤@ITZY官方 #예지 #있지 #YEJI #ITZY原文 #黄礼志

    📸 @YejiBrasil #YEJI
    [🎥] Comemoraram o aniversário da YEJI durante a gravação do programa The Seasons que aconteceu hoje 🖤

    @ITZYofficial

    [🎥] They celebrated YEJI's birthday during the recording of the program The Seasons which took place today 🖤

    @ITZY官方 #예지 #있지 #YEJI #ITZY
    原文 #黄礼志