当内核收到了一个网络包
从网线到网卡
现在,就有一个数据包,即将从网线进入网卡。
这个数据包从很遥远的另一台计算机发出,经历重重艰难险阻,到达了这台计算机的网卡,这个过程可以阅读《如果让你来设计网络》,总之现在这个数据包已经过来了。
这个数据包来了之后,现在只是一堆电信号,离内核程序的处理还十万八千里呢,需要先经历网卡这个硬件的折磨。
我们把上图中的网卡放大看看。
最开始就是我们常见的网线插口,之后会经过信号转换的模块 PHY,再经过 MAC 模块,最后到达网卡内的一个缓冲区,注意哦这个是网卡这个硬件设备内的缓冲区,此时和内核代码还一点关系也没有。
总之这个过程,实质上就是把网线中的高低电平,转换到网卡上的一个缓冲区中存储着。
从网卡到内存
上一步,数据到达了网卡这个硬件的缓冲区中,现在要把它弄到内存中的缓冲区,简单一张图就是这样。
而且,这个过程完全不需要 CPU 参与,只需要 DMA 这个硬件设备,配合网卡这个硬件设备即可完成。
当然,这个过程的前提是,网卡驱动需要在内存中申请一个缓冲区叫 sk_buffer,然后把这个 sk_buffer 的地址告诉网卡,这样 DMA 才知道等网卡的缓冲区有数据到来时,把它拷贝到内存的什么位置上。
具体过程展开如下。
注册硬中断处理程序
之前的部分就不展示代码了,比较繁琐,且对主流程的理解帮助不大。总之现在,这份数据包,已经从网卡内的缓冲区,然后通过 DMA 的方式,拷贝到了内存中的 sk_buffer 这个结构中。
由于这个过程完全是由硬件完成的,所以下一步网卡该做的最后一件事,就是通知内核,让内核去处理这个数据。
怎么通知呢?就是中断。
网卡向 CPU 发起中断信号,CPU 打断当前的程序,根据中断号找到中断处理程序,开始执行。
那我们主要去看,这个网卡收包这个中断处理程序是什么,以及它是如何注册到中断向量表中的。
由于各个类型的网卡驱动程序是不同的,这里我们拿 e1000 这个网卡驱动来举例。我们在 e1000_main.c 中找到了这样一行代码。
request_irq(netdev->irq, &e1000_intr, ...);
这段代码的作用就是,当数据包从网卡缓冲区到内存中的 sk_buffer 后发出中断,将会执行到 e1000_intr 这个中断处理函数。
硬中断 e1000_intr 干了什么
drivers\net\e1000\e1000_main.c
// 注册的硬中断处理函数
static irqreturn_t e1000_intr(int irq, void *data, struct pt_regs *regs) {__netif_rx_schedule(netdev);
}
include\linux\netdevice.h
static inline void __netif_rx_schedule(struct net_device *dev) {list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list);// 发出软中断 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
}
没错,几乎啥也没干,将网卡设备 dev 放入 poll_list 里,然后立刻发起了一次软中断,然后就结束了。
软中断原理在《认认真真聊聊软中断》讲过,其实就是修改 pending 的某个标志位,然后内核中有一个线程不断轮询这组标志位,看哪个是 1 了,就去软中断向量表里,寻找这个标志位对应的处理程序,然后执行它。
这是为了尽快响应硬中断,以便计算机可以尽快处理下一个硬中断,毕竟鼠标点击、键盘敲击等需要响应特别及时。而像网络包到来后的拷贝和解析过程,在硬中断面前优先级没那么高,所以就触发一个软中断等着内核线程去执行就好了。
注册软中断处理程序
刚刚代码中我们就触发了一个值为 NET_RX_SOFTIRQ 的软中断,那这个软中断会执行到哪个软中断处理函数呢?
内核早在网络子系统初始化的过程中,把这个软中断对应的处理函数注册好了。
net\core\dev.c
static int __init net_dev_init(void) {open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL);open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL);
}// transmit 发送
static void net_tx_action(struct softirq_action *h) {...}
// receive 接收
static void net_rx_action(struct softirq_action *h) {...}
这个 open_softirq 就是注册一个软中断函数,很简单,就是把这个函数赋值给软中断向量表中对应位置的 action 上。还是上面的图。
这里注册了两个软中断,一个发送,一个接收。我们这次是接收,所以软中断触发后,就执行到了 net_rx_action 这个函数。
软中断 net_rx_action 干了什么
直接看!
net\core\dev.c
static void net_rx_action(struct softirq_action *h) {struct softnet_data *queue = &__get_cpu_var(softnet_data); while (!list_empty(&queue->poll_list)) {struct net_device dev = list_entry(queue->poll_list.next, struct net_device, poll_list);dev->poll(dev, &budget);}
}
遍历 poll_list 取出一个个的设备 dev,然后调用其 poll 函数。
还记得我们发起软中断前的一行代码吧?正是把当前有数据包到来的这个网卡设备 dev 放入了这个 poll_list,现在又取出来了。
由于要调用该网卡相应驱动的 poll 函数,那网卡初始化时,e1000 这款网卡的 poll 函数被附上了这个函数地址。
netdev->poll = &e1000_clean;
所以,接下来就看这个函数就好了,听名字就知道是清理这个网卡的数据包的工作。
drivers\net\e1000\e1000_main.c
static int e1000_clean(struct net_device *netdev, int *budget) {struct e1000_adapter *adapter = netdev->priv; e1000_clean_tx_irq(adapter);e1000_clean_rx_irq(adapter, &work_done, work_to_do);
}
由于本讲我们只看读数据的过程,所以就看 rx 部分就好了。
这个函数过长,我们只顺着一条线往下跟。
// drivers\net\e1000\e1000_main.c
e1000_clean_rx_irq(struct e1000_adapter *adapter) {...netif_receive_skb(skb);...
}// net\core\dev.c
int netif_receive_skb(struct sk_buff *skb) {...list_for_each_entry_rcu(ptype, &ptype_base[ntohs(type)&15], list) {...deliver_skb(skb, ptype, 0);...}...
}static __inline__ int deliver_skb(struct sk_buff *skb, struct packet_type *pt_prev, int last) {...return pt_prev->func(skb, skb->dev, pt_prev);
}
我们看到,一路跟来,执行了 pt_prev 的 func 函数。
这个函数是干嘛的呢?或者先问,这个函数具体的实现指向的是哪个函数呢?这就涉及到协议栈的注册。
协议栈的注册
IP 协议的注册,在这里。
// net\ipv4\ip_output.c
static struct packet_type ip_packet_type = {.type = __constant_htons(ETH_P_IP),.func = ip_rcv,
};void __init ip_init(void) {dev_add_pack(&ip_packet_type);
}// net\core\dev.c
void dev_add_pack(struct packet_type *pt) {if (pt->type == htons(ETH_P_ALL)) {list_add_rcu(&pt->list, &ptype_all);} else {hash = ntohs(pt->type) & 15;list_add_rcu(&pt->list, &ptype_base[hash]);}
}
我们看到,func 被赋值为了 ip_rcv,那上一步自然就执行到了这个函数,其实就是网络层交给谁来负责解析的意思。
那我们顺便把传输层的协议注册也看了吧,不难想到,ip_rcv 这个函数处理完必然交给传输层继续处理。
module_init(inet_init);static struct inet_protocol tcp_protocol = {.handler = tcp_v4_rcv,.err_handler = tcp_v4_err,.no_policy = 1,
};static struct inet_protocol udp_protocol = {.handler = udp_rcv,.err_handler = udp_err,.no_policy = 1,
};static int __init inet_init(void) {inet_add_protocol(&udp_protocol, IPPROTO_UDP);inet_add_protocol(&tcp_protocol, IPPROTO_TCP);ip_init();tcp_init();
}
非常直观明了,记住上面两个 handler 分别是 tcp_v4_rcv 和 udp_rcv。
我们回过头,继续看 ip_rcv 这个函数里面。
网络层处理函数 ip_rcv 干了什么
// net\ipv4\ip_input.c
int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt) {...return NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, dev, NULL,ip_rcv_finish);
}static inline int ip_rcv_finish(struct sk_buff *skb) {...if (skb->dst == NULL) {if (ip_route_input(skb, iph->daddr, iph->saddr, iph->tos, dev))goto drop; }...return dst_input(skb);
}// include\net\dst.h
// rth->u.dst.input= ip_local_deliver;
static inline int dst_input(struct sk_buff *skb) {...skb->dst->input(skb);...
}// net\ipv4\ip_input.c
int ip_local_deliver(struct sk_buff *skb) {...return NF_HOOK(PF_INET, NF_IP_LOCAL_IN, skb, skb->dev, NULL,ip_local_deliver_finish);
}static inline int ip_local_deliver_finish(struct sk_buff *skb) {...ipprot = inet_protos[hash];ipprot->handler(skb);...
}
OK,大功告成!最后执行了这个 handler,还记得上一节协议栈中注册的吧?
static struct inet_protocol tcp_protocol = {.handler = tcp_v4_rcv,.err_handler = tcp_v4_err,.no_policy = 1,
};static struct inet_protocol udp_protocol = {.handler = udp_rcv,.err_handler = udp_err,.no_policy = 1,
};
由于网络层解析到的传输层协议是 tcp,所以 handler 就指向了处理 tcp 协议的函数,tcp_v4_rcv!
再往后就是 tcp 协议的处理流程,解析出来的数据,由应用程序去接受和处理,就是我们的 socket bind listen read 的流程了。这块又是一片新天地,我还没有研究,就写到这吧!
不过对于 TCP 的原理,可以读这篇文章形象地了解下,《你管这破玩意叫 TCP》。
最后来一张图帮忙理解今天讲的内核收包全过程。
你看,我们常说协议栈不断去掉头部,交给上层协议栈处理,这句话在代码层面其实就是网络层协议解析的方法 ip_rcv 里的末尾调用了传输层协议解析的方法 tcp_v4_rcv,仅此而已。
而说 Linux 处理中断是分上半部和下半部的方案,代码层面就是硬中断处理函数的代码里,直接发起一个软中断,然后便返回,仅此而已。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 逆向五、用AndroidStudio动态调试smali
思路:APK-->反编译为Smali文件-->导入Android Studio里进行动态调试一、自己新建一个APK 使用Android Studio新建一个包含有用户名和密码的最基础的APK,把这个APK下载到自己的手机里,并连接好数据线二、把这个APK拖进AndroidKiller里&a…...
2024/5/2 18:30:28 - 语音识别系列1:语音识别综述
1 什么是语音识别? 语音或说话者识别是程序根据其独特的声纹识别人的能力。它通过扫描语音并与所需的语音指纹建立匹配来工作。人工智能的发展为计算机科学的这一子领域开辟了广阔的机遇。它使我们能够在不接触机器的情况下与机器进行交互。它发展迅速,开…...
2024/4/13 2:29:18 - Vue路由用法
一、Vue路由基础用法: 1 .安装npm install vue-router --save 2 .main.js中 //Vue路由:引入 import VueRouter from vue-router Vue.use(VueRouter)//Vue路由:引入并创建组件 import BYHome from ./components/BYHome.vue import BYNews fro…...
2024/4/19 14:13:42 - vue中使用elementUI组件的Upload 上传图片
1. 安装elementUI:npm i element-ui -S 2. 在main.js中引入elementUI import Element from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(Element, { size: small })3. 访问Element官网【组件–Upload上传】 <el-uploadaction"https:…...
2024/4/19 17:50:47 - 塑料抗氧化剂行业调研报告 - 市场现状分析与发展前景预测
塑料抗氧化剂市场的企业竞争态势 该报告涉及的主要国际市场参与者有Milliken、SONGWON、Oxiris、Everspring Chemical Co., Ltd、Plastics Color Corporation、Solvay、ADEKA、OMNOVA、SI Group, Inc.、Univar、Sumitomo Chemicals、Lanxess、BASF、Double Bond Chemical、Clar…...
2024/4/13 2:29:33 - Appium 自动化测试 九宫格解锁
背景 我们在操作APP密码解锁里面就有一个九宫格滑动解锁,这时候我们就需要手动连续滑动进行操作,前面提到的swipe、scroll、drag_and_drop 这些就无法实现解锁操作,我们就需要学会使用高级手势操作。 高级手势 高级手势TouchAction可以实现…...
2024/5/2 17:14:48 - 线程强制加入、线程强制加入应用场景
线程强制加入、线程强制加入应用场景线程强制加入join代码线程强制加入join join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞线程的插队方式主线程的代码块中,如果碰到了join方法,此时主线程会阻塞&…...
2024/4/24 4:21:09 - LaTeX代码: 文字颜色 ← 利用 xcolor 宏包
【LaTeX代码】 \documentclass{article} \usepackage{ctex} \usepackage{xcolor}\begin{document}{\textcolor{red}{红色}}{\textcolor{yellow}{黄色}}{\textcolor{green}{绿色}}{\textcolor{purple}{紫色}} \end{document} 【输出效果】...
2024/4/13 2:30:13 - 备战金三银四 I 没有自动化测试项目经验的测试人快快看过来
学习自动化测试最难的是没有合适的项目练习。测试本身既要讲究科学,又有艺术成分,单单学几个 API 的调用很难应付工作中具体的问题。 你得知道什么场景下需要添加显性等待,什么时候元素定位需要写得更加优雅,为什么需要断言这个元…...
2024/5/2 19:16:58 - vue keep-alive页面缓存
keep-alive 我们知道,在切换组件的时候,组件也在不断的销毁和重建,而组件只要销毁数据就会清空,但有些特殊情况下,我想要对组件的数据进行缓存,这时我们就要用到keep-alive keep-alive有三个props…...
2024/4/13 2:30:18 - 【析取合取 -】
析取合取 - xhyxhy - 博客园...
2024/4/13 2:30:23 - GEE系列:第 1 单元:Google 地球引擎简介
第 1 单元:Google 地球引擎简介 由科罗拉多州立大学生态学研究生学位课程和自然资源生态学实验室开发 作者:Peder Engelstad、Dan Carver2021 年 5 月更新 1简介2背景3开始使用 Google 地球引擎 3.1浏览用户界面3.2 JavaScript 简介3.3数据类型ÿ…...
2024/4/26 15:24:35 - 2022.2.15
升压芯片MAX17010可用RT9928代换...
2024/4/13 2:30:08 - docker高级操作---私有仓库的搭建
一. 创建私有仓库 1. 拉取镜像仓库 docker pull registry 2. 创建容器 docker run -di --nameregistry -p 5000:5000 registry 3. 浏览器可以访问到私有仓库了(修改成自己的服务器IP) http://服务器ip:5000/v2/_catalog 案例 http://106.14.42.253:5000/v2/_catalog …...
2024/4/13 2:30:03 - Python 大白从零开始 OpenCV 学习课-8. 频率域图像滤波(上)
今日完成:【OpenCV 例程 100篇】100. 自适应局部降噪滤波器 庆祝加更: Python 大白从零开始 OpenCV 学习课-8. 频率域图像滤波(上) 欢迎关注 『OpenCV 例程200篇 100 篇』 系列,持续更新中 欢迎关注 『Python小白的Ope…...
2024/4/13 2:30:18 - drf---快速入门01
# todo 待整理 一. 序列化组件介绍 0.模型对象就是querySet 1. 序列化:序列化器会把模型对象转换成字典,经过response以后变成json字符串 2. 反序列化:把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型 3. 反序列化:完成数据校验功能 二. 快速使…...
2024/4/19 12:43:29 - 如何打理水果店,夏天水果店怎么打理
1、注意水果相互之间有催化作用 哪些水果不能喷水,哪些水果不能放一起,否则相互催熟等等,这些是基础的运营常识,水果很多,这些知识都要常常看看,很多水果店老板每天都在背诵或者做笔记让自己记住。比如葡萄…...
2024/4/13 2:30:18 - 1242 · 无重叠区间
描述 给定一些区间,找到需要移除的最小区间数,以使其余的区间不重叠。 可以假设区间的终止点一定比起始点大。区间[1,2]和[2,3]虽然边缘重合,但是它们并未重叠。 样例 样例1: 输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: [1,3] 被移…...
2024/4/8 20:08:34 - 智云通CRM:采购决策有哪些关键节点?
大家都知道,工程建设项目的采购参与决策的人很多,除了业主,还有总包和分包商、甲方请来的监理、勘察设计、招标公司、造价审计等等;决策过程复杂且漫长,从项目立项、方案、初步设计一直到竣工验收;材料采购…...
2024/4/8 20:08:33 - 剑道第一仙 第一千六百三十七章 何须解释
御天道碑高有千尺,其上弥漫着奇异而缥缈的仙界周天规则力量,极为神秘。 可苏奕却察觉到,在道碑的底部位置,附着着一幅古怪的道纹图案。此图案形似红莲,充盈禁忌般的气息,似无数肆虐暴戾的火线交错凝聚而成…...
2024/4/20 2:23:00
最新文章
- 家里挂宗教画是否合适?
凡在我们这改名取名的客户,峰民都会建议他们挂一副这样或那样的画,这也是根据你命中的五行来给你助运的。而现在许多人都有自己的宗教信仰,有些人会在家供奉佛像,有些人甚至会在家里挂上宗教画,亦同样产生五行效应&…...
2024/5/2 19:37:51 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 与机器对话:ChatGPT 和 AI 语言模型的奇妙故事
原文:Talking to Machines: The Fascinating Story of ChatGPT and AI Language Models 译者:飞龙 协议:CC BY-NC-SA 4.0 从 ELIZA 到 ChatGPT:会话式人工智能的简史 会话式人工智能是人工智能(AI)的一个分…...
2024/5/2 18:14:02 - 权限提升-Linux系统权限提升篇VulnhubRbash绕过DockerLXD容器History泄漏shell交互
知识点 1、普通用户到Linux-泄漏-History 2、普通用户到Linux-限制-Rbash绕过 3、普通用户到Linux-容器-LXD&Docker 4.Linux系统提权-web/普通用户-docker逃逸&提权&shell交互 章节点: 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及…...
2024/5/1 13:20:00 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/2 9:28:15 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57