自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springboot+springcloud+Eureka 实现微服务系统架构

关于Spring Cloud:Spring cloud并不是一个项目,它是一套项目的组合,Spring cloud中存在很多的子项目,每一个子项目都是针对微服务系统架构存在的问题给出的一种解决方案,Springcloud是基于Springboot实现的,Springcloud并没有重复的造轮子,它只是将目前各家公司开发的比较成熟,经得起实际考验的服务组合起来使用Spring cloud搭建...

2019-03-29 17:31:14 1204

原创 关于HTTP协议的相关问题

1. HTTP响应的结构是怎么样的:HTTP响应由三个部分组成:状态吗(status code):描述了响应的状态,可以用来检查是否成功的完成了请求,请求失败的情况下,状态吗可以用来找出失败的原因,如果servlet没有返回状态码,默认会返回成功的状态码HTTP头部(HTTP Header):它们包含了更多关于响应的信息,比如:头部可以指定认为响应过期的过期日期。或者是指定用来给用户安...

2019-03-29 00:32:24 330

原创 关于web应用程序中的常见问题

1. 什么事web应用程序:web应用程序是对web或者应用服务器的动态扩展,有两种类型的web应用:面向表现和面向服务的,面向表现的web应用程序会产生包含了很多种标记语言和动态内容的交互的web页面作为对请求的响应,而面向服务的web应用实现了web服务的端点,一般来说,一个web应用可以看成是一组安装在服务器url名称空间的特定子集下面的servlet的集合2.什么事服务端包含(se...

2019-03-29 00:16:28 1023

原创 doget()方法和dopost()方法有什么区别

doget():get方法啊会把名值对追加在请求的url后面,因为url对字符数目有限制,进而限制了用在客户端请求的参数值得数目,并且请求中的参数值是可见的,因此敏感信息不能用这种方式传递dopost():post方法通过把请求参数值放在请求体重来克服get方法的限制,因此,可以发送的参数的数目是没有限制的,最后,通过post请求传递的敏感信息对外部客户端是不可见的...

2019-03-28 23:49:30 2068

原创 servlet的体系结构和生命周期

1. 什么是servlet:servlet是用来处理客户端请求并产生动态网页内容的Java类,servlet主要是用来处理或者是存储html表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息2. servlet的体系结构:所有servlet都必须要实现的核心接口是Javax.servlet.Servlet,每一个servlet都必须要直接或间接的实现这个接口,或者是继承...

2019-03-28 23:43:51 425

原创 Java中数据库的连接

1.什么是JDBC:JDBC是Java数据库连接,提供不同数据库进行统一访问的工具,JDBC允许开发者用Java写数据库应用程序,而不需要关心底层数据库的细节2.JDBC的Driver驱动:JDBC驱动提供了特定厂商对JDBC API接口类的实现,驱动必须要提供Javasql包下面这些类的实现:Connection,preparedStatement,CallableStatement...

2019-03-28 23:14:24 393

原创 Java中的异常

1.Java中的两种异常类型以及区别:Throwable是所有异常的根,Error是错误,Exception是异常1.1 Exception:一般分为Checked异常(受检查异常)和Runtime异常(运行时异常),所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedExceptionChecked异常:对Ch...

2019-03-28 21:43:17 221

原创 单体架构和微服务系统架构的优缺点

单体架构所谓的单体架构就是把所有的业务模块编写在一个项目中,最终会打包成一个war包,然后进行部署单体架构的优点:部署简单:由于是完整的结构体,可以直接部署在一份服务器上即可技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发用人成本低:单个程序员可以完成业务接口道数据库的整个流程单体架构的缺点:系统启动慢:一个进程包含了所有的业务逻辑,涉及到的启动模块过多...

2019-03-28 16:57:40 14443

原创 关于Java虚拟机中的垃圾回收---面试题

1.Java中垃圾回收的目的:垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源2.什么时候进行垃圾回收:垃圾回收是在内存中存在没有引用的对象或超过作用域的对象时进行的3.system.gc() 和 runtime.gc() 会做什么事情:这两个方法用来提示jvm要进行垃圾回收,但是,立即开始还是延迟进行垃圾回收是取决于jvm的4.finalize() 方法什么...

2019-03-28 11:03:51 1084

原创 ArrayList 和 LinkedList 的区别

ArrayList 和 LinkedList 都实现了List接口,区别主要有以下几点ArrayList底层使用的是数组,优点数组查询具有索引查询速度比较快,插入删除修改比较慢(因为数组在内存中是一块连续的内容,如果插入或删除是需要移动内存,所以比较慢)使用场景是使用在查询比较多,插入和删除比较少的情况LinkedList底层使用的是链表,链表不需要内存是连续的,在当前元素中存放下一个或上一...

2019-03-28 10:28:09 161

原创 Thread 类中的:sleep(),join(),wait(),yield()区别详解

1. sleep():Thread.sleep(1000);在指定时间内让当前执行的线程暂停执行一段时间,让其他线程有机会继续执行,但不会释放对象锁,也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据,不推荐使用,sleep() 使当前线程进入阻塞状态,在指定时间不会执行。2. wait():对象的方法,会释放对象锁wait()和notify()、notif...

2019-03-27 17:34:12 3026

原创 Java中的 Iterator 迭代器

迭代器是一种设计模式,它是一个对象,可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构1. Iterator 接口中定义的几个常用方法:next():获取序列中的下一个元素hasNext():检查序列中是否还有元素remove():将迭代器返新返回的元素删除2. 使用 Iterator 迭代器遍历集合中的元素:public static void main(Strin...

2019-03-27 15:44:56 185

原创 Java中产生死锁的原因以及死锁的解除

1. 产生死锁的主要原因:因为系统资源不足进程运行推进的顺序不合适资源分配不当等如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁,其次进程运行推进顺序与速度的不同也可能产生死锁2. 产生死锁的四个必要条件:互斥条件:一个资源每次只能被一个进程使用请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放不剥夺条...

2019-03-27 14:30:45 336

原创 线程中同步方法和同步代码块的区别

1. 为什么要使用同步:java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。2.同步方法:即有synchronized关键字修饰的方法由于 Java的每个对象都会有一个内置锁,当用此关键字修饰方法时,内置锁会...

2019-03-27 14:11:20 1338 1

原创 线程的几种状态

线程从创建,运行到结束需要经历下面五个状态:新建状态,就绪状态,运行状态,阻塞状态以及死亡状态,可参照下图理解1.新建状态(new):当线程对象创建后,即进入了新建状态,此时程序还没有运行线程中的代码,如:Tread t = new MyThread()2.就绪状态(Runnable):一个新创建的线程并不会自动开始运行,要执行线程,必须调用线程的 Start() 方法,当调用线程...

2019-03-27 13:44:30 152

原创 创建线程的4种方式以及实现的代码

创建一个线程有四种方式:继承Thread类创建线程实现Runnable接口创建线程使用Callable和Future创建线程使用线程池例如用Executor框架1.继承Thread类创建线程:创建线程的步骤:定义Thread类的子类,并重写该类的 run() 方法,该方法的方法体就是县城需要完成的任务,run() 方法也成为线程的执行体创建Thread子类的实例,也就是创建了...

2019-03-27 11:38:06 1417

原创 进程和线程的区别与联系

1.进程:进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位2.线程:线程是进程的一个执行单元,是进程内科调度实体,比进程更小的独立运行的基本单位,线程也被称为轻量级进程一个程序至少一个进程,一个进程至少一个线程3.进程与线程的练习:每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用...

2019-03-27 11:02:14 221

原创 关于值传递和引用传递

1.值传递:在值传递过程中,形式参数类型是基本数据类型,当用方法调用时,实际参数将它的实际值传递给形式参数,此传递过程就是将实参的值复制一份传递给形参,而形参只是用实参的参数值初始化自己的存储单元内容,是两个不同的存储单元,这样如果在函数中对形参的值进行了操作将不会影响实参的值,因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下2.引用传递:在引用传递中,形式参数类型是引...

2019-03-26 23:33:29 381

原创 Java中的构造方法

1. 构造函数的特点:构造函数 ,主要用来在创建对象时初始化对象, 为对象成员变量赋初始值。一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们,这就是构造函数的重载构造函数的主要作用是完成对象的初始化工作,当创建一个对象进行初始化时,如果构造函数不为空,则会在创建对象时执行构造函数里面的代码构造函数的名称必须与类名相同,必须大小写,构造函数没有返回值,不能用voi...

2019-03-26 22:11:26 142

原创 关于JDK,JVM和JRE的区别

1.Java运行时环境(JRE):它包括Java虚拟机,Java核心类库和支持文件,JRE是Java运行环境,既然是运行,当然要包含jvm,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户2.Java开发工具包(JDK):是完整的Java软件开发包,包含了jre,编译器和其他的工具:JavaDoc,Java调试器,可以让开发者开发,编译...

2019-03-26 20:52:56 639

原创 Java中线程池的原理以及实现

1.为什么使用线程池,好处是什么:有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,而有了线程池,就可以通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销,还可以对线程进行一些维护和管理比如定时开始,周期执行,并发控制等等...

2019-03-24 23:45:49 105

原创 事务的几个特性以及事务的隔离级别

事务是并发控制的单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位,例如转账,两个账户金额的变动必须同时成功事务的四个特性:1. 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2. 一...

2019-03-23 23:59:18 138

原创 Java面向对象的四个特征

四大基本特征:封装,抽象,继承,多态1. 封装性:就是将对象封装成一个封闭的个体,对象属性有这个对象自己的方法来读取和改变。用私有隐藏自己的属性,别人只能通过共有的方法来改变属性(get和Set方法)2. 抽象性:抽象性就是将对象的相同之处归为一个类3. 继承性:在实现一个类的时候可以在一个已经存在的类的基础上进行,可以加入新的方法或者修改原有的方法,不能继承构造函数,静态代...

2019-03-23 23:51:43 239

原创 Java跨平台原理详解

Java通过不同系统,不同版本,不同位数的Java虚拟机(jvm)来屏蔽不同的系统指令集差异,而对外提供统一的接口(Java API)来实现Java程序的跨平台运行1. Java源文件的编译过程:Java编译程序将Java源程序翻译为jvm虚拟机可执行的代码,也就是字节码2. Java解释器的执行过程:运行jvm的工作是由解释器来完成的,解释器执行过程分为3步:代码的装入,代码的校验,代码...

2019-03-23 23:37:44 187

原创 SpringBoot整合 Mybatis+freemarker

使用SpringBoot整合MyBatis+freemarker实现一个web项目的简单流程以及配置:1. 在pom.xml中导入相关依赖:<dependencies> <!-- springboot中的web依赖 --> <dependency> <groupId>org.springframework.boot</grou...

2019-03-23 15:37:41 541

原创 java开发中打印日志的log4j插件所需配置

项目开发中我们会用到日志打印插件来在控制台打印程序运行的相关信息,有助于我们的开发过程中更方便直观的发现程序运行中的错误,下面是日志打印插件log4j 所需要用的几个配置:1. 在pom中添加log4j的相关依赖jar包: <!--打印日志 --> <dependency> <groupId>org.slf4j</groupId> ...

2019-03-22 20:21:10 732

原创 java中使用md5实现数据加密存储

在java项目中的一些数据存储操作时比如密码,使用加密后的字符串存储会更加安全,删除线格式1. 首先创建一个工具类,用来放md5加密方法方便其他地方可以调用:import org.apache.commons.codec.digest.DigestUtils;public class MyUtil { //字符串加密 public static String md5(String ...

2019-03-22 20:09:28 1868

原创 java项目中rides的使用

项目开发中一些特定的数据我们不一定要关系型数据库来存储,使用非关系型数据库反而更方便读取数据,效率高,这里介绍一下在java中rides的使用1. 导入rides所需要的相关依赖jar包(在pom文件中): <!-- jedis工具包 --> <dependency> <groupId>redis.clients</groupId>...

2019-03-22 19:43:29 15994 2

原创 Nginx实现负载均衡以及多服务器之间的session共享

前面一篇文章是介绍了Nginx的反向代理原理,这里要说的负载均衡就是利用反向代理的原理来实现的,也可以点击了解:Nginx反向代理实现原理1.什么是负载均衡:当一台服务器的单位时间内的访问量越大时,服务器压力就越大,达到超过自身承受能力时,服务器就会崩溃,为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器的压力服务器可以有很多,组成一个服务器集群,当用户访问网站时,...

2019-03-22 16:54:28 1089

原创 对Nginx反向代理的理解以及具体使用

在这里主要描述一下Nginx反向代理的一些特性以及对多台服务器进行反向代理的一个实现1.Nginx的几个特性:作为Web服务器:Nginx作为web服务器使用更少的资源,支持更多的并发连接,体现更高的效率,能够支持高达50000个并发连接数的响应作为负载均衡服务器:Nginx可以支持作为HTTP代理服务器,对外进行服务,Nginx用C语言编写,不论是系统资源开销还是CPU使用率都比Perl...

2019-03-22 13:58:10 785

原创 jvm虚拟机中常用的几种垃圾回收算法

Java语言是不需要程序员手动管理内存的,jvm虚拟机自动管理内存,进行垃圾回收,这里说几种常用的垃圾回收算法以1. 复制算法:此算法把内存空间分为两个相等的区域,每次只使用其中一个区域,垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一块区域当中,此算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不会出现碎片问题,缺点是需要两倍的内存空间...

2019-03-22 00:29:15 383

原创 java内存模型详解以及Java堆的分代

jvm是java的核心和基础,在java编译器和os平台之间的虚拟处理器,JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,使用JVM就是为了支持与操作系统无关,实现跨平台。1.jvm的内存模型包括以下几部分:方法区:是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据Java堆:堆用来存储几乎所有对象、数组等都在此分配内存,在jvm...

2019-03-22 00:13:44 614

原创 SpringMVC配置详解以及工作流程

1. SpringMVC配置详解:配置激活@controller和@RequestMapping注解的语句配置静态资源过滤器配置视图解析器,如果使用freemarker插件视图解析器的配置在后面实现文件上传插件的配置也放在这里拦截器的配置 <!-- 配置springmvc的请求映射--> <!-- 由于springmvc的配置一般由注解来完成, --> ...

2019-03-21 19:55:48 276

原创 MyBatis实现原理以及配置详解

在开发中持久层框架MyBatis是支持定制化sql,存储过程以及高级映射的,在使用时候能够动态的执行sql也是MyBatis的核心竞争力之一1.Mybatis配置详解:创建数据源,先读取properties文件中的数据,连接数据库url,driver,name,pwd等信息创建sqlsession工厂函数对象用来调用mapper映射操作创建dao层的实现类配置事务管理类 这里也可以...

2019-03-21 18:57:59 524

原创 使用富文本编辑器wangEditor完成图片文件的上传

项目中一些特定的功能可能需要在页面中用到富文本编辑器来实现文件的输入上传等等,在这里用wangEditor来实现使用富文本编辑器进行文件图面的输入和上传保存,这里wangEditor也可以参考wangEditor使用文档1.引入相关的wangEditor.js和jquery文件:<head><script type="text/javascript" src="/stati...

2019-03-21 17:09:47 5363

原创 Java内存分配:堆和栈

Java中的内存分配主要包括以下几个(不全面):寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,对象本身存放在堆中堆:存放new出的数据和数组常量池:存放常量1.Java内存分配中的栈:函数中定义的一些基本类型的变量数据和对象的引用地址都在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当该变量退出作用域后,Java会自动释...

2019-03-21 00:39:50 133

原创 spring+redis+Interceptor拦截器实现登录功能

这里要完成的功能有以下几点:**1. 登录时用户名密码的验证登录成功后用户数据存到session中使用cookie实现3天免登陆效果使用rides存取用户信息使用拦截器过滤非法请求退出登录清空session,cookie,rides**1.登录的用户名密码从js接收传到controller调用service方法做处理,这里直接写service中的处理过程:1. 登录时根据邮箱和...

2019-03-20 20:54:23 2180

原创 实现注册功能添加邮箱激活验证

我们平时注册一些平台账户的时候经常会有使用邮箱激活验证或者短信验证码验证才能注册成功,这两个功能都是调用邮箱或者运营商提供的接口来完成响应的验证功能,只不过运营商需要收费这里就演示一下通过发送邮箱激活验证的邮件来完成一个注册功能1. 首先需要使用邮箱的接口需要导入邮箱的jar包,这里直接在pom.xml中依赖: <!-- 邮件工具包 --> <dependency&gt...

2019-03-20 20:10:49 1195

原创 常见的异常类型

1. 从异常类的继承架构图中可以看出:Exception类扩展出数个子类,其中IOE,RuntimeException是较常用的两种2.习惯上将Error与Exception类统称为异常类,但这两者本质上还是有不同的,Error类专门用来处理严重影响程序运行的错误,java虚拟机出错就属于一种Error3.Exceptin 类包含了一般性的异常,这些异常通常在捕捉到之后便可做妥善处理确保程序...

2019-03-19 20:24:21 1272

原创 java异常中throw和throws的用法和区别

java抛出异常的三种形式,throw,throws和系统自动抛出异常,在这里说一下throw和throws的用法以及区别1. throw:throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出特定类型的异常2. throws:throws是方法可能抛出异常的声明,用在声明方法时,表示该方法可能抛出异常,然后交给上层调用它的方法处理3. throw和...

2019-03-19 20:13:12 2269 1

空空如也

空空如也

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

TA关注的人

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