![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
胡小冰
这个作者很懒,什么都没留下…
展开
-
生产者和消费者模型解决方法
一、管程法//测试生产者消费者模型--》利用缓冲区解决:管程法//生产者,消费者,产品,缓冲区public class TestPC { public static void main(String[] args) { SynContainer container = new SynContainer(); new Productor(container).start(); new Consumer(container).start();原创 2021-07-08 19:01:18 · 81 阅读 · 0 评论 -
多线程加锁练习
未加锁的多线程:package SYN;//不安全的取钱public class UnsafeBank { public static void main(String[] args) { Account account = new Account(100, "结婚基金"); Drawing you = new Drawing(account, 50, "你"); Drawing girlFriend = new Drawing(account原创 2021-07-08 16:21:46 · 122 阅读 · 0 评论 -
超详细Java多线程学习笔记
空1、Thread(重点)2、Runnable(重点)3、初识并发问题4、实现Callable接口(了解即可)5、静态代理六、Lamda表达式七、线程状态八、停止线程九、线程休眠十、线程礼让十一、Join十二、线程状态观测十三、线程的优先级十四、守护(daemon)线程1、Thread(重点)自定义线程类继承Thread类重写==run()==方法,编写线程执行体创建线程对象,调用==start()==方法启动线程代码示例:package testthread1;/** * * 创建原创 2021-07-07 21:46:29 · 353 阅读 · 15 评论 -
多线程练习:打印当前电脑时间
import java.text.SimpleDateFormat;import java.util.Date;public class TestSleep2 { public static void main(String[] args) { //打印当前系统时间 Date startTime = new Date(System.currentTimeMillis());//获取当前时间 while(true){ t原创 2021-07-07 20:05:38 · 213 阅读 · 0 评论 -
多线程龟兔赛跑
需求:首先来个赛道比赛,然后要离终点越来越近判断比赛是否结束打印出胜利者龟兔赛跑开始故事中是乌龟赢,所以使用sleep让兔子睡觉乌龟赢得比赛实现代码:public class Race implements Runnable{ private static String winner; @Override public void run(){ for(int i = 0; i <= 100; i++){ //模拟原创 2021-07-06 23:02:20 · 155 阅读 · 0 评论 -
Java 值传递还是引用传递的区别
首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。这就好像用大学的名词来解释高中的题目,对于初学者根本没有任何意义。一:搞清楚 基本类型 和 引用类型的不同之处int num = 10;Str.转载 2021-04-14 11:13:30 · 89 阅读 · 0 评论 -
彻底理解JAVA动态代理
代理设计模式定义:为其他对象提供一种代理以控制对这个对象的访问。动态代理使用java动态代理机制以巧妙的方式实现了代理模式的设计理念。代理模式示例代码:public interface Subject { public void doSomething(); } public class RealSubject implements Subject { public void doSomething() { System.out.转载 2021-04-13 10:31:23 · 85 阅读 · 0 评论 -
用Java实现矩阵的相加、相乘、转置和稀疏矩阵的操作
1、矩阵的相加矩阵的相加运算比较简单,前提是相加的两个矩阵行数与列数必须相等。代码如下:import java.io.*;public class CH02_02 { public static void MatriAdd(int arrA[][], int arrB[][], int arrC[][], int dimX, int dimY) { int row, col; if(dimX <= 0 || dimY <=原创 2021-04-08 17:40:29 · 1661 阅读 · 0 评论 -
Java项目 超市管理系统(五)工具类的创建和分析
这篇博客的主要内容是关于工具类的代码和分析。如果将计算功能、查询&&打印功能、字符获取功能都放在主函数里面的话会导致主函数代码啊太多了,所以项目的设计人将上面的三个功能抽取出来,并封装在工具包中,用来调用。1、Arithpackage lyons.tools;import java.math.BigDecimal;/** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入. * * 注意:此代.原创 2020-12-15 22:24:59 · 545 阅读 · 0 评论 -
Java项目 超市管理系统(四)页面程序分析
首先是主页面 MainPage:代码再上一篇博客已经给过了 Java项目 超市管理系统(三)页面源码设计mianPage() :首先进入main函数,用正则表达式判断从键盘录入的数字,然后根据数字进入下一个页面。主页面中用了很多的正则表达式,关于正则表达式的一些简单的用法:Java 正则表达式的匹配、切割、替换 我之前也有写过一点,可以简单了解一下。商品维护界面 MaintenancePage()同理,进入界面后用正则表达式判断录入的数字,然后调用 GoodsPage 实现特定的功能,代码同.原创 2020-12-09 20:35:17 · 951 阅读 · 1 评论 -
Java项目 超市管理系统(有数据库)(一)系统设计
首页展示:1、商品维护:2、前台收银:3、商品管理:数据库及源码的设计在后面的文章发布。原创 2020-12-09 19:04:03 · 1765 阅读 · 2 评论 -
Java项目 超市管理系统(三)页面源码设计
一、根据前面的需求,先将商品类、销售类、销售员类三个类建好:1、goods类:package lyons.entity;/** * goods 商品实体类 * @author lyons(zhanglei) */public final class Goods{ //数据库Goods表主鍵 private int gid; private String gname; private double gprice; private int gnum; /** * 添加商品信.原创 2020-12-09 18:29:56 · 2378 阅读 · 2 评论 -
Java项目 超市管理系统(二)数据库的分析与建立
项目是在网上找的,后面我会附上项目的链接。需求:建立一个简易的超市管理系统数据库分析:超市数据库中肯定有一个商品表,有一个管理员表,还有一个销售表。这样一个基本的超市数据库雏形就有了。下面开始构建数据库。商品表:商品编号(主键);商品名字;商品价格;商品数量;销售表:销售单数(主键);销售商品编号;销售人员;销售时间;销售金额;销售员表:销售员编号(主键);销售员名字;销售员登陆密码;首先创建一个名为supermarket的数据库。然后再该库中建立三个表:goods、gsale原创 2020-12-09 09:44:39 · 4992 阅读 · 4 评论 -
Java 正则表达式的匹配、切割、替换
正则表达式:符合一定规则的表达式。作用:用于专门操作字符串代码举例:比如我们对qq号码进行校验要求:QQ号码长度为5~15位,0不能开头,只能是数字。不使用正则表达式进行校验:public class RegexDemo { public static void main(String[] args) { checkQQ01(); } //不使用正则表达式 public static void checkQQ0原创 2020-12-02 18:17:41 · 911 阅读 · 0 评论 -
Java 网络编程(三) 实现客户端并发与服务端建立连接
1、利用TCP从客户端将图片发送给服务端。客户端:import java.io.*;import java.net.*;public class TcpPicClient { public static void main(String[] args) throws Exception{ Socket s = new Socket("10.101.76.80",10006); FileInputStream fi原创 2020-12-01 19:42:20 · 452 阅读 · 0 评论 -
java 网络编程(二) tcp传输实现客户端和服务端进行信息交流
1、使用Tcp从一台电脑往另一台电脑上发送文本数据客户端:import java.io.*;import java.net.*;/** * * 客户端, * 通过查阅socket对象,发现在该对象建立时,就可以去连接指定主机。 * 因为tcp是面向连接的,所以在建立socket服务时,就要有服务端存在,并连接成功。 * 形成通路后,在该通道进行数据的传输 * * * 需求:给服务端发送给一个文本数据 * * 步骤: * 1、创建Socket服务,并指定要连接的主机和端口.原创 2020-11-29 15:55:55 · 1916 阅读 · 0 评论 -
Java网络编程(一)
网络通讯要素:IP地址- 网络中设备的标识- 不易记忆,可用主机名- 本地回环地址:127.0.0.1 端口号- 用于标识进程的逻辑地址,不同进程的标识- 有效端口:0 ~ 65535,其中0 ~ 1024为系统使用或保留端口传输协议- 通讯的规则- 常见协议:TCP,UDP TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次 握手完成连接,是可靠协议。必须建立连接,效率会稍低。原创 2020-11-28 18:49:45 · 187 阅读 · 0 评论 -
Java I/O中的字符缓冲区操作
缓冲区的出现提高了对数据的读写效率对应类:BufferedWriter、BuffereReader缓冲区要结合流才可以使用在流的基础上对流的功能进行了增强加入缓冲区的文件读写操作:import java.io.*;/** * * 缓冲区的出现是为了提高流的操作效率而出现的。 * 所以在创建缓冲区之前,必须要现有流对象。 */public class BufferedWriterDemo { public static void main(String[] args)原创 2020-11-22 15:22:36 · 78 阅读 · 0 评论 -
Java I/O流的简单使用
import java.io.*;/** * * 一个标准的I/O流异常基本处理 */public class FileWriterDemo2 { public static void main(String[] args) { FileWriter fw = null; try{ fw = new FileWriter("demo.txt"); fw.write("原创 2020-11-22 13:28:06 · 66 阅读 · 0 评论 -
Collection集合中List和set笔记
List:元素是有序的,元素可以重复。因为该集合体系有索引。ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删稍慢。线程不同步。LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。Vector:底层是数组数据结构,线程同步,被ArrayList替代。List特有方法:凡是可以操作角标的方法都是该体系特有的方法。增:add(index,element); addAll(index,Collection);删:remove(index)原创 2020-11-19 10:34:30 · 121 阅读 · 0 评论 -
JAVA的抽象类
当多个类中出现相同功能,但是功能主体不同,这是可以进行向上进行抽取。这时,只抽取功能定义,而不抽取功能主体。抽象:看不懂抽象类的特点:1、抽象方法一定在抽象类中。2、抽象方法和抽象类都必须被abstract类关键字修饰3、抽象类不可以用new创建对象,因为调用抽方法没意义。4、抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。抽象类和一般类没有太大的不同该如何描述事物,就如何描述事物,只不过,该事务出现了一原创 2020-10-30 17:06:27 · 125 阅读 · 0 评论 -
JAVA中的static
static首先明白什么样的可以定义为静态。即:能共享就可静态举个例子:在一个能坐60人的班级里开设JAVA辅导班,为了让同学们有好的学习环境,每来一位同学,就为他分配一台电脑。考虑到同学们课间需要喝水,又为每位同学安置一台饮水机。由于饮水机的安排,导致原来能做60人的班级现在只能做40人。校长一看这不行啊,这样我钱赚的少了,得想想办法。校长想:每个人用电脑编写不同的程序,肯定不能让减少电脑的数量,否则没法跟隔壁老王的补习班竞争。但每台饮水机的水都一样,教室放一台饮水机,让大家共用一台饮水机不就好了,于原创 2020-09-29 20:17:01 · 104 阅读 · 0 评论 -
JAVA的重载
前言:学校开了JAVA课程,简单的翻阅书本后发现前几章与大一开设的C语言内容高度相似,所以很容易理解,所以JAVA的学习笔记就用来记述自己在学习中遇到的一些问题。何为重载在Java中,同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载(method overloading)。参数列表又叫参数签名,包括参数的类型、参数的个数、参数的顺序,只要有一个不同就叫做参数列表不同。重载是面向对象的一个基本特性。特点:与返回值类型无关,只看参数列表(参数的个数、参数的类型、参数的顺序原创 2020-09-29 19:57:02 · 7155 阅读 · 0 评论 -
JAVA Spring笔记
String类适用于描述字符串事务,那么它就提供了多个方法对字符串进行操作。常见的操作有哪些?“abcde”1、获取1.1 字符串中的包含的字符数,也就是字符串的长度。int length():1.2 根据位置获取位置上某个字符char charAt(int index)1.3根据字符获取该字符在字符串中的位置int indexOf(int ch): 返回的是ch在字符串中第一次出现的位置;int indexOf(int ch,int fromIndex): 从fromIndex指定位原创 2020-11-06 16:49:43 · 141 阅读 · 0 评论 -
JAVA 多线程
进程:是一个正在执行中的程序。—— 每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。线程:就是进程中的一个独立的控制单元。——线程控制着进程的执行。一个进程至少有一个线程Java VM启动的时候会有一个进程java.exe该进程中至少有一个线程负责java程序的执行,而且这个线程运行的代码存在于main方法中。该线程称为主线程。再细说的话jvm启动并不止一个线程,还有负责垃圾回收机制的线程。<继承Thread>通过对api查找,Java已经提供了对线程原创 2020-11-05 17:49:51 · 100 阅读 · 0 评论 -
JAVA 异常处理
1、异常:就是程序运行时出现不正常情况异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述。并封装成对象。其实就是java对不正常情况进行描述后的对象体现。对于问题的划分(两种):一种是严重的问题,一种是非严重的问题;对于严重的,java通过Error类进行描述。对于Error一般不编写针对性的代码对其进行编写对于非严重的,java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理无论Error还是Exception都具有一些共原创 2020-10-31 17:19:59 · 1633 阅读 · 18 评论 -
JAVA 内部类和匿名类
该片仅为JAVA笔记,没有补充具体实现的代码,可以参阅Java内部类和匿名内部类的用法,该篇博客对JAVA内部类和匿名类的讲解更加详细。内部类的访问规则:1、内部类可以直接访问外部类中的成员,包括私有。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用。格式: 外部类名.this2、外部类要访问内部类,必须建立内部类对象。1、访问格式:当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。可以直接建立内部类对象。格式:外部类.内部类名 变量名 = 外部类原创 2020-10-31 12:26:50 · 548 阅读 · 1 评论 -
JAVA 接口 随笔
接口:初期理解可以认为是一个特殊的抽象类当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示class用于定义类interface用于定义接口接口定义时,格式特点:1、接口中常见定义:常量,抽象方法;常量:public static final方法:public abstract记住:接口中的成员都是public的接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化。否则子类是一个抽象类。接口可以被类多实现,也是对多继承不支持原创 2020-10-30 17:08:34 · 108 阅读 · 0 评论