自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DannieG的博客

一个正在学习并将一直学习的人的学习记录

  • 博客(33)
  • 收藏
  • 关注

原创 kindle剪贴内容提取

file_path = 'C:/Users/74285/Desktop/'file = open(file_path + 'My Clippings.txt', 'r', encoding = 'utf-8')data = {}while 1: line = file.readline() if not line: break book = line if book not in data: data[book] = [] lin

2021-09-28 11:15:44 332

原创 Go语言学习-基本

程序结构命名​ 如果是在函数外部定义,那么将在当前包的所有文件中都可以访问。名字的开头字母的大小写决定了名字在包外的可见性。如果一个名字是大写字母开头的(译注:必须是在函数外部定义的包级名字;包级函数名本身也是包级名字),那么它将是导出的,也就是说可以被外部的包访问,例如fmt包的Printf函数就是导出的,可以在fmt包外部访问。包本身的名字一般总是用小写字母。(注意区分包内和包外,包内不仅指当前文件,包外是指在整个包的外部,注意这个包包含哪些文件)声明​ Go语言主要有四种类型的声明语句:v

2021-05-14 17:36:19 625

原创 Go语言学习-数据类型

数据类型Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。基础类型整型​ 不管它们的具体大小,int、uint和uintptr是不同类型的兄弟类型。其中int和int32也是不同的类型,即使int的大小也是32bit,在需要将int当作int32类型的地方需要一个显式的类型转换操作,反之亦然。事实上,内置的len函数返回一个有符号的int。var x uint8 = 1<<1 | 1<<5var y uint8 = 1<<1 | 1<

2021-05-14 17:33:03 219

原创 计算机网络-http

HTTP:超文本传输协议​ 定义了浏览器(万维网客户进程)怎样向万维网服务器请求文档,以及服务器怎样把文档传送给浏览器(本身不算一种连接,相当于是形式的规定)​ 使用TCP作为支撑运输协议。一旦建立好TCP连接,就可以通过套接字接口访问TCP。(套接字:IP:端口号,应用层与传输层之间的接口)(上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口)​ 服务器进程监听TCP的端口80,以便发现是否有客户请求服务。一旦监听到了连接建立请求,并且与客户建立好了TCP连接后(TCP连接是传

2021-05-14 17:25:47 250

原创 数据库-视图

视图​ 视图是一个虚表,并不代表任何物理数据,只是用来查看数据的窗口而已。数据库中只存储视图的定义,而不存储视图对应的数据,这些数据仍存储在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。​ 视图中的数据行和列都是来自于基本表,是在视图被引用时动态生成的。使用视图可以集中、简化和制定用户的数据库显示,用户可以通过视图来访问数据,而不必直接去访问该视图的基本表。​优点:数据安全性:对不同的用户定义不同的视图,使用户只能看到与自己有关的数据。数据库授权命令可以使

2021-05-14 17:22:37 1111

原创 长字符串匹配(BWT编码、后缀数组、倍增算法、FM索引)

用 O(m) 时间复杂度找出一个长度为 m 的短字符串在一个长度为 n 的长字符串中的精确匹配(n>>m),限制长短字符串仅由 A、C、G、T 这四种字符组成。输入:长短字符串输出:短字符串在长字符串里的精确匹配​在匹配前先对长串进行编码和索引计算的预处理,该部分用到BWT编码的思想,并且利用后缀数组和倍增算法对编码过程进行优化。由于长串过长,在编码和存储时对其进行分治处理,并且在索引存储时进行优化,对索引进行间隔存储。在匹配时,用预处理得到的长串编码和索引进行匹配,用到的是FM索引-序

2021-05-14 09:49:10 1661 2

原创 数据库-SQL

SQL语句有些可能需要有个临时表的,就(select……)as 表名。有些题目看起来难,但是可以换一个角度想,然后把各个部分分开来想,各个部分拆开来分别写。就比如说要找各部门工资最高的三个人,也就可以想成在相同部门中工资更高的工资数不超过三。第二高的薪水:比最高的薪水小的所有薪水中最高的那一个要记得利用各种聚集函数、分类什么的,不要什么都重新用语句来做。左外连接、右外连接​ 哪边需要全都有的就哪边外连接。例如 person 连 address,不管 address 有没有,person

2021-05-14 09:26:46 77

原创 数据库-锁

锁按粒度分:行级锁、表级锁、页级锁按锁的共享策略分:共享锁、排他锁、意向锁、(SqlServer可支持更新锁)按加锁策略分:乐观锁、悲观锁(这些也相当于只是类别,里面还有具体的锁,比如记录锁,是行级锁,也是排他锁)按粒度分行级锁:只对当前操作的行进行加锁。加锁粒度最小,发生锁冲突的概率最低,并发度最高。开销最大,加锁慢,会出现死锁。表级锁:MySQL中锁定粒度最大的一种锁,对当前操作的整张表加锁。开销小,发生锁冲突的概率最高,并发度最低。加锁快,不会出现死锁。页级锁:介于行级锁和

2021-05-14 09:23:52 144

原创 数据库-事务及相关技术

事务​ 事务的提出主要是为了解决并发情况下保持数据一致性的问题​ 用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位ACID原子性、一致性、隔离性、永久性原子性和隔离性都会影响一致性(原子性相当于是看事务自己是否正确做完或都不做,隔离性主要是并发的时候)永久性是为了应对系统崩溃的情况,一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。并发一致性问题丢失修改、读脏数据(原先的rollback了,即读到另一个未提

2021-05-14 09:21:56 222 1

原创 数据库-索引

索引加快查询速度的手段,能快速定位到需要查询的内容对表中的一列或多列进行排序的结构得另外组织索引属性值+相应元组指针,占用一定的存储空间,当基本表更新的时候,索引要进行相应的维护提高了查询速度,同时却会降低更新表的速度,占用磁盘空间的索引文件哪些键要索引:主键、经常需要用来搜索、排序、连接的键索引分哪几种:按物理存储的角度:聚集索引(聚簇索引的顺序,就是数据在硬盘上存储的物理顺序,所以一个表中只能有一个)、非聚集索引(用B+树,叶子结点有指向表记录的指针)(聚簇索引的

2021-05-14 09:19:17 106

原创 动态规划理解

DP学习记录想法(看成一个在填表且从表中取值的过程)动态规划实现方法:带备忘录的自顶向下法(带备忘录的递归)、自底向上法步骤:刻画一个最优解的结构特征递归地定义最优解的值计算最优解的值,通常采用自底向上的方法利用计算出的信息构造一个最优解原来的问题可以拆成很多不同的子问题组合,每一种都可以达到最终情况,都是可能情况。dp和递归其实都是在算更大规模的问题的时候,遍历当前规模问题的各种可能组成情况,用各种规模子问题的最优解来进行计算,找到当前规模问题的最优解。要理解其实各种可能情况都有算

2021-05-12 13:45:17 128

原创 计算机网络-层次结构(总述)

功能协议数据单位应用层为应用程序提供服务,处理特定的应用程序细节。决定了向用户提供应用服务时通信的服务,定义了应用程序间如何相互传递报文(应用服务,就比如说浏览网页时需要的http请求)DNS协议、FTP协议、HTTP协议、HTTPS协议。(应用层服务)(支持各种网络应用)报文(要传输的数据,比如一个文件)表示层数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。两个通信系统中交换信息的表示方式(数据格式变换、数据加密解密、数据压缩和...

2021-05-12 00:39:50 495

原创 计算机网络-传输层TCP(足够全面,即看即会)

TCPTCP是面向连接的传输控制协议(报文段)数据传送前必须建立链接,结束后释放链接。每一条连接只能有两个端点,是点对点的,所以不提供广播或多播服务。可靠,面向连接,时延大,适用于大文件。可靠有序,不丢不重。可以提供全双工通信(可以同时发,同时接)(所以都有发送缓存和接收缓存)发送缓存:准备发送的数据、已发送但未收到确认的数据接收缓存:按序到达但还没被应用程序读取的数据、不按序到达的数据面向字节流:把应用程序交下来的数据看成仅仅是一连串的无结构的字节流报文段格式

2021-05-12 00:36:22 226

原创 计算机网络-应用层

应用层应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。应用:Web、文件传输FTP、远程登录、电子邮件域名、统一资源定位符URL域名:由一串用“.”分隔的名字组成的Internet上某一台计算机或计算机组的名称。www.123.com(级别自左向右由低到高,com:最高的是顶级域名)(三级域名.二级域名.顶级域名)URL:描述一个资源在万维网上的地址。唯一标识每一个资源,不区分大小写。<协议>://<域名 or IP地址>:<端口>/<

2021-05-12 00:32:28 492

原创 操作系统-虚拟内存

虚拟内存因为物理内存是有限的,当有多个进程要执行的时候,对每个进程都要分配4G内存,很快就分配完了,于是没有得到分配资源的进程就只能等待。当一个进程执行完后,再将等待的进程装入内存,这种频繁的装入内存的操作是很没效率的,切换任务时的IO。由于指令都是直接访问物理内存的,那么进程就可以修改其他进程的数据,甚至会修改内核地址空间的数据,这是不安全的。为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射

2021-05-12 00:31:19 152

原创 操作系统-中断

中断(广义的)(异常)有了中断机制,才能实现程序并发执行(才能进程切换)发生中断就意味着需要操作系统介入,进行管理。管理需要特权指令,所以需要进入内核态。(要进入内核态要经过一些状态保存)收到中断信号后,CPU会暂停执行下一条将要执行的指令,转而去执行中断信号的处理程序(在内核态处理)收到中断信号(1、计时部件发出的中断信号;2、进程自己发出的系统调用这种内中断信号(比如输出,就会切换进程,该进程就等待IO结束);3、IO完成,IO设备发出中断信号 )后,就要切换为内核态,对中断进行

2021-05-12 00:30:51 924

原创 操作系统-进程和线程

进程和线程相关进程进程是程序的一次执行过程,是系统进行资源分配的单位进程控制块(PCB)​ 系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置),操作系统通过PCB管理进程。创建进程实际就是创建PCB,撤销进程实际就是撤销PCB。​ PCB是进程存在的唯一标志。存操作系统管理进程的时候需要的数据内容:进程描述信息:进程标识符PID、用户标识符UID(该进程所属用户)进程控制和管理信息:进程当前状态、进程优先级资源分配清单:程

2021-05-12 00:30:20 581

原创 C++ STL容器

容器容器(container)用于存放数据的类模板。STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。顺序性容器 是 一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。这个位置和元素本身无关,而和操作的时间和地点有关,顺序性容器不会根据元素的特点排序而是直接保存了元素操作时的逻辑顺序。vector(可以看作动态数组)、list (双向链表)、deque (双端队列)关联式容器 和 顺

2021-05-11 09:22:59 76

原创 C++ 内联函数inline

内联函数,像普通函数一样被调用,但是在调用时并不通过函数调用的机制而是编译的时候直接在调用点处展开,这样可以大大减少由函数调用带来的开销,从而提高程序的运行效率。类内定义成员函数默认是内联函数类外定义成员函数,若想定义为内联函数,需用关键字 inline 声明​ 内联函数不是在调用时发生控制转移关系(普通函数是在调用的时候控制转移),而是在编译阶段将函数体嵌入到每一个调用该函数的语句块中,编译器会将程序中出现内联函数的调用表达式用内联函数的函数体来替换。​ 普通函数是将程序执行转移到被调用函

2021-05-11 09:21:22 183

原创 C++ 强制类型转换

static_cast:用于数据的强制类型转换,强制将一种数据类型转换为另一种数据类型。用于基本数据类型的转换将空指针转化为目标类型的空指针将任何类型的表达式转化为void类型用于基类和派生类之间指针或引用的转换。上行转换是安全的(派生类的指针或引用转换成基类表示),下行转换由于没有动态类型检查,所以不安全,最好用dynamic_cast。const_cast:强制去掉常量属性。不能用于去掉变量的常量性,只能用于去除指针或引用的常量性。reinterpret_cast:改变指针或引用的类.

2021-05-11 09:20:16 127

原创 C++ 指针

(主要整理的是个人不太懂的地方)野指针和悬空指针指针指向了一块随机的空间,不受程序控制。野指针:未初始化的指针,其指针内容为一个垃圾数,不能确定其具体指向。野指针不能判断是否为NULL来避免。要避免只能记得赋初值。悬空指针:指针正常初始化,曾指向一个对象,该对象被销毁了,但是指针未制空,那么就成了悬空指针。因为在 free§ 之后,p 指针仍然指向之前分配的内存,如果这块内存暂时可以被程序访问并且不会造成冲突,那么之后使用 p 并不会引发错误。为了避免出现“悬空指针”引发不可预知的错误

2021-05-11 09:19:24 54

原创 C++ 模板

函数模板与类模板函数模板编写与类型无关的代码模板的声明或定义只能在全局,命名空间或类范围内进行。不能在局部范围,函数内进行。< >内的是模板形参,不能为空会根据调用这个函数时传入的参数的类型推导出函数模板的参数类型。当类型参数的含义确定后,就会以这个函数模板为样板,生成一个函数,称为函数模板的实例化。template<typename T>T abs(T x) { return x < 0? -x : x;}函数模板也可以重载,只要形

2021-05-11 09:17:19 71

原创 C++面向对象

面向对象:对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。面向对象的三大特性:封装:将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。继承:子类继承父类的特征和行为,子类有父类的非 private 方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性。多态:多态就是不同继承类的对象,对同一消息做出不同的响应,基类的指针指向或绑定到派生类的对象,使得基类指针呈现不同的表现方式。(继承、多态 -> 代

2021-05-11 09:16:14 732

原创 C++面向对象-多态

多态同一名称,不同的功能实现方式。多态的实现主要分为静态多态和动态多态,静态多态主要是重载,在编译的时候就已经确定;动态多态是用虚函数机制实现的,在运行期间动态绑定。虚函数是运行时多态的基础。​​ 多态就是不同继承类的对象,对同一消息做出不同的响应(函数重写,不同继承类的对象的函数实现不一样)​ 多态是通过虚函数实现的,虚函数的地址保存在虚函数表中,虚函数表的地址保存在含有虚函数的类的实例对象的内存空间中,对象里存着对应虚函数表的地址。​ 基类的指针指向或绑定到派生类的对象,调

2021-05-11 09:12:36 169

原创 C++面向对象-继承和派生

class 派生类名:继承方式1 基类名1,继承方式2 基类名2,...公有继承 public:派生类中可以直接访问基类中的public和protected,通过派生类的对象只能访问基类的public,基类的private是都不能私有继承 private:基类的public和protected在派生类中都变成private,在派生类内看作private来用,通过派生类对象就都不能访问保护继承 protected:基类的public和protected在派生类中都变成 protected,在派生类内看作

2021-05-11 09:11:31 347

原创 C++面向对象-封装

(对C++面向对象没有一定了解的可能不太看得懂,这只是一个对部分重点的整理,主要是个人想要记的内容)public:可以被任意实体访问,相当于是类与外部的接口private:只允许本类的成员函数访问,就是只有类内部能用,对象是不能调用的,子类的也不行。(保护内部数据不被随意修改)protected:只允许子类及本类的成员函数访问,外部的也不行,对象也不行。就比private多了一个子类可以用。成员函数写在类外的话得 返回值 类名::函数名()成员函数有个隐含的形参 this 指针,在用的时候指向

2021-05-11 09:10:30 278

原创 C++程序编译过程

汇编代码:特定的汇编语言和特定的机器语言指令集是一一对应的,通过汇编过程转换成机器指令目标代码:机器指令文件,常被称作二进制文件。目标代码尽管已经是机器指令,但是还不能运行,因为目标程序还没有解决函数调用问题,需要将各个目标程序与库函数连接,才能形成完整的可执行程序[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xpuM9KHb-1620693890887)(upload/image-20210509112528703.png)]预处理 -》 编译 -》 汇编 -

2021-05-11 09:05:07 155

原创 卡特兰数相关整理

卡特兰数(格式懒得调了,直接把整理好的东西搬过来了,相当于一个备份?)计算公式卡特兰数的递推公式是:C(0)= 1 C(1)=1C(n) = C(0) C(n-1) + C(1) C(n-2) + …… + C(n-1) C(0) (注意里面的加起来是n-1,因为算是n个里面选定了一个,剩下的个数就是n-1)即计算结果:但是就是要分清楚题目给的n到底是什么含义,到底是n还是2n,真正算下去列出来的式子是怎么样的。常见问题:(1)(2)(3)(7)(9)(10)(11)(12)是一类,

2020-11-04 16:28:08 1115

原创 C++复习整理---i++和++i

理论上++i更快,实际与编译器优化有关,通常几乎无差别。//i++实现代码为: int operator++(int) { int temp = *this; ++*this; re

2020-10-13 23:50:07 1096

原创 C++复习整理---指针、函数、const相关

指针int *pp:p指向的地址*p:p指向的地址上的值&p:存放指针p的地址constconst int p int const p这两个相同的指向整型常量的指针,指向的位置的值不能改变,可以改指针本身。理解成先const int或int const,再为指针。就可以让这个指针指向有另一个值的另一个位置。如果想要在同一个位置改值,就可以先让另一个指针指向这个位置,然后再从另一个指针改值。比如:int u = (int)p;//得有(int),不然会提示是const int*

2020-10-13 10:18:49 124

原创 Photoshop学习整理---快捷键整理

其实常用的快捷键都记得,只是没那么常用快捷键很容易忘,需要用的时候又不是很好搜,就自己写个快捷键整理来记录一下···Ctrl+0:自动缩放图像至适合的大小Ctrl+ + (加号键):放大Ctrl+ - (减号键):缩小Alt + Shift:以中心点为轴同比缩放Alt + Delete:填充前景色Ctrl + Alt + z:后退多步钢笔工具中:(完全是大白话描述的,也不知道是不是这...

2020-02-12 16:43:26 621

原创 Photoshop学习整理---修复画笔工具

其实这部分内容没有很多,主要是怕自己忘了,所以先来记录一下侧边栏里修补的那一项(原始是个创可贴的图)里共有这几种工具:污点修复画笔工具、修复画笔工具、修补工具、内容感知移动工具、红眼工具。这些都可以用于修复修片,就是各自运用的地方不同。污点修复画笔工具:用于去除图像中比较小的杂点或斑点,比如去除脸上的雀斑什么的。哪里有需要去除的就在哪里点一下画一下就好,它会周围的像素为准来修复该部分。在窗...

2020-02-12 16:32:04 1494

原创 Photoshop学习整理---图层的混合模式

该系列为本人在学习过程中的学习整理,均为个人的理解,可能对部分原理存在误解,欢迎指正根据个人的学习经验,在学习的过程中,会存在一些难以理解的原理或者之类的东西,如果这时候有个通俗的解释或者个人理解,那学习起来会轻松很多。这也是我写这样的整理的目的,为了给自己一个通俗的理解和解释。图层混合模式就相当于是当前图层和当前图层下面的那个图层叠加的不同形式某一图层和该图层下面的那个图层,只在两个图...

2020-02-10 18:23:13 995

空空如也

空空如也

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

TA关注的人

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