Java中级
文章平均质量分 73
旷野之息
这个作者很懒,什么都没留下…
展开
-
[廖雪峰-Java教程]-网络编程-TCP编程
侵删TCP编程1.socket是什么?Socket是一个抽象概念,一个应用程序通过一个Socket来建立一个远程连接,而Socket内部通过TCP/IP协议把数据传输到网络:┌───────────┐ ┌───────────┐│Application│ │Application│├───────────┤ ...原创 2021-07-22 15:31:11 · 127 阅读 · 0 评论 -
[廖雪峰-Java教程]-网络编程-网络编程基础
侵删网络编程基础1.IP地址IPv4地址总共有232个(大约42亿),而IPv6地址则总共有2128个(大约340万亿亿亿亿),IPv4的地址目前已耗尽,而IPv6的地址是根本用不完的。IP地址又分为公网IP地址和内网IP地址。公网IP地址可以直接被访问,内网IP地址只能在内网访问。内网IP地址类似于:192.168.x.x 10.x.x.x有一个特殊的IP地址,称之为本机地址,它总是127.0.0.1。问题一:如何计算计算机的网络号?...原创 2021-07-22 14:41:25 · 256 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (十)- 基于JDBC设计DAO的实例
详情看这里Java-JDBC DAO0.DAO简介DAO=DataAccessObject数据访问对象实际上就是运用了练习-ORM中的思路,把数据库相关的操作都封装在这个类里面,其他地方看不到JDBC的代码JDBC之DAO设计l DAO(数据访问对象)的主要功能是数据操作;l 使用DAO设计模式,来封装数据库持久层的所有操作,使得低级的数据逻辑和高级的业务逻辑分离,达到解耦合的目的了;l 在程序开发的结构中属于数据层的操作;l 程序开发的标准架构如下:...原创 2021-07-21 20:06:49 · 238 阅读 · 3 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (九)- 使用JDBC做一个ORM例子
JDBC学习-ORM、DAO、数据库连接池ORM=Object Relationship Database Mapping对象和关系数据库的映射简单说,一个对象,对应数据库里的一条记录1:根据id返回一个Hero对象提供方法get(int id),返回一个Hero对象package charactor; public class Hero { //增加id属性 public int id; public String name; publ...原创 2021-07-21 16:04:15 · 73 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (八)- 如何在JDBC中使用事务
目录1:不使用事务的情况2:使用事务3:MYSQL 表的类型必须是INNODB才支持事务3.1存储引擎1:不使用事务的情况没有事务的前提下假设业务操作是:加血,减血各做一次结束后,英雄的血量不变而减血的SQL不小心写错写成了 updata(而非update)那么最后结果是血量增加了,而非期望的不变2:使用事务在事务中的多个操作,要么都成功,要么都失败通过 c.setAutoCommit(false);关闭自动提交使用 c.com...原创 2021-07-21 15:24:11 · 114 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (七)- 获取自增长ID以及表的元数据
1:获取自增长id 有自增长,有自缩短吗?【好像没必要?】在Statement通过execute或者executeUpdate执行完插入语句后,MySQL会为新插入的数据分配一个自增长id,(前提是这个表的id设置为了自增长,在Mysql创建表的时候,AUTO_INCREMENT就表示自增长)CREATE TABLE hero (id int(11) AUTO_INCREMENT,...}但是无论是execut...转载 2021-07-21 13:44:09 · 128 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (六)- 中EXECUTE与EXECUTEUPDATE的区别
目录1:相同点2:不同点3:分页查询1:相同点execute与executeUpdate的相同点:都可以执行增加,删除,修改2:不同点不同1:execute可以执行查询语句然后通过getResultSet,把结果集取出来executeUpdate不能执行查询语句不同2:execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等executeUpda...转载 2021-07-21 12:50:05 · 127 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (五)- 在JDBC中使用预编译STATEMENT 以及它的优点
详情看这里JAVA 中级 / JDBC / JDBC系列教材 (五)- 在JDBC中使用预编译STATEMENT 以及它的优点1:使用PreparedStatement和 Statement一样,PreparedStatement也是用来执行sql语句的。与创建Statement不同的是,需要根据sql语句创建PreparedStatement除此之外,还能够通过设置参数,指定相应的值,而不是Statement那样使用字符串拼接注: 这是JAVA里唯二的基1的地方,另一个是查询语句...原创 2021-07-20 22:52:00 · 212 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (四)- 在JDBC中使用RESULTSET查询SQL语句
详情看这里JAVA 中级 / JDBC / JDBC系列教材 (四)- 在JDBC中使用RESULTSET查询SQL语句4练习-分页查询设计一个方法,进行分页查询public static void list(int start, int count)start 表示开始页数,count表示一页显示的总数list(0,5)表示第一页,一共显示5条数据list(10,5)表示第三页,一共显示5条数据进行分页查询用到的SQL语句参考 :select * from her...原创 2021-07-20 21:25:32 · 187 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (三)- 增、删、改
JAVA 中级 / JDBC / JDBC系列教材 (三)- 增、删、改CRUD是最常见的数据库操作,即增删改查C增加(Create)R读取查询(Retrieve)U更新(Update)D删除(Delete)在JDBC中增加,删除,修改的操作都很类似,只是传递不同的SQL语句就行了。查询因为要返回数据,所以和上面的不一样。详情看链接。...转载 2021-07-20 20:19:10 · 71 阅读 · 0 评论 -
JAVA 中级 / JDBC / JDBC系列教材 (二)- 教程
目录1.数据库类别2.JDBC3.小结廖雪峰-JDBC简介,侵删。1.数据库类别既然我们要使用关系数据库,就必须选择一个关系数据库。目前广泛使用的关系数据库也就这么几种:付费的商用数据库: Oracle,典型的高富帅; SQL Server,微软自家产品,Windows定制专款; DB2,IBM的产品,听起来挺高端; Sybase,曾经跟微软是好基友,后来关系破裂,现在家境惨淡。 这些数据库都是不开源而且付费的,最大的好处是花了钱出了问原创 2021-07-20 20:15:55 · 129 阅读 · 2 评论 -
JAVA 中级 / 多线程 / 多线程系列教材 (二)- JAVA 常见的线程方法
目录1:当前线程暂停2:加入到当前线程中3:线程优先级4:临时暂停5:守护线程5.1面试官: 谈谈什么是守护线程以及作用 ?1:当前线程暂停Thread.sleep(1000); 表示当前线程暂停1000毫秒 ,其他线程不受影响Thread.sleep(1000); 会抛出InterruptedException 中断异常,因为当前线程sleep的时候,有可能被停止,这时就会抛出 InterruptedException2...转载 2021-07-20 15:16:22 · 83 阅读 · 0 评论 -
2021-07-20
目录1:线程概念2:创建多线程-继承线程类3:创建多线程-实现Runnable接口4:创建多线程-匿名类5:创建多线程的三种方式进程与线程的一个简单解释Java-多线程进程与线程的一个简单解释操作系统的设计,因此可以归结为三点:(1)以多进程形式,允许多个任务同时运行;(2)以多线程形式,允许单个任务分成不同的部分运行;(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。1:...转载 2021-07-20 13:39:50 · 59 阅读 · 0 评论 -
JAVA 中级 / LAMBDA / LAMBDA系列教材 (一)- JAVA LAMBDA 表达式教程
目录JAVA LAMBDA1.假设一个情景: 找出满足条件的Hero2.普通方法3.匿名类方式4.Lambda方式5.设置eclipse以支持Lambda6.从匿名类演变成Lambda表达式7.匿名方法8.Lambda的弊端java8 学习之路之lambdaJAVA LAMBDA 详情看链接。1.假设一个情景: 找出满足条件的HeroJava 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写La...转载 2021-07-19 22:39:26 · 91 阅读 · 0 评论 -
JAVA 中级 / 泛型 / 泛型系列教材 (三)- JAVA 泛型通配符 ? EXTENDS SUPER 的用法
Java 泛型通配符 ? extends super 的用法示例1:? extendsArrayList heroList<? extends Hero> 表示这是一个Hero泛型或者其子类泛型heroList 的泛型可能是HeroheroList 的泛型可能是APHeroheroList 的泛型可能是ADHero所以 可以确凿的是,从heroList取出来的对象,一定是可以转型成Hero的但是,不能往里面放东西,因为放APHero就不满足<ADHer...转载 2021-07-19 21:44:34 · 85 阅读 · 0 评论 -
JAVA 中级 / 泛型 / 泛型系列教材 (二)- JAVA 如何设计支持泛型的类
设计泛型1:不支持泛型的Stack以Stack栈为例子,如果不使用泛型当需要一个只能放Hero的栈的时候,就需要设计一个HeroStack当需要一个只能放Item的栈的时候,就需要一个ItemStack2:支持泛型的Stack设计一个支持泛型的栈MyStack设计这个类的时候,在类的声明上,加上一个<T>,表示该类支持泛型。T是type的缩写,也可以使用任何其他的合法的变量,比如A,B,X都可以,但是一般约定成俗使用T,代表类...转载 2021-07-19 16:18:10 · 69 阅读 · 0 评论 -
JAVA 中级 / 泛型 / 泛型系列教材 (一)- JAVA 什么是 泛型?
1.不使用泛型不使用泛型带来的问题ADHero(物理攻击英雄) APHero(魔法攻击英雄)都是Hero的子类ArrayList 默认接受Object类型的对象,所以所有对象都可以放进ArrayList中所以get(0)返回的类型是Object。接着,需要进行强制转换才可以得到APHero类型或者ADHero类型。如果软件开发人员记忆比较好,能记得哪个是哪个,还是可以的。 但是开发人员会犯错误,比如ADHero adHero2 = (ADHero) heros.get(0);,会记错...转载 2021-07-19 15:59:27 · 48 阅读 · 0 评论 -
JAVA 中级 / 集合框架 - 其他 - 聚合操作
1.聚合操作JDK8之后,引入了对集合的聚合操作,可以非常容易的遍历,筛选,比较集合中的元素。像这样:String name =heros.stream().sorted((h1,h2)->h1.hp>h2.hp?-1:1).skip(2).map(h->h.getName()).findFirst().get();但是要用好聚合,必须先掌握Lambda表达式...转载 2021-07-19 15:38:34 · 54 阅读 · 0 评论 -
JAVA 中级 / 集合框架 - 其他 - JAVA HASHCODE原理详解
目录1.List查找的低效率2.HashMap的性能表现3.HashMap原理与字典4.分析HashMap性能卓越的原因5.HashSet判断是否重复Java HashCode原理详解1.List查找的低效率假设在List中存放着无重复名称,没有顺序的2000000个Hero要把名字叫做“hero 1000000”的对象找出来List的做法是对每一个进行挨个遍历,直到找到名字叫做“hero 1000000”的英雄。最差的情况下,需要遍历和比较2000000次,才能..翻译 2021-07-19 14:31:43 · 126 阅读 · 0 评论 -
JAVA 中级 / 集合框架 - 关系与区别 - HASHSET、 LINKEDHASHSET、TREESET之间的区别
1.HashSet LinkedHashSet TreeSetHashSet: 无序LinkedHashSet: 按照插入顺序TreeSet: 从小到大排序Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及区别2.练习: 既不重复,又有顺序Java-集合框架 HashSet、LinkedHashSet、TreeSet之间的区别利用LinkedHashSet的既不重复,又有顺序的特性,把Math.PI中的数字,按照...原创 2021-07-18 20:14:30 · 94 阅读 · 0 评论 -
JAVA 中级 / 集合框架 /- 关系与区别 - HASHMAP和HASHTABLE之间的区别
目录1.HashMap和Hashtable的区别1.1HashMap不是线程安全的1.2HashTable是线程安全的一个Collection2.总结java HashMap和Hashtable的区别1.HashMap和Hashtable的区别HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式区别1:HashMap可以存放 nullHashtable不能存放null区别2:HashMap不是线程安全的类Hashtable是线程安全的类原创 2021-07-18 19:54:19 · 81 阅读 · 0 评论 -
java集合框架05——ArrayList和LinkedList的区别
目录1 .ArrayList和LinkedList的区别2.LinkedList一定比ArrayList的插入和删除效率高吗集合框架 ArrayList和LinkedList的区别1 .ArrayList和LinkedList的区别ArrayList插入,删除数据慢LinkedList,插入,删除数据快ArrayList是顺序结构,所以定位很快,指哪找哪。 就像电影院位置一样,有了电影票,一下就找到位置了。LinkedList 是链表结构,就像手里的一串佛珠,要找出第99个..原创 2021-07-18 19:35:05 · 92 阅读 · 0 评论 -
JAVA 中级 / 集合框架 /- 关系与区别 - JAVA HashSet和ArrayList的区别
1.区别arrayList 和hashSet的区别arrayList 和hashSet的区别1.HashSet 是不重复的 而且是无序的!唯一性保证. 重复对象equals方法返回为true ,重复对象hashCode方法返回相同的整数HashSet其实就是一个HashMap,只是你只能通过Set接口操作这个HashMap的key部分,2.ArrayList是可重复的 有序的特点:查询效率高,增删效率低 轻量级 线程不安全。arraylist:在数据的插入和删除方...原创 2021-07-18 16:16:45 · 94 阅读 · 0 评论 -
JAVA 中级 / 集合框架 - 其他集合 - JAVA 集合框架 COLLECTION
目录1.Collection1.1为什么需要Collection1.2数组和集合的区别1.3Collection的由来与功能2.实现(implementation)3.常用实现4.算法:1.CollectionCollection是 Set List Queue和 Deque的接口Queue: 先进先出队列Deque: 双向链表注:Collection和Map之间没有关系,Collection是放一个一个对象的,Map 是放键值对的注:Deque 继承 Q..原创 2021-07-18 15:27:09 · 110 阅读 · 0 评论 -
JAVA 中级 / 集合框架- 其他集合 - JAVA HASHMAP
集合框架系列教材 (八)- 其他集合 - Java HashMap1.HashMap的键值对HashMap储存数据的方式是—— 键值对package collection; import java.util.HashMap; public class TestCollection { public static void main(String[] args) { HashMap<String,String> di...原创 2021-07-18 13:59:52 · 139 阅读 · 0 评论 -
JAVA 中级 / 集合框架- 其他集合 - JAVA HASHSET 详解
目录1.元素不能重复2.没有顺序3.遍历4.HashSet和HashMap的关系java集合框架之HashSet1.元素不能重复Set中的元素,不能重复 HashSet<String> names = new HashSet<String>(); names.add("gareen"); System.out.println(names); //第二次插入同样的...原创 2021-07-18 00:10:03 · 82 阅读 · 0 评论 -
Linkedlist详解
1.1概述Linkedlist详解LinkedList 是 Java 集合中比较常用的数据结构,与 ArrayList 一样,实现了 List 接口,诸如add,remove,contains等等方法,只不过 ArrayList 是基于数组实现的,而 LinkedList 是基于链表实现的。所以 LinkedList 插入和删除方面要优于 ArrayList,而随机访问上则 ArrayList 性能更好。除了 LIst 接口之外,LinkedList 还实...原创 2021-07-17 20:37:39 · 421 阅读 · 0 评论 -
JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
目录1.什么是泛型2.泛型写法3. 特性1.什么是泛型什么是泛型在讲解什么是泛型之前,我们先观察Java标准库提供的ArrayList,它可以看作“可变长度”的数组,因为用起来比数组更方便。实际上ArrayList内部就是一个Object[]数组,配合存储一个当前分配的长度,就可以充当“可变数组”:public class ArrayList { private Object[] array; privat...原创 2021-07-17 14:48:10 · 1156 阅读 · 0 评论 -
JAVA 中级 / I/O / - 流关系图
1. 流分为字节流和字符流2. 字节流下面常用的又有数据流和对象流3. 字符流下面常用的又有缓存流java I/O流关系图两张图总结Java中的IO流分类文件写入的6种方法,这种方法性能最好...原创 2021-07-16 22:20:26 · 230 阅读 · 0 评论 -
JAVA 中级- JAVA 对象流 OBJECTINPUTSTREAM,OBJECTOUTPUTSTREAM
1.JAVA 对象流Java IO 对象流对象流指的是可以直接把一个对象以流的形式传输给其他的介质,比如硬盘。一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口。[疯狂Java]I/O:I/O流的最高境界——对象流(序列化:手动序列化、自动序列化、引用序列化、版本)1. 什么是对象流:序列化/反序列化的概念 1) 对象流是和字节流/字符流同处于一个概念体系的: ...原创 2021-07-16 21:44:31 · 283 阅读 · 0 评论 -
[JAVA 中级]JAVA 数据流DATAINPUTSTREAM ,DATAOUTPUTSTREAM
步骤1:直接进行字符串的读写使用数据流的writeUTF()和readUTF() 可以进行数据的格式化顺序读写。如本例,通过DataOutputStream 向文件顺序写出 布尔值,整数和字符串。 然后再通过DataInputStream 顺序读入这些数据。注:要用DataInputStream 读取一个文件,这个文件必须是由DataOutputStream 写出的,否则会出现EOFException,因为DataOutputStream 在写出的时候会做...转载 2021-07-16 15:51:54 · 547 阅读 · 0 评论 -
JAVA 中级- JAVA 缓存流BUFFEREDREADER,PRINTWRITER
1.为什么需要缓存流以介质是硬盘为例,字节流和字符流的弊端:在每一次读写的时候,都会访问硬盘。 如果读写的频率比较高的时候,其性能表现不佳。为了解决以上弊端,采用缓存流。缓存流在读取的时候,会一次性读较多的数据到缓存中,以后每一次的读取,都是在缓存中访问,直到缓存中的数据读取完毕,再到硬盘中读取。就好比吃饭,不用缓存就是每吃一口都到锅里去铲。用缓存就是先把饭盛到碗里,碗里的吃完了,再到锅里去铲...原创 2021-07-16 14:27:48 · 240 阅读 · 0 评论 -
JAVA 中级 - JAVA的字符流 READER WRITER
0.输入字符流(Writer)和输出字符流(Reader)咋区分?JAVA 中级 / I/O / I/O系列教材 (二)- 什么JAVA 的流 STREAM?关于输入和输出是以内存为对象的,把内存外部的东西调入内存即为输入,将内存里面的内容储存到硬盘等操作则为输出。内存和硬盘就好比两个储水的容器,所以要实现里面的内容互换,就必须要管道连接,这就是输入和输出流对象的作用。输入字符流(Writer)和输出字符流(Reader)咋区分?...原创 2021-07-15 21:49:03 · 66 阅读 · 0 评论 -
JAVA 中级 I/O系列教材 (四)- 关闭流的方式
目录0.0应用场景 0.1简要描述开发过程中close()方法关闭流的原因步骤1:在try中关闭步骤2:在finally中关闭步骤3:使用try()的方式4.面试题:关闭流,不用close,还有什么方法java中流的关闭条件0.0应用场景文件传输(复制文件,删除文件或文件夹,文件改名等) 网络传输(从服务器进行数据读取,上传下载等) 硬盘数据的存储所有的流,无论是输入流还是输出流,使用完毕之后,都应该关闭。 如果不关闭,会产...原创 2021-07-14 17:26:25 · 870 阅读 · 0 评论 -
JAVA 中级 / 异常处理 / - JAVA 自定义异常
目录0.应用场景1.根异常2.other异常从根异常派生3.自定义异常练习0.应用场景Java自定义异常与异常使用最佳实践 服务器的基本作用是处理与客户机的通信,若使用标准Java API(如java.io和java.net包中的类)来编写服务器,则可使编写的代码在多个位置抛出IOException。在设置服务器、等待客户机连接和获取通讯流时,可抛出IOException,在通信期间及试图断开连接时,也会抛出IOException。简而言之,服务器的各个部分...原创 2021-07-13 13:59:32 · 292 阅读 · 0 评论 -
JAVA 中级 / I/O / I/O系列教材 (一)- JAVA 的FILE类,以及常用方法
目录练习-遍历文件夹(非递归)练习-遍历子文件夹(递归)JAVA 中级 / I/O / I/O系列教材 (一)- JAVA 的FILE类,以及常用方法练习-遍历文件夹(非递归)package file; import java.io.File; public class TestFile { public static void main(String[] args) { File f = new File("c:\\windows"转载 2021-07-13 16:36:34 · 63 阅读 · 0 评论 -
JAVA 中级 / I/O / I/O系列教材 (二)- 什么JAVA 的流 STREAM?
JAVA 中级 / I/O / I/O系列教材 (二)- 什么JAVA 的流 STREAM?深入理解 Java中的 流 (Stream)1.什么是流?什么是流(Stream),流就是一系列的数据。流是一个相对抽象的概念,所谓流就是一个传输数据的通道,这个通道可以传输相应类型的数据。进而完成数据的传输。这个通道被实现为一个具体的对象。当不同的介质之间有数据交互的时候,JAVA就使用流来实现。数据源可以是文件,还可以是数据库,网络...原创 2021-07-13 19:20:44 · 98 阅读 · 0 评论 -
JAVA 中级 JAVA 字节流 INPUTSTREAM OUTPUTSTREAM
目录1.输入和输出是以内存为对象的2.以字节流的形式读取文件内容3.以字节流的形式向文件写入数据1.输入和输出是以内存为对象的关于输入和输出是以内存为对象的,把内存外部的东西调入内存即为输入,将内存里面的内容储存到硬盘等操作则为输出。根据数据的流向分为:输入流和输出流。输入流:把数据从其他设备上读取到内存中的流。输出流:把数据从内存中写出到其他设备上的流。Input...原创 2021-07-13 21:55:36 · 155 阅读 · 0 评论