自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试官,别再问我了---map的几种遍历方式

第一种:普遍使用,二次取值,通过Map.keySet遍历key和value//先通过map.keySet()方法获取key,再通过map.get(key)获取value值for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); }...

2020-04-30 09:57:22 253

原创 HTTP协议和TCP协议简介

HTTP协议什么是HTTP?http就是Hyper Text Transfer Protocol(超文本传输协议)的简写HTTP协议规定了浏览器怎样向万维网服务请求万维网文档,以及服务器怎样把文档传送给浏览器。在服务器和浏览器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议HTTP。HTTP规定在HTTP客户和HTTP服务器之间的每次交互,都由一...

2020-04-15 23:10:28 2585

原创 关于面试官问的object的常用方法和SQL优化--问题总结

1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。2.getClass方法final方法,获得运行时类型。3.toString方法该方法用得比较多,一般子类都有覆盖。4.finalize方法该方法用于释放资源。因为无法确定该方法什么

2020-06-17 13:36:48 212

原创 关于面试官问的死锁和线程之间通信----问题总结

1.死锁问题产生?解决方法?死锁,指的是多个线程在运行过程中因争夺资源而造成的一种僵局,当线程处于这种僵持状态时,若无外力作用,他们都将无法再向前推进。举例:此时有一个线程A,按照先锁a再获得锁b的顺序获得锁,而在此时同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。产生死锁的原因:1. 竞争资源产生死锁中的竞争资源之一指的是竞争不可剥夺资源和临时资源2.进程间推进顺序非法若P1保持了资源R1,P2保持了资源R2,系统处于不安全状态,因为这两个线程再向前推进,便可能发生死锁例如,当P1运

2020-06-17 13:18:16 257

原创 Java序列化和反序列化为什么要实现Serializable接口

序列化序列化和反序列化是什么?实现序列化和反序列化为什么要实现Serializable接口?实现Serializable接口就算了, 为什么还要显示指定serialVersionUID的值?序列化和反序列化是什么?序列化:把对象转换为字节序列的过程称为对象的序列化.反序列化:把字节序列恢复为对象的过程称为对象的反序列化.实现序列化和反序列化为什么要实现Serializable接口?当我们只在本地JVM里运行下Java实例, 这个时候是不需要什么序列化和反序列化的, 但当我们需要将内存中的对象持久化

2020-05-18 13:14:00 527

原创 Spring cloud入门,跟我一起从零开始学微服务springcloud(六)----Zuul路由网关是什么

Zuul包含了对请求的路由和过滤两个最主要的功能:其中,路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。而过滤器功能负责对请求的处理过 程进行预,是实现请求校验、服务聚合等功能的基础Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用, 同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。注意:Zuul服务最终还 是会注册进Eureka相当于提供了代理、路由、过滤的功能。(待更新)…...

2020-05-15 16:38:14 150

原创 Spring cloud入门,跟我一起从零开始学微服务springcloud(五)----hystrix断路器是什么?

首先,了解个名词----服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出"。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程 序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。

2020-05-15 15:38:30 151

原创 Spring cloud入门,跟我一起从零开始学微服务springcloud(四)一山不容二虎,除非一公一母之----Feign负载均衡

Feign是个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易,只需要创建一个接口,然后在上面添加注解即可Feign能干什么feign旨在使编写Java Http客户端变得更容易前面在使用 Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基

2020-05-15 13:25:53 156

原创 Spring cloud入门,跟我一起从零开始学微服务springcloud(三)----Ribbon负载均衡

Ribbon是什么?Spring Cloud Ribbon是基于Netflix Ribbon现的一套客户端负载均衡的工具。简单的说, Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix的中间层服务连接在一起。 Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出 Load Balancer(简称LB)后面所有的机器, Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等去连接这些机器。我们也很容易使

2020-05-14 15:34:55 153

原创 Spring cloud入门,跟我一起从零开始学微服务springcloud(二)一山不容二虎,除非一公一母之----Eureka和zookeeper区别

Eureka服务注册与发现什么是Eureka?什么是自我保护模式?作为服务注册中心,Eureka比zookeeper优秀在哪?什么是Eureka?下面,我们先看一下官网对它的解释和定义:Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心

2020-05-13 16:01:44 215

转载 布隆过滤器----来自弗雷尔卓德之心·布隆的一篇自传(干货转载)

先贴上原文出处:https://www.cnblogs.com/myseries/p/11974746.html海量数据处理以及缓存穿透这两个场景让我认识了布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!下面我们将分为几个方面来介绍布隆过滤器:弗雷尔卓德之心·布隆在此1.什么是布隆过滤器?2.布隆过滤器的原理介绍。3.布隆过滤器使用场景。4.通过 Java 编程手动实现

2020-05-12 14:14:42 206

转载 RPC和REST的区别----dubbo和springcloud的根本区别(转)

原文路径:https://www.cnblogs.com/renjiaqi/p/12081912.htmlOSI网络七层模型第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;第四层:传输层。管理着网络中的端到端的数据传输;第五层:网络层。定义网络设备间如何传输数据;第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;第七层:物理层。这一

2020-05-12 10:20:36 1781 1

原创 Spring cloud入门,跟我一起从零开始学微服务springcloud(一)----springcloud概述

首先,给大家介绍个大佬,也就是提出微服务的马丁福勒https://martinfowler.com/articles/microservices.html文章目录什么是微服务?什么是微服务架构?微服务的优点?微服务的缺点?微服务的技术栈?spring cloud 和spring boot的关系?spring cloud 和Dubbo的区别和联系?什么是微服务?微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技

2020-05-11 16:57:51 317

原创 震惊!!!原来HashMap的底层实现原理竟然是。。。?

HashMap在jdk1.7之前的底层用的是数组+链表的形式;在1.8之后的底层用的是数组+链表+红黑树的形式。下面,我们来一步一步分析。HashMap map = new HashMap()在实例化后,底层创建了长度是16的一维数组Entry[] table.…可能已经执行过多次put…map.put(key1,value1);1.首先调用key1所在类的hashCode()计算key1哈希值,此哈希值经过某种算法计算以后,得到在Entry数组中的存放位置。(由于哈希值比较大,不能作为数组

2020-05-09 15:45:41 1385

原创 spring 中的事务

Spring中七种事务传播行为1.PROPAGATION_REQUIRED – 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。2.PROPAGATION_SUPPORTS – 支持当前事务,如果当前没有事务,就以非事务方式执行。3.PROPAGATION_MANDATORY – 支持当前事务,如果当前没有事务,就抛出异常。4.PROPAGATION_REQUIRES_NEW – 新建事务,如果当前存在事务,把当前事务挂起。5.PROPAGATION_NOT_SUPPORTED

2020-05-09 10:25:59 263

原创 Redis---你告诉我什么特么的叫惊喜?哦不,什么特么的叫缓存穿透?

假设:现在有一万个人同时请求,刚开始的时候,Redis中没有我们想要的数据,Redis是在内存中操作的,承载压力大约10万,没什么问题。当get不到的时候,代码继续向下走。代码走到查询数据库,一万人同时请求数据库,会瞬间造成数据库服务器压力增大。请求更多的话,有可能造成数据库卡死或崩掉。这就是缓存穿透问题,简单来说就是请求击穿了缓存直接请求数据库,造成数据库压力。解决思路:当一个人请求过来...

2020-05-08 11:34:38 162

原创 Springboot 热部署----热部署插件的使用

热部署有什么用?什么是热部署?在实际开发中,我们修改某些代码逻辑功能或页面后都需要重启应用,这无形中降低了开发效率。因此,热部署出来了。热部署就是指当我们修改代码后,服务能自动重启加载新修改的内容,这样大大的提高了我们开发的效率。springboot热部署可通过添加一个插件spring-boot-devtools实现。<!--springboot 开发自动热部署插件--> ...

2020-05-08 10:06:39 624

原创 springboot对事务的支持--直接代码上手带你研究

1.在入口类中使用@EnableTransactionManagement注解,开启事务支持package com;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springfr...

2020-05-07 17:19:51 200

原创 解决在数据库连接时,或在mybatis自动生成代码时,报Unknown system variable 'tx_isolation'的错误。

问题原因就是mysql数据库版本和mysql数据库连接的jar包之间版本差不兼容。1.首先检查pom.xml中的数据库连接jar包的版本。如果你的mysql版本是8.0以上,那么连接jar包版本最好也是8.0以上。cmd进入命令窗,输入mysql -uroot -p 再输入密码,查看mysql版本号在pom.xml中添加此依赖。<dependency> ...

2020-05-07 16:55:08 656

原创 一步到位,解决Invalid bound statement (not found): com.xxx.dao.xxxDao.selectByxx错误!!!!

我在使用idea,用springboot集成mybatis时,后台报了这样的错误org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zc.book.dao.CourseMapper.selectAllCourse页面出现的是这样的错误错误的原因一目了然,就是找不到我们的配...

2020-05-07 16:36:52 986

原创 啥是那个MQ----RabbitMQ和AcitveMQ

1. RabbitMQ:RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系 统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦, 消息的发送者无需知道消息使用者的存在,反之亦然.RabbitMQ 本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适...

2020-05-07 11:02:44 416

原创 啥是那个Mybatis--Mybatis框架介绍

1.mybatis用来干什么2.mybatis是什么

2020-05-07 10:55:04 296

原创 啥是那个spring----spring框架介绍(三)

11.介绍一下Spring AOP里面的几个名词切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。在SpringAOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或...

2020-05-07 10:03:59 192

原创 啥是那个spring----spring框架介绍(二)

7.谈谈spring的事务管理spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象.声明式使用TransactionProxyFactoryBean:PROPAGATION_RE...

2020-05-07 09:54:24 133

原创 啥是那个spring----spring框架介绍(一)

1.谈谈你对Spring的理解概念:Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。Spring也是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。特点:① Spring实现了工厂模式...

2020-05-07 09:45:40 183

原创 springboot多环境配置文件以及从yml中取值

如何从yml中获取值

2020-05-06 16:33:28 1479 1

原创 使用idea入门springboot(小了个白,入了个门)

1.点解File ,new一个新项目,新建一个Module2.点击Spring Initializr ,之后选择自己的jdk。然后点击next3.自己填写对应的GAV,以及包名等,之后点击next4.点击web ,选中springweb,选择自己用的springboot版本号。或者用默认的,最后点击next。5.编辑好项目名和项目路径,点击Finish。6.等待idea加载,之...

2020-05-06 15:08:05 196

原创 面试---SpringMVC的执行流程是什么?请简单阐述一下。

1、用户发送请求至前端控制器DispatcherServlet2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、DispatcherServlet调用HandlerAdapter处理器适配器5、HandlerAdapter...

2020-05-06 11:47:52 274

原创 解决多线程安全问题的几种方式?

(1)同步代码块:在代码块声明上 加上synchronizedsynchronized (锁对象) {可能会产生线程安全问题的代码}同步代码块中的锁对象可以是任意的对象;但多个线程时,要使用同一个锁对象才能够保证线程安全。(2)同步方法:在方法声明上加上synchronizedpublic synchronized void method(){可能会产生线程安全问题的代码}同...

2020-05-06 11:38:21 1206 1

原创 面试官,你继续问啊!!!---通配符的区别

List<? extends T>和List<? super T>之间有什么区别,并给出使用场景?两者同为Java泛型的通配符,其中的extends 和 super 两个关键字分别可以解释为 一父多子、一子一父。区别:List<? extends T>描述了通配符上界,即参数化的类型必须是T类型或它的子类。List<? super T>描述了...

2020-05-06 11:20:43 235

原创 面试官,你继续问啊!!!---如何能使 JVM的堆、栈发生内存溢出,并给出实例代码?

堆中主要存储的是对象,所以一直不断的创建对象则会导致堆中的内存溢出。栈中主要存储的每个方法执行时创建的栈帧,所以方法的递归调用会导致栈内存溢出。下列给出两种内存溢出的实例代码: /** 堆内存溢出 */ public class HeapOutOfMemory { public static void main(String[] args) { List list ...

2020-04-30 17:03:31 248

原创 面试官,别再问我了---SQL之左连接,右连接,内连接

首先,我无中生有两张表:student学生表和课程分数表course,两张表通过course_id和student_id表进行关联。1.左连接(left join 表 on 关联条件)SQL语句:select a.*,b.* from course a LEFT JOIN student b on a.course_id = b.student_id结果如图:结论:左连接时,...

2020-04-30 14:19:20 1586

原创 BDF2入门--跟我一起了解老古董(一)

BDF2与BDF1相比,是一套全新开发的企业应用开发框架,它继承并改进了BDF1中提供了相关功能,通过提供一系列的工具,降低开发人员的使用门槛,更为重要的是,BDF2中所有模块,皆以Dorado7 Addon形式存在,以于一些需要在页面中展现的元素,诸如报表展现、用户个性化、数据导出等,全部以标准Dorado7组件形式提供。在BDF2,允分利用接口替换机制,真正实现各功能模块之间的松耦合,对于B...

2020-04-30 09:44:01 2111

原创 ArrayList和LinkedList的底层实现原理

1.ArrayListArrayList 通过数组实现,一旦我们实例化 ArrayList 无参数构造函数默认为数组初始化长度为 10②,add 方法底层实现如果增加的元素个数超过了 10 个,那么 ArrayList 底层会新生成一个数组,长度为原数组的 1.5 倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。是一旦...

2020-04-29 13:58:29 2742

原创 Redis的数据存储结构

String类型通过 int、SDS(simple dynamic string)作为结构存储,int用来存放整型数据,sds存放字节/字符串和浮点型数据。**Hash(map)**提供两种结构来存储,一种是hashtable、另一种是ziplist,数据量小的时候用ziplist.redis3.2之前,List类型的value对象内部以linkedlist或者ziplist来实现, 当lis...

2020-04-29 13:52:13 251

原创 UDP和TCP协议

UDP(USER DATAGRAM PROTOCOL)用户数据报协议(广播协议).它是一种无连接的不可靠协议数据传输大小限制为64K(一个包)不需要建立连接即可传输数据发送速度快, 发送方只发送数据, 不检查接收方是否真正接收到数据, 所以数据有丢包的情况这种方式适合实时性要求强的场合, 比如网络电话, 网络游戏等环境, 这种协议延迟很小UDP的特点:面向无连接, 数据不安全,...

2020-04-29 13:44:16 147

原创 秒杀实现(理论层,待实现,持续更新...)---Redis

秒杀怎么做?秒杀也是电商项目很常见的功能,秒杀和传统的购物车模块并无关系,它需要单独建表,存储相关字段。秒杀一般有两种限制,库存限制,时间限制。因为秒杀,是在有限的时间内用户进行抢购,那么对数据库的压力就可想而知了。通常来说,玩秒杀玩的就是缓存。大致流程是这样,首先将所有秒杀商品id作为key,商品对象作为value存入redis缓存当中,用户访问秒杀页面时,第一次从数据库读取,以后就从re...

2020-04-29 13:25:44 153

原创 面试官,别再问我了---线程和synchronized

1.start()和run()方法区别?start()方法开启线程,无需等待run方法体代码执行完毕而直接执行下面的代码.run()方法是线程体,包含了要执行的这个线程的内容,run()方法运行结束,此线程随即终止.如果直接调用run方法,程序中依然只有主线程这一个线程.2.synchronized与lock的区别?synchronized是java的关键字,在jvm层面上,lock是一个...

2020-04-29 13:21:26 215

原创 面试官,别再问我了---抽象类和接口的区别

1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为publi...

2020-04-29 13:13:35 153

原创 Dubbo和它的好兄弟Zookeeper--简单介绍

Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架其核心部分包含:1. 远程通讯: 提供对多种基于长连接的NIO框架...

2020-04-29 11:47:22 195

一个简单的项目的资料源码.zip

一个项目,可用来练手。该项目是一个商城项目,你所知道的技术基本都包含,里面包括架构图。用到了rabbitmq,spring全家桶,缓存Redis,ElasticSearch,mysql集群,还有springcloud等,麻雀虽小五脏俱全,可以练练手,从系统级去思考问题,不再局限于开发级别。

2020-04-30

空空如也

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

TA关注的人

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