- 博客(72)
- 收藏
- 关注
原创 多线程之线程同步与三大不安全案例
线程同步 使用场景:出现并发,多个线程操作同一个资源。处理多线程问题时,多个线程访问同一个对象,并且某个线程还想修改这个对象,这个时候我们就需要线程同步。线程同步就是一种等待机制,多个需要同时访问此对象的线程进入对象的等待池,形成队列,等待前面线程使用完毕,下一个线程再使用。由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突的问题,为了保证数据在方法中被访问的正确性,在访问时加入锁机制(synchronized),当一个线程获得对象的排它锁,独占资源,其他线程
2021-06-30 22:29:58
238
2
原创 多线程之线程状态
## 线程状态五大状态1.创建状态:Thread thread = new Thread(); 线程对象一旦创建就进入了新生状态。2.就绪状态:当调用start()方法时,进入就绪状态,但不代表立即调度执行(等待cpu调度)。3.运行状态或同态:进入运行状态,线程才真正执行线程体的代码块。4. 阻塞状态:当调用sleep,wait或同步锁定时,线程进入阻塞状态,就是代码不往下执行,阻塞解除后进入就绪状态,等待cpu调度。5.死亡状态:线程中断或者结束,进入死亡状态,不能再次启动。停止线程
2021-06-24 10:09:48
3279
原创 多线程之Lambda表达式
Lambda表达式 Lambda表达式:避免匿名内部类定义过多,去掉一些没有意义的代码,去掉没有意义的代码,只留下核心的逻辑,其本质属于函数式编程的概念(jdk8新增!)。 new Thread (()->System.out.print(“Lamda表达式”)).start(); 使用lambda表达式必须是函数式接口。推导lambda表达式public class TestLambda01 { //静态内部类 static class Like2 i
2021-06-24 09:39:00
290
原创 多线程之静态代理模式
静态代理模式真实对象和代理对象都要去去实现同一个接口代理对象需代理真实角色。好处:代理对象可以做很多真实对象做不了的事情真实对象专注做自己的事情。示例代码:public class StaticProxy { public static void main(String[] args) { //多线程Thread底层使用了代理模式。 //You you = new You();//你要结婚 new Thread( ()->
2021-06-24 09:35:14
177
原创 多线程小练习----下载图片,买火车票,龟兔赛跑
练习thread实现多线程下载图片public class TestThread02 extends Thread{ private String url; private String name; public TestThread02(String url,String name){ this.url = url;//图片地址 this.name = name;//文件名 } //下载图片线程执行体 @Override
2021-06-24 09:24:22
74
原创 多线程概念以及线程创建的三种方式
多线程多任务,多线程Process进程1.在操作系统中运行的程序就是进程,一个进程可以有多个线程,如视频中听声音,看图像,看弹幕等。2.程序是指令和数据的有效集合,其本身没有任何运行的含义,是一个静态的概念。 而进程则是执行程序的一次执行过程,是一个动态的概念,是系统资源分配的单位。3.通常在一个进程中可以包含若干个线程,且至少有一个线程,不然没有存在的意义,线程是CPU调度和执行的单位。注意:很多多线程是模拟出来的,真正的多线程是值多个cpu,即多核,如服务器;如果是模拟出来的多线程,
2021-06-24 09:19:18
121
1
原创 网络编程内容详解
网络编程1、概念:地球村:表示现代科技的迅速发展,缩小了地球上的空间距离。TCP:需要对方确认;建立连接UDP:发送就可以,不用管对方1.计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通通信协议的管理和协助下,实现资源共享和信息传递的计算机系统。2.网络编程的目的:传播交流信息,数据交换。3.想达到这个效果需要什么如何准确的定位网络上的一台主机?192.168.1.1:端口,定位到这
2021-05-05 04:22:32
388
原创 GUI编程:小游戏(贪吃蛇之胖子养成记)
贪吃蛇该程序由三个类组成StartGame为游戏的启动类Data为游戏的图片资源类GamePanel为游戏的具体逻辑代码类Data数据类import javax.swing.*;import java.net.URL;//Data数据类public class Data { //相对路径 tx.jpg 绝对路径 / :相当于当前的项目 //头部图片 public static URL headerUrl = Data.class.getRes
2021-05-04 19:12:03
303
原创 GUI编程:swing之文本框,密码框,文本域
文本域//文本域JTextArea jTextArea = new JTextArea(20, 50);jTextArea.setText("wuyang");文本框示例代码://文本框public class TestTextDemo01 extends JFrame { public TestTextDemo01() { Container container = getContentPane(); JTextField jTextField =
2021-03-20 14:09:41
290
原创 GUI编程:swing之列表
列表 下拉框 列表框应用场景:先择地区,或者一些单个选项。列表,展示信息,一般是动态扩容。下拉框示例代码://下拉框public class TestComboboxDemo01 extends JFrame{ public TestComboboxDemo01(){ Container container = this.getContentPane(); JComboBox status = new JComboBox();//下拉框方法
2021-03-20 14:06:56
182
原创 GUI编程:swing之图片按钮,单选框,复选框
图片按钮示例代码:public class JButtonDemo01 extends JFrame { public JButtonDemo01() { Container container = this.getContentPane(); //将图片变成图标 URL resource = JButtonDemo01.class.getResource("tx.jpg"); Icon icon = new ImageIcon(r
2021-03-20 14:04:10
206
原创 GUI编程:swing之JPanel(面板)与JScrollPane(滚动条)
JPanel示例代码://面板 JPanel public class JPanelDemo extends JFrame { public static void main(String[] args) { new JPanelDemo(); } public JPanelDemo() { Container container = this.getContentPane(); //GridLayout 表
2021-03-20 13:56:07
782
原创 GUI编程:swing之标签( Icon与ImageIcon)
Icon标签示例代码://图片标签public class TestIcon { public static void main(String[] args) { new IconDemo(100,100).init(); }}//图标,需要实现类,JFrame继承class IconDemo extends JFrame implements Icon { //属性 private int width; private int high;
2021-03-20 13:53:12
339
原创 GUI编程:swing之JDialog(弹窗)
弹窗示例代码://JDialog,用来被弹出,默认就有关闭事件public class DialogDemo { public static void main(String[] args) { new Dialog1(); }}//主窗口class Dialog1 extends JFrame{ public Dialog1(){ this.setVisible(true); this.setBounds(100,100,
2021-03-20 13:49:22
614
原创 GUI编程:swing之JFrame(窗口)
JFrame示例代码://JFrame窗口public class JFrameDemo01 { public static void main(String[] args) { new MyJFrame().init(); }}class MyJFrame extends JFrame{ //init();初始化 public void init(){ //顶级窗口 JFrame jFrame = new JFram
2021-03-20 13:47:35
228
原创 GUI编程:AWT之窗口监听事件(三种方式)
窗口监听事件通过 addWindowListener获取示例代码://窗口监听事件public class TestWindow01 { public static void main(String[] args) { new WindowFrame01(); }}class WindowFrame01 extends Frame { public WindowFrame01(){ setBounds(100,100,300,300);
2021-03-17 03:01:45
295
原创 GUI编程:AWT之鼠标监听事件,键盘监听事件
鼠标监听事件示例代码://鼠标监听事件//实现鼠标画画public class TestMouseListener { public static void main(String[] args) { new MyFrame("画图"); }}//鼠标类class MyFrame extends Frame { //画画需要画笔,需要监听鼠标当前的位置 // 需要集合来存储这个点 ArrayList points; public
2021-03-17 02:54:49
230
原创 GUI编程:AWT之Paint(画笔)
Paint示例代码://画笔 Paintpublic class TestPaint { public static void main(String[] args) { new MyPaint().loadFrame(); }}class MyPaint extends Frame { public void loadFrame(){ setBounds(200,200,600,500); setVisible(true
2021-03-16 22:32:01
324
原创 GUI编程之简易计算器(非常简单):三种思想
简易计算器有三种实现:面向过程面向对象内部类面向过程示例代码://简易计算器 面向过程public class TestCalc01 { public static void main(String[] args) { //运行 new Calculator01(); }}//计算器类class Calculator01 extends Frame { public Calculator01(){
2021-03-16 22:26:44
763
原创 GUI编程:AWT之TextField(输入框)
输入框 TextField示例代码: //输入框 TextField监听public class TestText01 { public static void main(String[] args) { //启动! new MyFrame(); }}class MyFrame extends Frame { public MyFrame(){ TextField textField = new TextField();
2021-03-16 22:21:12
546
原创 GUI编程:AWT之事件监听
事件监听//事件监听:当某个事情发生的时候,干什么。示例代码:public class TestActionEvent { public static void main(String[] args) { //按下按钮,触发一些事件 Frame frame = new Frame(); Button button = new Button(); //因为,addActionListener()需要ActionListener
2021-03-16 22:18:58
92
原创 GUI编程之布局小练习
练习:完成代码://练习作业public class EXDemo { public static void main(String[] args) { //总窗 总Frame Frame frame = new Frame(); frame.setLayout(new GridLayout(2,1));//设置为2行1列 frame.setBounds(400,300,300,400);//设置坐标 fram
2021-03-16 22:13:06
177
原创 GUI:AWT之布局管理器
布局管理器1. 流式布局2. 东西南北中3. 表格布局流式布局示例代码:import java.awt.*;//1.流式布局 从左到右public class TestFlowLayout { public static void main(String[] args) { Frame frame = new Frame(); //组件--按钮 Button button1 = new Button("button1");
2021-03-16 22:08:58
97
原创 GUI编程:AWT之Panel
Panel 面板可以看成是一个空间,但是不能单独存在解决了无法关闭问题,即调用addWindowsListener方法的子方法,并重写其中的WindowsClosing方法,来调用程序关闭的.exit(0)方法示例代码:public class TestPanel01 { public static void main(String[] args) { Frame frame = new Frame(); //布局的概念 Panel p
2021-03-16 22:03:52
235
原创 GUI编程:AWT之Frame
GUI编程已经快淘汰了不是java强项,但可以做。组件:窗口弹窗面板文本框列表框按钮图片监听事件(web会有)鼠标键盘事件1、简介Gui的核心技术: Swing AWT1.界面不美观2.需要jre环境为什么要学习?可以写出自己心中想要的一些小工具工作时候,也可能维护到swing界面,但概率极小。了解MVC架构,了解监听!2、AWT(Swing前身,讲底层的实现)2.1 AWT介绍包含了很多类和接口!GUI:图像用户界面。 Eeclipse
2021-03-16 21:58:38
302
原创 缓冲流+对象流
文件流低级字节型 FileInputStream FileOutputStream字符型 FileReader FileWriter 字符集65279*缓冲字节型 BufferedInputStream BufferedOutputStream字符型 BufferedReader BufferedWriter数组流byte数组 ByteArrayInputStream ByteArrayOutputStreamchar数组 CharArrayReader Ch
2021-03-10 00:34:54
267
1
原创 练习一下:文件的复制
1.设计一个方法 文件的复制C://test//aaa.txt-------> D://某一个位置找到C盘中的源文件 内容读一遍去D盘中创建一个新文件 将内容写进去2.扩展设计一个方法 文件的加密/解密读取内容中间做一个小算法(加密) 可逆的写进去*3.扩展设计一个方法 文件夹的复制配合着递归配合着流示例代码:public class OperateFile { //设计一个方法 文件的复制// public void cop
2021-03-09 03:36:27
567
原创 字符型文件流
字符型文件流FileReader FileWriter只能操作纯文本文件(文件右键打开方式 记事本打开 能看懂) .txtFileReader 1.java.io包 2.继承 InputStreamReader Reader 3.构造方法 4.常用 read() read(char[])FileWriter 1.java.io包 2.继承 OutputStreamWriter Writer 3.构造方法 带file参数 带file,bo
2021-03-09 03:31:58
246
原创 字节型文件流
学习文件流—>顾名思义读取文件中的信息in将信息写入文件中out文件流按照读取或写入的单位(字节数)大小来区分字节型文件流(1字节)FileInputStream/FileOutputStream字符型文件流(2字节–1字符)FileReader/FileWriter字节型文件输入流FileInputStream:读取一个文件的内容1.包 java.io2.了解一下继承关系 InputStream类 字节型输入流的父类3.创建对象调用一个带File类型的
2021-03-09 03:25:27
328
原创 IO之文件夹遍历删除(递归)
1.文件夹的遍历----需要一个递归2.文件夹的删除----需要一个递归3.文件夹的路径(找父目录)现在还做不到 文件流来完成---->读取文件内容 将内容写入文件4.文件的复制5.文件的加密文件夹的复制示例代码:public class NewTestFile { //设计一个方法 用来展示(遍历)文件夹 // 参数-->file(代表文件或文件夹) /*public void showFile(File file){//D://tes.
2021-03-09 03:19:30
274
原创 IO之File类及常用方法
I/O相关输入/输出 流(数据流动)数据流动的方向 读数据(输入Input) 写数据(输出output)文件流 字符流 数据流(现在用处不大) 对象流 网络流…1.什么叫文件一种电脑的存储形式文件有不同的格式 .txt .doc .ppt .mp4 .jpg .rar …文件夹?----目录路径File----->与电脑上的文件或文件夹产生一一对应的映射关系File是一个类1.java.io包中2.文件或目录路径名的抽象表示形
2021-03-09 03:14:05
345
原创 集合的小练习:登录小流程
登录小流程能体会每一个不同集合的特点示例代码:public class LoginService { //设计一个方法 用来登录认证 一维数组// private String[] userBox = new String[]{"吴杨","吴上集团","Java"};// private int[] passwordBox = new int[]{123,666,888};// public String loingForArray(String name,Str
2021-03-09 03:06:55
163
原创 常用类之集合:HashMap+TreeMap
Map映射 通过某一个key可以直接定位到一个value值存储的方式以 键值对 存储 key-valuekey无序无重复 value无序可重复key无序还是一样,指的是存入顺序与取得顺序不一致key无重复当然指的是 元素不能一致1.map基本使用 HashMap TreeMap PropertiesHashMap1.包 java.util2.如何创建对象3.基本方法增删改查 增put(key,value) 存放一组映射关系 key-value 1
2021-03-09 03:04:34
167
原创 常用类之集合:HashSet+TreeSet
Collection以value形式存在Set 无序无重复1.具体的实现类HashSetTreeSet2.基本的使用3.无序 无重复无序:我们使用集合存放元素的顺序 集合内取出来的顺序不一致集合本身是有自己的算法排布顺序 hash算法HashSet---->(HashMap (数组+链表) 散列表 临接连表)1.java.util2.如何创建对象 无参数 有参数3.集合容器的基本使用增删改查 boolean = add(value) a
2021-03-09 02:58:55
167
原创 常用类之集合:Vector+Stack+Queue+LinkedList
ListVector类1.java.util包2.是ArrayList集合的早期版本 (StringBuffer早期 StringBuilder后来)Vector底层也是利用(动态)数组的形式存储Vector是线程同步的(synchronized) 安全性高 效率低3.扩容方式与ArrayList不同默认是扩容2倍 可以通过构造方法创建对象时修改这一机制4.构造方法5.常用方法Stack类 栈1.java.util包2.构造方法只有一个无参数3.除了继承自Vacton类
2021-03-09 02:04:40
210
原创 常用类之集合:ArrayList类
ArrayList类数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。但是ArrayList类出现解决了这一问题!数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。对于ArrayList来说,有一个尖括号代表泛型。泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。注意:泛型只能是引用类型,不能是基本类型。注意事项:对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内容是空,得到的是空的中括号:[]public class
2021-03-09 01:51:02
381
原创 常用类(工具类)之字符串相关
字符串相关String类所属的包java.lang 没有继承类 默认继承Object实现了三个接口 Serializable CharSequence Comparable<>String是一个非常特殊的引用数据类型,创建对象方式如下String str = “abc”; String str = new String(); String str = newString(“abc”); String str = new String(byte[] value)
2021-03-07 02:18:33
278
原创 常用类(工具类)之Scanner,包装类,数学类,日期类
Scanner包装类包装类(封装类) 1.5版本之后 自动拆装包byteByteshortShortintInteger 【特殊】longLongfloatFloatdoubleDoublecharCharacter 【特殊】booleanBoolean八个包装类都在同一个包下 java.lang包 不需要import导包直接使用八个包装类中有六个是与数字相关 都默认继承父类Number八个包装
2021-03-07 01:46:37
200
原创 捕获和抛出异常及自定义异常
捕获和抛出异常异常处理机制:异常处理的5个关键字:try、catch、finally、throw、throws捕获异常说到异常,我们当然会想到try catchfinally。当然如果用这个的话,被try块包围的代码说明这段代码可能会发生异常,一旦发生异常,异常便会被catch捕获到,然后需要在catch块中进行异常处理。try{//try监控区域 }catch(){//catch捕获异常 }finally{//处理善后工作,不是必须的,但假如IO流,资源
2021-03-05 05:29:19
1210
1
原创 异常(Exception)与错误(Error)
Error和Exception异常处理Error和Exception1.异常(Exception):指程序运行中出现的不期而至的各种状况,如文件找不到、网络连接失败、非法参数等。影响了正常的程序执行流程,但不至于程序崩溃检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的运行时异常:是可能被程序员避免的异常错误(Error):错误不是异常,而是脱离程序员控制的问题。例如当栈溢出时,一个错误就发生了3.异常体系结构:Java把异常当作对象来处理,并
2021-03-05 05:21:02
4515
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人