Java多线程_0x7_
多线程篇七定时器什么是定时器听到定时器,首先想到的是“闹钟”.到一个设置好的时间之后就执行某个指定好的代码.(在实际开发中非常常用,如网络通信【邮件发送】)你在抢演唱会门票,已经到了支付页面,但是网突然崩了,页面显示让你等待,这下怎么办!!对于我们来说是不能无限的等待下去的,我们需要一个等待期限最好是尽快处理,此处的等待时间就通过定时器来实现了.
标准库中的定时器标准库中提供了一个Timer类.其核心方法为schedule.(注意不要自命名Timer类)schedule 包含两个参数. 第一个参数指定即将要执行的任务代码, 第二个参数指定多长时间之后 执行 (单位为毫秒).
上代码!
12345678910111213141516import java.util.Timer;import java.util.TimerTask;public class TimeKeeper { public static void main(String[] args) { Timer timer = new Timer(); //匿名内部类 继承 ...
Java多线程_0x6_
多线程篇六什么是单例模式?单例模式是最常见的 设计模式.顾名思义,单例模式指的就是单个实例的模式.(针对某些类只能使用一个对象的场景【如MySQL、JDBC、DataSource】)
设计模式设计模式是针对某些问题场景而产生的处理问题的方法.(就跟你想吃早饭,可以选择自己做或者出去买或者蹭别人或者别的解决方法一样)tips单例模式是线程安全的,能保证某个类在程序中只存在唯一一份实例而不会创建出多个实例.
单例模式又分为饿汗和懒汉两种.
饿汉模式创建的比较早,类加载时就创建出了.
123456789101112131415class Singleton { private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance() { return instance; }} public class TestSingleton { ...
Java多线程_0x5_
多线程篇五——wait和notify如笔者理解有误,欢迎交流指正⭐
线程的执行先后顺序难以预料【抢占式执行】,但是实际开发中我们会需要掌握当下线程的执行顺序.这就是wait和notify的作用.【都是Object方法即随便定义一个对象豆可以使用wait和notify】
wait()方法wait执行过程1.释放当前的锁2.让线程进入阻塞3.当线程被唤醒的时候重新获取到锁
上代码
12345678910public class Demo15 { public static void main(String[] args) throws InterruptedException { Object object = new Object(); synchronized (object) { System.out.println("waiting..."); object.wait(); System.out.println("end.& ...
Java多线程_0x4_
多线程篇四——volatile关键字如笔者理解有误,欢迎交流指正⭐
首先我们要明晰的一点是计算机运行程序或代码时经常要访问数据,这些依赖的数据往往存储在内存中.CPU使用变量的时候需要先从内存中读取出来放到CPU的寄存器中|由此我们可得读内存比读硬盘快,读寄存器比读内存快,但是CPU一旦涉及读/写内存速率很低.此时我们聪明得编译器就会帮忙了(虽然有时候会帮倒忙) 编译器可能会对代码做出优化,减少读内存的次数。提高整体的效率.
volatile能保证内存可见性上代码
12345678910111213141516171819import java.util.Scanner;public class Demo14 { public static int flg = 0; public static void main(String[] args) { Thread t1 = new Thread(() -> { while(flg == 0) { //啥也 ...
Java多线程_0x3_
多线程篇三如笔者理解有误,欢迎交流指正⭐线程安全划重点!!!
什么是线程安全想对线程安全做一个具体清晰的解释很困难,为什么这么说?当然是具体情况具体分析.(就像很多人都喜欢吃面条 有的人喜欢吃炸酱 有的人喜欢吃刀削【其他不具体拓展 因为饿了w】可以具体细分)
但是!我们可以这样认为 如果多线程环境下代码运行的结果是符合我们预期的 ,即使在单线程环境应得的结果,则说明这个线程是安全的.
产生线程安全的原因抢占式执行(系统内核)上我们熟悉的实例代码
1234567891011121314151617181920212223242526272829303132// 线程安全public class Demo13 { // 此处定义一个 int 类型的变量 private static int count = 0; public static void main(String[] args) throws InterruptedException { Object locker = new Object(); Object lo ...
Java多线程_0x2_
多线程篇二如笔者理解有误,欢迎交流指正⭐
Thread中重要属性启动线程start上篇提到 **start 则是真正调用了系统 API, 在系统内核中创建出线程, 让线程再调用 run.**(“并发“的实现)再用代码举例下
1234567891011121314151617181920212223242526272829// 创建一个类, 继承自 Thread .class MyThread extends Thread { @Override public void run() { // 这个方法就是线程的入口方法. while (true) { System.out.println("Welcome Thread!"); try { Thread.sleep(1000); } catch (InterruptedException e) { ...
Java多线程_0x1_
多线程篇一如笔者理解有误,欢迎交流指正⭐
线程一个线程就是一个“执行流”.每一个线程都是一个独立的执行逻辑.
1234567891011121314151617181920212223242526272829// 创建一个类, 继承自 Thread .class MyThread extends Thread { @Override public void run() { // 这个方法就是线程的入口方法. while (true) { System.out.println("Welcome Thread!"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } ...
Java基础知识杂记
Java杂记
静态方法无法继承 无实例化对象
异常数组索引异常空指针异常算数异常丢失资源找不到类编译时异常
oop 面向对象的语言对象的成员属性在未赋值前引用类型的默认值是NULL见到那类型为对应的0
通过this可以访问当前对象的成员属性/成员变量(静态的成员变量不支持)
默认int - 0float - 0.0fchar - ‘\u0000’boolean - flase
构造方法非特殊的一个方法:1.方法名必须和类名相同2.没有返回值3.创建对象时由编译器自动调用
当一个类中没有任何一个构造方法时 java会自动提供一个无参的构造方法
构造方法之间可以形成方法的重载1.方法名相同2.参数列表不同
构造方法只对对象中的成员进行初始化 不进行空间分配
完成一个对象的构造1.分配内存2.调用合适的构造方法
this();调用当前类当中其他构造方法只能在当前的构造方法内部进行使用只能放在第一行
this.data访问当前对象的属性this.func()调用当前对象的方法this本身代表当前对象的引用
就地初始化声明成员变量的同时进行初始化即在class内进行初始化
...
数据结构
数据结构碎片一元多项式简单数组表示 存储系数和指数,一一对应,运算即分类操作既可
稀疏多项式 记录系数不为零的项 每一项的系数和指数也构成线性表(先系数再指数)
稀疏多项式的运算
新开设新数组C(第三个数组相当于中间存储)
从头开始遍历比较a和b的每一项指数相同 对应系数相加,和不为0,C中新增加新项;和为0,去掉 即可
指数不相同,将指数较小的项复制到C中
一个多项式已遍历完毕时,将另一个剩余项依次复制到C中即可
顺序存储存在的问题
1.存储空间分配不灵活2.运算的空间复杂度高
链式存储解决稀疏多项式
线性表中的数据元素的类型可以是简单/复杂类型线性表的定义类型基本操作InitList(&L)操作结果:构造一个空链表
DestroyList(&L)初始条件:线性表L已经存在操作结果:销毁线性表L
ClearList(&L)初始条件:线性表L已经存在操作结果:将线性表L重置为空表
ListEmpty(L)初始条件:线性表已经存在操作结果:若L为空返回TRUE,否则返回FALSE
ListLength(L)初始条件:线性表已经存在操作结果:返回L中数 ...
Nep摸鱼记
NepCTF 2023为什么开赛两分钟选择不打了?答案很简单:签到题格式打错了…运营姐姐没回我…48h…炮灰pwn不会做!!!(其实可以做misc)
Msiccode题目提示flag在环境变量中 开始STFWhttps://blog.csdn.net/aspnet_lyc/article/details/20548767
12345678910#include <stdio.h> int main(int argc, char** argv, char** arge){ while(*arge) { printf("%s\n", *arge++); } return 0;}
与AI共舞的哈夫曼求助chat因为不会用copilot
ConnectedFive
五子棋 不会写脚本干下吧hh(求助chat也不是不行)
1234567891011121314151617181920212223242526272829303132from pwn import *import randomr = remote( ...