![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术
文章平均质量分 85
西吧
开窍了
展开
-
leetcode top100
和为K的子数组原创 2020-08-13 12:42:45 · 242 阅读 · 0 评论 -
Springmvc
1.spring和springmvc SpringMVC是一个MVC模式的WEB开发框架,Spring是一个通用解决方案, 最大的用处就是通过Ioc/AOP解耦, 降低软件复杂性。springmvc给spring的表现层提供支持。所以Spring可以结合SpringMVC等很多其他解决方案一起使用, 不仅仅只适用于WEB开发。...原创 2019-04-21 16:23:30 · 170 阅读 · 0 评论 -
面试问题
一、计算机网络基础部分TCP报头格式UDP报头格式TCP/UDP区别(不仅是宏观上的,最好能根据各自的机制讲解清楚)HTTP状态码(最好结合使用场景,比如在缓存命中时使用哪个)HTTP协议(一些报头字段的作用,如cace-control、keep-alive)OSI协议、TCP/IP协议以及每层对应的协议。SESSION机制、cookie机制TCP三次握手、四次挥手(这个问题真的...转载 2019-04-25 20:15:47 · 433 阅读 · 1 评论 -
数据库
一、事务 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。1.原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。2. 一致性(Consistency)数据库在事务执行前后都保持一...原创 2019-04-21 19:30:56 · 168 阅读 · 0 评论 -
JAVA基础
一、数据类型基本类型byte/8char/16short/16int/32float/32long/64double/64boolean/~缓存池new Integer(123) 与 Integer.valueOf(123) 的区别在于:new Integer(123) 每次都会新建一个对象;Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同...原创 2019-04-21 21:03:42 · 151 阅读 · 0 评论 -
插入排序
算法描述插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。下面以五个无序数据为例: 3,1,5,4,2第一次排序,1比3小,则1和3换位置,变为了1,3,5,4,2第二次排序,5比3大,不需要调整,仍未1,3,5,4,2第三次排序,4比5小,则4和5 换位置,此时4比3大,则不再继续调整,此时变为了1,3,4,5,2第四次排序,2比5小,2和5换位置,2又比4小,2继续和...原创 2019-04-26 10:18:47 · 107 阅读 · 0 评论 -
java跨平台
两种方式的差异:第一,C语言是编译执行的,编译器与平台相关,编译生成的可执行文件与平台相关;第二,Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码也与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是与平台相关的,也就是不同的平台需要不同的解释器....原创 2019-04-22 10:41:55 · 154 阅读 · 0 评论 -
归并排序
基本思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和...原创 2019-04-26 19:40:05 · 94 阅读 · 0 评论 -
HashMap
下次写原创 2019-04-22 22:32:47 · 128 阅读 · 0 评论 -
希尔排序
基本思想希尔排序的实质就是分组插入排序,又称缩小增量法。将整个无序序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下,效率是很高的,因此希尔排序在时间效率上有很大提高。...原创 2019-04-27 16:40:20 · 116 阅读 · 0 评论 -
设计模式
一、单例模式Ⅰ 饿汉式-线程安全采取直接实例化 uniqueInstance 的方式就不会产生线程不安全问题。但是直接实例化的方式丢失了延迟实例化带来的节约资源的好处Ⅱ 懒汉-线程不安全私有静态变量 Singleton 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 Singleton,从而节约资源。这个实现在多线程环境下是不安全的,如果多个线程能够同时进入 if (s...原创 2019-04-27 18:55:00 · 163 阅读 · 0 评论 -
快速排序
问题假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数,为了方便,就让第一个数6作为基准数。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边。具体实现分别从初始序列“两端开始“探测”。先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换他们。这里可以用两个变量i和j,分别指向序列...原创 2019-04-24 20:51:19 · 153 阅读 · 0 评论 -
冒泡排序
从左到右不断交换相邻逆序的元素,在一轮的循环之后,可以让未排序的最大元素上浮到右侧。代码:原创 2019-04-29 20:01:46 · 83 阅读 · 0 评论 -
spring、springmvc、springboot
spring和springMvc:1 spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;2 springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发...原创 2019-05-08 19:52:37 · 150 阅读 · 0 评论 -
索引
一、索引的本质索引(Index)是帮助MySQL高效获取数据的数据结构。上图展示了一种可能的索引方式。左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找在虽然这是一个货真价实的索引,...原创 2019-05-13 21:23:15 · 195 阅读 · 0 评论 -
sql注入
继续!!原创 2019-05-14 09:12:06 · 195 阅读 · 0 评论 -
进程和线程区别
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CP...转载 2019-05-09 12:53:50 · 160 阅读 · 0 评论 -
GC过程
总体来说要判断:哪些内存需要回收?——who什么时候回收?——when怎么回收?——how1、哪些内存需要回收?2、什么时候回收?(1)、引用计数法Object a = new Object(); // a的引用计数为1a = null; // a的引用计数为0,等待GC回收但是,引用计数法不能解决对象之间的循环引用,见下例Object a = new Object(); ...转载 2019-05-09 13:34:48 · 1650 阅读 · 0 评论 -
堆排序
堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是...转载 2019-05-06 21:32:13 · 152 阅读 · 0 评论 -
各种排序比较
快速排序是最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间近似为 ~cNlogN,这里的 c 比其它线性对数级别的排序算法都要小。参考:https://cyc2018.github.io/CS-Notes/#/notes/算法 - 排序?id=小结...原创 2019-05-06 21:38:25 · 301 阅读 · 0 评论 -
英语词汇
对象线程进程虚拟机同步机制递归调用原创 2019-05-09 17:00:32 · 142 阅读 · 0 评论 -
RabbitMQ
1.背景RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。2.应用场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是,邮件,短信并不是必须的,它...原创 2019-05-07 09:47:19 · 167 阅读 · 0 评论 -
秒杀项目中的rabbitmq使用
1 rabbitMQ基本原理和使用rabbitMQ原理Broker:简单来说就是消息队列服务器实体。Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。Queue:消息队列载体,每个消息都会被投入到一个或多个队列。Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。Routing Key:路由关键字,exchange根据这个关键字进行消...原创 2019-05-07 11:04:05 · 2057 阅读 · 2 评论 -
rabbitmq面试(来自牛客)
1.RabbitMq的消息类型、消息确认机制2.mq有哪些理解(讲了rabbitmq的模型,rabbitmq的特性,以及幂等问题),面试官问幂等如何解决(回答吧token存在redis里头,然后检测是否存在token),面试官问,难道不会有并发存token的情况吗(回答redis是单线程的,会有顺序,set同一个值成功会返回操作的行数)。3.rabbitmq交换机有哪几种模式,他是如何来保证数...原创 2019-05-07 16:47:50 · 348 阅读 · 0 评论 -
乐观锁、悲观锁
https://blog.csdn.net/qq_34337272/article/details/81072874#commentBoxhttps://www.jianshu.com/p/21be831e851e原创 2019-05-15 00:04:34 · 149 阅读 · 0 评论 -
volatile
volatile两大作用1.保证内存可见性。2.禁止指令重排序。内存可见性产生的原因上图为Java内存模型,由上图可知共享变量是保存在主内存中的,当一个线程需要操作共享变量时,需要从主内存拷贝一份共享变量的副本到本地内存,此时如果线程修改了共享变量,则会把修改后的值写回到本地内存,但该变量由本地内存写回主内存的时间是不可控的,只要没有写回主内存后续线程就无法读取到该变量的最新值,这是其一...转载 2019-05-15 08:47:08 · 211 阅读 · 0 评论 -
接口和抽象类
1.抽象类抽象类和抽象方法都使用 abstract 关键字进行声明。如果一个类中包含抽象方法,那么这个类必须声明为抽象类。抽象类和普通类最大的区别是,抽象类不能被实例化,需要继承抽象类才能实例化其子类。2.接口接口是抽象类的延伸,在 Java 8 之前,它可以看成是一个完全抽象的类,也就是说它不能有任何的方法实现。从 Java 8 开始,接口也可以拥有默认的方法实现。3.区别:从使用...原创 2019-05-15 13:39:16 · 145 阅读 · 0 评论 -
SprinBoot面试
1.springboot怎么启动的?遇到过什么问题吗?是放到tomcat吗?启动的时候加载的信息是什么东西?2.Spring 和 SpringBoot 的区别?3.SpringBoot 的 IOC 概念springboot启动过程SpringBoot的自动配置流程?7.springboot自动配置原理?9.springboot的注解springboot2和1的区别3.你是用的spr...原创 2019-05-07 23:25:46 · 148 阅读 · 0 评论 -
springboot启动流程
本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。总览:启动流程主要分为三个部分,第一部分进行SpringApplication的初始化模块,配置一些基本的环境变量、资源、构造器、监听器,第二部分实现了应用具体的启动方案,包括启动流程的监听模块、加载配置环境模块、及核心的创建上下文环境模块,第三部分是自动化配置模块,该模块作为spr...转载 2019-05-11 16:57:52 · 385 阅读 · 0 评论 -
单点登录
定义是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作。流程1、登录页面提交用户名密码。2、登录成功后生成token。3、把用户信息保存到redis。Key就是token,value就是用户对象(TbUser对象转换成json)。...原创 2019-05-16 12:29:04 · 242 阅读 · 0 评论 -
微服务
微服务架构微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种松耦合的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起。相对于单体架构和SOA,它的主要特点是组件化、松耦合、自治、去中心化,体现在以下几个方面:一组小的服务:服务粒度要小,而每个服务是针对一个单一职责的业...转载 2019-05-12 09:30:54 · 155 阅读 · 0 评论 -
Dubbo
Dubbo 是什么一款分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案Dubbo 架构流程图Provider:服务提供方Consumer:服务消费者Registry:注册中心Monitor:统计服务调用次数和调用时间的监控中心调用流程:0.启动服务提供者。1.服务提供者在启动时,向注册中心注册自己提供的服务。2.服务消费者在启动时,向注册中心订阅...原创 2019-05-12 13:00:58 · 115 阅读 · 0 评论 -
重写与重载
1.重写(Override)存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法。为了满足里式替换原则,重写有以下三个限制:子类方法的访问权限必须大于等于父类方法;子类方法的返回类型必须是父类方法返回类型或为其子类型。子类方法抛出的异常类型必须是父类抛出异常类型或为其子类型。2.重载(Overload)存在于同一个类中,指一个方法与已经存在的方法名称上相同,但是...原创 2019-05-16 18:52:54 · 153 阅读 · 0 评论 -
MyBatis面试
1、什么是Mybatis?mybatis是一个优秀的持久层框架,他对jdbc操作数据库的过程进行了封装,使开发着只用关注sql本身,不用去关注例如注册驱动,加载链接,得到statement,处理结果集等复杂的过程。mybatis通过xml或者注解的方式,将要执行的各种sql语句配置起来,并通过Java对象和statement中的sql语句映射生成最终的sql语句,最后由mybatis框架执行s...转载 2019-05-13 11:14:50 · 326 阅读 · 0 评论 -
redis面试总结
1.redis怎么保证原子性redis 是单线程的事件循环,一个操作执行完了才执行下一个操作2.redis常用的数据结构字符串(string)、列表(list)、无序集合(zset)、有序集合(set)、散列表(hash)3.redis线程安全吗redis采用了线程封闭的观念,把任务封闭在一个线程,自然避免了线程安全问题,不过对于需要依赖多个redis操作的复合操作来说,依然需要锁,而且...原创 2019-05-29 21:47:39 · 364 阅读 · 0 评论 -
new出来的对象
原创 2019-06-02 09:20:23 · 522 阅读 · 0 评论 -
innodb和Myisam存储引擎对比
原创 2019-06-04 09:45:17 · 159 阅读 · 0 评论 -
SQL的join
原创 2019-06-04 10:12:47 · 118 阅读 · 0 评论 -
索引重点
创建原则:索引失效:原创 2019-06-04 15:16:02 · 127 阅读 · 0 评论 -
并发
一、线程状态转换二、使用线程实现 Runnable 接口实现 Callable 接口继承 Thread 类与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。实现接口 VS 继承 Thread:Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口;三、ExecutorExecutor:...原创 2019-06-25 12:37:42 · 166 阅读 · 0 评论