自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 pytorch强化学习(2)——重写DQN

在q-learning当中,Q函数的输入是状态state和action,输出是q-value。而DQN就是使用神经网络来拟合Q函数,所以从直观上来说,我觉得神经网络的输入应该是状态state和action,输出应该是q-value。但是,网上绝大多数DQN的代码实现都把state作为网络输入,把所有action的q-value的组合作为网络输出。我觉得这是不直观的、令人费解的,于是我按照自己的想法写了一份DQN代码。

2024-03-06 17:37:58 476

原创 pytorch强化学习(1)——DQN&SARSA

文件,功能和上面DQN的一样,内容也几乎完全一样,只是把DQN的名字改成SARSA而已,所以在这里不再赘述。SARSA和DQN基本相同,只有在更新Q网络的时候略有不同,已在代码相应位置做出注释。代码,在这里定义了网络模型和SARSA模型。代码,在这里定义了网络模型和DQN模型。

2023-12-13 12:06:11 734

原创 王树森深度强化学习 笔记

本笔记基于王树森深度强化学习。

2023-12-07 10:45:59 1104

原创 目录树自动生成器 golang+fyne

一款基于golang+fyne的带图形化界面的目录结构树生成器,自动扫描目录内的所有文件和子目录,并以文本的形式输出目录结构图,支持自定义排除文件

2023-11-26 16:01:58 1263

原创 带权并查集

在并查集里面,为了减小时间花费,我们把一个集合里的所有结点都直接挂在根节点下面。在带权并查集中我们同样是这种做法,对于一一对父子结点,它们所代表的两艘战舰直接的距离可能是任意值。并查集相信大家都不陌生,能够以极低的时间复杂度进行区间合并和区间查询,而带权并查集就是在此基础上新增了查询和维护节点到根节点距离的功能,注意此处所说的。,它的题意如下,在这道题中距离的定义就是两个战舰之间所间隔的战舰数。这是例题的代码,一切都写在注释里面。,而是题目里面描述和规定的距离。比如对于这道带权并查集的经典例题。

2023-09-25 16:49:16 166

原创 go工具类的封装——(一)配置文件工具类封装

在后端开发中,我们经常会使用配置文件,所以我想封装出一个工具类出来,能够提供简洁的接口,让我们很方便地读取配置文件并从配置文件中提取信息。面向接口编程是个好习惯,事先花点心思设计接口,可以使代码结构更清晰,也可以使自己在写代码时少走弯路,减少无意义的增增改改。)“yaml_config”,然后就可以得到工具类的实例对象,可以获取各种配置项的值,并且实现了上述的所有功能。代码只是实现各个接口所规定功能的过程,结合接口来读实现代码,很容易就能理解,我就不再细说了。,传入文件类型“yaml”、文件目录“…

2023-09-14 19:43:30 427

原创 go并发处理业务

我们为什么要引入并发呢,正如操作系统课程上讲的那样,目的就是为了提高cpu的利用率,如果某个线程正处在等待IO的状态,此时cpu是空闲的,那么我们就应该用cpu去执行别的线程,而不是傻傻的等待这个进程结束再去进行别的操作。实际上,在服务端程序开发和爬虫程序开发时,我们的大多数业务都是IO密集型业务,什么是IO密集型业务,通俗地说就是CPU运行时间只占整个业务执行时间的一小部分,而剩余的大部分时间都在等待IO操作。比如下面这段代码,我执行了一个很简单的IO操作,就是请求百度的主页面。

2023-09-13 17:45:52 262

原创 数据结构与算法——复习总结

线性表括顺序表和链式表。栈(Stack)是只允许在一端进行插入或删除操作的线性表。应用:表达式求值,函数递归调用队列(Queue)是只允许在一端进行插入,在另一端删除的线性表。应用:树和图的广度优先遍历,操作系统FCFS算法双端队列:只允许从两端插入、两端删除的线性表。

2023-09-10 17:36:18 296

原创 操作系统——复习笔记

操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。操作系统的四大特征:并发、共享、虚拟、异步。并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。常考易混概念——并行:指两个或多个事件在同一时刻同时发生。共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

2023-09-10 17:35:44 436

原创 go反射特性实践——获取结构体标签的值、获取结构体属性信息、获取和修改结构体属性值

首先,什么是反射呢,网上的概念和定义一大堆,我想说说自己的理解。在我看来,反射在程序上的体现就是,程序能够在运行的过程中能够对一个未知数据类型的变量进行信息获取和操作,这就是反射。在go语言里,未知数据类型那就是interface{}呗,有时候也叫做any。假如现在有个any类型的变量x,如果没有反射的话,那么除了把x赋值给另外一个any类型的变量,我们什么也做不了,因为any类型在语法层面上是不包含任何成员变量和成员方法的。

2023-09-10 16:41:07 1351

原创 利用go多态实现一个简单工厂模式

go的多态只能用接口来实现,不能用嵌入结构体的继承方式来实现。go的多态和java很像,结合下面代码中的例子很容易就能理解。在下面代码中,我们定义了一个接口DatabaseConnection,代表着数据库连接。因为工厂方法声明的返回值类型是接口DatabaseConnection,而其真实的返回值是三种具体实现该接口的结构体的某一种,所以这里就体现了go对多态的支持。我们创建一个工厂,工厂中的方法功能是创建一个数据库连接,根据传入参数的不同,工厂方法返回三种数据库连接其中的某一个。

2023-09-08 20:33:01 372

原创 软件设计模式——UML基础、面向对象设计原则、创建型模型、结构型模型、行为型模型

常用软件设计模式的定义和实例,本篇文章介绍了UML基础、面向对象设计原则、创建型模型、结构型模型、行为型模型

2023-08-19 17:19:14 1441

原创 算法比赛备赛笔记

个人觉得,对于计算机专业的大学生来说,算法竞赛应该是性价比最高的比赛了。除了icpc和ccpc这两个比较难拿国奖之外,其他的比赛获奖难度并不大,比如蓝桥杯、天梯赛、睿抗,认真学习一年算法,水个国奖完全没问题。本篇博客是我在一年多的学习和比赛中所做的笔记,记录的内容都是我认为在比赛中高频次出现的算法,而且除了线段树之外都是比较基础的算法。应该会不断更新吧。

2023-08-11 22:35:23 540 1

原创 在go中使用chan实现一个简易信号量机制,进而实现并发数量的控制

go语言中的chan也具有阻塞和唤醒协程的功能,所以我就使用chan实现了一个简易的信号量机制。具体来说就是有n个协程,每个协程中会在控制台输出一个数字,我使用信号量对并发执行数量进行限制,使最多有nLimit个协程同时执行。信号量是操作系统中一个经典的进程同步机制,它可以通过阻塞和唤醒进程,来实现进程间的同步、并发数量的限制、互斥资源的访问等等。其实阻塞和唤醒这个功能不需要我来写,chan自带这个功能,我只是基于chan做进一步的封装,在测试代码中我利用上述功能,模拟了并发数量限制的效果。

2023-07-30 22:35:04 174

原创 UniApp——对uni.request()进行封装,实现拦截器和typescript支持

于是,我想着用uni-app提供的uni.request()来做ajax请求,但此方法仅仅具有简单的发送请求和接受响应功能,并不具备axios的拦截器、ts支持等功能。比如,在原网站里面我的ajax请求是基于axios的,也就是基于XMLHttpRequest的,当我把原网站中ajax模块的代码复制到uni-app中时,发现项目是跑不通的。报了一堆错,我也看不懂,但我猜,uni-app可能不支持XMLHttpRequest,导致axios不能用。最近在学习uni,尝试着把之前写的一个小网站(

2023-04-28 13:53:25 2964 1

原创 中缀表达式求值,栈

利用栈,对含有加减乘除、小括号的表达式求值。

2023-04-16 21:32:37 110

原创 进程调度算法FCFS、SJF(SPF)、SRT、RR原理及代码实现

使用c++实现四种常见的进程调度算法

2023-03-30 21:26:32 3169 11

原创 蓝桥杯真题——人物相关性分析(二分解法)

ps:对于该题,蓝桥杯官方OJ的测试数据是错的,想测评代码请选择其他OJ,比如acwing等等。

2023-03-23 19:17:39 300 1

原创 WebSocket的基本使用——实现一个简易的多人聊天室

前端使用websocket,后端使用nodejs+ws,实现一个简易的多人在线聊天室

2023-03-21 16:31:21 898

原创 以面向对象的设计方式,实现一个简单的虚拟dom

以面向对象的设计方式,实现虚拟dom的创建和渲染

2023-03-19 17:00:22 73

原创 vue-router + element-plus实现面包屑导航栏和路由标签栏

vue-router+element-plus实现动态的面包屑导航栏、动态的路由标签栏

2023-03-18 17:29:45 24540 6

原创 常见dp模型的状态定义和计算方法

背包问题:01背包 完全背包 多重背包 分组背包线性dp:最长上升子序列,最长公共子序列,最短编辑距离区间dp:合并石子

2023-03-16 16:23:53 584

原创 优先队列(c++、java)

java优先队列的用法,c++优先队列用法

2023-03-12 17:42:59 101

原创 vue响应式原理

vue响应式原理,vue2基于Object.defineProperty()的响应式、vue3基于Proxy的响应式,简单实现。

2023-02-23 20:19:08 63

原创 常用数据结构与算法java版01(二分、排序、并查集)

二分,快速排序,堆排序,并查集

2023-02-09 17:39:50 87

原创 防抖和节流工具类的封装

防抖和节流工具类的封装

2023-02-01 23:05:18 389

原创 vue-router + element-plus实现多层级路由的动态展示

根据useRouter().getRoutes()获得的一维路由数组,动态生成分层级的路由菜单栏。

2022-12-05 15:34:09 5286 6

原创 在前端端使用vue+axios上传文件,在服务端使用express+fs接收并保存文件

大致流程如下1. 我们使用vue提供的ref属性来获得标签的dom对象2. 该dom对象的files属性数据类型为FileList,为input的文件信息3. 遍历FileList,得到File对象,使用FileReader读取File对象,获得该文件的ArrayBuffer对象4. 把ArrayBuffer对象转换为数组,使用post请求发送给后端。(题外话:后端拿到ArrayBuffer对象也能保存文件,但很怪的一

2022-10-19 16:13:37 2035

原创 使用回调函数实现Promise

使用回调函数实现Promise, Promise源码

2022-10-17 20:11:05 439

原创 如何往linux虚拟机里传输文件

通过简易的步骤搭建服务器,通过局域网来实现主机和虚拟机之间的文件传输。

2022-08-24 16:30:12 8428 3

原创 python笔记

文章目录Python语法列表(数组,字符串)切片排序常用方法PandasPython语法列表(数组,字符串)切片str = "123456"print(str[::1]) # pythonprint(str[::2]) # pto 从左往右数,数2步,取一个值print(str[::-1]) # nohtyp 从右往左数,数1步,取一个值,即:取全部值print(str[::-2]) # nhy 从右往左数,数2步,取一个值a[i]a[-1]表示最后一个元素,a[-2]是倒数第二个元素

2022-05-29 12:00:02 958

原创 linux复习

shell基本使用文件含义:文件目录相关指令:目录指令文件操作命令文件内容操作命令归档及压缩命令vim编辑器其他用户和组管理知识概述用户帐号文件组帐号文件用户和组相关指令磁盘与文件系统管理fdisk命令格式化定义文件系统挂载、卸载自测题:8、1、查看文件内容命令cat、more、less,cat一次性罗列文件内容,不能翻页;more可以按空格翻页;less不仅可以按空格翻页,还可以用光标上下移动来查看文件内容。shell基本使用文件含义:以下目录的含义/bin 存放普通用户可执行文件/.

2022-04-26 11:34:30 185

原创 Promise原理分析及源码实现

promise源码实现

2022-04-15 20:48:47 164

原创 Promise的使用

promise是用来干什么的?promise的基本使用Promise构造函数执行器函数里的resolve和rejectPromise.prototype.then()promise的值穿透与catchPromise APIPromise.resolve(),Promise.reject()Promise.race(), Promise.all()async和await

2022-04-12 20:29:07 317

原创 Vue3之vue-router、pinia

1.路由基础路由的基本使用编程式导航命名视图2. 路由传参方式一:就硬写方式二:通过query和params带参数的动态路由

2022-04-09 17:43:58 2331

原创 Vue3之Vuex

vuex的基本使用,vuex的模块化,vuex的进阶

2022-04-04 17:56:07 5020

原创 vue3组件间通信

父与子通信,使用props、$attrs、$parent、$emit;父与后代通信,使用provide、inject;任意组件间通信,使用事件总线。

2022-04-01 20:39:23 1517

原创 最短路dijkstra

最短路dijkstra最短路给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 −1。数据范围1≤n≤500,1≤m≤105,图中涉及边长均不超过1

2022-02-27 14:07:45 167

原创 Java入门级项目 汽车租赁系统

1、汽车租赁系统的需求分析:汽车租赁系统的使用者有用户和管理员两种。用户登陆之后要能够查看该账户余额、该账户已租车辆的信息、租赁系统中所有车辆的信息。如果当前账户没有租赁任何汽车,那么用户可以租赁汽车,并用账户余额付款租赁费用。如果当前账户已租赁汽车,那么用户可以更换汽车。管理员登录之后可以查看租车系统的销售额,以及租车系统所有车辆的信息。同时,管理员可以添加、修改和删除车辆信息。登录者输入非法登录信息时,即输入的账户或者密码错误,这种情况则在控制台输出“账号或密码错误,登录失败!”,并终止程序运行

2021-12-07 21:58:56 4380 2

原创 操作系统 内存管理之动态动态分区分配算法 原理+代码实现

1、定义一个结构体表示空闲内存块的信息,包括内存块的起始地址和内存块的大小;定义另外一个结构体来表达进程的信息,包括进程的id、进程的大小和进程被分配内存的起始位置。分别用一个长度为1000的结构体数组表示所有空闲内存块和进程的信息。struct Memory_block{ int st; int amount; }m[1000];//内存块的首地址和大小。struct Progress{ int id; int amount; pair<int,

2021-12-07 21:44:07 6485 2

Java入门级项目 汽车租赁系统

Java入门级项目 汽车租赁系统

2021-12-07

空空如也

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

TA关注的人

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