论文阅读笔记1:知识图谱嵌入
知识图谱1:知识图谱嵌入综述
知识图谱嵌入方向的文献综述《Knowledge Graph Embedding:A Survey of Approaches and Applications》的阅读笔记,包含对论文中关键表述的翻译和自己产生的一些体会。
Introduction
知识图谱是一种包含了实体Entity和关系Relation的三元组,在语义解析、命名实体消解,信息抽取和自动问答中有广泛的应用。
知识图谱嵌入知识图谱研究的子方向,其目标是将知识图谱中的实体和关系嵌入到一个连续的向量空间中,而得到的这些嵌入向量可以被用在很多知识图谱的子任务中,比如知识图谱补全。
现有的很多嵌入技术都是基于观测到的事实,即实体-关系-实体这样一个三元组,进行的,对于一个给定的KG,会首先将实体和关系都表示在一个连续的向量空间中,然后定义一个打分函数来衡量每一个事实的合理性Plausibility,然后通过使得合理性最大化来学习到实体和关系的嵌入表示。
基于事实的知识图谱嵌入
当我们给定一个包含n个实体和m个关系的KG时,所有的事实facts可以用一个集合来表示,这里的h表示h ...
2021春招实习-Java语法和底层原理
第一部分:Java的语法和数据结构的底层细节
1.0 Java的循环
Java的循环方式有for使用下标循环,for-each循环,while循环和迭代器循环
使用下标和while完成循环是最常见的方式,对于数组或者collection都通用
for-each循环是Java1.5之后带来的语法糖,可以用一个变量来遍历该类型的一个可迭代的结构,比如数组和集合
iterator是一些结构提供的一个迭代器,可以用hasNext来判断是否到了末尾,并依次进行迭代
在Collection框架的数据结构下,如果使用for-each对一个容器进行遍历,那么在编译之后这一段for循环在class文件中会被优化成迭代器的形式
也就是说for-each语句是通过迭代器实现的 #### 1.0.1 for-each循环的坑
for-each循环是通过迭代器实现的,而Collection又一个fail-fast机制,如果有多个线程对同一个集合的内容进行操作的话就可能产生fail-fast,比如当一个线程A通过Iterator去遍历集合的时候,如果这个集合的内容被其他的线程改 ...
2021春招实习-设计模式
1. 单例模式
单例模式的类的对象只允许一个实例存在,比如服务器中的配置信息读取可以由单一对象完成
单例模式的实现主要通过以下两步:
将该类的构造方法定义为private的,这样一来别的地方的代码就无法调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来访问该类产生的唯一一个对象
在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用
1.1 优缺点
优点
在内存中只有一个对象,节省内存空间;
避免频繁的创建销毁对象,可以提高性能;
避免对共享资源的多重占用,简化访问;
为整个系统提供一个全局访问点
缺点:
不适用于变化频繁的对象;
滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;
如果实例化的对象长时间不被利用,系统会认为该对象是垃圾而被回收,这可能会导致对象状态的丢失
实现方式1:饿汉式
一个简单的实现方式的代码如下 ...
2021春招实习-MySQL知识整理
1. 数据库索引与B+树
索引是一种数据结构用于在大量的数据中快速定位到我们想要的数据,mysql数据库中的索引主要有B+树索引、Hash索引和全文索引 ### 1.1 二叉搜索树和平衡树
B+树是由二叉搜索树和平衡树发展而来的,二叉搜索树是一种最简单的索引,但是在一定的条件下会退化成一个链表,造成索引的性能下降的问题,而平衡树可以解决这一问题,平衡树会根据一定的规则自适应地调整树的节点和高度,使得索引尽可能保持一个平衡的树形结构,常见的有AVL树、Splay树和红黑树等
平衡树相比于普通的二叉搜索树查找效率更稳定,总体的查询速度也更快
一般来说数据库中的数据规模都比较大,所以内存很容易放不下这么多数据和索引,因此通常会把索引和数据存储在磁盘之类的外围设备中,但是和内存相比,磁盘IO的效率非常低,并且是按block存取的,因此应该尽可能将要查询的数据放在一个磁盘中,也就是说要让树的节点多存放一些数据 ### 1.2 B树与B+树
B树相比于平衡二叉树,每个节点存储了更多的key和data,B+树相比于B树做出了一些改进,最重要的一点就是非叶节点不存储数据,而是只存 ...
机器学习代码实现3:KNN算法
机器学习代码实现3:KNN算法
这一专题的内容主要是我在进行统计机器学习的算法的代码实践的过程中的一些记录,包括公式的推导,算法的实现与数据集的实验结果。
这部分工作我比较早之前就已经开始做了,现在刚好趁此机会整理一下之前写过的所有小demo,汇总成一个完成的库
1.KNN算法
KNN算法是一种常见的监督学习算法,常用于分类问题,KNN算法的核心思想是用跟输入数据最接近的K个点的类别来预测输入数据的类别,这就决定了这个算法的关键在于:
如何定义最接近?需要计算点与点之间的距离,我们一般会用L2距离,也叫欧几里德距离,来表示点与点之间的距离
K如何选定:K的大小会直接影响算法求解的效率
怎么用K个数据的类来预测输入数据的类:一般采用投票法,选择K个点的类别中出现次数最多的类别作为预测结果
KNN算法的过程:
训练阶段:保存训练集中的数据点和对应的标签
预测阶段:输入一个点之后,计算其与所有的训练集中的数据点的具体,按大小排序选出最小的K个并统计其类别的分布情况,选择出现次数的那个类别作为预测的结果
2.代码实现
这里的代码框架取 ...
机器学习代码实现2:贝叶斯定理与参数估计
机器学习代码实现2:贝叶斯模型
这一专题的内容主要是我在进行统计机器学习的算法的代码实践的过程中的一些记录,包括公式的推导,算法的实现与数据集的实验结果。
这部分工作我比较早之前就已经开始做了,现在刚好趁此机会整理一下之前写过的所有小demo,汇总成一个完成的库
1.贝叶斯定理
贝叶斯定理主要是用来判断一个数据样本是否属于类别,其理论主要就是基于下面的公式:
这里的称为先验概率,也就是目前已经知道的类别的分布情况,而叫做似然likelihood,表示的是当前已知的属于类别的的情况,也就是说我们要判断一个样本是否属于类别,我们需要先得到已经属于类别的同类的概率和类别本身出现的概率,这样就可以估计当前的属于类别的概率
当有C个类别的时候,贝叶斯定理可以表示为:
计算出结果之后,根据极大似然的规则,让可能性最高的作为样本类别的预测结果。
因此在训练一个贝叶斯分类器的时候,我们要得到一个类别-特征的分布矩阵,我们可以假设可能的预测结果有类,而不同的特征可能取值有种,这样一来,我们就可以得到一个的矩阵,矩阵中的每一个元素代表了某一种特征情况输入 ...
机器学习代码实现1:线性回归与岭回归
机器学习代码实现1:线性回归和岭回归
这一专题的内容主要是我在进行统计机器学习的算法的代码实践的过程中的一些记录,包括公式的推导,算法的实现与数据集的实验结果。
这部分工作我比较早之前就已经开始做了,现在刚好趁此机会整理一下之前写过的所有小demo,汇总成一个完成的库
1.线性回归模型
线性回归模型是最简单的一种线性模型,模型的形式就是:
我们可以通过对原本的输入向量x扩增一个为1的维度将参数和统一成一个参数,即模型变成了
这里的是原本两个参数合并之后的而其损失函数的形式是残差平方损失RSS
我们很容易就可以通过求导得到线性回归模型的关于的梯度
这样一来我们就可以通过梯度下降的方式来训练参数,可以用下面的公式表示[大概是这样,我也没有]:
但实际上线性模型的参数可以直接求解出,即:
2.线性回归的编程实现
具体代码中的参数的形式可能和上面的公式推导略有区别,我们实现了一个LinearRegression的类,包含fit,predict和loss三个主要的方法,fit方法就是求解线性模型的过程 ...
图机器学习1:导论&传统的图学习方法
这个系列的笔记是我在学习斯坦福大学公开课程CS224W:Machine Learning For Graph的过程中完成的笔记。
2021春招暑期实习面经
阿里云基础平台开发面经
之前在这个帖子 里发了凉经,后来被另一个部门捞了起来重新面,一共面了三轮面试,面到最后才了解到是阿里云的基础平台研发部门
以下内容仅供参考,请勿转发至外网
一面4.10 25min
自我介绍,然后让我简单介绍一下简历上的若干项目中自己做的工作
你觉得自己做的项目可以有哪些地方能进一步改进 #### 八股文:
进程和线程的区别
linux的进程分成几个段
TCP和UDP的区别
项目中哪些地方用到了并发编程和并行编程
没有考代码题
二面4.12 45min
自我介绍
简述TCP的三次握手的过程
线程之间如何进行通信?信号量是什么,有什么作用?
解释一下线程池是什么东西,解释完之后又问了可不可以类比一下推测连接池是什么
自己印象最深的一个项目是什么,做完之后有什么样的收获
你如何看待软件工程中的各个环节?你认为最重要的环节是哪一个
项目过程中有没有性能调优的经历,详细讲讲
C++中的虚函数是怎么实现的,内存泄漏是指什么?
还问了个人未来发展规划,其他的一些问题有的忘记了,没有考代码题
反问环节:问了 ...
Java应用技术3:高级语法
Java应用技术3:高级语法特性
4. Java高级语法特性
4.1 异常处理
Java中的异常类型
注意异常和错误的区别,系统错误是JVM抛出的,异常是由程序引起的,可以被检测出来
异常类型
Unchecked Exceptions 不可恢复的逻辑错误,包括RuntimeException和Error
比如NullPointerException和IndexOutOfBoundsException
Java不需要对unchecked exceptions进行检查
checked exceptions 需要进行catch
Declaring Exceptions 方法需要声明检查的异常的种类,关键字为throws
Throwing Exceptions
当发现了错误类型的时候可以创建一个合适的错误类型将其抛出
语法是throw new TheException()
try-catch语句
123456789101112try{ statements;//Statementsthatmaythrowexceptions ...
Java应用技术2:类和对象
Java应用技术2:类和对象
RandomStar
Chapter 3. Java OOP
3.1 类和对象
3.1.1 类的定义和初始化
一个对象拥有状态(state)和行为(behavior)两个属性,状态定义了对象的内容,表现定义了对象可以进行哪些操作,类就是用于定义同一类对象的
Java中用变量定义状态,用方法定义行为
Java中的类也有构造函数,在对象构造的时候调用,但是对象的定义也可以不需要构造函数,当类定义里没有显式声明的构造函数时Java编译器会自动调用一个default constructor
Java中方法和成员变量的引用方式:objectRefVar.methodName(arguments)
Reference Data Fields有默认值
String类型是null,数值类型是0,布尔类型是false,char类型是\u0000 ,但是Java对于方法中的局部变量不会赋予默认值
比如int x 后直接对其进行print会发生编译错误,因为变量没有初始化
和C++的区别
Java编译器会为这些数据成员进行默 ...
Java应用技术1:基础语法
Java应用技术1:基础语法
RandomStar
成绩组成
平时分70%+期末考试30%
包含出勤,PTA作业,编程小作业,大作业,期中考试
Chapter 1:Introduction
1.1 Java语言的特性
简洁
没有C/C++中的指针,没有多重继承和运算符重载的语法特性
面向对象
Java设计的核心是如何复用代码,并且支持继承封装多态
Interpreted
代码会编译成字节码(bytecode)在Java虚拟机上运行
Java是跨平台的,可以在所有有JVM的计算机上运行,JMV可以设置不同的安全等级
鲁棒性
强类型机制,异常处理,垃圾内存自动搜集等机制
1.2 JDK的版本
Java Standard Edition (J2SE)
可以用于开发客户端应用和app
Java Enterprise Edition (J2EE)
可以用于开发服务端应用,比如Java Servlets
Java Micro Edition (J2ME)
开发手机应用
...
计算机网络4:应用层与网络安全
Chapter6:Application Layer
6.1 域名系统DNS
域名系统(Domain Name System)用于将主机名字转换成IP地址
DNS是一个分布式的域名系统,是一个联机的分布式数据库系统,并采用C/S模式,大多数域名在本地解析而少量解析需要互联网上的通信
域名到IP地址的解析是由分布在互联网上的许多域名服务程序共同完成的,域名服务器在专门设置的节点上运行
解析的时候需要把需要解析的域名放在DNS请求报文中,以UDP用户数据报的方式发送给本地域名服务器,本地域名服务器把对应的IP地址放在回答报文中返回,如果没找到就需要向别的域名服务器发出请求
域名:层次树状结构
从左到右域名级别逐渐提高,并且用小数点隔开,域名都由英文字母和数字组成,除了-以外不能使用其他标点符号
顶级域名:国家顶级域名如cn,通用顶级域名如com,基础结构域名,只有一个arpa
域名服务器
采用分区的方法解决这个问题,一个服务器所管辖的范围叫做区,一个区中的所有节点都是可以联通的,每一个区设置相应的权限域名服务器,用来保存该区中所有主机的域名,区是 ...
计算机网络3:网络层和运输层
Chapter 5:Network Layer
5.1 网络层的设计
网络层
关注的是如何将源端的数据包发送到接收方
可以通过中间路由器进行转发,数据链路层只负责将线路从一边传送到另一边,而网络层是处理端到端数据传输的最底层
因此网络层必须知道网络的拓扑结构,并选择适当的路径进行传输
image-20201027100044982
网络层提供给传输层的服务
应该独立于路由器技术,向传输层屏蔽网络拓扑结构的具体内容
传输层可用的网络地址应该有一个统一的编地址方案
网络层提供的服务
无连接服务:
每个数据包独立路由,不需要任何预先的设置
此时的数据包通常也称为数据报datagram,对应的网络称为数据报网络
每个路由器中都有一个内部表,指明了针对每一个可能的目标地址应该将数据包送到哪里去。
表中的每一项由两个部分组成:目标地址和通往目标地址所使用的出境线路
管理路由表更新的算法称为路由算法
image-20201027102548025
面向连接的服务:
在发送数据包之前需要先建立起一 ...
计算机网络2:物理层,数据链路层与MAC子层
Chapter2. Physics Layer
2.0 物理层的基本概念
物理层存在的意义正是要尽可能地屏蔽不同的传输媒体和通信手段之间的差异,使得物理层上面的数据链路层感受不到这些差异
物理层的协议也常常称为规程 procedure,这个词比协议要出现的早
一个数据通信系统分为如下几个部分
源系统,也叫发送端和发送方:包含源点和发送器
传输系统,也叫传输网络
目的系统,也叫接收端,包含接收器和重点
2.1 有线通信和无线通信
物理层用到的几种线
双绞线 Twisted Pair
同轴电缆
光缆 Fiber Cables
利用了光的全反射原理,在特定入射角度下不会发生折射
接口线 Interface Line
无线通信:
卫星通信
微波通信:常见于移动通讯,微波会穿过遮挡物继续传播,但可能会被吸收
物理层要做的就是把计算机中的电信号转化成上面这些可以传播的信号
信号 signal是数据的电气或者电磁表现,分为模拟信号和数字信号
模拟信号也叫连续信号,代表消息的参数的取值是连续的
数字信 ...
计算机网络1:OSI七层模型
Randomstar 2020.09-2021.01
成绩组成
平时成绩 50%
平时小作业
8个lab
课堂表现和quiz
期末考试 50%
Chapter1. Introduction
1.1 网络模型
OSI 七层模型:三个重要概念:服务,接口和协议
物理层:在一条通信信道上传输比特
要确定用什么电子信号表示0和1,一个比特持续多久,传输是否可以双向,连接如何建立等等
数据链路层:发送方将输入数据拆分成若干数据帧(frame),然后按照一定的顺序来发送这些数据帧
接收方必须确认收到的每一帧,保证数据的顺序和完整性,然后发回确认帧
为了防止发送方淹没慢速的接收方,需要对流量进行调节
介质访问控制子层则是控制对共享信道的访问,没有拥塞控制的功能
网络层:控制子网的运行,将数据包从源端发送到接收方,需要处理拥塞
允许异构的网络相互连接成互联网络
传输层:接受会话层的数据,将数据分割成小单元,然后传到网络层
传输层是真正的端到端的层,始终将源数据从源端带到接收方
OSI模型中1-3层是链式 ...
操作系统4:磁盘与I/O
Chapter 10. File-System Interface
10.1 文件
文件是存储在某种介质上的并且具有文件名的一组信息的集合,分为数据和程序
文件具有很多属性,比如name,type,location,size,protection等等
文件是一种抽象数据类型,可以进行创建、读写、删除等操作
打开文件需要:
文件指针,指向上次读写位置的指针
文件打开次数的计数器,记录文件被打开的次数,当最后一个进程关闭文件的时候就从打开文件的记录表中移除这个文件名
文件的磁盘位置
访问权限
文件的结构
流文件结构:字符流或者字节流
记录文件结构:按照行或者定长、变长的段来存储
复杂结构:格式化文档、可重定位加载文件
10.2 文件访问的方式
三种存取方式
顺序存取:按照顺序读取文件中的内容,有一个当前位置的指针,读写一次都前进一格,也可以将指针reset
直接存取:可以直接读写n个字符
索引顺序
10.3 文件目录
磁盘的结构
磁盘可以划分成若干个分区,每个分区都有目录和文件
...
操作系统3:内存管理
Chapter 8:主存 Main Memory
8.1 基本知识
程序一定要从磁盘装载进入内存才能运行,内存和寄存器是CPU可以直接访问的存储部分
cache位于内存和CPU寄存器之间
逻辑地址和物理地址
逻辑地址也叫相对地址和虚地址,由CPU生成,用户程序汇编之后生成的目标代码通常采用相对地址的形式
首地址作为0,其他指令都用相对于首地址来编址
不用能逻辑地址在内存中读取信息
物理地址:实地址,绝对地址,可以直接寻址
基地址寄存器和限长寄存器
一对基地址寄存器和限长寄存器定义了逻辑地址空间
基地址寄存器存放地址的首地址,限长存储长度
地址映射
在编译、装在和执行三个阶段都有发生
编译阶段,如果预先知道内存的location就可以生成absolute code,一旦起始位置变了就需要重新编译
装载阶段,如果内存的location未知,必须生成可以重定位的代码
执行阶段,如果进程可以移动那么绑定会延迟到运行的时候,需要硬件支持地址映射
内存管理单元
动态装载和动态链接
8.2 交换技术
交换 ...