- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 强化学习-价值学习算法
Sarsa是基于时序差分算法的,它的公式非常简单且易理解,不像策略梯度算法那样需要复杂的推导过程。Sarsa的核心函数是Qsa,它的含义是在状态s下执行a,在后续轨迹中获取的期望总奖励。时序差分算法的核心思想,就是用来作为Qstat←rtγ⋅Qst1at1在这里,我们使用神经网络来拟合Qsa,在选取动作时采用ϵ-greedy策略,即有ϵ的概率随机选取一个动作,1−ϵ的概率选取Qsa最大的动作。按照此策略我们在状态s。
2025-02-19 22:05:41
799
原创 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
590
原创 pytorch强化学习(1)——DQN&SARSA
文件,功能和上面DQN的一样,内容也几乎完全一样,只是把DQN的名字改成SARSA而已,所以在这里不再赘述。SARSA和DQN基本相同,只有在更新Q网络的时候略有不同,已在代码相应位置做出注释。代码,在这里定义了网络模型和SARSA模型。代码,在这里定义了网络模型和DQN模型。
2023-12-13 12:06:11
864
原创 目录树自动生成器 golang+fyne
一款基于golang+fyne的带图形化界面的目录结构树生成器,自动扫描目录内的所有文件和子目录,并以文本的形式输出目录结构图,支持自定义排除文件
2023-11-26 16:01:58
1477
原创 带权并查集
在并查集里面,为了减小时间花费,我们把一个集合里的所有结点都直接挂在根节点下面。在带权并查集中我们同样是这种做法,对于一一对父子结点,它们所代表的两艘战舰直接的距离可能是任意值。并查集相信大家都不陌生,能够以极低的时间复杂度进行区间合并和区间查询,而带权并查集就是在此基础上新增了查询和维护节点到根节点距离的功能,注意此处所说的。,它的题意如下,在这道题中距离的定义就是两个战舰之间所间隔的战舰数。这是例题的代码,一切都写在注释里面。,而是题目里面描述和规定的距离。比如对于这道带权并查集的经典例题。
2023-09-25 16:49:16
209
原创 go工具类的封装——(一)配置文件工具类封装
在后端开发中,我们经常会使用配置文件,所以我想封装出一个工具类出来,能够提供简洁的接口,让我们很方便地读取配置文件并从配置文件中提取信息。面向接口编程是个好习惯,事先花点心思设计接口,可以使代码结构更清晰,也可以使自己在写代码时少走弯路,减少无意义的增增改改。)“yaml_config”,然后就可以得到工具类的实例对象,可以获取各种配置项的值,并且实现了上述的所有功能。代码只是实现各个接口所规定功能的过程,结合接口来读实现代码,很容易就能理解,我就不再细说了。,传入文件类型“yaml”、文件目录“…
2023-09-14 19:43:30
550
原创 go并发处理业务
我们为什么要引入并发呢,正如操作系统课程上讲的那样,目的就是为了提高cpu的利用率,如果某个线程正处在等待IO的状态,此时cpu是空闲的,那么我们就应该用cpu去执行别的线程,而不是傻傻的等待这个进程结束再去进行别的操作。实际上,在服务端程序开发和爬虫程序开发时,我们的大多数业务都是IO密集型业务,什么是IO密集型业务,通俗地说就是CPU运行时间只占整个业务执行时间的一小部分,而剩余的大部分时间都在等待IO操作。比如下面这段代码,我执行了一个很简单的IO操作,就是请求百度的主页面。
2023-09-13 17:45:52
296
原创 数据结构与算法——复习总结
线性表括顺序表和链式表。栈(Stack)是只允许在一端进行插入或删除操作的线性表。应用:表达式求值,函数递归调用队列(Queue)是只允许在一端进行插入,在另一端删除的线性表。应用:树和图的广度优先遍历,操作系统FCFS算法双端队列:只允许从两端插入、两端删除的线性表。
2023-09-10 17:36:18
428
原创 操作系统——复习笔记
操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。操作系统的四大特征:并发、共享、虚拟、异步。并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。常考易混概念——并行:指两个或多个事件在同一时刻同时发生。共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
2023-09-10 17:35:44
503
原创 go反射特性实践——获取结构体标签的值、获取结构体属性信息、获取和修改结构体属性值
首先,什么是反射呢,网上的概念和定义一大堆,我想说说自己的理解。在我看来,反射在程序上的体现就是,程序能够在运行的过程中能够对一个未知数据类型的变量进行信息获取和操作,这就是反射。在go语言里,未知数据类型那就是interface{}呗,有时候也叫做any。假如现在有个any类型的变量x,如果没有反射的话,那么除了把x赋值给另外一个any类型的变量,我们什么也做不了,因为any类型在语法层面上是不包含任何成员变量和成员方法的。
2023-09-10 16:41:07
1662
原创 利用go多态实现一个简单工厂模式
go的多态只能用接口来实现,不能用嵌入结构体的继承方式来实现。go的多态和java很像,结合下面代码中的例子很容易就能理解。在下面代码中,我们定义了一个接口DatabaseConnection,代表着数据库连接。因为工厂方法声明的返回值类型是接口DatabaseConnection,而其真实的返回值是三种具体实现该接口的结构体的某一种,所以这里就体现了go对多态的支持。我们创建一个工厂,工厂中的方法功能是创建一个数据库连接,根据传入参数的不同,工厂方法返回三种数据库连接其中的某一个。
2023-09-08 20:33:01
408
原创 软件设计模式——UML基础、面向对象设计原则、创建型模型、结构型模型、行为型模型
常用软件设计模式的定义和实例,本篇文章介绍了UML基础、面向对象设计原则、创建型模型、结构型模型、行为型模型
2023-08-19 17:19:14
1865
原创 算法比赛备赛笔记
个人觉得,对于计算机专业的大学生来说,算法竞赛应该是性价比最高的比赛了。除了icpc和ccpc这两个比较难拿国奖之外,其他的比赛获奖难度并不大,比如蓝桥杯、天梯赛、睿抗,认真学习一年算法,水个国奖完全没问题。本篇博客是我在一年多的学习和比赛中所做的笔记,记录的内容都是我认为在比赛中高频次出现的算法,而且除了线段树之外都是比较基础的算法。应该会不断更新吧。
2023-08-11 22:35:23
795
1
原创 在go中使用chan实现一个简易信号量机制,进而实现并发数量的控制
go语言中的chan也具有阻塞和唤醒协程的功能,所以我就使用chan实现了一个简易的信号量机制。具体来说就是有n个协程,每个协程中会在控制台输出一个数字,我使用信号量对并发执行数量进行限制,使最多有nLimit个协程同时执行。信号量是操作系统中一个经典的进程同步机制,它可以通过阻塞和唤醒进程,来实现进程间的同步、并发数量的限制、互斥资源的访问等等。其实阻塞和唤醒这个功能不需要我来写,chan自带这个功能,我只是基于chan做进一步的封装,在测试代码中我利用上述功能,模拟了并发数量限制的效果。
2023-07-30 22:35:04
214
原创 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
3465
原创 vue-router + element-plus实现面包屑导航栏和路由标签栏
vue-router+element-plus实现动态的面包屑导航栏、动态的路由标签栏
2023-03-18 17:29:45
26299
7
原创 常见dp模型的状态定义和计算方法
背包问题:01背包 完全背包 多重背包 分组背包线性dp:最长上升子序列,最长公共子序列,最短编辑距离区间dp:合并石子
2023-03-16 16:23:53
741
原创 vue-router + element-plus实现多层级路由的动态展示
根据useRouter().getRoutes()获得的一维路由数组,动态生成分层级的路由菜单栏。
2022-12-05 15:34:09
5786
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
2153
原创 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
1100
原创 linux复习
shell基本使用文件含义:文件目录相关指令:目录指令文件操作命令文件内容操作命令归档及压缩命令vim编辑器其他用户和组管理知识概述用户帐号文件组帐号文件用户和组相关指令磁盘与文件系统管理fdisk命令格式化定义文件系统挂载、卸载自测题:8、1、查看文件内容命令cat、more、less,cat一次性罗列文件内容,不能翻页;more可以按空格翻页;less不仅可以按空格翻页,还可以用光标上下移动来查看文件内容。shell基本使用文件含义:以下目录的含义/bin 存放普通用户可执行文件/.
2022-04-26 11:34:30
212
原创 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
343
原创 Vue3之vue-router、pinia
1.路由基础路由的基本使用编程式导航命名视图2. 路由传参方式一:就硬写方式二:通过query和params带参数的动态路由
2022-04-09 17:43:58
2531
原创 vue3组件间通信
父与子通信,使用props、$attrs、$parent、$emit;父与后代通信,使用provide、inject;任意组件间通信,使用事件总线。
2022-04-01 20:39:23
1586
原创 最短路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
193
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人