![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 73
Shawn_wg
生命不息,学习不止~~~
展开
-
Java核心知识点-JVM结构和工作方式
一、JVM体系结构 1.1 JVM中主要包括(PC寄存器,栈,)(堆,方法区,)本地方法区 一个java线程中,包括PC寄存器(保存当前执行的指令位置),和栈帧(一个方法对应一个栈帧),本地变量(保存计算中的临时数据),当一个线程结束后,线程内所有数据就自动销毁,不需要垃圾回收。PC寄存器和栈 将1压入栈中,将2压入栈中,将1,2弹出计算1+2,将3压入栈顶,OVER。方法区:方法区是原创 2016-03-22 11:09:38 · 989 阅读 · 0 评论 -
Java核心知识点-String、StringBuilder和StringBuffer的特点
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似1. String 类 String的值是不可变的,这就导致每次转载 2016-04-11 21:06:34 · 1095 阅读 · 0 评论 -
Maven tutorial&QA
maven常见问题问答1.前言Maven,发音是[`meivin],"专家"的意思。它是一个很好的项目管理工具,很早就进入了我的必备工具行列,但是这次为了把project1项目完全迁移并应用maven,所以对maven进行了一些深入的学习。写这个学习笔记的目的,一个是为了自己备忘,二则希望能够为其他人学习使用maven 缩短一些时间。2. maven概要首先我把ma转载 2016-04-28 21:29:28 · 628 阅读 · 0 评论 -
Java核心知识点-Byte详解
Java虚拟机中没有byte类型恩。。。怎么说呢,个人感觉这个说法有点儿唬人的意思。的确,当这个想法刚刚出现在我的脑海中的时候我觉得也有些胡扯,毕竟byte类型就在那里,怎么能说Java虚拟机中没有byte类型呢?好吧,我来稍稍的解释一下。Java虚拟机对基本类型的操作基本都是在栈上完成的(这个是可信的,因为不是我说的)。我们知道,Java在处理一个语句的时候,首先它会先把用到的操作数原创 2016-04-28 22:59:59 · 4910 阅读 · 0 评论 -
Java核心知识点-ClassLoader详解
ClassLoaderClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。 1.1 几个相关概念ClassLoader负责载入系统的所有Resources(Class,文件,来自网络的字节流等),通过ClassLoader从而将资源载入JVM 每个class都有一个ref原创 2016-04-28 23:48:21 · 7167 阅读 · 0 评论 -
Jetty 的工作原理以及与 Tomcat 的比较
Jetty 的工作原理以及与 Tomcat 的比较许 令波, Java 工程师, 淘宝网许令波,developerWorks 中国网站最佳作者,现就职于淘宝网,是一名 Java 开发工程师。对大型互联网架构设计颇感兴趣,喜欢钻研开源框架的设计原理。有时间将学到的知识整理成文章,也喜欢记录下工作和生活中的一些思考。个人网站是:http://xulingbo.net。简转载 2016-04-30 14:29:06 · 360 阅读 · 0 评论 -
Java核心知识点-JVM再深入
JVM在Java中的位置。在C里面我们想执行一段自己编写的机器指令的方法大概如下:typedef void(*FUNC)(int);char* str = "your code";FUNC f = (FUNC)str;(*f)(0); 也就是说,我们完全可以做一个工具,从一个文件中原创 2016-04-30 20:03:16 · 3132 阅读 · 0 评论 -
Java核心知识点-反射
一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!原创 2016-04-30 20:24:36 · 3866 阅读 · 0 评论 -
Java核心知识点-NIO
文件读取中的NIO在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节处理数据快的多。在NIO中有几个核心对象需原创 2016-05-01 11:41:21 · 3855 阅读 · 0 评论 -
Java核心知识点-路径获取
常见获取方式:// 第一种:获取类加载的根路径 D:\git\daotie\daotie\target\classes File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); // 获取当前类的所在工程路径; 如原创 2016-05-01 13:49:56 · 418 阅读 · 0 评论 -
Java集合框架图解
关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦。我深深的不解其中的原因。虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL转载 2016-06-03 21:02:12 · 1480 阅读 · 0 评论 -
Java并发包概览
java.util.concurrent包的类都来自于JSR-166:Concurrent Utilities,官方的描述叫做“The JSR proposes a set of medium-level utilities that provide functionality commonly needed in concurrent programs. ”。作者是大名鼎鼎的Doug Lea转载 2016-06-03 21:36:14 · 1313 阅读 · 0 评论 -
Java并发包解析01
参考《分布式java应用》一书,简单过一遍并发包(java.util.concurrent) ConcurrentHashMapConcurrentHashMap是线程安全的HashMap的实现。1)添加put(Object key , Object value)ConcurrentHashMap并没有采用synchronized进行控制,而是使用了Reen转载 2016-06-03 21:39:09 · 503 阅读 · 0 评论 -
JVM整体结构图解
JVM - 整体结构摘抄自:《分布式java应用基础与实践》-第三章 JVM - 内存对上图各部分的概要解释: JVM - GC详情参考: http://www.iteye.com/topic/802638I梳理如下:转载 2016-06-04 00:27:13 · 745 阅读 · 0 评论 -
深入理解JDK动态代理
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 Java代码 package dynamic.proxy; import java.la原创 2016-07-03 16:08:46 · 3037 阅读 · 0 评论 -
Reactor模式
概述Java NIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。同步和异步区别:有无通知(是否轮询)堵塞和非堵塞区别:操作结果是否等待(是否马上有返回值),只是设计方式的不同NIO 有一个主要的类Selecto转载 2016-06-19 13:06:32 · 318 阅读 · 0 评论 -
Java中的hashcode()与equals()的用法详解&&Java中的对象比较(==)与值比较equals()的用法
hashcode方法浅析有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。那么这里就有一个比较严重转载 2017-02-10 13:49:38 · 670 阅读 · 0 评论 -
Java常见错误-“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
在项目的pom.xml的标签中加入: Xml代码 plugins> plugin> groupId>org.apache.maven.pluginsgroupId> artifactId>maven-compiler-pluginartifactId> version>2.3.2v转载 2016-04-27 16:57:46 · 462 阅读 · 0 评论 -
Java常见问题-JRE版本
本文的主角就是这个十分令人纠结地方,至少令我这个初学者十分纠结…先来看看官方的解释(链接)Use default JRE:When selected, the New Java Project Wizard creates a new Java project which uses the workspace default JR转载 2016-04-27 16:41:53 · 12452 阅读 · 0 评论 -
Java源码解析-BlockingQueue
1. 在Java的Concurrent包中,添加了阻塞队列BlockingQueue,用于多线程编程。BlockingQueue的核心方法有:boolean add(E e) ,把 e 添加到BlockingQueue里。如果BlockingQueue可以容纳,则返回true,否则抛出异常。boolean offer(E e),表示如果可能的话,将 e 加到BlockingQueue里转载 2016-04-27 12:50:00 · 661 阅读 · 0 评论 -
Java核心知识点-JVM结构之常量池
java常量池详细介绍原创 2016-03-30 19:23:22 · 1559 阅读 · 2 评论 -
Java源码解析-String详解
其中x并未看到内存分配,变量在使用前必须先声明,再赋值,然后才可以使用。java基础数据类型会用对应的默认值进行初始化 一、首先看看Java虚拟机JVM的内存块及其变量、对象内存空间是怎么存储分配的 1、栈:存放基本数据类型及对象变量的引用,对象本身不存放于栈中而是存放于堆中 1)、基础类型 byte (8位)、boolean (1位转载 2016-03-30 20:41:26 · 451 阅读 · 0 评论 -
Java核心知识点-Java多线程
先看一图:本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小转载 2016-03-24 13:21:04 · 433 阅读 · 1 评论 -
Java核心知识点-多线程同步锁
Java多线程-线程的同步与锁一、同步问题提出线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。形象比喻:锁 说白了 就是使用权的问题。假定有一个 厕所,里面就一个坑10个人上厕所。难道一拥而上?岂不乱套了?!这时候,就出来规矩,谁上厕所就吧门给锁了,其他人就等等这人用完了,吧钥匙给下一个人 (钥匙给谁了? 这是JVM决定的!)转载 2016-04-01 16:42:58 · 516 阅读 · 0 评论 -
Java核心知识点-Java编译原理
一、javac是什么 javac就是一个种编译器,它的功能就是将java源代码翻译成JVM可以识别的二进制码,简单一点就是将.java文件转换成.class文件原创 2016-03-21 20:38:54 · 1284 阅读 · 1 评论 -
Java核心知识点-类加载器
一、ClassLoader是什么 ClassLoader就是类加载器,简单来说就是.class文件执行的时候,先创建一个ClassLoader对象,由这个对象去找.class在哪里,然后将.class文件加载到虚拟机中去执行。原创 2016-03-21 21:22:56 · 301 阅读 · 0 评论 -
依赖于抽象而不依赖与实现,并不难理解。
比方说我们需要一个东西来盛水,这个东西只要有盛水的功能就行了,我们并不关心它是马克杯,乐扣杯,或者是解放牌大瓷缸,甚至是尿壶,这个能盛水的东西便是抽象(我们在脑海里只有一个概念,却没有实物),而马克杯或者其他的具体实物便是抽象的实现,面向抽象编程会非常灵活,并且低耦合,易于扩展和维护,还是那个比方,人是一个类,人有一个喝水的方法,想喝水就要依赖一个能盛水的容器,如果我要是依赖于具体编程,比如我今天原创 2015-01-01 12:04:12 · 1124 阅读 · 1 评论 -
计算机组成
计算机基础知识点1. 计算机硬件组成 从图片里可以看到,除了CPU,其他部分的硬件都是提供输入/输出的作用,CPU就是将各种输入的数据进行各种处理,然后返回数据。这里的主存就是我们平常说的内存(电脑比较卡,就再装一个8g内存条,或者买一个固态硬盘SSD),程序执行时,会将各种数据先放到内存中,为什么呢?因为它读取数据非常的快,cpu可以随时拿到数据2. CPU工作原理我们都知道CPU的根本任原创 2016-03-10 13:40:05 · 678 阅读 · 0 评论 -
MyEclipse快速入门
开始学习MyEclipse原创 2016-03-10 13:07:18 · 1896 阅读 · 0 评论 -
Java超神之路
一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, jstack, jmap转载 2016-03-10 21:02:01 · 1745 阅读 · 0 评论 -
Java核心知识点-synchronized关键字
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synch转载 2016-03-23 13:48:10 · 350 阅读 · 0 评论 -
Java核心知识点-一些基本概念
Java.lang: String,Integer,Object/Process,Runtime,ClassLoader,ThreadJava.net: 网络相关Socket,IPAddress,URL.(HttpClient是Apache子项目)Java.io : 输入输出,字节流InputStream/OutputString,字符流Reader/Write原创 2016-03-23 18:42:47 · 577 阅读 · 1 评论 -
Java源码解析-hashmap
无论是在平时的练习还是项目当中,HashMap用的是非常的广,真可谓无处不在。平时用的时候只知道HashMap是用来存储键值对的,却不知道它的底层是如何实现的。一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtabl转载 2016-04-12 12:24:11 · 320 阅读 · 0 评论 -
Java核心知识点-I/O流
流式IO流(Stream)是字节的源或目的。两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。流的分类节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的转载 2016-03-27 12:21:46 · 251 阅读 · 0 评论 -
Java核心知识点-字节流和字符流详解
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?区别:实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。范例:使用字节流不关闭执行Java原创 2016-03-27 12:59:20 · 1544 阅读 · 0 评论 -
java equals方法
equals 方法是 java.lang.Object 类的方法。(默认比较地址equals(Object obj) {return(this== obj);})有两种用法说明:(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串转载 2017-01-26 20:16:14 · 297 阅读 · 0 评论