(仓颉) Cangjie 刷力扣基础语法小结
文章目录
- 🧓官方资料
- 🧓力扣经典前 3 题
- 🕷️[1. 两数之和 - 力扣(LeetCode)](https://leetcode.cn/problems/two-sum/description/)
- 🕷️[2. 两数相加 - 力扣(LeetCode)](https://leetcode.cn/problems/add-two-numbers/description/)
- 🕷️[3. 无重复字符的最长子串 - 力扣(LeetCode)](https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/)
- ⭐END
- 🌟交流方式
🧓官方资料
官网
- 官网
- 仓颉编程语言官网
- 下载
- 下载中心-仓颉编程语言官网
- 文档
- 文档-仓颉编程语言官网
- 在线 IDE
- 在线体验-仓颉编程语言官网
官方视频教程
- 仓颉编程语言入门教程_哔哩哔哩_bilibili
三方在线 IDE
- 仓颉 Playground (zxilly.dev)
(个人测试下来该三方比官方的在线 ide 好用,但是目前编译器的版本比较落后)
本文编写时间的仓颉版公测版本为:Cangjie 0.53.13 Beta
叠甲:笔者并非专门研究仓颉,本文中仅是对于使用仓颉在力扣刷题的一些基础总结。
文中难免有些错误,且仓颉正在快速发展中,可能过段时间有些东西就不对了。请自我甄别。
🧓力扣经典前 3 题
本文编写时间的力扣的仓颉版本为:Cangjie 0.53.11
且目前力扣还未所有题目都支持仓颉,当然应该会慢慢补全的,大家等等期待吧。
下面直接以实际 ac 代码进行讲解。不考虑包。
因为都是典中典的题目,就不放题意和思路了。
🕷️1. 两数之和 - 力扣(LeetCode)
class Solution {func twoSum(nums: Array<Int64>, target: Int64): Array<Int64> {let ans = [0, 0]for (i in 0..nums.size) {for (j in (i + 1)..nums.size) {if (nums[i] + nums[j] == target) {ans[0] = ians[1] = jreturn ans}}}[]}
}
-
数据类型
- 值类型,如:基础数据类型,
struct
- 引用类型,如:
class
,Array
- 值类型,如:基础数据类型,
-
变量声明关键字
var
表示可变let
表示不可变(若是引用类型,仅表示应用关系不可变)
-
struct
和class
- 虽然一些简单情况看起来差不多,但这两个有很大不同
- struct 值类型,this 是值
- class 应用类型,this 是应用
- class 可继承
- 等等(不展开说了)
-
函数
- 返回值以尾缀返回的形式表示
- 函数参数不得修改
-
字面量
- 普通数字的字面量默认是
Int64
- 普通数字的字面量默认是
-
表达式
- 凡是可求值的语言元素都是表达式
- 因此函数的最后可以不写
return
,直接写要返回的内容,比如上方代码中的[]
,会正确匹配到返回值: Array<Int64>
-
循环
-
for in
循环,仓颉中的没有三段式的for
,只有范围for
-
想自由控制循环用
while
-
0..nums.size
是区间类型的简写-
// [0, 10]for (i in 0..=10) // [0, 10)for (i in 0..10)
-
-
-
数组
-
数组长度不可变
-
可变数组可用
ArrayList
-
数组长度通过
size
获取,是属性不是函数 -
数组字面量用中括号表示,如
[0, 1, 2]
表示长度为 3 内是1, 2, 3
的数组 -
[1, 2, 3]
等效于Array<Int64>(3, {i => i})
-
Array
两种常见的初始化方式-
// 空初始化let a = Array<Int64>()// 拷贝let b = Array<Int64>(a)// item:<内容> // 注意,这个方式初始化是`引用`初始化let c = Array<Int64>(3, item: 0)// 使用 lambda 初始化let d = Array<Int64>(3, {i => i + 1})
-
-
class Solution {func twoSum(nums: Array<Int64>, target: Int64): Array<Int64> {let mp = HashMap<Int64, Int64>()for (i in 0..nums.size) {let d = target - nums[i]if (mp.contains(d)) {return [mp[d], i]}mp.put(nums[i], i)}return [-1, -1]}
}
std.collection 包
public class HashMap<K, V> <: Map<K, V> where K <: Hashable & Equatable<K> {public init()public init(elements: Collection<(K, V)>)public init(elements: Array<(K, V)>)public init(capacity: Int64)public init(size: Int64, initElement: (Int64) -> (K, V))
}
HashMap
是基础的Collection
类型,是类不是结构体
- 常用函数
- contains
- put
- putAll
- remove
- get
- keys
- values
- 有重载的
operator[]
- 若直接取未存储的键,则报异常
🕷️2. 两数相加 - 力扣(LeetCode)
/*** Definition for singly-linked list.* public class ListNode {* public var val: Int64* public var next: ?ListNode* public init() {* val = 0* next = None* }* public init(val: Int64) {* this.val = val* next = None* }* }*/class Solution {func addTwoNumbers(l1: ?ListNode, l2: ?ListNode): ?ListNode {var (p1, p2) = (l1, l2)var head = ListNode()var dummy = headvar carry = 0var val = 0while (p1.isSome() || p2.isSome()) {var x = 0if (p2.isNone()) {x = carry + p1.getOrThrow().valp1 = p1.getOrThrow().next} else if (p1.isNone()) {x = carry + p2.getOrThrow().valp2 = p2.getOrThrow().next} else {x = carry + (p1.getOrThrow().val) + (p2?.val ?? 0)p1 = p1.getOrThrow().nextp2 = p2?.next ?? None}carry = x / 10var node = ListNode(x % 10)dummy.next = nodedummy = node}if (carry != 0) {dummy.next = ListNode(carry)}return head.next}
}
这里抛出仓颉一个非常重要的内容,Option<T>
Option<T>
是一个非常重要的类型。
充斥着仓颉的各个地方,因为可以使用 Option<T>
来避免空指针。
- 可以使用运算符
?
来表示类型 - 可以用
??
语法糖来取值,如:p ?? None
- 可以使用
?.
语法糖来取值, 如:p?.next ?? None
🕷️3. 无重复字符的最长子串 - 力扣(LeetCode)
class Solution {func lengthOfLongestSubstring(s: String): Int64 {let n = s.sizevar ans = 0var vis = HashSet<Rune>()for (i in 0..n) {// expected 'Rune', found 'UInt8'let ch = Rune(s[i])while (vis.contains(ch)) {let pre = Rune(s[i - vis.size])vis.remove(pre)}vis.put(ch)ans = max(ans, vis.size)}return ans}
}
struct String
public struct String <: Collection<Byte> & Equatable<String> & Comparable<String> & Hashable & ToString {public static const empty: Stringpublic const init()public init(value: Array<Rune>)public init(value: Collection<Rune>)
}
仓颉本身具有字符类型,Rune
String
是 utf-8
的类型
-
字符串不得修改
-
opertor[]
返回的类型是Byte
。public type Byte = UInt8
-
可以转为字符数组等形式进行操作
-
public func toArray(): Array<Byte>public func toRuneArray(): Array<Rune>
-
-
Rune
和UInt8
不能直接进行运算,建议统一转化为UInt32
进行操作
⭐END
🌟交流方式
关注我,学习更多C/C++,python,算法,软件工程,计算机知识!
⭐交流方式⭐ |C/C++|算法|设计模式|软件架构-CSDN社区
B站
👨💻主页:天赐细莲 bilibili
![]()
相关文章:
(仓颉) Cangjie 刷力扣基础语法小结
文章目录 🧓官方资料🧓力扣经典前 3 题🕷️[1. 两数之和 - 力扣(LeetCode)](https://leetcode.cn/problems/two-sum/description/)🕷️[2. 两数相加 - 力扣(LeetCode)](https://leet…...
Phoenix5.1.3安装
环境说明 准备三台服务器,分别为:bigdata141(作为HBase主节点)、bigdata142、bigdata143,已经搭建好HBase集群,我这边HBase版本为2.2.7再准备一台服务器,bigdata144,可作为Phoenix客…...
深入理解 Apache Shiro:安全框架全解析
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
机器学习:全面学习路径指南
摘要: 本文精心规划了一条从入门到精通机器学习的学习路线,详细涵盖了基础理论构建、核心技术栈掌握、主流算法学习、实践项目锻炼以及前沿领域探索等多个关键阶段。通过逐步深入各个层面,介绍必备的数学知识、编程工具、经典与现代机器学习算…...
二叉树交换相关算法题|递归/非递归交换所有节点左右子树(C)
交换左右子树 设树B是一棵采用链式结构存储的二叉树,编写一个把树B中所有节点的左右子树进行交换的函数 算法思想 采用递归算法实现交换二叉树的左右子树,首先交换root节点左孩子的左右子树,然后交换root节点右孩子的左右子树,…...
什么是纯虚函数?什么是抽象类?纯虚函数和抽象类在面向对象编程中的意义是什么?
纯虚函数 纯虚函数是一个在基类中声明但不实现的虚函数。它的声明方式是在函数声明的末尾添加 0。这意味着这个函数没有提供具体的实现,任何继承这个基类的派生类都必须提供这个函数的实现,否则它们也会变成抽象类,无法实例化。 示例&#…...
高效利用资源:分布式有状态服务的高可靠性设计
在分布式系统设计中,实现有状态服务的高可靠性通常采用主备切换的方式。当主服务停止工作时,备服务接管任务,例如通过Keepalive实现VIP的切换以保证可用性。然而,这种方式存在资源浪费的问题,因为备服务始终处于空转状…...
网络安全中的 SOC 是什么?
当今世界,网络威胁日益增多,确保网络安全已成为各种规模企业的首要任务。网络安全讨论中经常出现的一个术语是 SOC,即安全运营中心的缩写。但网络安全中的 SOC 是什么呢? SOC在防御网络威胁、管理安全事件和全天候监控系统方面发…...
QtCreator UI界面 菜单栏无法输入中文
如下图红色所示的区域,直接输入是无法输入中文的: 解决方法:在右边的属性值里输入即可 也可以参考这位同学的解决方法:友情链接...
圆桌对话:AI数字笔迹,数字化时代的重要驱动力 | 2024 AI+数字笔迹创新应用发展论坛
12月6日,以“聚焦创新应用,AI引领赋能”为主题的2024 AI数字笔迹创新应用发展论坛在重庆两江新区举办。本届论坛由重庆市大数据应用发展管理局和重庆两江新区管理委员会联合指导,重庆亲笔签数字科技有限公司主办。 论坛现场一场题为“数字化…...
Tablesaw封装Plot.ly实现数据可视化
上文介绍tablesaw的数据处理功能,本文向你展示其数据可视化功能,并通过几个常用图表示例进行说明。 Plot.ly包装 可视化是数据分析的重要组成部分,无论你只是“查看”新数据集还是验证机器学习算法的结果。Tablesaw是一个开源、高性能的Java…...
在Linux(ubuntu22.04)搭建rust开发环境
1.安装rust 1.安装curl: sudo apt install curl 2.安装rust最新版 curl --proto ‘https’ --tlsv1.2 https://sh.rustup.rs -sSf | sh 安装完成后出现:Rust is installed now. Great! 重启当前shell即可 3.检验是否安装成功 rustc --version 结果出现&…...
Less和SCSS,哪个更好用?
前言 Less 和 SCSS 都是流行的 CSS 预处理器,它们的目的都是扩展 CSS 的功能,使样式表更具组织性、可维护性和可重用性。虽然它们有许多相似之处,但在语法、特性和工作方式上也存在一些差异。 Less Less 是一种动态样式表语言,…...
vuex作用及五大组成部分
Vuex 是 Vue.js 官方的状态管理工具,用于管理应用中的全局状态。它的作用主要是解决组件间的状态共享和数据同步问题,特别是在组件复杂嵌套或兄弟组件通信中提供清晰、结构化的解决方案。 Vuex 的作用 集中管理状态: 将组件的共享状态抽取出…...
vue借助西瓜播放器插件实现视频播放
西瓜播放器官网 西瓜播放器 安装 npm install xgplayer 使用案例 vue3为例 <script setup lang"ts"> import Player from xgplayer import { ref, unref, onMounted, watch, onBeforeUnmount, nextTick } from vue import xgplayer/dist/index.min.csscon…...
PHP无法读取.env的配置变量原因
今天帮一个客户在一台服务器配置laravel,在安装好宝塔后,配置了php环境,把laravel项目上传,并且在根目录的.env上配置好数据库等信息后,发现无法正常使用 通过排查发现.env的变量无法正常获取,排查了好久后…...
Android 15(V)新功能适配,雕琢移动细节之美
Android 15,内部代号为Vanilla Ice Cream,是Android移动操作系统的最新主要版本,于2024年2月16日在开发者预览版1中发布。Android 15源代码于 2024年9月4日发布。Android 15稳定版于2024年10月15日发布。 以下是针对 Android 15(…...
Qt自定义类型在信号槽中的使用
引言 示例自定义数据类型信号槽效果检查代码注册自定义类型信号槽使用QVariant传递参数总结附加绑定信号槽,传递的参数如果是自定义类型的变量,槽函数不会响应。为什么呢?是因为自定义类型没有被写入元对象系统,对于Qt来说,不认识这个数据类型,Qt是以事件来驱动的,信号槽…...
自适应卡尔曼滤波(包括EKF、UKF、CKF等)的创新思路——该调什么、不该调什么
在调节自适应卡尔曼滤波时,需要注意的参数和矩阵都对滤波器的性能有直接影响。本文给出详细的说明,包括相关公式和 MATLAB 代码示例 文章目录 需要调节的参数1. **过程噪声协方差矩阵 Q Q Q**:2. **测量噪声协方差矩阵 R R R**:…...
Ape-DTS:开源 DTS 工具,助力自建 MySQL、PostgreSQL 迁移上云
Ape-DTS 是一款高效、轻量级且功能强大的开源工具,专注于解决数据迁移、同步、校验、订阅与加工的需求。无论是将自建的 MySQL/PostgreSQL 数据库迁移到云端,还是在不同数据库间进行数据迁移,Ape-DTS 都能为您提供便捷且可靠的解决方案。它特…...
SpringBoot中使用MyBatis-Plus详细介绍
目录 一、MyBatis-Plus的使用步骤 1.引入MybatisPlus的起步依赖 2.定义Mapper(也叫dao)层的接口 3.MyBatis-Plus中常用注解 4. 使用MyBatis-Plus时要做如下配置 5.条件构造器 Wrapper 一、MyBatis-Plus的使用步骤 1.引入MybatisPlus的起步依赖 My…...
Buuctf Web题解
写在前面, 本人小白一枚,记录一下web做题过程,大部分为个人理解可能有些地方写的不够明确还请见谅。当然由于刚入手web题,所以有些题会没有思路,这时会参考其他大佬的题解过程。本文会一直更新,由于是第一次…...
Linux 支持多个spi-nor flash
1. 需求 通常在嵌入式开发过程中可能会遇到需要再同一个SPI总线上挂载多个spi nor flash才能满足存储需求。 2. 技术简介 对于spi-nor flash驱动通常不需要驱动开发人员手搓,一般内核会有一套固定的驱动,而且走的是内核的MTD子系统那一套,市…...
APP、小程序对接聚合广告平台,有哪些广告变现策略?
开发者对接聚合广告平台,可以让自身流量价值最大化,获得更多的广告曝光机会,对接单一的广告联盟容易造成广告填充不足,收益不稳定的问题。#APP广告变现# APP开发者根据应用的生命周期、用户特征和产品定位,选择最适合…...
RPC设计--应用层缓冲区,TcpBuffer
为什么需要应用层的buffer 为了方便数据处理,从fd上直接读写然后做包的组装、拆解不够方便方便异步发送,将数据写到应用层buffer后即可返回,让epoll即event_loop去异步发送。提高发送效率,多个小包可合并发送 buffer 设计 可以…...
微服务的问题
1.创建maven项目 然后配置对应的maven地址 2.创建父工程 删掉其中的src文件 在父pom中进行版本依赖和管理 如下图所示 3.在子文件中进行添加依赖 然后刷新maven进行下载...
开源模型应用落地-知识巩固-如何正确搭建生产级AI服务(一)
一、前言 将大语言模型集成至vllm,能够显著实现推理加速,让模型在处理任务时更加高效快捷,极大地提升了响应速度,减少用户等待时间。具体而言,一方面它能大幅提高吞吐量,vLLM 借助 PagedAttention巧妙地对attention中缓存的张量进行高效管理,从而达成比 HuggingFace Tra…...
Uniapp Android SpringBoot3 对接支付宝支付(最新教程附源码)
Uniapp Android SpringBoot3 对接支付宝支付(最新教程附源码) 1、效果展示2、后端实现2.1 引入支付宝SDK依赖 pom.xml2.2 配置 application.yml2.3 支付宝相关代码2.3.1 AlipayConfig.java2.3.2 ZfbPayConfig.java2.3.3 支付接口2.3.4 支付回调处理接口&…...
SpringSpringBoot常用注解
Spring 和 Spring Boot 是 Java 开发中广泛使用的框架,它们提供了许多注解来简化配置和开发过程。以下是一些 Spring 和 Spring Boot 中常用的注解: Spring 常用注解 Component 用于标注一个类为 Spring 容器的一个组件,Spring 会自动…...
【机器人】振动分析和控制工具之Bode图
Bode 图完整介绍 Bode 图由两个部分组成: 幅值图 (Magnitude Plot):描述系统对不同频率输入信号的增益大小(幅值响应)。相位图 (Phase Plot):描述系统输出信号相对于输入信号的相位差。 Bode 图的横轴是频率&#x…...
基于SpringBoot的“外卖点餐系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“外卖点餐系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能图 用户功能界面 订单管理界面 配送单管理…...
第十七章 使用 MariaDB 数据库管理系统
1. 数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代,互联网上每天都会生成海量的数据信息,数据库技术也从最初只能存储简单的表格数据的单一集中存储模式,发展到了现如今存储海量…...
sql多表联查图文
内连接(INNER JOIN) 语法: SELECT 列名 FROM 表1 INNER JOIN 表2 ON 表1.列名 表2.列名;示例: SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 表1.列名 表2.列名;左外连接(LEFT JOIN) 语法 SELECT 列名 FROM…...
网络安全——防火墙
基本概念 防火墙是一个系统,通过过滤传输数据达到防止未经授权的网络传输侵入私有网络,阻止不必要流量的同时允许必要流量进入。防火墙旨在私有和共有网络间建立一道安全屏障,因为网上总有黑客和恶意攻击入侵私有网络来破坏,防火…...
单独测试 pyautogui 的鼠标点击功能,确保它能够在当前环境中正常工作,鼠标自动点击的录制回放功能
感谢您提供的详细日志信息。根据您的反馈,问题可能出在 pyautogui 没有正确获取鼠标焦点或无法在预期的位置执行点击操作。我们将采取以下步骤来进一步诊断和解决这个问题: 1. **确保 pyautogui 正确执行点击操作**: - 我们将添加更多的调…...
图片底部空白缝隙解决法方案(CSS)
当我想实现一个垂直轮播图时,图片底部会出现一个空白缝隙导致切换轮播图片显示不完整。 这里可以用两个方法解决 一、给图片添加(垂直对齐)vertical-align:baseline|middle|top; vertical-align属性的值可以是 (1)关键字值:baseline|midd…...
URI 未注册(设置 语言和框架 架构和 DTD)
一、问题描述:在springboot项目中的resources中新建mybatis-config.xml文件时,从mybatis文档中复制的代码报错:URI 未注册(设置 | 语言和框架 | 架构和 DTD) 二、解决:在Springboot项目的设置->架构和DTD中添加 红色的网址&…...
STL-string类
目录 string类的意义 C语言原始的字符串 字符串类题目 string类 string类文档 auto和范围for auto是个关键字 范围for string类的接口 string的模拟实现 浅拷贝 深拷贝 写时拷贝 string类的意义 C语言原始的字符串 字符串是以\0结尾的字符的合集,为了方便操作,C标准库提…...
HTML前端开发-- Iconfont 矢量图库使用简介
一、SVG 简介及基础语法 1. SVG 简介 SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形格式,用于在网页上显示二维图形。SVG 图形可以无限缩放而不会失真,非常适合用于图标、图表和复杂图形。SVG 文件是文本文件&#x…...
C++的一些经典算法
以下是C的一些经典算法: 一、排序算法 冒泡排序(Bubble Sort) 原理: 它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换…...
LNMP和Discuz论坛
文章目录 LNMP和Discuz论坛1 LNMP搭建1.1 编译安装nginx服务1.1.1 编译安装1.1.2 添加到系统服务 1.2 编译安装MySQL服务1.2.1 准备工作1.2.2 编辑配置文件1.2.3 设置路径环境变量1.2.4 数据库初始化1.2.5 添加mysqld系统服务1.2.6 修改mysql的登录密码 1.3 编译安装PHP服务1.3…...
华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架的SGD优化器案例实现
SGD优化器基本原理讲解 随机梯度下降(SGD)是一种迭代方法,其背后基本思想最早可以追溯到1950年代的Robbins-Monro算法,用于优化可微分目标函数。 它可以被视为梯度下降优化的随机近似,因为它用实际梯度(从…...
μC/OS-Ⅱ源码学习(3)---事件模型
快速回顾 μC/OS-Ⅱ中的多任务 μC/OS-Ⅱ源码学习(1)---多任务系统的实现 μC/OS-Ⅱ源码学习(2)---多任务系统的实现(下) 本文开始,进入事件源码的学习。 事件模型 在一个多任务系统里,各个任务在系统的统筹下相继执行,由于执行速度极快&a…...
UnityShaderLab 实现黑白着色器效果
实现思路:取屏幕像素的RGB值,将三个通道的值相加,除以一个大于值使颜色值在0-1内,再乘上一个强度值调节黑白强度。 在URP中实现需要开启Opaque Texture ShaderGraph实现: ShaderLab实现: Shader "Bl…...
【Linux】文件管理必备知识和基本指令
【Linux】文件管理必备知识和基本指令 什么是操作系统什么是文件什么是路径01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令(重要):06.rmdir指令 && rm 指令(重要):rmdir指令rm指令 0…...
移远EC200A-CN的OPENCPU使用GO开发嵌入式程序TBOX
演示地址: http://134.175.123.194:8811 admin admin 演示视频: https://www.bilibili.com/video/BV196q2YQEDP 主要功能 WatchDog 1. 守护进程 2. OTA远程升级 TBOX 1. 数据采集、数据可视化、数据上报(内置Modbus TCP/RTU/ASCII,GPS协…...
CSS 浮动定位
浮动定位 float : 浮动定位 left 左浮动right 右浮动 clear : 清除浮动 leftrightboth 浮动定位会导致 元素脱离正常文档流 、 对应的 父 元素 也可能会产生 高度坍塌 。 解决 父元素 高度坍塌的方案有: 1) 父元素 添加 overflow , 值 为 除 visible 之…...
vmware vsphere5---部署vCSA(VMware vCenter Server)附带第二阶段安装报错解决方案
声明 因为这份文档我是边做边写的,遇到问题重新装了好几次所以IP会很乱 ESXI主机为192.168.20.10 VCSA为192.168.20.7,后台为192.168.20.7:5480 后期请自行对应,后面的192.168.20.57请对应192.168.20.7,或根据自己的来 第一阶段…...
Android Webview 详解
一 简介 一个基于webkit引擎、展现web页面的控件 Android 4.4前:Android Webview在低版本 & 高版本采用了不同的webkit版本的内核Android 4.4后:直接使用了Chrome内核 1.1 作用 在 Android 客户端上加载h5页面在本地 与 h5页面实现交互 & 调用…...
如何使用程序查询域名whois信息?
直接使用TCP协议向WHOIS服务器的43端口发送查询请求即可返回WHOIS信息。 一些国际域名(.COM/.NET/.CC等)需要继续向各注册商的WHOIS服务服务发送查询请求来获取详细信息。 大部分New gTLD来说,服务器是“whois.nic.[后缀]”,例如.red的WHOIS服务器为whoi…...