Typora导出pdf一直停留在导出界面
Typora导出pdf一直停留在导出界面
1. 因为修改临时文件夹地址导致的问题
尝试遍了网上的各种方法对我都没奏效。
但是用管理员权限在 C:\Program Files\Typora 下打开 typora.exe 发现可以正常导出 pdf。
结合这一点,加上最近频繁出现启动文件、文件夹没有权限的问题,猛地让我想起之前安装 TexLive 的时候有问题,把用户环境变量的 TEMP 和 TMP 强行改成了 C:\Windows\TEMP 。
于是我尝试改回来
果然好用了!
2. 其他情况
emmm,还有一天考试了,遇到又遇到了这个问题,真糟心啊。
尝试1:
计算机管理->服务->Print Spooler, 先启动,再调整启动类型为自动。
尝试2
开始 - 运行,输入 regedit ,打开“注册表编辑器”。
找到以下键值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
选定 Spooler 这个文件夹,在右边窗口里找到 DependOnService 这个键值。
如果存在 http 将其删 ...
编译原理复习
第1章 绪论
1.1 什么是编译
编译: 将高级语言(源语言)翻译成汇编语言或机器语言(机器语言)的过程。
编译在语言处理系统中的位置
预处理器:
把存储在不同文件中的源程序聚合在一起
把称为宏的缩写语句转换为原始语句
可重定位(Relocatable):
在内存中存放的起始地址 L 是不固定的。
链接器:
将多个可重定位的机器代码文件(包括库文件)连接到一起
解决外部内存地址问题
加载器:
修改可重定位地址:将修改后的指令和数据放到内存中的适当位置。
1.2 编译系统的结构
编译系统的结构与执行顺序如下图所示:
将字符流输入 词法分析器 获得词法单元流,然后经过 语法分析器 生成语法分析树。利用 语义分析器 来分析语法分析树所具有的语义。获得语义后,利用 中间代码生成器 将语法分析树转换成中间代码。中间代码为了具有更好的普适性,经过了一步 机器无关代码优化 。
优化后的中间表示形式经 目标代码生成器 转化为目标机器语言,再经过一步优化转化为与 目标机器相关 的目标机器语言,此时的代码将更好的在目标机器上执行。
1.2.1 词法分析/扫描(Scan ...
NVIDIA显卡重新安装
win11 重装 NVIDIA 驱动
1. 安装并使用驱动卸载工具 DDU
浏览器搜索并下载安装 DDU
win + R 输入 msconfig 进入安全模式
重启后在安全模式下打开 DDU
完成卸载后重启
重启后 win + R 输入 msconfig
此时就卸载干净了
最后记得删除下面三个文件夹(使用默认路径安装是这三个)
C:\Program Files\NVIDIA Corporation
C:\Program Files\NVIDIA GPU Computing Toolkit
C:\Program Files (x86)\NVIDIA Corporation
2. 下载并安装 NVIDIA Toolkit
这篇教程讲的真不错,顺便记录一下我的配置过程
1、 打开网址 查找相应的 CUDA Toolkit 工具进行下载,这里我安装的是 12.1 版本
2、我选择了精简模式安装,一路默认
注意,你可能会遇到下图这样的两种安装文件,上面是驱动,下面是 Toolkit 工具。
上面这个我反反复复安装都不行。下面这个一次就好了(记得使用管理员模式打开,避免不必要 ...
C++快速入门(三)
C++快速入门(三)
1. 高级强制类型转换
静态对象强制类型转换
先上一段代码:
我们定义一个基类 Company ,让 TechCompany 完全继承 Company 的属性(相当于一个空头公司)。这样,Company 和 TechCompany 的属性以及占用的空间大小相同。尝试用 Company 类型的指针指向 TechCompany 类型的对象,再将该指针赋值给 TechCompany 的指针。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <iostream>#include <string>class Company {public: Company(std::string theName, std::string product); virtual void printInfo();protected: std::string name; std::string pr ...
C++快速入门(二)
C++快速入门(二)
下面介绍一系列 C++ 和面向对象编程技术中的一些比较高级的概念:静态对象和静态方法,虚方法,抽象方法和多态等。
1. 静态属性和静态方法
前面的例子中,使用的都是对象(某个类的实例)来调用方法,每个方法只处理调用它的那个对象所包含的数据,所有的数据都属于同一个对象。
如果我们需要的功能或数据不属于某个特性的对象,而是属于整个类,该怎么办?
假如我们需要统计一下有多少只活的动物,那么就需要一个计数器,每诞生一只就 +1 ,每挂掉一只,就 -1。
首先想到的是使用一个全局变量,但是任何代码都能改变该计数器,这很危险。所以非必要时不要用全局变量。
我们真正需要的是一个只在创建或删除对象的时候才允许访问的计数器。使用 C++ 的静态属性和静态函数才能完美解决。
C++ 允许我们把一个或多个成员声明为属于某个类,而不是仅属于该类的对象。这么做的好处是程序员可以在没有创建任何对象的情况下调用有关的方法。另一个好处是能够让有关的数据仍在该类的所有对象间共享。
创建一个静态属性和静态方法:只需要在它的声明前加上 static 保留字即可。
代码如下:
12345678910 ...
C++快速入门(一)
C++快速入门(一)
C++ 是一门面向对象的语言,即 OO 思想。
1. 程序示例
首先,可以在之后的代码中经常看到 using namespace std; ,这是为了调用一个叫做命名空间的东西。
C++标准库使用的所有标识符(即类、函数、对象等的名称)都是在同一个特殊的名字空间(std)中来定义的。
如果不使用上述声明,则需要在用到每个名字空间中的标识符时,在标识符名称之前加上 std:: 。
1.1 示例一
题目:任意输入数字和空格,返回整数之和。
C 语言实现:
12345678910111213141516171819202122232425#include <stdio.h>int main(void) { int i; int sum = 0; char ch; printf("请输入一串整数和任意数目的空格:"); while ( scanf("%d", &i) == 1 ) { sum += i; while ( (ch = ...
C语言——一些进阶知识(三)
C语言——文件操作相关
1. 打开和关闭文件
对一个文件进行读写后必须对将其关闭。
下面列举所有可使用的打开模式:
模式
描述
“r”
1. 以只读的模式打开一个文本文件,从文件头开始读取2. 该文本文件必须存在
“w”
1. 以只写的模式打开一个文本文件,从文件头开始写入2. 如果文件不存在则创建一个新的文件3. 如果文件已存在则将文件的长度截断为 0 (重新写入的内容将覆盖原有的所有内容)
“a”
1. 以追加的模式打开一个文本文件,从文件末尾追加内容2. 如果文件不存在则创建一个新的文件
“r+”
1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入2. 该文件必须存在3. 该模式不会将文件的长度截断为 0 (只覆盖重新写入的内容,原有的其他内容保留)
“w+”
1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入2. 如果文件不存在则创建一个新的文件3. 如果文件已存在则将文件的长度截断为 0 (重新写入的内容将覆盖原有的所有内容)
“a+”
1. 以读和追加的模式打开一个文本文件2. 如果文件不存在则创建一个新的文件3. 读取 ...
C语言——一些进阶知识(二)
C语言——数据结构相关
1. 高级宏定义
1.1 不带参数的宏定义
1#define PI 3.14
为了和普通变量区分,宏的名字通常约定是全部由大写字母组成
宏定义只是进行简单的替换,编译器不会对宏定义检查语法错误,检查出来也是替换之后的代码报错
宏定义的作用域是从定义的位置开始到整个程序结束
可以用 #undef 来终止宏定义的作用域
1234567891011121314#include <stdio.h>#define PI 3.14int main(void) { int r; float s; scanf("%d", &r);#undef PI // 结束 PI 宏的作用 s = PI * r * r; printf("S = %.2f\n", s); return 0;}
宏定义允许嵌套
1234567891011#include <stdio.h>#define R 6371#define PI 3.14#define ...
C语言——一些进阶知识(一)
C语言——存储相关
1. 局部变量与全局变量
局部变量函数运行结束后即释放。
局部变量会在作用域内屏蔽同名的全局变量。
2. 作用域与链接
2.1 作用域
2.1.1 代码块作用域(block scope)
在代码块中定义的变量,具有代码块作用域。作用范围是从变量定义的位置开始,到标志该代码块结束的右大括号(})处。
尽管函数的形式参数不在大括号内定义,但其同样具有代码块作用域,隶属于包含函数体的代码块。
以前不知道括号有什么用,原来可以用来划分作用域。
1234567891011121314151617181920#include <stdio.h>int main() { // 作用域 1 int i = 1; { // 作用域 2 int i = 2; { // 作用域 3 int i = 3; printf("i = %d\n", i); } { // 作用域 4 ...
计网错题整理
计网错题整理
T1
如图所示网络。A在t=0时刻开始向C发送一个2Mbits的文件;B在t=0.1+e秒(e为无限趋近于0的小正实数)向D发送一个1Mbits的文件。忽略传播延迟和结点处理延迟。
请回答下列问题:
1)如果图中网络采用存储-转发方式的报文交换,则A将2Mbits的文件交付给C需要多长时间?B将1Mbits的文件交付给D需要多长时间?
解:
给路由器从左到右依次编号为1,2
A报文比B报文先到达路由器1
tA→C=2/10+2/20+2/10=0.5st_{A\to C} = 2/10 + 2/20 + 2/10 = 0.5s
tA→C=2/10+2/20+2/10=0.5s
tB→D=1/10+0.1(等待A)+1/20+1/10=0.35st_{B \to D} = 1/10 + 0.1(等待A) + 1/20 + 1/10 = 0.35s
tB→D=1/10+0.1(等待A)+1/20+1/10=0.35s
2)如果图中网络采用存储-转发方式的分组交换,分组长度为等长的1kbits,且忽略分组头开销以及报文的拆装开销,则A将2Mbits的文件交付给 ...