Java基础
本专栏是本人学习韩顺平零基础快速学Java[ 零基础30天学会Java]所记录的笔记
小黄debug
这个作者很懒,什么都没留下…
展开
-
静态代理与动态代理
1、代理模式的原理:使用一个代理将对象包装起来,然后用该代理对象取代原始对象,任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上2、静态代理实现Runnable接口的方法创建多线程。Class MyThread implements Runnable{} //相当于代理类Class Thread implements Runnable{} //被代理对象main(){MyThread t = new MyThread();Th...原创 2022-04-10 20:56:25 · 314 阅读 · 0 评论 -
Java基础 Java8新特性
目录:1、Lambda表达式2、函数式(Functional)接口3、方法引用与构造器引用4、强大的Stream API5、Optional类学习思维方式:1、大处着眼,小处着手2、逆向思维,反证法3、透过问题看本质两句话:1、小不忍则乱大谋2、识时务者为俊杰Java8新特性简介:速度更快代码更少(增加了新的语法:Lambda表达式)强大的Stream API便于并行最大化减少空指针异常:OptionalNashorn引擎,允许原创 2022-04-09 23:18:28 · 492 阅读 · 0 评论 -
Java基础 网络编程练习
1、编程题 Homework01.javaHomework01Server.java Homework01Client.java1、使用字符流的方式,编写一个客户端程序和服务器端程序2、客户端发送"name",服务端接收到后,返回"我是nova",nova是你自己的名字3、客户端发送"hobby",服务端接收到后,返回"编写java程序"4、不是这两个问题,回复"你说啥呢"import java.io.*;import java.net.InetAddress;import j原创 2022-03-27 23:19:34 · 1388 阅读 · 0 评论 -
Java基础 UDP网络通信编程[了解]
基本介绍1、类DatagramSocket和DatagramPacket[数据包/数据报]实现了基于UDP协议网络程序2、UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不确定什么时候可以抵达3、DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号4、UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接5、DatagramSoc原创 2022-03-27 14:01:47 · 731 阅读 · 0 评论 -
Java基础 TCP网络通信编程-不为人知的秘密
1、当客户端连接到服务端后,实际上客户端也是通过一个端口和服务端进行通讯的,这个端口是TCP/IP来分配的2、示意图3、程序验证使用大文件传输,然后使用netstat -an | more,进行观察...原创 2022-03-27 10:32:41 · 509 阅读 · 0 评论 -
java基础 TCP网络通信编程-netstat指令
netstat指令1、netstat -an 可以查看当前主机网络情况,包括端口监听情况和网络连接情况2、netstat -an | more 可以分页显示3、要求在dos控制台下执行 【win+r】说明:1)Listening表示某个端口在监听2)如果有一个外部程序(客户端)连接到该端口,就会显示 一条连接信息3)可以输入ctrl+c退出指令win+r,输入cmd后 ctrl+shift+enter直接进入管理员模式...原创 2022-04-07 20:26:55 · 332 阅读 · 0 评论 -
Java基础 TCP网络通信编程-文件传输
应用案例4 TCPFileCopy.java1、编写一个服务端,和一个客户端2、服务器端在8888端口监听3、客户端连接到服务端,发送一张图片 e:\\qie.png4、服务器端接收到客户端发送的图片,保存到src下,发送"收到图片"再退出5、客户端接收到服务端发送的"收到图片",再退出6、该程序要求使用StreamUtils.java说明:使用BufferedInputStream和BufferedOutputStream字符流import java.io.*;/**原创 2022-03-27 09:16:10 · 491 阅读 · 0 评论 -
Java基础 InetAddress、Socket、TCP网络通信编程介绍
相关方法1、获取本机InetAddress对象getLocalHost2、根据指定主机名/域名获取ip地址对象getByName3、获取InetAddress对象的主机名getHostName4、获取InetAddress对象的地址getHostAddress原创 2022-03-26 21:00:20 · 995 阅读 · 0 评论 -
Java基础 TCP和UDP
TCP和UDPTCP协议:传输控制协议1、使用TCP协议前,须先建立TCP连接,形成传输数据通道2、传输前,采用"三次握手"方式,是可靠的3、TCP协议进行通信的两个应用进程:客户端、服务端4、在连接中可进行大数据量的传输5、传输完毕,需释放已建立的连接,效率低UDP协议:用户数据协议1、将数据、源、目的封装成数据包,不需要建立连接2、每个数据报的大小限制在64K内,不适合传输大量数据3、因无需连接,故是不可靠的4、发送数据结束时无需释放资源(因为不是面向连接的)原创 2022-03-26 14:38:28 · 147 阅读 · 0 评论 -
Java基础 网络通信协议
》协议(tcp/ip)TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议,Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的网络协议的理解...原创 2022-03-26 14:22:21 · 589 阅读 · 0 评论 -
Java基础 域名和端口
域名1、www.baidu.com2、好处:为了方便记忆,解决记ip的困难3、概念:将ip地址映射成域名,这里怎么映射上的,Http协议端口号1、概念:用于标识 计算机上某个特定的网络程序2、表示形式:以整数形式,范围0~65535 [2个字节表示端口 0~2^16-1]3、0~1024已经被占用,比如ssh 22,ftp 21,smtp 25 http 804、常见的网络程序端口号:tomcat:8080mysql:3306oracle:1521sqlser原创 2022-03-26 13:53:31 · 1413 阅读 · 0 评论 -
Java基础 IP地址
ip地址1、概念:用于唯一标识网络中每台计算机/主机2、查看ip地址ipconfig3、ip地址的表示形式:点分十进制 xx.xx.xx.xx4、每个十进制数的范围:0~2555、ip地址的组成=网络地址+主机地址,比如192.168.16.696、ipv6是互联网工程任务组设计的用于替代ipv4的下一代ip协议,其地址数量唯一性我可以为全世界的每一粒沙子编上一个地址。ip表示:对于IPV4 4个字节(32位) 表示 一个字节的范围是0~255对于IPV6 16个...原创 2022-03-26 13:38:31 · 1721 阅读 · 0 评论 -
Java基础 网络相关概念
网络编程内容网络基础InetAddressSocketTCP编程UDP编程网络通信:1、概念:两台设备之间通过网络实现数据传输2、网络通信:将数据通过网络从一台设置传输到另一台设备3、java.net包下提供了一系统的类或接口,供程序员使用网络:1、概念:两台或多台设备通过一定物理设备连接起来构成了网络2、根据网络的覆盖范围不同,对网络进行分类:局域网:覆盖范围最小,仅仅覆盖一个教室或一个机房城域网:覆盖范围较大,可以覆盖一个城市广域网:覆盖范围最原创 2022-03-26 11:51:08 · 588 阅读 · 0 评论 -
Java基础 线程5作业
1、编程题(1)在main方法中启动两个线程(2)第一个线程循环随机打印100以内的整数(3)直到第2个线程从键盘读取了“Q"命令/** * @ClassName HomeWork01 * @Description * @Author 小黄debug * @Date 2022/3/22 22:16 * @Version 1.0 **/public class HomeWork01 { public static void main(String[] args) {原创 2022-03-22 23:41:06 · 494 阅读 · 1 评论 -
Idea 使用
调整idea设置分配内存大小找安装目录地址C:\Program Files\JetBrains\IntelliJ IDEA 2021.2\bin编辑 idea64.exe.vmoptions-Xmx4096m-XX:ReservedCodeCacheSize=1024m-Xms2048m-XX:+UseG1GC-XX:SoftRefLRUPolicyMSPerMB=50-XX:CICompilerCount=2-XX:+HeapDumpOnOutOfMemoryError-XX:原创 2022-03-22 13:39:31 · 267 阅读 · 0 评论 -
Java基础 线程4 Synchronized同步
线程同步机制1、在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性2、也可以这样理解 :线程同步,即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作同步具体方法-Synchronized1、同步代码块synchronized(对象){ //得到对象的锁,才能操作同步代码//需要被同步代码}2、synchronized还原创 2022-03-21 22:46:44 · 123 阅读 · 0 评论 -
Java基础 线程3 线程的生命周期
线程的生命周期JDK中用了Thread.State枚举表示 了线程的几种状态public static enum Thread.Stateextends Enum<Thread.State>线程状态。线程可以牌以下状态之一NEW:尚未启动的线程处于此状态。RUNNABLE:在Java虚拟机中执行的线程处于此状态 其实RUNNABLE前面还有一个Readly,准备就续的状态,进不进入到RUNNABLE看内核调度器是否执行,如果执行则进入到RUNNABLE...原创 2022-03-20 20:48:27 · 428 阅读 · 0 评论 -
Java基础 线程2 线程的基本使用
线程的基本使用案例1线程应用案例1-继承Thread类1、请编写程序,开启一个线程,该线程每隔1秒,在控制台输出“喵喵,我是小猫咪"2、对上题进行改:当输出80次时,结束该线程3、使用JConsole监控线程执行情况,并画出程序示意图//查看cpu核心数/线程数/** * @ClassName CpuNum * @Description * @Author 小黄debug * @Date 2022/3/20 13:01 * @Version 1.0 **/publ原创 2022-03-20 16:04:33 · 558 阅读 · 0 评论 -
Java基础 线程、进程1
线程、进程、java基础、介绍、相关概念、原创 2022-03-20 13:28:52 · 193 阅读 · 0 评论 -
Java基础 坦克大战04多个坦克
在HsyTnkGame02.java基础上画出三辆坦克,注意颜色分析1、因为敌人的坦克,是在MyPanel上,所以我们的代码在MyPanel2、因为敌人的坦克,后面有自己特殊的属性和方法,可以单开一个EnemyTank3、敌人坦克数量多,可以放入到集合Vector,因为考虑多线程的问题在上一篇坦克移动的基础上Java基础 坦克大战02坦克移动_小黄debug的博客-CSDN博客进行添加和修改将敌人坦克进行一次继承封装/** * @ClassName EnemyTa原创 2022-03-20 12:33:35 · 307 阅读 · 0 评论 -
Java基础 坦克大战02小球移动-事件
Java 事件处理机制事件处理机制深入理解1、几个重要概念:事件源,事件,事件监听器2、事件源:事件源是一个产生事件的对象,比如按钮,窗口等3、事件:事件就是承载事件源状态改变时的对象,比如当键盘事件、鼠标事件、窗口事件等等,会生成一个事件对象,该对象保存着当前事件很多信息,比如KeyEvent对象有含义被按下键Code值,java.awt.event包和javax.swing.event包中定义了各种事件类型import javax.swing.*;import java.awt.原创 2022-03-19 07:47:29 · 103 阅读 · 0 评论 -
Java基础 坦克大战01绘制坦克
java绘图坐标体系坐标体系-像素1、绘图还必须搞清一个非常重要的概念-像素 一个像素等于多少厘米?2、计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800*600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。像素是一个就密度单位,而厘米是长度单位,两者无法比较Java绘图技术介绍-快速入门import javax.swing.*;import java.awt.*;/** * @Cla原创 2022-03-18 00:25:30 · 498 阅读 · 0 评论 -
java基础 泛型2作业
1、编程题Homework01.java定义个泛型类DAO<T>,在其中定义一个Map成员变量,Map的键为String类型,值为T类型分别创建以下方法:1)public void save(String id,T entity):保存T类型的对象到Map成员变量中2)public T get(String id):从map中获取id对应的对象3)public void update(String id,T entity):替换map中key为id的内容,改为entity对象原创 2022-03-17 21:25:55 · 663 阅读 · 0 评论 -
Java基础 TreeSet
import java.util.Comparator;import java.util.TreeSet;/** * @ClassName TreeSet_ * @Description * @Author 小黄debug * @Date 2022/3/14 0:17 * @Version 1.0 **/public class TreeSet_ { public static void main(String[] args) { //解读 ...原创 2022-03-14 06:49:55 · 567 阅读 · 0 评论 -
Java基础 Map接口实现类Properties
基本介绍1.Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存数据2.他的使用特点和Hashtable类似3.Properties还可以用于从xxx.properties文件中,加载数据到Properties类对象,并进行读取和修改4.说明:工作后xxx.properties文件通常作为配置文件,这个知道点在IO流举例,有兴趣可先看文章简易使用import java.util.Properties;/** * @ClassNa原创 2022-03-14 00:01:26 · 1099 阅读 · 0 评论 -
Java基础 Collections的工具类
Collections的工具类常用方法reverse(List): 反转List中元素的顺序shuffle(List):对List集合元素进行随机排序sort(List):根据元素的自然顺序对指定List集合元素按升序排序sort(List, Comparator):根据指定的Comparator产生的顺序对List集合元素swap(List,int,int):将指定list集合中的i处元素和j处元素进行交换1、Object max(Collection):根据元素的自然顺序,返原创 2022-03-14 10:27:23 · 80 阅读 · 0 评论 -
Java基础 集合-Set之HashSet
Set接口的常用方法和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样Set接口的遍历方式同Collection的遍历方式一样,因为Set接口是Collection接口的子接口1)可以使用迭代器2)增强for3)不能使用索引的方式来获取//1.以set接口的实现类 HashSet来说明Set接口的方法//2.set接口的实现类的对象(Set接口对象),不能存放重复的元素,可以添加一个null//3.set接口对象存放原创 2022-03-10 22:51:27 · 1099 阅读 · 0 评论 -
Java基础 Map
Map接口实现类的特点(很实用)注意:这里讲的是JDK8的Map接口特点1、Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value2、Map中的key和value可以任何引用类型的数据,会封装到HaspMap$Node对象中3、Map中的key不允许重复,原因和HashSet一样,前面分析过源码4、Map中的value可以重复5、Map的key可以为null,value也可以为null,注意key为null,只能有一个,value为null,可以多个原创 2022-03-13 21:44:58 · 3018 阅读 · 0 评论 -
Java基础 集合-LinkedList体验
LinkedList说明: 1)LinkedList底层维护了一个双向链表。 2)LinkedList中维护了两个属性first和last分别指向首节点和尾结点 3)每个节点(Node)对象,里面又维护了prev、next、item三个属性,其中通过 prev指向前一个,通过next指向后一个节点。最终实现双向链表 4)所以LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高/** * @author 黄石杨 on 2022/3/10 * @ver...原创 2022-03-10 11:17:15 · 250 阅读 · 0 评论 -
Java基础 ArrayList和LinkedList比较
ArrayList和LinkedList比较 底层结构 增删效率 改查效率 ArrayList 可变数组 较低 数组扩容 较高 LinkedList 双向链表 较高,通过链表追加 较低 如何选择ArrayList和LinkedList:1)如果我们改查的操作多,选择ArrayList2)如果我们增删的操作多,选择LinkedList3)一般来说,在程序 中,80%~90%都是查询,因此大部分情况下会选择原创 2022-03-10 20:26:05 · 318 阅读 · 0 评论 -
Java基础 集合-Set之HashSet练习
定义一个Employee类,该包含:private成员属性name,age要求;1、创建3个Employee放入到HashSet中2、当name和age的值相同时,认为是相同员工,不能添加到HashSet集合中import java.util.HashSet;import java.util.Objects;public class HashSetExercise { public static void main(String[] args) { HashSet原创 2022-03-13 12:31:03 · 904 阅读 · 1 评论 -
IDEA常见设置和使用技巧
查看源码settings --> Build,Execution,Deployment --> Debugger --> Data Views --> Java将Enable alternative view for Collections classes和Hide_null elements in arrays and collections复选框的勾去掉查看类的继承关系图右击选中的类,选择Diagrams --> Show Diagram...原创 2022-03-13 17:07:36 · 663 阅读 · 0 评论 -
Java基础 Map接口实现类Hashtable
HashTable的基本介绍1、存放的元素是键值对:即K-V2、hashtable的键和值都不能为null,否则会抛出NullPointerExce3、hashTable使用方法基本上和HashMap一样4、hashTable是线程安全的,hashMap是线程不安全的5、简单看下底层结构HashTable的应用案例//下面的代码是否正确,如果错误,为什么table.put("john",100);//oktable.put(null,100);//异常,Key不能为空原创 2022-03-13 23:15:18 · 725 阅读 · 0 评论 -
Java基础 集合-LinkedList源码分析
LinkedList双向链表源码分析import java.util.Iterator;import java.util.LinkedList;import java.util.NoSuchElementException;/** * @author 小黄debug on 2022/3/10 * @version 1.0 */public class LinkedListCRUD { public static void main(String[] args) {原创 2022-03-10 19:34:34 · 387 阅读 · 0 评论 -
Java基础 开发中如何选择集合实现类
在开发中,选择什么集合实现类,主要取决于业务操作特点,然后根据集合实现类特性进行选择,分析如下:1)先判断 存储的类型(一组对象【单列】或一组键值对【双列】)2)一组对象【单列】:Collection接口允许重复:List增删多:LinkedList 【底层维护了一个双向链表】改查多:ArrayList 【底层维护Object类型的可变数组】不允许重复:Set...原创 2022-03-14 00:14:06 · 577 阅读 · 0 评论 -
Java基础 Collections练习
练习一1、封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;2、只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象新闻一:新冠确认病例超千万,数百万印度教信徒赴恒河“圣浴”引民众担忧新闻二:男突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生3、将新闻对象添加到ArrayList集合中,并且进行倒序遍历;4、在遍历集合过程中对新闻标题进行处理,超过15个字的只保留前15个,然后在后边加"..."5、在控制台打印原创 2022-03-14 14:07:34 · 801 阅读 · 2 评论 -
Java基础 Set-LinkedHashSet
LinkedHashSet的全面说明1、LinkedHashSet是HashSet的子类2、LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表3、LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的4、LinkedHashSet不允许添加重复元素说明:1、在LinkedHastSet中维护了一个hash表和双向链表(LinkedHashSet有head和原创 2022-03-13 17:07:17 · 4569 阅读 · 0 评论 -
Java基础 泛型1
泛型的理解和好处1、请编写程序,在ArrayList中,添加3个Dog对象2、Dog对象含有name和age,并输出name和age(要求使用getXXX())使用传统方法import java.util.ArrayList;/** * @author 小黄debug on 2022/3/15 * @version 1.0 */public class Generic01 { public static void main(String[] args) {原创 2022-03-15 18:53:51 · 3618 阅读 · 0 评论