自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 数据库相关笔记

该文件用于记录数据库使用中的一些问题及解决方式记录。

2023-06-06 08:17:58 83

原创 创作者上传视频步骤authorization参数

难点在于通过py生成authorization,以及视频分片上传的参数计算。参数生成好以后,通过一系列的接口调用,即可完成视频发布与上传,同时可以挂载位置、购物车、影视、小程序、购票等等。发布视频分几个步骤,其中有些步骤,必须通过sha256加密获得Signature,然后添加到请求头中才能完成请求。请求中使用的日期格式为ios8601的时间格式,如 20230208T061415Z。本文仅供自己学习记录,如有侵权请联系本人即刻删除。

2023-02-08 14:26:59 23

原创 tictok直播弹幕protobuf

可以看到是标准的google protocbuf的数据。请求通了,能够拿到数据,一打印,发现这是个啥玩意?本文仅供自己学习使用,如有侵权请联系删除。然后在运行,数据就是我们能看懂的了。

2023-01-06 23:23:13 708 1

原创 通过playwright获取某平台直播弹幕

代码,就不上了,该平台反正用的是标准的google的protocbuf进行数据传输的。然后用的gzip进行压缩。拿到数据后gizp解压,然后通过proto解析即可得到数据。只能做本地化,因为它需要打开浏览器(这点不知道为什么,java端就可以设置无头模式并且可以不用安装浏览器驱动就可以运行,但是py不行,还有待研究)近期在学习研究中,发现一个很棒的东西,playwright,通过该库,可以完成各种数据的获取,但是也有优缺点。本文仅供自己学习用,如有侵权请联系本人删除。我们来看看某平台直播弹幕的获取吧。

2023-01-05 14:59:39 940 4

原创 计算机基础

数据处理就是对各种数据进行手机、存储、整理、分类、统计加工、利用、传播等一些列操作的统称,目的是获取有用的信息作为决策的依据。目前,计算机数据处理广泛的应用于办公自动化、企事业计算机辅助管理决策、文字处理、文档管理、情报检索、激光照排、电影电视动画设计、会计自动化、图书管理、医疗诊断等各行各业。人工智能是计算机应用的一个新领域,利用计算机模拟人的智能,用于机器人的研制、医疗诊断专家系统、推理证明等各方面。字长有8位、16位、64位等。数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

2023-01-03 22:18:58 208

原创 记一次Linux安装node环境

在学习爬虫程序的时候,有一些加密算法无法还原成py的时候,就需要使用 execjs 库,在本地开发环境,由于本地有 Node 环境,在运行时不会报错,但是在部署到 Linux 的时候,由于 Linux 没有 Node 环境,在程序运行时 会出现 "Could not find an available JavaScript runtime." 的错误。所以需要安装 Node 环境。

2022-10-27 09:24:15 535

原创 自动化测试Python + selenium + pywin32 实现非input表单文件上传功能

Python + selenium + pywin32 实现非input表单文件上传功能

2022-09-06 18:07:37 1922

原创 CSS选择器

目录四种基本选择器后代选择器交集选择器css3的一些选择器四种基本选择器标签选择器/* 标签选择器选择的是某类标签,、 如:div span ul li ...*/div { backround-colr: red;}ID选择器 特定标签,有且只有一个/* 定义在标签上的ID属性值,在整个html页面中是唯一的,用“#”号表示 如: <span id="my_text">我是文本</spa..

2022-04-15 10:29:57 531

原创 Spring MVC 工作流程

MVC 设计模式M,Model 数据模型层,V View 视图层, C Controller 控制层,将数据层与视图层实现代码分离,通过控制层分发请求到对应模型,模型层用于处理业务逻辑,提供所需业务的数据,视图层负责将数据渲染呈现给用户。Spring MVC简介Spring MVC 是基于MVC设计模式设计的无侵入式轻量级的WEB开发框架,属于spring框架 中的一部分,先天的优越性使其成为市面上最流行的框架。Spring MVC 工作流程图Spring MVC 工作流程浏览器

2022-01-10 11:33:01 194

原创 Java 单例设计模式

简介单例设计模式如其名,在系统中只存在一个实例,自行实例化供系统使用。(百度百科)每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况。饿汉式饿汉式就是利用关键字 static 的特性。在类加载初始化时,就创建好对象供外部使用,如果系统不重启的情况下,这个对象在系统中始终是唯一的。/** * 饿汉式单例模式 */public class EagerSingleton { /** * 类加载时创建对象,线程安全,

2021-12-31 17:22:20 286

原创 Java 工厂设计模式

简介工厂设计模式在java中有大量的应用,如spring框架,这种类型的设计模式属于创建型模式。在工厂设计模式中,创建逻辑不会对客户端暴露,可以通过一个对外接口创建所需对象。工厂模式使用场景需要频繁创建对象且这些对象多处使用,业务发生改变需要修改多处代码,使用工厂模式即可进行代码解耦,业务改变修改时只需修改工厂部分代码简单工厂模式1.抽象一个产品,定义共性内容/** * 将购商场象为一个产品 */public interface IMarket { /** .

2021-12-27 17:51:20 543

原创 31 C++ 学习记 C++ 中的引用

一、引用的基本语法引用的本质是给变量起别名语法: 类型 &别名 = 原名(变量名)当使用引用后,无论是操作原名还是操作别名,实际操作的数据都是同一个,当使用别名更改数据后,使用原名访问数据会变成使用别名操作后的数据。原理是实际上他们操作的是同一块内存#include<iostream>using namespace std;int main(){ // 创建一个整形变量 int a = 10; // 创建引用变量 int& b = a...

2021-10-23 22:03:45 65

原创 30 C++ 学习记 C++中的内存四区

一、内存的分区模型c++程序执行时,将内存大方向划分为4个区域:·代码区:存放函数体的二进制代码,由操作系统进行管理的 ·全局区:存放全局变量和静态变量以及常量 ·栈区:由编译器自动分配释放,存放函数的参数值、局部变量等 ·堆区:由程序员分配和释放,若程序元不释放,程序结束时由操作系统回收总结:内存四区的意义在于不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程空间二、程序运行前2.1 代码区存放cpu执行的机器指令代码区是共享的,共享的目的是对于频繁的可执行程..

2021-10-10 10:08:50 133

原创 29 C++ 学习记 结构体作为函数参数的两种方式

如果需要保留作为参数传递给函数中修改的值,那就要用地址传递, 并且地址传递只占4个字节内存空间,可以减少内存空间的占用,值传递会在函数中复制一分新的副本,若参数占用内存较大,那么会比较损耗性能。如果想利用指针的同时不修改原本的数据,那么可以将形参定义为常量指针 即: const struct* 变量名#include<iostream>using namespace std;/* 定义学生结构体*/struct student { // 姓名 string name; /

2021-09-29 23:43:23 293

原创 28 C++ 学习记 嵌套结构体

在结构体中可以使用另一个结构体作为成员属性#include<iostream>using namespace std;/* 定义学生结构体*/struct student { // 姓名 string name; // 年龄 int age; // 得分 int score;};/*定义老师结构体*/struct techer{ /*编号*/ string id; // 姓名 string name; // 年龄 int age; // 学生

2021-09-29 23:40:46 44

原创 27 C++ 学习记 结构体指针

要是用结构体指针取值,使用 -> 运算符#include<iostream>using namespace std;/* 定义学生结构体*/struct student { // 姓名 string name; // 年龄 int age; // 得分 int score;};int main(){ // 声明并初始化学生 student s = { "张三", 18, 100 }; //结构体指针的定义与使用 student* p = &

2021-09-29 23:39:41 48

原创 26 C++ 学习记 结构体

结构体 定义非默认的数据类型,本质上是多种数据类型的集合 定义是struct不能省略,声明使用时可以省略代码演示结构体的定义与三种使用方式#include<iostream>using namespace std;// 定义一个学生的结构体struct Student{ // 结构体成员 // 姓名 string name; // 年龄 int age; // 得分 int score;} stu3;int main()...

2021-09-29 23:38:12 53

原创 25 C++ 学习记 指针配合数组和函数使用

演示通过指针作为参数,在函数内部更改数组顺序,实际修改的是作为实参传入的数组的顺序。同时数组的变量名实际就是内存地址,普通变量作为实参传入形参为指针的函数时需要加上 & 【取址符】#include<iostream>using namespace std;// 冒泡排序, arr: 要排序的数组, len 排序的数组的长度void bubbleSort(int* arr, int len);// 打印数组, arr: 要打印的数组, len:打印的数组的长度void

2021-09-29 23:35:42 89

原创 24 C++ 学习记 指针和函数

在函数中利用指针做为函数的参数,可以修改实际参数的值,如果是值传递,在函数中修改传入参数的值,不会影响实际传入的参数的值,作用仅为函数内部。同时函数适用值传递的方式,在函数运行时会复制一份副本供函数内部使用,当传入的参数占用内存空间过大时,使用值传递会比较浪费内存空间,使用指针作为参数,传递的是内存地址,可以减小内存的占用。#include<iostream>using namespace std;void swap01(int a, int b)...

2021-09-29 23:31:55 216

原创 23 C++ 学习记 指针和数组

#include<iostream>using namespace std;int main(){ // 定义数组 int arr[] = { 1,2,3,4,5,6,7 }; // 计算数组长度 int arrLength = sizeof(arr) / sizeof(arr[0]); cout << "数组中元素所占字节:" << sizeof(arr[0]) << endl; // 定义指针指向数组 int* p = arr;.

2021-09-29 23:26:43 41

原创 22 C++ 学习记 const 修饰指针

1、指针常量 int a = 10; int b = 20; int* const p = &a; *p = 30; // 正确,指针常量指向的值允许修改 *p = &b; //错误,指针常量不可以修改指针的指向 总结:指针常量的指向不允许修改,但是可以修改指针的值,因为此处指针变量通过const修饰,代表为常量,常量一经定义,便无法修改指向。但是声明的变量不是常量,所以可以修改指针常量指向的值...

2021-09-28 23:21:40 73

原创 21 C++ 学习记 空指针和野指针

#include<iostream>using namespace std;/* 空指针;指针指向地址为0的内存空间称为空指针 作用:用于初始化指针变量 注意:空指针指向的内存是不可访问的*/int main(){ // 空指针 // 1、空指针是用于给指针变量进行初始化的 int* p = NULL; // 2、空指针是不可以进行访问的 // 0-255之间的内存编号是系统占用的,其他程序无权限访问 //*p = 100; //野指针 就是指针指向未申请使用.

2021-09-28 23:15:17 61

原创 20 C++ 学习记 指针的定义

#include<iostream>using namespace std;/* 指针的作用: 可以通过指针间接访问内存。 可以通过指针来保存一个地址。通俗点说,指针就是一个地址*/int main(){ // 1、定义一个整形变量 int a = 10; // 2、定义一个指针,并将该指针记录变量a的地址 int* p = &a; cout << "指针P的地址为: " << p << endl; cout &l.

2021-09-28 23:13:35 113

原创 19 C++ 学习记 函数分文件编写的方式

头文件:swap.h#include<iostream>using namespace std;// 声明数值交换的函数void swap(int a, int b);源文件:swap.cpp,编写函数的文件//引入自定义的头文件,进行关联#include "swap.h"/* 将传入的两个数值进行交换*/void swap(int a, int b){ cout << "a=" << a << " b=" <&l

2021-09-28 23:12:42 49

原创 18 C++ 学习记 函数的声明方式

#include<iostream>using namespace std;/* 程序的执行是自上而下执行的,如果函数定义在main函数下面,未声明,那么在调用时便找不到该函数*/// 函数的声明int getMax(int firstNum, int secondNum);int main(){ cout << getMax(20, 30) << endl; system("pause"); return 0;}/* 根据传入的两个.

2021-09-28 23:10:17 67

原创 17 C++ 学习记 冒泡排序算法

#include<iostream>using namespace std;int main(){ int arr[] = { 56,6,4,2,456,22,315,52 }; // 计算出数组总长度 int arrLength = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < arrLength - 1; i++) { for (int j = i + 1; j < arrLength; j++) .

2021-09-28 23:09:29 95

原创 16 C++ 学习记 小猪称体重案例

#include<iostream>using namespace std;int main(){ int arr[] = { 120, 221, 230, 450, 160 }; int length = sizeof(arr) / sizeof(arr[0]); cout << "共有" << length << "只小猪" << endl; int max = 0; for (int i = 0; i < lengt.

2021-09-28 23:08:13 88

原创 15 C++ 学习记 查看数组在内存中的地址

#include<iostream>using namespace std;int main(){ int arr[] = { 0,1,2,23,4 }; cout << sizeof(arr) << endl; cout << "数组arr在内存中的地址" << arr << endl; cout << "数组arr[0]在内存中的地址" << &arr[0] << en.

2021-09-28 23:07:17 655

原创 14 C++ 学习记 goto跳转语句

#include<iostream>using namespace std;int main(){ cout << "1,xxxx" << endl; cout << "2,xxxx" << endl; cout << "3,xxxx" << endl; goto FLAG; // 跳转到FLAG标记处执行 cout << "4,xxxx" << endl; cout <&.

2021-09-28 23:06:29 75

原创 13 C++ 学习记 嵌套循环

#include<iostream>using namespace std;/* 1,输出10 * 10 的 * 2、输出九九乘法表*/int main(){ //1,输出10 * 10 的 * for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { cout << "*"; } cout << "\n" << endl; } .

2021-09-28 23:05:25 62

原创 12 C++学习记 敲桌子案例

#include<iostream>using namespace std;/* 敲桌子案例 输出1-100 如果这个数字的个位是7或者是7的倍数,那么就输出敲桌子,其他数字直接输出*/int main(){ for (int i = 1; i <= 100; i++) { if (i % 7 == 0 || i % 10 == 7 || i / 10 % 7 == 0) { cout << "敲桌子" << endl; }.

2021-09-27 23:16:18 118

原创 11 C++ 学习记 水仙花数

#include<iostream>using namespace std;int main(){ int num = 100; do { int a = num % 10; // 获得个位数 int b = num / 10 % 10; // 获得十位数字 int c = num / 100; // 获得百位数 // 如果个位的3次方+十位的3次方+百位的3次方等于本身,就是水仙花数 if (a*a*a + b*b*b + c*c*c == num) {.

2021-09-27 23:15:40 65

原创 10 C++ 学习记 猜数字游戏

#include<iostream>// 使用时间的头文件#include<ctime>using namespace std;/* 猜数字 系统随机生成一个数字 用户输入数字 系统提示用户输入的数字过大或者过小 当数字等于时 输出恭喜你猜对了*/int main(){ // 随机数添加随机数种子 srand((unsigned int)time(NULL)); int num = rand() % 100 + 1; cout << .

2021-09-27 23:14:47 69

原创 09 C++ 学习记 while语句

#include<iostream>using namespace std;int main(){ int num = 10; // num大于0时继续循环 while (num > 0) { cout << num << endl; // 每次循环递减 num--; } system("pause"); return 0;}

2021-09-26 23:22:27 37

原创 08 C++ 学习记 switch 语句

#include<iostream>using namespace std;/* switch语句 通过条件表达试与case的值比较 哪个符合就执行case中的哪个条件 注意每个case中需要加上break,否则会继续执行下面的case default是所有case都不满足的情况执行*/int main4(){ int score = 0; cin >> score; switch (score) { case 10 : cout &lt.

2021-09-26 23:20:42 40

原创 07 C++ 学习记 三目运算符

#include<iostream>using namespace std;int main(){ int num1 = 100; int num2 = 120; int num3 = 115; int max = num1 > num2 ? num1 > num3 ? num1 : num3 : num2 > num3 ? num2 : num3; cout << "最大的数字是:" << max << endl;.

2021-09-26 23:19:28 46

原创 06 C++ 学习记 数据的输入

#include<iostream>using namespace std;int main(){ //1、整形 /*int a = 0; cout << "请给整型变量a赋值:" << endl; cin >> a; cout << "整型变量a = :" << a << endl;*/ // 浮点型 /*float f = 0.0f; cout << "请给浮点型变量f赋值:.

2021-09-25 23:12:30 51

原创 05 C++ 学习记 C++中的数据类型

#include<iostream>#include<string>using namespace std;int main(){ // 整形 short,int,long,long long // 占用内存空间大小顺序 short<int<long<long long short shortNum = 10; int intNum = 10; long longNum = 10; long long longLongNum = 10;.

2021-09-25 23:10:46 50

原创 04 C++ 学习记 sizeof 关键字

#include<iostream>using namespace std;int main(){ /* sizeof 关键字用于计算数据类型所占内存空间大小 可以用数据类型或者变量名 */ cout << sizeof(long) << endl; long long number = 20; cout << sizeof(number) << endl; system("pause"); return 0;.

2021-09-25 23:08:42 39

原创 03 C++ 学习记 常量的定义与使用

#include<iostream>using namespace std;//1、宏常量定义在文件的头部,使用#define 常量名 常量值// 无论是宏常量或者被const修饰后的变量,一经定义,无法修改,否则报错#define Day 7;int main(){ // 输出宏常量 cout << "一周共有 " << Day<< " 天" << endl; // 2、使用const修饰变量声明常量的方式 co.

2021-09-21 22:50:33 59

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除