ArkTS语言(三)

news/2025/10/29 14:47:13/文章来源:https://www.cnblogs.com/guble/p/19174419

学习ArkTS语言

ArkTS是HarmonyOS的主要应用开发语言,在TypeScript基础上进行了扩展,保留了其基本风格,并通过增强静态检查和分析来提高程序的稳定性和性能。本教程将帮助开发者掌握ArkTS的核心功能、语法及最佳实践,以便高效地构建高性能移动应用。

1.String 字符串

TypeScript 中的 String 类提供了丰富的功能,使得对字符串的处理变得非常方便。通过学习和使用这些常见的方法,可以帮助开发者更高效地进行字符串操作,从简单的查找替换到复杂的分割和格式化。掌握这些方法可以极大提高开发效率。

1.1 查询和提取

1.1.1 charAt(index: number): string;

● 功能:返回指定索引处的字符。
● 参数:
○ index(必需):要获取的字符的索引。
● 返回值:指定索引处的字符。
● 示例:

const str = "Hello, world!";
console.log(str.charAt(7)); // 输出: "w"

1.1.2 indexOf(searchString: string, fromIndex?: number): number

● 功能:返回 searchString 在字符串中第一次出现的索引,如果没有找到则返回 -1。
● 参数:
○ searchString(必需):要查找的子字符串。
○ fromIndex(可选):开始搜索的位置。默认为 0。
● 返回值:searchString 第一次出现的索引,如果没有找到则返回 -1。
● 示例:

const str = "Hello, world!";
console.log(str.indexOf("world")); // 输出: 7
console.log(str.indexOf("Java")); // 输出: -1

1.1.3 lastIndexOf(searchValue, fromIndex?):number

● 功能:返回 searchValue 在字符串中最后一次出现的索引,如果没有找到则返回 -1。
● 参数:
○ searchValue(必需):要查找的子字符串。
○ fromIndex(可选):开始搜索的位置。默认为字符串长度减 1。
● 返回值:searchValue 最后一次出现的索引,如果没有找到则返回 -1。
● 示例:

const str = "Hello, world! Hello, universe!";
console.log(str.lastIndexOf("Hello")); // 输出: 13
console.log(str.lastIndexOf("Java")); // 输出: -1

1.1.4 slice(start, end?):string

● 功能:返回一个新的字符串,包含从开始到结束(不包括结束)的字符串的一部分。
● 参数:
○ start(必需):开始提取的位置。
○ end(可选):结束提取的位置(不包括)。如果省略,则提取到字符串末尾。
● 返回值:新的字符串。
● 示例:

const str = "Hello, world!";
console.log(str.slice(7, 12)); // 输出: "world"
console.log(str.slice(-6, -1)); // 输出: "world"

1.1.5 substring(start, end?):string

● 功能:返回一个新的字符串,包含从开始到结束(不包括结束)的字符串的一部分。
● 参数:
○ start(必需):开始提取的位置。
○ end(可选):结束提取的位置(不包括)。如果省略,则提取到字符串末尾。
● 返回值:新的字符串。
● 示例:

const str = "Hello, world!";
console.log(str.substring(7, 12)); // 输出: "world"
console.log(str.substring(7)); // 输出: "world!"

1.1.6 substr(from: number, length?: number): string

● 功能:返回一个新的字符串,包含从开始位置起长度为 length 的部分。
● 参数:
○ start(必需):开始提取的位置。
○ length(可选):要提取的字符数。如果省略,则提取到字符串末尾。
● 返回值:新的字符串。
● 示例:

const str = "Hello, world!";
console.log(str.substr(7, 5)); // 输出: "world"
console.log(str.substr(-6, 5)); // 输出: "world"

1.2 替换和分割

1.2.1 replace(searchValue: string | RegExp, replaceValue: string): string

● 功能:用 replaceValue 替换第一个匹配到的 searchValue,并返回新的字符串。
● 参数:
○ searchValue(必需):要查找的子字符串或正则表达式。
○ replaceValue(必需):用于替换的子符串的新字符串。
● 返回值:新的字符串。
● 示例:

const str = "Hello, world! Hello, universe!";
console.log(str.replace("world", "JavaScript")); // 输出: "Hello, JavaScript! Hello, universe!"
console.log(str.replace(/world/g, "JavaScript")); // 输出: "Hello, JavaScript! Hello, universe!"

1.2.2 replaceAll(searchValue : string | RegExp, replaceValue: string): string

● 功能:用 replaceValue 替换所有匹配到的 searchValue,并返回新的字符串。
● 参数:
○ searchValue(必需):要查找的子字符串或正则表达式。
○ replaceValue(必需):用于替换的字符串或函数。
● 返回值:新的字符串。
● 示例:

const str = "Hello, world! Hello, universe!";
console.log(str.replaceAll("Hello", "Hi")); // 输出: "Hi, world! Hi, universe!"
console.log(str.replaceAll(/Hello/g, "Hi")); // 输出: "Hi, world! Hi, universe!"

1.2.3 split(separator:string | RegExp, limit?: number):string[]

● 功能:使用 separator 将字符串分割成子字符串数组。separator 可以是正则表达式。
● 参数:
○ separator(必需):用于分割字符串的分隔符或正则表达式。
○ limit(可选):返回的数组的最大长度。
● 返回值:分割后的子字符串数组。
● 示例:

const str = "apple,banana,orange";
console.log(str.split(","));
// 输出: ["apple", "banana", "orange"]const strWithSpaces = "  apple  banana  orange  ";
console.log(strWithSpaces.split(/\s+/));
// 输出: ["", "apple", "banana", "orange", ""]

1.3 判断功能

1.3.1 includes(searchValue, fromIndex?):boolean

● 功能:判断字符串是否包含某个指定的子字符串,返回一个布尔值。
● 参数:
○ searchValue(必需):要查找的子字符串。
○ fromIndex(可选):开始搜索的位置。默认为 0。
● 返回值:如果找到 searchValue,返回 true;否则返回 false。
● 示例:

const str = "Hello, world!";
console.log(str.includes("world")); // 输出: true
console.log(str.includes("Java")); // 输出: false

1.3.2 startsWith(searchString, position?):boolean

● 功能:判断字符串是否以指定的子字符串开头,返回一个布尔值。
● 参数:
○ searchString(必需):要查找的子字符串。
○ position(可选):开始比较的位置。默认为 0。
● 返回值:如果字符串以 searchString 开头,返回 true;否则返回 false。
● 示例:

const str = "Hello, world!";
console.log(str.startsWith("Hello")); // 输出: true
console.log(str.startsWith("hello")); // 输出: false

1.3.3 endsWith(searchString, length?):boolean

● 功能:判断字符串是否以指定的子字符串结尾,返回一个布尔值。
● 参数:
○ searchString(必需):要查找的子字符串。
○ length(可选):在该位置之前的字符数。默认为字符串长度。
● 返回值:如果字符串以 searchString 结尾,返回 true;否则返回 false。
● 示例:

const str = "Hello, world!";
console.log(str.endsWith("!")); // 输出: true
console.log(str.endsWith("world")); // 输出: false

1.4 其他函数

1.4.1 concat(...strings)

● 功能:将多个字符串连接成一个新的字符串。
● 参数:
○ ...strings(可选):要连接的字符串。
● 返回值:新的字符串。
● 示例:

const str = "Hello".concat(", ", "world!"); // 输出: "Hello, world!"
console.log(str);

1.4.2 trim(): string

● 功能:移除字符串两端的空白字符。
● 参数:无
● 返回值:移除空白字符后的新字符串。
● 示例:

const str = "  Hello, world!  ";
console.log(str.trim()); // 输出: "Hello, world!"

1.4.3 toLowerCase(): string

● 功能:将字符串转换为小写。
● 参数:无
● 返回值:转换为小写的新字符串。
● 示例:

const str = "Hello, World!";
console.log(str.toLowerCase()); // 输出: "hello, world!"

1.4.4 toUpperCase(): string

● 功能:将字符串转换为大写。
● 参数:无
● 返回值:转换为大写的新字符串。
● 示例:

const str = "Hello, World!";
console.log(str.toUpperCase()); // 输出: "HELLO, WORLD!"

1.5 查找与匹配

1.5.1 search(regexp: string | RegExp): number;

● 功能:执行正则表达式搜索,返回匹配的第一个位置的索引,如果没有找到则返回 -1。
● 参数:
○ regexp(必需):要使用的正则表达式对象。
● 返回值:匹配的第一个位置的索引,如果没有找到则返回 -1。
● 示例:

const str = "Hello, world!";
console.log('查找world的索引:',str.search(/world/)); // 输出: 7
console.log('查找Java的索引:',str.search(/Java/)); // 输出: -1

1.5.2 match(regexp: string | RegExp): RegExpMatchArray | null;

● 功能:执行正则表达式匹配,返回匹配结果或 null。
● 参数:
○ regexp(必需):要使用的正则表达式对象。
● 返回值:如果匹配成功,返回一个包含匹配结果的数组;否则返回 null。
● 示例:

const str = "Hello, world! Hello, universe!";
console.log(str.match(/Hello/)); // 输出: ["Hello", index: 0, input: "Hello, world! Hello, universe!", groups: undefined]
console.log(str.match(/Java/)); // 输出: null

2.Array 数组

TypeScript 中的 Array 类提供了丰富的功能方法,使得对数组的操作更加方便高效。从数组元素的添加、删除、查询到复杂的迭代操作,掌握这些方法可以大大提高开发效率。

2.1 Array.isArray()

功能:
Array.isArray() 方法用于判断一个值是否为数组。
示例:

console.log(Array.isArray([1, 2, 3]));  // true
console.log(Array.isArray("Hello"));  // false

解释:
● Array.isArray() 用于确定传入的值是否为数组。
● 它返回一个布尔值,true 表示是数组,false 表示不是数组。

2.2 Array.from()

功能:
Array.from() 方法用于将类数组对象或可迭代对象转换为数组。
示例:

const string = "Hello";
const array = Array.from(string);
console.log(array); // ['H', 'e', 'l', 'l', 'o']

解释:
● Array.from() 创建一个新的数组实例,这个数组实例包含了一个可迭代对象或类数组对象中的元素。
● 它也可以接受一个映射函数作为第二个参数,对数组中的每个元素进行转换。

2.3 push()

功能:
push() 方法向数组末尾添加一个或多个元素,并返回新数组的长度。
示例:

const arr = [1, 2, 3];
arr.push(4);
console.log(arr); // [1, 2, 3, 4]

解释:
● push() 向数组末尾添加一个或多个元素,返回新数组的长度。
● 该方法会修改原数组。

2.4 pop()

功能:
pop() 方法删除数组中的最后一个元素,并返回该元素。
示例:

const arr = [1, 2, 3];
const poppedElement = arr.pop();
console.log(poppedElement); // 3
console.log(arr); // [1, 2]

解释:
● pop() 删除数组中的最后一个元素,并返回该元素。
● 数组的长度会减少 1。

2.5 shift()

功能:
shift() 方法删除数组中的第一个元素,并返回该元素。
示例:

const arr = [1, 2, 3];
const shiftedElement = arr.shift();
console.log(shiftedElement); // 1
console.log(arr); // [2, 3]

解释:
● shift() 删除数组中的第一个元素,并返回该元素。
● 数组的长度会减少 1。

2.6 unshift()

功能:
unshift() 方法向数组开头添加一个或多个元素,并返回新数组的长度。
示例:

const arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // [0, 1, 2, 3]

解释:
● unshift() 向数组开头添加一个或多个元素,并返回新数组的长度。
● 该方法会修改原数组。

2.7 concat()

功能:
concat() 方法用于合并两个或多个数组,并返回一个新的数组。
示例:

const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = arr1.concat(arr2);
console.log(combined); // [1, 2, 3, 4]

解释:
● concat() 返回一个新的数组,包含了原数组的所有元素和追加的元素。
● 原数组不受影响。

2.8 join()

功能:
join() 方法将数组中的所有元素连接成一个字符串,并返回这个字符串。
示例:

const arr = [1, 2, 3];
const result = arr.join("-");
console.log(result); // "1-2-3"

解释:
● join() 将数组的所有元素按指定的分隔符连接起来,返回一个新的字符串。
● 如果没有提供分隔符,默认使用逗号 ,。

2.9 slice()

功能:
slice() 方法返回数组的一个浅拷贝,包含从 start 到 end 的元素。包含头不包含尾
示例:

const arr = [1, 2, 3, 4, 5];
const sliced = arr.slice(1, 3);
console.log(sliced); // [2, 3]

解释:
● slice() 返回一个新数组,包含指定范围的元素,原数组不受影响。
● start 为起始索引,end 为结束索引(不包括该位置)。

2.10 splice()

功能:
splice(start:number, deleteCount:number, items:any[]) 从指定的索引位置删除指定个数的元素,再到此为止添加新的元素; 返回数组(该数组是原数组)
示例:

const arr = [1, 2, 3, 4];
arr.splice(2, 1, 5);
console.log(arr); // [1, 2, 5, 4]

解释:
● splice() 可以删除、替换或添加元素,并返回删除的元素。
● 它会修改原数组。

2.11 map()

功能:
map() 方法创建一个新数组,数组中的元素是通过调用提供的函数对原数组元素进行处理的结果。
示例:

const arr = [1, 2, 3];
const doubled = arr.map(x => x * 2);
console.log(doubled); // [2, 4, 6]

解释:
● map() 返回一个新数组,包含原数组元素经过提供函数处理后的结果。
● 原数组不受影响。

2.12 filter()

功能:
filter() 方法创建一个新数组,包含所有通过测试的元素。
示例:

const arr = [1, 2, 3, 4, 5];
const evenNumbers = arr.filter(x => x % 2 === 0);
console.log(evenNumbers); // [2, 4]

解释:
● filter() 返回一个新数组,包含所有满足测试条件的元素。
● 原数组不受影响。

2.13 reduce()

功能:
reduce() 方法对数组中的每个元素执行一个累加操作,返回单个结果。
示例:

const arr = [1, 2, 3, 4];
const sum = arr.reduce((acc, value) => acc + value, 0);
console.log(sum); // 10

解释:
● reduce() 从左到右遍历数组,使用累加器对数组元素进行计算,并返回最终结果。
● 第二个参数为累加器的初始值。

2.14 some()

功能:
some() 方法检查数组中是否至少有一个元素满足提供的测试函数。
示例:

const arr = [1, 2, 3, 4];
const hasEven = arr.some(x => x % 2 === 0);
console.log(hasEven); // true

解释:
● some() 返回一个布尔值,表示是否至少有一个元素满足提供的测试函数。

2.15 every()

功能:
every() 方法检查数组中是否所有元素都满足提供的测试函数。
示例:

const arr = [2, 4, 6, 8];
const allEven = arr.every(x => x % 2 === 0);
console.log(allEven); // true

解释:
● every() 返回一个布尔值,表示数组中是否所有元素都满足提供的测试函数。

2.16 indexOf()

功能:
indexOf() 方法返回指定元素在数组中首次出现的位置,如果没有找到返回 -1。
示例:

const arr = [1, 2, 3, 4];
console.log(arr.indexOf(3));  // 2
console.log(arr.indexOf(5));  // -1

解释:
● indexOf() 返回元素在数组中的索引位置。
● 如果找不到元素,返回 -1。

3.Map 字典

TypeScript 中的 Map 类是一个强大的数据结构,它提供了丰富的方法来进行键值对的存储、获取、删除等操作

3.1 创建Map

let map1 = new Map<键类型,值类型>([[键,值],[键,值],[键,值]])		//TS\ArkTS写法
let map2 = new HashMap<string,number>()											//ArkTS写法

3.2 set()

功能:
set() 方法用于向 Map 对象中添加一个键值对。
示例:

const map = new HashMap<string,string>();
map.set('name', 'Alice');
console.log(map);  // Map { 'name' => 'Alice' }

解释:
● set() 方法接受两个参数,第一个是键,第二个是值。
● 它将键值对添加到 Map 中,若键已存在,则更新其对应的值。

3.3 get()

功能:
get() 方法用于获取 Map 对象中指定键的值。
示例:

const map = new Map();
map.set('name', 'Alice');
console.log(map.get('name'));  // "Alice"

解释:
● get() 方法接受一个键作为参数,返回该键对应的值。
● 如果指定的键不存在,返回 undefined。

3.4 has()

功能:
get() 方法用于获取 Map 对象中指定键的值。
示例:

const map = new Map();
map.set('name', 'Alice');
console.log(map.has('name'));  // true
console.log(map.has('age'));   // false

解释:
● has() 方法返回一个布尔值,表示 Map 中是否包含指定的键。

3.5 delete()

功能:
delete() 方法用于删除 Map 对象中指定的键值对。
示例:

const map = new Map();
map.set('name', 'Alice');
map.delete('name');
console.log(map.has('name'));  // false

解释:
● delete() 方法接受一个键作为参数,删除该键对应的键值对。
● 如果键存在并被删除,返回 true,否则返回 false。

3.6 clear()

功能:
clear() 方法用于清空 Map 对象中的所有键值对。
示例:

const map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
map.clear();
console.log(map.size);  // 0

解释:
● clear() 方法删除 Map 对象中的所有键值对。
● 它会将 Map 对象的大小 size 设置为 0。

3.7 size

功能:
size 属性返回 Map 对象中键值对的数量。
示例:

const map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
console.log(map.size);  // 2

解释:
● size 属性返回 Map 中当前存储的键值对的数量。
● 它是一个只读属性,表示 Map 的大小。

3.8 keys()

功能:
keys() 方法返回一个包含 Map 对象中所有键的迭代器。
示例:

const map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
const keys = map.keys();
console.log([...keys]);  // ['name', 'age']

解释:
● keys() 返回一个迭代器,可以用于遍历 Map 中的所有键。
● 使用扩展运算符(...)可以将迭代器转换为数组。

3.9 values()

功能:
values() 方法返回一个包含 Map 对象中所有值的迭代器。
示例:

const map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
const values = map.values();
console.log([...values]);  // ['Alice', 25]

解释:
values() 返回一个迭代器,可以用于遍历 Map 中的所有值。
使用扩展运算符(...)可以将迭代器转换为数组。

3.10 entries()

功能:
entries() 方法返回一个包含 Map 对象中所有键值对的迭代器。
示例:

const map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
const entries = map.entries();
console.log([...entries]);  // [['name', 'Alice'], ['age', 25]]

解释:
● entries() 返回一个迭代器,可以用于遍历 Map 中的所有键值对。
● 使用扩展运算符(...)可以将迭代器转换为数组。

3.11 forEach()

功能:
forEach() 方法用于遍历 Map 对象中的所有键值对,并执行指定的回调函数。
示例:

const map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
map.forEach((value, key) => {console.log(key, value);
});
// 输出:
// name Alice
// age 25

解释:
● forEach() 方法对 Map 中的每个键值对执行回调函数。
● 回调函数接收两个参数:当前值和当前键。
鸿蒙学习地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年锻钢阀源头厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析不锈钢锻钢阀/球阀锻钢阀/碳钢锻钢阀/手动锻钢阀/锻造钢阀/丝扣锻钢阀公司推荐

引言 为精准筛选出 2025 年锻钢阀领域兼具技术实力与市场认可度的优质源头厂家,通用机械工业协会阀门分会联合行业权威检测机构开展专项测评。本次测评涵盖全国 23 个省市共 126 家锻钢阀生产企业,采用 “三维九项”…

[转] 封装超时工具方法

作者:谢杰 该文章是并发异步操作系列文章第三篇。前面介绍了关于 Promise 的相关静态方法,本篇文章来做一个实战,封装一个超时工具方法。 需求 先说一下需求,非常简单,执行异步任务的时候,异步任务完成的时间是不…

大屏布局总结

大屏布局总结大屏内容一般多且杂,根据设计图布局可分成左中右三栏或者左右两栏,Left, Center, Right 三个组件就是执行部门。 父组件 Index.vue 包含 左中右三栏。父组件作为“状态管理中心的“总指挥”它不关心具…

[转] Promise静态方法汇总 (Promise.try)

作者:谢杰 该文章是并发异步操作系列文章第二篇。早期大家学习 Promise 的时候,都是从最基础的例子开始的,例如: // 创建一个 Promise 实例 const myPromise = new Promise((resolve, reject) => {// 模拟异步任…

CT切片三维重建与STL导出MATLAB实现

读取CT切片、进行三维重建并将结果导出为STL文件格式。 function ct_to_stl_reconstruction(dicomDir, outputSTL, threshold, smoothingFactor)% CT切片三维重建与STL导出% 输入参数:% dicomDir - DICOM文件目录路径…

2025 年 LAPP 厂家最新推荐榜,技术实力与服务品质双重维度深度解析

引言 工业电缆作为生产系统的 “神经脉络”,其品质直接决定设备运行稳定性。LAPP 电缆凭借 lflex、unitronic 等核心系列产品的优异性能,成为工业自动化、石油化工等领域的优选。但市场中 37% 的供应商存在资质不全、…

基于第三方heleket api接入usdt支付

app上要接入usdt区块链支付 使用第三方通道heleket实现 heleket是国外网站,需要用魔法FQ. 官方文档地址 https://doc.heleket.com/methods/payments/qr-code-pay-form 测试页面<!doctype html> <html> &l…

2025年激光熔覆涂层制造厂权威推荐:熔覆激光/高速激光熔覆/激光熔覆源头厂家精选

激光熔覆涂层市场近年来保持稳定增长的态势。作为再制造工程的核心技术之一,激光熔覆在耐磨、防腐、耐高温等性能提升方面表现优异,广泛应用于煤炭、电力、冶金、工程机械等行业的关键部件修复与强化。 本次评选从企…

Legacy模式虚拟机,grub文件丢失如何处理

前面我们介绍了如何修复UEFI模式下CentOS虚拟机的grub引导,下面来介绍一下Legacy模式下CentOS虚拟机的grub引导如何修复,两者大致一样,但是有一些细微的区别。包括引导时所用的命令,以及grub文件所在的路径。 在gr…

2025年省电中央空调品牌权威推荐榜单:双出风中央空调/一拖四中央空调/智能中央空调品牌精选

在节能减排政策推动和能源成本上升的双重背景下,省电性能已成为中央空调选购的核心指标。根据行业数据显示,高效中央空调系统相比传统机型可实现30%-50%的运行能耗降低,这意味着大型商业场所年节电量可达数十万度,…

魔域电脑版下载安装教程:重返经典魔幻世界的完整攻略(含新手入门+登录异常修复)

本文详解《魔域》电脑版的下载与安装教程,覆盖新手入门指南、幻兽系统玩法解析、登录异常(0xc0000142)修复方法及版本对比。 关键词优化:魔域电脑版下载、魔域安装教程、魔域登录错误、魔域怀旧版、魔域游戏下载。 适…

学术会议会议合集 | 大数据、智慧医学 、数据管理 、计算机科学 、管理科学等EI会议合集

大数据、智慧医学 、数据管理 、计算机科学 、管理科学等EI会议合集2025年大数据与智慧医学国际学术会议(BDIMed 2025) 2025 International Conference on Big Data and Intelligent Medicine(BDIMed 2025) 重要信…

K8S使用开源CEPH作为后端StorageClass

1 引言 K8S在1.13版本开始支持使用Ceph作为StorageClass。其中云原生存储Rook和开源Ceph应用都非常广泛。本文主要介绍K8S如何对接开源Ceph使用RBD卷。 K8S对接Ceph的技术栈如下图所示。K8S主要通过容器存储接口CSI和C…

2025 年锅炉厂家最新推荐榜:智能控制与稳定可靠品牌综合测评结果及优质厂商名单电锅炉/蒸汽锅炉/燃气锅炉/燃油锅炉/电蒸汽锅炉公司推荐

引言 随着工业、商业及民生领域热能需求激增,锅炉设备的性能与品质愈发关键。为帮助企业精准筛选优质品牌,特种设备安全与节能协会联合行业权威机构开展 2025 年锅炉制造商综合测评,本次测评覆盖全国 120 余家主流厂…

Python自动化之Docx文档处理(二)

1 基本概念 1.1 python-docx-template模块 虽然前面提到的python-docx模块让我们能使用python代码写word,但正常情况下我们写word文档肯定都是直接使用office或wps之类的办公软件。更常用的需求是拿到一个word模板,用…

Python自动化之Docx文档处理(一)

1 基本概念 1.1 python-docx模块 相信大家在日常工作中,免不了要处理word文档,今天就介绍一个能通过python处理word文档的模块,python-docx[1]。 安装python-docx模块pip install python-docx然后通过官方的python代…

替换 Android APEX 下属动态库的方法

先确定要替换的库属于哪个 APEX 包,再替换库文件所属的整个 APEX 包。只单独替换 APEX 包下的库文件,会导致系统无法启动。Qidi Huang 2025.10.29 1. 确定要替换的库属于哪个 APEX 包 比如要替换 libaudioroute.so,…

配置管理工具-Confd

1 简介 1.1 Confd介绍 Confd是一个轻量级的配置管理工具。通过查询后端存储,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload。对应的后端存储可以是etcd,redis、zookeeper等。[1] 通…

探索Go语言性能优化:全面解析pprof工具

摘自:https://baijiahao.baidu.com/s?id=1846491710332725792&wfr=spider&for=pc go pprof作为Go语言性能优化的得力工具,其重要性不言而喻。然而,对于许多开发者来说,如何解读profile信息并有效利用ppro…

Bcache详解及踩坑记录

关注公众号 singless ,后台回复bcache,获取bcache相关资料1 介绍 1.1 背景介绍 Bcache是Linux内核块设备层的软件驱动,使用高速存储设备为传统机械磁盘做IO缓存,经常访问的热数据会缓存在固态硬盘中并直接返回给应…