自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 收藏
  • 关注

原创 国产ChatGPT科大星火大模型v3.5使用教程

前段时间「科大讯飞版ChatGPT」上线,给大家推荐了一波,演示了其强大的功能,不少小伙伴都立马申请体验了一把,也有私信说非常强大,工作效率提高不少,支持国产大模型,实属难得之类的赞扬。以上只是为了验证友伴的真实性,至于更深入的探讨就交给大家了,毕竟玩法实在太多,一时半会说不完,上面所提到的也只是冰山一角罢了~再也不用费尽心思做思维导图了,现在只需输入需求,它就可以帮你一键生成思维导图,支持在线修改,嘎嘎好用。你只需要输入一个主题,它就可以自动生成所有文本内容,再稍加修改就能直接发送了,妥妥的办公神器!

2024-01-24 19:04:51 9520

原创 科大讯飞API的Python使用教程

前段时间「科大讯飞版ChatGPT」上线,给大家推荐了一波,演示了其强大的功能,不少小伙伴都立马申请体验了一把,也有私信说非常强大,工作效率提高不少

2023-10-11 17:43:24 1069

原创 Git Rebase-提交整洁之道

git rebase是一个非常有用的命令,但知道和用的人非常少,今天介绍一下其作用

2022-09-17 09:14:09 266 1

原创 iterm2介绍和美化配置

iterm2软件相关介绍

2022-09-07 07:37:51 614

原创 设计模式--模板方法 Template method

模式分类:书籍推荐:重构-改善既有代码的设计重构获得模式设计模式:现代软件设计的特征是“需求的频繁变化”。设计模式的要点是 “寻找变化点,然后在变化点处应用设计模式,从而来更好地应对 需求的变化”.“什么时候、什么地点应用设计模式”比“理解设 计模式结构本身”更为重要。重构获得模式:计模式的应用不宜先入为主,一上来就使用设计模式是对设计 模式的最大误用。没有一步到位的设计模式。敏捷软件开发实践提 倡的“Refactoring to Patterns”是目前普遍公认的最好的使用设 计模式

2021-11-07 16:40:07 98

原创 操作系统导论 第二章 操作系统介绍

头文件下载虚拟化CPU示例程序(base) matytan@matytandeMacBook-Pro ch2 % gcc -o cpu cpu.c -Wall(base) matytan@matytandeMacBook-Pro ch2 % ./cpu A#多个程序一起跑(base) matytan@matytandeMacBook-Pro ch2 % ./cpu A &; ./cpu B &; ./cpu C &; ./cpu D &[1] 92105

2021-11-07 11:23:36 200

原创 Git基本教程

git的发展Git 两周开发 Linus开发,主要是为了管理大量人员维护代码Git分布式版本控制系统基本命令history:查看之前用过的命令vimtutorgit配置查看配置 git config -lgit config --system --listgit config --global --list :用户配置用户必须要配置 (.gitconfig文件)用户:git config --global user.name "tan"git config --global.

2021-11-06 10:19:28 71

原创 一维前缀和 连续数组和为k

给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。滑动窗口没办法解决有负数的情况方法一:预处理 前缀和 sum_ij = preSum[j] - preSum[i-1];class Solution { public int subarraySum(int[] nums, int k) { //滑动窗口没办法解决有负数的情况 //预处理 前缀和 sum_ij = preSum[j] - preSum[i-1];\ .

2021-10-26 11:17:55 77

原创 三角形的最短路径和

​这道题使用动态规划求解12 34 5 6dp[i][j]从三角形顶部走到i,j的最短路径和class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { //i行j列 int m = triangle.size(); vector<vector<int>> dp(m,vector<

2021-10-26 11:14:03 136

原创 docker容器命令(一)

容器命令创建容器:docker run参数-it 交互-d 后台–name 容器名docker run --name centos1 -it centos /bin/bashdocker ps 显示容器信息参数:-a-q 只显示容器id[root@tanqi ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS

2021-10-12 16:48:00 144

原创 二分查找 不再硬背(一)

二分查找区间基本问题之前写二分查找都是硬背,没有体会到区间的概念,在刷题学习之后慢慢有了点感觉while循环时为什么可以写<也可以写<=号呢? 两者有啥区别呢?写left<right时可以发现 是取不到right的,表示整个区间是一个左闭右开的区间[left,right:int right = nums.size();//取不到size()因此我们在写区间时当 nums[mid]>target,则此时应该向左边查找,即right应该移到中间来,那么我们发现既然是取不

2021-10-12 11:02:33 73

原创 Linux基本命令学习-文件基本操作1

关机重启shutdown -h now #立即关机shutdown -h 5 # 5秒后关机#重启shutdown -r now #立即重启reboothalt #重启文件相关系统目录结构一切皆文件**/bin ** binary的缩写 存经常使用命令/boot 核心启动文件 连接文件 镜像文件/etc :这个目录用来存放所有的系统管理所需要的配置文件和子目录。/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方

2021-10-11 16:05:54 73

原创 跳跃游戏 一

贪心思想解题每次找到最大能够跳的距离class Solution {public: bool canJump(vector<int>& nums) { int maxpos = 0; for(int i=0;i<=maxpos;++i) { maxpos = max(maxpos,nums[i]+i); //能跳的步数 if(maxpos>=nums.size

2021-10-09 21:03:59 49

原创 刷题日记-JZ25合并有序链表

合并有序链表 递归方式合并链表pHead1,pHead2base case是 pHead1为空或者pHead2为空递归方式是如果pHead1->val < pHead2->val 则pHead1结点作为新链表的头结点,即mergeNode = pHead1;同时pHead1->next继续向下递归,因为pHead1->next这个节点也有可能小于pHead2即mergeNode->next = Merge(pHead1->next, pHead2);否

2021-10-01 10:48:39 43

原创 动态规划-股票交易1

动态规划解题 dp[i][k][j] 第i天 k限制交易次数 通过买卖到什么状态(有股票,或者没有股票)0代表没有股票 有两种可能 前一天本身没有或者是昨天拥有今天卖了 //dp[i][0] = max(dp[i-1][0],dp[i-1][1]+price[i]); dp[0][0] = 0 //dp[i][1] = max(dp[i-1][1],dp[i-1][0]-price[i]);dp[0][1]=-INT_MAX为了节约数组空间,同...

2021-09-29 12:52:33 76

原创 二叉树遍历非递归写法

前序和中序比较简单使用一个if else即可判断 一直往左走就行了但是后序比较麻烦,因为最后访问根节点,涉及到一个走过的根节点重新访问如何知道我是第二次到达根节点访问,而不是节点左右子树还有没有访问过呢?实际上如果这个节点是第二次到达访问,即左子树肯定已经访问过出栈,不存在了只有可能右子树是没有访问过了,即我们用一个pre指针,指向已经访问过的上一个节点记录一下就行了,如果p->rightNULL 或 ->rightpre 说明这个点肯定需要访问,因为右子树被访问过了 或者根本没有右子

2021-09-28 17:27:12 80

原创 数据流中的中位数

数据流数据的数量不定,也就是数组的长度不定,可以向数组中插入数字,能够o(1)得到中位数我们知道使用堆或者快排思想可以得到无需数组中的中位数如何o(1)得到呢?使用有序数组,每次插入维持一个有序数组如果class MedianFinder {public: /** initialize your data structure here. */ //使用堆 vector<double> max; vector<double> min;

2021-09-28 16:07:17 90

原创 刷题日记-替换空格

思路:扩容将原来的字符串长度扩大到可以装下替换的之后的长度1个’ ’ 替换为’%20‘ 即一个空格本身有一个字节,还需2个字节,即m个空格,需要2m长度即newSize = originSize + 2m;从后往前 双指针p,q开始赋值当p>=0 并且 p<q时一直循环处理class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @

2021-09-28 16:01:56 62

原创 刷题日记-二维数组中查找某个目标值

时间复杂度 使用O(M+N)使用一种比较巧妙的搜索方法:从右上角开始搜索即x=0,y=n-1,arr[x][y]开始搜索若arr[x][y]== target 则返回true若arr[x][y]> target 若target小于当前值,只可能向左,即–y相反,则向下向更大的值搜索,++xclass Solution {public: bool Find(int target, vector<vector<int> > array) {

2021-09-27 22:11:14 87

原创 LeetCode 重排链表 OPPO笔试

重排链表 几个关键点:1. 双指针(快慢指针找中点)(用于反转后一部分)2. 反转后一部分 (reverse函数)3. 合并链表合并的时候在笔试的时候想了一种比我之前想的简单的方法从slow->next开始反转 而不是slow,如果从slow开始反转实际上会多插入最后一次 就会复杂一点同时保存slow作为最后一个结点,断开slow后面的节点 进行合并然后合并的时候注意 使用后面的链表p作为循环结束的条件,因为p为空说明所有的链表已经插入前面的链表了。...

2021-09-24 18:57:21 110

原创 剑指 Offer 19. 正则表达式匹配

使用动态规划解决正则表达式匹配问题class Solution {public: bool isMatch(string& s, string& p) { //递归 return helper(s,0,p,0); } bool helper(string &s,int i,string &p,int j) { //base case if(s[i]=='\0' &&a

2021-09-20 14:47:36 47

原创 剑指 Offer 20. 表示数值的字符串

方法:分为几个部分判断 DA[.B][E/eC] D其中D表示前后的空格,需要处理,跳过即可A可以带正负号 有符号数B无符号数C可以为有符号数(带+-号)小数点.后面必须是无符号数或者没有 如1.同时小数点.前面可以没有数字 所以用numeric = findUnsignedInt(s,pos) || numeric(或)E/e前后必须有数字 因此用numeric = numeric && findInt(s,pos)class Solution {..

2021-09-20 13:30:24 39

原创 topk算法

方法一 堆排序自建堆 heapMax方法,从上至下调整堆pop时,可以使用自上而下调整堆,调用heapMax(arr,0,sz-1);push时,需要自下到上调整即```cpp//从下到上调int son = sz-1;int dad = (son-1)/2;while(dad>=0){ if(arr[son]<=arr[dad]) return; else { swap(arr[son],arr[dad]); so

2021-09-20 10:48:57 101

原创 找第k个结点 剑指22

这道题很简单,利用双指针。 主要是以下几个注意点1. 判断链表是否为空2. 判断k是否为0,若为0无意义3.判断k是否超出了链表长度/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publi

2021-09-19 09:14:00 38

原创 删除有序链表重复元素2

这道题目的方法1.遍历链表 找到当前结点与下一结点相等的节点,并将标记删除flag设置为true2.然后如果不需要删,则继续向后遍历,同时记录pre指针3.如果删除: 1. 记录cur的值,即删除节点的值val。设置一个删除节点pDel,然后while循环删除,如果待删除节点的值等于记录的val,一直循环 2. 循环体内需要记录pDel的下一节点nxt,每次删除pDel后更新nxt 3. 如果删除完之后pre为空 说明删除了头结点 因此hea...

2021-09-18 20:32:55 164

原创 LeetCode88 合并有序数组

1. 这道题为简单题目,但是还有需要好好思考的2. 首先不能使用额外数组合并,不然就没得后文了3. nums1后面有0填充,且填充数量正好是n,整个数组大小即m+n能够容纳合并后的数据4.既然要在原来的数组上操作,有没有可能能够避免移动数据(降低时间复杂度?),使用交换方式从后往前思考,类似于字符串空格替换(先开辟多余的空间)然后 使用多个指针 从后往前,避免移动数据因此我们使用p,q,s三个index分别指向num1的数据最后一个,num2数据的最后一个,num1整个大小的最后一个

2021-09-14 10:34:29 43

原创 leetcode 剪绳子系列

### 剪绳子一利用动态规划状态转移### 剪绳子二绳子长度范围增加,导致结果必须要对1000000007求余,而求余过程导致动态规划失效,因此使用数学推导class Solution {public: int cuttingRope(int n) { // memo = new int[n+1]; // for(int i=0;i<=n;++i) memo[i] = -1; // return dp(n);..

2021-09-14 09:39:37 211

原创 题解 | #表示数值的字符串#

剑指offer思想,挺简单的思路使用两个函数findUnsignedInt() 查找无符号整数(不带正负号)findInt() 查找有符号整数整体数值可以表示为 D[A].[B]e/E[C]D1. D表示空格,首先去掉起始空格2. A为开始,可以没有,如果有可以是有符号数或者无符号,因此使用findInt3. B部分,为小数点后面的部分,必须是无符号整数,小数可以没有整数部分不如".33"(但是此时小数点后面必须有无符号数) ,小数点后面可以没有数字,如"3."(此时前面必须有数字)因此不能是"

2021-09-14 09:35:01 49

原创 最大公约数和最小公倍数

最大公约数和最小公倍数 gcd()最大公约数:辗转相除法 递归方法:简单,不用判断a,b大小,因为 如果a<b 调用gcd(b,a%b)==变为gcd(b,a) 迭代,需要判断一下a b大小,若a<b 交换 然后while循环 lcm最小公倍数lcm(a,b) = a * b / gcd(a,b)int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b);}​//非...

2021-09-08 10:41:40 74

原创 为什么析构函数要设置为虚函数?

1.父类析构函数不是虚函数#include<iostream>using namespace std;class Base{public: Base() { cout<<"Base()"<<endl; } ~Base() { cout<<"~Base()"<<endl; } virtual void func() { cout

2021-09-06 12:28:19 232

原创 解决mac主机无法与 Docker容器互通问题

方法很多,这里我说一下使用 docker-connector解决这个问题这是一个github开源项目docker-connector1. Mac 通过 brew 安装 docker-connectorbrew install wenjunxiao/brew/docker-connector2. 执行以下命令把 docker 的所有 bridge 网络都添加到路由中(拷贝已下指令)docker network ls --filter driver=bridge --format ...

2021-08-19 12:54:42 2305 3

原创 记录一个很傻的错误(C++)

使用的vscode写代码,导入了vector,memory,然后忘了导入string。但是代码中能够提示std::string也就让我忘了导入string。然后就莫名其妙的报错了。找了很久的错。记录下std::string& StrBlobPtr::deinf() const{ auto p = check(curr, "dereference past end"); // check必须是const的 return (*p)[curr];}报错//could not b

2021-07-06 11:58:46 4097

原创 记录一下在Linux添加PYTHONPATH方法以及修改环境变量方法

在用户主目录下有一个 .bashrc 隐藏文件,可以在此文件中加入 PATH 的设置如下:gedit ~/.bashrc加入:export PATH=<你的要加入的路径>:$PATH如果要加入多个路径,只要:export PATH=<你要加入的路径1>:<你要加入的路径2>: ...... :$PATH当中每个路径要以冒号分隔。这样每次登录都会生效添加PYTHONPATH的方法也是这样,在.bashrc中添加  expor

2020-09-12 11:40:58 550

原创 【deepRL】分层强化学习论文笔记(一)

什么是分层强化学习解决稀疏奖励问题通常有两种思路:对动作进行分层,将low-level动作组成high-level元动作,这样搜索空间就会被降低。然而这种分层方法通常需要较多的领域知识,并且需要仔细地设计。第二种方式是利用内在激励来引导智能体探索,这种方式不需要领域知识,但是当面对一系列任务时,这类方法没有办法将关于某个任务的知识迁移到另外一个任务,每次解决新的任务时候都需要从头学起,大大增加了样本复杂度。1.Strategic Attentive Writer for Learning Macro-A

2020-09-09 20:55:34 1115

翻译 元学习基本概念笔记

元学习是深度学习领域最活跃的研究领域之一。人工智能(AI)社区中的一些思想流派赞成这样的论点,即元学习是解锁人工智能(AGI)的垫脚石之一。近年来,我们已经看到了元学习技术的研究与开发中的爆炸式增长。但是,元学习背后的一些基本思想仍然被数据科学家和工程师误解。从这个角度来看,我认为最好回顾一下元学习的一些基本概念和历史,以及该领域中一些流行的算法。元学习背后的思想可以追溯到1979年,唐纳德·...

2019-12-14 11:41:24 869

原创 深度强化学习系列tensorflow2.0自定义loss函数实现policy gradient策略梯度

本篇文章利用tensorflow2.0自定义loss函数实现policy gradient策略梯度,自定义loss=-log(prob) *Vt现在训练最高分能到193分,但是还是不稳定,在修改中,欢迎一起探讨文章代码也有参考莫烦大佬的代码action_dim = 2 //定义动作state_dim = 4 //定义状态env = gym.make('CartPole-v0')c...

2019-12-10 10:55:32 1582

基于SpringBoot+mysql开发的购物商城

之前毕业设计所用,可以直接运行。使用springboot技术开发的购物商城,希望大家喜欢。这是一个包含基于springboot的maven工程开发的购物商城项目,功能齐全,包含购物流程。

2020-05-23

learning to reinfocement learn.pdf

由deepmind 发表的论文,learning to reinfocement learn学会强化学习,利用元学习思想,去训练agent学会学习。不错的论文

2019-12-10

空空如也

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

TA关注的人

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