开发
大房子爱生活
这个作者很懒,什么都没留下…
展开
-
关于继承(extends)和实现(implements)
1.继承(extends):继承是子类与父类的继承1.1.可以减少代码量,常用方法可以直接继承父类的方法,提高编程效率,体现了可复用性1.2.java中不支持多继承1.3.继承是子类对父类的实例化2.实现(implements):实现是接口的实现2.1.使用接口只定义方法,没有方法体,实现该接口的类必须要实现接口里的所有方法2.2.实现该接口的类可以对接口中的方法灵活的根据实际情况定义...原创 2019-03-18 19:46:00 · 776 阅读 · 0 评论 -
关于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 · 681 阅读 · 0 评论 -
Java中的构造方法
1. 构造函数的特点:构造函数 ,主要用来在创建对象时初始化对象, 为对象成员变量赋初始值。一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们,这就是构造函数的重载构造函数的主要作用是完成对象的初始化工作,当创建一个对象进行初始化时,如果构造函数不为空,则会在创建对象时执行构造函数里面的代码构造函数的名称必须与类名相同,必须大小写,构造函数没有返回值,不能用voi...原创 2019-03-26 22:11:26 · 168 阅读 · 0 评论 -
Java跨平台原理详解
Java通过不同系统,不同版本,不同位数的Java虚拟机(jvm)来屏蔽不同的系统指令集差异,而对外提供统一的接口(Java API)来实现Java程序的跨平台运行1. Java源文件的编译过程:Java编译程序将Java源程序翻译为jvm虚拟机可执行的代码,也就是字节码2. Java解释器的执行过程:运行jvm的工作是由解释器来完成的,解释器执行过程分为3步:代码的装入,代码的校验,代码...原创 2019-03-23 23:37:44 · 194 阅读 · 0 评论 -
Java面向对象的四个特征
四大基本特征:封装,抽象,继承,多态1. 封装性:就是将对象封装成一个封闭的个体,对象属性有这个对象自己的方法来读取和改变。用私有隐藏自己的属性,别人只能通过共有的方法来改变属性(get和Set方法)2. 抽象性:抽象性就是将对象的相同之处归为一个类3. 继承性:在实现一个类的时候可以在一个已经存在的类的基础上进行,可以加入新的方法或者修改原有的方法,不能继承构造函数,静态代...原创 2019-03-23 23:51:43 · 293 阅读 · 0 评论 -
事务的几个特性以及事务的隔离级别
事务是并发控制的单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位,例如转账,两个账户金额的变动必须同时成功事务的四个特性:1. 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2. 一...原创 2019-03-23 23:59:18 · 149 阅读 · 0 评论 -
关于值传递和引用传递
1.值传递:在值传递过程中,形式参数类型是基本数据类型,当用方法调用时,实际参数将它的实际值传递给形式参数,此传递过程就是将实参的值复制一份传递给形参,而形参只是用实参的参数值初始化自己的存储单元内容,是两个不同的存储单元,这样如果在函数中对形参的值进行了操作将不会影响实参的值,因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下2.引用传递:在引用传递中,形式参数类型是引...原创 2019-03-26 23:33:29 · 400 阅读 · 0 评论 -
进程和线程的区别与联系
1.进程:进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位2.线程:线程是进程的一个执行单元,是进程内科调度实体,比进程更小的独立运行的基本单位,线程也被称为轻量级进程一个程序至少一个进程,一个进程至少一个线程3.进程与线程的练习:每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用...原创 2019-03-27 11:02:14 · 238 阅读 · 0 评论 -
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 · 562 阅读 · 0 评论 -
java开发中打印日志的log4j插件所需配置
项目开发中我们会用到日志打印插件来在控制台打印程序运行的相关信息,有助于我们的开发过程中更方便直观的发现程序运行中的错误,下面是日志打印插件log4j 所需要用的几个配置:1. 在pom中添加log4j的相关依赖jar包: <!--打印日志 --> <dependency> <groupId>org.slf4j</groupId> ...原创 2019-03-22 20:21:10 · 760 阅读 · 0 评论 -
java中的四种访问修饰符
对于四种访问修饰符的作用范围以及用法等等,一直都是模模糊糊,在这里整理了一下分享出来,希望对大家也能有所帮助1.我们都知道java的面向对象思想之一就是封装细节公开接口,java通过访问控制修饰符来控制类及类的方法和变量的访问限制从而向外提供接口隐藏细节2.四种访问修饰符的作用范围排序:public > protected > default > private2.1.p...原创 2019-03-18 20:20:14 · 1010 阅读 · 1 评论 -
java中关键字this和super的用法和区别
this和super的用法以及它们的区别在这里做了一些整理,大家可以参考使用1. this:this是自身的一个对象,以下是几种用法:1.1.当形参与成员变量重名时,用this来区分,this.name 代表类的成员变量1.2.引用构造函数,this(参数)是调用本类中另一种形式的构造函数,应该放在构造函数的第一条语句2. super:super是指向离自己最近的父类的一个指针,以下是几种...原创 2019-03-18 20:37:38 · 2280 阅读 · 0 评论 -
对Nginx反向代理的理解以及具体使用
在这里主要描述一下Nginx反向代理的一些特性以及对多台服务器进行反向代理的一个实现1.Nginx的几个特性:作为Web服务器:Nginx作为web服务器使用更少的资源,支持更多的并发连接,体现更高的效率,能够支持高达50000个并发连接数的响应作为负载均衡服务器:Nginx可以支持作为HTTP代理服务器,对外进行服务,Nginx用C语言编写,不论是系统资源开销还是CPU使用率都比Perl...原创 2019-03-22 13:58:10 · 801 阅读 · 0 评论 -
static静态修饰符的用法和需要注意的地方
面向对象中static修饰的内容隶属于类而不是属于对象1. static用来修饰成员变量:被static修饰的成员变量叫静态成员变量,如果没有被修饰叫非静态成员变量定义变量后只运行一次代码的初始化操作,之后会跳过该初始化操作设置静态全局变量一般是为了解决数据共享问题静态变量是属于这个类,而不是属于某个对象的1.1. 静态成员变量的访问方式:用对象进行访问:对象名.变量名可以通...原创 2019-03-19 00:43:37 · 649 阅读 · 0 评论 -
Nginx实现负载均衡以及多服务器之间的session共享
前面一篇文章是介绍了Nginx的反向代理原理,这里要说的负载均衡就是利用反向代理的原理来实现的,也可以点击了解:Nginx反向代理实现原理1.什么是负载均衡:当一台服务器的单位时间内的访问量越大时,服务器压力就越大,达到超过自身承受能力时,服务器就会崩溃,为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器的压力服务器可以有很多,组成一个服务器集群,当用户访问网站时,...原创 2019-03-22 16:54:28 · 1139 阅读 · 0 评论 -
springboot+springcloud+Eureka 实现微服务系统架构
关于Spring Cloud:Spring cloud并不是一个项目,它是一套项目的组合,Spring cloud中存在很多的子项目,每一个子项目都是针对微服务系统架构存在的问题给出的一种解决方案,Springcloud是基于Springboot实现的,Springcloud并没有重复的造轮子,它只是将目前各家公司开发的比较成熟,经得起实际考验的服务组合起来使用Spring cloud搭建...原创 2019-03-29 17:31:14 · 1261 阅读 · 0 评论 -
java项目中rides的使用
项目开发中一些特定的数据我们不一定要关系型数据库来存储,使用非关系型数据库反而更方便读取数据,效率高,这里介绍一下在java中rides的使用1. 导入rides所需要的相关依赖jar包(在pom文件中): <!-- jedis工具包 --> <dependency> <groupId>redis.clients</groupId>...原创 2019-03-22 19:43:29 · 16197 阅读 · 2 评论 -
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 · 1904 阅读 · 0 评论 -
创建线程的4种方式以及实现的代码
创建一个线程有四种方式:继承Thread类创建线程实现Runnable接口创建线程使用Callable和Future创建线程使用线程池例如用Executor框架1.继承Thread类创建线程:创建线程的步骤:定义Thread类的子类,并重写该类的 run() 方法,该方法的方法体就是县城需要完成的任务,run() 方法也成为线程的执行体创建Thread子类的实例,也就是创建了...原创 2019-03-27 11:38:06 · 1475 阅读 · 0 评论 -
线程的几种状态
线程从创建,运行到结束需要经历下面五个状态:新建状态,就绪状态,运行状态,阻塞状态以及死亡状态,可参照下图理解1.新建状态(new):当线程对象创建后,即进入了新建状态,此时程序还没有运行线程中的代码,如:Tread t = new MyThread()2.就绪状态(Runnable):一个新创建的线程并不会自动开始运行,要执行线程,必须调用线程的 Start() 方法,当调用线程...原创 2019-03-27 13:44:30 · 183 阅读 · 0 评论 -
线程中同步方法和同步代码块的区别
1. 为什么要使用同步:java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。2.同步方法:即有synchronized关键字修饰的方法由于 Java的每个对象都会有一个内置锁,当用此关键字修饰方法时,内置锁会...原创 2019-03-27 14:11:20 · 1396 阅读 · 1 评论 -
单体架构和微服务系统架构的优缺点
单体架构所谓的单体架构就是把所有的业务模块编写在一个项目中,最终会打包成一个war包,然后进行部署单体架构的优点:部署简单:由于是完整的结构体,可以直接部署在一份服务器上即可技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发用人成本低:单个程序员可以完成业务接口道数据库的整个流程单体架构的缺点:系统启动慢:一个进程包含了所有的业务逻辑,涉及到的启动模块过多...原创 2019-03-28 16:57:40 · 14498 阅读 · 0 评论 -
Java中的异常
1.Java中的两种异常类型以及区别:Throwable是所有异常的根,Error是错误,Exception是异常1.1 Exception:一般分为Checked异常(受检查异常)和Runtime异常(运行时异常),所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedExceptionChecked异常:对Ch...原创 2019-03-28 21:43:17 · 252 阅读 · 0 评论 -
Java中数据库的连接
1.什么是JDBC:JDBC是Java数据库连接,提供不同数据库进行统一访问的工具,JDBC允许开发者用Java写数据库应用程序,而不需要关心底层数据库的细节2.JDBC的Driver驱动:JDBC驱动提供了特定厂商对JDBC API接口类的实现,驱动必须要提供Javasql包下面这些类的实现:Connection,preparedStatement,CallableStatement...原创 2019-03-28 23:14:24 · 420 阅读 · 0 评论 -
servlet的体系结构和生命周期
1. 什么是servlet:servlet是用来处理客户端请求并产生动态网页内容的Java类,servlet主要是用来处理或者是存储html表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息2. servlet的体系结构:所有servlet都必须要实现的核心接口是Javax.servlet.Servlet,每一个servlet都必须要直接或间接的实现这个接口,或者是继承...原创 2019-03-28 23:43:51 · 462 阅读 · 0 评论 -
doget()方法和dopost()方法有什么区别
doget():get方法啊会把名值对追加在请求的url后面,因为url对字符数目有限制,进而限制了用在客户端请求的参数值得数目,并且请求中的参数值是可见的,因此敏感信息不能用这种方式传递dopost():post方法通过把请求参数值放在请求体重来克服get方法的限制,因此,可以发送的参数的数目是没有限制的,最后,通过post请求传递的敏感信息对外部客户端是不可见的...原创 2019-03-28 23:49:30 · 2118 阅读 · 0 评论 -
关于web应用程序中的常见问题
1. 什么事web应用程序:web应用程序是对web或者应用服务器的动态扩展,有两种类型的web应用:面向表现和面向服务的,面向表现的web应用程序会产生包含了很多种标记语言和动态内容的交互的web页面作为对请求的响应,而面向服务的web应用实现了web服务的端点,一般来说,一个web应用可以看成是一组安装在服务器url名称空间的特定子集下面的servlet的集合2.什么事服务端包含(se...原创 2019-03-29 00:16:28 · 1077 阅读 · 0 评论 -
关于HTTP协议的相关问题
1. HTTP响应的结构是怎么样的:HTTP响应由三个部分组成:状态吗(status code):描述了响应的状态,可以用来检查是否成功的完成了请求,请求失败的情况下,状态吗可以用来找出失败的原因,如果servlet没有返回状态码,默认会返回成功的状态码HTTP头部(HTTP Header):它们包含了更多关于响应的信息,比如:头部可以指定认为响应过期的过期日期。或者是指定用来给用户安...原创 2019-03-29 00:32:24 · 363 阅读 · 0 评论 -
关于Java虚拟机中的垃圾回收---面试题
1.Java中垃圾回收的目的:垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源2.什么时候进行垃圾回收:垃圾回收是在内存中存在没有引用的对象或超过作用域的对象时进行的3.system.gc() 和 runtime.gc() 会做什么事情:这两个方法用来提示jvm要进行垃圾回收,但是,立即开始还是延迟进行垃圾回收是取决于jvm的4.finalize() 方法什么...原创 2019-03-28 11:03:51 · 1132 阅读 · 0 评论 -
ArrayList 和 LinkedList 的区别
ArrayList 和 LinkedList 都实现了List接口,区别主要有以下几点ArrayList底层使用的是数组,优点数组查询具有索引查询速度比较快,插入删除修改比较慢(因为数组在内存中是一块连续的内容,如果插入或删除是需要移动内存,所以比较慢)使用场景是使用在查询比较多,插入和删除比较少的情况LinkedList底层使用的是链表,链表不需要内存是连续的,在当前元素中存放下一个或上一...原创 2019-03-28 10:28:09 · 178 阅读 · 0 评论 -
Java中产生死锁的原因以及死锁的解除
1. 产生死锁的主要原因:因为系统资源不足进程运行推进的顺序不合适资源分配不当等如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁,其次进程运行推进顺序与速度的不同也可能产生死锁2. 产生死锁的四个必要条件:互斥条件:一个资源每次只能被一个进程使用请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放不剥夺条...原创 2019-03-27 14:30:45 · 381 阅读 · 0 评论 -
Java中的 Iterator 迭代器
迭代器是一种设计模式,它是一个对象,可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构1. Iterator 接口中定义的几个常用方法:next():获取序列中的下一个元素hasNext():检查序列中是否还有元素remove():将迭代器返新返回的元素删除2. 使用 Iterator 迭代器遍历集合中的元素:public static void main(Strin...原创 2019-03-27 15:44:56 · 211 阅读 · 0 评论 -
Thread 类中的:sleep(),join(),wait(),yield()区别详解
1. sleep():Thread.sleep(1000);在指定时间内让当前执行的线程暂停执行一段时间,让其他线程有机会继续执行,但不会释放对象锁,也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据,不推荐使用,sleep() 使当前线程进入阻塞状态,在指定时间不会执行。2. wait():对象的方法,会释放对象锁wait()和notify()、notif...原创 2019-03-27 17:34:12 · 3075 阅读 · 0 评论 -
关于方法的重载与重写的区别
1.关于重载与重写:1.1.重载:是指一个类中的多个方法具有相同的名字,但这些方法的参数类型或参数的数量不能完全相同1.2.重写:方法重写是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表和相同的返回类型注意一点:子类中不能重写父类中final方法,子类必须重写父类中的abstract方法2.关于重载(Overload):方法重载就是在类中可以定义多个相同方...原创 2019-03-18 19:30:01 · 264 阅读 · 0 评论 -
SpringMVC开发过程与常见问题(一)
1.添加jar包2.在web.xml里配置DispatcherServlet添加核心servlet目的是过滤所有的请求然后交给DispatcherServlet来处理,作为分发器其中1标签是代表服务器启动开始加载,运行不会卡3.添加SpringMVC配置文件在上面的核心servlet中我们需要配置springmvc配置文件,代码部分是:在初始化标签中可以自定义配置文件的名称与位置...原创 2019-02-28 13:52:08 · 921 阅读 · 0 评论 -
Spring+Ajax实现登录功能
在开发中尤其是登录功能功能,我们用的比较多的是Ajax的异步请求方式实现的,下面是我在一个springmvc项目中使用Ajax实现的登录以及注册功能的过程:(整理不易,参考使用,记得点赞)1.首先异步请求一定不能是用from表单来提交数据,下面这一段是html页面中用于输入用户名和密码的表单以及提交请求用的button按键 <div class="col-sm-10"> 用...原创 2019-03-07 19:08:40 · 4326 阅读 · 0 评论 -
算法的几个特征
算法所具备的介个特征1.有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止2.确切性:算法的每一步骤必须有确切的定义3.输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件4.输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果,没有输出的算法是毫无意义的5.可行性:算法中执行的任何计算步骤都是可以被分解为基本的可...原创 2019-03-19 19:03:49 · 1121 阅读 · 0 评论 -
java异常中throw和throws的用法和区别
java抛出异常的三种形式,throw,throws和系统自动抛出异常,在这里说一下throw和throws的用法以及区别1. throw:throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出特定类型的异常2. throws:throws是方法可能抛出异常的声明,用在声明方法时,表示该方法可能抛出异常,然后交给上层调用它的方法处理3. throw和...原创 2019-03-19 20:13:12 · 2308 阅读 · 1 评论 -
常见的异常类型
1. 从异常类的继承架构图中可以看出:Exception类扩展出数个子类,其中IOE,RuntimeException是较常用的两种2.习惯上将Error与Exception类统称为异常类,但这两者本质上还是有不同的,Error类专门用来处理严重影响程序运行的错误,java虚拟机出错就属于一种Error3.Exceptin 类包含了一般性的异常,这些异常通常在捕捉到之后便可做妥善处理确保程序...原创 2019-03-19 20:24:21 · 1310 阅读 · 0 评论 -
Springmvc开发中使用filter过滤器来防止未登录的情况下通过url直接访问请求页面
在实际开发中,我们的程序都是需要用户登录之后才能进入程序进行相关操作,为了避免用户在未登录的情况下直接通过输入url进入我们的主功能页面,那么我们就要对用户的所有请求进行有一个过滤操作,下面是我在springmvc开发中使用的过滤请求方式的代码以及详细注释:(整理不易,参考使用,记得点赞)1.首先配置web.xml,里面的地址是我们要用来过滤的LoginFilter.java文件的访问地址,中...原创 2019-03-11 13:20:41 · 3609 阅读 · 1 评论