我的博客

based on Hexo

写课表遇到的

  1. {{}}插值表达式

  2. v-for列表渲染,遍历多少个就显示几个当前标签

  3. js数组不限制成员类型

  4. js的...对象表示复制所有属性,后面增加若重复会覆盖掉原有的属性

  5. import还可以重命名导入的对象

  6. export default{}来导出对象,限制少,不用写出类型

  7. uni的storage方法,可以实现简单的本地数据储存

问题和感想

  1. 键这个东西还是有点没理解
  2. ai还是太好用了,遇到不会的直接查,极大的减少了学习成本和时间

1.代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution{
public:
ListNode* reverseList(ListNode* head){
ListNode* pre = NULL;
ListNode* next = NULL;
while(head != NULL)
{
next = head->next;
head->next = pre;
pre = head;
head = next;
}
return pre;
}

2.详解

1.存next
2.head的next指向pre
3.pre指向head作为下一个节点的前节点
4.移动head到下一个节点

#语法速查表

1.元素定位

1.通过属性定位

e.g:tab.ele(@id=)

tab.ele(tag:input@@style=@@value=)

2.iframe定位

e.g:

frame = tab.get_frame(t:iframe);

ele = frame.ele()

frame = tab.eles(t:iframe)[];

3.相对定位

4.shadow_root的元素定位

 先找到其父元素才能访问

ele1.shadow_root(“t: iframe”)

5.xpath定位(兼容性最好)

xpath= ‘x: ‘

page.ele(xpath)

2.元素属性

文档

 常用:save\link\atrr()

# 一,文本文件和二进制文件
  1. 文本:以ascii形式储存(字符)
  2. 二进制:以二进制储存(文本编辑器中可能乱码)
# 二,文件读取结束的判定
  1. ferrofeof用于当文件结束时,判断是读取失败还是遇到文件末尾。 符合则返回真。
  2. 读取结束:文本
文本 二进制
返回值为eof/null 返回值等于要读元素个数

1. sscanf 和 sprintf (const char* s, const char* format, ***)

 本质上是对格式化数据字符串的转换

非针对文件流

2. 文件的随机读写

  1. fseek: 改变文件流读写位置
  2. ftell: 获取当前读写位置
  3. rewind: 回到文件初始位置

1. 使用:<script>

  1. 内部:在HTML中的head和body里
  2. 外部:通过script属性src使用

2. 变量和数据类型

  1. 声明:let, const;

3. 条件,循环

  1. for(){}
  2. if(),else if(),else
  3. while()
  4. break, continue;

4. 事件

event content
onClick 点击
onMouseOver 光标经过
onMouseOut 移出
onChange 文本内容改变
onSelect 文本框选中
onFocus 聚焦
onBlur 失焦
绑定
  1. HTML属性
  2. DOM属性
  3. addEventListener方法

一. 文件指针

  1. 被使用的文件会在内存开辟一个相应的信息区存放文件信息,保存在一个结构体变量中 FILE* pf

  2. FILE* fopen(const char* filename, const char* mode)文件打开;失败则返回NULL

mode
“r”  阅读:打开输入作文件。文件必须存在。
“w”   写道:为输出作创建一个空文件。如果已有同名文件存在,其内容被丢弃,该文件被视为新的空文件。
“a”   附言:在文件结尾打开文件进行输出。输出作总是在文件末尾写入数据,进行扩展。重新定位作(fseek、fsetpos、rewind)被忽略。如果文件不存在,则该文件被创建。
“r+”   阅读/更新:打开一个文件进行更新(包括输入和输出)。文件必须存在。
“w+”   写作/更新:创建一个空文件并打开进行更新(包括输入和输出)。如果已有同名文件存在,其内容会被丢弃,该文件被视为新的空文件。
“a+”   补充/更新:打开一个文件进行更新(包括输入和输出),所有输出作都写入文件末尾。重新定位作(fseek、fsetpos、rewind)会影响下一个输入作,但输出作会将位置移回文件末尾。如果文件不存在,则该文件被创建。
  1. int fclose(FILE* stream) 关闭文件;记得置空

1.iframe(html的一个元素)

iframe(内联框架)是HTML中的一个元素,用于在当前网页中嵌入另一个独立的HTML页面。它允许在主页面中创建一个子窗口,加载外部内容,如网页、视频、广告或文档。iframe的独立性使其成为实现内容隔离和跨域嵌入的常用工具。

  • iframe的常见用途

iframe广泛应用于以下场景:

嵌入视频,如YouTube或Vimeo。

加载广告,确保广告内容与主页面隔离。

嵌入外部内容,如第三方应用或表单。

内嵌文档,如PDF或HTML文件。

实现跨域内容嵌入,但需注意安全限制。

iframe的核心属性

以下是iframe常用的属性及其功能:

<iframe src="https://example.com" width="600" height="400" title="示例"></iframe>

src:指定嵌入页面的URL。

width和height:设置iframe的宽度和高度。

sandbox:限制iframe的权限,如禁止脚本执行或表单提交。

allow:控制iframe的特殊功能,如全屏或摄像头访问。

loading:设置加载方式(lazy延迟加载或eager立即加载)。

相关函数

  1. void* malloc(size_t byte): 开辟动态空间
     e.g:int* a = (int*)malloc(40)
  2. void* calloc(size_t, size_t num )
  3. void* realloc(void* ptr, size_t byte ):重新分配

注意:如果空间开辟失败,则会返回NULL

二 规范流程

  1. realloc应用临时指针接收返回值 防止开辟失败导致NULL覆盖原指针;
  2. 要记得free释放空间并指针置空 避免内存泄漏和野指针;

三 柔性数组

1. 定义

柔性数组,也称为伸缩性数组成员,是C99标准中引入的一种结构体特性。它允许在结构体定义的最后一个元素声明一个未知大小的数组,使得结构体能够处理可变长度的数据。

柔性数组的定义通常如下所示:

struct st_type {

int i;

int a[]; // 柔性数组成员

};

  在这个结构体中,a是一个柔性数组,它没有预定义的大小,这意味着数组a的大小可以在运行时确定。某些编译器支持int a[0]的写法,而有些则支持int a[]的写法,具体取决于编译器的实现。

2. 柔性数组的特点

柔性数组的使用具有以下几个特点:

  1. 结构体中柔性数组成员前必须至少有一个其他成员。

  2. 使用sizeof运算符计算包含柔性数组的结构体大小时,不包括柔性数组的内存。

  3. 为包含柔性数组的结构体动态分配内存时,分配的内存应该大于结构体的固定部分大小,以适应柔性数组的预期大小。

  • 动态内存分配和内存释放
    使用柔性数组时,通常需要通过malloc函数进行内存的动态分配。例如,如果需要在柔性数组a中存储10个int类型的元素,可以这样分配内存:

struct st_type *ps = (struct st_type*)malloc(sizeof(struct st_type) + 10 * sizeof(int));

这里,为结构体的固定部分分配了内存,并为柔性数组a预留了足够的空间。如果后续需要更多的空间,可以使用realloc函数来调整已分配内存的大小。

柔性数组的优点

 柔性数组相比于使用指针的传统方式,有几个明显的优点:

内存管理简化:使用柔性数组可以在一次malloc调用中同时为结构体和附加的数组分配内存,这简化了内存管理过程,减少了内存泄漏的风险。

减少内存碎片:柔性数组有助于减少内存碎片,因为它允许连续的内存分配,这提高了内存的使用效率。

提高访问速度:连续的内存分配有助于提高数据访问速度。

实际应用

柔性数组在实际应用中非常有用,特别是在需要处理不定长数据的场景,如网络通信、文件处理等。它们使得结构体能够更加灵活地适应不同的数据长度,同时保持了代码的简洁性和高效性。

在使用柔性数组时,开发者需要注意正确地分配和释放内存,以避免内存泄漏或其他内存相关的错误。正确使用柔性数组可以显著提高程序的性能和可维护性。

不得不抱怨下

1.搭建博客

这个过程可谓是我花费最多的时间了(😢),github的部署一直出问题。不过说实话,还是因为了解太少了,不明白部署原理。但我没找到相关的教程(悲),只能问ai,一步一步试错了。
最后才懂得workflowspackage

2.文本语言

没想到最后写文章还要再学markdown,欸,要学的可真多。好在,md算是是html的简化版,不难。

0%