- 博客(50)
- 收藏
- 关注
原创 leetcode前200+剑指offer重置版
leetcode1 两数之和class Solution { public int[] twoSum(int[] nums, int target) { //map里面存储着遍历过的值和索引 HashMap<Integer,Integer>map = new HashMap<>(); for(int i =0;i<nums.length;i++){ //查看map中是否有和当前值配对的值,如果有返
2021-02-27 16:49:43 244
原创 leetcode
1 两数之和hashmap方法是目前最优解法class Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; HashMap<Integer,Integer> map = new HashMap<>(); for(int i =0;i<nums.length;i++){ if(map.containsKey
2021-02-04 20:46:33 447 1
原创 通过gitlabAPI获取git仓库文件内容
gitlab api帮助文档文档入口Gitlab的Api的文档入口为http://{gitlab_host}/help/api/README.md我需要的功能在repository_files下根据文档说明拼接url格式如下所示:GET /projects/:id/repository/files/:file_pathprivate_token=zPexvUyyExiJdsTsbyo-&ref=master需要携带private_token 和 ref分支参数这里直接写在url里这
2020-11-22 13:37:03 3616
原创 剑指offer第二版(leetcode)Java题解(不断更新)
1 数组中的重复数字题目在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。代码class Solution { public int findRepeatNumber(int[] nums) { for(int i =0;i<nums.length;i++){ //如果当前数不是应该在的位置,就放过去,交换对应位
2020-09-15 17:07:59 1516
原创 JWT基本知识和使用
什么是JWTJson web token。一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。为什么用JWTsession认证信息要记录在服务端。通常保存在内存,用户增多开销增大。分布式情况下影响负载均衡和应用扩展。基于token的认证机制类似http协议是无状态的。不需要再服务端保留用户的认证信息。所以应用不需要考虑用户在那一台服务器登录,有利于应用扩展。简要流程用户使用用户名密码请求服务器服务器验证用户信息,通过验证发送给用户一个token客户端存储
2020-08-12 14:42:21 868
原创 java并发编程笔记
1 基础知识线程创建关键的三种方式。实现runnaable的run方法继承thread类并重写run 方法使用futuretask方式(callable)好处:继承的好处是方便传参,set或者构造。runnable只能使用主线程的final变量java不支持多继承,如果继承了thread,就不能继承其他类。futuretask可以拿到返回结果。waitwait调用前要获取对象的监视器锁,synchronized(共享变量),或者调用它的方法加synchronized修饰调用wait只
2020-08-11 00:24:07 250
原创 Spring5学习笔记(九)AOP编程
AOP概念AOP:面向切面编程。以切面为基本单位的程序开发,通过切面间的彼此协同,相互调用,完成程序的构建。切面=切入点+额外功能(动态代理切入点和额外功能的组装就是切面)OOP:面向对象编程。以对象为基本单位的程序开发,通过对象间的彼此协同,相互调用,完成程序的构建POP:面向过程编程。过程就是方法或函数。以过程为基本单位的程序开发,通过过程间的彼此协同,相互调用,完成程序的构建。AOP的概念:本质就是Spring 的动态代理开发,通过代理类为原始类增加额外功能。好处:利于原始类的维护
2020-07-15 19:45:10 167
原创 Spring学习笔记(八)静态代理与动态代理
静态代理设计模式为什么需要静态代理设计模式JavaEE分层开发,Service层是最主要的Service层包含了哪些代码?额外功能书写在Service层中好不好?设计者:不希望有额外功能调用者:有这些额外功能现实中典型案例:租房代理设计模式概念:通过代理类,为原始类增加额外的功能。好处:利于原始类(目标类)的维护目标类/原始类:房东,业务类,核心功能。目标方法/原始方法:原始类目标类中的方法(核心功能)额外功能:附加功能,日志,事务,性能。代理类来负责。代理类开发核心要
2020-07-09 11:08:53 196
原创 spring5学习笔记(七)后置处理Bean
BeanPostProcessor对spring工厂创建的对象进行再加工。调用构造方法(反射)bean注入过程init-method初始化过程beanpostprocessor这个接口 的作用对创建出的对象再进行加工。接口中有两个方法,一个before,一个after。before在构造后,注入之前,通过参数传入这个对象,通过retern返回。after在注入和初始化之后。程序员要实现beanpostprocessor规定接口中的方法:实战中很少处理初始化操作,所以before和a
2020-07-07 18:24:20 232
原创 spring5学习笔记(六)配置文件参数化+自定义类型转换器
配置文件参数化把spring配置文件中需要经常修改的字符串信息转移到衣个更小的配置文件中。经常需要修改的字符串?最有代表性的就是连接相关的参数好处?不是功能层面而是维护层面,经常变化的字符串在配置文件中直接修改不方便。因为几千行配置文件不好找。不利于维护和修改3.转移到一个小的配置文件propertes${}表示要通过运算来完成。配置文件参数化利于spring配置文件的维护和修改。配置文件参数化开发步骤提供一个小的配置文件(properties)找到经常修改的字符串信息,起变量
2020-07-07 14:31:39 305
原创 spring5学习笔记(五)spring对象创建与销毁
控制对象创建次数简单对象配置文件中 scope属性单例(默认)只创建一次对象。创建多个复杂对象factorybean方法创建如果没有用factorybean还是实用scope属性为什么要控制对象的创建次数?根据对象自身的特点决定对象的创建情况。好处:节省不必要的内存浪费。什么样的对象只创建一次?sqlsessionFactorydaoservice什么样的对象每一次都要创建新的?connectionsession对象的生命周期什么是对象的生命周期?一个对象创建
2020-07-06 17:43:58 1242
原创 spring5学习笔笔记(四)反转控制+复杂对象创建
反转控制与依赖注入反转控制(IOC inverse of control)控制:对成员变量赋值的控制权反转控制:把对成员变量赋值的控制权从代码中(反转)转移到Spring工厂和配置文件中完成。好处:解耦合底层实现工厂设计模式从前的控制权在代码里spring的控制权在配置文件和spring工厂依赖注入(DI Dependency Injection)反转控制是一个概念,依赖注入是一种编程方式,需要慢慢体会。注入:通过spring工厂及配置文件,为对象(bean 组件)的成员变量赋
2020-07-06 15:49:55 184
原创 spring学习笔记(三)spring5.x与日志框架整合+注入
整合日志框架为什么与日志框架整合,日志框架可以再控制台中输出spring框架运行过程中的一些重要信息。比如spring创建对象等重要操作。好处:便于了解spring框架的运行过程,利于程序的调试。spring如何整合日志框架spring 1 2 3早期都是与common-logging.jarspring5.x默认整合的日志框架 logback log4j2(和log4j不太一样)spring 5 整合log4j 引入log4jjar包slf4j 日志门面,核心作用就是把默
2020-07-06 14:17:23 351
原创 spring学习笔记(二)API和工厂
环境搭建jar包配置文件:配置文件放置位置没有硬性要求,任意位置配置文件命名:没有硬性要求,建议 applicationcontext.xml思考:没有要求所以要进行配置文件路径 的设置spring核心APIApplicationContext作用:工厂,用于对象的创建好处:解耦合是一个接口类型接口:屏蔽实现的差异非web:ClassPathApplicationContext(main函数或者junit测试)web:XmlApplicationContext重量级资源
2020-07-04 11:30:59 492 2
原创 spring5学习笔记(一)引言
引言1.EJB存在的问题重量级的框架,运行环境苛刻+代码移植性差——spring的产生2.什么是spring轻量级的JavaEE解决方案,整合众多优秀的设计模式轻量级1.对于环境没有额外的要求2.代码移植性好,不需要事先额外的接口JavaEE 分层开发许多框架各自解决某一层的问题spring是一个解决方案,对每一个层次都有自己的解决方案。整合设计模式工厂代理模板策略合理的使用了设计模式3 设计模式广义概念:面向对象设计中,解决特定问题的经典代码狭义概念:GOF4
2020-07-02 12:04:43 249
原创 python爬虫爬取网页解决中文乱码问题
场景使用requests爬取网页+beautifulsoup4解析。出现网页内中文乱码问题解决步骤1. 在网页页面点击右键 查看网页源代码2.查看编码方式<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml
2020-05-21 09:55:46 2419
原创 阿里云服务器docker login报错
描述阿里云服务器上登录habor仓库失败,正常输入用户名密码报错。错误内容Error saving credentials: error storing credentials - err: exit status 1, out: Error spawning command line “dbus-launch --autolaunch=202002201052047327526267265...
2020-04-13 11:10:41 833
原创 滑动窗口+双指针+单调队列+单调栈
双指针的应用先暴力考虑是否有单调性利用单调性优化例 leetcode 167 两数之和II如果暴力,就是两重循环。双指针法 public int[] twoSum(int[] numbers, int target) { int left=0,right=numbers.length-1; int []res = new int[2]; ...
2020-04-02 20:19:53 268
原创 字符串专题leetcode例题
例 leetcode 49. 字母异位词分组排序,hashmap分组, public List<List<String>> groupAnagrams(String[] strs) { ArrayList<List<String>> results = new ArrayList<List<String>&...
2020-03-31 14:28:05 152
原创 树专题leetcode例题
例 leetcode 98 验证二叉搜索树通过限制每个点的可取范围来判断。在经过每个节点时修改范围。这个题测试用例包含Integer.MAX_VALUE所以要注意边界处理。 public boolean isValidBST(TreeNode root) { return helper(root,Long.MIN_VALUE,Long.MAX_VALUE); ...
2020-03-30 17:43:37 119
原创 二分专题leetcode例题
基本思想首先确定答案在一个区间当中L到R。通过中点判断答案在区间的某一边。区间缩小,再次找中点。70%的二分题目和单调性有关系95%的题目 存在一种两段性的性质,左边成立,右边不成立。模板一算mid下取整。while(l<r){ int mid = l+r>>1; if(check(mid)) r=mid; else l=mid+1;}retur...
2020-03-28 21:03:50 212
原创 HashMap总结
内部数据结构JDK1.8:数据+链表红黑树;当链表长度>8且数组大小大于等于64转换为红黑树。当红黑树节点个数小于6转换为链表。数据插入原理1. 开始插入2. if 数组为空3. 初始化数组4. 计算存储位置(n-1)&hash(k),计算数组下标5. if 指定位置存在数据6. if key相等7. 覆盖value返回旧值8. else9. ...
2020-03-27 20:49:13 214
原创 DFS和回溯专题
dfs:状态庞大方案很少。搜索是思想,可以用递归实现也可以用迭代实现。例 leetcode17 电话号码的字母组合递归 //对于每个字母遍历他包含的字符c,当前str=str+c,然后递归的遍历下一个字符。 //传参:全局变量字母表,参数当前str,参数当前索引,参数传入的字符串 //递归出口:index等于digits.length(index可以用temp的长度计算...
2020-03-25 17:53:50 268
原创 几种背包问题总结
01背包问题(物品选不选)完全背包问题(物品无限选)多重背包问题(物品个数有限制且不同)混合背包问题二维费用的背包问题(重量+体积)分组背包问题(先分组,组内互斥)背包问题求方案数一般是价值,这里是方案数求背包问题的方案有依赖的背包问题...
2020-03-23 16:25:38 3453
原创 动态规划专题+leetcode例题
基本概念多阶段决策过程。每步求解的问题是后面阶段求解问题的子问题。每步决策将依赖于以前步骤的决策结果。优化原则:一个最优决策序列的任 何子序列本身一定是相对于子序列的初始和结束状态的最优决策序列考虑通过什么参数界定子问题确定子问题的依赖关系写出递推方程。自底向上计算备忘录:经典例题矩阵链相乘(针对规模界定子问题)投资问题(针对项目个数K和投资金额X界定子问题)背包问题(针对前k个...
2020-03-22 20:52:14 397
原创 归并排序思路+模板+例题
1 思路归并排序采用了经典的分治策略,通过递归求解。要解决的问题就分为 分和治 两个步骤。分的阶段可以看做递归拆分子序列的过程,递归深度为log2N。治的阶段也就是归并的阶段,将拆分开的子序列 相邻的两两合并。时间复杂度O(nlogn)2 模板1.分治合并 public static void mergeSort(int nums[], int first, int last...
2020-03-22 12:01:20 488
原创 Habor镜像仓库的使用
环境Habor仓库:阿里云Ubuntu18(阿里云安装Habor有很多教程,很容易搭建起来)docker:Ubuntu16虚拟机流程1.保证启动habor2.虚拟机进入daemon.json文件增加habor地址(不然会拒绝http访问)vim /etc/docker/daemon.json增加 insecure-registries{ "registry-mirrors":...
2020-03-13 14:46:04 319
原创 使用docker子网搭建hadoop集群
简介由于之前按照网上的教程搭建并不能完全满足需求,经过几天的学习,整理了一套搭建方案。最后的镜像大小1.4G多,使用docker子网,容器重新启动不需要重新配置/etc/hosts文件。0 环境Ubuntu16.04虚拟机1 准备工作下载解压jdk1.8文件夹下载解压hadoop2.8.5文件夹docker pull centos7基础镜像建mydocker文件夹将jdk1....
2020-03-01 13:35:43 350
原创 统计学习方法(六)支持向量机
6 支持向量机SVM是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机、线性支持向量机、非线性支持向量机。6.1 线性可分支持向量机与硬间隔最大化支持向量是训练数据集的样本点中与分离超平面距离最近的样本点的实例。决定分离超平面时只有支持向量起作用,...
2019-07-20 08:10:17 308
原创 统计学习方法(五)Logistic回归与最大熵模型
5 Logistic回归与最大熵模型5.1 logistic回归模型事件的几率是指该事件发生的概率与不发生的概率的比值。在 logistic回归模型中,输出Y的对数几率是输入X的线性函数。通过模型可将线性函数转换为概率,线性函数的值越接近正无穷,概率值越接近1,线性函数的值越接近负无穷,概率值越接近0。可以应用极大似然估计法估计模型参数,从而得到回归模型,得到w的估计。这样,问题就变成了...
2019-07-19 15:24:40 237
原创 统计学习方法第二版学习笔记(四)决策树
3 决策树可以认为是if-then规则的集合,具有可读性,分类速度快。学习时,根据损失函数最小化的原则建立决策树模型。决策树学习通常包括三个步骤:特征选择、决策树生成和决策树的修剪。3.1 决策树模型结点有两种类型:内部结点和叶节点,内部结点表示一个特征,叶节点表示一个类。用决策树分类,从根节点开始,对某一个特征进行测试,依据结果将实例分配到其子节点,每一个子节点对应着该特征的一个取值...
2019-07-19 08:24:04 151
原创 统计学习方法第二版学习笔记(二)K近邻算法
2 K近邻算法K近邻算法对于新的实例,根据K个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,K近邻算法不具有显示的学习过程。K值的选择,距离度量及分类决策规则是三个基本要素。2.1 K近邻算法内容给定一个数据集,对新的输入实例,在训练集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把输入实例分为这个类。K=1时是特殊情况,称为最邻近法。2.2 K值的选择...
2019-07-17 21:00:02 215
原创 统计学习方法第二版学习笔记(一)感知机
1 感知机感知机是二类分类的线性分类模型。感知机学习旨在求出将训练数据进行线性化分的分离超平面。1.1 感知机模型感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型。1.2 感知机学习策略线性可分数据集:存在某个超平面S能够将数据集的正负实例点完全正确地划分开。假设训练数据集是线性可分的,感知机学习的目标就是求得一个能够将训练集正负实例...
2019-07-17 17:21:42 252
原创 计算机语言学笔记(九)特征结构与合一运算
9 特征结构与合一运算上下文无关文法上下文无关文法为句法知识的形式化提供了一个有效的工具。同时,对于上下文无关文法,存在像Earley算法、广义LR算法等一系列有效的算法,进行句法分析。然而,利用上下文无关文法描写自然语言,不但可以生成自然语言中的合法句子,也可以产生大量自然语言中不合法的句子,存在所谓的过度生成问题。一致性问题:限定词和名词时间的单复数一致。主语和谓语在人称和数方面保...
2019-07-14 19:58:16 517 2
原创 计算机语言学笔记(八)基于上下文无关文法的句法分析
8 基于上下文无关文法的句法分析句法分析导引以词为单位的分析技术:词语切分、形态分析、词类标注。以句为单位的分析技术:句法分析。以篇为单位的分析技术:指代分析。句法分析关心句子的组成规律。句子成分分析句子是词的线性序列,但词和词之间结合的松紧程度并不一样。句子在构造上具有层次性,较小的成分还可以进一步组成较大的成分。不同性质的成分可以有不同的句法功能和分布,可以区分成不同的类型。...
2019-07-14 15:09:56 1507 1
原创 计算机语言学笔记(七)有限状态技术和形态分析
7 有限状态技术和形态分析7.1 形态分析简介形态学研究屈折语中词的构成规则。英语、德语等时屈折语。汉语是孤立语。日语是黏着语。词通常是语素组成,语素是语言中最小的意义单位。英语中的语素语素可以分成两大类:词干(提供词的主要意义)和词缀(提供词的附加意义,修改词干义或改变词的语法功能)语素构成词的方法:1.屈折变化:词干+词缀形成的词通常与原词干同属一类,常用来使词具备数、时态...
2019-07-14 09:22:31 534
原创 计算机语言学笔记(六)词类自动标注
6 词类自动标注6.1 汉语中词的分类汉语中词分类的依据主要是词的分布特征,或者说主要依据词的语法功能。词的语法功能主要指词在句法结构里所能占据的语法位置。(充当句法成分的能力和组合成短语的能力)名词通常表示事物的名称、动词通常表示动作和行为、形容词表示事物的性质和状态。实词和虚词:1.实词可以充当主语、谓语和宾语。虚词则不可以。2.实词有实在的意义,表示事物、动作、行为、变化、性质...
2019-07-13 19:47:28 524
原创 计算机语言学笔记(五)隐马尔科夫模型
4 隐马尔可夫模型4.1 模型一阶马尔科夫模型可以描述为一个二元组( S, A ) ,S是状态的集合,而A是所有状态转移概率组成的一个n行n列的矩阵,其中每一个元素aij为从状态i转移到状态j的概率 。在坛子与小球问题中,如果给定一个观察序列(不同颜色的小球序列),不能直接确定状态转换序列(坛子的序列),因为状态转移过程被隐藏起来了。所以这类随机过程被称为隐马尔科夫过程。隐马尔可夫过程是一...
2019-07-12 21:25:33 1052
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人