- 博客(78)
- 资源 (5)
- 收藏
- 关注
原创 kotlin语言 变量和函数
it:单个参数的隐式名称, 如果编译器⾃⼰可以识别出签名, 可以这样写。Kotlin 函数都是头等的,函数一种类型, 可以实例化函数对象。从 lambda 表达式中返回⼀个值, 下面两个调用等价。以下匿名函数等价, 匿名函数总是需要return。lambda不能指定函数返回的类型。已有函数的引用, 用双冒号加函数名。使⽤函数字⾯值的代码块。省略所有可以省略的后。
2023-03-27 22:00:31
371
原创 flutter的plugin和package开发
package是一个可以共享的模块代码 , 最低要求是包含一个 pubspec.yaml 文件和lib/文件夹一个 package 可以包含依赖关系 (在 pubspec.yaml 文件里声明)、 Dart 库、应用、资源、测试、图片和例子等pub.dev 上列出了很多 package, 相当于远程仓库, 可以在上面搜索和过滤packageplugin, 全称是plugin package, 特指提供原生功能的package, 又称插件可以在Pub 上任一 package 页面的 Installing
2022-07-07 18:00:05
1122
原创 flutter中使用android原生视图
虚拟显示模式(Virtual displays)将 android.view.View 实例渲染为纹理,不会嵌入到 Activity 的视图层次结构中。键盘处理和辅助功能可能无法工作。混合集成模式(Hybrid composition)需要 Flutter 1.22(推荐 1.22.2)。将原生的 android.view.View 附加到视图层次结构中。键盘处理和无障碍功能是开箱即用的。Android 10 之前,这个模式会大大降低 Flutter UI 的帧率(FPS)。此widget继承S
2022-07-07 17:58:04
1128
3
原创 flutter_inappwebview插件源码解析
flutter_inappwebview插件源码解析只讲第一个InAppWebView 以及 js交互(InAppWebView后面简称为IAwebview)这里有官方提供的使用示例InAppWebView类实际上是将原生的android视图嵌入到flutter中即将原生的webview封装成widget.........
2022-07-07 10:19:27
2771
原创 Java ThreadLocal源码详解
Thread类的定义中有说明每个线程自己保存一个 ThreadLocal.ThreadLocalMap 类每次使用ThreadLocal的get()或set(), 都是用ThreadLocal作为key获取或存放map的valueThreadLocal可以避免在一个线程类中的方法中重复传递参数Set()ThreadLocal 的 set ()先获取当前线程获取线程的ThreadLocalMapmap为null 就 不为null就get()同样是去找当前thread的ThreadLocalMap,
2022-06-11 12:53:36
220
原创 android studio开启报错 faile to create jvm
android studio报错解决方法:删除下面文件夹中的内容C:\Users\kevin\AppData\Roaming\Google
2022-05-10 16:46:04
668
原创 qt使用v4l2 VIDIOC_REQBUFS 请求缓冲区时报错 errno=12 , Cannot allocate memorY
[ 29.878000] vmalloc: allocation failure: 3281670855 bytes[ 29.879000] test: page allocation failure: order:0, mode:0x80d2
2022-03-23 13:10:37
1188
1
原创 转速闭环控制直流调速系统的仿真 matlab
转速闭环控制直流调速系统的仿真 matlab本文基于 <<电力拖动自动控制系统----运动控制系统>> 阮毅第三章 3.4 节的仿真内容仿真文件链接链接:https://pan.baidu.com/s/19hl-IW3xEQZ0kLH0QNeQ6g提取码:xp6k本仿真主要由三个模块组成pwm模块, 包括控制和驱动模块电动机模块转速负反馈PI调节模块以下是仿真结果参考博客运动控制第二篇之闭环控制直流电机调速系统仿真...
2021-11-23 11:56:50
9672
12
原创 android 从深色模式切换到浅色模式报错 java.lang.IllegalArgumentException: Wrong state class, expecting View State
java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class com.google.android.material.button.MaterialButton$SavedState instead.This usually happens when two views of different type have the same id in the same hiera
2021-11-23 11:25:43
2519
原创 win安装 mysql
添加系统环境变量: 系统变量 path 中添加mysql安装目录的bin文件夹路径如: C:\Program Files\MySQL\MySQL Server 8.0\binpowershell执行命令初始化mysql mysqld --initialized在mysql安装目录中的文件 data/本机名.err 查看自动生成的密码, 复制下来如 : C:\Program Files\MySQL\MySQL Server 8.0\data\DESKTOP-HIJSR68.err..
2021-11-11 11:12:04
389
原创 java 中集合以及数组的 for each 语法糖的实现原理
The Java® Language Specification对于实现了iterable的类, 编译器会将for each转换成iterator遍历, 代码如下//对于Iterable<T> iterable,代码for (T t : iterable) { <loop body>}//是语法糖,等价于下面的代码for (Iterator<T> iterator = iterable.iterator(); iterator.hasNext();
2021-09-19 11:13:22
201
原创 3-1-queue_队列_顺序存储
/* 队列 queue 顺序存储实现数组循环队列 (这里数组循环 front 指向的数组位置是空的, 下一位才是队首, 是为了区分队列是满还是空而这样处理) 创建空队列 判断是否队列为满 入队列 判断是否队列为空 出队列*/#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace
2021-04-12 20:51:23
138
原创 3-2-queue_队列_链式存储
/* 队列 queue 链式存储实现 创建空队列 判断是否队列为满 入队列 判断是否队列为空 出队列*/#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;typedef int ElementType;typedef struct Queue *PointQueue
2021-04-12 20:51:00
146
原创 6-4-ShellSort希尔排序
/* * 希尔排序 插入排序的升级 * * 增量 m=n/2 * 从数组[0]开始选取间隔为 m 的数 组成新数组 * 进行插入排序 * 从数组[1]开始选取间隔为 m 的数 组成新数组 * 进行插入排序 * 直到数组[x]已经在之前被选取 * 增量 m=(n/2)/2 * 从数组[0]开始选取间隔为 m 的数 组成新数组 * 进行插入排序 * 从数组[1]开始选取间隔为 m 的数 组成新数组 *
2021-04-12 20:49:38
118
原创 6-3-InsertionSort插入排序
/* * 插入排序(递减) * * 将数组[0]作为最开始的牌堆 * 选择数组[1]向前比较 * 遇到小于的牌就交换 * 直到遇到大于的牌就停止代表加入了牌堆 * 选择数组[2]向前比较 * 遇到小于的牌就交换 * 直到遇到大于的牌就停止代表加入了牌堆 * 选择数组[3]... */#include <stdio.h>void printNums(int* nums, int size);void InsertSort(int nums[]
2021-04-12 20:45:57
202
原创 6-2-HeapSort堆排序
/* * 堆排序 选择排序的升级 * * --------算法一 : * 把原有数组变成一个最小堆数组 * 申请一个 n 空间的新数组 * 从最小堆数组中取最小的数依次放入新数组[0][1][2]... * 然后将新数组的值复制到原有数组 * --------需要额外 O(N) 空间, T(N)=O(NLogN) * * --------算法二 : * 将原有数组变成一个最大堆 * 将数组[0]既数组最大的数交换到堆的末尾 数组[n] * 然后将 0到n-1的数组变成一个最大
2021-04-12 20:45:11
141
原创 6-1-SelectionSort选择排序
/*选择排序从数组[0]开始在 1-n 中互相比较选择一个最小的数 数组[min]将 数组[min]与数组[0]交换从数组[1]开始在 2-n 中互相比较选择一个最小的数 数组[min]将 数组[min]与数组[1]交换从数组[2]开始 …/#include <stdio.h>void printNums(int nums, int size);void SelectionSort(int nums[], int size);// 递减排序void Selecti
2021-04-12 20:44:29
379
原创 栈的链式存储实现
/* 栈 stack 创建空栈 入栈 push 出栈 pop*/#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;typedef int ElementType;typedef struct StackNode *PointStack;typedef struct StackNode *Poi
2021-04-05 01:34:38
157
原创 栈的顺序存储实现, 创建, 入栈, 出栈
/* 栈 stack 创建空栈 判断是否栈满 入栈 push 判断是否栈空 出栈 pop*/#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;typedef int ElementType;typedef struct Stack *PointStack;ty
2021-04-05 01:34:26
468
原创 链表的创建, 插入, 删除与查找
/* 链表 link list 创建链表 插入 删除 查找*/#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;typedef struct LNode *List;typedef struct LNode *NodePoint;typedef int ElementType;
2021-04-04 22:32:40
234
原创 线性表的数组实现
/* 线性表 List List MakeEmpty() // 初始化空线性表 ElementType FindKth( int K, List L) // 查找位序为 K 的元素并返回 int Find( ElementType X, List L ) // 查找 X 第一次出现顺序 void Insert( ElementType X, int i, List L) // 在位序 i 前插入一个新元素 X void
2021-04-04 22:31:57
221
原创 哈希表原理
散列表定义 :每个 key 对应一个 value每次获取 key, 带入散列函数 h(key) 运算得到下标数组的相应的下标位置放 value装填因子 = 表中元素 / 表大小散列函数的构造方法 :(虽然函数要求输入的是数字, 但是 key实际可以为字符串, 因为字符串可以用二进制表示)直接定址法h(key) = a * key + b (a, b 为常数)除留余数法h(key) = key mod p (p 一般去素数)数字分析法h(key) = atoi(key+n
2021-04-04 22:26:49
281
原创 基于分离链接法的哈希表实现
/* 哈希表 基本操作 : - 创建空的哈希表 - 查找 key 对应的 value - 插入键值对 ( 分离链接法)*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>// hashTable 地址空间存放的结构体typedef struct Node* pointerNode;// hashTa
2021-04-04 22:25:13
115
原创 基于平方探测法的哈希表实现
/* 哈希表 基本操作 : - 创建空的哈希表 - 查找 key 对应的 value - 插入键值对 (平方探测法)*/#include <stdio.h>#include <stdlib.h>// hashTable 地址空间存放的结构体struct Cell;// hashTable 结构体typedef struct HashTable* pointerHashTable;// 操作函数 --------
2021-04-04 22:24:37
600
原创 哈夫曼树的创建和最小堆的建立,插入与取出
/* * 哈夫曼树 * 带权路径长度最小的二叉树的形态 * 树的带权路径长度 : 所有结点的(路径长度✖️结点的权值)的和 * * 构建哈夫曼树 : * 从规模为 n 的最小堆中取两次最小值, 然后把权值加起来, 结果放入最小堆 * 再次取两次最小值 ... * 由于每次都取两个放回去一个, 相当于每次取了一个 * 那就可以取 n-1 次, 因为第 n 次取的时候堆里面只有一个值了 * PS : 前面实现了最大堆, 现在先实现一下最小堆吧 */
2021-04-04 22:23:18
336
原创 最大堆的建立, 插入, 取出
/* * 最大堆 * 常使用完全二叉树表示, 用数组来存储 * 定义 : * 每个结点的值不小于子结点的值 * * 操作 : * 建立空的堆 * 利用已有的数组建立堆 * 插入 * 取出最大值 * */#include <stdio.h>#include <stdlib.h>#include <memory.h>#define ElementType int#define MaxData 1000typedef struc
2021-04-04 22:21:20
239
原创 平衡二叉树的插入,删除与查找
平衡二叉树与二叉搜索树不同之处是结点结构里多了平衡因子balance factor : 绝对值(左子树的高度-右子树的高度)定义要么是二叉搜索树要么是空树左右子树的高度差不超过一左右子树都是平衡二叉树高度的定义叶结点高度为 1树的高度等于左子树高度与右子树高度的最大值操作1. 插入平衡二叉树插入结点后可能会导致失衡此时就要调整离插入结点最近的失衡的树 , 失衡的四种情况有不同的应对方式左单旋 : 失衡的树的左子树的左子树比较高让 leftHeight-1, r
2021-04-04 22:20:26
195
原创 二叉搜索树的查找与插入操作
/* * 二叉搜索树 * * 定义 : * 对于一颗二叉树其 * 非空左子树的所有键值小于其根结点的值 * 非空右子树的所有键值大于其根结点的值 * 左右子树都是二叉搜索树 * * 操作 : * 查找 * 递归查找 * 迭代查找 * 插入 * 递归插入 * 迭代插入 * * * * */#include <iostream>#include <stdio.h>#include
2021-04-04 22:19:17
234
2
原创 二叉树的各种创建与遍历
/* * 二叉树 BinaryTree * 创建树 : * 递归遍历生成 * 层序遍历生成 * 遍历 : * 递归遍历 : 前序、中序、后序 * 非递归遍历(堆栈) : 前序、中序、后序 * 层序遍历(队列) * */#include <iostream>#include <stdio.h>#include <stdlib.h>#include <sta
2021-04-04 22:17:24
259
原创 ip 分组校验和的计算和检验 c代码实现
ip 分组发送时写入校验和 // 校验和放到最后面计算写入 // 源地址 12 13 14 15 unsigned int net_srcIP = htonl(srcAddr); memcpy(buffer + 12, &net_srcIP, 4); // 目的地址 16 17 18 19 unsigned int net_dstIP = htonl(dstAddr); memcpy(buffer + 16, &ne
2021-03-14 00:50:16
844
原创 网络字节序和主机字节序 以及大小端的问题
一个地址单元对应着一个字节c 语言中, 一个字符就是一个字节, 所以字符串不用考虑大小端的问题对于 int 这种四个字节的, 就有问题了#include<stdio.h>int main() { long int longInt = 0x12345678; unsigned char* p = (unsigned char*)&longInt; printf("\n longInt(%%d) = %d \n longInt(%%x) = %
2021-03-13 18:39:36
142
原创 c 语言获取数组大小 sizeof 对于数组和指针的区别
c 语言 sizeof 对于 int 数组和 int 指针是不一样的对于 malloc 定义的数组来说不能用 sizeof 获取数组大小#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int nums[10]; int *pNums = (int*)malloc(10*sizeof(int)); printf("size of nums = %d\n", size
2021-03-06 14:25:21
162
原创 c++ 主函数参数 argc 和 argv[] 是什么
今天测试了一下 cpp main主函数的参数 , 结果很有意思#include <stdio.h>int main(int argc, char const *argv[]){ printf("%d\n",argc); for(int i=0;i<argc;i++){ printf("argv[%d] = %s\n", i, argv[i]); } return 0;}
2021-03-06 13:24:29
181
原创 哈工大操作系统课程及实验完结体会以及经验 , 以及开箱即用的虚拟机实验环境
目录先导篇 : 做实验之前你要看的????????????大礼包 : 虚拟机实验环境???? : 百度网盘链接这是实验指导书和我做的笔记????[仓库](https://github.com/Kevin-Kevin/hit-operatingSystem)使用指南先导篇 : 做实验之前你要看的课程学习需要 汇编语言 , C 语言 汇编我是现学的 , 前面几个实验要用到C 语言 , 这个不用说 ⚠️ 注意 , 字符串数组要加 '\0’C的库函数要能正确使用 , 在网上找好的一个 C 函数库参
2021-03-04 21:36:17
1131
1
原创 快速在 github 上部署 gitbook生成的静态页面
1. 创建 github 仓库, clone 到本地目录git clone yourRepositoryUrl2. 安装 gitbook百度搜索如何安装3. 安装 gitbook-summarynpm install -g gitbook-summary4. 新建 push.sh终端运行代码touch push.shchmod +x push.sh代码意思 : 新建了 push.sh , 然后改变权限, 使其可执行5. 向 push.sh 写入命令echo 'make dict
2021-03-03 01:14:01
395
原创 剑指 Offer 59 - II. 队列的最大值
剑指 Offer 59 - II. 队列的最大值请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max_value"][[],[1],[2],[],[],[]]输出:
2021-02-28 15:16:56
127
原创 剑指 Offer 45. 把数组排成最小的数
剑指 Offer 45. 把数组排成最小的数输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”方法一 : 插入排序 (要使用特殊的比较方式)class Solution {public: string minNumber(vector<int>& nums) { // 插入排序
2021-02-28 15:14:33
73
原创 剑指 Offer 30. 包含min函数的栈
剑指 Offer 30. 包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(
2021-02-28 15:09:39
72
stm32之二进制灯外部中断.zip
2020-03-23
stm32之ampire128.zip
2020-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人