自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言知识学习

除了上述内容,建议学习C语言标准库(如stdio.h、stdlib.h、string.h、math.h等)的常用函数和使用方法,学习Makefile的编写和使用,以及调试工具(如gdb)的基本操作等,这些都对于C语言的学习和应用非常重要。数据结构和算法: 掌握基本数据结构的概念,如数组、链表、栈、队列等,并了解它们的实现和应用。学习基本算法,如排序、查找、递归等。数组和指针: 了解C语言中的数组和指针的概念,学习如何定义、使用和操作数组和指针,掌握数组和指针之间的关系和相互转换。

2023-08-03 14:09:51 90

原创 虚拟内存

假如在作业运行的过程中发现要访问的页面不在内存,则由处理器通知操作系统按照对应的页面置换算法将相应的页面调入到主存,同时操作系统也可以将暂时不用的页面置换到外存中。当内存空间已满,而又需要装入新的段时,根据置换功能适当调出某个段,以便腾出空间而装入新的段。个人理解:就是在分页或分段的基础上,在调用执行的过程中,发现资源不在内存中时,通过相应的置换算法,将资源调入到内存中。一定容量的内存和外存:在载入程序的时候,只需要将程序的一部分装入内存,而将其他部分留在外存,然后程序就可以执行了;

2022-11-30 21:34:20 162 1

原创 通俗理解物理地址、逻辑地址、线性地址、虚拟地址、有效地址的区别

线性地址、虚拟地址:CPU在保护模式下,“段基址+段内偏移地址”叫做线性地址,注意,保护模式下段基址寄存器中存储的不是真正的段基值(和实模式的含义不一样),而是被称为“段选择子”的东西,通过段选择子在GDT(全局描述表)中找到真正的段基值。逻辑地址、有效地址:无论CPU在什么模式下,段内偏移地址又称为有效地址或者逻辑地址(只是叫法不一样罢了),例如实模式下 “mov ax, [0x7c00]”,0x7c00就是逻辑地址(或有效地址),但这条指令最终操作的物理地址是DS*16+0x7c00。

2022-11-30 20:32:09 1195

原创 临界资源和临界区的区别

2.每个进程的临界区代码可以不相同。临界区代码由于要访问临界资源,因此要在进入临界区之前(也就是执行临界区代码之前)进行检查,至于每个进程对临界资源进行怎样的操作,这和临界资源及互斥同步管理是无关的,比如,磁带机是明显的临界资源,有两个进程都要对其进行操作,A要写磁带前半部分,B要读磁带后半部分,这两个进程对磁带操作的部分就是这两个进程各自的临界区,不能同时执行,但内容是不相同的,不可认为临界资源相同,访问这些资源的代码也是相同的。临界资源和临界区的区别。

2022-11-30 15:44:55 327

原创 进程切换

假设内核决定将进程A挂起,执行进程B,那么在schedule()函数中,prev就是进程A的描述符地址,next就是进程B的描述符地址,一旦switch_to挂起A,那么进程A就冻结了。在A恢复执行后,此时还是在switch_to宏代码中,A得到它原来的内核堆栈,prev是A的描述符地址,注意,因为CPU内eax寄存器的值不会因为切换而变化,因此,eax里存的是进程C的描述符地址,switch_to会将eax的值写入到last中,原来last指向进程A的prev就被C的描述符地址覆盖了。

2022-11-30 14:57:39 1385

原创 进程与线程的切换

我们都知道线程切换的开销比进程切换的开销小,那么小在什么地方?切换的过程是怎样的?无论是在多核还是单核系统中,一个CPU看上去都像是在的执行多个进程,这是通过处理器在进程间切换来实现的。在任何一个时刻,单处理器系统都只能执行一个进程的代码。当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递到新进程,新进程就会从上次停止的地方开始。

2022-11-30 14:46:16 136

原创 AOT和JIT

JIT,即Just-in-time,动态(即时)编译,边运行边编译;AOT,即Ahead Of Time,指运行前编译,是两种程序的编译方式。这两种编译方式的主要区别在于是否在“运行时”进行编译。

2022-10-01 20:23:06 383

原创 美团面试手撕算法

【代码】求数组的局部最大值。

2022-09-08 21:19:58 363

原创 MySQL常见的面试经典108题

99. 一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条。63. count(1)、count(*) 与 count(列名) 的区别?96. 你是否做过主从一致性校验,如果有,怎么做的,如果没有,你打算怎么做?你在设计索引是怎么抉择的?MySQL的默认隔离级别是什么?35. mysql 的内连接、左连接、右连接有什么区别?58. MySQL中InnoDB引擎的行锁是怎么实现的?105.MySQL中InnoDB引擎的行锁是怎么实现的?

2022-09-07 23:04:45 275

原创 python 实现单链表增删查

还请帮忙检查一下对不对。

2022-09-06 20:00:42 292

原创 Python单例模式

比如,某个程序的配置信息存放在一个文件中,客户端通过一个Appconfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都在使用配置文件的内容,也就说,很多地方都需要创建Appconfig 对象的实例,这样子就会导致系统中存在很多Appconfig 的实例对象,而这种会严重浪费内存资源。从具体实现角度来说,就是以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的共有函数用于创建或获取它本身的静态私有对象。一是某个类只能有一个实例;...

2022-09-01 17:29:22 131

原创 Python函数式编程

(3).itertools.repeat(object[, times]):创建一个迭代器,不断重复 object。(2).itertools.count(iterable):创建一个迭代器,返回 iterable 中所有元素并保存一个副本。(1).itertools.count(start,step):创建一个迭代器,它从 start 值开始,返回均匀间隔的值。(2)itertools.product(*iterables, repeat=1):可迭代对象输入的笛卡儿积。.........

2022-09-01 16:35:06 122

原创 二叉搜索树

(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值。二叉排序树(Binary Sort Tree),又称。(1)若左子树不空,则左子树上所有结点的值均小于它的。(Binary Search Tree),亦称。二叉排序树或者是一棵空树,或者是具有下列性质的。...

2022-09-01 11:11:20 117

原创 数组时间复杂度

但有利就有弊,这两个限制也让数组的很多操作变得非常低效,比如要想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作。面试的时候,常常会问数组和链表的区别,很多人都回答说,“链表适合插入、删除,时间复杂度 O(1);数组是适合查找操作,但是查找的时间复杂度并不为O(1)。即便是排好序的数组,你用二分查找,时间复杂度也是 O(logn)。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。所以,正确的表述应该是,数组支持随机访问,根据下标随机访问的时间复杂度为 O(1)。..

2022-09-01 10:31:46 1143

原创 Python列表和字典操作的时间复杂度

1.列表操作时间复杂度。2. 字典操作时间复杂度。

2022-08-31 21:23:48 433

原创 常用排序算法 python

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。希尔排序的基本思想是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。但希尔排序是非稳定排序算法。...

2022-07-19 21:39:03 75

原创 解决 ERROR: Could not find a version that satisfies the requirement xxx 的问题

解决 ERROR: Could not find a version that satisfies the requirement xxx 的问题我们经常通过pip安装东西时常常会出现ERROR: Could not find a version that satisfies the requirement xxx的问题。该问题常常会误导我们认为是下载的安装包之间存在冲突,因而花费大量的时间去配置各种各样的环境。其实出现这个问题的原因是python国内网络不稳定,直接导致报错。因此我们常用镜像源来解决此

2022-03-19 12:45:37 15756 4

原创 随机数种子

今天使用LSTM做时序预测,发现同样的参数运行结果却不一样。查找资料发现神经网络初始化参数并不一样,需要设置随机数种子使得结果可复现。seed = 0torch.manual_seed(seed) # 为CPU设置随机种子torch.cuda.manual_seed(seed) # 为当前GPU设置随机种子torch.cuda.manual_seed_all(seed) # 为所有GPU设置随机种子...

2022-03-15 16:53:34 1049

原创 Python 使用*号对列表元素进行复制带来的问题

今天在刷LeetCode时,分别使用如下两种方法对列表中的元素进行复制:distTo = [[float('inf') for _ in(range(n))] for _ in range(m)]distTo = [[float('inf')] * n] * m# [[inf, inf], [inf, inf]]# [[inf, inf], [inf, inf]]发现只有第一种方法提交能够通过。第二种方法无法通过,原因是复制元素共享了内存(列共享),查看其中元素内存地址如下:pri

2022-03-05 23:43:55 551

原创 交叉熵文章链接

交叉熵(Cross-Entropy)_rtygbwwwerr的专栏-CSDN博客_cross entropy交叉熵(Cross-Entropy)交叉熵是一个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。1.什么是信息量?假设XX是一个离散型随机变量,其取值集合为X\mathcal{X},概率分布函数为p(x)=Pr(X=x),x∈Xp(x)=Pr(X=x),x∈\mathcal{X},我们定义事件X=x0X=x_0的信息量为: I(x0)=−log(p(x0))I(https://b

2022-03-04 22:13:43 136

原创 tf.summary

1、tf.summary.scalar用来显示标量信息,其格式为: tf.summary.scalar(tags, values, collections=None, name=None)例如:tf.summary.scalar('mean', mean)一般在画loss,accuary时会用到这个函数。2、tf.summary.histogram用来显示直方图信息,其格式为: tf.summary.hi...

2022-03-04 21:27:02 77

原创 ImportError: libcublas.so.9.0: cannot open shared object file: No such file or director

这是因为tensorflow版本问题。tensorflow-GPU=1.11.0支持cuda9.0,不支持cuda10.0。l以下是linux上版本对应关系(https://www.tensorflow.org/install/source):

2022-03-04 15:34:56 459

原创 Learning to Write with Cooperative Discriminators 学习使用协同判别器进行写作

Grice格言:数量、质量、关系和方式,参考多因素的一种语义理解方式。早在二十世纪六十年代后期,美国哲学家Grice就提出了人类会话活动的一条指导原则――合作原则(Cooperative Principle)。他认为,在所有的语言交际活动中,为 了达到特定的目标,说话人和听话人之间存在着一种默契,一种双方都应该遵守的原则。他称这种原则为会话的“合作原则”。“合作原则”作为根本原则具体体现为以下四条原则。1.数量准则(Quantity maxim)。指所说的话应包含交谈所需要的信息;所说的话不应包

2021-12-01 22:12:06 741

原创 pip临时使用清华源

pip install package -i https://pypi.tuna.tsinghua.edu.cn/simple

2021-11-30 15:39:45 1512

原创 RuntimeError: Expected object of backend CUDA but got backend CPU for argument #4 ‘mat1‘

变量和模型都需要加cuda()data.cuda()model.cuda()

2021-11-25 10:45:50 758

转载 pycharm 用远程环境时报错bash: line 0: cd: /home/tmp: No such file or directory

这是一个大坑,自己花了好几个小时在上面 (希望对后人有帮助)出现此问题的情形目前已经在window本地pycharm 链接一个程序1到服务器上可以进行远程服务器代码的编写与调试然后又有一个新的程序2(不同文件夹),所以想着再链接新程序到服务器上流程 跟 pycharm 进行远程服务器代码的编写与调试 差不多程序2 使用的远程服务器Interpreter 跟旧的程序1 服务器Interpreter 是相同的,然后设置的时候,会在新生成的后面直接生成 name(1)接下来 调试的时.

2021-11-25 10:25:11 1599 2

原创 Ubuntu添加用户

1.执行添加命令:sudo adduser username2.输入密码:输入新的 UNIX 密码:userpass3.添加用户信息,直接使用默认值:正在改变 username 的用户信息请输入新值,或直接敲回车键以使用默认值 全名 []: 房间号码 []: 工作电话 []: 家庭电话 []: 其它 []:4.添加用户管理员权限:sudo vim /etc/sudoers5.在打开的文件中输入:#======= 其他信息 =========

2021-11-22 10:04:59 10161

原创 Ubuntu安装anaconda

1.下载anacondaAnaconda3-5.2.0-Linux-x86_64.sh2.运行 .sh 文件:bash Anaconda3-5.2.0-Linux-x86_64.sh3.输入yes,默认安装即可;4.若找不到anaconda,设置路径:sudo gedit ~/.bashrcexport PATH="/home/xupp/anaconda3/bin:$PATH"source ~/.bashrc5.安装python环境conda create -n en

2021-11-12 18:03:39 1560

原创 强化学习常用算法

REINFORCEQ-learningSarsaPGACDQNDPGDDPGPPOTRPO

2021-11-09 16:49:57 138

原创 强化学习面试问题

1、reinforce、q-learning和sarsa的更新公式2、gamma什么时候可以等于1,什么时候不可以等于1?3、q-learning的行为策略需满足什么条件?4、ppo有replay buffer和importance sampling 是 onpolicy 还是offpolicy?5、MC和TD,区别、各自优缺点?6、value-based 和 policy-based, 区别、各自优缺点?7、介绍Actor-Critic8、DQN里面最出名的两个trick9

2021-11-09 16:45:26 742

原创 计算机入门

编程语言:C C++ JavaPythonC语言是编程基础书籍推荐:谭浩强 《C程序设计》视频教程推荐:黑马程序员C语言基础教程【源码,笔记,软件,案例全,初学者最值得收藏】_哔哩哔哩_bilibili核心课程:数据结构 计算机组成原理 操作系统 计算机网络 数据库...

2021-10-10 19:38:20 61

原创 cookie不为空,却获取不到cookie中的用户名和密码??

获取cookie中得值:<%    String username = "";    String password = "";    Cookie[] cookie = request.getCookies();    if (cookie != null) {        for (int i = 0; i < cookie.length; i++) {     ...

2018-12-09 17:08:19 1187 2

空空如也

空空如也

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

TA关注的人

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