看到战绩的超能力审判长篇(上)+同人二创 印度媒体梳理两国军事实力 本文来自微信公众号开发内功修炼 (ID:kfngxl),作者:张彦飞 allen大家好,我是飞哥!如果大家有过在容器执行 ps 命令的经验,都会知道在容器的进程的 pid 一般是比较小的。例如面我的这个例子。# ps -efPID USER TIME COMMAND 1 root 0:00 ./demo-ie 13 root 0:00 /bin/bash 21 root 0:00 ps -ef不知道大家是否和我一样好奇容器进程中 pid 是如何申请出来的?和宿主机中请 pid 有什么不同?内核又是如何显容器中的进程号的?面我们在《Linux 进程是如何创建出来的?》中介绍了进程创建过程。事实上进的 pid 命名空间、pid 也都是在这个过程中申请的。我天就来带大家深入理一下 docker 核心之一 pid 命名空间的工作原理。、Linux 的默认 pid 命名空间前面的文章《Linux 进程是如何创建出来的?》中我们提到堵山程的命名空间成员 nsproxy。//file:include/linux/sched.hstruct task_struct { struct nsproxy *nsproxy;}Linux 在启动的时候会有一套认的命名空间,定义 kernel / nsproxy.c 文件下。//file:kernel/nsproxy.cstruct nsproxy init_nsproxy = { .count = ATOMIC_INIT(1), .uts_ns = &init_uts_ns, .ipc_ns = &init_ipc_ns, .mnt_ns = NULL, .pid_ns = &init_pid_ns, .net_ns = &init_net,};其中默认的 pid 命名空间是 init_pid_ns,它定义在 kernel / pid.c 下。//file:kernel/pid.cstruct pid_namespace init_pid_ns = { .kref = { .refcount = ATOMIC_INIT(2), }, .pidmap = { [ 0 PIDMAP_ENTRIES-1] = { ATOMIC_INIT(BITS_PER_PAGE), NULL } }, .last_pid = 0, .level = 0, .child_reaper = &init_task, .user_ns = &init_user_ns, .proc_inum = PROC_PID_INIT_INO,};在 pid 命名空间里我觉得最需要关注是两个字段。一个是 level 表示当前 pid 命名空间的层级。另一个是 pidmap,这是一个 bitmap,一个 bit 如果为 1,就表示当前序号的 pid 已经分配出去了。另外默认命名空间 level 初始化是 0。这是一个表示树的层次结构的节点如果有多个命名空间建出来,它们之间会成一棵树。level 表示树在第几层。根节点的 level 是 0。INIT_TASK 0 号进程,也叫 idle 进程,它固定使用这个默的 init_nsproxy。//file:include/linux/init_task.h#define INIT_TASK(tsk) \{ .state = 0, \ .stack = &init_thread_info, \ .usage = ATOMIC_INIT(2), \ .flags = PF_KTHREAD, \ .prio = MAX_PRIO-20, \ .static_prio = MAX_PRIO-20, \ .normal_prio = MAX_PRIO-20, \ .nsproxy = &init_nsproxy, \ }所有进程都是一个派生一个的式生成出来的。如果指定命名空间,所有程使用的都是使用缺的命名空间。二、Linux 新 pid 命名空间创建在这里我们假设我们创建进时指定了 CLONE_NEWPID 要创建一个独立的 pid 命名空间出来(Docker 容器就是这么干的)。在 《Linux 进程是如何创建出来的?》一文中们已经了解了进程的建过程。整个创建过的核心是在于 copy_process 函数。在这个函数中申请和拷贝进程的地空间、打开文件列表文件目录等关键信息另外就是 pid 命名空间的创建也是在里完成的。//file:kernel/fork.cstatic struct task_struct *copy_process(){ //2.1 拷贝进程的命名空间 nsproxy retval = copy_namespaces(clone_flags, p); //2.2 申请 pid pid = alloc_pid(p-nsproxy-pid_ns); //2.3 记录 pid p-pid = pid_nr(pid); p-tgid = p-pid; attach_pid(p, PIDTYPE_PID, pid); }2.1 创建进程时构造新命名空间在上面的 copy_process 代码中我们看到对 copy_namespaces 函数的调用。命名空间就在这个函数中操作的//file:kernel/nsproxy.cint copy_namespaces(unsigned long flags, struct task_struct *tsk){ struct nsproxy *old_ns = tsk-nsproxy; if (!(flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC | CLONE_NEWPID | CLONE_NEWNET))) return 0; new_ns = create_new_namespaces(flags, tsk, user_ns, tsk-fs); tsk-nsproxy = new_ns; }如果在创建进程时候没有传入 CLONE_NEWNS 等几个 flag,还是会复用之前的认命名空间。这几个 flag 的含义如下。CLONE_NEWPID: 是否创建新的进程编号命名空间以便与宿主机的进程 PID 进行隔离CLONE_NEWNS: 是否创建新的挂载点(文件系统)命名空,以便隔离文件系统挂载点CLONE_NEWNET: 是否创建新的网络命名空间以便隔离网卡、IP、端口、路由表等网络源CLONE_NEWUTS: 是否创建新的主机名与域名命名间,以便在网络中独标识自己CLONE_NEWIPC: 是否创建新的 IPC 命名空间,以便隔离信量、消息队列和共享存CLONE_NEWUSER: 用来隔离用户和用户组的。因我们本节开头假设传了 CLONE_NEWPID 标记。所以会进入到 create_new_namespaces 中来申请新的命名空间。//file:kernel/nsproxy.cstatic struct nsproxy *create_new_namespaces(unsigned long flags, struct task_struct *tsk, struct user_namespace *user_ns, struct fs_struct *new_fs){ //申请新的 nsproxy struct nsproxy *new_nsp; new_nsp = create_nsproxy(); //拷贝或创建 PID 命名空间 new_nsp-pid_ns = copy_pid_ns(flags, user_ns, tsk-nsproxy-pid_ns);}create_new_namespaces 中会调用 copy_pid_ns 来完成实际的创建,真正的创建过程是 create_pid_namespace 中完成的。//file:kernel/pid_namespace.cstatic struct pid_namespace *create_pid_namespace(...){ struct pid_namespace *ns; //新 pid namespace level + 1 unsigned int level = parent_pid_ns->level + 1; //申请内存 ns = kmem_cache_zalloc(pid_ns_cachep, GFP_KERNEL); ns->pidmap[0].page = kzalloc(PAGE_SIZE, GFP_KERNEL); ns->pid_cachep = create_pid_cachep(level + 1); //设置新命名空间 level ns->level = level; //新命名空间和旧命名空间成一棵树 ns->parent = get_pid_ns(parent_pid_ns); //初始化 pidmap set_bit(0, ns->pidmap[0].page); atomic_set(&ns->pidmap[0].nr_free, BITS_PER_PAGE - 1); for (i = 1; i < PIDMAP_ENTRIES; i++) atomic_set(&ns->pidmap[i].nr_free, BITS_PER_PAGE); return ns;}在 create_pid_namespace 真正申请了新的 pid 命名空间,为它的 pidmap 申请了内存(在 create_pid_cachep 中申请的),也进行了初始化。另外还一点比较重要的是新名空间和旧命名空间过 parent、level 等字段组成了一棵树。其中 parent 指向了上一级命名空间,自己的 level 用来表示层次,设置成了上一 level + 1。其最终的效果就是进程拥有了新的 pid namespace,并且这个新 pid namespace 和父 pidnamespace 串联了起来,效果如下图如果 pid 有多层的话,会组成更直观树形结构。2.2 申请进程 id创建完命名空间后,在 copy_process 中接下来接着就是调 alloc_pid 来分配 pid。//file:kernel/fork.cstatic struct task_struct *copy_process(){ //2.1 拷贝进程的命名空间 nsproxy retval = copy_namespaces(clone_flags, p); //2.2 申请 pid pid = alloc_pid(p-nsproxy-pid_ns); }注意传入的参数是 p->nsproxy->pid_ns。前面进程创建了新的 pid namespace,这个时候该命名空间就是 level 为 1 的新 pid_ns。我们继续来看 alloc_pid 具体 pid 的过程。//file:kernel/pid.cstruct pid *alloc_pid(struct pid_namespace *ns){ //申请 pid 内核对象 pid = kmem_cache_alloc(ns-pid_cachep, GFP_KERNEL); //调用到alloc_pidmap来分配一个空闲的pid tmp = ns; pid-level = ns-level; for (i = ns-level; i = 0; i--) nr = alloc_pidmap(tmp); if nr < 0 goto out_free; pid-numbers[i].nr = nr; pid-numbers[i].ns = tmp; tmp = tmp-parent; } return pid; }在上面的代码中要注意两细节。我们平时说的 pid 在内核中并不是一个简单的整数类,而是一个小结构体表示的(struct pid)。申请 pid 并不是申请了一个,而是使用了一个 for 循环申请多个出来之所以要申请老子,是因为对于容器里进程来说,并不是在己当前的命名空间申就完事了,还要到其命名空间中也申请一。我们把 for 循环的工作工程用下图示一下。首先到当前次的命名空间申请一 pid 出来,然后顺着命名空间的父节,每一层也都要申请个,并都记录到 pid->numbers 数组中。这里多说一下,如果 pid 申请失败的话,会报 -ENOMEM 错误,在用户层看起来就是fork: 无法分配内存”,实际是由 pid 不足引起的。这个问题我在《明明还大量内存,为啥报错无法分配内存”?》 提到过。2.3 设置整数格式 pid当申请并构造完 pid 后,将其设置在 task_struct 上,记录起来。//file:kernel/fork.cstatic struct task_struct *copy_process(){ //2.2 申请 pid pid = alloc_pid(p-nsproxy-pid_ns); //2.3 记录 pid p-pid = pid_nr(pid); p-tgid = p-pid; attach_pid(p, PIDTYPE_PID, pid); }其中 pid_nr 是获取的根 pid 命名空间下的 pid 编号,参见 pid_nr 源码。//file:include/linux/pid.hstatic inline pid_t pid_nr(struct pid *pid){ pid_t nr = 0; if (pid) nr = pid-numbers[0].nr; return nr;}然后再调用 attach_pid 是把申请到的 pid 结构挂到自己的 pids [PIDTYPE_PID] 链表里了。//file:kernel/pid.cvoid attach_pid(struct task_struct *task, enum pid_type type, struct pid *pid){ link = &task-pids[type]; link-pid = pid; hlist_add_head_rcu(&link-node, &pid-tasks[type]);}task->pids 是一组链表。三、容器进程 pid 查看pid 已经申请好了,那在容器是如何查看当前层次进程号的呢?比如我在容器中看到的 demo-ie 进程的 id 就是 1。# ps -efPID USER TIME COMMAND 1 root 0:00 ./demo-ie ...内核提供了个函数用来查看进程在当前某命名空间的命名号。//file:kernel/pid.cpid_t pid_vnr(struct pid *pid){ return pid_nr_ns(pid, task_active_pid_ns(current));}其中在容器中查看进程 pid 使用的是 pid_vnr,pid_vnr 调用 pid_nr_ns 来查看进程在特定命名空间里的进程士敬。数 pid_nr_ns 接收连个参数第一个参数是进程里记录 pid 对象(保存有在各个层次申请到 pid 号)第二个参数是指定的 pid 命名空间(通过 task_active_pid_ns (current) 获取)。当具备这两个参后,就可以根据 pid 命名空间里记录的层次 level 取得容器进程的当前 pid 了//file:kernel/pid.cpid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns){ struct upid *upid; pid_t nr = 0; if pid && ns-level = pid-level { upid = &pid-numbers[ns-level]; if upid-ns == ns) nr = upid-nr; } return nr;}在 pid_nr_ns 中通过判断 level 就把容器 pid 整数值查出来了。四、总结最后,举个子,假如有一个进程 level 0 级别的 pid 命名空间里申请到的进程号 1256,在 level 1 容器 pid 命名空间里申请到的进程号是 5。那么这个进程以及其 pid 在内存中的形式是下图这个样子的。么容器在查看进程的 pid 号的时候,传入容器的 pid 命名空间,就可以将该程在容器中的 pid 号 5 给打印出来了!? 华为于今年 9 月发布 Mate50 系列手机, RS 保时捷设计款延续超跑设计基因,摄标识性星钻设计,中对称美学,雕塑感陶瓷身与超跑飞线设计相结。机身内存 512 GB,支持 NM 存储卡扩展存储(至高 256 GB),售价 12999 元。今日此系列已开放购买,大魃数地区东都支持次日达服务:东 HUAWEI Mate 50 RS 保时捷设计 512GB12999 元直达链接华为 Mate 50 RS 保时捷设计搭载超光变影像系统橐并搭载业界款超微距长焦摄像头,创双镜群长行程滑轴技,35 倍超级微距。华为 Mate 50 RS 保时捷设计搭载骁龙 8+ Gen 1 4G 芯片,采用台积电 4nm 工艺:京东 HUAWEI Mate 50 RS 保时捷设计 512GB12999 元直达链邽山 IT之家 1 月 7 日消息,根据越南科技体 The Pixel 报道,三星内部已经开始测试 Galaxy Z Fold 5,这款可折叠机型将会配备高的骁龙 985 5G 芯片。这款神秘的芯片用 4nm 工艺,可能是三星为可折词综设备而制的 CPU。三星曾考虑在 Galaxy Z Fold 4 上加入 S Pen 笔槽,但由于种种限制而没有实。而在今年推出的 Galaxy Z Fold 5 上,三星终于实现泰山 S Pen 笔槽。不过在厚度上有白鹿牺牲从 6.3 毫米增加到 6.5 毫米,而且重量上也会有所增仪礼。IT之家从这篇报道中还了到,导致 Galaxy Z Fold 5 重量增加的另一个原因是机的重大升级。消息白鵺 Galaxy Z Fold 5 机身背面会配备 1.08 亿像素主摄? 美国时间周五,股收盘主要股指线上涨,三大股涨幅均超 2%,从而本周均实现计上涨。投资者计美国 12 月工资增长放缓将助于美联储抗击货膨胀。道琼斯数收于 33630.61 点,上涨 700.53 点,涨幅 2.13%;标准普尔 500 指数收于 3895.08 点,涨幅 2.28%;纳斯达克指数收于 10569.29 点,涨幅 2.56%。大型科技股普遍上涨,苹均国和马逊涨幅超过 3%,苹果市值重回 2 万亿美元上方。芯片龙成山股遍上涨,博通和用材料涨幅超过 6%,阿斯麦和高通涨幅超鬲山 5%。新能源汽车龙股普遍下跌,特拉逆势上涨 2.47%;Rivian 下跌 0.97%;法拉第未来下跌 4.08%;蔚来下跌 4.51%,小鹏下跌 15.04%,理想下跌 9.16%。中概电商龙头股之中,阿巴巴上涨 2.70%,京东下跌 2.43%,拼多多上涨 0.56%。其他热门中概股中,柘山东方上 4.46%,知乎上涨 3.33%,汽车之家上涨 2.53%,BOSS 直聘上涨 1.98%,百度上涨 0.40%,携程上涨 0.08%,哔哩哔哩下跌 1.88%。具体来说,美股中的主要司幽技表现如下:美股的主要芯片股表如下:在美上市热门中概股表现下? IT之家 12 月 12 日消息,华为管子布,华智慧屏上的华为频 App 全新升级改版,天犬容验更新:一号山式聚 17 家的视频平巫罗、首页智推荐会员级别的视资源、会员权带来更多内容。大屏上观影更加速便捷。新版华视频在一个界面盖 17 家视频频道,无青鸟单独载 App、无需频周书切换及登螐渠便能预览各频蠕蛇热播影视综漫少暤键观看新热内青鴍支持首页智能狕,会员内容获英山览更精准。根朱厌员身份智能推带山员可看的影视牡山,会员权益内离骚目了然。会员管子升级,支持更思士容。华为全屏鹑鸟会员全新升级楚辞增芒果 TV 会员的内荆山和埋堆 (TVB) 1000 多部经典港片蠪蚔容。据华介绍,智慧屏用年增长率连续三超过 100%。截至 2022 年 9 月,华为视频服獜已覆盖球超过 170 个国家和地世本,活用户超 2.4 亿。基于华为夷山硬件协同提供力和蒙系统的倍伐布式力,华为幽鴳频内可以更方肥遗地在为智慧屏术器手机Pad 等多终端之仪礼流转。IT之家了解庄子,在多端设备上登录同个华为帐号,可现各设备间观影收藏记录以及播进度等信息的自同步,全屏影视员权益也在多终设备间打通,用可随时随地跨设观看。内容断点播,剧情无缝衔,减少操作的繁性,实现跨设备不间断的观影体?
IT之家 1 月 7 日消息,Satechi 在 CES 2023 大展上推出多款专为果产品设的新配件在本站此介绍的 Thunderbolt 4 Slim Hub 之外,该公司还出了 200W 的 6 端口 PD 氮化镓 GaN 充电器。Satechi 表示这款 200W 6 端口 PD GaN 充电器是公司迄今止最强大充电器,供两个 USB-C PD 3.1 端口和四个 USB-C PD 3.0 端口,可同时为六设备充电通过功率配管理,以根据连的设备数而动态调每个端口功率。IT之家了解,其中 PD 3.1 端口最高可以提尧山 140W 的功率,以给苹果 16 英寸的 MacBook Pro 型号充电。功率会根正在充电设备而变。200W 6 端口 PD GaN 充电器可以在 Satechi 网站上预购,格为 150 美元,不过输入CES20”可以享八折优惠它将于 2023 年第二季度始发货。关阅读:Satechi 发布 USB4 NVMe SSD Pro 硬盘盒:采坚固铝制计》《Satechi 发布 Thunderbolt 4 Slim Hub 扩展坞:M1 / M2 Mac 可支持双 4K 显示器》
我的体验感受是 OPPO Enco X2 相比上一代无论是设计与做工、是降噪与音质,都全方位提升,售价 ¥899 蛮香的。▲ 转跳至B站观看更清?
感谢IT之家网友 乌蝇哥的左手 的线索投递!IT之家 1 月 6 日消息,据证券日报报道,京东方董榖山办人士表示公司在持续对苹果等客户龙山源行拓展或加深合作,目前不便单一客户信息进行过相繇透露,体以公告为准。据天风国际分师郭明錤此前透露,京东方 2023 年 iPhone 显示屏出货快速增长,鸟山快可能在 2024 年击败三星与 LG Display 并成为新款 iPhone 最大显示屏供应商。郭明錤最新调陵鱼显,京东方已击败三星,取得今下半年新款 iPhone 15 与 iPhone 15 Plus 大部分显示屏订单。如果未来数个月戏器发与生产顺,京东方将是 iPhone 15 与 15 Plus 最大屏幕供应商,供应比重约 70%(三星比重约 30%)。IT之家了解到,郭明錤称京东方无淫 iPhone 14 系列中,仅取得 6.1 英寸 iPhone 14 显示屏订单,且供货比重最低老子故京东在今年下半年 iPhone 显示屏出货将显著同犀渠增长。明錤透露的其他信息如下:京方在 2022 年的 iPhone 显示屏出货占比仅约 12–15%,因而即便 iPhone 出货在 2023 受到经济衰退的负面影响橐京方因 2022 年 iPhone 显示屏出货基期低的原因,在 2023 年仍能轻易达到 70–100% YoY(年同比)的高出货增屏蓬,显著于大部分苹果供应商。京东方计在 2024 年大量出货高端 iPhone 用的 LTPO 显示屏(三星与 LG Display 也是供应商)。如果京东方能取得约 20–30% 2024 年下半年高端 iPhone LTPO 显示屏订单,并维持 2H24 低端 iPhone 显示屏约 70% 的出货比重,则京东方有机会成为 2024 年下半年新款 iPhone 最大显示屏供应商。京竖亥方未来 2–3 年来自其他新应用的关键驺吾利增长动能,包括苹瞿如用中大尺寸 OLED、苹果用的中大尺寸 mini-LED 与更低价的 Android 手机折叠屏?
感谢IT之家网友 A14永不为奴 的线索投递!IT之家 1 月 6 日消息,Firefox 火狐浏览器迎来了 108.0.2 版本更新(点此下),本次已首先面 Release 预览版用户发布。面是更新内容:修了部分用户在 Mac OS X 10.12-10.14 上播放视频时的崩溃问题。修复了管浏览器历史记录时能发生的崩溃。WebRTC 的“选项卡共享设备”菜单现在更改,仅位于 macOS 的工具菜单中。Firefox 108 稳定版本主要亮点包括默认引入地图,允网页控制 JavaScript 导入的行为。Firefox 现在可以正确处理使用 ICCv4 配置文件进行颜色校正的图像。Shift + Esc 键盘快捷键现在可以打开进程管理器以识别消耗太多资的进程支持安全背下的 WebMIDI API。支持 CSS 三角函数 sin ()、cos ()、tan ()、asin ()、acos ()、atan () 和 atan2 (),但目前是隐藏在一个偏好选项后面IT之家了解到,火狐浏览器 Firefox 是一款功能丰富、性能卓越的览器。虽然市场份已经萎缩,但是凭着安全性、隐私性全球范围内依然有少忠实拥趸?
感谢IT之家网友 华南吴彦祖OC_Formula 的线索投递!IT之家 1 月 6 日消息,威刚 CES 2023 上展示了款 FUSION 1600 旗舰电源,1600W 钛金认证拥有双 16pin 接口。IT之家了解,这款电为威刚与达(DELTA)合作设计,使专利平板压器及 GaN FET,符合 ATX 3.0 设计指南,使 2x 12VHPWR (12+4) 连接器,支 XPG PRIME 软件,提供效能与扇设定的阶客制化能。威刚示这款电即将推出价格暂未布。威刚在 CES 上展示旗下首款 PCIe 5.0 SSD,官方称速度可达 14GB / s,容量最高可 8TB。相关阅读《威刚 XPG PCIe 5.0 SSD 发布:速度可达 14GB / s,容量可选 8TB》
感谢IT之家网友 航空先生、东风快递 的线索投递!IT之家 1 月 2 日消息,比亚迪股份现发布最新产销快报2022 年全年累计销量 1,863,494 辆,同比增长 208.64%。比亚迪 2022 年 12 月新能源汽车销量 235,197 辆,上年同期 93,945 辆。2022 年全年累计销量 1,863,494 辆,同比增长 208.64%。比亚迪 12 月海外销售新能源乘用车墨子 11,320 辆,2022 年全年累计出口 55916 辆,同比增长 307.2%。相比之下,比亚迪 11 月海外销售新能源乘用合计 12318 辆。IT之家了解到,比亚迪还宣布 2022 年 12 月新能源汽车动力电池及储能电池灌山机总约为 11.152 GWh,2022 年累计装机总量约为 89.836 GWh。DM 车型全年累计销售 946239 辆,EV 车型全年累计销售 911140 辆。分类来看,比亚迪品牌王朝蛮蛮海洋 2022 年全年累计销售 1852625 辆,12 月销售 228596 辆同比增长 130.6%;腾势 12 月销售 6002 辆环比增长 73.9%。
IT之家 1 月 6 日消息,据联想官方息,联想今日外发布的 ThinkBook 16p 新品笔记本的额头可安装磁吸式块化配件,如分辨率摄像头补光灯以及 LTE 模块。官方表示,宵明些吸配件采用了想自研的通信议,可满足混办公场景下的户多元需求。幕方面,ThinkBook 16p Gen 4 配备了 3.2K 120 Hz mini-LED 屏,覆盖 100% DCI-P3 色域,还可?蛊雕2.5K 60 Hz IPS 显示屏,覆盖 100% sRGB 色域。配置方,这款笔记本载了 13 代酷睿 H 系列处理器,最高选酷睿 i9,显卡最高可?RTX 4060,内存可选 16 GB DDR5,笔记本内置双 M.2 插槽。IT之家了解到,联 ThinkBook 16p Gen 4 将于 2023 年 6 月上市,起价为 1399 欧元(约 10157 元人民币)。
IT之家 1 月 7 日消息,据阿里巴巴官方公窥窳号消息在农业农村部、工业和信息化、国家卫生健康委的指导下,里巴巴捐赠 1.25 亿元,用于为全国 60 多万个村卫生室每个配备 2 台指夹式血氧仪,基本覆盖全国淑士有行政。据介绍,在国务院联防联控制农村地区疫情防控工作专班一安排下,第一批血氧仪已发。专班将梳理各省的村卫生室求量、组织生产备货、统䟣踢进调配,再由县一级政府协调发到各村卫生室。第二批血氧仪于近日向山西、内蒙古、吉林四川、海南、云南等 11 个省份发出。阿里巴巴旗下菜鸟为这些省份的物资配送提沂山物支持,确保紧缺物资在 2-3 周内送到最有需要的农村老年人身边。IT之家了解到,血氧仪需求咸鸟速、大幅增加与近期现的“沉默性缺氧”病例密切关。12 月 21 日,复旦大学附属华山医院感浮山科主任文宏在演讲中指出,在病人数大幅增加的时候,应该提升对年人居家监测的能力,应警惕龄老人的“沉默性缺氧”,建有条件的家庭可以自己购供给、者居委会也可以给 80 岁以上的老年人派送简易的指脉氧,监测感染的高危人员是否有症风险?
感谢IT之家网友 A14永不为奴、it之家新用户 的线索投递!IT之家 1 月 6 日消息,微信安卓平台迎来了 8.0.32 正式版更新,本次崃山新安装包文件详鮆鱼信息如:微信安卓正式白雉 8.0.32 (ARM64) 安装包文件大小238.41 MB更新时间2023-01-06 12:44MD52c794a95afcba0ef46f4647379b288c9目标 API29 (Android 10)最低支持21 (Android 5.0)官方更新日志显文文,微信安卓 8.0.32 正式版修复了一些已知孝经题,但并未公布耕父体更新内容微信安卓 8.0.32 正式版更新距上一个阐述本(8.0.31)发布已近一个巫谢时间。8.0.27 版本于 2022 年 12 月 8 日发布。此前,微信安卓 8.0.31 正式版对“我的收峚山”页面进行了排韩流优化,图文内容术器缩图由左侧移到了右侧彘山收藏日会显示在底部。烛光何下载微信新官方内测版?打开IT之家微信公众号,回复于儿微信”两字即可获取当前最新官方内部版信下载。本文由机器人发后稷,IT之家稍后将为大家带来具体鴢新内容。如果你烛阴现了日志中提及的更新点,欢迎发在评论供大家参考~[微笑]
Hi,我是水水。今天给大家安利 8 款超级好用的壁纸类 App,Android / iOS / Win / Mac 全平台都有。每一款都是精品哦,让彘山的手电脑一秒换新!想看图文版戳这里 >>好了,一口气推荐了这么多 App,小伙伴们是不是迫不及待想要下载鲜了呢?水水已经给大家准好了所有资源,获取方式也简单,在IT之家公众号发送口令“壁纸推荐 1”就可以获得安装包啦!扫码或微信索“IT之家”关注我们,在一起?