2017 年研究生入学考试数学一选择题第 1 题解析

一、题目

若函数

$f(x)$ $=$ $\left\{\begin{matrix} \frac{1-\cos\sqrt{x}}{ax}, x > 0 \\ b, x\leqslant 0 \end{matrix}\right.$

在 $x$ $=$ $0$ 处连续,则()

( A ) $ab$ $=$ $\frac{1}{2}$

( B ) $ab$ $=$ $-$ $\frac{1}{2}$

( C ) $ab$ $=$ $0$

( D ) $ab$ $=$ $2$

二、解析

这道题可以根据函数连续的定义解出。

函数 $f(x)$ 在某一点 $x_{0}$ 处连续的定义如下:

$\lim_{x \rightarrow x_{0^{-}}}$ $=$ $\lim_{x \rightarrow x_{0^{+}}}$ $=$ $f(x_{0})$

因此,若函数 $f(x)$ 在 $x$ $=$ $0$ 处连续,则根据定义的话,我们需要证明:

$\lim_{x \rightarrow 0^{-}}$ $=$ $\lim_{x \rightarrow 0^{+}}$ $=$ $f(0)$

观察题目可知,这是一个分段函数,且当 $x$ $\in$ $(- \infty, 0]$ 时,$f(x)$ $=$ $b$. 于是,当 $x$ 从左边趋近于 $0$ 时,$f(0^{-})$ $=$ $b$.

当 $x$ 从右边趋近于 $0$ 时,适用的取值范围为 $x$ $>$ $0$, 而对应的函数值为:

$\lim_{x \rightarrow 0^{+}}$ $f(x)$ $=$ $\lim_{x \rightarrow 0^{+}}$ $\frac{1-\cos\sqrt{x}}{ax}$

根据如下的等价无穷小原则:

$1$ $-$ $\cos x$ $\sim$ $\frac{1}{2}x^{2}$

于是有:

原式 $=$ $\lim_{x \rightarrow 0^{+}}$ $\frac{\frac{1}{2}(\sqrt{x})^{2}}{ax}$ $=$ $\frac{1}{2a}$

为了满足上面提到的函数在一点处连续的定义,需要有:

$\frac{1}{2a}$ $=$ $b$

化简形式得:

$ab$ $=$ $\frac{1}{2}$

由此可知,选 $A$.

EOF

在 Android Studio 3.4.1 中打开 Android Device Monitor (ADM)

操作环境

操作系统:Windows 10 家庭版 64 位

Android Studio 版本如图 1:

图 1

说明

Android Studio 的版本经历了几次更新,导致 ADM (Android Device Monitor) 的打开方式也发生了几次变化,因此,在网络上找怎么打开 ADM 的话可能会发现没法在自己的 Android Studio 上重现他们的方法,这主要是 Android Studio 的版本不同导致的,建议大家在参考本文的时候也查看一下自己的 Android Studio 的版本(我的文章基本都会注明“操作环境”). 但是,版本不同不表示操作方法一定不同,具体还需要根据实际情况确定。

Google 从 Android Studio 3.2 开始就完全弃用了 Android Device Monitor, 相关解释的原文地址如下:

https://developer.android.com/studio/profile/monitor

相关解释的原文摘抄如下:

Android Device Monitor was deprecated in Android Studio 3.1 and removed from Android Studio 3.2. The features that you could use through the Android Device Monitor have been replaced by new features. The table below helps you decide which features you should use instead of these deprecated and removed features.

来自:https://developer.android.com/studio/profile/monitor

参考中文译文如下:

Android Device Monitor (ADM) 从 Android Studio 3.1 开始不赞成使用,在 Android Studio 3.2 上已经移除了 Android Device Monitor. 你之前可以在 Android Device Monitor 上使用的功能都被新的功能代替了。下面的表格将帮助你判定哪些功能是被替换和移除了。

译自:https://developer.android.com/studio/profile/monitor

不过,ADM (Android Device Monitor) 在 Android Studio 3.4.1 版本中仍然存在。此外,目前网络上大部分介绍在 Android Studio 中打开 Android 虚拟机中的文件的方式仍然是使用 ADM 的 File Explorer. 所以,知道如何打开 ADM 仍然很有必要,接下来就是具体的操作步骤。

操作步骤

根据 Android Studio 官网的信息,下面的操作步骤适用于 Android Studio 3.1 及其之后的版本。

使用 Everything 搜索 “sdk\tools” 可以找到 Android SDK 的路径:

图 2

或者在 Android Studio 中依次打开 “File / Settings / Android SDK” 中查看 Android SDK 的路径:

图 3

在 CMD 中进入 Android SDK tools所在的路径并输入 monitor 指令,即可打开 Android Device Monitor:

图 4 进入 “C:\Users\Master\AppData\Local\Android\Sdk\tools” 目录并输入 ADM 启动指令

Android Device Monitor 的界面:

图 5

EOF

Android Studio + Windows 10 配置 ADB 环境变量

操作环境

Windows 10 中文家庭版 64 位

Android Studio 3.4.1

操作步骤

我的 ADB 环境变量的路径如下:

C:\Users\Master\AppData\Local\Android\Sdk\platform-tools

如果你不知道自己电脑上 ADB 环境变量的路径,可以使用 Everything 搜索 “platform-tools” 即可找到,如图 1:

图 1

之后,依次打开“这台电脑 / 属性 / 高级系统设置 / 环境变量”,在 “Path” 环境变量中选择“编辑”,如图 2:

图 2

在打开的“编辑环境变量”窗口中,选择“新建”并把上面找到的 ADB 环境变量的路径填入其中,最后点击确定即可:

图 3

之后,重新打开一个 CMD 窗口,输入 adb, 如果可以看到回显信息则代表 ADB 环境变量配置成功:

图 4

EOF

使用定义判断函数的奇偶性

一、题目

判断函数 $f(x)$ $=$ $\ln(x+\sqrt{1+x^{2}})$ 的奇偶性。

二、解析

本题用到的知识点

$\log_{a}(MN)$ $=$ $\log_{a}M$ $+$ $\log_{a}N$

在 MATLAB (下面的代码在 MATLAB 9.1.0.441655 (R2016b) 中测试通过) 中输入如下代码:

x=0:0.01:10;
semilogy(x,log(x))

可以绘制出 $y$ $=$ $\ln(x)$ 的图像:

图 1

有图像可以看到,自然对数 $\ln(x)$ 只在 $(0,+\infty)$ 的区间里有定义,不符合对数函数或者偶数函数对于“定义域 $X$ 关于原点对称”的要求。不过题目中的函数可以看作是一个符合函数,因此,我们还需要结合 $g(x)$ $=$ $x$ $+$ $\sqrt{1+x^{2}}$ 的定义域来确定 $f(x)$ 的定义域。

因为:

$\sqrt{1+x^{2}}$ $>$ $\sqrt{x^{2}}$ $>$ $|x|$ $>$ $0$.

则:

当 $x$ $\in$ $(-\infty,+\infty)$ 时 $x$ $+$ $\sqrt{1+x^{2}}$ $>$ $0$ 满足自然对数函数 $\ln(x)$ 对定义域的要求,而且,当 $x$ $=$ $0$ 时,$f(x)$ $=$ $\ln(1)$ $=$ $0$ , 也满足奇函数“当 $f(x)$ 在原点处有定义时,$f(0)$ $=$ $0$”的要求。

到这里,定义域的问题解决了,下面要解决的是函数是关于 $y$ 轴对称,还是关于原点对称的问题。

由于:

$f(x)$ $=$ $\ln(x+\sqrt{1+x^{2}})$

$f(-x)$ $=$ $\ln(-x+\sqrt{1+x^{2}})$

则:

$f(x)$ $+$ $f(-x)$ $=$ $\ln(\sqrt{1+x^{2}}+x)$ $+$ $\ln(\sqrt{1+x^{2}}-x)$ $=$ $\ln[(\sqrt{1+x^{2}}+x)(\sqrt{1+x^{2}}-x)]$ $=$ $\ln(1+x^{2}-x^{2})$ $=$ $\ln(1)$ $=$ $0$

上面的运算结果符合奇函数的定义,因此,$f(x)$ $=$ $\ln(x+\sqrt{1+x^{2}})$ 是一个奇函数。

此外,使用 WolframAlpha 画出的函数 $f(x)$ $=$ $\ln(x+\sqrt{1+x^{2}})$ 的图像如下:

图 2.

由图像我们也可以看出这是一个奇函数。

EOF

CentOS 7 中 Apache 服务器禁止目录浏览

操作环境

服务器操作系统:CentOS 7
Web 中间件:Apache 2

问题说明

今天对网站进行安全检查的时候,发现了一个名为 “Index of /wordpress” 的网页。打开一看,竟然可以进行目录浏览

图 1

这是一个很危险的漏洞,几乎把荒原之梦的所有网站文件的名称都公开显示了。

解决步骤

修改相关目录的权限:

chmod 755 -R wordpress/

修改 Apache 的配置文件,进入如下目录:

/etc/httpd/conf

修改配置文件

vim httpd.conf

找到 Options Indexes FollowSymLinks, 将其注释掉并修改为:

Options None

保存并退出后,重启 Apache 服务器:

systemctl restart httpd

之后,刷新具有目录浏览问题的页面可以发现,已经无法进行目录浏览:

图 2

EOF

1998 年研究生入学考试数学二填空题第 1 题解析(三种方法)

一、题目

$\lim_{x \to 0}$ $\frac{\sqrt{1+x}+\sqrt{1-x}-2}{x^{2}}$ $=$

解法一

使用四则运算将原式化简,之后使用等价无穷小替换求出结果。

$\lim_{x \to 0}$ $\frac{\sqrt{1+x}+\sqrt{1-x}-2}{x^{2}}$ $=$ $\lim_{x \to 0}$ $\frac{(\sqrt{1+x}+\sqrt{1-x}-2)(\sqrt{1+x}+\sqrt{1-x}+2)}{x^{2}(\sqrt{1+x}+\sqrt{1-x}+2)}$ $=$ $\lim_{x \to 0}$ $\frac{(\sqrt{1+x}+\sqrt{1-x})^{2}-4}{x^{2}(\sqrt{1+x}+\sqrt{1-x}+2)}$ $=$ $\lim_{x \to 0}$ $\frac{1+x+1-x+2\sqrt{1+x}\sqrt{1-x}-4}{x^{2}(\sqrt{1+x}+\sqrt{1-x}+2)}$ $=$ $\lim_{x \to 0}$ $\frac{2\sqrt{1+x}\sqrt{1-x}-2}{x^{2}(\sqrt{1+x}+\sqrt{1-x}+2)}$

由于当 $x$ $\rightarrow$ $0$ 时,$(\sqrt{1+x}$ $+$ $\sqrt{1-x})$ $\rightarrow$ $2$, 因此有:

$\lim_{x \to 0}$ $\frac{2\sqrt{1+x}\sqrt{1-x}-2}{4x^{2}}$ $=$ $\lim_{x \to 0}$ $\frac{2(\sqrt{1-x^{2}}-1)}{4x^{2}}$ $=$ $\lim_{x \to 0}$ $\frac{\sqrt{1-x^{2}}-1}{2x^{2}}$

根据等价无穷小的如下替换原则:

$(1+x)^{\mu }$ $-$ $1$ $\backsim$ $\mu$ $x$

详细内容可以参考荒原之梦网(zhaokaifeng.com)的这篇文章:高等数学中常用的等价无穷小

可知:

$\sqrt{1-x^{2}}$ $-$ $1$ $\backsim$ $-$ $\frac{1}{2}x^{2}$, 因此有:

$\lim_{x \to 0}$ $\frac{-\frac{1}{2}x^{2}}{2x^{2}}$ $=$ $-$ $\frac{1}{4}$

解法二

观察题目中的式子可以发现,当 $x$ $\rightarrow$ $0$ 时,满足以下条件:

(1) $\sqrt{1+x}$ $+$ $\sqrt{1-x}$ $-$ $2$ $\rightarrow$ $0$

(2) $x^{2}$ $\rightarrow$ $0$ 且 $x^{2}$ $\neq$ $0$

(3) $y$ $=$ $\sqrt{1+x}$ $+$ $\sqrt{1-x}$ $-$ $2$ 和 $y$ $=$ $x^{2}$ 在 $0$

附近两者都可导(在 $0$ 附近,导数存在且连续,故可导)。

综上可知,此处可以使用 $\frac{0}{0}$ 型的洛必达法则,即可以对分子和分母分别求导后再求极限来确定未定式的值。

求导过程如下:

原式 $=$ $\lim_{x \to 0}$ $\frac{\frac{1}{2\sqrt{1+x}} – \frac{1}{2 \sqrt{1-x}}}{2x}$ $=$ $\lim_{x \to 0}$ $\frac{\frac{1}{\sqrt{1+x}} – \frac{1}{\sqrt{1-x}}}{4x}$ $=$ $\lim_{x \to 0}$ $\frac{\sqrt{1-x}-\sqrt{1+x}}{4x(\sqrt{1+x} \times \sqrt{1-x})}$ $=$ $\lim_{x \to 0}$ $\frac{\sqrt{1-x} – \sqrt{1+x}}{4x \sqrt{1-x^{2}}}$

因为,当 $x$ $\rightarrow$ $0$ 时,$\sqrt{1-x^{2}}$ $\rightarrow$ $1$, 所以有:

$\lim_{x \to 0}$ $\frac{\sqrt{1-x}-\sqrt{1+x}}{4x}$

上面的计算过程依次是“求导 / 化简 / 化简 / 化简 / 化简”。下面开始正式使用 $\frac{0}{0}$ 型的洛必达法则进行计算:

$\overset{\frac{0}{0}}{\rightarrow}$ $\lim_{x \to 0}$ $=$ $-$ $\frac{\frac{1}{2\sqrt{1-x}} – \frac{1}{2\sqrt{1+x}}}{4}$

经过上面的求导,我们发现,当 $x$ $\rightarrow$ $0$ 时,$-$ $\frac{1}{2\sqrt{1-x}}$ $\rightarrow$ $-$ $\frac{1}{2}$, $-$ $\frac{1}{2\sqrt{1+x}}$ $\rightarrow$ $0$, 因此有:

原式 $=$ $\frac{-\frac{1}{2} – \frac{1}{2}}{4}$ $=$ $\frac{-(\frac{1}{2}+\frac{1}{2})}{4}$ $=$ $-$ $\frac{1}{4}$

在使用洛必达法则解决该问题的时候,进行了两次求导。其实,只要满足以下三个条件,则在使用洛必达法则的过程中可以进行任意次求导,但需要注意的是,每一次求导之前必须确保式子仍然满足如下三个条件,否则不能使用洛必达法则:

设:$y$ $=$ $\frac{f(x)}{g(x)}$, 则需满足:

(01) $x$ $\rightarrow$ $x_{0}$ 或 $x$ $\rightarrow$ $\infty$ 时,$f(x)$ 和 $g(x)$ 均趋于 $0$ 或者趋于 $\infty$;

(02) $f(x)$ 和 $g(x)$ 在 $x_{0}$ 的去心邻域可导且 ${g}'(x)$ $\neq$ $0$;

(03) $\frac{{f}'(x)}{{g}'(x)}$ 的极限存在或者为无穷大。

总结来说,洛必达法则的使用方法如下:

$\lim_{x \to x_{0}}$ $\frac{f(x)}{g(x)}$ $=$ $\lim_{x \to x_{0}}$ $\frac{{f}'(x)}{{g}'(x)}$

解法三

观察题目中的式子我们发现,可以使用麦克劳林展开式的 $(1+x)^{m}$ 的形式和皮亚诺余项对该题目进行计算,公式如下:

$(1+x)^{m}$ $=$ $1$ $+$ $mx$ $+$ $\frac{m(m-1)}{2!}$ $x^{2}$ $+$ $o(x^{2})$

代入公式可得:

$\sqrt{1+x}$ $=$ $(1+x)^{\frac{1}{2}}$ $=$ $1$ $+$ $\frac{1}{2}$ $x$ $+$ $\frac{\frac{1}{2} \times (\frac{1}{2}-1)}{2!}$ $x^{2}$ $+$ $o(x^{2}$ $)$ $=$ $1$ $+$ $\frac{1}{2}$ $x$ $-$ $\frac{1}{8}$ $x^{2}$ $+$ $o(x^{2})$

$\sqrt{1-x}$ $=$ $(1-x)^{\frac{1}{2}}$ $=$ $1$ $-$ $\frac{1}{2}$ $x$ $+$ $\frac{\frac{1}{2} \times (\frac{1}{2}-1)}{2!}$ $x^{2}$ $+$ $o(x^{2})$ $=$ $1$ $-$ $\frac{1}{2}$ $x$ $-$ $\frac{1}{8}$ $x^{2}$ $+$ $o(x^{2})$

于是有:

原式 $=$ $\lim_{x \to 0}$ $\frac{1+\frac{1}{2} x – \frac{1}{8} x^{2} + 1 – \frac{1}{2} x – \frac{1}{8} x^{2} + o(x^{2})-2}{x^{2}}$ $=$ $\lim_{x \to 0}$ $\frac{-\frac{1}{4} x^{2} + o(x^{2})}{x^{2}}$ $=$ $\lim_{x \to 0}$ $-$ $\frac{1}{4}$ $+$ $\frac{0(x^{2})}{x^{2}}$ $=$ $-$ $\frac{1}{4}$.

EOF

ZhaoKaiFeng.com 两岁啦 :-)

两年前的今天晚上,我使用我人生中第一台电脑——“联想 B40-80 / i3-4030U / 4 GB DDR3 / 500 GB HDD”在阿里云上注册了我拥有的第一个顶级域名:

zhaokaifeng.com

当时没有买服务器,所以当天 zhaokaifeng.com 并没有上线。

两年时间里,我在这里记录着我学习到的点点滴滴,至今,在 zhaokaifeng.com 上发布的文章共有 292 篇,涉及计算机,数学,文学和资讯等多个方面的内容。写作和分享本身就已经是一种莫大的享受,能在互联网的世界里闪烁哪怕一点点的光亮就已经是对我极大的鼓舞。

两年来,在网站运行的过程中,荒原之梦经历过两次彻底的重装服务器,一次是因为内存总是占满导致网站经常宕机,另一次发生在今年,原因是我在备份网站文件的时候用错了参数,导致网站文件出现错乱,网站无法正常访问,不过,即便会遇到一个又一个险阻困境,但荒原之梦始终还在。虽然荒原之梦是一个很小的网站,但是我一直在尽可能保证网站始终在线。

两年来,荒原之梦使用的一直是阿里云提供的学生优惠云服务器,目前一个月的费用是 9.79 元人民币(根据阿里云方面的数据,该配置的服务器原价目前是 120 元人民币一个月)配置是 1 核 CPU, 2 GB 内存和 40 GB 存储。用了这么久优惠的服务器,没什么能感谢的,只能在这里说一声真挚的“谢谢!”,感谢阿里云提供的学生优惠服务器。当然,这里也不是故意给阿里云打广告的,腾讯云和美团云的学生优惠服务器我也用过或者正在使用,只是没有用在跑荒原之梦这个网站上面。不得不说,国内这几家云服务商确实对学生用户很友好。

未来,我会继续努力耕耘在这个小网站上,分享我的所学所想,所知所感。同时,感谢正在阅读这篇文章的您,每一位来访本站的客人都会给我继续前进的动力,谢谢您!

错题总结:明确求导过程中的自变量很关键

一、例题:对下面的函数求导

$f(x)$ $=$ $\sqrt{1+x}$ $+$ $\sqrt{1-x}$ $-$ $2$

二、错误的求导过程

${f}'(x)$ $=$ ${(\sqrt{1 + x})}’$ $+$ ${(\sqrt{1 – x})}’$ $+$ ${2}’$ $=$ ${((1 + x)^{\frac{1}{2}})}’$ $+$ ${((1 – x)^{\frac{1}{2}})}’$ $=$ $\frac{1}{2}$ $\frac{1}{\sqrt{1+x}}$ $+$ $\frac{1}{2}$ $\frac{1}{\sqrt{1-x}}$ $=$ $\frac{1}{2 \sqrt{1+x}}$ $+$ $\frac{1}{2 \sqrt{1-x}}$

上面这个计算过程是错的,错误的原因是在计算 $\sqrt{1+x}$ 的导数时把 $1+x$ 视作了自变量,也就是说把 $1$ $+$ $x$ 视作了求导对象;而在对 $\sqrt{1-x}$ 求导时,又把 $1$ $-$ $x$ 看作了求导自变量。

很显然,一个二维函数中不可能有两个不同的自变量,而且根据约定可知,当式子中出现 $f(x)$ 或者 $lim_{x \to 0}$ 时,就表明这个式子中的自变量是 $x$ 且求导也要对 $x$ 求导。

三、正确的求导过程

这里我们可以使用复合函数求导的链式法则计算本例题,复合函数的链式求导法则如下:

设 $y$ $=$ $f(u)$, $u$ $=$ $\mu(x)$, 如果 $\mu(x)$ 在 $x$ 处可导,$f(x)$ 在对应点 $u$ 处可导,则复合函数 $y$ $=$ $f[\mu(x)]$ 在 $x$ 处可导,且有:

$\frac{dy}{dx}$ $=$ $\frac{dy}{du}$ $\frac{du}{dx}$ $=$ ${f}'[\mu(x)]{\mu}'(x)$

于是,对于例题的正确求导过程如下:

${f}'(x)$ $=$ ${(\sqrt{1 + x})}’$ $+$ ${(\sqrt{1 – x})}’$ $+$ ${2}’$ $=$ ${((1 + x)^{\frac{1}{2}})}’$ $+$ ${((1 – x)^{\frac{1}{2}})}’$ $=$ $\frac{1}{2}(1 + x)^{-\frac{1}{2}}$ $+$ $\frac{1}{2}$ $(1 – x)^{-\frac{1}{2}}$ $=$ $\frac{1}{2}$ $(1 + x)^{-\frac{1}{2}} \times {(x)}’$ $+$ $\frac{1}{2}$ $(1 – x)^{-\frac{1}{2}} \times {(-x)}’$ $=$ $\frac{1}{2\sqrt{1+x}} – \frac{1}{2 \sqrt{1-x}}$

高等数学 | 等价无穷小公式合辑:常用的不常用的都在这哦~

基本的等价无穷小

当 $x\rightarrow0$ 时:
$\tan x$ $\backsim$ $x$
$\sin x$ $\backsim$ $x$
$\arcsin x$ $\backsim$ $x$
$\arctan x$ $\backsim$ $x$
$\ln(1+x)$ $\backsim$ $x$
$e^{x} -1$ $\backsim$ $x$
$1-\cos x$ $\backsim$ $\frac{1}{2}x^{2}$
$x – \ln(1 + x)$ $\backsim$ $\frac{1}{2}x^{2}$
$\tan x – \sin x$ $\backsim$ $\frac{1}{2}x^{3}$
$\arcsin x – \arctan x$ $\backsim$ $\frac{1}{2}x^{3}$
$\tan x – x$ $\backsim$ $\frac{1}{3}x^{3}$
$x – \arctan x$ $\backsim$ $\frac{1}{3}x^{3}$
$x – \sin x$ $\backsim$ $\frac{1}{6}x^{3}$
$(1+x)^{a}-1$ $\backsim$ $ax$
$a^{x}-1$ $\backsim$ $\ln a\times x$

补充的等价无穷小

(01) 当 $\beta(x)$ $\rightarrow$ $0$ 且 $\beta(x) \cdot \alpha(x)$ $\rightarrow$ $0$ 时:
$[1 + \beta(x)]^{\alpha(x)} – 1$ $\sim$ $\alpha(x) \beta(x)$

(02) 当 $x \rightarrow 0^{+}$ 时:
$x$ $\sim$ $\frac{\pi}{2} – \arctan \left(\frac{1}{x}\right)$

(03) 当 $x \rightarrow 0^{-}$ 时:
$x$ $\sim$ $-\frac{\pi}{2} – \arctan \left(\frac{1}{x}\right)$

Tips:

  1. 在上面的等价无穷小公式中,表示常数的符号 $a$ 也可以是一个极限为常数的式子。
    例如 $(1+x)^{a}-1$ $\backsim$ $ax$ 这个极限公式中的 $a$ 既可以是一个常数,也可以是一个极限为常数的式子——也就是说,表示 $a$ 的这个式子的极限必须存在。
  2. 当 $x$ 不是趋于零而是趋于某个常数的时候也可以借助上面的等价无穷小公式解题,可以参考《只有当 x 趋于零的时候才能用等价无穷小代换吗?不,x 趋于 1 的时候也可以试试看》。

依次点击下方按钮,深入学习高等数学中的常用等价无穷小:

freeCodeCamp将文章从Medium迁移到独立网站freeCodeCamp News

freeCodeCamp 是一个帮助人们免费学习代码的平台,用户可以在该平台上免费观看视频,阅读文章,参与互动课程,这些都是免费且公开的。而且,freeCodeCamp 上还有遍布全世界的学习群组可以加入。

freeCodeCamp 没有广告,也没有付费模式,主要收入应该是来自用户捐赠。

图片
图 1. 截图来自 www.freecodecamp.org 首页

freeCodeCamp 从 2015 年开始在 Medium 上面发布文章,并且至今已累计发布约 5000 篇文章。但是随着 Medium 转移到付费模式并且开始重点推荐付费文章,这使得 freeCodeCamp 在 Medium 上的免费文章的流量来源不再主要是 Medium 自身,而是 Google 和社交媒体。

由于 freeCodeCamp 不想把文章设置为付费文章,因此 freeCodeCamp 决定搭建自己的网站,并为此发布了一篇说明文章:

We just moved off of Medium and onto freeCodeCamp News. Here’s how you can use it

根据介绍,freeCodeCamp 应该是使用 Ghost 搭建的新平台 (open source Ghost blogging platform), 在过去的一年里,freeCodeCamp 也把文章都迁移到了新平台。

freeCodeCamp 的网站应该还在不断完善中,目前打开”https://www.freecodecamp.rocks/“显示的是下面这个界面:

图片
图 2. 截图来自 www.freecodecamp.rocks 首页

不过”https://www.freecodecamp.org/“是可以正常使用的:

图片
图 3. 截图来自 www.freecodecamp.org 首页

排序算法-冒泡排序算法分析与基于C/C++的编程实现(递归实现&非递归实现&改进的冒泡排序)

冒泡排序算法的排序过程

以下排序过程按照大数位于小数右边的规则展开说明,按照大数位于小数左边的规则进行的冒泡排序与此过程类似

  1. 首先进行第 1 次遍历,选取整个队列 (队列长度为 N) 的第 1 个数字 (记为 a),和紧邻 a 后的数字 (记为 b) 比较大小,如果 a 大于 b, 则交换 a 与 b 的位置,此后,a 继续和紧邻 a 后的数字 c 比较;如果 a 小于 b, 则丢下 a, 拿起 b, 并和紧邻 b 后的后的数字比较大小。经过这一轮比较,当比较到整个队列结束时,一共进行了 N-1 次比较,此时,整个队列中最大的数字排在了整个队列的最后;
  2. 现在进行第 2 次遍历,此时只需要遍历除了第 1 次遍历后得到的数列的最后一个数之外的 N-1 个数字,即需要比较 N-2 次,得到整个数列第 2 大的数字排在上一轮排序得到的最大的数字的左边;
  3. 依照前面两步所示的规则继续进行第 3, 4, 5, …, N-1 轮循环就完成了整个排序过程。

以数列 [3,2,5,1,2] 为例,冒泡排序的过程如下:

第 1 轮第 1 次比较:[2,3,5,1,2];
第 1 轮第 2 次比较:[2,3,5,1,2];
第 1 轮第 3 次比较:[2,3,1,5,2];
第 1 轮结束:[3,2,1,2,5];
第 2 轮结束:[2,1,2,3,5];
第 3 轮结束:[1,2,2,3,5];
第 4 轮结束:[1,2,2,3,5].

下面这个动图很好的演示了冒泡排序的整个过程:
该动图使用 VisuAlgo 制作,来自:https://visualgo.net/

图 1. 由 https://visualgo.net/en/sorting 生成的冒泡排序过程

C++ 实现的冒泡排序算法

递归实现

#include <iostream>
using namespace std;

int * mp(int a[], int start, int end){
    if(start<end){
/*
使用start和end这两个变量定义递归的边界条件,
start表示数组的起始位置,end表示数组的结束
位置,每次循环结束时,end都会减1,因此当start
不再小于end的时候,就代表整个数组都被遍历了,
即递归操作完成。
*/
        int temp = 0;
        for(int i = 0; i <= 8; i++){
            if(a[i]>a[i+1]){
                temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
            }
        }
    end --;
    mp(a,start,end);
    }
    return a;
}

int main(){
    int start = 0;
    int end = 9;
    int a[10] = {7,6,2,1,5,6,4,0,8,5};
    int *p;
    p = mp(a,start,end);

    for(int j = 0; j <=8; j++){
        cout << *(p+j) << " ";
    }
    return 0;
}

运行后输出的结果:

0 1 2 4 5 5 6 6 7
Process returned 0 (0x0)   execution time : 0.085 s
Press any key to continue.

非递归实现

双层 for 循环实现的冒泡排序(无改进)

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main(){
    int nums[10]={7,6,2,1,5,6,4,0,8,5};
    int temp=0;
    for(int i=0;i<=8;i++){
/*有10个数字的队列首次遍历需要比较9次,之后,
每次遍历需要比较的数字的个数都比上一次少1个。
这层循环用于确定需要遍历的队列的长度。*/
        for(int j=0;j<8-i;j++){
/*从队列第 1 个数字开始,比较到不需要比较的最后
一个数字为止,这层循环用于确定需要比较的具体的
数字。*/
            if(nums[j]>nums[j+1]){
/*如果前一个数大于后一个数,则交换两个数的位置,
把大的数字放到后面。*/
                temp = nums[j+1];
                nums[j+1]= nums[j];
                nums[j] = temp;
            }
        }
    }
    for(int z=0;z<=8;z++){
        cout<<nums[z]<<" ";
    }
    return 0;
}

上面这个程序的时间复杂度为:O(n^2^), 空间复杂度为:O(1).

双层 for 循环实现的冒泡排序(使用位置交换标志位进行改进)

我们首先对上面“双层 for 循环实现的冒泡排序(无改进)”中给出的程序做一些改变,使其能打印出每一轮排序的结果,程序如下:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main(){
    int nums[10]={7,6,2,1,5,6,4,0,8,5};
    int temp=0;
    for(int i=0;i<=8;i++){
        for(int j=0;j<8-i;j++){
            if(nums[j]>nums[j+1]){
                temp = nums[j+1];
                nums[j+1]= nums[j];
                nums[j] = temp;
            }
        }
        cout<<i<<"#:"<<" ";
        for(int z=0;z<=8;z++){
        cout<<nums[z]<<" ";
    }
    cout<<endl;
    }
    return 0;
}

运行上面的程序后可以得到如下结果:

0#: 6 2 1 5 6 4 0 7 8
1#: 2 1 5 6 4 0 6 7 8
2#: 1 2 5 4 0 6 6 7 8
3#: 1 2 4 0 5 6 6 7 8
4#: 1 2 0 4 5 6 6 7 8
5#: 1 0 2 4 5 6 6 7 8
6#: 0 1 2 4 5 6 6 7 8
7#: 0 1 2 4 5 6 6 7 8
8#: 0 1 2 4 5 6 6 7 8

Process returned 0 (0x0)   execution time : 0.267 s
Press any key to continue.

通过上面的运行结果可以看出第 6 轮循环结束时排序其实已经完成,之后的 7, 8 轮排序得出的结果和第 6 轮排序得出的结果完全一致。我们可以通过在程序中添加“位置交换标志位”来避免无用的排序,即一旦发现某一轮循环结束之后没有任何一个元素的位置发生了改变,就认为此时排序已经完成,不需要进行接下来的排序。
使用“位置交换标志位”改进后的程序如下:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main(){
    int nums[10]={7,6,2,1,5,6,4,0,8,5};
    int temp=0;
    bool SwapFlag = true;
/*
定义位置交换标志变量
当发生位置交换时置为 true
未发生位置交换时置为 false
*/
    for(int i=0;i<=8&&SwapFlag==true;i++){
            SwapFlag=false;
/*
每开始一轮排序时都将标志位复位
(初始默认本轮不会出现交换)
*/
        for(int j=0;j<8-i;j++){
            if(nums[j]>nums[j+1]){
                SwapFlag=true;
/*
只要在一轮排序中发生了一次交换
则标志位置为 true
*/
                temp = nums[j+1];
                nums[j+1]= nums[j];
                nums[j] = temp;
            }
        }
        cout<<i<<"#:"<<" ";
        for(int z=0;z<=8;z++){
        cout<<nums[z]<<" ";
    }
    cout<<endl;
    }
    return 0;
}

输出结果如下:

0#: 6 2 1 5 6 4 0 7 8
1#: 2 1 5 6 4 0 6 7 8
2#: 1 2 5 4 0 6 6 7 8
3#: 1 2 4 0 5 6 6 7 8
4#: 1 2 0 4 5 6 6 7 8
5#: 1 0 2 4 5 6 6 7 8
6#: 0 1 2 4 5 6 6 7 8
7#: 0 1 2 4 5 6 6 7 8

Process returned 0 (0x0)   execution time : 1.070 s
Press any key to continue.

可以看到,经过改进之后,在使用相同的源代码逻辑和同一组数据的情况下,排序次数减少了 1 次。


更改记录:

  1. 2019 年 05 月 29 日 17 时 17 分,在“冒泡排序算法的排序过程”中新增了一张演示冒泡排序的动图(图 1)并添加了有关说明。

EOF

在C++函数中返回多个数值的三种方法

预备知识

指针函数

C++ 中指针函数的基本形式:

函数类型 * 函数名 (参数数据类型 参数1, 参数数据类型 参数 2,...){
    执行体 1;
    执行体 2;
    ...
}

例如下面这个函数就是一个指针函数:

int * a(int b[], int c){
    cout<<"Hello";
    return b;
}

指针函数的返回值是一个指针,在 main() 函数中调用该指针函数的时候,可以使用一个同类型的指针来接收。指针函数的作用之一就是解决一个函数中存在多个返回值的时候,如何返回这多个数值的问题。

静态变量

C++ 中的变量,大致可以分为(该分类不严格,仅供参考)“全局变量”、“局部变量”、“静态变量”、“全局静态变量(或称“静态全局变量”)”、“局部静态变量(或称“静态局部变量”)”和指针变量等。局部变量是存放在内存的堆区的,一旦一个函数执行完毕,则编译器就会自动释放这部分内存,该局部变量也随之消失。全局变量和静态变量都是存放在数据区(也称“全局区”或者“静态区”)的,该区域的内容可以被全局共享,在整个程序结束时,由系统自动释放。

指针变量用来存放指针,而指针就是一块内存的地址,因此,指针变量存放的就是一个内存地址。指针变量也是一个变量,是变量就需要使用内存空间存放,需要使用内存空间就需要分配内存并获取内存地址,因此,指针变量本身也是有内存地址的,存放指针变量的内存地址又指向了它存放的内存地址。指针变量的定义形式一般如下:

基类型 *指针变量名称;

在函数中定义的变量都是局部变量(在一个程序的所有函数之外定义的变量称为“全局变量”),但是我们要返回这个变量供其他函数(例如 main() 函数)使用,这个时候就需要使用“局部静态变量”来达到这个目的。

局部静态变量的定义方法就是在定义的局部变量之前加上 static 关键字。

具体实现方法

C++ 中不允许把一个数组或者多个数值作为一个整体返回,也就是说,对于 C++ 中的任何一个函数, 其返回值只能是 0 个或者 1 个单独的数字,不能是一个数组或者多个数字。不过,我们可以结合使用指针和数组(由于数组在内存中是使用一块连续的区域存储的,因此,只要知道了一个数组中第一个元素的地址并且知道了这个数组的长度,那么就可以找到和处理整个数组)来达到返回多个数值的目的。

概括地说,至少有以下三种方法:

方法一

返回一个指针指向数组中第一个元素的地址,在已知数组中第一个元素的地址和数组长度的情况下,可以唯一确定一个数组。

示例程序如下:

#include <iostream>
using namespace std;

/*
定义一个返回指针的函数用于返回数组
*/
int * ReturnMyArr(){
    static int MyArr[5] = {0,1,2,3,4};
/*
C++ 不支持在函数外面返回局部变量的地址
因此,这里定义为 static 变量
*/

    return MyArr;
}

int main(){
    int *p;
/*
定义一个整数型指针
*/

    p = ReturnMyArr();
/*
将数组的第一个元素值在内存中
的地址赋值给指针变量p
*/

/*
通过指针p打印数组
*/
    for(int i = 0; i < 5; i++){
        cout << *(p+i) << " ";
    }
}

方法二

方法二其实没有返回数组,自然也没有涉及 return, 但是方法二同样可以对数组进行处理,并使 main() 函数获取到处理后得到的新数组。

方法二的主要原理就是把待处理的数组的第一个元素的地址作为参数传入用于处理该数组的函数,被处理后的数组写入到了内存中,main() 函数从内存中读取经过处理后的数组,这样就达到了返回多个数值的效果。

示例程序如下:

#include <iostream>
using namespace std;

/*
把指针变量作为形式参数输入函数
该指针指向的是数组 a[] 中第一
个元素的地址
函数 ReturnMyArr() 的作用是对数
组 a[] 进行操作,操作的结果就写
入到了内存中,可以被 main() 函数
使用,不需要有返回值,因此使
用 void
*/
void ReturnMyArr(int *p){

/*
使用指针逐个指向数组 a[] 的每一
个元素,将她们都赋值为 0
*/
    for(int j=0; j<3; j++){
        *(p + j) = 0;
    }
}

int main(){
    int i = 0;
    int a[3] = {1,2,3};

/*
将数组 a[] 以实参的形式传入函数
ReturnMyArr()
*/
    ReturnMyArr(a);

/*
循环打印
*/
    while(i < 3){
        cout << a[i] << " ";
        i++;
    }
}

运行结果如下:

0 0 0
Process returned 0 (0x0)   execution time : 0.232 s
Press any key to continue.

方法三

这里也可以不借助局部静态变量和指针实现对数组的返回。我们可以把变量定义在 main() 函数中,之后将这些变量作为参数传入指针函数。由于这些变量是定义在 main() 函数中的,因此只要 main() 函数没有结束,即使指针函数结束了,这些参数也不会由于内存回收而被销毁。

示例程序如下:

#include <iostream>
using namespace std;

int * ReturnMyArr(int a[]){
    for(int i = 0; i < 3; i++){
        a[i] = 0;
    }
/*
对数组 a[] 重新赋值
*/

    return a;
}

int main(){
    int a[3] = {1,2,3};
    int *p;
    p = ReturnMyArr(a);

    for(int i = 0; i <= 2; i++){
        cout << *(p+i) << " ";
    }

    return 0;
}

运行结果如下:

0 0 0
Process returned 0 (0x0)   execution time : 0.207 s
Press any key to continue.

如果我们不想改变数组 a[] 的数值,也可以新增一个数组 b[] 用于保存数组 a[] 经过指针函数计算后的结果。

示例程序如下:

#include <iostream>
using namespace std;

int * ReturnMyArr(int a[], int b[]){
    for(int i=0; i <= 2; i++){
        b[i] = a[i];
    }
    return b;
}

int main(){
    int a[3] = {1,2,3};
    int b[3];
    int *p;
    p = ReturnMyArr(a,b);

    for(int i = 0; i <= 2; i++){
        cout << *(p+i) << " ";
    }
    return 0;
}

运行结果如下:

1 2 3
Process returned 0 (0x0)   execution time : 0.194 s
Press any key to continue.

译文:你在为今年夏天寻找读物吗?试试这五本书之一吧

声明

原文标题:Looking for a summer read? Try one of these 5 books
原文地址:https://www.gatesnotes.com/About-Bill-Gates/Summer-Books-2019
原文作者:Bill Gates
原文发布日期: May 20, 2019
原文发布平台:Gates Notes (盖茨笔记)

  1. 本文只是对原文文字内容的翻译,本文所进行的由英文到中文的翻译所得的译文仅供参考,一切内容与含义均以原文为准;
  2. 翻译本文的目的是为了传播信息,促进英文世界和中文世界的交流。本文已对原文标题,地址和作者等信息做出了明确和显著的标注;
  3. 如果本文对原文作者或者对原文的发布平台造成了侵犯,请本文著作权所有者或者代理方联系本站,本站将在收到相关信息并确认其真实性之后,立即删除本文并诚挚道歉;
  4. 在此,对本文原作者致以真挚的感谢,谢谢您奉献的这篇文章。

译文

当我准备开始一段假期的时候,我总是喜欢挑选一些书带着。通常情况下,我总是会带着比我一次旅行中能够阅读的书多一些的书。我的理念就是,我宁愿在旅途中有更多的书读,而不是更少。

如果你像我一样,你可能已经开始思考你在今年的夏天要阅读哪些书——我觉得下面这些书非常值得推荐。

下面这些书都不是人们通常认为的轻阅读的读物。除了其中一个之外,这些书都在讨论关于破坏的话题,但是,我不是说技术人员通常所说的“破坏”。我发现我最近被吸引到了关于动荡话题的书中(这甚至是其中的一个书名)——无论是布尔什维克革命之后的苏联,战争期间的美国,或者是我们经济系统的全球洗牌。

如果你正在寻找一个更典型的夏季书籍,我推荐 Graeme Simsion 的《The Rosie Result》。(如果你还没读过 Rosie 三部曲的前两本,那么暑假是一个很好的开始时间!)我也无法抗拒 Melinda 的新书《The Moment of Lift》。我知道我有偏见,但是,这本书是我这些年来读过的最好的一本书。

下面是我整个夏天的阅读清单:

《Upheaval》,作者是 Jared Diamond. 我是 Jared 所有作品的大粉丝,对于他的最新作品也不例外。这本书探讨了社会在危机时刻的反应。他使用一系列引人入胜的案例研究展示了各个国家如何管理内战,国外威胁和不和谐(此处原文为:general malaise)等挑战。这些问题听起来有些沉闷,但是,在我读完这本书之后,比起我刚开始读的时候,我对我们解决这些问题的能力更加乐观了。

《Nine Pints》,作者是 Rose George. 如果你晕血的话,这本书可能不适合你。但是,如果你像我一样发现它很有趣,你将会享受这本由一位英国记者撰写的书,这本书和这个主题有着特殊的个人联系。我很喜欢对一个具体的话题进行深入探讨的书,所以《Nine Pints》(这本书的题目是指成年人血液量的平均体积)这本书正是我的最爱。书中有许多超级有趣的事实,会让你对血液有一个新的认识。

《A Gentleman in Moscow》,作者是 Amor Towles. 我认识的每个人似乎都读过这本书,在我的姐夫给我寄了一本之后,我也加入了这个行列,并且,我很高兴我这么做了。Towles 的小说讲述了一个被判有罪的人被软禁在莫斯科一家旅馆的故事,故事非常有趣,聪明,而且出奇地乐观。即使你对阅读俄罗斯文学不像我一样感兴趣(我几乎阅读了陀思妥耶夫斯基的每一本书),《A Gentleman in Moscow》仍然是一本每个人都可以享受其中的美妙的书。

《Presidents of War》,作者是 Michael Beschloss. 我决定阅读这本书的主要原因是我对越南战争的各个方面都很感兴趣。当我读完这本书的时候,我不仅学到了很多关于越南的东西,而且了解了在19世纪初到20世纪70年代之间的其他八个和美国有关的重要冲突。Beschloss 作品的广阔范围可以让你从总统的领导中学习到跨学科的课程。

《The Future of Capitalism》,作者是 Paul Collier. Collier 的最新作品关注的是一个对现在的很多人来说都很重要的,发人深省的话题。尽管我不会对他的观点完全认同——我认为他对问题的分析比他提出的解决建议要好一些——他作为经济学家的背景给了他聪明地看出资本主义将走向何方的能力。

Copyright The Gates Notes, LLC.

解决OBS Studio录制的视频为黑屏的问题

操作环境

操作系统:Windows 10 64 位 中文家庭版
CPU 集成显卡型号:Intel(R) UHD Graphics 620
独立显卡型号:NVIDIA GeForce MX150
OBS Studio 版本:23.1.0 (64 bit)

问题描述

我在 OBS Studio 的官网上下载安装了 OBS Studio, 但是,安装完成之后,在“来源”中添加“显示器捕获”之后预览框和录制得到的视频都是黑屏,如图 1:

图 1

解决过程

安装包是从官网下载的,安装过程没有报错,启动过程也没有报错,但是却捕捉不到显示器中的图像。首先考虑的是软件兼容性的问题,但是在我将兼容性设置成 “Windows 7″并且赋予 OBS Studio 管理员权限之后,录制得到的图像仍然是黑屏。这说明该问题的产生不是由于兼容性或者权限问题导致的,因此,随后我又将兼容性和权限恢复到了默认的状态。另一个需要考虑的问题就是显卡了。我的这台电脑有两个显卡,一个是英特尔 CPU 上的集成显卡,另一个是英伟达的独立显卡。根据我查找到的数据,OBS Studio 只能捕捉到和自己使用相同显卡的窗口或者程序。由于我是想要录制桌面的视频,因此,我在 Windows 10 的“任务管理器”中查看了“桌面窗口管理器(dwm.exe)”所使用的显卡是哪一个,结果发现,桌面窗口管理器使用的集成显卡,如图 2:

图 2

根据上面的分析可以知道,只需要把 OBS Studio 使用的显卡设置成集成显卡应该就可以完成对屏幕的录制。首先打开“NVIDIA 设置”,依次打开“管理 3D 设置 / 程序设置”,之后使用“添加”按钮找到 OBS Studio 并添加,这时我发现,我这台电脑上的 OBS Studio 此时使用的是“高性能 NVIDIA 处理器”,如图 3:

图 3

把 OBS Studio 使用的处理器更换成集成显卡,如图 4:

图 4

之后重新打开 OBS Studio, 这时就可以录制桌面视频了,如图 5:

图 5

华为海思:滔天巨浪方显英雄本色,艰难困苦铸造诺亚方舟

美国当地时间 2019 年 05 月 15 日,美国商务部宣布将华为列入管制“实体名单”,如图 1:

图 1 截图来自美国商务部官网, https://www.commerce.gov/news/press-releases/2019/05/department-commerce-announces-addition-huawei-technologies-co-ltd

根据白宫官网的消息,为了确保信息和通信技术与服务供应链的安全,美国总统 DONALD J. TRUMP 于美国当地时间 2019 年 05 月 15 日致信美国国会,宣布进入国家紧急状态,如图 2:

图 2 截图来自美国白宫官网, https://www.whitehouse.gov/briefings-statements/message-congress-securing-information-communications-technology-services-supply-chain/

华为海思 2019 年 5 月 17 日凌晨向全体员工致信,宣布公司将进入极限生存期,所有为了公司生存打造的“备胎”一夜转正,信件原文如下:

尊敬的海思全体同事们:
此刻,估计您已得知华为被列入美国商务部工业和安全局(BIS)的实体名单(entity list)。
多年前,还是云淡风轻的季节,公司做出了极限生存的假设,预计有一天,所有美国的先进芯片和技术将不可获得,而华为仍将持续为客户服务。为了这个以为永远不会发生的假设,数千海思儿女,走上了科技史上最为悲壮的长征,为公司的生存打造“备胎”。数千个日夜中,我们星夜兼程,艰苦前行。华为的产品领域是如此广阔,所用技术与器件是如此多元,面对数以千计的科技难题,我们无数次失败过,困惑过,但是从来没有放弃过。
后来的年头里,当我们逐步走出迷茫,看到希望,又难免一丝丝失落和不甘,担心许多芯片永远不会被启用,成为一直压在保密柜里面的备胎。
今天,命运的年轮转到这个极限而黑暗的时刻,超级大国毫不留情地中断全球合作的技术与产业体系,做出了最疯狂的决定,在毫无依据的条件下,把华为公司放入了实体名单。
今天,是历史的选择,所有我们曾经打造的备胎,一夜之间全部转“正”!多年心血,在一夜之间兑现为公司对于客户持续服务的承诺。是的,这些努力,已经连成一片,挽狂澜于既倒,确保了公司大部分产品的战略安全,大部分产品的连续供应!今天,这个至暗的日子,是每一位海思的平凡儿女成为时代英雄的日子!
华为立志,将数字世界带给每个人、每个家庭、每个组织,构建万物互联的智能世界,我们仍将如此。今后,为实现这一理想,我们不仅要保持开放创新,更要实现科技自立!今后的路,不会再有另一个十年来打造备胎然后再换胎了,缓冲区已经消失,每一个新产品一出生,将必须同步“科技自立”的方案。
前路更为艰辛,我们将以勇气、智慧和毅力,在极限施压下挺直脊梁,奋力前行!滔天巨浪方显英雄本色,艰难困苦铸造诺亚方舟。
何庭波
2019年5月17日凌晨

来自网络

2019 年 5 月 16 日,华为心声社区发布了《关于美国商务部宣布将华为加入“实体名单”的媒体声明》,该声明全文如下:

关于美国商务部宣布将华为加入“实体名单”的媒体声明

华为反对美国商务部工业与安全局(BIS)的决定。

这不符合任何一方的利益,会对与华为合作的美国公司造成巨大的经济损失,影响美国数以万计的就业岗位,也破坏了全球供应链的合作和互信。

华为将尽快就此事寻求救济和解决方案,采取积极措施,降低此事件的影响。

Media Statement Regarding the U.S. Department of Commerce Announces the Addition of Huawei to the Entity List

Huawei is against the decision made by the Bureau of Industry and Security (BIS) of the US Department of Commerce.

This decision is in no one’s interest. It will do significant economic harm to the American companies with which Huawei does business, affect tens of thousands of American jobs, and disrupt the current collaboration and mutual trust that exist on the global supply chain.

Huawei will seek remedies immediately and find a resolution to this matter. We will also proactively endeavor to mitigate the impacts of this incident.

来自华为心声社区

荒原之梦网全部内容均为原创,提供了涵盖考研数学基础知识、考研数学练习题、考研数学真题等方面,大量精心研发的学习资源。

豫ICP备17023611号-1 | 公网安备 - 荒原之梦 豫公网安备41142502000132号
Copyright©2017-2026 ZhaoKaifeng.com 版权所有 All Rights Reserved.

豫ICP备17023611号-1
  豫公网安备41142502000132号
Copyright©2026   ZhaoKaifeng.com   All Rights Reserved.

荒原之梦 自豪地采用WordPress