- 博客(50)
- 收藏
- 关注
原创 算法——分治
概念将问题实例划分为同一个问题的几个较小实例,最好拥有相同规模对每一个较小规模的实例进行求解如果需要则以某种方式合并这些小问题的解得到原问题的解归并排序将列表分为两个大小最接近的部分,递归地拆分返回上一层递归时,将每两个小部分合并为有序的部分继续返回给上一层递归,直到合并为完整列表快速排序快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。折半查找递归非递归二叉树遍历及其相关特性对二叉树的操作
2021-04-13 10:51:40
112
原创 dfs
步骤:画树分析找到截止条件,遇到此条件就打印结果返回。遍历候选节点,按条件筛选加入结果集。递归dfs。递归完重置下一轮的条件。ABC全排列6种输出截止条件:结果集已经有这三种字符了筛选条件:当前字符没加入结果集过import java.util.ArrayList;public class DFS { public static void main(String[] args) { char[] p = {'A', 'B', 'C'}; boo
2021-03-20 22:59:25
142
原创 并查集
算法学习笔记(1) : 并查集例题class Solution { public int longestConsecutive(int[] nums) { if (nums.length == 0) return 0; // 首次遍历,与邻居结盟 UnionFind uf = new UnionFind(nums); for (int v : nums) uf.union(v, v + 1); // uf.union() 结盟
2021-03-18 10:42:25
92
原创 面向对象
SOLID单一职责原则:是最容易理解的设计原则,但也是被违反得最多的设计原则之一。单一职责就跟“加入适量的盐”一样,不好把握。“职责”定义为“变化的原因”,也就是说,如果有多种变化原因导致一个类要修改,那么这个类就违反了单一职责原则。单一职责原则某种程度上说是在分离关注点。比如家用电和高压电不能用同一个电线来供应。在实践中,运用单一职责原则,要像新厨师在学炒菜掌握“加入适量的盐”一样不断品尝。写代码也一样,你需要识别需求变化的信号,不断“品尝”你的代码,当不够好时,持续重构,直到刚刚好。开闭原则:对扩
2021-02-23 11:56:38
110
原创 JDBC总结
步骤1. 加载数据库驱动//1.加载驱动(开发推荐的方式)Class.forName("com.mysql.jdbc.Driver");2、建立连接URL的写法为:jdbc:mysql://localhost:3306/数据库名Connection用于代表数据库的链接,客户端与数据库所有交互都是通过connection对象完成的,创建方法为:Connection conn = DriverManager.getConnection(url,user,pass);3、执行SQL语句Jdbc程
2021-02-09 21:31:53
64
原创 Junit总结
Junit是xUnit的一个子集,xUnit是一套基于测试驱动开发的测试框架。其中的断言机制:将程序预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性1.测试方法上必须使用@Test2.测试方法必须使用 public void进行修饰3.新建一个源代码目录来存放测试代码4.测试类的包应该和被测试类的包一样5.测试单元中的每个方法一定要能够独立测试,其方法不能有任何依赖总结:@BeforeClass修饰的方法会在所有方法被调用前执行,且该方法时静态的,所以当测试类被加载后就接着.
2021-02-09 21:00:22
119
原创 图解HTTP博客总结
HTTP学习之《图解HTTP》总结《图解HTTP》读书笔记《图解HTTP》知识梳理【一】《图解HTTP》知识梳理【二】《图解HTTP》知识梳理【三】《图解HTTP》知识梳理【四】
2021-01-29 11:15:45
102
原创 深入理解Java虚拟机博客总结
深入理解java虚拟机(全章节完整)JVM调优基础JVM调优方法Java 虚拟机面试题全面解析(干货)Java虚拟机(JVM)面试题(2020最新版)
2021-01-28 10:23:30
64
原创 深入理解Java虚拟机(五)
大内存硬件上的程序部署策略集群间同步导致的内存溢出堆外内存导致的溢出错误外部命令导致系统缓慢服务器虚拟机进程崩溃不恰当数据结构导致内存占用过大由Windows虚拟内存导致的长时间停顿由安全点导致长时间停顿...
2021-01-24 10:06:00
67
原创 图解TCP/IP
一、网络基础知识OSI参考模型:传输方式: ①电路交换:计算机之间在发送数据时需要通过交换机与目标主机建立通信电路。也就是建立连接。用户可以一直使用,直到连接被断开。②分组交换:发送端计算机将分组数据发送给路由器,路由器收到这些数据后,缓存到自己的缓存区,然后转发给目标计算机。协议就是计算机与计算机之间通过网络实现通信时实现达成的一种“约定”。TCP/IP基础知识TCP/IP协议分层模型主机A向主机B发送一封电子邮件,在TCP/IP模型下的处理过程如下:ARP: 从分组数据
2021-01-21 23:32:16
277
原创 图解TCP/IP博客总结
(一)网络基础知识–图解TCP/IP(二)TCP/IP基础知识–图解TCP/IP(三)数据链路–图解TCP/IP(四)IP协议–图解TCP/IP(五)IP协议相关技术–图解TCP/IP(六)TCP与UDP–图解TCP/IP(七)路由协议-TCP/IP–图解TCP/IP(八)应用协议–图解TCP/IP(九)网络安全–图解TCP/IP...
2021-01-21 20:11:27
71
原创 深入理解Java虚拟机(四)
基础故障处理工具jps: JVM process status tool,列出正在运行的虚拟机进程,显示虚拟机执行主类名称,以及这些进程的本地虚拟机唯一ID。可以加入参数:jps -m 运行时传入主类的参数;jps -v 虚拟机参数;jps -l 运行的主类全名 或者jar包名称;也可以一块使用 jsp -mlv。jstat: 用于监视虚拟机各种运行状态信息的命令行工具,包括监视类装载、内存、垃圾回收、jit编译信息。jstat -gcutil 3344 1000 10 每隔1000毫秒执行
2021-01-21 14:21:07
70
原创 深入理解Java虚拟机(三)
程序计数器、虚拟机栈、本地方法栈都是随着线程而生,随着线程而灭的,因此不需要过多考虑回收问题。而Java堆和方法区内存分配和回收是动态的,垃圾收集器主要关注的就是这部分内存的分配和回收。判断对象是否存活:**引用计数算法:**给对象添加一个引用计数器,引用时加一,失效减一,为零即不再使用。但主流Java虚拟机都没有使用该算法,因为有很多例外情况要考虑,比如对象之间相互循环引用。**可达性分析算法:**通过一系列称为"GC Roots"的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,经.
2021-01-19 15:41:03
134
原创 深入理解Java虚拟机(二)
**程序计数器:**由于Java虚拟机的多线程是通过线程轮流切换和分配处理器执行时间的方式来实现,所以在任何时刻一个处理器都会执行一个线程中的指令,因此,为了线程切换后能回到正确的位置,每个线程都要有一个程序计数器,并互不影响。称这类内存区域为“线程私有”(生命周期与线程相同)的内存区域。若线程执行的是一个Java方法,则程序计数器记录的是正在执行的虚拟机字节码指令地址;若执行的是本地方法,值应为空。虚拟机栈:...
2021-01-13 09:43:30
81
原创 深入理解Java虚拟机(一)
Java技术体系:JDK:包括Java程序设计语言,Java虚拟机,Java类库。是支持Java程序开发的最小环境。JRE:包括Java类库API中的Java SE API子集和Java虚拟机。是支持Java程序运行的标准环境。
2021-01-12 12:22:22
81
原创 推荐系统笔记(三)
监督学习回归模型线性回归模型:f(x) = w1x1+w2x2+…+wdxd+b一元线性回归多元线性回归非线性回归模型最小二乘法:基于均方误差最小化来进行求解的方法。选择未知参数,使得理论值和观测值之差的平方和达到最小。分类模型k临近(kNN)决策树逻辑斯蒂回归无监督学习聚类k均值(k-means)降维...
2020-11-14 23:19:52
88
原创 Web安全
Web安全概述Web安全概述Web原理web安全为什么重要现状web安全的分类DoS攻击CSRFCookies攻击重定向攻击文件上传攻击XSS注入SQL注入典型客户端攻击-XSS攻击的步骤与防护XSS简介XSS分类反射型XSS存储型XSS基于DOM的XSS漏洞XSS的风险与防范XSS攻击方式XSS攻击的传送机制查找并利用XSS漏洞防止XSS攻击...
2020-11-05 11:03:41
58
原创 NLP 基于kashgari和BERT实现中文命名实体识别(NER)
from kashgari.corpus import ChineseDailyNerCorpusimport kashgarifrom kashgari.embeddings import BERTEmbeddingfrom kashgari.tasks.labeling import BiLSTM_CRF_Modeltrain_x, train_y = ChineseDailyNerCorpus.load_data('train')valid_x, valid_y = ChineseDail
2020-10-26 08:46:51
611
1
原创 Web安全相关博客
Web安全概述WEB安全结构Web安全概述WEB三大攻击之—XSS攻击与防护XSS攻击原理、示例和防范措施 –XSS 攻击原理及防护
2020-10-25 23:29:29
68
原创 Attention机制
softmax函数归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。softmax第一步就是将模型的预测结果转化到指数函数上,这样保证了概率的非负性。第二步为了确保各个预测结果的概率之和等于1,需要将转换后的结果进行归一化处理。定义attention机制就是一种根据某些规则或者某些额外信息(query)从向量表达集合(values)中抽取特定的向量进行加权组合(attention)的方法。简单来讲,只要我们从部分向量里面搞了加权求和,那就算
2020-10-12 20:06:52
213
原创 NLP的发展
NLP中监督任务的基本套路都可以用三个积木来进行归纳:文本数据搜集和预处理将文本进行编码和表征设计模型解决具体任务1.1 语言模型语言模型的本质是对一段自然语言的文本进行预测概率的大小,即如果文本用S来表示,那么语言模型就是要求P(S)的大小。马尔科夫假设:假定一个句子中的词只与它前面的n个词相关,特别地,当n=1的时候,句子的概率计算公式最为简洁:存在的问题:会遇到很多零值。基于统计的语言模型无法把n取得很大,计算复杂度会指数上升。统计语言模型无法表征词语之间的相似性。1...
2020-10-11 22:35:00
233
原创 BERT
利用了真双向的Transformer为了利用双向信息,改进了普通语言模型成为完形填空式的Mask-LM(Mask-Language Model)利用Next Sentence Prediction任务学习句子级别信息进一步完善和扩展了GPT中设计的通用任务框架,使得BERT能够支持包括:句子对分类任务、单句子分类任务、阅读理解任务和序列标注任务Transformer Encoder因为有Self-attention机制,因此BERT自带双向功能。双向功能是Transformer Encoder自带.
2020-10-11 22:34:45
178
原创 Transformer
Transformer里最为核心的机制是Self-attention.输入为句子的矩阵,先分别通过三个全连接矩阵将输入矩阵变化为三个矩阵,分别为Q, K和V,然后通过Q和K的计算得到一些权值,将这些权值加权求和到V矩阵上,便可以得到一个新的矩阵表示。Self-attention机制中的多头机制便是将这样的操作分别进行多次,这样能让句子的表征充分学习到不同的侧重点,最终将这些多头学习出来的表征concat到一起,然后再同一个全连接网络,便可以得到这个句子的最终Self-attention下新的表示。正.
2020-10-11 22:27:32
134
原创 面向对象,类和类图
封装封装就是将相关概念组合成一个单位,然后用一个单独的名字来指代。子程序是早前的例子。对象封装属性和方法。属性只能通过方法调用。信息隐藏信息隐藏是使用封装来限制某些信息或实现细节的外部可见性。好的设计应该是“黑盒”。状态保留一个函数结束后,状态会消失。通过方法调用,对象可以保持他们的状态。封装、隐藏、状态保持都是描述了抽象数据类型。对象识别每个对象都可以通过一种属性被识别并作为一个独立的软件实体。信息发送对象obj1向目标对象obj2传递要求obj2应用其方法的
2020-10-10 11:09:21
170
原创 BERT博客
Transformer什么是BERT?BERT详解一文读懂BERT(原理篇)一本读懂BERT(实践篇)一文读懂Transformer+源码复现Tensorflow入门
2020-10-09 09:43:52
58
原创 自然语言处理(二)
中文分词中文分词:指的是将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于原文本。中文分词算法大致分为基于词典规则与基于机器学习这两大派。词典中的字符串就是词。词的性质–齐夫定律:一个单词的词频与它的词频排名成反比。比如,我们希望“北京大学”成为一整个词,而不是“北京 + 大学”之类的碎片。具体来说,就是在以某个下标为起点递增查词的过程中,优先输出更长的单词,这种规则被称为最长匹配算法。从前往后匹配则称为正向最长匹配,反之则称为逆向最长匹配。双向最长匹配,流程如下:同时执行正向和逆向最长匹
2020-09-14 10:37:44
162
原创 自然语言处理(一)
自然语言处理自然语言处理(Natural Language Processing,NLP)研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至实现终极目标——理解人类语言或人工智能。著名的图灵测试就是根据机器是否能像人类一样理解语言来判断它是否具备人工智能。自然语言的复杂程度vs编程语言:词汇量、结构化、歧义性、容错性、易变性、简略性自然语言处理系统的输入源一共有3个,即语音、图像与文本。语音和图像这两种形式一般经过识别后转化为文字,转化后就可以进行后续的NLP任务了。词法分析的主要任
2020-09-14 09:54:08
294
转载 Java
第一阶段:基础阶段基础阶段我主要分为了四大块内容:一、数据结构与算法1、简单的数据结构(1)基础概念(2)数组(3)链表、(4)队列(5)栈2、树(1)二叉树(2)平衡二叉树 (3)最优二叉树(哈夫曼树) (4)红黑树 (5)B、B+、B*树(5)LSM树3、图(1)图的基础知识和两种遍历方式(2)最小生成树 (Prim 算法 和 Kruskal 算法)(3)最短路径算法 (Dijkstra(迪杰斯特拉)算法和Floyd(弗洛伊德)算法)(4)拓扑排序4、排序算法(8种排序算法和时间
2020-06-14 17:07:26
109
原创 python程序设计——第1章 python基本语法元素
1.1 程序设计基本方法计算机与程序设计计算机是根据指令操作数据的设备,具有功能性(对数据的操作,例如计算输入输出)和可编程性(根据指令自动准确的完成操作者的意图)编译和解释编译:将源代码一次性转换成目标代码的过程。解释:将源代码逐条转换成目标代码同时逐条运行的过程。程序的基本编写方法IPO:Input输入;Process处理;Output输出。计算机编程1.2 python开发环境配置python编程方式:交互式:对每个输入语句即使运行结果,适合语法练习。文件式:批量执行一组语
2020-06-03 21:43:51
181
原创 推荐系统笔记(二)
机器学习概念:通过输入海量训练数据对模型进行训练,使模型掌握数据所蕴含的潜在规律,进而对新输入的数据进行准确的分类或者预测。是一门多领域交叉的学科,涉及了统计学、概率论、算法复杂度理论等多门学科。专门研究计算机怎样模拟人类的学习行为,以获取新的知识和技能,然后重新组织已有的知识结构,使之不断改善自身的性能。分类:监督学习:提供数据并提供数据对应的结果。这些数据称为训练数据。包括分类和回归:分类是输出被限制为有限的离散数值;分类问题包括学习和分类两个过程。学习过程中,根据已知的训练数据集,利用学习
2020-05-15 22:52:24
129
原创 推荐系统笔记(一)
推荐系统目的:对于用户:面向需求不明确的人;是信息过载所采用的措施,从海量数据中迅速推荐出符合用户特点的物品。对于商家:可以通过推荐系统让自己的产品脱颖而出。对于网站:让内容更好的推送到喜欢它的用户手中。应用:电商、音乐、广告、新闻、电影、视频、社交网络等。基本思想:推荐具有用户喜欢的特征的物品给用户推荐他喜欢过的物品相似的物品利用和用户兴趣相似的其他用户,推荐其他用户喜欢的物品(精准推荐,物以类聚,人以群分)用户:个人信息、喜好标签等物品:内容信息、分类标签、关键词行为数据:判
2020-05-14 16:56:22
99
原创 复试知识点——软件工程
需求开发软件设计软件实现软件测试软件测试:利用测试工具,按照测试方法和测试流程,对产品进行功能和性能上的测试。要测试是否是正确实现了用户的需求和是否水使用了正确的技术手段来开发软件。从而尽可能早的发现缺陷,并且保证缺陷得以修复。软件缺陷产生原因:编程错误、时间压力、设计、软件复杂程度、需求变更、缺乏沟通缺陷是系统代码有问题;错误是系统执行了有缺陷的代码导致的状态;失败是软件功能失效。...
2020-04-30 21:59:56
819
原创 面试问题笔记
计算机网络OSI参考模型(怎么封装解封的,每层重点协议是什么)TCP/IP模型(简化了哪些层,有什么好处)IP协议(不可靠连接、特点)TCP、UDP(在哪层,三次握手四次挥手,拥塞阻塞、滑动窗口。。)常见应用层协议(DNS、DHCP)对称密钥/非对称密钥加密方式,什么时候应用操作系统进程和线程常见调度算法死锁的产生和解决虚拟内存(概念、为什么会产生虚拟内存),页面置换算...
2020-04-27 23:25:17
463
原创 算法学习笔记
常用数据结构和技巧数组、字符串数组优点:构建简单,按下标查找快。缺点:需连续分配存储空间,查询某元素是否存在要遍历整个数组,添加删除也是。链表链表优点:灵活分配空间,快速添加删除缺点:查询慢。技巧:快慢指针;构建一个虚假链表头【例】k个一组翻转链表若链表长度小于k,返回原链表用三个指针prev、cur、next,将cur下一个节点保存到next指针,然后cur指针指向...
2020-04-26 09:20:47
103
原创 面试题——数据结构
数组寻找数组中第二小的元素这里有很多方法可以实现:一个简单的解决方案是按递增顺序对数组进行排序,堆排、快排、归并排序等等都可以达到目的。排序数组中的前两个元素是两个最小的元素。这个解的时间复杂度是O(nlogn)。 关于排序算法后续会继续更新。更好的解决方案是扫描数组两次。在第一次遍历中找到最小元素。让这个元素为x,在第二次遍历中,找到最小的元素大于x,这个解的时间复杂度是O(n)。...
2020-04-25 22:15:46
198
原创 面试——Java
面向对象的特征有哪些方面?抽象:抽象是将一类对象的共同特征总结出来构造类的过程。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。继承:子类继承父类的属性和方法。从而提高代码复用性、扩展性。使类与类之间产生了关系,有了这个关系,才有多态的特性。多态:父类型的引用指向子类型的对象。同一操作作用于不同的对象,可以产生不同的效果。 Java引用变量有两个类型:编译时类型,运行时类型...
2020-04-23 14:26:14
103
原创 复试面试题——数据库
什么是存储过程?用什么来调用?有哪些优缺点?存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。调用:1)可以用一个命令对象来调用存储过程。2)可以供外部程序调用,比如:java程序。优点:1)存储过程是预编译过的,执行效率高。2)存储过程的代码直接存放于...
2020-04-21 09:33:25
1004
原创 复试面试题——操作系统
请分别简单说一说进程和线程以及它们的区别进程:是一个具有独立功能的程序,关于某个数据集合的一次运行活动,是操作系统进行资源分配和保护的基本单位。线程:是进程那一个相对独立的,可调度的执行单元,是操作系统资源分配和调度的基本单位。一个进程那可以有多个线程,多个线程也可以并发执行同一个进程。内线程切换不会导致进程切换,不同进程内的线程切换会导致进程切换。线程同步的方式有哪些互斥量:采...
2020-04-20 17:34:26
180
原创 复试面试题——计算机网络
常见面试题请简述TCP\UDP的区别1、TCP面向连接,提供可靠的服务,传送的数据,无差错,按序到达;;UDP是无连接,不可靠的。2、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)3、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,...
2020-04-20 11:51:59
265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人