自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于Python的话者识别系统

基于Python的话者识别系统一:写在开头语言是人类最重要的交流工具,它方便自然,准确高效。随着社会的不断发展,各种各样的机器参与了人类的生产活动和社会活动,因此人对机器的操纵就越来越重要。人们发现,人和机器之间最好的通信方式就是语音,而语音就是语言的声学表现形式。自己在网络上浏览过很多关于语音识别或者话者识别的博文,但无外乎一下两种类型:1.难度很高,学术性很强,动不动就是隐形马尔科夫技...

2019-10-08 18:21:04 7949 65

原创 HDFS的优点和缺点

优点1.高容错性:如果有datanode上副本丢失,可以自动恢复。2.构建成本低,可以放在廉价的机器上。3.高效性:hadoop可以在节点之间转移数据,可以把整个集群资源调动起来,保证各个节点的动态平衡,因此处理速度非常快。4.可靠性:hadoop是按位存储和处理数据的,位是数据存储的最基本单元5.良好的可移植性:hadoop底层是java,java具有这种特点。缺点1.不适合做低延迟数据访问2.不适合大量的小文件存储3.不适合并发写入...

2020-08-09 22:41:04 1994

原创 模块化的好处

模块化的意义就在于将一个复杂的系统分解为一个个简要的小部分,而且可以使每个部分都是独立的,降低代码的耦合度,还可以封装细节,向外暴露接口,模块化还可以代码重用,便于日后维护。...

2020-03-04 22:27:53 745

原创 Concurrent并发包

1.Executor为什么使用线程池:降低资源消耗:通过重用已经创建的线程来降低线程创建和销毁的消耗提高响应速度:任务到达时不需要等待线程创建就可以立即执行提高线程的可管理性:线程池可以统一管理、分配、调优和监控说说几种常见的线程池及使用场景1.newFixedThreadPool(固定大小的线程池)2.newSingleThreadExecutor(单线程线程池)3.newCac...

2020-03-02 15:15:27 216

原创 JVM内存管理

什么是java内存管理?首先jvm的运行时数据区域可以划分为堆,栈,方法区,程序计数器。栈又分为虚拟机栈和本地方法栈。虚拟机栈中存放栈帧,每一个栈帧中存有局部变量表,操作数栈,动态连接等信息,java方法从开始到结束代表着栈帧的一次入栈出栈操作。本地方法栈是为native方法服务的。程序计数器:当前线程执行字节码时的行号指示器。堆:用来存放数组和实例化的对象。方法区:用来存储类信息,fi...

2020-02-18 13:29:48 128

原创 Mybatis映射器

映射器是最复杂最重要的组件,在映射器中可以配置各种参数,sql语句,存储过程,缓存,级联等复杂内容,并且通过简易的映射规则映射到指定的POJO上去,映射器能够消除JDBC的底层代码。映射器的配置元素select:可以自定义参数,返回结果集等。insert:执行后返回一个整数。update:同上delete:同上sql: 允许定义一部分sql,然后在各个地方引用他,例如一张表列名,一次...

2020-02-13 13:57:36 134

原创 Mybatis组件的生命周期

SqlSessionFactoryBuilder它的作用只创建SQLsessionFactory对象,所以在它存在于创建工厂的方法中。创建结束后销毁。SqlSessionFactory它的作用是创建Sqlsession连接,因为Mybatis的本质就是java对数据可以的操作,所以它存在于整个Mybatis应用中。一旦创建就要长时间保存,直到不再使用mybatis应用。所以说他的生命周期等同...

2020-02-11 22:47:01 177

原创 MyBatis核心组件

SqlSessionFactoryBuilder它会根据配置或者代码来生成SqlSessionFactory,采用分布构建的Builder模式,他提供了一个Configuation类作为引导,具体的分步在该类中完成。mybatis会读取配置文件,通过Configuation类对象构建整个Mybatis的上下文。SqlSessionFactory依靠它来生成sqlsession,SqlSess...

2020-02-11 22:28:22 108

原创 声明式事务的约定流程

@Transactional注解对于声明式事务使用此注解进行标注的,这个注解可以标注在类上和方法上,标注在类上时,表示所有公共非静态类都开启事务功能。该注解上还可以配置十种属性,但是常用的5种分别是:1.value:定义事务管理器,他是ioc容器里的一个bean id,这个bean需要实现接口Platform TransactionManager。2.isolation:隔离级别,这是数据...

2020-02-06 23:03:44 164

原创 Sqoop的基本使用

2019-11-24 12:34:50 133

原创 Shuffle

Reduce的工作原理

2019-11-18 12:08:24 123

原创 Spark归纳

什么是RDD?RDD就是带有分区的集合类型,特点是可以并行操作,并且具有容错性。

2019-11-17 11:14:46 125

原创 Hbase学习归纳

Hbase是什么?列存储和行存储行存储为连续写或顺序写列数据库在写入数据时效率不高,所以引出了列族的概念来弥补这个短板,列族数不宜过多。并且把相关的,一起查询的列放在一个列族里。当然面向列存储还有其他优势。Hbase基本指令使用start-hbase.sh命令开启Hbase服务端使用jps命令查看进程:必须有HReginServer和HMaster两个进程才能继续操作。...

2019-11-14 22:04:06 130

原创 Hive笔记归纳

Hive是基于hadoop的数据仓库工具,可以将类SQL语句转换成MR任务运行,它提供了一系列工具用来提取,转化,加载,这是一种可以存储,查询。分析存储在hadoop上大规模数据的机制。一种离线的大数据分析工具数据仓库的特征:1.数据仓库一般存储的历史数据2.数据库是为捕获数据设计的,数据仓库是为分析数据设计的3.数据仓库大多数情况下是读数据...

2019-11-14 12:03:53 297

原创 HDFS

HDFS 中的 block 默认保存3份,过多会导致磁盘利用率越低,通过RPC心跳机制来检测datanode状态。1.namenode会将元数据信息存在namenode内存中,目的是供用户快速查询,此外,因为元数据非常重要,所以还会持久化到磁盘上,在磁盘哪个位置取决于在core-site.xml文件中dfs.tmp.dir属性来决定的,如果不配置,默认是/tmp,所以要配置。2.那么namen...

2019-11-10 10:25:32 286

原创 面试中对于IOC和AOP的理解

IOCioc意思是控制反转,它是一种思想而不是一种实现,他为什么叫控制反转呢,在传统代码中,我们某些类内部主动创建对象,从而导致类与类之间高耦合,使用IOC将类与类的依赖关系写在配置文件中,程序在运行时根据配置文件动态加载依赖的类,由IOC容器去实例化对象,这些在IOC容器中的对象叫做Bean,然后由IOC容器控制这些Bean的创建,销毁,降低类与类之间的耦合度。AOP这种在运行时,动态地将...

2019-11-07 18:45:39 787

原创 CAS的三大问题和解决方式

ABA问题:CAS在修改值时要检查值有没有发生变化,如果一个值原来是A变为B又变为A,CAS就会任务值没有变化,但是实际上变化了。解决方式其中一种是添加版本号,每次更新版本号加一,就可以区分有没有变化。第二种是从jdk1.5开始,jdk的Atomic包里就提供了一个类AtomicStampedReference来解决ABA问题,这个类中的compareAndSet方法的作用就是首先检查当前引用是...

2019-11-06 13:43:12 1220

原创 谈谈你对JVM的理解

首先JVM由类装载器,运行时数据区域,执行引擎,本地接口库和本地方法库组成。类装载器这里解释一下类加载机制,一般分为三个部分,加载,连接,初始化。其中连接又可分为验证,准备,解析三个部分。加载阶段主要查找加载类的二进制文件。验证阶段主要确保文件的正确性,准备阶段主要为静态变量分配内存,初始化默认值,解析阶段主要将符号引用转换为直接引用。初始化阶段为类的静态引用赋予正确的初始值类加载器可以...

2019-11-06 13:02:25 1183

原创 什么是事务?事务的隔离性级别?

事务Mysql中,事务就是一组原子性的sql查询,或者说是一个独立的工作单元。事务有四个特性,原子性,一致性,隔离性,持久性原子性指对一个事务来说,要么全部提交成功,要么全部回滚失败,不存在只执行其中的一部分。一致性指:一个事务在执行之前和执行之后,数据库都必须处于一致性状态,也就是说,事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态。隔离性:隔离性最常见在并发环境下,...

2019-11-06 10:22:04 2110

原创 进程间通信方式和线程间通信方式

进程间通信方式:1.管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。缺点:速度慢,容量有限,只有父子进程能通讯2.有名管道 (namedpipe) :有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。但速度慢。3.信号量(semophore ) :信号量是一个计数器,可以用来控制多...

2019-11-03 13:09:13 601

原创 CPU缓存以及volatile不保证原子性的原因

缓存的出现是为了解决CPU直接访问内存的效率低下问题,程序运行时会将数据从内存拷一份到cpu缓存,cpu运算结束了再通过缓存刷新到内存,提高CPU的整体吞吐能力。...

2019-11-01 13:11:14 171

原创 为何HashMap的初始大小为16,负载因子为0.75

通过看上面的代码我们可以知道这两个值主要影响的threshold的大小,这个值的数值是当前桶数组需不需要扩容的边界大小,原因是这样的,如果桶初始化桶数组设置太大,就会浪费内存空间,16是一个折中的大小,既不会像1,2,3那样放几个元素就扩容,也不会像几千几万那样可以只会利用一点点空间从而造成大量的浪费。加载因子设置为0.75而不是1,是因为设置过大,桶中键值对碰撞的几率就会越大,同一个桶位置可...

2019-10-31 00:04:28 782

原创 红黑树

在解释其他树之前先说一下什么是二叉树,二叉树是树的一种特殊形式,每个节点最多有两个子节点,但是随着节点越多,可能出现单支过长的问题,所以才有了平衡二叉树,所谓的平衡指的是任意节点的左右子树节点高度不超过1。比如AVL 树,它严格符合我刚讲到的平衡二叉查找树的定义,即任何节点的左右子树高度相差不超过 1,是一种高度平衡的二叉查找树。红黑树是一种不严格的平衡查找树,它不严格是因为它不是严格控制左、...

2019-10-30 23:56:29 104

原创 负载均衡的策略

轮询默认方式。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,自动剔除。使用于后台机器性能一致的情况。加权轮询指定轮询几率,权重和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大ip_hash每个请求按照访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。url_hash按访问url的hash...

2019-10-30 23:13:31 116

原创 JVM如何判断两个类相同?

①类的全限定名是否相等②类加载器是否相等即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。比如一个 Java 类 com.example.Sample,编译之后生成了字节代码文件 Sample.class。两个不同的类加载器 ClassLoaderA和 ClassLoaderB分别读取了这个 Sample.class文件,并定义出两个 java.lang.Class类的实例...

2019-10-30 23:07:47 901

原创 Arraylist和hashmap扩容

1.List实际上是接口,他的具体实现有ArraylList,LinkedList,Vector,Vector是线程安全的,ArrayList是线程不安全的。list允许有重复的元素2.Set:他和list都实现了Collection接口,set不允许有重复的元素,如果多次插入则显示一个。他的主要实现类HashSet、LinkedHashSet。HashSet底层是由 Hash Map 实现,...

2019-10-27 16:09:31 1027

原创 synchronized和ReentrantLock区别

1.相似点:都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待。2.不同点锁的实现:Synchronized是依赖于JVM实现的,而ReenTrantLock是JDK实现的。性能的区别:在Synchronized优化以前,synchronized的性能是比ReenTrantLock差很多的,但是自从Synchronize...

2019-10-27 15:51:02 149

原创 什么是AQS?

什么是AQSReentrantLock、ReentrantReadWriteLock底层都是基于AQS来实现的AQS的全称是AbstractQueuedSynchronizer,是抽象队列同步器,其实他就是一个用来构建锁和同步器的框架,内部实现的关键是:先进先出的队列、state状态,在LOCK包中的相关锁(常用的有ReentrantLock、 ReadWriteLock)都是基于AQS来构建...

2019-10-27 15:32:36 5532

原创 网络分层模型

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层应用层协议:HTTP、FTP传输层:TCP,UDP网络层:IP链路层:ARP(地址解析协议)透过目标设备的IP地址,查询目标设备的MAC地址RARP(反向地址转换协议)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。ping命令属于应用层nat工作在网络层...

2019-10-27 14:27:16 103

原创 垃圾回收机制

1.当我第一次学习java时,常把GC当做java的一个附属物,但实际上GC的历史比java久远很多。我们从三个角度来理解gc。 1jvm怎么确定哪些对象应该进行回收 2jvm会在什么时候进行垃圾回收的动作 3jvm到底是怎么清楚垃圾对象的1.jvm怎么确定哪些对象应该进行回收?引用计数法:简单的来说就是判断对象的引用数量。实现方式:给对象共添加一个引用计数器,每当有引用对他进行引用...

2019-10-27 13:36:00 98

原创 Volatile和Synchronized的区别

1.volatie关键字只能用于修饰实例变量或类变量,不能用于修饰方法以及方法参数,局部变量,常量等2.synchronized关键字不能用于对变量的修饰,智能用于修饰方法或语句块。3.volatile修饰的变量可以为null,synchronized修饰的监视器对象不能为null。4.volatile无法保证原子性,synchronized可以保证原子性。5.volatile不会使线程陷...

2019-10-27 11:07:03 156

原创 如何破坏双亲委托机制与线程上下文类加载器

破坏双亲委派模型默认的loadClass方法是实现了双亲委派机制的逻辑,即会先让父类加载器加载,当无法加载时才由自己加载。1.可以自定义类加载器,重写loadClass方法;2.使用线程上下文类加载器;3.继承ClassLoader类,还要重写loadClass和findClass方法线程上下文类加载器为什么要有线程上下文类加载器呢?JDK的核心库提供了很多SPI,例如JDBC,但是我...

2019-10-26 22:45:27 579

原创 java有几种异常?说出五种运行时异常

2019-10-26 21:48:28 476

原创 JAVA 基本数据类型长度

2019-10-26 21:44:07 136

原创 ConCurrentHashMap1.8 put,size,get过程

put1、判断Node[]数组是否初始化,没有则进行初始化操作2、通过hash定位数组的索引坐标,是否有Node节点,如果没有则使用CAS进行添加(链表的头节点),添加失败则进入下次循环。3、检查到内部正在扩容,就帮助它一块扩容。4、如果f!=null,则使用synchronized锁住f元素(链表/红黑树的头元素)。如果是Node(链表结构)则执行链表的添加操作;如果是TreeNode(...

2019-10-26 21:26:20 829

原创 HashMap和HashTable

区别HashMap是线程不安全的,效率高,JDK1.2版本Hashtable是线程安全的,效率低,JDK1.0版本的2,HashMap可以存储null键和null值Hashtable不可以存储null键和null值HashMap 1.7:1.在将键值对存入数组之前,将key通过hash算法获取hash值,将hash值作为数组下标,把下标对应的位置作为键值对存储的位置,该位置叫做桶。但是...

2019-10-26 19:26:25 76

原创 多线程问题面试归纳

1.用Runnable还是Thread?因为实现接口的方式比继承类的方式更灵活,也能减少程序之间的耦合度,继承是很昂贵的资源,面向接口编程也是设计模式6大原则的核心。2.start()方法和run()方法的区别start()方法被用来启动新创建的线程,而且start()内部 调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,...

2019-10-26 13:50:14 148

原创 Http协议

HTTP与HTTPS有什么区别?1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、...

2019-10-26 11:44:44 148

原创 TCP与UDP的区别

相同点:UDP协议和TCP协议都是传输层协议。不同点:1.TCP是面向连接的,可靠性高;UDP是基于非连接的,可靠性低2.由于TCP是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差,同时过程复杂,也使其易于攻击;UDP没有建立连接的过程,因而实时性较强,也稍安全 。3.在传输相同大小的数据时,TCP首部开销20字节;UDP首部开销8字节,TCP报头比UDP复杂,故实际...

2019-10-25 19:47:10 87

原创 TCP的三次握手和四次挥手(简要归纳)

三次握手:1.第一次握手:客户端向服务端发送syn包请求连接,同时进入SYN_SENT状态,等待服务器响应,这个syn指同步序列编号。2.第二个握手:服务端接收到syn包后,自己也向客户端发送一个syn+ack包,表示监听到你的请求并给你反馈。同时进入SYN_RECV状态。3.第三次握手:客户端收到服务端的确认信息后向服务器发送ACK确认包,发送完毕后进入ESTABLISHED状态,三次握...

2019-10-25 18:29:43 213

基于python的话者识别系统

本项目包含了所有代码和音频资源,以及代码注解。1.这个项目还是有不完善的地方,代码编写方面还是有一些缺点,但是思路我觉得够创新,总体工作量不低。 2.这个项目的落地/实用背景: a.语音锁 b.声纹识别 c.身份验证 3.这个项目可以改进的地方:优化分类算法,给系统增加界面等。

2020-11-28

空空如也

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

TA关注的人

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