Java基础
文章平均质量分 89
静心0207
这个作者很懒,什么都没留下…
展开
-
java线程的6中状态以及切换
Java中的线程的状态分为六种:1、初始(new):新建一个线程对象,但还没有调用start()方法;2、运行(runnable):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“运行”;线程对象创建后,其他线程(比如main线程)调用了该队形的start()方法。改状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,次数处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。3、阻塞(blocked):表示线转载 2021-07-14 20:48:07 · 196 阅读 · 0 评论 -
BIO,NIO,AIO 总结
Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。程序员在使用这些 API 的时候,不需要关心操作系统层面的知识,也不需要根据不同操作系统编写不同的代码。只需要使用Java的API就可以了。在讲 BIO,NIO,AIO 之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。同步与异步:同步: 同步就是发起一个调用后,被调用者未处理完请求...转载 2019-07-04 21:23:31 · 101 阅读 · 0 评论 -
Hibernate
Hibernate可以理解为一个中间件,他负责把Java程序的sql语句接收过来并发送到数据库,而数据库返回来的信息邮hibernat接收后直接升车鞥一个对象传给Java。Hibernate有1)一个配置文件cfg.xml,包括基本配置信息,比如数据库的操作username,password,url,driver和format sql和方言;2)还有一个映射文件hbm.xml对数据库中标的...原创 2019-07-10 10:57:27 · 117 阅读 · 0 评论 -
Spring IOC和Spring实现AOP
IOC控制反转 容器控制程序对象之间关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。ALL类的创建,销毁都由Spring来控制,也就是说控制对象声明周期的不是引用他的对象,而是Spring。对于某个对象而言,以前是他控制其他对象,现在是all对象都被Spring控制,这就是控制反转。依赖注入的思想是通过反射机制实现的。在实例化一个类时,他通过反射调用类中的set方法将事先保存在h...原创 2019-07-09 16:12:22 · 74 阅读 · 0 评论 -
内存泄漏
在Java中,内存泄漏就是存在一些被分配的对象,这些对象存在以下一些特点:1)对象是可达的,即在有向图中,存在同路可以与其相连。2)对象是无用的,即程序以后不会再使用这些对象。这些对象也不会被GC回收,然而他们却占用内存。发生内存泄漏的第一个吉祥通常是:在应用程序中出现OutOfMemoryRrror (OOM)....原创 2019-07-09 15:53:08 · 77 阅读 · 0 评论 -
Error和Exception的区别
Error类一般只与虚拟机相关的问题,比如系统崩溃,虚拟机错误,内存空间不足,对于这种错误导致的应该程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。Exception表示程序可以处理的一场,遇到这类一场,应该尽可能处理一场,是程序恢复运行,而不应该随意终止异常。...原创 2019-07-09 15:35:00 · 148 阅读 · 0 评论 -
Java IO与NIO
IO流学习总结一 Java IO,硬骨头也能变软(1) 按操作方式分类结构图:(2)按操作对象分类结构图二 java IO体系的学习总结IO流的分类: 按照流的流向分,可以分为输入流和输出流; 按照操作单元划分,可以划分为字节流和字符流; 按照流的角色划分为节点流和处理流。流的原理浅析:java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且...转载 2019-07-03 21:37:58 · 92 阅读 · 0 评论 -
类加载
类从加载到虚拟机内存中开始,到卸载出内存为止,它的证生命周期包括:加载–验证–准备–解析–初始化–使用–卸载,其中验证–准备–解析成为链接。在遇到下列情况,若没有初始化,则需要先触发其初始化(加载–验证–准备 自然需要在此之前)1)1.使用new关键字实例化对象2.读取或设置一个类的静态字段3.调用一个类的静态方法。2)使用java.lang.reflect包的方法对类进行反射调...原创 2019-07-09 14:17:10 · 63 阅读 · 0 评论 -
Java多线程学习(八)线程池与Executor 框架
思维导图:一 使用线程池的好处线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处:**降低资源消耗。**通过重复利用已创建的线程降低线程创建和销毁造成的消耗。**提高响应速度。**当任务到达时,任务可以不需要的等到线程创建就能立即执行。**提高线程的可管理性。...转载 2019-07-03 20:31:56 · 112 阅读 · 0 评论 -
Java多线程学习(二)synchronized关键字(2)
(2) synchronized同步语句块一 synchronized方法的缺点使用synchronized关键字声明方法有些时候是有很大的弊端的,比如我们有两个线程一个线程A调用同步方法后获得锁,那么另一个线程B就需要等待A执行完,但是如果说A执行的是一个很费时间的任务的话这样就会很耗时。先来看一个暴露synchronized方法的缺点实例,然后在看看如何通过synchronized同步语...转载 2019-06-24 16:30:35 · 170 阅读 · 0 评论 -
Java多线程学习(二)synchronized关键字(1)
(1) synchronized同步方法思维导图:一 简介Java并发编程这个领域中synchronized关键字一直都是元老级的角色,很久之前很多人都会称它为“重量级锁”。但是,在JavaSE 1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后变得在某些情况下并不是那么重了。二 变量安全性“非线程安全”问题存在于“实例变量”中,如...转载 2019-06-24 15:02:10 · 126 阅读 · 0 评论 -
session Cookie
Cookie 和 session http 都是无状态的协议,web服务器不能识别出哪些请求是同一个浏览器发出的,浏览器的每一次请求都是完全独立的。Cookie 放在浏览器端,浏览器第一次访问服务器时,没有cookie,then服务器给浏览器一个cookie,以后每次浏览器访问服务器都要带上这个cookie。JSP是服务端<%1,创建一个cookie对象 Cookie cookie =...原创 2019-07-10 13:52:18 · 93 阅读 · 0 评论 -
servlet
servlet: 是用于Java编写的服务器端程序,其使用Java servlet API, 当客户端发送请求到服务器时,服务器可以将请求信息发送给servlet, 并让那个servlet 简历其服务器返回给客户端的响应。当启动web服务器or客户端第一次请求服务时,可以自动装入servlet, 装入后,servlet 继续运行知道其他客户端发出请求。servlet 生命周期:3个阶段1)**...原创 2019-07-10 14:17:29 · 125 阅读 · 0 评论 -
Java集合框架
Java集合框架总体框架Java集合可划分为四部分:List列表、Set集合、Map集合、工具类(Iterator 迭代器、Enumeration 枚举类、Arrays 和Collections)。总体框架如图:1)Collection 是一个单只接口,包含了List 列表和Set 集合量大分支。其中:List 是一个有序元素可重复的列表,每个元素都对应一个索引。第一个元素的索引值是0...原创 2019-07-18 15:16:09 · 148 阅读 · 0 评论 -
共享锁 VS 排他锁
共享锁:又称读锁,如事务T对数据对象A加了S锁,则是事务T可以读A 但是不能修改A, 其他事务只能再对他加S锁,而不能加X锁,知道事务T释放A上的S锁。这保证了其他事务可以读A,但在事务T释放S所之前,不嫩对A做任何操作。排他锁:又称写锁,若事务T读数据对象加X锁,事务T可以读A也可以写A,其他事务不能对A加任何锁,知道T释放A上的锁。这保证了,其他事务在T释放A上的锁之前不能再读取和修改A。...原创 2019-07-11 15:42:31 · 168 阅读 · 0 评论 -
Spring 的优点
spring 是一个继承了许多第三方框架的大杂烩,其核心技术是IOC(控制反转,也称作依赖注入)和AOP(面向切面编程)Spring 的优点是什么??1)Spring 是分层的架构,你可以选择使用那你需要的层,而不用管不需要的部分。2)Spring 是POJO 编程,POJP编程使得可持续构建和可测试能力提高。3)依赖注入和IOC 使得JDBC 操作简单化。4)Spring是开源的免费的...原创 2019-07-15 16:52:14 · 230 阅读 · 0 评论 -
Memcached和Redis
**Memcached:**是高性能分布式内存缓存服务器,本质是一个内存key-value 数据库,但不支持数据持久化,服务器关闭后,数据全部丢失。只支持 key-value结构。Redis: Redis是一个key-value存储系统。将大部分数据放在内存中,支持的数据类型有:字符型、hash表、链表、集合、有序集合以及基于这些数据类型的相关操作。Redis内部使用一个redisobject对...原创 2019-07-11 11:28:26 · 107 阅读 · 0 评论 -
知道哪些服务器?答:JBoss,Apache,weblogic。问:区别?
应用服务器:Tomcat、JBoss、Apache、weblogic\webSphere1)Tomcat:应该十分广泛的web服务器,支持部分j2ee,免费,支持servlet、jsp。2)JBoss:开源应用服务器。3)weblogic\webSphere:业界第一的appserver。4)Apache:全球应用最广泛的http服务器,但只支持静态页面,比如ASP,PHP等动态网页不支持...原创 2019-07-11 11:08:37 · 235 阅读 · 0 评论 -
springMVC
springMVC运行原理:1)客户端请求提交到DispatcherServlet;2) 由DispatcherServlet控制器查询一个or多个handlermapping,找到处理请求controller;3)DispatcherServlet将请求提交给controller;4)controller 调用逻辑处理完后,返回methodAndView;5)DispatcherSe...原创 2019-07-11 11:00:34 · 88 阅读 · 0 评论 -
Atomic原子类
1 Atomic 原子类介绍Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。并发包 java.util.concurrent 的原子类都存放在java...转载 2019-07-05 19:28:32 · 337 阅读 · 0 评论 -
乐观锁 VS 悲观锁
**悲观锁:**就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。这样别人想拿这个数据就会block,直到他拿到锁。传统的关系型数据就用了很多这种机制,比如行锁,写锁等,都在操作之前上锁。**乐观锁:**就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候回判断一下在此期间别人有没有去更新这个数据。使用与多读,比如write_condit...原创 2019-07-10 21:30:09 · 103 阅读 · 0 评论 -
内部类
一、 含义在Java编程语言里,程序是由类(class)构建而成的。在一个类的内部也可以声明类,我们把这样的类叫做内部类。二、 作用实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明为private时,只有外部类可以访问内部类,很好地隐藏了内部类。内部类可以继承(extends)或实现(implements...转载 2019-07-10 17:32:06 · 73 阅读 · 0 评论 -
多线程安全隐患的原因和解决办法
**多线程安全隐患的原因:**当多条语句在操作同一线程空想语句是,一个线程对多条语句只执行一部分,还没有执行完,另一个线程参与执行,导致共享数据错误。**解决办法:**对多条操作共享数据的语句,只能让一个线程执行完,在执行过程中,其他行程不能执行。同步代码块Synchronized(对象){需要被同步的代码}同步函数。修饰符 synchronized 返回值类型 函数名(...原创 2019-07-10 15:47:46 · 287 阅读 · 0 评论 -
Java -- 深入浅出GC自动回收机制
Java – 深入浅出GC自动回收机制GC简单的了解GC :Garbage Collections 字面意思是垃圾回收器,释放垃圾占用的空间。让创建的对象不需要像c、c++那样delete、free掉 。对于c、c++的开发人员来说内存是开发人员分配的,也就是说还要对内存进行维护和释放。对于Java程序员来说,一个对象的内存分配是在虚拟机的自动内存分配机制的帮助下,不再需要为每一个new操作去...转载 2019-07-08 14:47:19 · 89 阅读 · 0 评论 -
Java多线程学习(一)Java多线程入门
转载地址:https://blog.csdn.net/qq_34337272/article/details/79640870Java 并发的基础知识,可能会在笔试中遇到,技术面试中也可能以并发知识环节提问的第一个问题出现。比如面试官可能会问你:“谈谈自己对于进程和线程的理解,两者的区别是什么?”一 进程和多线程简介1.1 进程和线程进程和线程的对比这一知识点由于过于基础,所以在面试中很...转载 2019-06-24 12:55:57 · 101 阅读 · 0 评论 -
Java多线程学习(七)并发编程中一些问题
思维导图:多线程就一定好吗?快吗??并发编程的目的就是为了能提高程序的执行效率提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到很多问题,比如:内存泄漏、上下文切换、死锁还有受限于硬件和软件的资源闲置问题。多线程就是几乎同时执行多个线程(一个处理器在某一个时间点上永远都只能是一个线程!即使这个处理器是多核的,除非有多个处理器才能实现多个线程同时运行)。CPU...转载 2019-07-02 13:57:53 · 116 阅读 · 0 评论 -
Java多线程学习(三)volatile关键字
思维导图:一 简介先来看看维基百科对“volatile关键字”的定义:在程序设计中,尤其是在C语言、C++、C#和Java语言中,使用volatile关键字声明的变量或对象通常具有与优化、多线程相关的特殊属性。通常,volatile关键字用来阻止(伪)编译器认为的无法“被代码本身”改变的代码(变量/对象)进行优化。如在C语言中,volatile关键字可以用来提醒编译器它后面所定义的变量随时...转载 2019-06-25 14:41:13 · 130 阅读 · 0 评论 -
面向对象和面向过程的区别
(1)面向过程:面向过程想能比面向对象高。因为累调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是面向过程没有面向对象易维护、易复用、易扩展。(2)面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面...原创 2019-06-17 16:16:42 · 130 阅读 · 0 评论 -
Collections 工具类和 Arrays 工具类常见方法总结
Collections 工具类和 Arrays 工具类常见方法CollectionsCollections 工具类常用方法:排序查找,替换操作同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)排序操作void reverse(List list)//反转void shuffle(List list)//随机排序void sort(List list...转载 2019-06-20 21:36:26 · 2032 阅读 · 0 评论 -
final,static,this,super 关键字总结
final,static,this,super 关键字总结final 关键字final关键字主要用在三个地方:变量、方法、类。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法...转载 2019-06-19 09:20:16 · 79 阅读 · 0 评论 -
Java 中 IO 流分为几种?BIO,NIO,AIO 有什么区别?
java 中 IO 流分为几种?按照流的流向分,可以分为输入流和输出流;按照操作单元划分,可以划分为字节流和字符流;按照流的角色划分为节点流和处理流。Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0流的40多个类都是从如下4个抽象类基类中派生出来的。InputStream/Reader: 所有的输入流的基类,前...转载 2019-06-18 21:19:07 · 2653 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable的区别HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。(1)HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(va...转载 2019-04-22 22:10:05 · 92 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别
String,StringBuffer与StringBuilder的区别一、Java String 类——String字符串常量字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存...转载 2019-04-22 21:50:34 · 118 阅读 · 0 评论 -
java 异常
java 异常与异常详解一,异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?1.Java中的所有不正常类都继承于Throwable类。Throwable主要包括两个大类,一个是Error类,另一个是Exception类;2.其中Error类中包括虚拟机错误和线程死锁,一旦...转载 2019-04-15 22:25:59 · 273 阅读 · 0 评论 -
Java集合
转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全)概述:List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,...转载 2019-04-11 11:18:49 · 81 阅读 · 0 评论 -
Java JVM
java中JVM的原理重温【转】一、基础理论知识1、java虚拟机的生命周期:Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。在程序执行时,...转载 2019-04-10 18:44:05 · 126 阅读 · 0 评论 -
关于JVM JDK 和JRE最详细通俗的解答
(一)JVMJava虚拟机(JVM)是运行Java字节码的虚拟机。JVM有针对不同系统的特定实现(Windows, Linux, macOS),目的是使用相同的字节码,它们都会给出相同的结果。什么是字节码?采用字节码的好处是什么?在Java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解...转载 2019-06-18 14:39:59 · 1051 阅读 · 0 评论 -
Java和C++的区别?
我知道很多人没学过 C++,但是面试官就是没事喜欢拿咱们 Java 和 C++ 比呀!没办法!!!就算没学过C++,也要记下来!都是面向对象的语言,都支持封装、继承和多态Java 不提供指针来直接访问内存,程序内存更加安全Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。Java 有自动内存管理机制,不需要程序员手动释放无用内存...转载 2019-06-18 14:42:33 · 173 阅读 · 0 评论 -
Java多线程学习(四)等待/通知(wait/notify)机制
思维导图:一 等待/通知机制介绍1.1 不使用等待/通知机制当两个线程之间存在生产和消费者关系,也就是说第一个线程(生产者)做相应的操作然后第二个线程(消费者)感知到了变化又进行相应的操作。比如像下面的whie语句一样,假设这个value值就是第一个线程操作的结果,doSomething()是第二个线程要做的事,当满足条件value=desire后才执行doSomething()。但是这...转载 2019-06-26 16:36:10 · 155 阅读 · 0 评论 -
Java多线程学习(六)Lock锁的使用
一 Lock接口1.1 Lock接口简介锁是用于通过多个线程控制对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁。 但是,一些锁可能允许并发访问共享资源,如ReadWriteLock的读写锁。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的。JDK1.5之后并发包中新增了Lock...转载 2019-07-01 22:02:12 · 196 阅读 · 0 评论