Java
文章平均质量分 71
想种胡杨
这个作者很懒,什么都没留下…
展开
-
进程间的通信方式
目录一、进程间的通信方式二、进程通信的目的一、进程间的通信方式管道(pipe)管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。(进程的亲缘关系通常是指父子进程关系)命名管道(FIFO)命名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号用于通知接收进程某个事件已经发生,主要作为进程间以及同一进程不同线程之间的同步手段。...原创 2019-09-07 14:55:45 · 415 阅读 · 0 评论 -
JavaSE高级开发之I/O流(一)
java.io包里的核心组成就是五个类(File、OutputStream、InputStream、Writer、Reader)。1. File文件操作类1.1 文件操作在Java.io包之中,File类是唯一一个与文件本身操作(创建、删除、取得信息等)有关的程序类。 File类中关于文件有如下方法::① 设置文件路径:File(String pathname)② 设置父路径和子路径...原创 2019-04-09 11:30:47 · 186 阅读 · 0 评论 -
反射实现BeanCopy
package www.tech.java.com;import java.lang.reflect.Field;import java.util.Date;/** * 将源对象中与目的对象相同属性,源对象的属性值copy赋值给目的对象 * source 源对象: name, age, birthday * target 目标对象: name, age */ class Te...原创 2019-04-09 11:28:30 · 256 阅读 · 0 评论 -
JavaSE高级开发之反射
反射指的是对象的反向处理操作。 我们熟知的 “正” 的操作必须要先导入一个包,然后创建于一个类,根据构造方法才能产生类的实例化对象。 而反射是根据对象来取得对象的来源信息。 我们先来看看正常的关于对象的处理流程:根据包名.类名找到某个类。package www.tech.java.com;import java.util.Date;public class TestReflec...原创 2019-04-09 11:25:52 · 125 阅读 · 0 评论 -
Java新特性(二)-- 接口定义增强
从JDK1.8开始,支持的新特性非常多,并且打破了很多原有的设计方案,其中具有最大变化的就是接口。接口只是一个方法的声明,而没有具体的方法实现,时间一长,许多的支持就会出现问题(量大的问题),实现类则只能覆写无数次接口中的抽象方法,那么该接口就将无法继续使用。所以从JDK1.8开始,接口除了有全局常量和抽象方法之外,还专门提供了两类新的结构:① 可以使用default来定义普通方法,实现类...原创 2019-04-03 09:08:33 · 143 阅读 · 0 评论 -
Java新特性(一)-- 枚举
枚举(enum)是JDk1.5提出的一个新特性。Java中的枚举被定义为了一个类,将枚举引入类以后,枚举的功能被大大扩展,里面可以有构造函数、方法和实例变量,甚至可以实现接口,每一个枚举常量都是它的枚举类型的一个对象。1. 引出问题我们先来回顾一下多例设计模式:package www.testdemo;class Color { private String title; ...原创 2019-04-02 18:02:29 · 248 阅读 · 0 评论 -
反射和文件I/O实现FileCopy
package www.bittech.com.file;import java.io.*;/** * FileCopy:sourceFilePath destFilePath */ public class FileCopy { public static void copy(String sourceFilePath, String destFilePath) {...原创 2019-04-09 11:33:36 · 130 阅读 · 0 评论 -
JavaSE高级开发之I/O流(二)
1. 内存操作流除了文件之外,I/O的操作也可以发生在内存之中,这种流被称为内存操作流。文件流不管最后这个文件数据是否会被保留都会产生一个文件数据,而内存流是跟内存有关的,不需要关联文件。如果有个需求是要进行I/O处理,但是又不希望产生临时文件,这种情况下就可以使用内存流。1.1 基本使用内存流的分类:1. 字节内存流:ByteArrayInputStream、 ByteArrayOutp...原创 2019-04-12 17:23:14 · 176 阅读 · 0 评论 -
Java集合框架(二)-- Map接口
1. Map接口概述Collection集合的特点是每次对单个对象进行保存,如果现在要进行一对对象(偶对象)的保存就只能使用Map集合来完成,即Map集合中会一次性保存两个对象,且这两个对象的关系:key=value结构。这种结构最大的特点是可以通过key找到对应的value内容。Map接口定义:public interface Map<K,V> 此接口中的常用方法有:①...原创 2019-04-20 17:26:13 · 212 阅读 · 0 评论 -
生产者消费者模型
生产者消费者模型是什么生产者和消费者彼此之间不直接通讯,而是通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。纵观大多数设计模式,都会找一个第三者出来进行解耦,如工厂模式的第三者是工厂类,模板模式的第三者是模...原创 2019-08-21 11:59:13 · 233 阅读 · 0 评论 -
JVM简介
Java内存区域划分线程私有区域线程共享区域Java内存溢出异常java堆溢出虚拟机栈和本地方法栈溢出垃圾回收算法java堆回收方法区回收垃圾回收器内存分配策略1. Java内存区域划分JVM会在执行Java程序的过程中把它管理的内存划分为若干个不同的数据区域。这些数据区域各有各的用处,各有各的创建与销毁时间,有的区域随着JVM进程的启动而存在...原创 2019-07-31 17:01:42 · 119 阅读 · 0 评论 -
关于子类和父类的那些事儿
子类和父类的概念是在继承中才会有的,继承的前提是 is-a 原则,比如:Student is a Person,那么我们就可以表示为Student extends Person。子类又叫派生类,子类一定具有父类的全部属性与行为,并且拥有的属性更多,具体的行为更加丰富,表示的范围更小;父类又名超类。子类对象在进行实例化之前一定会首先实例化父类对象,先有父类对象才有子类对象,即先调用父类的构造方...原创 2019-06-26 10:03:50 · 1441 阅读 · 0 评论 -
Java集合框架(一)-- Collection接口
1. 类集简介我们都知道,数组本身有一个很大的缺陷:长度固定。所以从JDK1.2开始,Java为了解决数组长度的问题,提供了动态的对象数组实现框架–Java的类集框架。Java类集框架实际上也是java针对数据结构的一种实现。2. Collection接口2.1 Collection接口Collection是Java类集(java.util包)里的核心接口中的一个。...原创 2019-04-19 21:13:41 · 302 阅读 · 0 评论 -
看图了解Thread方法
原创 2019-05-04 16:43:45 · 165 阅读 · 0 评论 -
生产者消费者模型
商品类:package com.bittech.pc;/** 1. Goods:生产者生产的产品类 */public class Goods { private final String id; private final String name; public Goods(String id, String name) { this.i...原创 2019-05-04 14:02:56 · 105 阅读 · 0 评论 -
多线程实现方式
1. 继承Thread类实现多线程java.lang.Thread是一个线程操作的核心类。新建一个线程最简单的方法就是直接继承Thread类,而后覆写该类中的run()方法。package com.bittech.thread;public class MyThread extends Thread { private String title; public MyTh...原创 2019-04-26 23:31:14 · 125 阅读 · 0 评论 -
Collections工具类和Stream流
1. Collections工具类 Collections是一个集合操作的工具类,它里面包含的方法有:① 批量添加:例如Collections.addAll(list,"A","B","C");② 翻转:例如Collections.reverse(list);③ 填充:例如Collections.fill(list, "--");package com.bittech;impor...原创 2019-04-21 16:17:13 · 768 阅读 · 1 评论 -
Properties属性文件操作
在java中有一种属性文件(资源文件)的定义:*.properties文件,在这种文件里面其内容的保存形式为 “key = value” ,通过ResourceBundle类读取的时候只能读取内容,要想编辑其内容则需要通过Properties类来完成,这个类是专门做属性处理的。properties类的定义://继承自Hashtable类public class Properties exte...原创 2019-04-21 12:06:17 · 656 阅读 · 0 评论 -
栈与队列
1. Stack栈栈是一种先进后出的数据结构。例如:浏览器的后退、编辑器的撤销、安卓Activity的返回等都属于栈的功能。在Java集合中提供有Stack类,这个类是Vector的子类。需要注意的是,使用这个类的时候,使用的并不是Vector类中的方法,并且在使用时不要进行向上转型。因为要操作的方法不是由List定义的,而是由Stack定义的。 Stack里面的方法有:① 入栈:pub...原创 2019-04-20 20:38:43 · 155 阅读 · 0 评论 -
JavaSE高级开发之泛型
从JDK1.5以后引入了三大常用新特性:泛型、枚举(enum)、注解(Annotation)。今天就先来说说泛型吧~~ 在码代码时我们通常会遇到参数类型冲突的问题,之前一般是通过转换参数类型来解决的,但是这样未免有些麻烦而且也不一定能解决问题。在JDK1.5推出这个新特性后解决这个问题就变得方便多了。1. 引出问题假设现在需要定义一个描述坐标的类 Point,需要提供两个属性 x 和 y。对...原创 2019-03-31 14:07:09 · 172 阅读 · 0 评论 -
Java新特性(四)-- 方法引用及内建式函数接口
1. 方法引用我们都知道,引用肯定都是针对于引用类型(数组、类、接口)完成的。但是JDK1.8开始追加了方法引用的概念。实际上引用的本质是给面向对象中的方法起了个别名而已,所以方法的引用也就是别名的使用。 而方法引用的类型有以下四种形式:① 引用静态方法:类名称::静态方法名称② 引用某个对象的方法:实例化对象 :: 普通方法③ 引用某个特定类的方法:类名称 :: 普通方法④ 引用构...原创 2019-04-04 16:36:25 · 137 阅读 · 0 评论 -
Java新特性(三)-- Lambda表达式
Lambda表达式是JDK1.8推出的重要新特性。函数式编程和面向对象编程可以理解为两大开发阵营。但是很多人认为传统的面向对象开发结构过于完整,代码量大,所以才诞生了函数式编程这种新的开发方法。我们先来看看传统面向对象开发方法:package www.testdemo.lambda;interface IMessage { void print();}public clas...原创 2019-04-04 11:33:03 · 122 阅读 · 0 评论 -
初识Java内部类
所谓的内部类只是在类的内部进行了类的嵌套操作(可以将内部类视为属性来看待)1. 内部类的简单定义class Outter { //外部类的私有属性 private String a = &amp;amp;amp;amp;amp;quot;Hello World!&amp;amp;amp;amp;amp;quot;; //定义了一个内部类 class Inner { //内部类的普通方法 public void原创 2019-02-17 14:07:45 · 134 阅读 · 0 评论 -
Java中继承的实现
继承描述的是一种能力:可以使用现有类的所有功能,并在无需重新编写原有类的情况下进行功能上的扩展。要使用继承,必须满足 is-a 原则(代码复用),定义的语法为:子类 extends 父类。子类:又称为派生类,子类一定具有父类的全部属性与行为,并且拥有的属性更多,具有的行为更加丰富,表示的范围更小。父类:又称为超类。继承的基本实现:class Person { ...原创 2019-01-30 20:28:51 · 4282 阅读 · 1 评论 -
数组和方法的相互操作 -- 引用传递
引用传递:概念:多个栈内存共享一块儿堆内存地址(更形象一点可以理解为多个遥控器控制一台空调)内存现阶段可以简单分为以下两部分:栈内存: 方法中的局部变量,方法的形参,引用堆内存: 存放数组内容、类对象内容(共享内存)int[ ] data = new int[3];,data 称为数组的引用(保存在栈内存中),任何一个引用一定指向一块儿堆内存地址。只要看见关键字new,就一定在堆上分...原创 2019-02-21 20:03:59 · 1328 阅读 · 1 评论 -
Java中多态的表现形式
概念:同一个类实例的相同方法在不同情形下有不同的表现形式方法多态:方法重载:同一个方法名称可以根据参数的类型或个数不同调用不同的方法体方法覆写:同一个父类的方法可以根据实例化子类的不同也有不同的实现方法多态之前的文章里面详细阐述过,在此不再赘述。对象多态:向上转型(90%):天然发生,认爹过程(即子类一定可以变成父类)语法:父类 父类引用 = 子类实例;,例如Person ...原创 2019-02-06 20:28:25 · 15237 阅读 · 0 评论 -
final考点 -- 数据类型转换
当使用 + - * / % 等数学运算时,遵循以下原则:只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型。只要两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型。只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型。否则(操作数为byte...原创 2019-02-04 18:11:30 · 283 阅读 · 0 评论 -
final关键字的用法
在 Java 中 final 被称为终结器。1. 修饰属性(成员变量) – 表示常量使用final定义的变量就成了常量,常量必须在声明时赋值,并且赋值后无法修改。定义常量全用大写字母,多个单词间以_分隔。Java中一般定义常量final和static共同使用,static是为了节省空间。final修饰数据类型时,无论是基本类型还是引用类型,值不能变,对于引用数据类型,不可变指的...原创 2019-02-04 17:10:15 · 231 阅读 · 0 评论 -
super关键字的用法
1. super表示父类属性语法:super.属性名称,明确表示从父类中查找属性class Person { public String info = &amp;amp;quot;父类&amp;amp;quot;;}class Student extends Person { public String info = &amp;amp;quot;子类&amp;amp;quot;; public void fun(原创 2019-02-03 17:34:10 · 1539 阅读 · 0 评论 -
this关键字的用法
1. this 表示本类属性打破程序的就近取用原则,直接去类的属性中找同名属性。语法:this.属性名称class Person { private String name; private int age; public Person(**String n, int a**) { name = **n**; age = **a**;...原创 2019-02-02 17:55:27 · 1812 阅读 · 2 评论 -
方法重载与方法覆写
1. 方法重载(overload):定义:若干个方法名称相同,参数的类型或个数不同(即参数列表不同)的方法,与方法返回值无关!public class FangFaChongZai { public static void main(String[] args) { System.out.println(add(10, 20)); System.out.p...原创 2019-01-27 14:59:01 · 323 阅读 · 0 评论 -
Java代码块
普通代码块:定义在方法中的代码块。public class Test { public static void main(String[] args) { { // 普通代码块 int x = 10; System.out.println(x); } int x...原创 2019-01-25 19:47:58 · 810 阅读 · 0 评论 -
Java数据类型详解
如有问题,欢迎指正!!!Java是一种强类型语言,这就意味着必须为每一个变量声明一种类型。Java中的数据类型主要分为两大类,即八大基本数据类型和引用数据类型两大类。这次主要说一下基本数据类型,关于引用数据类型,以后会详细补充。下面可以用一张图来表示数据类型的划分情况:1. 所有数据类型均有默认值整型默认值:0 浮点型默认值:0.0 ...原创 2019-01-14 18:10:58 · 280 阅读 · 0 评论 -
Java内部类详解
根据内部类定义的位置及关键字一共分为以下四种内部类:成员内部类/普通内部类,静态内部类,方法内部类/局部内部类,匿名内部类。1. 成员内部类 – 类比普通属性或方法定义:直接定义在外部类之中,不加static修饰符。在成员内部类中要注意的点:① 成员内部类中不能存在任何static的变量和方法。②成员内部类的创建需要依赖外部类对象,先有外部类对象才有成员内部类对象。在外部类的外...原创 2019-03-05 16:44:47 · 264 阅读 · 0 评论 -
static关键字的用法
首先要明确static关键字与对象实例化无关!!!1. 修饰本类属性称为静态属性(类属性),所有对象共享此属性值,用于共享属性。非 static 属性称为成员变量或对象属性,每个对象都有此属性且值都不一样。例如假设要描述类似国家这种共享属性,可以使用 static 修饰属性。静态属性一般通过类名直接调用,所有该类对象共享此属性值。class Person { static Stri...原创 2019-03-05 20:21:19 · 320 阅读 · 0 评论 -
模板设计模式 -- 给大佬递咖啡
设计原则:开闭原则(OCP):是5大设计原则中最基础的设计原则,指的是一个软件实体如类、接口等应该对扩展开放,对修改关闭。模板设计模式(模板方法) :基于抽象类的设计模式模板方法定义了一个算法的步骤,并允许子类为一个或者多个步骤提供具体实现。特点:在一个方法中定义一个算法的骨架(如冲泡饮料流程),而将一些步骤延迟到子类中实现。优点:模板模式可以使得子类在不改变核心算法的基础上,具体实现算...原创 2019-03-08 14:23:35 · 618 阅读 · 2 评论 -
猴子吃桃问题
问题描述:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃子?//方法一:递归求解//递归的关键在于程序出口和递推公式。//程序的出口就是第10天的时候桃子的个数为1。//根据题意可知后一天吃的桃子数等于前一天桃子数除以...原创 2019-03-21 20:39:49 · 134 阅读 · 0 评论 -
异常与捕获
异常体系:当程序出现错误时能最大化减少损失的一种保护手段。在Java中一切皆对象,所以异常也是类。 先来看一下异常的继承类结构:只有Throwable及其子类能够进行异常捕获与处理,所有的异常都是由继承它而来的。Error:描述JVM运行时的内部错误和资源耗尽错误,如栈溢出,堆溢出。应用程序不抛出此类异常,这种内部错误一旦出现,除了告知用户并使程序安全终止之外,再无能无力,这种情...原创 2019-03-17 19:08:14 · 276 阅读 · 0 评论 -
Java之俩SB类
任何的字符串常量都是 String 类的匿名对象,而且 String 的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。所以StringBuffer和StringBulider两个类就是为了方便字符串的更改。StringBuffer 和 StringBulider 用处差不多,下述以前者为例。1. 字符串拼接在 String 中使用 &amp;quot; + &amp;quot; 来进行字符串连接,但是...原创 2019-03-12 15:24:27 · 988 阅读 · 0 评论 -
单例设计模式
单例设计模式,顾名思义就是指一个类只允许产生一个实例化对象。 单例模式的核心问题就是如何限制对象的产生个数???我们都知道对象的产生是通过构造方法产生的。如果构造方法用public修饰的话在类的外部就会产生无数的对象,那么第一步就是先将构造方法私有化。构造方法都私有化之后类的外部一个对象都不会产生了,而我们想要的是只产生一个对象。此时类的外部已经不可能产生对象了,那么我们就应该想到在类的内...原创 2019-03-15 17:44:44 · 127 阅读 · 0 评论