61. 旋转链表(JS实现)

61. 旋转链表(JS实现)

1 题目
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
示例 1:
输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL
示例 2:
输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL

2 思路
这道题比较简单,主要的思路就是找到旋转后的*个结点,我们可以在遍历的过程中添加反向指针prev形成双向指针来方便我们获取结点,注意当k等于或超过列表长度时,我们要进行取余操作

3代码
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @param {number} k
* @return {ListNode}
*/
var rotateRight = function(head, k) {
let len = 0;
let linkHead = head;

if (!head || k === 0) return head;

let prev = null;
while(head) {
len++;
head.prev = prev;
prev = head;
head = head.next;
}
let linkLast = prev;

k = k % len;

if (k === 0) return linkHead;

while(k > 1) {
prev = prev.prev;
k–;
}

linkLast.next = linkHead;
prev.prev.next = null;
return prev;

};

62. 不同路径(JS实现)

62. 不同路径(JS实现)

1 题目
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
示例 1:
输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1 向右 -> 向右 -> 向下
2 向右 -> 向下 -> 向右
3 向下 -> 向右 -> 向右
示例 2:
输入: m = 7, n = 3
输出: 28

2 思路
这道题就是一个普通的动态规划问题,状态转移方程d[i][j] = d[i-1][j] + d[i][j-1],还有一种更快的方法是数学的排列组合,直接在总步数m+n-2里面选取m-1步向右走的步数

3代码
/**
* @param {number} m
* @param {number} n
* @return {number}
*/
var uniquePaths = function(m, n) {
if (m === 1 || n === 1) return 1;
let d = [];

for (let i=0; i<m;i++) {
for (let j=0; j<n; j++) {
if (i === 0 || j === 0) {
if (!d[i]) d[i] = [];
d[i][j] = 1;
} else {
d[i][j] = d[i-1][j] + d[i][j-1];
}
}
}

return d[m-1][n-1];
};

ARM指令寻址模式,内存访问3种格式

ARM指令的三种寻址模式:
1)基址偏移

LDR R1,[R2,#-0x10]

2)基址偏移前变址

LDR R1,[R2,#-0x10]! // R1 =*(R2-0x10),R2=R2-0x10

3)基址偏移后变址

LDR R1,[R2],#-0x10 // R1 =*(R2),R2=R2-0x10;

A8.5 Memory accesses
Commonly, the following addressing modes are permitted for memory access instructions:
Offset addressing
The offset value is applied to an address obtained from the base register. The result is used as the
address for the memory access. The value of the base register is unchanged.
The assembly language syntax for this mode is:
[, ]
Pre-indexed addressing
The offset value is applied to an address obtained from the base register. The result is used as the
address for the memory access, and written back into the base register.
The assembly language syntax for this mode is:
[, ]!
Post-indexed addressing
The address obtained from the base register is used, unchanged, as the address for the memory
access. The offset value is applied to the address, and written back into the base register
The assembly language syntax for this mode is:
[],
In each case, is the base register. can be:
? an immediate constant, such as or
? an index register,
? a shifted index register, such as , LSL #.

See :ARM® Architecture Reference Manual
ARMv7-A and ARMv7-R edition

A8.8.60 LDMDB/LDMEA
Load Multiple Decrement Before (Load Multiple Empty Ascending) loads multiple registers from consecutive
memory locations using an address from a base register. The consecutive memory locations end just below this
address, and the address of the lowest of those locations can optionally be written back to the base register. The
registers loaded can include the PC, causing a branch to a loaded address.
Related system instructions are LDM (User registers) on page B9-1988 and LDM (exception return) on
page B9-1986.
n = UInt(Rn); registers = P:M:’0’:register_list; wback = (W == ‘1’);
if n == 15 || BitCount(registers) < 2 || (P == ‘1’ && M == ‘1’) then UNPREDICTABLE;
if registers<15> == ‘1’ && InITBlock() && !LastInITBlock() then UNPREDICTABLE;
if wback && registers == ‘1’ then UNPREDICTABLE;
For the case when cond is 0b1111, see Unconditional instructions on page A5-216.
n = UInt(Rn); registers = register_list; wback = (W == ‘1’);
if n == 15 || BitCount(registers) < 1 then UNPREDICTABLE;
if wback && registers == ‘1’ && ArchVersion() >= 7 then UNPREDICTABLE;
Encoding T1 ARMv6T2, ARMv7
LDMDB {!},
Encoding A1 ARMv4*, ARMv5T*, ARMv6*, ARMv7
LDMDB {!},
1 1 0 1 0 0 1 0 0 W 1 Rn P M (0) register_list
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1
1514131211 10 9 8 7 6 5 4 3 2 1 0
cond 1 0 0 1 0 0 W 1 Rn register_list
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
A8 Instruction Descriptions
A8.8 Alphabetical list of instructions
ARM DDI 0406C.c Copyright © 1996-1998, 2000, 2004-2012, 2014 ARM. All rights reserved. A8-403
ID051414 Non-Confidential
Assembler syntax
LDMDB{}{} {!},
where:
, See Standard assembler syntax fields on page A8-287.
The base register. The SP can be used.
! Causes the instruction to write a modified value back to . Encoded as W = 1.
If ! is omitted, the instruction does not change in this way. Encoded as W = 0.
Is a list of one or more registers to be loaded, separated by commas and surrounded by { and }. The
lowest-numbered register is loaded from the lowest memory address, through to the
highest-numbered register from the highest memory address. See also Encoding of lists of ARM core
registers on page A8-295.
Encoding T1 does not support a list containing only one register. If an LDMDB instruction with just
one register in the list is assembled to Thumb, it is assembled to the equivalent LDR{}{}
, [, #-4]{!} instruction.
The SP can be in the list in ARM instructions, but not in Thumb instructions. However, ARM
instructions that include the SP in the list are deprecated.
The PC can be in the list. If it is, the instruction branches to the address loaded to the PC. In
ARMv5T and above, this is an interworking branch, see Pseudocode details of operations on ARM
core registers on page A2-47. In Thumb instructions, if the PC is in the list:
• the LR must not be in the list
• the instruction must be either outside any IT block, or the last instruction in an IT block.
For the ARM instruction set, ARM deprecates including both LR and PC in the list.
Instructions with the base register in the list and ! specified are only available in the ARM
instruction set before ARMv7, and ARM deprecates the use of such instructions. The value of the
base register after such an instruction is UNKNOWN.
LDMEA is a pseudo-instruction for LDMDB, referring to its use for popping data from Empty Ascending stacks.
The pre-UAL syntaxes LDMDB and LDMEA are equivalent to LDMDB.
Operation
if ConditionPassed() then
EncodingSpecificOperations(); NullCheckIfThumbEE(n);
address = R[n] – 4*BitCount(registers);
for i = 0 to 14
if registers == ‘1’ then
R[i] = MemA[address,4]; address = address + 4;
if registers<15> == ‘1’ then
LoadWritePC(MemA[address,4]);
if wback && registers == ‘0’ then R[n] = R[n] – 4*BitCount(registers);
if wback && registers == ‘1’ then R[n] = bits(32) UNKNOWN;
Exceptions
Data Abort.

一颗ARM架构芯片的软硬件构成

硬件和软件是一颗芯片系统互相依存的两大部分,本文总结了一颗芯片的软硬件组成,作为对芯片的入门级概括吧。

(一)硬件
主控CPU:运算和控制核心。基带芯片基本构架采用微处理器+数字信号处理器(DSP)的结构,微处理器是整颗芯片的控制中心,会运行一个实时嵌入式操作系统(如Nucleus PLUS),DSP子系统负责基带处理。应用处理器则可能包括多颗微处理器,还有GPU。微处理器是ARM的不同系列的产品(也可以是x86架构),可以是64位或者32位。处理器内部通过“内部总线”将CPU所有单元相连,其位宽可以是8-64位。

总线:计算机的总线按功能可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。CPU内部部件由内部总线互联,外部总线则是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接。外部设备通过相应的接口电路再与外部总线相连接,从而形成了硬件系统。外部总线通过总线接口单元BLU与CPU内部相连。

片上总线标准高级微控制器总线结构AMBA定义了高性能嵌入式微控制器的通信标准。定义了三组总线:AHB(AMBA高性能总线)、ASB(AMBA系统总线)、和APB(AMBA外设总线)。AHB总线用于高性能、高时钟工作频率模块。AHB为高性能处理器、片上内存、片外内存提供接口,同时桥接慢速外设。DMA、DSP、主存等连在AHB上。ASB总线主要用于高性能系统模块。ASB是可用于AHB不需要的高性能特性的芯片设计上可选的系统总线。APB总线用于为慢速外设提供总线技术支持。APB是一种优化的,低功耗的,精简接口总线,可以支持多种不同慢速外设。由于APB是ARM公司*早提出的总线接口,APB可以桥接ARM体系下每一种系统总线。

外设I/O端口和扩展总线:GPIO通用端口、UART串口、I2C、SPI 、SDIO、USB等,CPU和外扩的芯片、设备以及两颗CPU之间(如基带处理器和应用处理器之间)进行通信的接口。一般来说,芯片都会支持多种接口,并设计通用的软件驱动平台驱动。

存储部件和存储管理设备:Rom、Ram、Flash及控制器。处理器系统中可能包含多种类型的存储部件,如Flash、SRAM、SDRAM、ROM以及用于提高系统性能的Cache等等,不同的芯片会采用不同的存储控制组合。参见博文”arm架构的芯片memory及智能机存储部件简述“

外设: 电源和功耗管理、复位电路和watchdog定时复位电路(前者是系统上电运行、后者是Reset或者超时出错运行)、时钟和计数器、中断控制器、DMA、 输入/输出(如键盘、显示器等)、摄像头等。

一颗ARM9架构芯片主控器及外围硬件设备组成如下图所示:
%title插图%num

(二)软件
芯片上的软件主要包括Boot代码、操作系统、应用程序以及硬件的firmware。

Boot程序引导设备的启动,是设备加电后在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为*终调用操作系统内核准备好正确的环境。

操作系统(英语:Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,其五大管理功能是:

(1)处理器管理,主要包括进程的控制、同步、通信和调度。

(2)存储器管理,主要包括内存的分配、保护和扩充,地址映射。

(3)设备管理,主要包括设备的分配、处理等。

(4)文件管理,主要包括文件的存储空间管理,目录管理,文件的读写和保护。

(5)作业管理,主要包括任务、界面管理,人机交互,语音控制和虚拟现实等。

应用处理器上的操作系统有Android、IOS等,不必多说;基带处理器上则会运行一个RTOS(如Nucleus PLUS)管理整个基带系统上的任务和部件间的通信。

应用程序是为了完成某项或某几项特定任务而被开发运行于操作系统之上的程序。应用处理器上,结合操作系统API和库函数,用户可以开发各色应用程序;基带处理器上则一般只有少量必要的软件支持。

硬件firmware则是简化软件与硬件的交互,让硬件操纵起来更容易。

什么样的ARM处理器及内存配置适合用来开发ARM集群服务器?

什么样的ARM处理器适合用来开发ARM集群服务器?

这个问题,不能一概而论,而应该根据应用领域来区分对待。

如果是把ARM集群服务器用做群控,如社交软件加粉、养号、导流,或一些电商软件的多开操作,那么对ARM处理器的要求并不高,一般4核心以上的ARM处理器就可以胜任。比如:

瑞芯微的RK3288,4*A17,主频*高1.8GHz,配上4GB以上的内存,即可满足。如果ARM硬件虚拟化技术比较过硬,还可以配上8GB内存。一个RK3288可以同时虚开3-4个设备,技能满足应用要求,又能大幅度降低成本。

而如果是用ARM集群服务器来运营云游戏、云手机等业务,则对ARM处理器及其配置的内存和存储要求更高,RK3288同等级别的处理器已经无法满足要求。

经了解,瑞芯微的RK3399、RK3588、高通骁龙845、联发科(MTK)天玑820或者天玑1000类似档次的芯片才能满足云游戏及云手机的应用。

RK3399是瑞芯微早些年推出的6核心芯片,2A72+4A53,*高主频可达2.0GHz,但遗憾的是这颗芯片*大只能配置4GB DDR内存,性能的想象空间较小。
%title插图%num

RK3588是瑞芯微预计2021年Q1推出的8核心芯片,性能相当强劲。4A76+4A55,*高主频可达3.0GHz,*大可支持32GB DDR内存。由于采用8nm制程,RK3588比前一代产品性能提高20%~30%,而功耗将降低40%。GPU为这颗芯片非常适合重Loading的云游戏和云手机应用。

高通骁龙845,是高通在2017年推出的8核高性能手机SoC,4A75 + 4A55,*高主频可达2.6GHz,*大可支持12GB DDR内存,应用于云手机或云游戏也能有不错的性能。但由于已经是早几年的产品,本身又属于手机产品线,可能很快就会面临EOL的问题。

MTK的天玑系列,其实是不错的选择。一是因为该系列是MTK刚刚推出的新产品,二是其性能与骁龙845相当(820)。天玑820的规格:4A76+4A55,*高主频可达2.6GHz,*大可支持16GB DDR内存。
%title插图%num

arm架构服务器安装JDK和Tomcat

环境说明
响应国家号召, 在国产操作系统 中标麒麟上 搭建常用开发环境. 本次在 aarch64 架构的服务器上安装 jdk1.8 以及 tomcat 7.0

下载
下载JDK 和 tomcat 7.0 安装包
百度网盘连接: 所有安装包.
或者是: https://pan.baidu.com/s/1FJuUmAV-R1YOzFdGUsRVYg
提取码: java

安装JDK
将jdk安装包传输到ARM服务器/usr/local/java 目录下
解压 JDk
tar -zxvf jdk-8u261-linux-arm64-vfp-hflt.tar.gz
编辑/etc/profile 文件配置jdk环境变量
vim /etc/profile
在文件末尾加入 一下三行
#jdk路径
export JAVA_HOME=/usr/local/java/jdk1.8.0_261
#指定jdk可执行文件
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

编辑完成后按esc,接着输入:wq保存并退出。
使用命令更新配置的文件:source /etc/profile
测试安装配置成功
root@localhost: /usr/local/java 09:47:48
# java -version
java version “1.8.0_261″
Java(TM) SE Runtime Environment (build 1.8.0_261-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b13, mixed mode)

安装tomcat
将tomcat安装包传输到ARM服务器/usr/local/tomcat 目录下
解压 Tomcat
tar -zxvf apache-tomcat-7.0.106.tar.gz
编辑/etc/profile 文件配置 tomcat 环境变量
vim /etc/profile
在文件末尾加入一行
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-7.0.106

编辑完成后按esc,接着输入:wq保存并退出。
使用命令更新配置的文件:source /etc/profile
进入tomcat安装路径修改tomcat配置文件,添加编码方式为UTF-8
cd /usr/local/tomcat/apache-tomcat-7.0.106/conf
#打开tomcat配置文件
vim server.xml
#在配置文件中,找到Connector标签中添加 URIEncoding=”UTF-8”
%title插图%num

保存退出

进入/usr/local/tomcat/apache-tomcat-7.0.106/bin目录下,执行./startup.sh

%title插图%num

打开浏览器访问tomcat 成功

%title插图%num

63. 不同路径 II(JS实现)

63. 不同路径 II(JS实现)

1 题目
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 1 和 0 来表示。
说明:m 和 n 的值均不超过 100。
示例 1:
输入:
[
[0,0,0],
[0,1,0],
[0,0,0]
]
输出: 2
解释:
3×3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1.向右 -> 向右 -> 向下 -> 向下
2.向下 -> 向下 -> 向右 -> 向右

2 思路
这道题相比62,多了个障碍物的条件,因此在初始化状态数组时,要多一些判断。比如在*行,障碍物后的位置全部无法到达(机器人不能向上走),同样在*列,障碍物后的位置也无法到达(机器人不能向左走)

3代码
/**
* @param {number[][]} obstacleGrid
* @return {number}
*/
var uniquePathsWithObstacles = function(obstacleGrid) {
let m = obstacleGrid.length;
if (m === 0) return 0;
let n = obstacleGrid[0].length;
if (obstacleGrid[0][0] || obstacleGrid[m-1][n-1]) return 0; //直接排除一些特殊情况
if (m === 1 && obstacleGrid[0].includes(1)) return 0; //直接排除一些特殊情况
if (n === 1) { //直接排除一些特殊情况
for (let i=0;i<m.length;i++) {
if (obstacleGrid[i][0]) return 0;
}
}

let d = [];
let pointX = -1; //用来记录*行出现障碍物的位置
let pointY = -1; //用来记录*列出现障碍物的位置
for (let i=0; i<m;i++) {
for (let j=0; j<n; j++) {
if (i === 0 || j === 0) { //初始化*行和*列
if (!d[i]) d[i] = [];
if (obstacleGrid[i][j]) {
d[i][j] = 0;
i === 0 ? pointX = j : pointY = i;
} else if (i === 0 && pointX > -1 && j > pointX) {
d[i][j] = 0;
} else if (j === 0 && pointY > -1 && i > pointY) {
d[i][j] = 0;
} else {
d[i][j] = 1;
}
} else {
d[i][j] = obstacleGrid[i][j] ? 0 : d[i-1][j] + d[i][j-1];
}
}
}

return d[m-1][n-1];
};

64. *小路径和(JS实现)

64. *小路径和(JS实现)

1 题目
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为*小。
说明:每次只能向下或者向右移动一步。
示例:
输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和*小。

2 思路
这道题还是用动态规划来做,首先初始化*行和*列,然后状态转移方程d[i][j] = Math.min(d[i-1][j], d[i][j-1]) + num[i][j], d[i][j]为第i行第j列位置上*小的路径值

3代码
/**
* @param {number[][]} grid
* @return {number}
*/
var minPathSum = function(grid) {
let m = grid.length;
if (m === 0) return 0;
let n = grid[0].length;
if (n === 0 ) return 0;
if (m === 1) {
let sum = 0;
for (let i=0; i<n; i++) {
sum += grid[0][i];
}
return sum;
};
if (n === 1) {
let sum = 0;
for (let i=0; i<m; i++) {
sum += grid[i][0];
}
return sum;
}

for (let i=0; i<m; i++) {
for (let j=0; j<n; j++) {
if (i === 0 && j > 0) {
grid[0][j] += grid[0][j-1];
} else if (j === 0 && i > 0) {
grid[i][0] += grid[i-1][0];
} else if (j > 0 && i > 0){
grid[i][j] += Math.min(grid[i-1][j], grid[i][j-1]);
}
}
}

return grid[m-1][n-1];
};

x86服务器与arm服务器

服务器是提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。在网络环境下,根据服务器提供的服务类型不同,分为文件服务器、数据库服务器、应用程序服务器、WEB服务器等。

x86服务器又称CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构,使用Intel或其它兼容x86指令集的处理器芯片和Windows操作系统的服务器,基于Intel处理器的x86架构,通用开发的处理器架构。x86系统*早起源于8086芯片组,而芯片组的主处理器是由Intel和AMD所制造。随后,越来越多的厂商将该芯片应用到台式机,笔记本以及服务器上。如今的企业服务器市场上,少数几家厂商占据了*大多数的市场份额。

ARM的优势是高密度低功耗,只能承载轻量级的工作负载。ARM的优势就是专注于低功耗的小核心,其授权方式构成生态圈(仅限硬件),硬件开发成本低选择多。X86正相反,Intel不允许其他企业插手,但是软件方面却有完整的生态圈。虽然现在软件多数能跨平台,但是与arm 良好匹配还需要时间证明。所以arm 的关键优势是可以摆脱intel 的垄断,可以实现芯片级的硬件定制。

ARM服务器能将CPU的利用率提升了95%,为服务器虚拟化提供了一个基于需求的扩容选择,从而为数据中心和企业带来更低的功耗、更高效的服务器解决方案,大大节约了成本。

为了以高效率、低能耗的“绿色”方式来支撑数据中心的快速扩展,以服务器为核心的计算基础设施正在经历不断的创新,通过创新的系统架构、软硬件设计、节能和散热方法来提高运算效能,降低数据中心IT基础设施的能耗和环境影响。

FM-A5460S高性能服务器采用国产华芯通-1号64位高性能ARM多核处理器,2U 1节点架构,*大提供12个LFF 硬盘扩展仓位(支持标准3.5”SAS/SATA硬盘和SSD)。每个节点配置一颗国产华芯通-1号64位高性能ARM多核处理器,提供12个DDR4 DIMM 插槽(支持 UDIMM/RDIMM/LRDIMM DDR4 配置)。

在2U服务器系统内,提供多达48 核的超强计算性能,灵活的存储扩展以及高速网络接入能力,非常适用于具有多重业务负载的复杂基础设施环境,包括企业级部署、云环境部署、大数据应用环境等。

国家统计局新闻发言人就2021年5月份国民经济运行情况答记者问

 (2021年6月16日)     中央广播电视总台央视记者:   从您刚才发布的数据看,主要经济指标增速继续回落,国内外疫情变化对经济运行造成了哪些影响?如何看待国民经济持续恢复,您又如何评价5月份国民经济运行的表现?谢谢。     付凌晖:   谢谢您的提问。5月份以来,国际形势发生了一些新变化,国际疫情也有一些新发展,国内也面临不少新情况。但总的看,5月份统筹疫情防控和经济社会发展的成效继续显现,国民经济保持稳定恢复。   受上年同期基数升高的影响,5月份主要生产需求指标同比增速有所放缓,但是从环比增速看,保持基本稳定;从两年平均增速看,多数生产需求指标还有所加快。同时,就业形势总体稳定,市场活力逐步提升,发展预期向好,内生动力加强,主要表现在以下几个方面:   *,生产需求持续增长。保持对经济恢复必要的政策支持,产需形势继续改善。工业服务业稳定增长。5月份,规模以上工业增加值两年平均增长6.6%,服务业生产指数两年平均增长也是6.6%,其中服务业生产指数比上月加快0.4个百分点。投资和消费增长加快。1-5月份,固定资产投资两年平均增长4.2%,比1-4月份加快0.3个百分点。5月份社会消费品零售总额两年平均增长4.5%,比上月加快0.2个百分点。出口保持较快增长,5月份出口两年平均增长9.3%,继续保持较快增速。   第二,新兴动能持续壮大。创新驱动战略实施成效继续显现,高技术产业发展向好。5月份,规模以上高技术制造业增加值两年平均增长13.1%,明显快于全部工业增速。1-5月份,高技术产业投资两年平均增长13.2%,也明显快于全部投资增长。新业态发展迅猛,平台经济、网上零售、在线教育持续活跃,1-5月份,实物商品网上零售额两年平均增长15.6%,明显快于社会消费品零售总额的增速。   第三,市场活力稳步提升。营商环境改善,减税降费显效,企业盈利和预期持续向好。企业利润大幅增长。1-4月份,规模以上工业企业利润同比增长1.06倍,两年平均增长22.3%。规模以上服务业利润同比增长3.3倍,超过了2019年同期水平。企业预期较好,5月份,制造业PMI达到51%,非制造业商务活动指数为55.2%,持续稳定在临界点以上。   第四,就业民生继续改善。就业优先政策持续发力,保供稳价稳步推进。城镇调查失业率下降,5月份,全国城镇调查失业率为5%,比上月下降0.1个百分点,其中25-59岁就业主体人口失业率为4.4%,比上月下降0.2个百分点。居民消费价格温和上涨。5月份,居民消费价格同比上涨1.3%,其中食品价格同比上涨0.3%,涨幅较低,猪肉价格下降23.8%。   当然也要看到,全球疫情形势依然严峻,世界经济复苏分化,部分发达经济体大规模刺激政策外溢效应明显,国际大宗商品价格快速上涨,国内经济仍处在恢复之中,恢复不平衡现象仍然存在,疫情防控压力仍不容忽视,上游行业价格上涨加大了下游企业经营压力。下一阶段,要按照党中央、国务院的决策部署,坚持稳中求进总基调,持续抓好疫情防控,科学有效实施宏观政策,大力推进改革创新,持续扩大对外开放,巩固经济恢复的基础,保持经济运行在合理区间,推动经济高质量发展。谢谢。   *财经记者:   今年5月公布了第七次全国人口普查数据,5月底的中央政治局会议决定实施“一对夫妻可以生育三个子女”的政策。请问普查数据对三孩政策提供了哪些数据支撑?具体什么时候施行?将有哪些具体的配套支持措施?谢谢。     付凌晖:   谢谢您的提问。第七次全国人口普查的数据显示,我国人口出现了一些新的变化。一是人口老龄化程度提高。2020年,我国60岁及以上人口占全国人口的比重为18.7%,65岁及以上人口的比重为13.5%,分别比第六次全国人口普查结果上升了5.44和4.63个百分点。二是生育率水平降低。2020年,我国育龄妇女的总和生育率为1.3,处于较低的水平。   人口老龄化是世界人口发展的大趋势,也是我国今后相当长一段时间的基本国情。实施一对夫妻可以生育三个子女的政策,长期看有利于缓解生育水平走低,改善人口的年龄结构,促进人口的长期均衡发展。关于相关政策的实施情况,建议您咨询相关的政策部门。谢谢。   CNBC记者:   我有两方面的问题,*个是关于就业,想了解一下城市以外的就业情况如何,有什么新的岗位变化?主要是往外出的一些情况。第二个是关于电商,5月份看到消费情况保持增速,但是低于很多预期,网上消费一直好像保持差不多一样的占比,后面有什么主要的原因?想问关于进出口方面,尤其是出口,跨境电商占多少?谢谢。     付凌晖:   谢谢您的提问,您主要关心的一个是就业问题,一个是关于电子商务相关的问题。   先回答*个问题,关于就业的情况。随着经济的稳定恢复,国内就业形势总体改善。从主要数据来看,全国城镇调查失业率5月份是5%,比上月下降0.1个百分点;就业主体人群的失业率,25-59岁人口调查失业率是4.4%,比上月下降了0.2个百分点。   就业形势改善主要有以下方面原因,一是经济恢复,用工需求增加。二是服务业持续恢复,带动就业扩大。5月全国服务业生产指数两年平均增长6.6%,比4月加快了0.4个百分点。服务业的就业容量是比较大的,这有利于就业的增加。三是受益于就业优先政策,促进了就业稳定。一系列援企稳岗的政策持续发力,如创业带动就业、支持灵活就业等这样一些政策,对稳定就业都发挥了重要作用。   但是也要看到,就业还面临一定压力。主要表现在,在总量方面,今年城镇新增劳动力1400多万,大学毕业生达到909万。在结构方面,大学生就业难和企业招工难并存。此外,部分接触型的服务业恢复还比较慢,可能对就业也带来了一些不利的影响。下一阶段,要保持对经济恢复必要的支持,促进就业岗位的增加。要落实好就业优先政策,支持重点群体就业的扩大,推动就业形势总体稳定。   关于您提到电子商务零售的情况。1-5月份,实物商品网上零售额两年平均增长15.6%,和1-4月份是持平的,网上零售增势保持稳定。这也说明在疫情防控常态化条件下,零售业务持续向线上转换,也支撑了消费的总体稳定。   关于您提到的跨境电商的问题,在近期商务部的新闻发布会上已经作了详细介绍,您可以去了解有关情况。   路透社记者:   5月份,社会消费品零售额同比增长了12.4%,比4月份增速回落了几个百分点。请问您怎么看下半年的消费情况?第二个问题,您怎么看通胀的风险?谢谢。     付凌晖:   谢谢您的提问。5月份社会消费品零售额同比增速有所放缓,主要是由于上年同期基数走高的影响。从两年平均增速来看,5月份社会消费品零售总额增长4.5%,比上个月加快0.2个百分点,市场销售总体逐步回升。   从5月份市场销售来看,有以下几个主要特点:一是商品零售稳定增长,升级类商品增长速度较快。从两年平均增速看,5月份商品零售额同比增长了4.9%,继续保持稳定恢复,其中通讯器材类、化妆品类、体育娱乐类商品零售两年平均增长都在10%以上。二是服务销售改善,餐饮收入增长加快。5月份餐饮收入两年平均增长1.4%,比上月加快了1个百分点。“五一”期间,国内旅游人数已经超过了疫情前同期的水平,旅游收入也达到了疫情前同期的七成以上。从服务业商务活动指数中可以看到,与长距离旅行相关的服务消费是在稳步增长的,比如航空运输、铁路运输等行业的商务活动指数都保持在65%以上,跟居民消费相关的零售、餐饮、文体娱乐行业的商务活动指数都达到58%以上。这些情况都说明消费稳步恢复的态势在持续。   从下一阶段来看,消费恢复有较好支撑,主要表现在:一是就业扩大,居民收入增长,有利于增强居民消费的能力。二是经济发展向好,国内疫苗接种扩大。根据*新统计,截至昨天,国内疫苗接种已经超过9亿剂次,有利于提高居民消费意愿。三是一系列促进消费政策显效,国内疫情防控总体有力,价格涨幅总体温和,这些也都有利于扩大消费。   关于您提到的价格情况,总的看,5月份居民消费价格同比上涨1.3%,涨幅比上月略有扩大,但整体上仍处于温和上涨。近期由于国际大宗商品价格的上涨,5月份PPI同比上涨9%,涨幅比上月扩大2.2个百分点,引起大家对于PPI上涨向CPI传导的担忧。总的看,国内工业品供给能力充裕,市场竞争比较充分,PPI价格上涨对CPI的传导有限,居民消费价格全年保持基本稳定有基础、有条件。谢谢。   海报新闻记者:   米袋子、菜篮子的价格变化既是经济议题,更是民生关切。随着消费的持续升温,未来物价是否会持续走高?谢谢。     付凌晖:   谢谢您的提问,您关心的还是价格问题。今年以来,随着经济的恢复,居民消费价格涨幅有所扩大。总的看,目前处于一个温和上涨的状态。从前5个月的情况来看,居民消费价格同比上涨只有0.4%,其中核心CPI上涨只有0.3%。从当月情况看,居民消费价格5月份上涨1.3%,其中食品价格上涨只有0.3%,非食品价格上涨1.6%。从结构看,居民消费价格上涨的影响主要来自于非食品价格。5月份,非食品价格上涨拉动CPI涨幅1.28个百分点,占当月CPI涨幅的*大部分。非食品价格上涨主要来自于以下几个方面:一是交通通信类价格,主要是汽油和柴油价格上涨。二是教育文化娱乐类、居住类等一些服务价格的上涨。从食品价格的情况来看,目前食品价格环比连续3个月下降,同比涨幅也处于比较低的水平。   从下一阶段看,与居民消费相关的食品价格总体保持稳定有比较好的基础和条件。我国粮食生产连续六年稳定在1.3万亿斤以上,粮食库存比较充裕。同时,生猪产能在持续恢复,5月份猪肉价格同比下降23.8%,对CPI来说是一个下拉因素。谢谢。   封面新闻记者:   我们注意到,5月份PPI再创新高,请问国家统计局如何看待物价总体上行的压力?近期有观点称,美欧等“大水漫灌”政策引发通货膨胀等问题,对发展中国家也产生了影响。对此,国家统计局怎么看待?此外有预测称,今年CPI上涨呈扩大趋势,年末可能超过3%。对此,国家统计局如何回应?谢谢。     付凌晖:   谢谢您的提问,您还是关心PPI、国际通胀和居民消费价格相关的一些问题。   总的看,今年以来,随着疫苗接种的扩大,国际疫情形势总体改善,加上部分发达经济体财政金融强刺激政策,美欧等部分发达经济体通胀上升。5月份,美国CPI同比上涨5%,其中核心CPI上涨3.8%;欧元区CPI同比上涨了2%,均创近期新高。受到经济周期、经济结构和宏观政策等因素影响,各国的价格变化并不完全同步,从我国的情况看,价格保持稳定还是有较好的条件,主要表现在:   首先,从供求的基本面来看,我国经济整体上还处于恢复之中,主要需求指标还没有恢复到疫情前的水平。从供给端来看,生产供给保持较快增长,供求基本面不支持价格的大幅上涨。   第二,从结构因素来看,食品价格方面,我国的粮食生产保持稳定,主要农产品供应比较充足,食品价格保持稳定有较好的条件。工业消费品方面,尽管上游行业的工业品价格涨幅比较高,但是下游工业消费品供给能力比较充足,市场竞争比较充分,向消费品价格传导有限,这些都有利于价格保持稳定。   第三,从政策因素来看,财政和货币政策继续保持对经济恢复的必要支持,没有使用“大水漫灌”强刺激。同时,相关部门还加大保供稳价的力度,这些因素都有利于促进价格的总体稳定。   当然也要看到,近期由于国际大宗商品价格上涨,带来PPI涨幅明显扩大,对原材料部分领域的价格较快上涨要引起重视,要加强市场调节,缓解企业的成本压力,促进经济平稳健康发展。谢谢。   彭博新闻社记者:   我们刚才看到关于消费的数据比较弱,显示居民的收入较去年还没有完全恢复。而且我们看到,制造业的投资显示企业并没有对经济有着充足的信心。现在中国正在研究双循环,以及在浙江打算先行先试再分配政策改革,但这些都是长期政策,请问在短期如何支持居民收入恢复?谢谢。     付凌晖:   谢谢您的提问,您关心的主要还是内需扩大的问题。去年受疫情的影响,*终消费支出对经济增长是负拉动的,去年全年经济增长2.3%,主要受到投资和出口的拉动。从今年来看,随着经济持续恢复,消费对经济增长贡献明显提升。一季度,*终消费支出对经济增长的贡献率为63.4%,资本形成总额对经济增长的贡献率为24.5%,内需对经济增长的贡献率达到了87.9%,明显大于货物和服务净出口12.2%的贡献率。这说明,随着经济的逐步恢复,经济增长动力逐渐向内需拉动特别是消费拉动的常态回归。   关于您提到的消费增长情况,刚才也谈到了,随着就业的改善,居民收入的增加,商品消费稳步增长的同时,服务性消费整体扩大,与居民服务消费相关的服务性行业增长势头增强。   关于您提到的制造业投资的问题,总的看,去年受疫情冲击,很多企业的盈利受到了一些影响,企业预期也受到了一些影响。但是从今年来看,制造业投资总体上稳步恢复,制造业投资1-5月份的两年平均增速已经由负转正了。下阶段,制造业投资增长有支撑。一是制造业企业利润保持较快增长。1-4月份,规模以上工业企业利润两年平均增长22.3%。二是一季度规模以上工业的产能利用率也创了历史同期新高。三是从企业的预期来看,制造业PMI5月份达到51%,这些都有利于制造业投资的增长。还要看到,企业创新投入增加,1-5月份高技术产业投资两年平均增长13.2%,明显快于整体投资增长,也说明制造业投资增长有很好支撑。   从未来看,我国有14亿人口,有4亿多中等收入群体,产业基础比较好,产业体系完整,人口数量红利在向人口质量红利转换,人力资源素质稳步提高,经济长期向好的基本面没有变。随着继续推进国内国际双循环,积*构建新发展格局,我国经济将保持持续健康发展。谢谢。