JavaSE
_Nanfeng
人生只有900个月,趁年轻,在自己的世界里做自己的英雄。
展开
-
Java关键字
目录private关键字this关键字static关键字1、private使用private实现封装如果使用private对属性进行封装,要访问私有属性,必须提供setter和getter方法。setter方法:主要用于属性内容的设置与修改getter方法:主要用于属性内容的获取private实现封装最大的特征在于:只允许本类访问,而不允许外部类访问...原创 2019-07-25 18:20:16 · 230 阅读 · 0 评论 -
Java代码块(*)
代码块:使用{ }定义的一段代码。根据代码块定义的位置以及关键字,分为4种:1)普通代码块2)构造块3)静态块4)同步代码块 — 多线程1、普通代码块普通代码块:定义在方法中的代码块public class Test { public static void main(String[] args) { { //普通代码块 ...原创 2019-07-25 19:17:32 · 232 阅读 · 1 评论 -
Java反射
1、初始反射反射是一切EE框架的基础,它指的是对象的反向处理,即根据对象倒推类的组成。反射核心的处理就在于Object类的一个方法:取得Class对象public final native Class<?> getClass();Class类描述的就是各个类的组成(构造方法、普通方法、普通属性等)。2、Class类的三种实例化方式任何一个类的Class对象由JVM加载类后产...原创 2019-08-04 20:06:19 · 183 阅读 · 0 评论 -
JVM——GC
JVM(Java Virtual Machine),Java虚拟机,通过软件模拟Java字节码的指令集,JVM只是保留了PC寄存器,其它的寄存器都进行了裁剪。JVM是一台被定制过的现实当中不存在的计算机。1、Java内存区域划分一般来说,JVM所管理的内存包含以下几个运行时数据区域:线程私有区域:-程序计数器:记录当前线程正在执行的字节码行号指示器(通俗的说就是当前线程跑到哪一行...原创 2019-08-04 21:49:32 · 183 阅读 · 0 评论 -
Java内部类的定义与使用
1、基本概念内部类:定义在一个类的内部进行其他类结构的嵌套操作。虽然内部类破坏了程序的结构,但是内部类也可以方便的操作外部类的私有访问。2、内部类为什么存在?1)内部类方法可以访问该类定义所在作用域中的数据,包括被private修饰的私有数据2)内部类可以对同一个包中的其它类隐藏起来3)内部类可以实现单线程的缺陷4)当我们想要定义一个回调函数却不想写大量代码的时候,可以选择用匿名内部类...原创 2019-07-27 00:23:12 · 359 阅读 · 2 评论 -
Java继承的定义与使用
继承的主要作用在于,在已有的基础上继续进行功能的扩充。1、继承的实现使用extends关键字实现继承:class 子类 extends 父类子类不仅可以直接继承父类的操作,实现代码重用,也可以进行功能的扩充,比如扩充属性和方法。class Person { private String name; private int age; public String ...原创 2019-07-27 01:09:29 · 206 阅读 · 0 评论 -
Java重载与覆写
1、方法重载定义:方法名称相同,参数列表不同(参数的类型、顺序或个数不同)。 方法的返回值一定相同 举个例子:public class Test { public static void main(String[] args) { System.out.println(add(5,5)); System.out.println(add(3...原创 2019-07-27 08:53:53 · 252 阅读 · 0 评论 -
JVM——垃圾收集器
垃圾收集器上图是7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们之间可以搭配使用。并行(Parallel):指多条垃圾收集线程并行工作,用户线程仍处于等待状态。并发(Concurrent):指用户线程与垃圾收集线程同时执行(不一定并行,可能会交替执行),用户程序继续运行,而垃圾收集程序在另外一个CPU上。吞吐量:就是CPU用于运行用户代码的时间与CPU总消耗时间的比值...原创 2019-08-05 12:06:52 · 291 阅读 · 2 评论 -
常用JVM性能监控与故障处理工具
JDK内置的JVM工具Linux下如何查看JVM进程ID?查看任意一个进程的ID:PID+grep输出当前操作系统下所有JVM进程ID:jps -l (-l可以输出包名.name),可看出哪个主类对应的JVMbin目录下常用六大命令的名称以及用途:1、jps:虚拟机进程状态工具查看当前操作系统所有JVM进程,返回进程ID命令格式:jps [options] [hostid]...原创 2019-08-05 15:42:48 · 311 阅读 · 0 评论 -
Java抽象类与接口
1、抽象类的定义与使用抽象类只是在普通类的基础上扩充了一些方法而已,所谓的抽象方法就是只声明而未实现的方法。所有抽象方法要求使用anstract关键字来定义,并且抽象方法所在的类也要使用abstract关键字来定义,表示抽象类。注意:抽象类不能直接产生实例化对象。1.1 抽象类的使用原则所有抽象类必须有子类抽象类的子类必须覆写抽象类的所有抽象方法(子类不是抽象类)抽象类的对象可以...原创 2019-07-28 00:41:23 · 184 阅读 · 0 评论 -
双重枷锁单例模式
public class Singleton1 { private static volatile Singleton1 SINGLETON; 保证这个单例的对象一定是属性全部初始化之后的单例对象不会指令重排,return的这个SINGLETON一定是所有属性完全初始化之后的单例对象 private Singleton1() {} // 线程2 public st...原创 2019-08-01 23:25:41 · 1090 阅读 · 0 评论 -
生产者-消费者模型
生产-消费者模型(等待与唤醒机制)synchronized + wait()/notify():必须在同步代码块或同步方法中执行(所以肯定获取到了锁)notify():只唤醒一个线程,且是随机醒一个调用wait:进入等待队列调用线程进入等待队列,释放锁任意一个锁对象只有一个等待队列,所有线程对象调用wait()都置入同一个等待队列,调用notify或notifyAll()会唤醒不该...原创 2019-08-06 16:31:59 · 217 阅读 · 0 评论 -
Lock体系(JDK 1.5)
1.3 JDK1.5提供的Lock锁使用ReentrantLock进行同步处理class MyThread implements Runnable { private int ticket = 500; private Lock ticketLock = new ReentrantLock(); @Override public void run() {...原创 2019-08-07 07:47:24 · 192 阅读 · 0 评论 -
线程池(******)
这部分我将介绍线程池的两个接口(普通调度池,定时调度池)和两个类(线程池核心类,线程池工具类)。线程池优点:线程池里有很多已经创建好的线程,提高线程的可管理性线程已经创建好,当任务到达的时候可以直接执行,执行任务速度较快,任务到达可以很快处理线程的可重复利用率比较高线程池的工作流程(四大核心组件)1)核心池2)阻塞队列3)最大线程池4)拒绝策略工作流程:1、若核心池未...原创 2019-08-07 10:53:12 · 183 阅读 · 0 评论 -
jcl中的fail-fast机制,fail-safe机制
1、什么是快速失败?快速失败就是优先考虑出现异常的情况,若异常产生,抛出异常,程序终止。举个栗子:public static int div(int a,int b) { if (b == 0) throw new IllegalArgumentException("除数不能为0!"); return a/b;}2、jcl为何会...原创 2019-08-07 12:04:52 · 300 阅读 · 0 评论 -
hashcode与equals的关系
hashcode与equals的关系hashCode():将任意一个对象根据指定的算法转为32位intequlas():比较两个对象是否相等equals相等的两个对象,hashCode一定相等。hashCode相等的两个对象,equals不一定相等。理解:我们可以把hashCode()想象成一个函数f(x),equals就相当于是x轴坐标,比如说我们学过的二次函数图像,当x轴相等的时...原创 2019-08-10 14:43:48 · 4293 阅读 · 0 评论 -
哈希表
什么是哈希表?哈希表底层存元素实际上就是一个数组,但是它与普通数组的区别是什么呢?假设有一个普通数组int[] arr = new arr[5];,里边只存储一种类型,它默认从第一个元素存储到最后一个元素。而哈希表有两个类型<K,V>,实际存储的是V,它存储的下标是按照K值进行哈希运算,哈希运算得到的是V存储的索引下标。首先根据hash(K)得到一个整型int index,然后...原创 2019-08-10 16:01:35 · 188 阅读 · 0 评论 -
Java I/O练习:文件拷贝
使用程序来实现文件拷贝:建立一个CopyFile程序类,这个类通过初始化参数接收源文件与目标文件路径。分析:1)要实现数据拷贝需要通过流的方式来实现,对于流有两类,由于要拷贝的内容不一定是文字数据,所以采用字节流。2)在进行拷贝的时候,首先在程序中开辟出一个数组,该数组长度为文件长度,将所有数据一次性读取到改数组中随后进行输出保存,接着采用边读边写的方式完成。首先建立一个专门负责文件拷...原创 2019-08-02 23:42:24 · 298 阅读 · 0 评论 -
Java内存分析和构造方法
1、内存分析Java中,所谓的性能调优,调整的就是内存问题。Java中的内存区域简单分为栈内存和堆内存。栈内存:存放的是局部变量,包含编译期可知的各种基本数据类型、对象引用(即堆内存的地址,简单理解为对象的名称),Java栈是与线程对应起来的,每创建一个线程,JVM就会为这个线程创建一个对应的栈。不同方法只能访问自己方法的栈内存。堆内存:保存的是真正的数据,即数组的内容,类对象的内容...原创 2019-07-25 16:46:59 · 373 阅读 · 0 评论 -
JavaSE三大特殊类之String类
String类实例化方式1、直接赋值String str = "Hello world";System.out.println(str);2、传统方法(构造法)String str = new String("Hello world");System.out.println(str);这里补充一个概念:什么是构造方法? 构造方法是一种特殊的方法,它与类同名,且返回类型是...原创 2019-02-25 23:11:51 · 239 阅读 · 0 评论 -
基于字符界面的收银台系统的实现思路
写在前面基于生活经验,实现了一个简单的基于字符界面的收银台操作系统,大体分为5个模块:使用收银台,设置商品的上架、下架等功能,保存商品、订单信息等功能,关于收银台的基本信息,退出收银系统。在此基础上,又将使用和设置分为几个更细的模块。其中使用收银台包括了添加商品、取消商品、浏览商品、查看订单、返回上级等功能。设置包含了商品上架、商品下架、商品修改、查看商品、浏览订单、返回上级等功能。画图说明...原创 2019-03-20 12:49:42 · 538 阅读 · 0 评论 -
设计模式之单例设计模式,多例设计模式
1、单例设计模式所谓的单例设计模式就是指一个类只允许产生一个实例化对象。那么如何保证一个类只产生一个实例化对象呢? 我们都知道,所有的类都会默认生成一个无参构造,这个无参构造外部可以随意调用,如果我们要限制在外部产生对象,那么就可以自己写一个私有的构造方法,这样默认生成的无参构造将不再产生,这个时候再进行对象实例化的时候,就会报错,因为一旦构造方法私有化,外部就不能再调用构造即外部不能产生新...原创 2019-03-24 19:40:11 · 484 阅读 · 0 评论 -
基于多线程的网络聊天室的实现思路
写在前面QQ、微信几乎替换了移动电话在我们生活中的应用,它们使远程交流变得简单,所以,模仿QQ、微信的一些功能,我实现了一个简单的支持注册、群聊、私聊、退出的网络聊天室。多线程网络聊天室功能:服务器端(注册,私聊,群聊,退出)客户端(发送聊天信息,接收聊天信息)业务:服务器端1、管理注册的用户2、私聊对象发送数据3、在线用户发送数据4、退出时删除用户5、循环监听客户端...原创 2019-03-21 15:39:32 · 1338 阅读 · 1 评论 -
异常与捕获
异常体系:当程序出现错误时,能够最大化的减少损失的一种保护手段。Java中异常也是类。异常的继承类结构:1、异常:Error:Error类描述Java运行时内部错误与资源耗尽错误。应用程序不抛出此类异常,这种内部错误一旦出现,除了告知用户并使程序安全终止之外,别无他法。(例如:栈溢出异常(StackOverflowerror))Exception:程序中普遍存在的,由于代码问题产生的...原创 2019-03-24 21:43:57 · 318 阅读 · 1 评论 -
JavaSE三大特殊类之Object类
什么是Object类?Object类是Java默认提供的一个类,在Java里除了Object类,所有的类都存在继承关系,都会默认继承Object父类,也就是说,所有类的对象都可以使用Object接收。Object定义的一些方法:1、public Object() 无参构造为子类服务2、public String toString() 取得对象信息3、public boolean equa...原创 2019-03-24 22:38:19 · 232 阅读 · 0 评论 -
JavaSE三大特殊类之包装类
什么是包装类呢?通俗的说,包装类就是将基本类型封装到类中。举个例子:class IntDemo{ private int value; //通过构造方法把value封装到IntDemo这个类中 public IntDemo(int value){ this.value = value; } //再通过intValue()这个方法取出来 ...原创 2019-03-25 18:19:08 · 224 阅读 · 0 评论 -
设计模式之模板设计模式
设计模式设计模式共有23种,而所有的设计模式都应该满足一个原则,叫开闭原则(OCP)。开闭原则:一个软件实体如类、模块和函数应该对外扩展开放,对修改关闭。模板设计模式,也叫模板方法模式,是一种基于抽象类的设计模式。在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。通俗的说,就是你得找一个第三方(模板类),将核心...原创 2019-03-22 18:08:58 · 216 阅读 · 0 评论 -
设计模式之工厂设计模式
1、简单工厂模式假如目前市场上有Macbook Pro和Surface两种笔记本,你想买一台电脑,这个电脑就是一个接口,具体要买什么电脑只有你自己知道,也就是说,我们使用一个客户端让用户自己去决定要买什么样的电脑。可是这样就会有一个问题,如果你又想买一台AlientWare电脑,我们就不得不返回客户端去修改代码,让客户端支持AlientWare笔记本,这样就破坏了“开闭原则”。怎么处理这种情况...原创 2019-03-24 15:37:13 · 205 阅读 · 0 评论 -
设计模式之代理设计模式
代理设计模式:两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个子类完成辅助真实业务的操作。举个栗子:你想买一支marrakesh口红,自己又不可能亲自去韩国购买,这时你想到了代购,你只需要把钱给代购,由代购去韩国免税店买口红再寄给你。具体代码如下:interface Isubject { void buyComputer();}//真正要买电脑的对象clas...原创 2019-03-24 16:43:37 · 159 阅读 · 0 评论 -
Java集合框架之Collection接口
写在前面在Java中,集合框架里所提到的类集实际上就是动态对象数组,因为数组本身有一个缺陷,就是长度固定。为了解决这个问题,Java里提供了动态的对象数组实现框架—Java类集框架。而在Java类集里面,提供了两个最核心的接口:Collection和Map接口。今天我来总结一下Collection接口。首先看一张图:这是关于类集里面Collection接口的结构图,包含了子接口以及它的实现类...原创 2019-04-05 19:09:36 · 716 阅读 · 0 评论 -
Java实现单链表、多链表
如果让你保存多个对象,你第一时间想到的肯定是数组,但是如果让你保存多个任意对象呢?这时我们会想到用Object型的数组来解决。Object[] data = new Object[3];但是数组是一个长度固定的线性结构,在实际开发中,不论我们的内容不足或过多,都有可能造成空间的浪费,所以我们可以使用一个链表来动态存储数据,就像火车车厢的设计,长度不固定,有多少数据就保存多少数据。单链表:c...原创 2019-04-05 23:34:54 · 990 阅读 · 0 评论 -
Int和Integer的区别
Int和Integer的区别1、Integer是Int的包装类,Int是八种基本数据类型之一。2、Integer变量必须实例化以后才可以使用,而Int变量不需要实例化。3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象,而Int是直接存储数据值。4、Integer的默认值是null,Int的默认值是0。Int和Integer的比较(扩展)先...原创 2019-06-11 17:13:43 · 11880 阅读 · 6 评论 -
Java多线程的实现和常用方法
进程:操作系统中程序的一次执行周期,比如说打开关闭QQ,进程是资源分配的最小单元。线程:进程中的一个子任务,比如说收消息发消息,是任务分配的最小单元。进程和线程的区别:1)线程依赖进程,创建和销毁一个线程比创建和销毁一个进程的开销小。2)线程间通信比进程间通信简单。1、线程状态2、多线程创建方式2.1 继承Thread类实现多线程新建一个线程最简单的方法就是直接继承Thre...原创 2019-07-29 12:41:58 · 195 阅读 · 0 评论 -
Java线程的同步与死锁
什么是多线程同步?所谓的同步指的是所有线程不是一起进入到方法中执行,而是按照顺序一个一个进来。多线程同步1. synchronized对象锁处理同步问题1.1 synchronized的使用使用synchronized关键字处理线程同步有两种模式:同步代码块和同步方法使用同步代码块锁的是任意对象,锁的是类的反射对象class MyThread implements...原创 2019-07-29 20:24:48 · 297 阅读 · 0 评论 -
Java I/O
1、File文件操作类1.1 File类使用java.io.File是是一个普通的类,可以通过两个构造方法直接产生实例化对象:public File(String pathname);public File(String parent,String child); —— 设置父路径和子路径File类提供了以下方法对文件进行基本操作:创建一个新文件:public boolea...原创 2019-08-02 21:36:38 · 151 阅读 · 0 评论 -
Java集合框架之Map接口
写在前面这篇文章我接着来总结Java结合框架中的另一个接口:Map接口。 Collection接口的特点是每次进行单个对象的保存,如果现在要进行两个对象的保存就只能用Map接口来实现,且这两个对象的关系是:key=value结构。这个结构最大的特点是可以通过key找到对应的value内容。 ...原创 2019-08-10 18:02:17 · 312 阅读 · 0 评论