自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 yearrecord——一个类似痕迹墙的React数据展示组件

介绍一下自己做的一个类似于力扣个人主页提交记录和GitHub主页贡献记录的React组件。下图分别是力扣个人主页提交记录和GitHub个人主页的贡献记录,像这样类似痕迹墙的形式可以比较直观且高效得展示一段时间内得数据记录。然而要从0实现这个功能还是有一些麻烦得,并且该功能可用的场景也比较多,于是便把它做成了一个通用的组件,只需要提供数据即可渲染这样的效果。

2024-07-17 15:58:13 560

原创 向微队列添加任务的五种方式

在 JavaScript 堆栈上的当前操作运行完成之后,且在允许事件循环继续之前,此队列将被完全排空。发现无论执行多少次, “tick"总是先于"promise resolve”,于是推测"滴答队列"的优先级似乎比微队列更高.方法的回调将会被添加到微队列中执行, 若查看V8引擎源码可进一步佐证这一点。在不考虑兼容性的情况下, 应当首选这个方法, 因为这个方法就是专门用来做。也可以达到向微队列中添加任务的目的, 结果。都使用微任务队列去运行它们的回调函数。同样根据上文提到的MDN的描述, 使用。

2024-03-02 15:39:05 1485 2

原创 解决particles.js报错Uncaught TypeError: ‘caller‘, ‘callee‘, and ‘arguments‘ properties may not be access

警告: 在严格模式 (en-US)下,第 5 版 ECMAScript (ES5) 禁止使用 arguments.callee()。当一个函数必须调用自身的时候,避免使用 arguments.callee(),通过要么给函数表达式一个名字,要么使用一个函数声明。在particles,js的源码文件中搜索上面三个关键字,发现它只使用了。particles.js是一个相对较老的js库,它使用了。注意这个函数名可以随便取,只要前后对应即可。也只使用了一次,那就好办了。大约在1421行出,然后我们。

2023-08-17 19:41:53 750

原创 解决No module named tkinter

是python3自带的包,不能用pip安装,我这里安装的python版本是3.9,那为什么我没有这个包呢?仔细一想,会不会是当初安装python时选的自定义安装别切没有选择包含。的那部分,于是准备重新安装python试一试。看了一下我这里python具体版本时3.9.13,然后到。和IDLE是捆绑的,当初想着不需要IDLE就没选这个,于是悬赏点击next再安装就可以了。今天准备使用tutle画个图,导入turtle后运行发现提示没有。原来可以添加或移除单独的模块,于是选择modify,

2023-01-08 12:50:47 4464

原创 解决正常安装GPU版pytorch后pycharm引入报错问题“No module named torch“

到此问题就解决了,另外可以把之前的那几个文件夹给删了,否则查看位置的那两行代码可能还是输出原来的位置,删了之后就输出新的位置了。首先说明我遇到的情况是pytorch已经正常安装了,也就是如下代码会正常输出。相关的所有文件夹(我这里是以下四个)这个文件夹里去,这个就是。

2022-10-07 17:07:58 2489 1

原创 结合Redux Toolkit使用React Redux

初学redux时,看了很长时间的二者(redux与react-redux)官方文档以及一些视频教程才弄明白它们的基本使用,特此记录一下其基本的使用方法(不涉及redux的工作原理),本文将实现一个小小的计数器。首先使用创建一个react项目,名称随便输,模板选择react即可:创建好后删去无用的代码然后安装四个依赖、、、,其中只是为了让界面好看一些,不是必要的:编写代码首先在目录下创建一个用于存放相关代码的目录,在该目录下创建两个文件:与,并分别写入以下代码:主要思路是首先借助提供的方法创建切片,

2022-06-27 22:18:39 545

原创 最大子数组、最长公共子序列、0-1背包、编辑距离等若干算法实现

最大子数组问题 public static int getMaxSubArray(int[] nums,int left,int right){ //动态规划解法 int[] D = new int[nums.length]; //D[i]表示以第i个元素开头的最大的子数组和 D[nums.length-1] = nums[nums.length-1]; int res = D[nums.length - 1]; //计算的同时求最

2022-03-09 20:52:50 373

原创 Spring Boot + WebSocket实现网页在线实时聊天

部分代码首先创建springboot项目并引入依赖: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

2022-03-08 16:58:25 2899

原创 spring配置文件头

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www

2021-10-17 16:38:18 303

原创 微操作、微命令、微指令、微程序、微周期、微地址

微操作完成一条机器指令是通过完成一个微操作序列实现的,这些微操作是计算机中最基本、不可再分解的操作。比如:取指周期中,我们需要将程序计数器PC的内容送入到MAR中,CU向存储器发出读信号: 1->R,再比如执行周期中清空ACC的操作:0->ACC,这些都是微操作。微命令微命令是微操作的控制信号,每一个微操作都需要再对应的微命令控制下完成。所以微命令和微操作是一一对应的。微指令微指令是若干微命令的集合。一条微指令通常至少包含两大部分信息:操作控制字段: 该字段显示了这条微指令是由那些

2021-09-29 19:27:51 14135

原创 已知x的补码,求-x的补码

两种情况当x为正数举个例子:设[x]补 = 01010,则有:∵ [x]补 = 01010;∴ [x]原 = 01010;∴ [-x]原 = 11010;∴ [-x]补 = 10110;对比[x]补与[-x]补的每一位可以发现,把[x]补连同符号位的每一位都取反再加1即可得到[-x]补当x为负数还是举个例子:设[x]补 = 11011,则有 ∵ [x]补 = 11011; ∴ [x]原 = 10101; ∴ [-x]原 = 00101; ∴ [-x]补 = 00101;可以发

2021-09-09 17:24:41 25081 7

原创 堆排序、归并排序、快速排序

堆排序堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序是基于堆这种数据结构实现的,什么是堆呢?首先,堆是一棵完全二叉树,其次根据性质不同可以分为以下两种:大根(顶)堆:每个结点的值均大于等于它的两个孩子结点的值小根(顶)堆:每个结点的值均小于等于它的两个孩子结点的值显然,大根堆的堆顶具有整个堆中最大的结点值,小根堆的堆顶具有整个堆中最小的结点值。下面我

2021-08-15 21:20:08 993

原创 如何不使用额外变量交换两个数的值

代码a = a^bb = a^ba = a^b没错就是上面这三行简单的代码,下面简单说一下原理。原理首先需要了解异或^的运算规则。这是一个二进制运算符,一位二进制下有一下几种情况:0^1 = 10^0 = 01^0 = 11^1 = 0简单来说就是一句话:相同为0不同为1,那么一个数和自身作异或运算将等于0 另外异或还有两个很重要的性质:交换律和结合律:a^b = b^a,a^b^c = a^(b^c),这两个性质后面会用到。然后分析一下上面三行代码的运算过程。第一行a =

2021-08-14 16:38:14 646

原创 迪杰斯特拉算法求图的最短路径(Java)

本文所有代码基于Java实现图的存储和创建一文所实现的带权无向图迪杰斯特拉算法迪杰斯特拉算法(Dijkstra) 是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。Dijkstra算法设置一个集合S记录已求得最短路径的顶点,初始时把源点v0放入S,集合S每并入一个新顶点vi,

2021-08-01 20:21:11 1003

原创 普里姆算法、克鲁斯卡尔算法求图的最小生成树

本文所有代码都基于Java实现图的存储和创建一文所实现的带权无向图普里姆算法普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。Prim算法构造最下生成树的过程如下图所示:初始时从图中任取一顶点(如顶点A)加入树T,此时树中只有一个顶点,之后选择一个与当前T中顶点集合距离最近的顶点,并将该顶点和相应的边加入T,每次操作

2021-07-28 20:51:12 3456

原创 Java实现图的广度优先遍历和深度优先遍历

本文所有代码全部基于Java实现图的存储和创建一文所实现的带权无向图。广度优先遍历广度优先搜索(Breadth-First-Search,BFS) 类似于二叉树的层序遍历。基本思想是:首先访问起始顶点v,接着由v出发,依次访问未访问过的邻接顶点w1,w2,…wi,然后依次访问w1,w2,…wi的所有未被访问过的邻接顶点;再从这些访问过的顶点出发,访问他们所有未被访问过的邻接顶点,直至图中所有顶点都被访问过为止。若此时仍有顶点未被访问,则另选图中一个未被访问的顶点作为起始点,重复上述过程,直至所有顶点都

2021-07-27 13:48:50 714

原创 Java实现图的存储和创建

带权无向图存储结构存储结构选用邻接表。当一个图为稀疏图时,使用邻接矩阵法显然要浪费大量的存储空间,而图的邻接表法结合了顺序存储和链式存储方法,大大减少了这种不必要的浪费。当然,即使我们所处理的图不是稀疏图,邻接表法也是能够胜任的。图、顶点以及边的代码定义public class graph_t { //邻接表实现的带权无向图 private ArrayList<VNode> vertices; //邻接表 private int vexNum; //顶点

2021-07-26 21:56:29 1452 5

原创 找出无序数组中第k小的元素

思路要找到第k小的元素,可以先将数组排序,再返回第k[-1]个元素即可,这里排序选择效率较高的归并排序具体实现:/*author: QGQdescription: 对于给定的n个元素的数组a[1..n],要求从中找出第k小的元素。datetime: 2021年3月28日 13点37分*/#include <stdio.h>#include <stdlib.h>int length;int *B;

2021-03-28 14:35:06 1788

原创 C语言如何引用自己写的头文件

一个例子首先创建一个工作文件夹,在其中创建头文件funtions.h,并写入一下代码:#include<stdio.h>void printstr(char *s);void printstr(char *s){ puts(s);}然后创建测试文件test.c,并写入一下代码:#include <stdlib.h>#include "functions.h"//以"filename.h" 格式引用头文件,则编译器从当前用户的工作目录开始搜索i.

2021-03-14 17:03:51 11675 2

原创 C语言归并排序

废话不多少直接上代码#include <stdio.h>#include <stdlib.h>/*Description: 归并排序Author: QinGQDatetime: 2021年3月8日20点03分 */int Length; //待排序数组长度int *A; //待排序数组int *B;

2021-03-09 15:34:27 319

原创 Python控制台制作一个月历查看器

需求一个很简单的控制台程序,功能主要是输入一个年份,在输入一个月份,然后程序打印出这一年这一月的阅历。该有的解释都在注释中了,可以参考下面的代码:程序代码MONTH_NAMES = ["Januray", "Febrary", "March", "April", "May", "Jun", "July", "August", "Septamber", "October", "November", "December"]START_DAY_FOR_JAN_1_1800 = 3de

2020-12-08 18:00:06 290

原创 操作系统|C语言模拟实现首次适应和最佳适应两种内存分配算法以及内存回收

两种算法首次适应首次适应算法从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。最佳适应最佳适应算法是指从全部空闲区中找出能满足作业要求且大小最小的空闲分区的一种计算方法,这种方法能使碎片尽量小。程序代码#include <stdio.h>#incl

2020-12-05 14:59:15 7347 2

原创 NodeJS+formidable实现文件上传加自动重命名

前述本人node初学者,此前使用原生node实现文件上传时遇到了一些困难,只做到了.txt 和.png两中格式的文件可以正常上传,如果上传其他格式文件服务端保存的文件会无法正常打开,原因是对form表单传来的数据处理不彻底。后来查找许多资料了解到了formidable这个第三方模块,可通过以下指令安装:npm i formidable官方对它的描述:A Node.js module for parsing form data, especially file uploads.一个专门用来处理表

2020-12-04 11:23:37 1280

原创 NodeJS中Buffer与字符串相互转换时一个值得注意的问题

什么问题如果一个Buffer的

2020-12-02 19:33:24 6615

原创 C语言模拟实现先来先服务(FCFS)和短作业优先调度算法(SJF)

说明该并非实现真正的处理机调度,只是通过算法模拟这两种调度算法的过程。运行过程如下:输入进程个数输入各个进程的到达事件输入各个进程的要求服务事件选择一种调度算法程序给出调度结果:各进程的完成时间、周转时间、带权周转时间。运行截图FCFSSJF代码如下#include <stdio.h>#include <stdlib.h>#define MAX_DURANCE 1e6/*author: Qin Guoqing;date:2020年1

2020-11-25 19:26:05 6402 2

原创 以非递归的方式实现二叉树的三种遍历

二叉树的代码定义//Definition for a binary tree node.public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) {

2020-10-26 20:47:01 715 2

原创 操作系统-信号量机制

信号量机制用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。什么是信号量?信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。一对原语“一对原语”即wait(s)原语和signal(s)原语,可以把原语理解为我们自己写的函数,函数名分别为wait和signal,括号里的信号量s其实就是函数调用时传入的一个参数。wait、si

2020-10-11 14:46:18 2642 4

原创 Java实现快速排序算法-Quick Sort

算法简介快速排序(Quick Sort) 是由冒泡排序改进而得的。在冒泡排序过程中,只对相邻的两个记录进行比较,因此每次交换两个相邻记录时只能消除一个逆序。如果能通过两个(不相邻)记录的一次交换直接消除多个逆序,则会大大加快排序的虚度。快速排序方法中的一次交换可以消除多个逆序。算法步骤在待排序的n个记录中任取一个记录(通常选取第一个记录)作为枢轴,设其关键字为pivotkey。经过一趟排序后,把所有关键字小于pivotkey的记录交换的前面,把所有大于pivotkey的记录交换到后面,结果将待排序记.

2020-10-04 22:01:43 361

原创 操作系统-进程控制

进程控制什么是进程控制?进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简化理解:进程控制就是要实现进程状态的转换。如何实现进程控制?图片来自王道考研B站视频截图用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。这种不可中断的操作即原子操作。原语采用“关中断”指令和“开中断指令”实现。关中断指令执行后,外部中断信号将被忽略,直到开中断执行。显然,开/关中断指令的权限非常大,必然是只允许在核心态下执行的特权指令

2020-09-23 17:22:09 527

原创 操作系统-进程的定义、组成、组织方式、特征

进程的定义、组成、组织方式、特征定义程序:就是一个指令序列。系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)。PCB、程序段、数据段三部分构成了进程实体(进程映像)一般情况下,我们把进程实体就简称为进程。例如:所谓创建进程,实质上就是创建进程实体中的PCB;而撤销进程,实质上就是撤销进程实体中的PCB。进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。组成进程(进程实体)由PCB、程序段、数据段三部分组成。

2020-09-17 21:50:49 970

原创 操作系统-进程的状态与转换

进程的状态与转换状态进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。三种基本状态运行态(Running)CPU√ 其他所需资源×占有CPU,并在CPU上运行注意:单核处理机环境下,每一时刻最多只有一个进程处于运行态。(双核环境下可以同时有两个进程处于运行态)。就绪态(Ready)CPU√ 其他所需资源×已经具备运行条件,但由于没有空闲CP

2020-09-16 19:27:18 688

原创 操作系统-系统调用

系统调用什么是系统调用,有何作用?何为“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。作用应用程序通过系统调用请求操作系统的服务,系统中的各种资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。系统调用和库函数

2020-09-04 23:43:20 1029

原创 操作系统-中断和异常

中断和异常中断机制的诞生​ 早期的计算机中,个程序只能串行执行,系统的资源利用率很低。为了解决这个问题,人们发明了操作系统(作为计算机的管理者),引入中断机制,实现了多道程序并发执行。本质:发生中断就意味着需要操作系统介入,开展管理工作。中断的概念和作用当中断发生时,CPU立即进入核心态;当中断发生后,当前运行的进程会暂停运行,并由操作系统内核对中断进行处理;对于不同的中断信号,会进行不同的处理。发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换

2020-09-04 23:42:43 456

原创 操作系统-运行机制和体系结构

OS的运行机制和体系结构运行机制何为指令?​ 简单来说:“指令”就是处理器(CPU)能识别、执行的最基本命令。两种指令特权指令(不允许用户程序使用)非特权指令两种处理状态用户态(目态)此时CPU只能执行非特权指令核心态(管态)特权指令、非特权指令都可执行两种程序内核程序操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。应用程序为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。操作系统

2020-09-04 23:42:05 277

原创 操作系统-发展与分类

手工操作阶段主要缺点:用户独占全机,人机速度矛盾导致资源利用率极低。批处理阶段单道批处理系统引入脱机输入/输出技术(用磁带完成),并监督程序(操作系统的雏形)负责控制作业的输入输出。主要优点:缓解了一定成都了人机速度矛盾,资源利用率有所提升。主要缺点: 内存中仅能有一道程序运行,著有程序运行结束后才能调入下一道程序,**CPU有大量时间是在空闲等待I/O完成。**资源利用率依然很低。多道批处理系统(操作系统开始出现)每次往内存中输入多道程序。操作系统在此阶段正式诞生,并引入

2020-09-04 23:41:19 191

原创 操作系统-特征

四大特征并发共享虚拟异步并发和共享是两个最基本的特征,二者互为存在条件并发并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。操作系统的并发性指计算机系统中同时存在着多个运行着的程序。共享共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。有两种资源共享方式互斥共享方式系统中的某些资源,虽然可以提供给多个进程使用,但一个时间端内只允许一个进程访问该资源。例如:使用QQ和微信视频通话,同意时间段内摄像

2020-09-04 23:37:40 163

原创 操作系统-概念、功能、目标

定义** 操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机地工作和资源地分配,以提供给用户和其他软件方便地接口和环境,它是计算机系统中最基本地*系统软件***。功能和目标作为系统资源地管理者,需提供什么功能?功能处理机管理存储器管理文件管理设备管理目标安全高效作为用户与计算机硬件之间地接口。功能命令接口允许用户直接使用联机命令接口用户说一句,系统做一句。如命令提示符(C

2020-09-04 23:36:49 134

原创 C#-LINQ的基本用法

LINQ是什么?LINQ是Language Integrated Query(语言集成查询的缩写),微软官方对其的描述:语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。基本用法是什么?(我目前也只会最基本的用法。。)LINQ查询操作由三个不同的操作组成:获取数据源创建查询执行查询下面我将用我学习时用的一个小例子来演示。有两个数据源:武林高手的集合和武林绝学的集合。我用的是两个集合,实际上不只是集合可以作为数据源微软官方文档提到:上例中1,数

2020-08-13 21:58:28 1911 1

原创 C#-用Winform制作一个简单的密码管理工具

为什么要做?首先是为了练习一下c#。想必大家都有过记不起某个平台的账号密码的经历,那种感受着实令人抓狂。那这么多账号密码根本记不住!我之前用python写过一个超级简单(连账号信息都写在代码里那种)的控制台程序用来给我提示密码,但是我想添加一个账号时直接被麻烦到吐。 所以我才想用Winform做一个简单的小工具来帮助我记忆。(仅供我自己使用(所以界面会比较丑。。),但是我会把代码贴出来所以有点c#基础的其实都可以自己做一个)设想我的需求非常简单在我需要的时候,输入一个平台能把对应的账号密码显示出

2020-08-09 17:52:40 2276

空空如也

空空如也

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

TA关注的人

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