- 博客(26)
- 收藏
- 关注
原创 计算机网络基础
1、计算机网络定义把分布在不同区域的计算机与专门的外部设备通过通信线路连接成复杂的网络系统, 众多计算机之间可以方便的互相传输信息,数据共享。2、计算机网络主要功能: 资源共享 信息传输与集中处理 均衡负荷与分布处理 综合信息服务计算机之间需要数据传输,离不开网络通信协议,网络通信协议就是 双方在传输数据时的约定3、网络通信协议定义: 计算机在数据传输时的通用标准 。约定了他们的传输速率,传输代码、代码结构,出错控制等标准。 根据国际约束的协议分为网
2020-11-16 08:38:44
201
原创 线程的生产者和消费者模式
多个线程同时运行时,会产生线程并发可使用同步操作确保数据的安全性,如果需要各线程之间交互,可是使用线程等待和唤醒模式,在这里常用的等待唤醒中经典的模式为“生产者和消费者模式”生产者和消费者由两类线程组成: 若干个生产者线程 负责提交用户的请求,若干个消费者线程负责处理生成出来的任务。 他们操作一块共享内存区进生成/消费的产品(数据): Mobile (手机编号)生成者线程类: Provider : 无限制的生成手机消费者线程类:Customer : 无限制的消费手机 共享存储区: St
2020-11-16 08:37:19
765
原创 线程死锁
线程死锁的产生 线程同步可以帮助我们解决多个线程操作同一个资源而导致数据不安全的问题,但线程同步也有可能产生隐患,假如一个线程中出现多个锁对象时,可能出现锁使用不当,导致锁与锁之前相互等待对方释放资源,从而形成一种 “相互等待”的僵局,这就是线程死锁。 例如哲学家吃饭 模拟线程死锁public class DeadThread implements Runnable { Object obj1 = new Object(); Object obj2 = new
2020-11-16 08:32:42
222
原创 线程同步
线程并发场景:在实际开发中,很多时候会出现多个线程同时访问同一个内存空间(变量)的场景,当他们同时对数据进行更新时,可能会出现数据不安全问题 ,例如经典的银行取钱案例 假设有一个账户(Account) ,余额是1100元,有小明和小明的爸爸同时取钱,小明拿着银行卡取ATM机取钱,小明的爸爸拿着存折取柜台取钱 ,他们都需要取1000块,小明在取钱时 系统会判断是否余额大于1000,如果大于,可以取钱,由于取钱需要一个过程,此时正好小明的爸爸也对该账户取1000,由于小明没有完成取钱的操作,卡里的
2020-11-16 08:31:28
133
原创 多线程的常用方法及API
java.lang.Thread 类中提供了大量的相关的方法:new Thread();new Thread(name);new Thread(Runnable,name);new Thread(Runnable)常用方法:getId() :获取线程的唯一标识getName() :获取线程名getPriority():获取线程的优先级: 优先级从1-10 , min-priority:1 max-priority:10 norm- priority:5 注意说明优先级高
2020-11-16 08:29:54
248
原创 文件的压缩流和解压流
一、文件的压缩流和解压流1、为什么需要使用压缩文件文件压缩使用场景: 在文件上传或下载中需要操作多个文件时,如果一个一个复制需要花较长时间,而且比较繁琐,javaAPI提供一种压缩/解压文件方式,可以将多个文件打包成一个文件(.zip)包: java.util.zip常用类: ZipEntry: 表示压缩文件中的每一个实体文件 ZipFile: 表示压缩文件对象 ZipOutputStream: 表示压缩文件输出流,用于将普通文件写出到zip文件中 ZipInputStream
2020-11-09 09:00:19
1145
原创 包装流
一、包装流定义: 在原始字节流或字符流的基础性,为了提高读写效率进行再次处理的流, 称为包装流/处理流1、缓存字节流 BufferedInputStream 、BufferedOutputStream 由于原始流在文件读写时 效率比较低(操作文件本身占用资源较多),可以通过创建缓冲区的方式提高读写效率, 将读取/写出的数据线放入缓冲区,到达一定数量后再次冲缓冲区读取/写出 mark(readLimit) 与 reset()用法其中reset不能单独使用,必须mark(rea
2020-11-09 08:59:05
421
原创 Java的I/O
一、Java的I/O1、什么是I/O?在生活中,你需要将U盘的文件 ,拷贝到电脑(或者将电脑的文件拷贝到其他设备), 文件是通过数据流的方式依次到达另一个设备中, 文件的拷贝就是一个输入(Input)和输出(Output)的过程Java中提供对应的API支持对文件的输入和输出 , java.io.*2、什么流?生活中 也存在流的概念,例如 管道中的流水,从管道的入口到达管道出口,一滴水可以从入口流到出口,可以将“水”比作 “字节数据或字符数据”,数据也可以从一端流到另一端。输入(Input):
2020-11-09 08:58:08
146
原创 集合的流式处理
一、集合的流式处理在JDK8以后,提供对集合的流式操作,对集合的元素可以向“流水”一样,依次方便,遍历,排序等,它是“不可逆的”(访问后面元素之后不能再次返回前面元素 ) , 根据流的处理方式不同,可以分为 串行流和并行流, 串行流表示同一时间只能有一个流式操作,而并行流可以有多个流式操作。 流返回的结果包括中间操作和 最终操作中间操作:它的返回值依然是 流对象 ,例如 排序、过滤、去重最终操作: 返回值是特定的结果类型 ,例如 遍历,取最大值,最小值或返回新的集合常用方法:
2020-11-09 08:56:09
829
原创 LinkedList集合
一、LinkedList集合java.util.LinkedList集合是java.util.List的实现类,实现List接口的所有方法(添加,删除,查找,判断是空等) ,它添加,删除元素较快,查询相对慢,但是查询头尾元素较快LinkedList集合实现双向链表接口,实现从头元素到尾元素的链表和从尾到头元素的链表,目标为了增加元素的检索效率 ,如下图关于LinkedList实现大量操作头元素和尾元素的方法。 其中必须通过LinkedList的引用创建该对象public void addFirst
2020-11-09 08:54:54
463
原创 泛型
一、泛型1、泛型定义 泛型(generics)是JDK5.0以后的特性,提供了编译期间安全监测机制,它是将数据类型参数化的一种方式。 例如:在对方法进行编写参数列表时,以前我们需要知道方法的参数类型 ,现在使用泛型机制可以将方法的参数类型也作为 “未知的类型” ,在调用该方法时传递该类型。2、泛型的使用2.1 泛型类(generic class) 它是一种具有一个或多个类型变量的类,(一个变量可以有多种类型) 语法 public class 类<
2020-10-23 19:08:20
208
原创 日期和日历类
一、日期和日历类1、日期类 Date 在Java中用于表示日期的类 java.util.Date() ,用于获取日期和时间的对象, 不过这个类的一些方法以及过时(被日历类取代) 创建日期类 Date date = new Date(); Date date = new Date(long) ; // 创建日期类的对象 Date date = new Date(); //获取当前时间 以 标准格式 Syste
2020-10-23 18:49:09
438
原创 StringBuffer和StringBuilder类
一、StringBuffer和StringBuilder类1、StringBuffer 类 是一个字符串缓冲区的类,线程安全运行效率低,用户存储可变字符串 构造器: StringBuffer sb = new StringBuffer(); // 创建空字符串的容器 StringBuffer sb = new StringBuffer(String);// 将字符串使用容器存储 StringBuffer sb = new StringBuufer(int)
2020-10-23 18:47:47
173
原创 包的结构与功能介绍
一、包的结构与功能介绍Java是一门面向对象的语言,sun公司提供基于面向对象的帮助文档(API Application Program Interface) ,并针对不同的版本生成的APIAPI中根据不同的功能分如下包 (package)java.applet.* : java的小应用程序java.awt.* 和 java.swing.* : java的图形用户界面(开发单机版的小游戏)java.lang.* : java的语言包java.util.* : java的工具类包、集合框架
2020-10-23 18:46:49
2448
原创 内部类(inner class)
一、内部类(inner class)1、定义 在一个类中,定义另一个类的代码结构,通常定义在类内部的类称为 “内部类” ,外面的类称为“外部类” , 在逻辑关系上 内部类与外部类是从属关系,比如 一个People类 存在收货地址类(收货人,收货联系方式)2、分类 2.1、 普通内部类(inner class),一个类A中定义另一个类B,其中类B就是类A的内部类,也是类A的一部分public class People { priv
2020-10-23 18:45:05
1133
原创 继承
4、继承4.1、概念当多个类中都存在相同属性和行为时,可以将这些共有的属性和行为定义到一个新的类中,让其他类服用个新类的属性和行为,这种关系就是继承关系当满足XXX是一个XXX的时候,也是继承关系,例如 苹果是一种水果,其中水果就是父类,苹果就是子类,水果有多种水果,而苹果只是水果的一种,所以苹果继承水果其中被继承的类是父类(超类、基类),继承父类的类就是子类(新类、派生类)4.2、继承的语法 先定义父类public class 父类{ }再定义子类public c
2020-10-12 14:10:39
156
原创 封装
1、封装为了提高类的隐藏性,对类实现的细节隐藏,提供外部访问接口即可,提高代码的可扩展性生活中的封装:例如笔记本的内部结构一封装,一般人使用笔记本时不需要了了解笔记本的结构而是直接关机1、对类的成员属性的封装将属性私有化(private),并提供对属性的访问给属性添加公用的getter和settr方法2、对代码的封装为了提高代码的复用性,尽量使用方法加参数传递对代码进行封装,并使用该方法公有(public)public class People { private String pna
2020-10-12 14:09:04
277
原创 Java的面对对象特征
一、Java的面对对象特征1、封装(隐藏)对类中的成员属性进行隐藏(私有化),对类中成员方法公共2、继承一个类A可以继承另一个类B,这里类A就是类B的子类,类A可以继承类比的属性和方法,也可以定义自己的属性和方法3、多态为了适应需求的多种变化,类可以呈现多种形态,是代码更加通用...
2020-10-12 14:05:43
92
原创 方法
一、方法方法的概念 将一个功能抽取出来,放在类中的大括号中, 形成一个独立的功能 , 当需要使用该功能时,则调用它, 这样可以增强代码的复用性(重复利用) ,并解决代码的冗余现象。方法的语法: [访问修饰符] 返回值类型 方法名( [参数类型 参数名1 , 参数类型 参数名2 …] ){ 方法体 } 详解: 访问修饰符: 用于修饰这个方法的调用范文 目前默认 public sta
2020-10-12 14:00:48
147
原创 方法的调用以及方法参数
一、方法的调用以及方法参数1、方法的定义访问修饰符 返回值类型 方法名(【参数列表】){方法体}如果方法体需要一些未知的数据作为执行条件,那么这些数据可以作为参数。如果方法需要返回数据,在定义有返回值的方法,且需要明确返回值类型方法调用两种方式:1、对象名 方法名(参数)2、直接写方法名调用,但必须是static修饰符 // 获取这个字符串的第一个字符 public static char method1(String str){ return str.charAt
2020-10-12 13:58:18
1752
原创 java的循环
循环1、循环定义 在Java程序中,重复的执行某一段代码 这个过程称之为循环, 为了避免出现死循环,循环分为四部分 1、初始条件 2、循环的判断条件 ,条件为true ,则进入循环体 3、循环体 4、迭代变量while循环语法: 初始条件 while(判断条件){ 循环体 迭代部分 (为了改变循环的判断条件) } 计算1到100的累计之和 1+2+3+4…+100=?初始值 n= 1
2020-09-28 11:11:35
165
原创 java的流程控制
一、流程控制1、定义 在一个Java程序中,各条语句的执行对程序的结果有直接影响,也就是说 各个语句的执行顺序对程序的结果有直接影响。 在程序中 ,可能出现不同的执行顺序,必须 自上而下顺序执行,或者 条件判断的顺序或者循环执行的顺序。2、分类 顺序执行 条件分支 循环执行3、顺序执行 //顺序执行, 从上而下执行 public static void main(String [] args){
2020-09-28 11:09:56
154
原创 java的数据类型与转换
三、Java的数据类型 Java是一门强类型的编程语言,它不同于一些弱类型的语言(JavaScript ,php,python),Java在声明变量时必须显示的定义变量的数据类型,变量的类型一旦定义,则不能改变 。Java中数据类型分为两大类1、基本数据类型 : 包括 整数,浮点,字符,布尔类型等2、引用数据类型 :包括 类,数组,集合,接口等1、基本数据类型整数型 ,默认值为0数据类型关键字字节长度数值范围字节型byte1个字节=8位-128~1
2020-09-28 11:05:44
153
原创 java的标识符及常亮与变量
标识符1、定义 在Java程序中,所有由程序员自己命名的元素统称为“标识符”2、标识符命名规则 标识符由数字、字母、下划线和$组成 标识符不能以数字开头 标识符区分大小写 标识符不能是关键字 注意事项: 定义类名的标识符 :首字母必须大写 ,后面的单词的首字母大写,准寻 大驼峰命名法 (例如 XxxXxx ,UserInfo ,Student) 定义方法 标识符: 首字母尽量小写 ,后面的单词首字母大写,准寻 小
2020-09-28 11:03:51
589
1
原创 Java的关键字
一、Java的关键字关键字1、定义: 在Java程序中,已经定义好的被预先使用的一些特殊的单词称为关键字 ,一共有50个关键字 (48+2个保留字) ,关键字都是小写的英文单词2、关键字的分类 2.1 数据类型关键字 byte :字节类型 short : 短整型 int : 整型 long: 长整型 float :单精度浮点型 double:双精度浮点型 char: 字符型 boolean : 布尔类型 void
2020-09-28 10:59:36
100
原创 Java基础
一、Java的发展史Java是一门面向对象的编程语言 ,1994年推出该语言 Java之父:James Gosling Java的鼻祖公司: Sun公司 Java 在2009年时被Oracle公司收购,先隶属于Oracle公司的产品 Java是开源、免费的产品 Java的开发工具: JDK (Java Development Kit) JDK版本从 JDK1.0开始 到现在的JDK12.0 ,我们学习J
2020-09-25 10:41:37
62
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人