自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 CSA编译报错: error: ‘dynamic_cast‘ not permitted with ‘-fno-rtti‘

RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。

2023-07-09 20:45:31 262

原创 klee-2.1安装(按照这个博客,闭着眼都能成功!)

klee学习

2022-10-14 21:42:48 1309 4

原创 高频面试(十四):消息队列在项目中的使用

背景:由于在高并发的环境下,来不及同步处理用户发送的请求,则会导致请求发生阻塞,比如说,大量的insert,update之类的请求同时到达数据库,直接导致无数的行锁和表锁,甚至会导致请求堆积过多,从而触发too many connection错误,使用消息队列可以解决异步通信。异步:并行:排队...

2021-11-26 21:02:23 565

原创 高频面试(十三):单点登陆实现

单点登录:一处登陆多处使用。前提:单点登陆多使用在分布式系统中。

2021-11-26 20:47:14 165

原创 高频面试(十二):Elasticsearch和solar的区别

背景:他们都是基于lucene搜索服务器基础上开发的,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式尽进行查询】开发语言:java诞生时间:solar:2004,Es:2010Es更新一些,功能更强大区别:1、当实时建立索引的时候,solr会建立io阻塞,而es则不会,es查询性能要高于solr。2、在不断动态添加数据的时候,solr的检索效率会变得低下,而Es则没什么变化3、solr是利用zookeeper进行分布式管理,而es自身带有分布式系统管理功

2021-11-24 20:28:54 2591

原创 高频面试(十一):JVM垃圾回收机制

JVM垃圾回收机制,GC发生在JVM哪部分,有几种GC,他们的算法是什么?1.GC发生在JVM哪部分?GC发生在堆里面。2.GC是什么?次数上频繁收集Young区: Minor GC次数上较少收集Old区: Full GC基本不动Perm区3.GC的四大算法3.1引用计数法只要有对象引用,那就不进行垃圾回收。这个已经被淘汰了。因为没有办法处理循环引用。缺点:每次对对象赋值时均要维护引用计数器,且计数器本身也有一定的消耗。较难处理循环引用3.2复制算法(Coping)在年轻代

2021-11-21 18:35:57 508

原创 高频面试(十):Mysql什么时候需要创建索引

1.需要创建索引的情况主键自动建立唯一索引频繁作为查询条件的字段应该创建索引查询中与其他表关联的字段,外键关系建立索引单键组索引的选择问题,组合索引性价比更高查询中排序的字段,排序字段若通过索引法访问将大大提高排序速度。查询中统计或者分组字段2.那些表中不需要创建索引表的记录太少因为这个会提高查询速度,但是却降低了更新表的速度经常增删改的表因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件数据重复且分布平均的表字段,因此应该只为经常查询和经常排序的数据列建立索引。

2021-11-20 21:10:30 625

原创 高频面试(九):Redis五种数据类型在不同项目中应用与不同形式的持久化方式

1.RDB在指定的时间间隔内将内存的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。1.1备份执行过程Redis会单独创建(fork) -个子进程来进行持款化,铣将数据写入到一个临时文件中,待玖化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何I0操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,肘于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

2021-11-20 20:58:32 507

原创 高频面试(八):Linux常用命令+git分支相关命令

1.Linux常用命令1.1centos61.1.1Service(centos6)service服务名startservice服务名stopservice服务名restartservice服务名reloadservice服务名status#查看服务的方法 /etc/init.d/ 服务名#通过 chkconfig 命令设置自启动#查看服务 chkconfig -list l grepXXXchkconfig -level 5 服务名on1.1.2运行级别runlevel(cento

2021-11-19 20:47:02 1069 2

原创 高频面试(七):Mybatis当实体类的属性名和表中字段不一致时

1.写sql语句时候写别名2.在MyBatis的全局配置文件中开启驼峰命名规则<!-- 开启驼峰命名规则,可以将数据库中下划线映射为驼峰命名 列如 last_name 可以映射为 lastName--><setting name="mapUnderscoreToCameLCase" value="true" />要求数据库字段中含有下划线3.在mapper文件中使用resultMap自定义映射<!-- 自定义映射--><resultMap

2021-11-17 20:23:30 716

原创 高频面试(六):SpringMVC工作流程

1.SpringMVC工作流程SpringMVC框架是一个基于请求驱动的Web框架,并且使用了‘前端控制器’模型来进行设计,再根据‘请求映射规则’分发给相应的页面控制器进行处理。具体步骤:1、 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,

2021-11-16 21:05:08 223

原创 高频面试(五):事务传播属性和事务隔离级别

1.事物的传播行为当事务方法被另外一个事务方法调用时,必须制定事务应该如何传播,例如方法可以在现有的事务中运行,也可以开启新的事务。并在自己的事务中运行,事务的传播行为有传播属性指定,Spring定义了7种类传播行为REQUIRED :如果有事务在运行,当前的方法就是在这个事务内运行,否则就会开启一个新的事务,并在自己的事务中运行。REQUIRED_NEW:当前方法必须启动另外一个事务,并在他的自己的事务内运行,如果有事务正在运行,应该将它挂起。SUPPORTS:如果有事务在运行,当前的方法就是在

2021-11-14 16:31:02 815

原创 高频面试(四):bean的作用域

bean的作用域,可以使用scope属性指定bean的作用域,-singleton:默认值,当IOC容器一创建就会创建bean实例,而且是单例的,每次得到的都是同一个-prototype:原型的,当IOC容器一创建就不在实例化该bean,每次调用getBean方法时候在实例化该bean。-request:每次请求实例化一个bean-session:在每一次会话中共享一个bean...

2021-11-06 11:25:26 90

原创 高频面试(三):成员变量和局部变量

示例代码/** * @author gcq * @Create 2020-09-29 */public class Exam5 { static int s;// 5 int i; // A-2 B-1 int j;//A-1 B-1 { int i = 1; i++; // 就近原则 j++; s++; } public void test(int j) { j++

2021-11-04 20:55:28 237

原创 高频面试(二):类初始化和实例初始化

1.类初始化类要创建实例要先加载并初始化该类。main方法所在的类要先加载和初始化一个子类要初始化需要先初始化父类类初始化就是要执行< clinit >()方法< clinit>()方法由静态类变量显示赋值代码和静态代码块组成类变量显示赋值代码和静态代码块从上到下执行< clinit>()方法只调用一次2.实例初始化过程实例初始化就是执行< init >()方法< init >()方法可能重载有多个,有几个构造器就有几个&

2021-10-26 20:49:29 59

原创 高频面试(一):单例模式(Singleton)

1.什么是SingletonSingleton:在Java中 即指单例设置模式,探视软件开发最常用的设置模式之一。单:唯一例:实例单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。例如:代表JVM运行环境的Runtime类2.单例模式要点一个类只能有一个实例(构造器要私有化)必须自行创建实例必须向整个系统提供这个实例3.几种常见的形式3.1饿汉式:直接创建该对象,不存在线程安全问题3.1.1直接实例化饿汉式(简洁直观)public class Sing

2021-10-25 22:05:55 117

转载 java8新特性之其他特性

1.Optional类Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。常用方法:Optional.of(T t) : 创建一个 Optional 实例Optional.empty() : 创建一个空的 Optional 实例Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例

2021-06-25 17:21:34 74

原创 java8新特性之接口中的默认方法与静态方法

1.接口中的默认方法Java 8中允许接口中包含具有具体实现的方法,该方法称为“默认方法”,默认方法使用 default 关键字修饰。例如:2.接口默认方法的“类优先”原则若一个接口中定义了一个默认方法,而另外一个父类或接口中又定义了一个同名的方法时:选择父类中的方法。如果一个父类提供了具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略。接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法是否是默认方法), 那么必须覆盖该方法来

2021-06-25 17:14:29 166

原创 java8新特性之新时间日期API

1.使用 LocalDate、 LocalTime、 LocalDateTimeLocalDate、 LocalTime、 LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。2.Instant时间戳用于时间戳的运算。它是以Unix元年(传统的设定为UTC时区1970年1月1日午夜时分)开始所经历的描述进行运算。3.Duration 和 PeriodDu

2021-06-25 16:58:02 86

原创 java8新特性之Stream

1.了解Streamjava8中有两大最为重要的改变。第一个是Lambda,另外一个是Stream API(java. util.stream.*)。Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用Stream API来并行执行操作。简而言之,Stream API提供了一种高效且易于使用的处理数据的方式。2.什么是Stream是

2021-06-09 22:05:08 972 2

原创 (十五):常用的十种算法(下)

1.普里姆算法1.1普利姆算法应用场景有胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在需要修路把7个村庄连通各个村庄的距离用边线表示(权) ,比如 A – B 距离 5公里问:如何修路保证各个村庄都能连通,并且总的修建公路总里程最短?1.2最小生成树修路问题本质就是最小生成树问题,什么是最小生成树呢?给定一个带权的无向连通图,如何选取一棵生成树,使树上所有的边的权的总和最小,这叫做最小生成树。N个顶点,一定有N-1条边包含全部顶点N-1条边都在图中举例如下:

2021-06-08 20:48:53 427 2

原创 (十四):常用十种算法(上)

1.二分查找算法这个没啥说的,分为两种:递归、非递归。2.分治算法2.1简介分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……分治算法可以解决很多问题:二分搜索大整数乘法棋盘覆盖合并排序快速排序线性时间选择最接近点对问题循环赛日程表

2021-05-26 23:28:27 140 7

原创 java8新特性之Lambda表达式

1.为什么使用Lambda?Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码项数据一样进行传递),可以写出来更加简洁、更加灵活的代码。作为一种更为紧凑的代码风格,使得java的语言表达能力得到了提升。在没有Lambda表达式的时候,我们使用的是匿名内部类,比如:将其转换为Lambda表达式就是:2.Lambda表达式语法Lambda表达式在java语言中引入了一个新的语法元素和操作符,这个操作符为->,该操作符被称为Lambda操作符或剪头操作符

2021-05-20 16:14:49 172 2

原创 (十三):图

1.图的基本介绍1.1为什么要有图前面我们学到了线性表和树,线性表局限于直接前驱和一个直接后继结点的关系。树也只能有一个直接前驱也就是父节点。当我们需要多对多关系时候,就需要图。1.2图的举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:1.3图的常用概念顶点边路径无向图: 顶点之间的连接没有方向,比如A-B,即可以是 A-> B 也可以 B->A .路径: 比如从 D -> C 的路径有

2021-05-10 22:54:03 117

原创 (十二):多路查找树

1.二叉树与B树1.1二叉树问题二叉树操作效率较高,但是也存在问题。二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度.1.2多叉树在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway

2021-05-08 20:16:18 81

原创 (十一):二叉排序树与平衡二叉树

1.二叉排序树介绍二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点比如针对前面的数据 (7, 3, 10, 12, 5, 1, 9) ,对应的二叉排序树为:2.二叉排序树的创建、遍历、删除public void add(Node node) {if (node == null) {return;}if

2021-04-29 20:10:14 369

原创 (十):赫夫曼树和赫夫曼编码

1.赫夫曼树1.1基本介绍给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。1.2赫夫曼树几个重要概念说明路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。结点的权及带权路径

2021-04-21 23:39:31 738

原创 (九):顺序存储二叉树与线索化二叉树

1.顺序存储二叉树1.1顺序存储二叉树的概念从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看下面的示意图。顺序存储二叉树的特点:顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为 2 * n + 1第n个元素的右子节点为 2 * n + 2第n个元素的父节点为 (n-1) / 2n : 表示二叉树中的第几个元素(按0开始编号如图所示)1.2顺序存储二叉树遍历//编写一个ArrayBinaryTree,实现顺序存储二叉树clas

2021-04-19 23:43:13 113

原创 (八):哈希表+二叉树

1.哈希表应用背景看一个实际需求,google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息.要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)2.哈希表的基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存

2021-04-12 22:32:27 797

原创 (七):查找算法

1.线性查找算法有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。这个没什么好说的,逐一比对就好了,代码略2.二分查找算法请对一个有序数组进行二分查找 {1,8, 10, 89, 1000, 1234} ,输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。 二分查找的思路如下所示:示例代码如下: //二分查找算法 /** * * @p

2021-04-06 23:08:54 284

原创 (六):排序算法

这里写目录标题1.排序算法介绍1.1排序的分类1.2算法的时间复杂度1.2.1度量算法执行时间的两种算法1.2.2时间频度1.2.3时间复杂度1.2.4常见的时间复杂度1.2.5平均时间复杂度和最坏时间复杂度1.3算法的空间复杂度2.基础的排序算法2.1冒泡排序2.1.1冒泡排序介绍2.1.2代码2.2选择排序2.2.1基本介绍2.2.2代码2.3插入排序2.3.1基本介绍2.3.2代码1.排序算法介绍排序也称为排序算法,排序是将一组数据,依指定的顺序进行排列的过程。1.1排序的分类1、内部排序:需

2021-03-29 22:33:21 148

原创 (五):递归

1.递归介绍1.1递归的概念简单的说,递归就是方法自己调用自己,每次调用的时候传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。1.2递归能解决什么样的问题1)各种数学问题,例如八皇后问题,汉诺塔,阶乘,迷宫问题,球和蓝子的问题等2)各种算法也会使用到递归,比如快速排序,二分查找,分治算法等。3)将用栈解决的问题,递归代码比较简洁1.3递归需要遵循的重要规则递归需要遵守的重要规则:1)执行一个方法时,就创建一个新的受保护的独立空间(栈空间)2)方法的局部变量是独立的

2021-03-28 23:08:47 77

原创 (四):栈

1.栈基础1.1栈的一个实际需求请输入一个表达式计算式:[722-5+1-533]这个是怎么计算呢?1.2栈的介绍栈的英文是stack,他是一个先入后出的有序列表。栈是限制线性表中的元素的插入和删除,只能在线性表的同一端进行的一种特殊的线性表,允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底。根据栈的定义我们可以知道,最前放入栈中的数据在栈底,最后放入的元素在栈顶,但是删除元素则相反,最后放入的元素最先删除,最先放入的元素最后删除。1.3栈的应用场景子程序的调用

2021-03-25 21:23:55 416

原创 (三):链表

1.链表介绍链表是有序的列表,但是他在内存中并不一定是连续的。链表是以节点的方式进行存储,是链式存储。每一个节点包括data域和next域,next域指向下一个节点。链表分为带头节点的链表和没有头结点的链表,根据实际的需求来确定。其中单链表的逻辑示意图如下:2.单链表的应用实例使用带head头的单项链表排行榜完成对水浒英雄任务的增删改查操作。2.1第一种方法在添加英雄时,直接添加到链表的尾部2.2第二种方式在添加英雄时,根据排名插入到指定位置2.3修改节点的功能思路一,先找到该节点,然

2021-03-19 22:03:55 173

原创 (二):稀疏数组和队列

1.稀疏数组1.1基本介绍当数组中大部分元素是0,或者为同一个数值,可以使用稀疏数组来保存。稀疏数组的处理方法:记录数组一共有几行几列,有多少个不同的值。把具有不同的值得元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。1.2稀疏数组举例使用稀疏数组可以保留类似二维数组(棋盘、地图等),把稀疏数组存盘,并且可以恢复成原来的二维数组。由于稀疏数组比较容易,因此代码省略。2.队列2.1队列介绍队列是一个有序列表,可以用数组或者链表来实现。遵循先入先出的原则。先存入先取出,

2021-03-13 21:50:05 97 4

原创 (一):数据结构和算法概述

1.数据结构和算法的关系数据结构是一门专门研究数据方式的学科,有编程语言就有了数据结构程序=数据结构+算法数据结构是算法的基础,换而言之,想学好算法,把数据结构学到位。2.线性结构和非线性结构数据结构分为线性结构和非线性结构。2.1线性结构线性结构是最为常用的数据结构,其特点就是数据元素之间存在一对一的线性关系。线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储结构的线性表顺序表,顺序表中的元素是存储连续的。链式存储的线性表是链表。链表中存储元素不一

2021-03-13 20:38:19 81

原创 Nginx(三):Nginx 的原理

1、master和worker一个master和多个worker,master是管理监控各个worker。当有客户端访问,各个worker是争抢这个请求。2.一个 master 和多个 woker 好处(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,继续进行争抢,实现请求过程,不会造成服务中断。3.设置多少个worker合适worker 数和服务器

2021-03-05 18:17:44 99 2

原创 Nginx(二):nginx常用命令与配置文件

1.常用命令进入nginx的安装目录下,进入sbin文件夹查看 nginx 版本号:./nginx -v启动 nginx :./nginx停止 nginx:./nginx -s stop重新加载 nginx:./nginx -s reload2.配置文件2.1 nginx 配置文件位置nginx/conf/nginx.conf2.2配置文件的内容(1)全局块:配置服务器整体运行的配置指令比如 worker_processes 1;处理并发数的配置(2) events 块:影响 N

2021-03-01 21:43:15 84

原创 Dubbo(七):dubbo原理

1.RCP原理一次完整的RPC调用流程(同步调用,异步另说)如下:1)服务消费方(client)调用以本地调用方式调用服务;2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;3)client stub找到服务地址,并将消息发送到服务端;4)server stub收到消息后进行解码;5)server stub根据解码结果调用本地的服务;6)本地服务执行并将结果返回给server stub;7)server stub将返回结果打包成消息并发送至消费方;8

2021-02-23 18:32:39 210 4

原创 Dubbo(六):高可用性

1.zookeeper宕机与dubbo直连现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务。原因:监控中心宕掉不影响使用,只是丢失部分采样数据数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务注册中心对等集群,任意一台宕掉后,将自动切换到另一台注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯服务提供者无状态,任意一台宕掉后,不影响使用服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复高可用:通过设计,减少系

2021-02-22 21:11:34 82

空空如也

空空如也

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

TA关注的人

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