Java
文章平均质量分 70
Java学习
x .y
这个作者很懒,什么都没留下…
展开
-
深入理解JMM内存模型
规定了对共享变量的写操作对其它线程的读操作可见,它是可见性与有序性的一套规则总结,抛开以下 happens-before 规则,JMM 并不能保证一个线程对共享变量的写,对于其它线程对该共享变量的读可见。修饰,修改一个共享变量时,通常只是修改了自己的工作内存中该变量的值,并没有立即将该变量的值写回主存,当线程结束时,它会将自己工作内存中修改过的共享变量的值写回主存。3、1 秒之后,main 线程修改了 run 的值,并同步至主存,而 t 是从自己工作内存中的高速缓存中读取这个变量的值,结果永远是旧值。原创 2024-07-29 23:56:05 · 419 阅读 · 0 评论 -
Synchronized的锁升级过程是怎样的?
关键字加到static静态方法和代码块上都是是给 Class 类上锁;关键字加到实例方法上是给对象实例上锁;尽量不要使用,因为 JVM 中,字符串常量池具有缓存功能,多个线程使用相同的字符串值,实际使用的是同一个对象。原创 2024-07-29 23:51:10 · 885 阅读 · 0 评论 -
Spring事件机制
自定义一个事件类,继承ApplicationEvent。该事件可以被ApplicationContext通过publishEvent方法进行发送return msg;@Subscribe@Override/*** 注解@AllowConcurrentEvents是用来标识当前订阅者是线程安全的。原创 2024-07-25 21:56:24 · 1441 阅读 · 2 评论 -
JAVA-------多态详解
多态: 同一个对象,在不同时刻表现出的不同形态举例:猫我们可以说猫是猫:猫 cat = new 猫();我们也可以说猫是动物:动物 animal=new 猫();这里猫在不同时刻表现出不同的状态,这就是多态多态的前提和实现:有继承/实现关系有方法重写有父类引用指向子类对象多态的好处:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作多态的弊端:不能使用子类的特有功能下面看代码animal类:public c原创 2021-01-25 17:06:20 · 253 阅读 · 0 评论 -
JAVA-------抽象和接口简单理解
抽象的特点:一个类中的方法不给方法体,一个方法,要么有方法体,要么定义为抽象类,抽象方法必须在抽象类中,用关键字abstract抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类抽象类不能实例化,参照多态,通过子类对象实例化抽象类的子类要么是抽象类,要么重写抽象类方法抽象类:public abstract class animal { public abstract void eat();}通过多态,子类重写父类方法:public class animalDemo exte原创 2021-01-26 14:57:55 · 229 阅读 · 0 评论 -
JAVA------TCP发送数据和接收数据
TCP发送数据和接收数据1.TCP通信原理:TCP通信协议是一种可靠的网络协议, 它在通信的两端各建立一个Socket对象, 从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产 生IO流来进行网络通信Java为客户端提供了Socket类,为服务器端提供了ServerSocket类2.TCP发送数据的步骤:创建客户端的So原创 2021-02-10 12:27:35 · 1048 阅读 · 2 评论 -
JAVA------UDP发送数据和接收数据
UDP接受数据发送数据UDP发送数据的步骤:创建发送端的Socket对象(DatagramSocket)创建数据,并将数据打包调用DatagramSocket对象的方法发送数据关闭发送端看代码演示:package UDP;import java.io.IOException;import java.net.*;public class SendDemo { public static void main(String[] args) throws IOException{原创 2021-02-10 12:20:32 · 298 阅读 · 0 评论 -
JAVA------网络编程三要素
网络编程三要素:IP地址端口协议一、IP地址IP地址常用命令:ipconfig:查看本机ip地址ping IP地址:检查网络是否连通特殊IP地址:127.0.0.1,是回送地址,可以代表本机地址,一般用来测试使用IP地址IP地址:是网络中设备的唯一标识IP地址分为两大类:IPv4: 是给每个连接在网络上的主机分配一个32bit地址。 按照TCP/IP规定, IP地址用二进制来表示,每个IP地址长32bit,也就是4个字节。例如一个采用二进制形式的IP地址是“10100原创 2021-02-09 23:56:17 · 166 阅读 · 0 评论 -
JAVA------生产者消费者
生产者消费者模式概述为了体现生产和消费过程中的等待和唤醒,Java就提供了几个方法供我们使用,这几个方法在Object类中Object类的等待和唤醒方法:void wait():导致当前线程等待,直到另一个线程调用该对象的notify()方法或notifyAll()方法void notify():唤醒正在等待对象监视器的单个线程void notifyAll():唤醒正在等待对象监视器的所有线程案例:生产者会生产牛奶送到奶箱中,而消费者可以从奶箱中取走牛奶,但是生产者必须等消费原创 2021-02-08 20:50:18 · 232 阅读 · 0 评论 -
JAVA------线程同步(案例详解)
先看一个案例:需求:某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票思路:定义一个类ticket实现Runnable接口,里面定义一个成员变量: private int tickets= 100;在ticket类中重写run()方法实现卖票, 代码步骤如下:A:判断票数大于0,就卖票,并告知是哪个窗口卖的B:卖了票之后,总票数要减1C:票没有了,也可能有人来问,所以这里用死循环让卖票的动作一直执行定义一个测试类, 里面有main方法,代码原创 2021-02-08 20:39:15 · 617 阅读 · 0 评论 -
JAVA------多线程
多线程的实现方式:继承Thread类实现Runnable接口方式一:继承Thread类定义一个类MyThread继承Thread类在MyThread类中重写run方法创建MyThread类的对象启动线程下面看一段代码:MyThread重写run方法,输出0-99public class MyThread extends Thread { @Override public void run() { for(int i=0;i<100;i++){ System.原创 2021-02-07 19:23:38 · 286 阅读 · 0 评论 -
JAVA------集合之Map
Map集合概述Interface Map<K,V>K:键的类型; V:值的类型将键映射到值的对象; 不能包含重复的键;每个键可以映射到最多一个值 举例: 学生的学号和姓名创建Map集合的对象1.多态的方式2. 具体的实现类HashMap看一段代码:package Map;import java.util.HashMap;import java.util.Map;public class MapDemo01 { public static void main(St原创 2021-02-02 15:56:30 · 289 阅读 · 1 评论 -
JAVA------集合之TreeSet
TreeSet集合特点元素有序, 这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序, 具体排序方式取决于构造方法TreeSet():根据其元素的自然排序进行排序TreeSet(Comparator comparator) :根据指定的比较器进行排序没有带索引的方法, 所以不能使用普通for循环遍历由于是Set集合, 所以不包含重复元素的集合看一段代码:package Set;import java.util.TreeSet;public class原创 2021-02-01 19:16:13 · 194 阅读 · 0 评论 -
JAVA------集合之Set
Set继承自CollectionSet特点:不包含重复元素集合没有带索引的方法,所以不能使用普通for循环遍历HashSet:对集合迭代顺序不做任何保证示例:package Set;import java.util.HashSet;import java.util.Set;public class SetDemo01 { public static void main(String[] args) { Set<String> set=new HashSet&原创 2021-01-30 20:57:21 · 293 阅读 · 1 评论 -
JAVA------集合之List
List集合概述:继承自Collection有序集合,用户可以精确控制列表中每个元素的插入位置。用户可通过整数索引访问元素,并搜索列表中的元素允许重复的元素List集合特有方法:void add(int index,E element):在此集合中的指定位置插入指定元素E remove(int index):删除指定索引处元素,返回被删除的元素E set(int index,E element):修改指定索引处的元素,返回被修改的元素E get(int index):返回指定索引处的原创 2021-01-30 20:31:26 · 429 阅读 · 1 评论 -
JAVA------集合概述---Collection常用方法
集合的特点:提供一种存储空间可变的存储模型,存储的数据容量 可以随时发生改变集合分类:创建Collection集合对象:因为Collection是一个接口,因此要以多态的方式创建对象Collection<String> c=new ArrayList<String>();示例:package Collection;import java.util.*;import java.util.concurrent.ArrayBlockingQueue;publi原创 2021-01-30 20:24:10 · 349 阅读 · 1 评论 -
JAVA-----继承与super关键字详解
继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等首先讲一下java中super和this关键字的区别:关键字访问成员变量访问构造方法访问成员方法thisthis.成员变量–访问本类成员变量this(…) --访问本类构造方法this.成员方法–访问本类成员方法supersuper.成员变量–访问父类成员变量super(…) --访问父类构造方法super.成员方法–访问父类成员方法java中继承的语法为:public class 子类原创 2021-01-24 14:11:11 · 533 阅读 · 0 评论 -
JAVA------学生管理系统
学了几天JAVA后,试了写了个学生管理系统,全都是基础语法!!学生管理系统分为五个功能:添加学生删除学生修改学生查看所有学生退出1. 先创建学生类public class student { private String sid;//学号 private String name;//姓名 private String age;//年龄 private String address;//地址 public student() {}//无参构造 public stude原创 2021-01-23 13:01:43 · 291 阅读 · 1 评论 -
JAVA---String与StringBuilder详解
一. String的构造方法 public String():创建一个空白字符串对象。不含有任何内容 public String(char[] chs):根据字符数组的内容,来创建字符串对象 public String(byte[] bys):根据字节数组的内容,来创建字符串对象 String s="abc":直接赋值的方式创建字符串对象,内容是abc最常用的还是最后一种,直接赋值需要注意的是:对于第一种构造方法,他们的内容相同,但地址不同 char[] chs原创 2021-01-22 13:20:04 · 327 阅读 · 0 评论