自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 进程、线程、线程安全、线程池、死锁、多线程的总结框架

线程和进程进程和线程之间的区别1 进程时资源分配的最小单位, 而线程时执行调度的最小单位2 在一个进程中包含多个线程,线程共享该进程中的资源3 进程要比线程消耗更多的计算机资源,一个线程挂掉将导致整个进程挂掉进程进程之间的通信方式互斥量:多个线程使用共享内存时,其他线程必须等待该线程技术该可以使用这块内存信号量:进程使用的内存地址可以限定使用量管道消息队列套接字线程创建线程的三种方式具体三种方式继承Thread类实现Runnable接口实现Callback接口和

2020-10-23 15:02:57 228

原创 2020-09-01美团面经后台开发 一面视频面

20200901 美团面经后台开发 一面视频面spring-springMVC-Mybatis是怎么建立联系的如果让你自己设计一个Mybatis框架,你会怎么面试Mapper.xml中传入的参数结构在底层是怎么实现的JVM垃圾收集器算法G1收集器和CMS收集器的区别和联系。G1收集器的底层结构数据库调优:慢查询日志是怎么生成的,怎样会造成慢查询TCP和UDP的区别和联系我自己的研究项目介绍一下JVM锁的实现机制和扩展10.手撕代码...

2020-09-25 08:42:18 612

原创 从五个方面逐步完成SQL语句的优化

SQL语句的优化查询剖析工具,去了解是查询语句的哪一部分导致了查询缓慢。(1) 查询单行或者少数行语句时使用,使用SHOW PROFILES:先在navicat的命令行中,设置SET profiling=1。通过设置这个属性以后,但凡是在服务器上执行的所有语句,都会测量这个语句的耗费时间和查询执行过程中转台变换的过程中等一系列相关的数据。 然后再执行查询语句。再使用SHOW PROFILES;可以查看到刚刚执行的查询语句所使用的响应时间。当想要仔细查看某一条查询语句内部所有的响应时间细节时,使用SHO

2020-09-24 10:57:23 540

原创 MySQL主从复制分析

为什么要引入复制在面对大规模数据时,MySQL复制可以将读操作分布到多个服务器上,实现对密集型应用的优化,通过简单的代码修改就能实现负载均衡;当某个站点的数据库发生了崩坏,利用MySQL复制可以显著的缩短宕机时间;为了解决等等的一系列问题,出现了MySQL复制技术。复制解决的基本问题是:让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。主库和备库之间有多种组合方式。复制方式:基于行的复制和基于语句的复制。复制的工作方式为:通过在.

2020-08-06 22:24:28 317

原创 从服务器性能优化开始分析数据库优化的点点滴滴

服务器性能优化性能优化简介性能的概念:完成某件任务所需要的时间肚量,即响应时间。服务器的性能,利用查询语句的相应时间来进行度量,单位是每个查询花费的时间。性能优化:在一定的工作负载下,尽可能的降低响应时间。但是无法测量就无法优化,所以我们需要知道,我们应该把测量时间花在什么地方。完成一项任务的时间可以分为两部分:执行时间和等待时间。如果要优化执行时间,那么最好是通过测量定位不同的子任务花费的时间,然后优化去掉一些子任务,降低子任务的执行频率或者提升子任务的效率;如果要优化等待时间,会相对复杂一

2020-08-01 22:53:24 200

转载 Hashmap 源码级掌握,扩容,红黑树,最小树化容量,hash冲突解决,有些面试官会提出发自灵魂的审问,比如为什么是红黑树,别的树不可以吗;为什么8的时候树化,4不可以吗,等等

题目来源:https://zhuanlan.zhihu.com/p/86536581java基础01 Hashmap 源码级掌握,扩容,红黑树,最小树化容量,hash冲突解决,有些面试官会提出发自灵魂的审问,比如为什么是红黑树,别的树不可以吗;为什么8的时候树化,4不可以吗,等等什么时候进行扩容当size == 桶的数量*负载因子时进行扩容,通过桶的数量 乘以 2的方式来完成。什...

2020-07-02 18:58:31 527

转载 concurrentHashMap,段锁,如何分段,和hashmap在hash上的区别,性能,等等

题目来源:https://zhuanlan.zhihu.com/p/86536581**java基础 **02 concurrentHashMap,段锁,如何分段,和hashmap在hash上的区别,性能,等等concurrentHashMap由于hashMap在处理高并发的问题时,会出现因put操作,扩容混乱时出现的链路环,有可能造成下一次操作的死锁。为了解决这个问题提出了:conc...

2020-07-02 18:58:21 658 1

原创 LinkedList 优势,什么时候用,和arraylist的区别 等等

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **05 LinkedList 优势,什么时候用,和arraylist的区别 等等LinkedList 优势什么时候用和arraylist的区别...

2020-07-02 18:58:08 242

原创 字符串编码的区别

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **08 字符串编码的区别常用的字符编码:Unicode: 适用于所有语言ASCII:适用于英文GB2312:适用于中文...

2020-07-02 18:58:00 167

原创 什么是泛型,怎么用泛型

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **09 什么是泛型,怎么用泛型泛型:代码能够与他们的数据类型不再绑定在一起,同一套代码可以适用于多种数据类型,这样不仅可以复用代码,可以降低耦合性,而且还可以提高代码的可读性泛型原理通过将数据类型定义为object类型,然后具体到应用场景时,然后根据数据类型强制类型转...

2020-07-02 18:57:54 117

原创 Comparable和Comparator接口是干什么的,其区别

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **Comparable和Comparator接口是干什么的,其区别Comparable接口从Comparable接口中的代码,可以包含一个内部函数compareTo(),因此但凡是继承了接口的类,都需要实现这个方法。Comparable对这个接口的每一个类对象都强加了...

2020-07-02 18:57:12 256

原创 多态的原理是什么

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **多态的原理是什么

2020-07-02 18:57:04 262

原创 接口和抽象类

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **接口和抽象类

2020-07-02 18:56:52 119

原创 静态加载和动态加载

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **如何通过反射和设置对象私有字段的值静态加载和动态加载静态加载:利用关键字new来完成初始化动态加载:通过class.forName()的方式来获得一个Class类型的实例,然后通过这个Class类型的实例的newInstance来初始化。反射机制在运行状态中,对...

2020-07-02 18:56:45 390

原创 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **快速失败(fail-fast)和安全失败(fail-safe)的区别是什么什么是同步修改?当一个或者多个线程正在遍历一个集合Collection,此时另外一个线程修改了这个集合的内容。这就是并发|同步修改。什么是快速失败?由修改引发的失败:在使用迭代器对集合对象...

2020-07-02 18:56:37 216

原创 synchronized 的实现原理以及锁优化?

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **synchronized 的实现原理以及锁优化?线程不安全问题的诱因1 共享变量的存在2 多线程共同操作共享数据。当多线程共同操作共享数据时,希望保证在某一条线程进行操作的时刻,其他同样希望多这个变量进行操作的线程处于等待状态,只有当正在执行的线程操作完成,下一个...

2020-07-02 18:56:24 200

原创 HashTable ,同步锁,这块可能会问你synchronized关键字 1.6之后提升了什么,怎么提升的这些

题目来源:https://zhuanlan.zhihu.com/p/86536581**java基础 **03 HashTable ,同步锁,这块可能会问你synchronized关键字 1.6之后提升了什么,怎么提升的这些HashTable数据结构也是 数组+链表的形式。在hashTable中没有红黑树。同步锁为了使得可以处理高并发的情况,hashTable为每一个方法都加了...

2020-07-02 18:56:17 480

原创 String ,StringBuffer,StringBuilder哪个是安全的 String StringBuffer StringBuilder 以上哪个是线程安全的

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **07 String ,StringBuffer,StringBuilder哪个是安全的String StringBuffer StringBuilder 以上哪个是线程安全的String:因为不是基本数据类型,所以初始化的时候必须进行赋值。因此是线程安全的Stri...

2020-07-02 18:56:10 886

原创 基本类型和包装类型的区别,涉及自动装箱和拆箱

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **06 基本类型和包装类型的区别,涉及自动装箱和拆箱,怎么做的,原理基本类型和包装类型的区别a 基本类型存放在堆栈中, 包装类型的是实例放在堆中b 基本类型的创建不需要new关键字,包装类型需要newc 基本类型的初始值为0/false…,包装类型的初始值是null...

2020-07-02 18:56:02 189

原创 static能不能修饰threadLocal,为什么

题目来源:https://zhuanlan.zhihu.com/p/86536581java面试清单**java基础 **static能不能修饰threadLocal,为什么ThreadLocal是什么?ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发的场景下,可以实现无状态的调用,特别适用于各个...

2020-07-02 18:55:46 1683

原创 ArrayList 优势,扩容,什么时候用

题目来源:https://zhuanlan.zhihu.com/p/86536581**java基础 **04 ArrayList 优势,扩容,什么时候用ArrayList是动态的数据。其查找效率高,但是增删的效率低。默认数组长度等于10扩容:当数据长度超出数组长度时,判断数据长度与1.5倍数组长度的关系数据长度< 1.5倍数组长度:直接创建与数据长度相同的数组数据长度&lt...

2020-07-02 18:55:26 694

原创 java 面试清单 八大排序算法

01 插入排序–直接插入排序02 插入排序–希尔排序03 选择排序—简单选择排序04 选择排序—堆排序05 交换排序—冒泡排序//外循环控制 总共遍历几次for(int i=0; i<arr.length-1;i++){ //内循环控制 一次循环遍历的过程 for(int j=0; j<arr.length-i-1; j++){ //每次遍历都是从头开始 if(...

2020-05-18 18:46:53 103

转载 数据库学习之幻读

1 幻读的定义在可重复读隔离级别或者读提交之下(即:在一致性试图之下),在同一个事务中,前后查询同一个范围内的数据时,发现后一次查询所得到的数据是前一次查询时所没有的。我们就成这种称这种情况为幻读。2 幻读一些说明在在可重复读隔离级别之下,普通的查询操作所使用的快照读,是不会看到其他事务插入的数据的。因此,幻读只有在“当前读”下才会出现。而所谓的当前读就是进行了更新操作幻读仅仅指读取到了...

2020-04-09 23:46:33 1193

转载 数据库学习之只查询一行数据,速度不高的原因

只查询一行数据,速度不高的原因:查询长时间不返回等MDL锁:找到持有MDL写锁的线程,进行kill,利用sys.schema_lock_wait命令查找哦等待flush:有一个flush table的命令被其他语句堵住了,然后有堵住来查询语句等待行锁:找到持有行锁的线程,进行kill,使用的命令sys.innodb_lock_waits(在引擎测层)查询慢字段没有建立索引,从而进行了...

2020-04-08 23:19:30 201

转载 数据库学习之---sql语句相同时,性能差异的产生

性能差异是指:需要扫描的行数从固定数量,变成了全表查询。产生这种情况的原因1 条件字段函数的操作如果对字段做了函数计算,就用不上索引。因为对索引字段做函数操作,可能会破坏索引字段的有序性,从而优化器决定放弃走树搜索功能。改成字段本身的范围查询,可以提高查询的效率2 隐式类型转换在select语句中给定的值,其实跟数据库中存储的字符类型不同。从而导致走全表查询3 隐式字符编码转换在se...

2020-04-08 21:45:05 223

转载 数据库学习之如何正确的显示随机消息

order by rand()该方法需要将相关的数据读取出来,放到内存临时表中进行排序,在内存临时表排序的时候使用了rowid排序方法,然后把相关的结果进行返回。临时表的分类:内存临时表+磁盘临时表。对内存表而言,回表过程知识简单的根据数据行的位置,直接访问内存得到的数据,根本不会导致多访问。因此在全字段排序和rowid排序中进行选择时,会选择rowid排序。可以减少访问的行数。MySq...

2020-04-08 21:16:19 146

数据库学习之order by

1 全字段排序mysql 会为每个线程分配一块内存用于排序,称为sort_buffer.select city,name,age from t where city='hangzhou' order by name limit 1000;步骤一:初始化sort_buffer,放入查询的字段:name, city, age步骤二:从索引city找到第一个满足city=‘hangzhou’ ...

2020-04-08 20:34:03 472

转载 数据库学习之count(*)的实现方式

1 由于InnoDB引擎的内部结构中,存在着多版本并发控制的原因(MVCC),InnoDB对于表”应该返回多少行“是不确定的。因此,在count()的时候,是一条条记录查找,再做累加。2 虽然count()不是特别块,但是还是进行了一定程度的优化具体是:在保证逻辑正确的前提下,尽量减少扫描的数据量,这也是数据库系统设计的通用法则之一。Mysql 优化器会找到最小的那颗索引树进行遍历。3 当一...

2020-04-04 21:47:57 833

原创 数据库学习之数据库表的空间回收

1 一个InnoDB表中包含两个部分,即:表结构定义和数据。2 为什么把表中的数据进行了删除,但是表文件的大小并没有发生改变?当我们想要删除数据页中的一条记录时,InnoDB引擎会把这个记录的位置标记为删除。下次有新的记录过来时,可以复用这个记录的位置当我们删除了数据页中的所有记录时,InnoDB引擎会把整个数据页比哦阿基为删除。下次有新的数据时,可以复用这个数据页。所以,当我们使用del...

2020-04-04 20:45:36 307

转载 数据库学习之为什么mysql会出现”抖“一下的情况

1 ”抖“一下情况,是什么样子一条SQL语句,正常执行的时候特别块,但是有时候不知道为什么会变得特别慢2 ”脏页“和”干净页“在将redo log的理论理解过程中,我们把redo log这个位置,理解为黑板。把磁盘这个位置理解为账本。先写黑板,在写账本,先后过程,所以肯定存在数据的不一致。因此,”脏页“:当内存中的数据页与磁盘中的数据页不一致”干净页“:当内存中的数据页与磁盘中的数据页一...

2020-04-04 16:15:16 140

转载 数据库学习之如何为字符串字段添加索引

1 使用前缀索引,定义好长度,可以做到既节省空间,又不用额外增加太多的查询成本。2 如何确定多长的长度,才叫合适?我们在建立索引时,关注的这个索引上的区分度。区分度越高,意味着重复的键值越少。因此,我们可以通过统计索引上有多少个不同的值来判断要使用多长的前缀3 前缀索引对覆盖索引的影响使用前缀索引,就用不上覆盖索引对查询呢性能的优化了。4 为字符串字段添加索引的其他方式倒序存储和使用h...

2020-04-04 15:07:16 548

转载 数据库学习之------索引的选择

为什么要选择正确的索引?在执行查询或者更新操作时,索引的错误选择会导致执行效率下降。索引的选择过程究竟是怎样的?1 首先索引的选择,是由优化器来进行选择的2 其次,优化器在选择过程中,希望挑选出执行代价(即:需要扫描行数)最低的索引扫描行数的错误判断,使得选错了索引1 当一个索引上,不同的值越多时,就称这个索引的区分度越高。而所谓的区分度,就是这个索引的统计信息。优化器在判断扫描行数时...

2020-04-04 14:17:12 264

转载 数据库学习之redo log(WAL)、change buffer

针对的对象是“更新语句的执行流程”更新流程中涉及到:重做日志(redo log)和归档日志(bin log)重做日志(redo log)-----在引擎层中,采用“黑板-账本”模式(即WAL技术)。1 为什么需要redo log?每一次的更新操作的具体数据变更都是需要写入到磁盘中去的,因为写入的是一条确定的数据,所以我们还需要在磁盘中找到那条相对应的记录,然后才能完成更新。而对于磁盘的I...

2020-04-04 00:25:03 1530

转载 数据库学习之事务隔离级别

主要内容:一致性读 当前读在可重复读隔离级别之下:事务A:k=1; 事务B: k=3在读提交隔离级别之下:事务A: K = 2;事务B: K=3(大白话)原理:在可重复读隔离级别之下,查询操作所遵循的是一致性试图中给出的数据,更新操作所遵循的是当前读中所给出的数据。MVCC:多版本并发控制。在我的理解里面,就是回滚操作transaction id:在InnoDB中,每一个事务都有自己唯...

2020-03-30 23:50:20 122

原创 CASE SOLVED:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driverr

因为,最近需要调试新的代码,所以就不断频繁的装各种配置环境,比如多版本的cuda,多版本的python,多版本的gcc,于是,自食其果,环境崩掉了,哭死。。。。。。。。出现了这种该死的错误:(也就是说,我的nvidia之前都是好好的,是之后环境的混乱,才出现如下这种错误的)nvidia-smi has failed because it couldn't communicate with th...

2020-03-27 14:04:12 212

原创 数据库学习之全局锁、表锁、行锁

全局锁全局锁:对整个数据库实例进行加锁。使用全局锁的命令:Flush tables with read Lock(FTWRL)。加了该命令以后,整个数据处于只读状态,其他所有进来的操作都会被阻塞使用场景:全库逻辑备份在全库逻辑备份的过程中,官方自带的逻辑备份工具是mysqldump,mysqldump使用参数single-transaction的时候,导数据之前就会启动一个事务来确保拿到一...

2020-03-25 22:40:42 198

原创 数据库学习之索引

索引的作用索引,可以类比为查字典过程中,根据拼音或者偏旁找字的这个过程。所以,在数据库中索引的出现,目的也是为了提高数据查询的效率。索引常见的模型1 哈希表 == (key-value)数组+链表,适用场景:等值查询。哈希表模型的特点是,插入很方便,但是查询代价很高2 有序数组,使用场景:等值查询和范围查询场景。有序数组模型的特点是查询方便,增删操作代价很高3 B+树首先,我们都知道程...

2020-03-25 20:47:34 180

原创 线程安全与锁优化

线程安全与锁优化-------------------线程安全线程安全的定义:当多个线程访问同一个对象时,如果不需要考虑这些线程是如何进行调用和执行的;也不要添加同步的操作;也不需要调用任何其他的方法来进行协调操作时,可以使得调用这个对象的行为都能得到正确的结果,那么我们就说这个对象是线程安全的。线程安全与锁优化-------------------java语言中的线程安全1 造成线程不安全...

2020-03-24 16:38:42 117

原创 java内存模型与线程(下)

java与线程-------------线程的实现线程的引入,可以把一个进程的资源分配和执行调度分开乘两部分来完成,各个线程可以共享进程的资源,也可以独立的调度。1 进程:资源分配的基本单位。进程可以创建多个线程,最少一个主线程。进程需要自己独立的数据段和代码段2 线程:执行调度的进本单位。一个线程只能属于一个进程,多个线程一起共享线程的资源。每个进程只要维护自己的栈和寄存器。java与线...

2020-03-19 16:45:59 100

原创 terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

在添加了import matlabimport matlab.engine出现如下错误:经过python console测试到,上述的两个import语句其实都没有产生问题。后来发现,我的上述两句import语句,位于.py文件的import文件的末尾,所以出现题目中的报错问题,如下图:解决方案,把两个import语句挪动到上面去,就可以解决,如下图所示:...

2020-03-16 23:03:21 6683 1

off转为二进制格式的ply.docx

off数据格式在做研究的过程中,需要被转换为二进制格式的ply。在此对如果做转换,用最简单的方法做转换进行了详细的介绍

2019-08-05

基于安卓的同学录的设计与实现

毕业设计的完整代码,基于Android的同学录的设计与实现

2018-04-23

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

TA关注的人

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