自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 个人面试题整理

1. 斐波那契数列的递归和迭代方法递归public static int f(int n){ if (n == 0){ return 0; } if (n == 1){ return 1; } return f(n-1) + f(n-2); }迭代public static int f(int n){ int f0 = 0;

2020-10-17 18:48:39 175

原创 JVM面试题整理

1. JVM 的主要组成部分及其作用?组成部分:Class loader(类装载)子系统:根据给定的全限定名类名来装载class文件到Runtime data area(运行时数据区域)中的method area(方法区)。Execution engine(执行引擎):执行classes中的指令。Native Interface(本地接口):与native libraries(本地方法库)交互,是其它编程语言交互的接口。Runtime data area(运行时数据区域):JVM的内存。作用

2020-09-26 13:27:30 210

原创 集合面试题整理

1. 常用集合类都有什么?Map和Collection是所有集合框架的父接口Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等Collection接口的子接口包括:Set接口和List接口Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等2. List,Set,Map三者的

2020-09-19 18:30:29 630

原创 整理的一些多线程面试知识点

一、创建线程的有哪些方式?继承Thread类创建线程类通过Runnable接口创建线程类过Callable和Future创建线程通过线程池创建二、Runnable和Callable的区别?Callable规定(重写)的方法是call(),Runnable规定(重写)的方法是run()。Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。Call方法可以抛出异常,run方法不可以。三、线程的生命周期及五种基本状态线程的生命周期包含5个阶段,包括:新建、

2020-09-13 17:16:20 109

原创 关于JS跨域问题

一、什么是跨域?想要了解跨域问题,首先我们要知道什么是同源策略。同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能。所谓同源(即指在同一个域)就是两个页面具有相同的协议protocol),主机(host)和端口号(port),所以当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域,也就是非同源,那么该请求url在向当前页面请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。这就是跨越问题。二、如何解决跨域问题?使用nginx

2020-09-05 16:14:06 146

原创 Swagger知识点整理

一、简介Swagger是一款目前世界最流行的API管理工具,能够管理API的整个生命周期,从设计、文档到测试与部署。用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。1. 特点:代码侵入式注解。遵循YAML文档格式。非常适合三端(PC、iOS及Android)的API管理,尤其适合前后端完全分离的架构模式。减少没有必要的文档,符合敏捷开发理念。功能强大。2. 优点:大大减少前后端的沟通方便查找和测试接口提高团队的开发效率方便了解项目3. 作用:接口的文

2020-08-23 08:53:35 284

原创 Hystrix

一、简介Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。二、应用场景在微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路。当某一个服务出现异常,同时又有大量请求需要调用该服务,就会导致大量请求被阻塞。由于服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。Hystrix中的线程隔离和服务降级是解决雪崩效应的有效手段。三、线程隔离和服务降级1.

2020-08-17 21:25:59 110

原创 SpringCloudBus实现远程配置中心的动态修改

一、背景在分布式系统中,由于服务数量非常多,配置文件分散在不同的微服务项目中,管理不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库(GitHub、码云)。但是单纯使用Config,无法做到动态修改配置,在Git仓库中修改配置后需要重启微服务才能够更新配置文件。但是结合Spring Cloud Bus就能够做到配置的动态修改,无需重启微服务。二、实现步骤1. 在

2020-08-17 16:28:07 397

原创 RestTemplate工具类

一、简介在微服务环境搭建里面的服务调用过程中,通常会使用到的一个叫做RestTemplate的工具类。RestTemplate是一个HTTP请求工具,继承自 InterceptingHttpAccessor 并且实现了RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTful 操作,所以RestTemplate工具类可提供常见的REST请求方案的模版,如:GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange

2020-08-15 10:06:50 3077

原创 Lombok——Idea中的使用

一、简介Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。二、Lombok的使用1. 安装插件打开Settings -> Plugins选项 -> 点击Browse repositories -> 输入lombok,并搜索 -> 安装,重启Idea即可2. 引入依赖<dependency> <groupId>or

2020-08-08 11:59:12 260

转载 YAML(YML)——入门

YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写;是一个可读性高,用来表达数据序列化的格式。YAML的应用场景之一是作为SpringBoot的配置文件。一、YAML和properties对比说到SpringBoot的配置文件,那就不得不提起SpringBoot推荐使用的properties,...

2020-08-02 10:47:14 1871

原创 Redis——面试题整理

1. Redis的优缺点优点:具有优异的读写性能,读写速度分别为110000次/s和81000次/s。支持数据的持久化(AOF和RDB两种方式。支持事务,Redis不仅所有操作都是原子性,而且支持对几个操作合并后的原子性执行。数据结构丰富,String、hash、set、zset、list等数据结构。支持主从复制,可读写分离。缺点:数据库容量受到物理内存的限制,不能用作海量数据的高性能读写。并且难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。所以应用场景被局限于较小数据量

2020-07-25 16:43:00 90

原创 Servlet面试题整理

Servlet和JSP面试题整理1. forward和redirect的区别?地址栏显示不同,forward地址栏显示的是原来的地址,因为其是由服务器请求资源,直接访问目标地址的URL,并读取响应内容,然后将内容发送至浏览器,浏览器并不知道目标地址。redirect显示的是新的URL,因为其是个是服务器根据逻辑发送状态码至浏览器,让浏览器重新请求目标地址,所以浏览器是知道目标地址的。数据共享方式不同,forward转发页面和目标页面均可共享request的数据。redirect则是不可以共享数据。

2020-07-11 18:50:38 3362

转载 关于Java异常的一些打印方法

关于Java异常的一些打印方法在程序员进行Java开发时通常都会遇到出现异常的情况,使用正确的异常打印方法能够帮助程序员快速的定位问题的位置和类型。一、常用的异常打印方法getMessage(): String输出异常的描述信息getLocalizedMessage()输出本地化的描述信息,其可被子类覆盖,缺省实现与getMessage()输出信息一致。printStackTrace()将异常栈打印到输出流中,此为一类方法,默认打印到console控制台,也可以显式指定输出流。fillI

2020-07-04 10:24:40 2137

原创 JSON的简单入门

一、什么是JSONJSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.二、JSON格式对象格式JSON中的用一个大括号来表示一个对象括号中可以通过键值对来描述对象的属性键与值之间使用冒号连接,多个键值对之间使用逗号分隔键应该使用引号引住值可以是JS中任意类型的数据示例: { "name":"金苹果", "info":"种苹果" }数组格式在JSON格式中可以与对象互相嵌套[元素1,元素2…]

2020-06-24 22:56:24 169

原创 关于Mysql的一些优化方法整理

1. 选取合适的字段属性例:数据库中,表越小执行查询越快,故在条件允许的情况下字段宽度越小越好。字段设置为NOT NULL,执行查询的时候,数据库不用去比较NULL值。将某些文本字段定义为EMUM(枚举类型),枚举类型被当做数值型数据来处理,处理速度比文本类型快。尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连 接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。2. 使用连接(JOIN)

2020-06-21 17:44:01 120

原创 关于MySQL表和字段注释

一、应用场景我们在Java或者c语言中通常会添加注释来增强代码的可读性,在MySQL中也是一样的,为了增加表的可读性,可以为表和字段添加注释。如下图所示(只增加了字段的注释):二、使用方法在MySQL中,给表和字段添加注释使用comment关键字。添加表和字段的注释mysql> create table data( -> Id int(10) not null primary key auto_increment unique comment'编号', ->

2020-06-14 16:22:56 276

原创 面试题--HashMap

1. HashMap中put方法的过程是什么?调用哈希函数获取Key对应的hash值,再计算其数组下标。如果没有出现哈希冲突,则直接放入数组;如果出现哈希冲突,则以链表的方式放在链表后面。如果链表长度超过阀值( TREEIFY THRESHOLD==8),就把链表转成红黑树,链表长度低于6,就把红黑树转回链表。如果结点的key已经存在,则替换其value即可如果集合中的键值对大于12,调用resize方法进行数组扩容。2. 拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什

2020-06-07 18:52:53 130

原创 JAVA——C/S基础要点

C/S程序:客户端与服务器程序本文是基于TCP协议的C/S程序。一、使用流程使用 ServerSocket 来搭建服务器使用 Socket 来搭建客户端两者使用 socket(套接字,通信端点)进行交流二、ServerSocket概念用于创建服务器,创建完毕后,会绑定一个端口号,然后此服务器等待客户端连接,每连接一个客户端,服务器就会的得到一个新的Socket对象,用于跟客户端进行通信。常用构造方法ServerSocket(int port)作用是创建一个基于TCP/IP

2020-05-31 10:38:39 229

原创 Collection集合

一、Collection接口概述是整个Java类集中保存单值的最大操作父接口,每次操作只能保存一个对象的数据。定义接口定义在java.util包中格式:public interface Collection <泛型> extends Iterable <泛型>常用方法特别的,通常开发中不直接使用Collection接口,而是使用他的两个子接口List和Set二、子接口List特点List接口中所存储的元素是允许重复的。定义格式:pu

2020-05-26 11:33:13 125

转载 Java显示锁和隐式锁的区别

显示锁lock和隐式锁synchronized的区别一、层面不同synchronized:Java中的关键字,是由JVM来维护的,是JVM层面的锁。synchronized底层是通过monitorenter进行加锁底层是通过monitor对象来完成的,其中的wait/notify等方法也是依赖于monitor对象的。并且只有在同步块或同步方法中,JVM才会调用monitory对象的,才可以调用wait/notify等方)通过monitorexit来退出锁Lock:是JDK5以后才出现的具

2020-05-20 20:58:10 453

原创 小白入门--Java线程池Executors

Java线程池一、什么是线程池简单来说,线程池就是一个容纳多个线程的容器,池中的线程可以反复使用。二、为什么要用线程池如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,由于频繁创建线程和销毁线程需要时间,所以频繁创建线程就会大大降低系统的效率。而池中的线程可以反复使用,省去了频繁创建线程对象的操作,降低资源消耗,提高响应速度,提高线程的可管理性。三、在哪里用线程池从第二点我们可以很清晰的看出,如果我们需要反复使用多个线程的时候,就可以使用线程池。四、如何使用线程池首先我

2020-05-20 20:29:54 129

转载 关于JAVA并发修改异常

关于JAVA并发修改异常一、产生原因当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。二、常见场景当我们在对集合进行迭代操作的时候,如果同时对集合对象中的元素进行某些操作,则容易导致并发修改异常的产生。三、示例代码 (ArrayList)public class Test { public static void main(String[] args){ ArrayList<String> list = new ArrayList<Stri

2020-05-17 18:28:26 496

原创 关于异常处理的一些知识点

异常处理概念异常是在程序中导致程序中断运行的一种指令流。异常处理格式try{// 有可能发生异常的代码段}catch(异常类型1 对象名1){// 异常的处理操作}catch(异常类型2 对象名2){// 异常的处理操作} …finally{// 异常的统一出口}注:关于finally作为异常处理的统一出口,是因为无论是否发生异常,finally必然执行,所以作为异 常统一处理出口异常的处理流程产生异常后,系统会自动产生一个异常类的实例化对象,若异常发生在tr

2020-05-09 20:10:20 211

原创 Java中在控制台实现五子棋

思路分析一、首先要打印出一个棋盘这是一个15*15的棋盘二、开始下棋,通过坐标来实现。三、下完以后要刷新棋盘,并判断输赢四、判断输赢的方法:1.水平方向:通过所下的坐标点来确定水平位置,遍历整行,并设置一个计数器,若其连续自加至5则胜利,若中途断掉则置零2.竖直方向:通过所下的坐标点来确定竖直位置,遍历整列,并设置一个计数器,若其连续自加至5则胜利,若中途断掉则置零3.判断右斜方...

2020-04-25 17:32:49 1675

空空如也

空空如也

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

TA关注的人

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