自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yangxiao的博客

正在上路的小白

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

原创 算法分析_左右字符串交换

左右字符串交换题目描述给定一个字符串str和长度leftsize,请把str左侧leftsize的部分和右部分做整体交换。要求额外空间复杂度O(1)O(1)O(1)。进阶:如果交换代价很昂贵,有没有更好一些方法。示例1输入:abcdefg leftsize=3返回值:defgabc解题思路一左边字符串逆序右边字符串逆序字符串整体逆序原字符串:abcdefg左边字符串逆序:cbadefg右边字符串逆序:cbagfed整体逆序:defgabc代码如下://解法一:三次逆序

2021-12-13 10:13:31 638

原创 算法分析_选择、插入、快速排序算法(对数器实现)

排序算法问题描述给定一个随机数组,将它变成一个有序数组示例1输入:[5,2,3,1,4]返回值:[1,2,3,4,5]示例2输入:[5,1,6,2,5]返回值:[1,2,5,5,6]选择排序算法解题思路遍历一次数组,找出一个最大或最小值,并确定它的位置,当数组长度为N时,我们遍历N-1次数组就能得到排好序的该数组,所以该算法的时间复杂度为O(n2)O(n^2)O(n2),代码实现如下:public static void selectSort(int[] arr){ fo

2021-12-08 13:41:33 480

原创 算法分析_超级水王问题

超级水王问题问题描述在一个数组中,某一项出现的次数大于数组长度的一半,那么这个数就称为水王数。当评论区一般以上的评论都来自某个用户,则表示这个人在灌水。要求时间复杂度为O(n)O(n)O(n)空间复杂度为O(1)O(1)O(1)解题思路我们先抛开要求不谈,最容易想到的就是遍历一遍数组,用Map这种数据结构记录下每个数出现的次数,然后遍历一遍Map集合,如果有值大于数组长度一般的键,则说明存在水王数,并且该键就是对应水王数。//普通解法,通过一个Map集合实现,时间复杂度和空间复杂度

2021-12-08 09:20:10 328

原创 JVM垃圾回收器

垃圾回收器Serial回收器单线程执行垃圾收集,收集过程中会有较长的STW(Stop The World),在GC(minor gc和full gc)时工作线程不能工作。虽然STW较长,但简单、直接。新生代采用复制算法,老年代采用标记整理算法。Parallel收集器相比于Serial收集器,提升在于使用多线程来回收垃圾,会充分利用CPU,但是仍然有STW,这是jdk8默认使用的新生代和老年代的垃圾收集器。新生代采用复制算法,老年代采用标记-整理算法。ParNew收集器工作原理和Parall

2021-12-05 15:29:29 647

原创 JVM垃圾回收机制

垃圾回收机制对象称为垃圾的判断依据在堆空间和元空间中,GC这条守护线程会对这些空间开展垃圾回收工作,那么GC如何判断这些空间的对象是否是垃圾,有两种算法:引用计数法对象被引用,则计数器+1,如果计数器是0,那么对象将被判定为垃圾,于是被回收。但是这种算法没有解决循环依赖的对象,因此JVM目前主流的厂商没有采用这种算法。可达性分析算法 GC Roots根gc roots根节点:在对象的引用中,会有那么几种对象的变量:来自线程栈中局部变量表中的变量,静态变量,本地方法栈中的变量,这些变量被称

2021-12-05 15:19:47 541

原创 JVM运行时数据区及内存分配策略

运行时数据区运行时数据区也就是JVM运行时产生的数据存放的区域,这块区域就是JVM的内存区域,也称为JVM的内存模型–JMMJMM分成了以下几部分:堆空间(线程共享):存放new出来的对象元空间(线程共享):存放类元信息、类的模板、常量池、静态部分。线程栈(线程独享):存放方法的栈帧本地方法区(线程独享):本地方法产生的数据程序计数器(线程独享):配合执行引擎来执行指令内存分配策略为对象分配内存,具体的分配策略如下:Bump the pointer(指针碰撞):如果内存空间是绝对

2021-12-05 14:52:56 169

原创 JVM双亲委派机制

双亲委派机制介绍当类加载器进行加载类的时候,类加载器需要向上委托给上一级的类加载器,上一级继续向上委托,直到启动类加载器。启动类加载器去核心类库中找,如果没有找到该类,则继续向下委派,由下一级扩展类去扩展类库中找,如果也没有继续向下委派,直到找不到,报类未找到异常。为什么要有双亲委派机制防止核心类库中的类被随意篡改防止类的重复加载全盘委托机制当一个类被当前的ClassLoader加载时,该类中的其他类也会被当前ClassLoader加载,除非指明由其他类加载器加载。如何打破双亲委派机制

2021-12-05 14:36:17 459

原创 JVM组成及类加载过程

JVM组成类加载系统:负责完成类的加载,将字节码文件加载进内存(方法区)运行时数据区:在运行java程序时产生的数据会保存在运行时数据区执行引擎:执行具体的指令(代码)一个类被加载进JVM要经历那几个过程?加载:通过io流的方式把字节码文件读取到jvm(方法区)中校验:通过校验字节码文件的头四位的16进制是否是cafebabe准备:为类中的静态部分开辟空间并赋初始化值解析:将符号引用转换成直接引用(将调用方法时的字符表现形式,转换成方法对应的地址)。——静态链接初始化:为类中的静态部分

2021-12-05 13:55:20 753 1

原创 算法_反转链表

反转链表注:题目来自于牛客网描述给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。数据范围: n ≤ 1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:示例1输入:{1,2,3}返回值:{3,2,1}示例2输入:{}返回值:{}说明:空链表则输出空 解题思路遍历链表同时,如果知

2021-11-03 17:19:25 200

原创 JDK1.6和JDK1.7关于String.intern()方法差异详解

JDK1.6和JDK1.7关于String.intern()方法差异详解最近看《深入理解Java虚拟机》时,在2.4.3 方法区和运行时常量池溢出这一章节看到了String.intern(),当时还没太明白,网上查一些资料,之后再仔细揣摩书本时才算是有了一些自己的理解,深知笔记对于理解知识的重要性,于是写下这篇博客,也算是自己成长路上的一个记录。前置知识因为使用的是《深入理解Java虚拟机》书中的例子,里面涉及对象创建,因此准备先理清Java创建字符串对象的过程。public class Hello

2021-03-21 17:51:24 357

原创 二分类和多分类交叉熵函数区别详解

二分类和多分类交叉熵函数区别详解写在前面查了下百度,交叉熵,是度量两个分布间差异的概念。而在我们神经网络中,两个分布也就是y的真实值分布和预测值分布。当两个分布越接近时,其交叉熵值也就越小。根据上面知识,也就转化为我们需要解决让预测值和真实值尽可能接近的问题,而这正与概率论数理统计中的最大似然分布一脉相承,进而目标转化为确定值的分布和求解最大似然估计问题。二分类问题表示分类任务中有两个类别,比如我们想判断一张图片是不是猫。也就是说,训练一个分类器,输入一张图片,用特征向量x表示,输出是不是猫用y=

2020-12-28 18:44:52 4471 3

原创 回溯法和分支限界区别

回溯法和分支限界法区别结论方法解空间搜索方式存储结点的数据结构结点存储性质常用应用回溯法深度优先栈活结点的所有可行结点被遍历后才能出栈找出满足条件的所有解分支限界法广度优先队列每个结点只有一次成为活结点机会找出满足条件的一个解或者特定意义的最优解举例说明(0-1背包)相同点两者都是在树状的解空间上求解,回溯法找出满足条件的所有解,通过约束函数和限界函数可以找到问题的最优解,同时分支限界法主要应用于找满足条件的一个解或者最优解。区别搜索策略

2020-11-30 16:27:31 12597 2

原创 单源最短路径中Dijkstra算法正确性

单源最短路径Dijkstra算法正确性注:要证明算法的正确性,也即证明下述命题的正确性:命题:在单源最短路径中,Dijkstra算法通过贪心策略取得的解是整体最优解。也即局部最优解为整体最优解。贪心选择性质从源v到u,我们选择在当前S内,从源v到点u的最短距离dist[u](局部最优解)若想推翻命题,那么我们需要找到另外一条路径,使得从源v到u的距离小于dist[u]。其表达目的:在单源最短路径中,局部最优解不能作为整体最优解。假设存在这样的一条路径,从S先到x,然后徘徊于S内外(目的:

2020-11-28 10:42:51 1464 3

原创 贪心算法与动态规划算法区别

贪心算法与动态规划算法区别两者所解决问题性质动态规划最优子结构重叠子问题贪心算法最优子结构贪心选择性质相同点动态规划和贪心算法都满足最优子结构性质。最优子结构原问题的最优解解一定包括子问题的最优解证明(反证法)假设:原问题的最优解不包括子问题的最优解原问题可分为Q1和Q2两个子问题,他们的对应的可行解和最优解分别为a1、s1;a2、s2可知,原问题的解w1=s1+a2w_1=s_1+a_2w1​=s1​+a2​,又因为w2=s1+s2w_2=s_1+s_2w2​=s1​

2020-11-24 20:57:30 857

原创 二分搜索技术时间复杂度分析

二分搜索技术基本思想将n个元素分成个数大致相等的两半,去a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则在数组的a左半部继续搜索x,如果x>a[n/2],则在数组a的右半部搜索。注:因为我们所求的是时间复杂度,所以只需考虑最坏情况即可。二分搜索技术的时间复杂度分析注:我们进行二分搜索的前提是数组a是有序的,否则二分查找结果是不准确的。解:令k为查找的次数,s为查找失败时,剩余数组的长度。当k=1时,s=n/2k=2时,s=n/22而当

2020-11-21 18:57:01 2402

原创 大整数的乘法(递归方程+复杂度分析)

递归方程+复杂度分析大整数的乘法背景介绍设X和Y都是n位二进制整数,现在需要计算它们的乘积XY,如果使用小学的思路设计算法,那么需要n2次乘法和n-1次加法,效率太低,那么能够设计出一种算法能够提高效率?方案一将n位二进制整数X和Y都分为两段,每段的长度为n/2,如下图所示此时,X=A2n/2+BX=A2^{n/2}+BX=A2n/2+B,Y=C2n/2+DY=C2^{n/2}+DY=C2n/2+D,XY的乘积就为:XY=(A2n/2+B)(C2n/2+D)=AC2n+(AD+BC)2n/2

2020-11-21 16:54:00 4030 3

原创 梯度消失与梯度爆炸过程分析

梯度消失与梯度爆炸过程分析定义百度百科:在神经网络中,前面的隐藏层的学习速率远低于后面隐藏层的学习速率。个人理解:所求得当前隐藏层参数的梯度太小,以至于我们认为几乎消失,导致参数的学习程度基本为零的情况。W1=W1+ΔWΔW=α∂Loss∂wα为学习率W_1=W_1+\Delta{W}\\\Delta{W}=\alpha \frac{\partial{Loss}}{\partial{w}}\\\alpha 为学习率W1​=W1​+ΔWΔW=α∂w∂Loss​α为学习率举例注:浅层网络几乎不会

2020-11-19 20:45:21 188

原创 一元线性回归总结

一元线性回归定义一元线性回归是只有一个自变量(自变量x和因变量y)线性相关的方法。回归最早源于遗传学,由高尔顿引入:观测1078对夫妇,研究父母身高(平均身高x)与子女身高(成年的身高)的遗传问题时,得到如下回归方程:y^=33.73+0.516x\hat{y}=33.73+0.516xy^​=33.73+0.516x表明父母平均身高每增加一个单位,成年儿子增加0.516个单位,反之亦然。即子代的平均高度向中心回归了(33.73为中心值),也就是无限次迭代之后也不会出现为0的情况,而是33

2020-11-17 13:08:53 3791

原创 假设检验中的两类错误

假设检验中的两类错误H0成立,而检验结果不成立(弃真)α=p(x∈V∣H0)\alpha=p(x∈V|H_0)α=p(x∈V∣H0​)H0不成立,而检验结果成立(取伪)β=p(x∉V∣H1)\beta = p(x∉V|H_1)β=p(x∈/​V∣H1​)例3.12:设总体X~N(μ,σ02\mu,\sigma_0^2μ,σ02​),σ02\sigma_0^2σ02​已知,样本容量为n,求对问题:​ H0:μ=μ0\mu=\mu_0μ=μ0​; H1:μ=μ1>μ0\mu=

2020-10-27 13:27:18 890

原创 非正态总体参数检验

非正态总体参数检验本质将非正态总体分布在大样本的前提下,通过大数定理转化为正态分布/卡方分布,然后再利用上述表格构造参数并进行检验的一个过程。非正态总体的均值检验(大样本前提)当D(X)=σ2\sigma^2σ2已知时:(课本P87)u=Xˉ−μ0σ/nu=\frac{\bar X-\mu_0}{\sigma/\sqrt{n}}u=σ/n​Xˉ−μ0​​当D(X)=σ2\sigma^2σ2未知时,则使用它的无偏估计nS2n−1\frac{nS^2}{n-1}n−1nS2​或S∗2S_*^2S

2020-10-27 13:26:29 1644

原创 正态总体下的假设检验

假设检验目的用于判断样本与样本,样本与总体的差异是由抽样误差引起还是本质差别造成的统计推断方法。显著性检验是假设检验中最常用的方法之一。原理:先对总体的特征作出某种假设,然后通过抽样研究的统计推理,对此推理是接收还是拒绝作出判断。参数检验(已知分布)步骤列出假设H0、H1根据上述假设,可写出其对应的分布样本值带入分布,计算出对应的值判断值是否在当前显著性水平的接受域若在接受域,则接受当前分布的假设,否则拒绝该假设选择另外一个假设。非参数检验(未知分布)在一次实验中几乎不可能发生

2020-10-27 10:45:40 1487

原创 非正态总体区间估计

非正态总体区间估计前期摘要之前已经写过关于正态总体下区间估计的计算方式,其中包括单正态总体和双正态总体两种,本篇文章主要围绕非正态总体下如何进行区间估计。上期补充单侧置信区间定义总体x的分布函数为F(x;θ),其中θ是未知参数(待估量),X1,X2,K,Xn为总体X的样本,给定概率α(0<α<1),如果存在统计量θ1=(X1,X2,K,Xn),能够满足P{θ>θ1}=1-α,则称(θ1, +∞)为θ的置信水平为1-α的单侧置信区间。θ1为置信下界,上界情况同理!。计算计算过

2020-10-13 11:24:54 2357

原创 knn(最近邻节点)模型

knn(k最近邻节点)本质:找到与输入值距离最接近的k个节点,并以此为基础作出预测。解决问题分类问题找到最接近的前k个结点。找到占比最大的类,并以此作为预测值输出。例:plinko回归问题找到最接近的k个节点。求出对应k节点对应目标值的平均值,并以此作为函数输出。项目代码项目代码链接思路knn模型对简单分类问题的python简单实现1、获取历史数据(特征值feature,目标值label)2、输入值3、计算输入值与历史数据的距离4、取前k个项,并且将其中出

2020-10-12 15:31:31 602

原创 冒泡排序(Python实现)

#定义排序数组arr = [5,8,1,3,6,2,4,7]#元素移动次数count = 0def BubbleSort(arr,count): for i in range(len(arr)): for j in range(0,len(arr)-i - 1): #这里-1是为了防止最后一次Index out of range if arr[j] > arr[j+1]: #冒泡的关键,将逆序交换顺序 .

2020-10-08 15:28:39 153

原创 插入排序算法(Python实现)

#定义排序数组arr = [5,8,1,3,6,2,4,7]#元素移动次数count = 0def insertSort(arr,count): #插入排序过程,从第二个开始插入 for i in range(1,len(arr)): #因为需要向前遍历,因而使用while操作 j = i - 1 #插入值,因为排序过程位置可能被覆盖 value = arr[i] while j >= 0:

2020-10-08 15:01:54 131

原创 区间估计

区间估计百科定义:在点估计的基础上,给出总体参数估计的一个范围,通常由样本统计量加减估计误差。区间估计中,可以根据样本统计量的抽样分布,对样本统计量与总体参数的接近程度给出一个概率度量个人理解:给出总体参数在当前给定区间的概率。解释:点估计未知参数θ的估计量θ^是一个随机变量,随着样本选取的不同,得到的值也不同的,所以在此基础上,我们就希望能够找到一个区间,使得总体参数落到这个区间上的概率尽可能大(这个概率其实也就是可信度(置信水平)),而这个区间就是区间估计的解。目标:区间越小越好,概率越大

2020-10-07 20:49:47 3809

原创 豆瓣电影top250爬虫概况

豆瓣爬虫概况总结目的爬取豆瓣top250电影的详细信息:电影名称电影外文名称电影详情电影评分电影评价数目导演/主演概述(其中的一句话描述)项目代码工具python3.6.6urllib库(python内置的http请求库)re库(正则表达式,进行网页信息的筛选)bs4库(BeautifulSoup,将获取的网页内容转化成document树,方便遍历取数据)xlwt库(操作Excel表格,爬取数据进行持久化存储)sqllit3库(sqllit数据库,对数据持久化存储的第二

2020-10-07 16:02:15 769

原创 Pycharm项目上传至Gitee/Github详细步骤

Pycharm与Git安装Gitgit官方下载Git配置用户名邮箱设置用户名git config --global user.name "username"设置邮箱git config --global user.email [email protected]查看用户名和邮箱git config user.namegit config user.email查看其他配置信息(git设置列表)git config --listpycharm下载插件目的:减少记commit和push

2020-10-07 15:25:39 6306 2

原创 mysql安装配置

mysql安装配置去官网下载安装包mysql官网下载地址将压缩包解压缩到安装目录创建初始化配置文件创建名为my.ini的配置文件,存放下列信息[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=D:\Environment\mysql\mysql-8.0.21-winx64# 设置mysql数据库的数据的存放目录datadir=D:\Environment\mysql\mysql-8.0.21-winx64\data# 允许最大连接数

2020-10-06 17:09:28 100 2

原创 Python中time库的三种时间格式

time标准库time的三种表示格式时间戳time.time()结构化时间对象time.localtime()时间字符串time.ctime()time.sleep()和Thread里面的Sleep比较像,睡眠等待。三种形式的转换时间戳——>结构化时间对象#UTC:格林威治标准时间,比北京时间早八个小时#file_time是文件的三个时间之一,不填参数默认是time.time(),也就是格林威治标准时间time.gmtime(file_time) #

2020-10-04 11:41:30 1995

原创 六大常用分布的矩估计和最大似然估计推导过程

矩估计和极大似然估计矩估计基于辛钦大数定律:当样本的容量足够大时,样本k阶距(A_k)收敛域总体k阶距(a_k)样本的平均值去估计总体的均值(期望)期望和均值数学期望常称为“均值”,即“随机变量取值的平均值”之意,这个平均是以概率为权的平均,不是通常意义上的(总数)/(个数),数学期望由随机变量的分布完全决定。Xˉ=1n∑i=1nxi\bar{X}=\frac{1}{n}\sum_{i=1}^nx_iXˉ=n1​i=1∑n​xi​(1)式,其实是平均值(期望是均值),对其求期望其实就是一个

2020-09-28 14:00:47 48225 9

原创 关于移码在阶码的运算中使用双符号位的运算表示

移码:移码(又叫增码)是符号位取反的补码,一般用指数的移码减去1来做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0。移码的双符号表示:当结果的最高符号位SF1=1时表示结果溢出,SF1=0时表示结果正确。SF1SF2=10时,结果正溢出;SF1SF2=11时,结果负溢出。SF1SF2=01时,结果为正;SF1SF2=00时,结果为负;由于移码运算用于浮点数的...

2019-01-16 18:48:00 10397 5

原创 白话——海明校验码及编码过程

学习组原了解到海明校验码,刚开始实在是看不懂,脑子一团浆糊,然后还做到了一道错题更是惨的一批,现在还算是有了一个比较清晰的了解。想着做一个总结过程,希望像我这样的小白能免幸遇难。本文适合对海明校验码不清楚的小白,大神请绕路。有不全面的地方,麻烦大家指正,毕竟我也还只是个大学生,下面直接进入正题。相信大家肯定之前也肯定看了很多相关知识点,这里不再重复了,就直接上题正面刚了。例:计算原始信息位...

2019-01-15 10:20:35 5257 5

原创 RR、时间片轮转算法

#include&lt;iostream&gt;#include&lt;string&gt;#include&lt;math.h&gt;using namespace std;struct RR{    string name;       //进程名    string status;     //进程状态,判断是否完成    int arrive_time;   //到达时间。...

2018-12-06 20:56:40 3095 2

原创 C++、高响应比优先算法

#include&lt;iostream&gt;#include"string"using namespace std;struct JOB {    string name;   //作业名字    int length;    //作业长度,可以用来判断作业是否合法(小于0时,为非法进程)    int printer;   //执行作业需要的打印机数目    int tape...

2018-12-06 20:55:38 6149

原创 C++、最佳适应算法实现

#include&lt;iostream&gt;#include&lt;string&gt;using namespace std;#define max_free 10    //空闲区最大个数#define max_job 10   //已分分区最大个数struct table {    float address; //起始地址    float length;  //分区...

2018-12-06 20:54:18 2886

原创 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。 输出格式:在一行内输出n的各位数字之和

// ConsoleApplication95.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#includeusing namespace std;void main(){int n, i, j = 10, m = 0;string st[100];cout cin >> n;while

2017-10-28 10:49:40 5616

原创 利用栈对数据进行逆置操作

#include "stdafx.h"#includeusing namespace std;class stack                     //利用栈将元素逆置  {private:int msize;    //栈中可存放的最多的元素个数int top;      //栈顶位置int *st;      //存放栈元素的数组public:

2017-10-22 14:37:34 5327 1

原创 一元多项式方程求导的方法

includeusing namesapce std;int main() { int a[1001],b[1001],i,j; //先设定两个数组,分别储存系数和指数 for(i=0;i<1001;i++) //利用for循环,进行系数及其指数的输入 { scanf(“%d %d”,&a[i],&b[i]); //了

2017-10-10 22:44:13 1868

原创 课本简单程序执行

//线性表分为顺序表(定长),链表(不定长,可以申请新的储存空间)includeusing namespace std; tempalte //假定顺序表的元素类型为T class arrList:public List //顺序表,向量 { private: //线性表的取值类型和取值空间 T*aList; //私有变量,储存顺

2017-10-10 20:16:10 305

空空如也

空空如也

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

TA关注的人

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