克隆图(JS实现)

克隆图(JS实现)

1 题目
给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。
图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。
class Node {
public int val;
public List neighbors;
}
测试用例格式:
简单起见,每个节点的值都和它的索引相同。例如,*个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。
邻接列表 是用于表示有限图的无序列表的集合。每个列表都描述了图中节点的邻居集。
给定节点将始终是图中的*个节点(值为 1)。你必须将 给定节点的拷贝 作为对克隆图的引用返回。
示例 1:
输入:adjList = [[2,4],[1,3],[2,4],[1,3]]
输出:[[2,4],[1,3],[2,4],[1,3]]
解释:
图中有 4 个节点。
节点 1 的值是 1,它有两个邻居:节点 2 和 4 。
节点 2 的值是 2,它有两个邻居:节点 1 和 3 。
节点 3 的值是 3,它有两个邻居:节点 2 和 4 。
节点 4 的值是 4,它有两个邻居:节点 1 和 3 。
示例 2:
输入:adjList = [[]]
输出:[[]]
解释:输入包含一个空列表。该图仅仅只有一个值为 1 的节点,它没有任何邻居。
示例 3:
输入:adjList = []
输出:[]
解释:这个图是空的,它不含任何节点。
示例 4:
输入:adjList = [[2],[1]]
输出:[[2],[1]]
提示:
节点数不超过 100 。
每个节点值 Node.val 都是唯一的,1 <= Node.val <= 100。
无向图是一个简单图,这意味着图中没有重复的边,也没有自环。
由于图是无向的,如果节点 p 是节点 q 的邻居,那么节点 q 也必须是节点 p 的邻居。
图是连通图,你可以从给定节点访问到所有节点。

2 思路
这道题的主要思路还是用深度优先遍历的方法克隆每一个节点,为了防止一个节点被多次克隆,可以用map进行去重

3代码
/**
* // Definition for a Node.
* function Node(val, neighbors) {
* this.val = val === undefined ? 0 : val;
* this.neighbors = neighbors === undefined ? [] : neighbors;
* };
*/

/**
* @param {Node} node
* @return {Node}
*/
var cloneGraph = function(node) {

return clone(node);

function clone(p) {
if (!p) return;
let newNode = new Node(p.val);
p.cloneNode = newNode;
if (p.neighbors) {
let neighbors = [];
for (let i=0; i<p.neighbors.length; i++) {
neighbors.push(p.neighbors[i].cloneNode || clone(p.neighbors[i]));
}
newNode.neighbors = neighbors;
}
return newNode;
}

function Node(val, neighbors) {
this.val = val === undefined ? 0 : val;
this.neighbors = neighbors === undefined ? [] : neighbors;
};
};

加油站(JS实现)

加油站(JS实现)

1 题目
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。
如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。
说明:
如果题目有解,该答案即为唯一答案。
输入数组均为非空数组,且长度相同。
输入数组中的元素均为非负数。
示例 1:
输入:
gas = [1,2,3,4,5]
cost = [3,4,5,1,2]
输出: 3
解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 – 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 – 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 – 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 – 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。
示例 2:
输入:
gas = [2,3,4]
cost = [3,4,3]
输出: -1
解释:
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。
我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油
开往 0 号加油站,此时油箱有 4 – 3 + 2 = 3 升汽油
开往 1 号加油站,此时油箱有 3 – 3 + 3 = 3 升汽油
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。

2 思路
本人做这道题的主要思路还是模拟汽车的行驶,其实题解中还有更巧妙的方法,
1.初始化 total_tank 和 curr_tank 为 0 ,并且选择 0 号加油站为起点。
2.遍历所有的加油站:
每一步中,都通过加上 gas[i] 和减去 cost[i] 来更新 total_tank 和 curr_tank 。
如果在 i + 1 号加油站, curr_tank < 0 ,将 i + 1 号加油站作为新的起点,同时重置 curr_tank = 0 ,让油箱也清空。
如果 total_tank < 0 ,返回 -1 ,否则返回 starting station。

3代码
/**
* @param {number[]} gas
* @param {number[]} cost
* @return {number}
*/
var canCompleteCircuit = function(gas, cost) {
let len = gas.length;
let diff = [];

for (let i=0; i<len; i++) {
diff[i] = gas[i] – cost[i];
}

if (diff.reduce((a,b)=>a+b) < 0) return -1;

let index = diff.indexOf(Math.max(…diff));
let startIndex = index;

do {
let i = index, currentGas = gas[i];
do {
currentGas -= cost[i];
if (currentGas < 0) {
i = -1
break;
};
if (++i === len) i = 0;
currentGas += gas[i];
}while(i !== index);

if (i === index) {
return index;
} else {
if (++index === len) index = 0;
}
}while(index !== startIndex)

return -1;
};

只出现一次的数字(JS实现)

只出现一次的数字(JS实现)

1 题目
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4

2 思路
这道题巧妙应用位运算,可以将空间复杂度降至O(1)
1.任何数和 0 做异或运算,结果仍然是原来的数。
2.任何数和其自身做异或运算,结果是 0。
3.异或运算满足交换律和结合律

3代码
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
const map = {};
let num;
for (let i=0; i<nums.length; i++) {
if (typeof map[nums[i]] !== ‘undefined’) {
map[nums[i]] = 2;
} else {
map[nums[i]] = 1;
}
}

for (let key in map) {
if (map[key] === 1) return key;
}
};

复制带随机指针的链表(JS实现

复制带随机指针的链表(JS实现)

1 题目
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。
要求返回这个链表的 深拷贝。
我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:
val:一个表示 Node.val 的整数。
random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。
示例 1:
输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]
示例 2:
输入:head = [[1,1],[2,1]]
输出:[[1,1],[2,1]]
示例 3:
输入:head = [[3,null],[3,0],[3,null]]
输出:[[3,null],[3,0],[3,null]]
示例 4:
输入:head = []
输出:[]
解释:给定的链表为空(空指针),因此返回 null。
提示:
-10000 <= Node.val <= 10000
Node.random 为空(null)或指向链表中的节点。
节点数目不超过 1000 。

2 思路
这道题的主要思路使用一个map,key为原来的节点,value为克隆的节点和指向该原节点的节点数组,在遍历复制的过程中不断更新指针的指向

3代码
/**
* // Definition for a Node.
* function Node(val, next, random) {
* this.val = val;
* this.next = next;
* this.random = random;
* };
*/

/**
* @param {Node} head
* @return {Node}
*/
var copyRandomList = function(head) {
if (!head) return head;

let linkHead, pre;

const map = new Map();

while(head) {
let newNode = new Node(head.val, null, null);
if (!pre) {
linkHead = newNode;
} else {
pre.next = newNode;
}
pre = newNode;
if (head.random) { //如果当前节点有随机指针
let arr = map.get(head.random);
if (!arr) {
map.set(head.random, [null, newNode]);
} else {
if (arr[0]) {
newNode.random = arr[0];
} else {
arr.push(newNode);
}
}
}

let currentArr = map.get(head);
if (currentArr) { //如果有其他节点指向该克隆的节点
currentArr[0] = newNode;
for (let i=1; i<currentArr.length; i++) {
currentArr[i].random = newNode;
}
} else {
map.set(head, [newNode]);
}
head = head.next;
}

return linkHead;
};

单词拆分(JS实现)

单词拆分(JS实现)

1 题目
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。
说明:
拆分时可以重复使用字典中的单词。
你可以假设字典中没有重复的单词。
示例 1:
输入: s = “leetcode”, wordDict = [“leet”, “code”]
输出: true
解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。
示例 2:
输入: s = “applepenapple”, wordDict = [“apple”, “pen”]
输出: true
解释: 返回 true 因为 “applepenapple” 可以被拆分成 “apple pen apple”。
注意你可以重复使用字典中的单词。
示例 3:
输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]
输出: false

2 思路
这道题用动态规划的方法,存储部分结构,表示字符串 s 前 i 个字符组成的字符串 s[0…i-1]是否能被空格拆分成若干个字典中出现的单词。从前往后计算考虑转移方程,每次转移的时候我们需要枚举包含位置 i-1的*后一个单词,看它是否出现在字典中以及除去这部分的字符串是否合法即可

3代码
/**
* @param {string} s
* @param {string[]} wordDict
* @return {boolean}
*/
var wordBreak = function(s, wordDict) {
const map = {};

for (let word of wordDict) {
map[word] = true;
}

const d = [];
d[0] = true;

for (let i=0; i<s.length; i++) {
for (let j=1;j<=i+1;j++) {
let substr = s.substr(i+1-j,j);
if (d[i+1-j] && map[substr]) {
d[i+1] = true;
break;
}
}
d[i+1] = d[i+1] || false;
}

return d[s.length];
};

鸿蒙HarmonyOS 2.0与安卓/ios的区别

描述

近日,鸿蒙系统再受质疑,外媒表示:华为鸿蒙OS系统和安卓没区别。

外媒对此给出的理由是,尽管是搭载鸿蒙OS系统设备,若是连续几年不更新手机硬件,同样也会出现无法带动APP软件、不兼容、系统超负荷、越用越卡顿的情况。这也是安卓和苹果同样面临的问题,只不过在整体的体验感上,苹果表现的更好一点。

87382d2a7191c4344f2a72e470c2a0e9.png

安卓和ios都是大家比较熟悉的系统,鸿蒙作为新生代操作系统,一开始就不是应用在移动设备上面,主要针对物联网而开发的,所以会有质疑是毋庸置疑的。

鸿蒙系统的发布是由于美方的巨大压力而发布的无奈之举。鸿蒙系统是不同于安卓与苹果系统的,鸿蒙系统不仅仅可以应用在手机领域,在电器乃至汽车等智能领域都可以适用,并且互相之间可以使用鸿蒙系统作为媒介进行一体控制,实现“万物互联”。

鸿蒙与安卓的区别:

1、构建理念不同:谷歌的安卓系统主要出于移动终端以及智能电视、智能穿戴设备所考虑。华为的鸿蒙系统主要出于未来万物互联的角度,囊括了所有能够接入物联网的设备。并不仅仅局限于基于ARM架构的设备,甚至是基于X86或者其他更新架构的设备。

2、理念不同:导致系统复杂度、难易度不同,华为鸿蒙系统综合性要高于安卓系统。

3、资源获取的能力不同:华为的生态系统建设而困扰,物联网将会为华为带来大量的内容资源。短期内华为系统的生态建设将会被安卓系统所压制,毕竟两者不在同一个数量级。

华为宣布在4月24日的华为开发者大会上,鸿蒙系统正式进行发布推送,鸿蒙的发布,打破了安卓和苹果垄断局面,未来鸿蒙是否实现全球第三大操作系统,我们拭目以待。

harmonyos是不是安卓?有什么区别

随着HarmonyOS2.0的发布,网上也出现了很多的质疑的声音。例如HarmonyOS2.0和EMUI 11长得一样,其实就是安卓换个名;鸿蒙OS 2.0还是支持安卓APP, 根本不是一个独立的系统。

HarmonyOS是一个万物互联的系统,是一个致力于分布式的系统。它不仅仅是手机系统,也可以是电视系统,还能是冰箱系统或者微波炉系统。所以说HarmonyOS是可以应用于所有电子产品上的系统。它擅长的是多设备协同操作。HarmonyOS并不只是一个手机的操作系统,而是各个电子产品的操作系统,可以让我们更方便的在各个设备间切换,或者协同使用各个设备。这就是分布式系统的优点。

1bfd6083e7ee0a32fa205ea977dd80c8.png

HarmonyOS 2.0设计理念是与合作伙伴一起带来创新的全场景超级终端体验 深度解析 HarmonyOS 分布式应用程序框架DevEco Studio 2.0 一站式分布式应用开发平台,针对于开发者和合作方的,对于我们普通消费者而言还是需要等待,但是这也预示着鸿蒙系统马上就会在市场中普及。

据了解,鸿蒙OS正在逐步发展,其代码也将会按计划开源。鸿蒙OS的开源项目为OpenHarmony,这是开放原子开源基金会(Open Atom Foundation)旗下的开源项目,定位于面向全场景的开源分布式操作系统。

OpenHarmony 2.0从5月16日起到6月2日陆续开源。OpenHarmony 2.0有多个分支版本,本次开放的L2是一个纯粹的鸿蒙版本,没有任何安卓代码,可以跑所有的鸿蒙应用,包括分布式,也能打电话、上网,但没有足够丰富的软件生态。

 

华为在2019年的开发者大会上推出了自主研发的HarmonyOS,不过那个时候的HarmonyOS并不成熟,华为仅仅在“智慧屏”上采用了HarmonyOS;直到去年,华为才宣布将HarmonyOS用在智能手机上面,并且对部分老款华为手机进行了HarmonyOS 2.0测试版的升级。

cb6678fb69f454b129d538efe81b3888.png

近日不少用户的华为手机收到了HarmonyOS 2.0开发者测试版本,一般情况下,开发版的推送意味着正式版也即将到来;那么都有哪些华为手机可以升级到HarmonyOS 2.0正式版呢?小编带小伙伴们盘点一下。

bb3018a3c23d42a1dbd43694c1040ccb.png

之前的消息显示,HarmonyOS 2.0是看芯片升级的,只要是搭载中高端麒麟芯片的华为手机,都可以升级到HarmonyOS 2.0;芯片具体型号为:麒麟9000、麒麟9000E、麒麟990 5G、麒麟990E、麒麟990、麒麟980、麒麟985、麒麟820、麒麟820E、麒麟810,总共十款芯片。

首批参加测试的机器分别是华为P40系列、华为Mate40系列以及华为MateX2折叠屏手机,这些机器在参与测试计划的情况下,目前可以获得HarmonyOS 2.0测试版的升级,但有趣的是,这些机器从Android升级到HarmonyOS 2.0并不会清空数据,这说明两个系统之间的互通性是比较强的。

a08b71310f76ad7d64be28d363a76171.png

除了华为手机之外,搭载以上十款麒麟芯片的荣耀手机也有机会升级到HarmonyOS 2.0,至于今年发布的荣耀V40以及荣耀V40轻奢版,小编猜测不会升级到HarmonyOS 2.0;毕竟荣耀品牌已经从华为中剥离出去,另外这两款机器搭载的是联发科天玑芯片,并非是麒麟芯片。

至于华为的平板电脑,小编认为也是遵循芯片规则——只要是搭载以上十款芯片的华为、荣耀平板电脑,也是会升级到HarmonyOS 2.0的;另外即将发布的华为MatePad2 Pro将搭载麒麟9000系列芯片,该设备有可能预装HarmonyOS 2.0,直接“抛弃”Android系统。

feee97b05d8c56e01798fe0f5e9ca940.png

另外有消息称,即将发布的华为P50系列机器也将预装HarmonyOS 2.0,这意味着华为推出的新款设备都不再搭载Android系统;华为前段时间通过认证的新机——华为Mate40 Pro 4G便预装了HarmonyOS 2.0,这也是华为旗下首款预装HarmonyOS 2.0的智能手机。

华为EMUI更名为HarmonyOS

6月2日晚20:00,华为HarmonyOS 2及华为全场景新品发布会如期召开。发布会上,重磅发布了万众瞩目的HarmonyOS 2正式版,这意味着蛰伏多年、潜心钻研的HarmonyOS正式到来!

除此之外,华为也发布了多款搭载HarmonyOS 2的新产品,如HUAWEI Mate40系列的新版本、华为年度旗舰智能手表HUAWEI WATCH 3、以及华为新一代平板MatePad Pro,同时,新一代半开放主动降噪无限蓝牙耳机HUAWEI FreeBuds 4、高端显示器HUAWEI MateView及HUAWEI MateView GT也正式面世。

2019年的华为开发者大会上,HarmonyOS的神秘面纱首次揭开,而在随后的一年当中,HarmonyOS并没有大肆宣扬自己,反而异常低调,不断完善生态,在淡出人们视线的日子里潜心钻研。在一年后的华为开发者大会2020,HarmonyOS 2.0惊艳亮相,从能力,到开源,再到华为“1+8+N”战略的落实,都有了全新的升级。

据华为常务董事、消费者业务CEO余承东及华为消费者业务软件部总裁王成录表示,未来,HarmonyOS 2.0将会开放给包含手机、手表、智慧屏、机车在内的不同设备,华为的“1+8+N”战略中的“+”终于有了*好的跨平台系统支持。

5月25日,华为EMUI官方微博发布了一则微博,宣布正式更名为HarmonyOS。随后,华为EMUI官方微信、微博都正式换上了HarmonyOS相关的新头像,宣布HarmonyOS的到来。
%title插图%num

HarmonyOS 2正式面世
发布会开始,首位亮相的是华为常务董事、消费者业务CEO余承东。他表示,未来十年华为消费者业务一个长期的战略,是全场景智慧生活战略,重点围绕着五大场景来打造用户体验:智能家居、智慧办公、智慧出行、运动健康、影音娱乐。

今天的我们,进入了一个万物互联、万物智能的时代。但在这个时代,“体验感”却非常有问题:连接很复杂、控制很复杂,体验很分割。在IoT时代,优秀的连接能力成为刚需,而这种能力对于操作系统要求更高,且实现起来非常割裂。

HarmonyOS是一个能支持多设备多硬件的操作系统,可以搭载在华为的产品上和广泛的IoT设备上,哪怕是摄像头、家用电器、插座、台灯等。在万物智能时代,HarmonyOS 2提供了*广泛支持的操作系统,一生万物,万物归一,All as one,One as all。

华为消费者业务软件部总裁王成录博士紧随其后介绍了HarmonyOS 2。他表示,HarmonyOS从5年前设计伊始,就采用了全站解耦的架构,旨在“用一套代码就能满足大大小小的要求”。在万物互联时代,设备连接非常重要,否则万物互联则无从谈起。HarmonyOS创造性地提出了分布式技术,用软总线将各种各样的独立设备连接起来。软总线就像连接各个设备的高速公路,消费者可以根据需要自行组装所需要的的设备。无论有多少设备连接在一起,HarmonyOS 2必须做到让消费者像使用一台设备一样简单。

随后,王成录正式介绍了搭载在华为智能手机上的HarmonyOS 2带来的几个功能和技术上的改变。

1、三大中心:控制中心、服务中心、通知中心
控制中心:包含了播控中心、快捷开关、超级终端三大模块。让消费者可以非常方便地操控本机模组及与本机连接的其他设备,轻松组成超级终端。它把所有与手机链接的第三方设备的状态、开关等,以卡片形式展现在统一的控制中心里,消费者在统一的入口里就可以完成所有跟手机连接的第三方设备的状态实时查看及操控,用简单的“拖拉拽”方式就能够完成设备与设备之间的连接,摈弃过往繁琐的多终端操作方式。

服务中心:服务中心就是原华为EMUI系统的负一屏。在HarmonyOS 2中,更多的快应用组成了原子组件,在不下载App的情况下也可以更快速实现对相应功能的操作。

服务中心即原有EMUI系统的负一屏,现在HarmonyOS的体系中,更多快应用组成了原子组件,可以实现在不下载App的情况下,更快速的实现对相应功能的操作。

通知中心:通知中心与控制中心实际上是将Android原有体系中的下滑状态栏一分为二。通知中心里显示App和手机电话等消息。

%title插图%num

2、分布式软总线技术,让用户可自行组装硬件
HarmonyOS与Android*大的区别,就在于HarmonyOS拥有分布式的总线,也是HarmonyOS实现“超级终端”概念的核心。搭载了HarmonyOS的设备可以互相结合,取长补短,实现万物互联时代的新操作体验。

比如,在一个手机想要做多机位拍摄时,通过软总线方式,把无人机、运动摄像头或其他设备的摄像头全都与手机链接起来,手机可以像调度本机摄像头一样去根据自己需要操控其他摄像头,组成一个多机位拍摄的超级终端。手机和电脑、平板之间也可以组成超级终端。虽然PC端运行的是Windows操作系统,手机是HarmonyOS,但只要PC端安装了HarmonyOS分布式插件,两者文件管理器就会互通,二者互相调用内容和材料将变得非常容易;比如发现了一个好的菜谱,通过食材的配比把食材放到搭载HarmonyOS 系统的烤箱后,只需要轻轻一按就可以做出美味佳肴。让设备不再是一台冷冰冰的设备,更可以有温度的贴心服务。基于HarmonyOS分布式的能力,可以让消费者根据自己的需要任意组装场景化的操作终端,有无穷的想象空间。

这就是超级终端的概念。用户可以利用超级终端对所有搭载HarmonyOS的设备进行融合连接。虽然操作起来很轻松,但实现这些功能背后实际上需要非常强大的技术支撑。

%title插图%num

3、软时钟基准和抗干扰算法
当连接变得简单之后,终端设备之间的无缝流转也是HarmonyOS 2的秘密武器之一,比如用手机听歌时,可以轻轻一拉,将手机里的歌声推到客厅的音响里播放,且不会感受到信道的干扰及延迟感。设备之间无缝流转得益于HarmonyOS 2核心的软时钟基准和抗干扰算法,主要解决音画同步和切换流畅问题。

软时钟的同步让三个连接在一起组成超级终端的设备,共同遵守着一个时钟基准;而抗干扰算法可以保证无线传输所带来的的常见的干扰,干扰一旦多,就会带来抖动、时延和丢包,抗干扰算法必须保证该场景下无线信道的干扰降低到能够容忍的范围之内。利用这两个技术,才能够保证终端切换时的画音同步,这是给用户带来便利背后的技术突破。

4、原子化服务
王成录表示,希望用卡片作为原子化服务的统一载体,作为所有HarmonyOS设备之间的统一沟通语言。卡片是原子化服务的载体,在服务中心可以轻松获取、分享,无需下载安装,一步到位获取各种服务,卡片作为HarmonyOS生态设备之间统一交互的载体和语言,卡片到哪里服务就会转到哪里。

在原子化服务的背后隐藏着“一次开发、多端部署,跨端流转的服务形态”,对于开发者而言,研发应用时只需要基于HarmonyOS 2写一次逻辑代码,便可以部署在各种HarmonyOS终端上,*大地降低了开发成本。
%title插图%num

性能全面提升,隐私安全有保障

 

王成录表示,性能是华为一直非常专注的领域。全新的HarmonyOS 2系统流畅度比上一代EMUI有大幅提升。手机在使用36个月后剩余空间*小的情况下,依然有接近新手机的读写速度。

HarmonyOS 2优化了后台应用保活能力,让任务持久在线,即使用了再多应用,也能实现状态恢复,离开时看到的信息回来可以继续看。比如,网购时临时回复微信消息、打开搜索App查资料,返回购物App时可以直接回到上次浏览的界面。此外,HarmonyOS 2还能让游戏玩得更持久:用搭载HarmonyOS 2的Mate 40 Pro玩《和平精英》,续航时间可达5.1个小时。

这背后有两个重要的技术升级:

1、内核层、硬件抽象层、ROM层、框架等技术优化

从华为的统计数据来看,大概有20%的用户在手机使用了36个月后,本机的ROM存储空间几乎达到了*限,这时候系统会变得非常慢。用户在操作手机每一个步骤时都会产生大量的数据,这些数据都随即地读取到本机存储空间里,读取存储器的速度一旦受到影响,手机的使用体验就会变得很糟糕。经测试,在HarmonyOS 2系统几乎占满的情况下,无论顺序读、顺序写、随机读和随机写的老化程度都大幅度降低,也就是说,使用HarmonyOS系统的用户,即使手机空间已经接近满载,但使用依然可以非常流畅。

2、华为自研全套图形栈

HarmonyOS 2系统里彻底使用了华为自研的全套图形栈,有几个方面的技术创新:

(1)把技术化的计算调度放到了系统里面,整个图形的渲染不再仅仅依赖于GPU,可以GPU、CPU联合做智能的调度和渲染;

(2)把渲染逻辑和业务处理逻辑两个线程分开,渲染逻辑和业务逻辑分离;

(3)不再做重复的绘图,让视频处理的负载大大降低。

这些技术累加起来,换来的就是用户操作、动销更流畅、续航时间更长。在这里,王成录举了个例子:用*新的苹果手机来比较,在苹果手机上玩一个重型游戏续航3.9小时,在华为手机上可以打5.1小时。

%title插图%num

另一方面,在消费者隐私安全部分也有了新的动作。为了确保全场景下的每个设备每次访问的安全,每一次数据存储、传输与使用的安全,开启了多设备协同身份认证,需要通过手机的人脸识别和手表连接的双重保险,才能完成解锁。同时,HarmonyOS对用户的数据分类管理、设备分级保护,为超级终端设置安全门槛:只有满足安全等级要求的设备才能访问相应安全等级的数据,让用户可以放心地使用多设备互联。以手机解锁为例,当用户打开多设备的协同认证,如果把手表和用户的脸部信息同时做认证,带来的可靠的等级会远远高于今天单维度的等级。

王成录表示,全新的HarmonyOS是*个基于开放原子开放基金会所做的*个发行版,OpenHarmony是一个开放社区的开源项目,只有基于开放的方式来做HarmonyOS的生态才有开放的可能,同时鼓励大家基于OpenHarmony这个开放社区去做各个领域发行版和产品。

 

生态先行军列阵,全场景新品均搭载HarmonyOS 2

 

介绍完HarmonyOS 2后,紧跟着便是一系列搭载了HarmonyOS的新品。

华为消费者业务COO何刚带来的*款HarmonyOS产品——华为WATCH 3。

1、华为WATCH 3系列

时隔四年,华为重启WATCH系列,耗时4年打造的华为WATCH 3是华为打造的年度智能手表旗舰。华为WATCH 3系列采用双芯架构,根据用户实际使用情况更大程度地节省功耗。依托华为长续航基因的优势,延续并升级了专业健康管理,新增腕部皮肤温度和体温检测功能,并将与华中科技大学同济医学院附属同济医院等专业医疗机构联合发起呼吸健康研究,实现呼吸系统感染初步筛查,全天候守护用户健康。同时,华为WATCH 3系列搭载HarmonyOS,成功打造出一个围绕手腕的交互中心、智慧中心和健康中心。

总结一下,搭载HarmonyOS 2的华为WATCH 3有以下亮点:

1、eSIM独立通信

2、远程控车

3、手势控制

4、体温检测

5、呼吸健康研究

6、100+运动模式,6种运动自动识别,设备间可联动

7、续航3~5天,超长续航模式下分别支持14天~21天

8、支持无线充电及反向充电

华为WATCH 3有运动款、时尚款(真皮表带和尼龙表带)、尊享款四个款式,售价2599元起;华为WATCH 3 Pro拥有时尚款、尊享款两种款式,售价3299元起,将于2021年6月2日21:08开启预售,6月11日0点正式开售。

2、华为MatePad Pro

华为MatePad Pro是全球首款搭载HarmonyOS 2的平板。它搭载了全新桌面,更加灵动。它通过更加有规则有序的布局,充分利用这块大屏。从大小不同的万能卡片上,可以直接查看常用的APP里的关键信息,比如查询航班行程、直接拨打畅连通话,还可以根据自己的需要定制万能卡片。

%title插图%num

华为首创的平行视界在新一代华为MatePad Pro上迎来了全新升级。在左右分屏状态下,用户可以让左右屏同应用的两个窗口任务并行操作。截至2021年6月,全球已有约4000款应用支持平行视界,进一步突破了平板使用的瓶颈,将平板变为可用、易用、好用的设备。

%title插图%num

全新预装HarmonyOS 2的MatePad Pro 亮点如下:

1、搭载5nm麒麟9000系列旗舰芯片,性能强劲;

2、12.6英寸OLED全面屏,90%屏占比;

3、对比度高达1000000:1,支持DCI-P3电影级色域的同时,色准达到了∆E<0.5的专业显示器级表现;

4、出色的横屏和多应用多任务操作体验,生产力强;

5、搭配手写笔,快速做笔记、画画、制作动画和视频;

6、基于HarmonyOS 2的多设备协同能力,与华为手机、电脑和智慧屏可随时组成超级终端。

华为MatePad Pro拥有曜石灰、冰霜银和夏日胡杨三种颜色,将于2021年6月2日21:08开启预售,6月10日00:00正式开售,8GB+128GB WLAN版售价4999元,8GB+256GB WLAN版售价5499元,8GB+256GB WLAN版含手写笔和键盘售价6699元,8GB+256GB 5G版含手写笔和键盘售价7999元。同时,10.8英寸的华为MatePad Pro也迎来了全新升级,配置从8GB+128GB起,售价3799元起,将同步预售和开售。

3、华为FreeBuds 4无线耳机

该耳机采用半入耳设计,*大降噪深度25dB,游戏延迟低至90ms。

基于HarmonyOS 2的“音频流转”功能,华为FreeBuds 4无线耳机可通过音频流转,自由选择将视频、音频分别投放在不同设备,实现跨设备影音协同。

为了使半入耳耳机也能拥有出色的降噪效果,华为在这款耳机中,运用了人耳自适应降噪(AEM)技术、双麦克风混合降噪两项先进技术,前者可根据佩戴者耳道轮廓和佩戴条件,从10多种降噪参数中,提供*佳降噪方案,后者可有效减少风噪的干扰,提升对残余噪声的拾取灵敏度,实现更为精准的降噪体验。

华为FreeBuds 4无线耳机亮点如下:

1、90ms游戏低时延

2、半开放主动降噪

3、40kHz宽音域发声单元

4、支持双设备连接

5、4.1克自重,更轻更舒适

售价方面,华为FreeBuds 4i无线耳机499元,华为FreeBuds 4无线耳机999元,华为FreeBuds Pro无线耳机是1099元起,适合不同消费人群。登录华为商城即可参与618预售活动,购买华为FreeBuds系列产品*高省200元,还有三期免息活动相伴。

4、MateView显示器

该显示器使用铝合金材质,28.2寸四边窄边框设计,采用4K+全面屏。外观方面,华为MateView显示器使用铝合金材质,28.2寸四边窄边框设计,屏占比达94%。

 

屏幕方面,华为MateView显示器采用4K+全面屏,亮度达500nit,支持10.7亿色,DCI-P3色域达98%,色准ΔE<2,通过了HDR400认证。还首创了HUAWEI Smart Bar隐藏式触控OSD。

采用*简机身设计的华为MateView,支架底部设计有华为分享感应区域,搭载HarmonyOS 2的华为手机只需要碰一碰,华为MateView即可开启Desktop Mode。

Desktop Mode是一种全新的交互桌面,实现了手机一碰秒变主机,显示器秒变“电脑”的操作,进入Desktop Mode后,用户可通过华为MateView无线连接的鼠标、键盘,对手机上的文档、图片和视频进行编辑,而且Desktop Mode支持多任务、多窗口同时运行,打开PPT工作界面时,可以直接拖拽备忘录中的文字、图库中的图片到PPT编辑界面,如桌面电脑般的操作体验,完成工作更得心应手。*终让手机变成华为MateView的“主机”,所有资料均只保存于手机之中,数据随人流转,便捷且安全。

值得一提的是,华为MateView开启Desktop Mode后,手机仍可独立使用,使用华为MateView处理繁重的Excel数据时,手机依然可以打开其他APP,拍照、接电话、视频等操作均可同步进行,完全不用担心手头的工作被打断。

基于HarmonyOS,Desktop Mode建立的是华为手机与华为MateView显示器的智慧互联,实现小屏到大屏的跃迁、移动轻内容消费端到办公生产端的跃迁,能延伸手机更广泛的生产力应用场景,将手机的计算能力和华为MateView显示大屏体验优势相结合,从而带来了全新的生产力接续和大屏浏览体验,为使用者提供了智慧办公的全新体验。

5、华为P50系列外观及四款4G版手机

在发布会的*后,华为还公布了P50系列的外观,并发布四款4G版手机,分别为Mate40 Pro、华为Mate40 E、华为Mate X2以及华为nova8 Pro,以上手机均搭载HarmonyOS。这四款手机将在6月3日进行预售,6月18日正式开售。但华为P50系列的具体发布时间没有公布。

 

一切过往,皆为序章

 

华为常务董事、消费者业务CEO余承东表示:“随着每个人身边的智能设备越来越多,我们已步入万物互联时代。没有人是一个孤岛,每个人、每个设备都是万物互联大陆的一部分。我们希望与更多合作伙伴、开发者共同繁荣鸿蒙生态,为全球消费者提供更好的体验、更好的产品、更好的服务。”

让服务跟着人走,让跨设备不再是棘手的事,HarmonyOS从诞生之日起,核心理念就是“万物互联”,不仅是手机与设备的连接,更是设备与设备之间的连接、人与设备之间的连接。

 

搭建内网ntp时间同步服务器

一般企业出于安全或者出口带宽等各方面原因,内网主机是无法直接接通外网,这个方法可以让内网无法上网的机器同步本机时间,而本机可以通过公网同步公网的ntp源。实现类似中转跳转的功能。
搭建之前需要2个主机,一个作为server端另一个用来作为client端。
进入正题:
在server端安装ntpd服务端,关闭防火墙或者放通防火墙端口
[root@xiaobo ~]# yum install -y ntp
#安装ntpd服务
[root@xiaobo ~]# systemctl stop firewalld
#关闭防火墙,如果不想关闭防火墙可以放通端口
[root@xiaobo ~]# firewall-cmd –permanent –add-port=123/udp
[root@xiaobo ~]# firewall-cmd –permanent –add-port=123/tcp
#防火墙具体还要看你们配置没有,如有配置请注意安全区域。

编辑/etc/ntp.conf 并更改文件内容
[root@xiaobo ~]# vim /etc/ntp.conf
#修改如下文件内容
restrict 127.0.0.1
restrict 192.168.80.0 mask 255.255.255.0 nomodify notrap
#允许那些网段或者IP同步,不做限制则0.0.0.0 mask 0.0.0.0.需要注意的是4.2版本的ntpd的restrict参数不要加notrust否则客户端会同步不了。
server ntp.aliyun.com prefer
#server自身和谁同步。我这里用的是阿里云的。
server 127.127.1.0
#把自身的时间同步给客户端。

配置完毕启动服务
[root@xiaobo ~]# systemctl start ntpd
#启动服务,7系列和6系列命令不一样,具体自行百度。
[root@xiaobo ~]# systemctl status ntpd
● ntpd.service – Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2019-01-26 22:08:24 CST; 1min 41s ago
Process: 2182 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 2184 (ntpd)
CGroup: /system.slice/ntpd.service
└─2184 /usr/sbin/ntpd -u ntp:ntp -g
#查看服务状态

服务端状态没有问题,找client去同步下试试看。
[root@xiaobo ~]# ntpdate 192.168.100.110
26 Jan 22:19:43 ntpdate[3156]: adjust time server 192.168.100.110 offset -0.001781 sec

如果出现the NTP socket is in use, exiting错误,关闭ntpd的服务在同步即可。在搭建server端的时候注意防火墙要放通UDP/123端口,包括你网络所经过的防火墙而不单单指的是主机上的防火墙,应该也考虑到中间链路的硬件防火墙。

命令行net time同步时间(内网)

首先还是推荐大家使用Internet时间来同步自己计算机的时间,这样做主要是方便,就是设置一个ntp服务器,我推荐下面的三个ntp服务器地址。

time.asia.apple.com  //亲测有效
asia.pool.ntp.org  //亲测有效
ntp.nict.jp  //亲测有效

如果上面的方法不可用,或者只有局域网,无法连接到互联网,可使用下面的方法:

cmd命令 net time的使用,可输入 net time /help 查看帮助,不同的计算机可能会有一些区别。

C:\>net time /help
此命令的语法是:

NET TIME
[\\computername | /DOMAIN[:domainname] | /RTSDOMAIN[:domainname]] [/SET]

NET TIME 将计算机的时钟与其他计算机或域的时钟同步,或显示计算机或域的时间。当在 Windows Server 域上不带
任何选项使用时,它显示指定为域的时间服务器的计算机的当前日期和时间。

\\computername  要检查或同步的计算机的名称。
/DOMAIN[:domainname]  指定同步 domainname 的主域控制器的时间。
/RTSDOMAIN[:domainname]  指定与 domainname 的可靠时间服务器同步。
/SET            将计算机的时间与指定计算机或域的时间同步。
/QUERYSNTP 和 /SETSNTP 选项已被弃用。请使用 w32tm.exe 配置 Windows 时间服务。

NET HELP 命令 | MORE 逐屏显示“帮助”。

也有可能是下面的这个样子。

语法
net time [{\\ComputerName | /domain[:DomainName] | /rtsdomain[:DomainName]}] [/set]
net time [\\ComputerName] [/querysntp] [/setsntp[:NTPServerList]]

参数
\\computername 
指定要检查或与之同步的服务器的名称。 
/domain[:domainname] 
指定要同步时钟的域。 
/rtsdomain[:domainname] 
指定要与之同步时钟的“可信时间服务器”所在的域。 
/set 
使计算机的时钟与指定的计算机或域的时间同步。 
/querysntp 
显示当前为本地计算机或 \\computername 所指定的计算机配置的网络时间协议 (NTP) 服务器的名称。 
/setsntp[:NTPServerList] 
指定本地计算机所使用的 NTP 时间服务器的列表。该列表可以包含 IP 地址 或 DNS 名称,并用空格分开。如果使用多个时间服务器,则必须使用引号引住该列表。

 

这命令是一个获取网络时间的命令。

例子1:获取显示本地的时间:net time \\127.0.0.1
例子2:获取显示其他服务器的时间:net time \\(这里是其他机子的ip)
例子3:要跟其他的机子同步的话,可以用命令:net time \\(这里是其他机子的ip) /set  /y

在使用这个命令之前,要取得net 的权限,用net use见立一个会话。在局域网中很好使。

出处:https://zhidao.baidu.com/question/89929763.html

===================================================

在做项目的时候,需要同步客户端和服务器之间的时间,通过net time同步电脑时间,在机器重启之后同步失败,则无法使用net time同步时间,

测试下来需要先可以正常访问共享目录,才能同步时间,所以如下命令:

net use \\192.168.1.112\ipc$ admin /user:admin #*个admin是密码,第二个admin是用户名;
net time \\192.168.1.112 /set /y   #此操作需要管理员权限;将本机的时间与IP为192.168.1.112的电脑进行同步;
net use \\192.168.1.112\ipc$ /delete

【参考文献】:

  1. NET TIME and w32time

出处:http://www.cnblogs.com/cnpirate/p/7411315.html

===================================================

如何进行域内时间同步及时间常用命令总结

域内各个服务器的时间保持一致,是一个很重要而又往往又容易被人忽略的问题,如果时间不同步或出现异常,往往会出现以下问题:

1. 服务器上应用程序Server端无法获取准确的日期,导致反馈给客户端的日期时间不准确

2. 系统日志上时间不正确,无法通过时间点查找错误信息

3. *用户无法连接网络,导致无法正常工作

4. Failover Cluster无法正常启动或切换

以下内容,我们会介绍如下获取修改系统时间,如何设置成与时间服务器同步,并介绍各个常用的与时间有关的命令。

一.   常见命令

1. 修改当前计算机时间

使用time命令,同时会要求您重设时间

%title插图%num

如果不需要设置时间,则直接回车即可

这个命令仅限于粗糙的时间调整。

2. 获取当前计算机的日期及时间信息

在Windows HyperV中,用户无法看到图形界面的日期与时间信息,但可以通过以下命令进行查看:

a)  在命令行中输入timedate.cpl, 系统自动弹出日期,时间设置窗口,可以在此位置进行设置

b)  在命令行中输入net  time \\IP地址或计算机名称,此命令还可以查看其他计算机的当前时间,例如: net time \\3.242.107.129, 如果是域内计算机,想查看当前域的整体时间 net time /domain:shinseifin

%title插图%num

3. 显示时区

a)  在命令行中输入timedate.cpl, 系统自动弹出日期,时间设置窗口,可以在此位置进行设置。

b)  W32tm /tz  显示本地计算机时区设置

%title插图%num

4.  很多时间我们想知道, 当前域内的计算机是从哪个服务器同步的时间,可以用如下命令:

W32tm /monitor /computers:计算机名称   (后面有如何查看计算机名称)

或者w32tm /monitor /domain:域名

结果如下

%title插图%num

这样如果发现域内时间异常,直接更改此对应PDC的计算机时间即可。

如何查询主机名?

在windows的查看远程主机名的方式,在命令行方式下,
方式一:
输入命令: nbtstat -A ip
例如:nbtstat -A 192.168.1.100 //-A 必须大写
此时会把主机所在的域名也显示出来,
方式二:
利用ping命令查主机名的方法是:
ping -a ip
例如:ping -a 192.168.1.100
显示结果如下所示:
pinging google.cn [192.168.1.100] with 32 bytes of data:
Reply from 192.168.1.100: bytes=32 time<1ms TTL=64
方式三
只能查看本机的计算机名,直接用ipconfig查询主机名的方法是:ipconfig /all

5. 更改完时间后,我们希望让一台计算机立即进行同步

W32tm /resync /computer:计算机名称

%title插图%num

6. 设置本地时间

上面提到直接使用time命令即可

7. 设置一台与另外计算机时间同步

使用net time 命令。格式如下

net time [\\computername|/domain[:domainname] | /rtsdomain[:domainname]] [/set]

net time [\\computername] [/querysntp] | [/setsntp[:ntp server list]]

参数说明:

◆ 无参数,显示被指派为本地计算机的Windows服务器域时间服务器的当前时间。
◆ \\computername,指定要检查或与之同步的服务器的名称。
◆ /domain[:domainname],指定要同步时间的域。
◆ /rtsdomain[:domainname],指定要与之同步的可信时间服务器所在的域。
◆ /set,使计算机的时钟与指定的计算机或域的时间同步。
◆ /querysntp,显示当前为本地计算机或 \\computername 所指定的计算机配置网络时间协议(NTP)服务器的名称。
◆ /setsntp[:ntp server list],指定本地计算机所使用的NTP时间服务器的列表。该列表可以包含IP地址或DNS名称,用空格分开。如果要使用多个时间服务器,该列表必须用引号引起来。

例如: net time \\3.242.107.142 /querysntp 查询使用哪一个sntp服务器

Net time \\3.242.107.143 /setsntp:time.windows.gov  指定计算机143与windows sntp服务器同步

Net time /set  \\3.242.107.142 设置当前计算机与与142时间同步

通常用来设置服务器的时间与某一服务器同步。

二.如何设置PDC的服务器时间?

1).  将服务器设置为内部硬件时钟

打开Service注册表,HKEY LOCAL MACHINE\SYSTEM\ CurrentControlSet\Services\W32Time\Parameters中ReliableTimeSource与LocalNTP(二进制)均设置为1,重启服务,net stop w32tim & net strart w32time

2).  将PDC的时间与公网服务器时间同步。

a)  net time /setsntp:192.43.244.18

b)  进入域控注册表修改Parameters

(1)将服务器类型改为 NTP,即修改“TYPE”值为NTP。

(2) 将该服务器配置为可靠的时间源,即修改“ReliableTimeSource”为1。

(3) 修改“LocalNTP”值为1。

(4) 指定时间源,即修改“NtpServer”为时间源地址。

(5)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient]分支,并双击SpecialPollInterval键值,将对话框中的“基数栏”选择到“十进制”上,输入框中显示的数字正是自动对时的间隔(以秒为单位),比如默认的604800就是由7(天)×24(时)×60(分)×60(秒)计算来的。设定时间同步周期(建议设为900=15分钟或3600=1小时等周期值),填入对话框,点击确定保存关闭对话框。

(6)   在命令提示符处,键入以下命令以重新启动 Windows 时间服务,然后按 Enter 键:net stop w32time && net start w32time

三.同步域内时间的步骤小结:

1.  确定域内的PDC,  net time /domain:domain名称

2.  查询PDC使用的时间源 net time \\PDC的IP地址 /QuerySntp

3.  修改PDC使用的时间源 net time \\PDC的IP地址 /SetSntp:事件源地址

4.  立即手动同步域内其他服务器的时间,使其与PDC保持一致。   net time /set或w32tm /resync /computer:PDC(IP),建议使用后一个命令,前一个命令可能会出问题,问题描述见后面。

5.  手动设置各个服务器的时间源,指向PDC(计算机名或IP地址)

Net time \\serverIP /setsntp:PDC(IP)

默认情况下,域内的服务器的时间同步机制如下:

%title插图%num

实例演示

域信息:域Test.com,PDC Server IP地址为192.168.100;2台Server的IP地址分别为192.168.1.101;192.168.1.102

说明:整个域内时间混乱,不同步,每个Server的时间都不一样

调整步骤:

1.  调试,查看整个域的时间源

在域内任意一台计算机,输入命令:W32tm /monitor /domain:test.com,可以获取PDC的IP地址

2.  登陆PDC Server,调整PDC的时钟,使其其时间准确,并让其与微软服务器time.windows.com同步;

Net time \\192.168.1.100 /setsntp: time.windows.com

3.  PDC服务器时间准确后,马上调整server的时间源192.168.1,101/102

查看这2台Server的数据源

Net time \\192.168.1.101 /Querysntp 或是

W32tm /monitor /computers:192.168.1.101,192.168.1.102

修改数据源

Net time \\192.168.1.101 /SetSntp:192.168.1.100

4.  设置时间源后,隔一段时间才能同步,我们可以手动设置立即同步

W32tm /resync /computer:192.168.1.101

W32tm /resync /computer:192.168.1.102

不建议使用net time /set 命令,因为有的系统不支持。

四.如何将Server服务器与PDC同步

用net time确定PDC,建议*好用w32tm /monitor,得出的效果*好,可以直接看到PDC地址

%title插图%num

首先需要确认PDC的时间,已经修改完毕,并且没有问题,

其次进入Server,运行net time /set \\PDC名称或地址

如域服务器的机器名是Server,命令如下:net time \\Server /set \\PDC名称或地址  /y

输入Y, 立即同步,即可

五.Q&A问答:

1. 为何当我使用net time /set  /Y 进行时间同步的时候,会出现异常,System Error 1314 has occurred?

出现以上问题,可以使用以下命令进行同步:

使用w32tm /resync /computer:需要同步的计算机名称或IP地址, 即可实现同步。

2. 时间同步的层次关系及理论介绍

为确保合理地使用公共时间,Windows 时间服务使用层级关系来控制授权,并且不允许出现循环。默认情况下,基于 Windows 的计算机使用下面的层级:

所有客户端桌面计算机都提名身份验证域控制器作为其入站时间伙伴。

所有成员服务器都遵循与客户端桌面计算机相同的过程。

域中的所有域控制器都提名主域控制器 (PDC) 操作主机作为其入站时间伙伴。

所有 PDC 操作主机都遵循域的层级来选择其入站时间伙伴。

在此层级中,位于林根的 PDC 操作主机成为组织的权威时间服务器。

在典型配置中,AD域中的计算机以下列顺序同步时间:

1. 域客户机或成员服务器向本域DC请求同步

2. 一个域中的DC会向本域的PDC模拟器进行同步
3. 所有非森林根域的PDC模拟器向森林根域的PDC模拟器同步

4. 森林根域PDC模拟器配置为向外部时间源同步。

Windows XP/2003及之后的时间服务使用NTP(网络时间协议)通过网络进行同步。Windows时间服务的组件包括:“Service Control Manager”, “Windows Time Service Manager”, “Clock Discipline”和“Time providers”。

进行时间同步时,这些组件的工作过程如下:

n  “Input providers”向NTP时间源请求并接收时间样本。

n  时间样本被传递到”Windows Time Service Manager”。

n  “Windows Time Service Manager”收集所有样本,并将其传递到”Clock Discipline”。

n  “Clock Discipline”使用NTP算法选择*佳时间样本。

n  “Clock Discipline”调整系统时钟频率或是直接更改时间

3. 时间同步使用哪些协议?

*种:SNTP,是现在应用较多的一种网络时间协议,Windows域内的时间同步就是使用的这种协议,使用UDP123端口进行通讯

第二种:Time Protocol,服务器在TCP/UDP 37端口上进行监听,这种协议只能使用到2036年

六. W32tm 的使用,由微软的帮助命令获取的信息,人工翻译,欠缺之处见谅。

(1). w32tm /monitor [/domain:]

               [/computers:[,[,…]]]

               [/threads:]

W32tm /monitor [/domain:域名]或[/computers: pc1,pc2,…]或者[/threads:数目]

 domain – specifies which domain to monitor. If no domain name

is given, or neither the domain nor computers option is

specified, the default domain is used. This option may be

used more than once.

指定哪个域被监控,如果没有指定,则默认是当前的域

computers – monitors the given list of computers. Computer

names are separated by commas, with no spaces. If a name is

prefixed with a ‘*’, it is treated as a PDC. This option

may be used more than once.

监控多个计算机,计算机之间用逗号隔开,如果计算机名称前面加*号,代表当前计算机时PDC,会被特殊对待

threads – how many computers to analyze simultaneously. The

default value is 3. Allowed range is 1-50.

指定多少计算机被同时分析,默认值为3,数字范围为1~50

(2). w32tm /ntte

Convert a NT system time, in (10^-7)s intervals from 0h 1-Jan 1601,

into a readable format.

将当前时间设置为NT的时间类型, 起始时间为1601年1月1号,只读模式

w32tm /ntpte

Convert an NTP time, in (2^-32)s intervals from 0h 1-Jan 1900, into

a readable format.

将当前时间设置为NTP的时间类型, 起始时间为1900年1月1号,只读模式

(3). w32tm /resync [/computer:] [/nowait] [/rediscover] [/soft]

Tell a computer that it should resynchronize its clock as soon

as possible, throwing out all accumulated error statistics.

通知一台计算机,它需要立即同步时钟,显示各种各样的错误统计。

computer: – computer that should resync. If not

specified, the local computer will resync.

计算机名称,如果不指定,表示本地计算机需要同步。

nowait – do not wait for the resync to occur;

return immediately. Otherwise, wait for the resync to

complete before returning.

无需等待,立即返回,否则需要完成同步后,才可以进入下一个等待命令

rediscover – redetect the network configuration and rediscover

network sources, then resynchronize.

是否需要检测网络配置和网络类型,然后再同步

soft – resync utilizing existing error statistics. Not useful,

provided for compatibility.  软同步,如果同步有误,则提供兼容性。

(4)w32tm /stripchart /computer: [/period:]

    [/dataonly] [/samples:]

Display a strip_chart of the offset between this computer and

another computer.

以条形图的形式显示出当前计算机与另一台计算机之间的时间差异值

computer: – the computer to measure the offset against.

目标计算机

period: – the time between samples, in seconds. The

default is 2s

2个实例之间的间隔时间,默认是2秒

dataonly – display only the data, no graphics.

只显示数据,没有图形

samples: – collect samples, then stop. If not

specified, samples will be collected until Ctrl-C is pressed.

指定实例的个数,如果没有指定需要用Ctrl—C 停止

注意:这里指定的计算机不能是普通计算机,必须是时间服务器(SNTP源),这个命令本质就是查看当前客户源与一个SNTP(时间源)服务器的时间差

如果是普通计算机会出现_____0x800705B4错误,截图如下:

%title插图%num

采用正确的时间源进行比较,截图如下:

%title插图%num

(5). w32tm /config [/computer:] [/update]

    [/manualpeerlist:] [/syncfromflags:]

    [/LocalClockDispersion:]

computer: – adjusts the configuration of . If not

specified, the default is the local computer.

指定需要调整的目标计算机,默认为本地

_update- notifies the time service that the configuration has

changed, causing the changes to take effect

通知time service 服务,配置信息已经发生变化,需要让变化生效。

manualpeerlist: – sets the manual peer list to ,

which is a space-delimited list of DNS and/or IP addresses.

When specifying multiple peers, this switch must be enclosed in

quotes.

设定手动管道列表,多个DNS和IP地址用空格分开。

syncfromflags: – sets what sources the NTP client should

sync from. should be a comma separated list of

these keywords (not case sensitive):

MANUAL – include peers from the manual peer list

DOMHIER – sync from a DC in the domain hierarchy

(6). w32tm /tz

Display the current time zone settings.

显示当前时区设置

(7). w32tm /dumpreg [/subkey:] [/computer:]

Display the values associated with a given registry key.

显示指定注册表的值

The default key is HKLM\System\CurrentControlSet\Services\W32Time

(the root key for the time service).

subkey: – displays the values associated with subkey of the default key.

computer: – queries registry settings for computer

显示写在注册表中的值,默认位置为HKLM\System\CurrentControlSet\Services\W32Time