面试腾讯,字节跳动首先要掌握的Java多线程,一次帮你全掌握
其实程序是一段静态的代码,它是应用程序执行的脚本。进程就是程序动态的执行过程,它具有动态性,并发性,独立性。线程是进程调度和执行的单位。
进程:每个进程都有独立的代码和数据空间(进程上下文),一个进程包含一个或者多个线程,同时线程是资源分配的最小单位。
线程:同一类线程共享代码和数据空间,并且每个线程有独立运行栈和程序计数器,同时线程是调度的最小单位。
那什么是多进程呢? ,常见的是打开我们自己电脑任务管理器里面就还有多个进程,其实指的是我们的操作系统能同时运行多个任务(微信,QQ等)。
多线程其实就是一个进程有多条路径在运行。
一、多线程实现的方式
在Java中实现多线程有三种方式,第一种方式是继承Thread类,第二种方式是实现Runnable接口, 第三种是实现Callable,结合Future使用(了解),并发编程中使用,这里不详细说:
第一种实现多线程的方式,继承Thread类,代码实现如下:
public class RabbitDemo extends Thread {@Overridepublic void run() {for (int i = 0; i <10 ; i++) {System.out.println("兔子跑了:"+i+"步");} }}public class TortoiseDemo extends Thread {@Overridepublic void run() {for (int i = 0; i <10 ; i++) {System.out.println("乌龟跑了:"+i+"步");} }}public class ClientThreadTest {public static void main(String[] args) {RabbitDemo rabbitDemo = new RabbitDemo();TortoiseDemo tortoiseDemo = new TortoiseDemo();rabbitDemo.start(); tortoiseDemo.start(); for (int i = 0; i < 10; i++) {System.out.println("main==>" + i);} }}复制代码
第二个实例实现多个线程同时共享一个成员变量线程的运行状态。
public class Qp12306 implements Runnable {private int num=50;@Overridepublic void run() {while (true){if (num<=0){break;} System.out.println(Thread.currentThread().getName()+"抢到票"+num--);} }}public class ClientQpTest {public static void main(String[] args) {Qp12306 qp12306 = new Qp12306();Thread thread = new Thread(qp12306, "张三");Thread thread1 = new Thread(qp12306, "李四");Thread thread2 = new Thread(qp12306, "王五");thread.start(); thread1.start(); thread2.start(); }}复制代码
第二种方式:实现 Runnable接口,重写run方法,这种方式我们实现多线程常用的方式(避免Java单继承的限制)并且该方式采用了静态代理设计模式(参考: 静态代理),代码实例如下 :
public class RunnableDemo implements Runnable {@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("Runnable:" + i);} }}public class ClientRunableTest {public static void main(String[] args) {RunnableDemo runnableDemo = new RunnableDemo();Thread thread = new Thread(runnableDemo);thread.start(); }}复制代码
第三方式:实现Callable接口,结合Future实现多线程,代码实例如下:
/*** 使用Callable创建线程 */public class Race implements Callable<Integer> { private String name; private long time; //延时时间private boolean flag = true;private int step = 0; //步@Override public Integer call() throws Exception { while (flag) {Thread.sleep(time);step++; } return step;} public Race(String name, long time) {this.name = name; this.time = time;} public void setFlag(boolean flag) { this.flag = flag; }}public class CallableTest { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService executorService = Executors.newFixedThreadPool(2);Race race = new Race("张三", 200);Race race1 = new Race("李四", 500);Future<Integer> result = executorService.submit(race); Future<Integer> result1 = executorService.submit(race1); Thread.sleep(3000);race.setFlag(false);race1.setFlag(false);int num1 = result.get(); int num2 = result1.get(); System.out.println("张三-->" + num1 + "步");System.out.println("李四-->" + num2 + "步");//停止服务 executorService.shutdownNow(); }}复制代码
如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。
总结:
实现Runnable接口比继承Thread类所具有的优势:
1、适合多个相同的程序代码的线程去处理同一个资源
2、可以避免java中的单继承的限制
3、增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
4、线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类
main方法其实也是一个线程。在java中所以的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。
在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个jVM就是在操作系统中启动了一个进程。
二、线程的状态和方法
线程从创建,运行到结束总是处于五种状态之一:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。 线程共包括以下5种状态:
1.新建状态 :线程对象被创建后就进入了新建状态,Thread thread = new Thread();
2.就绪状态(Runnable):也被称之为“可执行状态”,当线程被new出来后,其他的线程调用了该对象的start()方法,即thread.start(),此时线程位于“可运行线程池”中,只等待获取CPU的使用权,随时可以被CPU调用。进入就绪状态的进程除CPU之外,其他运行所需的资源都已经全部获得。
3.运行状态(Running):线程获取CPU权限开始执行。注意:线程只能从就绪状态进入到运行状态。
4.阻塞状态(Bloacked):阻塞状态是线程因为某种原因放弃CPU的使用权,暂时停止运行,知道线程进入就绪状态后才能有机会转到运行状态。
阻塞的情况分三种:
(1)、等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池中”。进入这个状态后是不能自动唤醒的,必须依靠其他线程调用notify()或者notifyAll()方法才能被唤醒。 (2)、同步阻塞:运行的线程在获取对象的(synchronized)同步锁时,若该同步锁被其他线程占用,则JVM会把该线程放入“锁池”中。 (3)、其他阻塞:通过调用线程的sleep()或者join()或发出了I/O请求时,线程会进入到阻塞状态。当 sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新回到就绪状态 5. 死亡(Dead):线程执行完了或因异常退出了run()方法,则该线程结束生命周期。
阻塞线程方法的说明:
wait(), notify(),notifyAll()这三个方法是结合使用的,都属于Object中的方法,wait的作用是当当前线程释放它所持有的锁进入等待状态(释放对象锁),而notify和notifyAll则是唤醒当前对象上的等待线程。 wait() —— 让当前线程处于“等待(阻塞)状态”,“直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法”,当前线程被唤醒(进入“就绪状态”)。
sleep() 和 yield()方法是属于Thread类中的sleep()的作用是让当前线程休眠(正在执行的线程主动让出cpu,然后cpu就可以去执行其他任务),即当前线程会从“运行状态”进入到阻塞状态”,但仍然保持对象锁,仍然占有该锁。当延时时间过后该线程重新阻塞状态变成就绪状态,从而等待cpu的调度执行。 sleep()睡眠时,保持对象锁,仍然占有该锁。 yield()的作用是让步,它能够让当前线程从运行状态进入到就绪状态”,从而让其他等待线程获取执行权,但是不能保证在当前线程调用yield()之后,其他线程就一定能获得执行权,也有可能是当前线程又回到“运行状态”继续运行。
wait () , sleep()的区别:
1、每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。 sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 2、 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 3、 sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 4、 sleep()睡眠时,保持对象锁,仍然占有该锁,而wait()释放对象锁;
三、线程的基本信息和优先级
涉及到线程的方法:Thread.currentThread() 当前线程,setName():设置名称,getName():获取名称,isAlive():判断状态 优先级:Java线程有优先级,优先级高的线程能获取更多的运行机会。 Java线程的优先级用整数表示,取值范围是1~10,Thread类有以下三个静态常量: static int MAX_PRIORITY 线程可以具有的最高优先级,取值为10。 static int MIN_PRIORITY 线程可以具有的最低优先级,取值为1。 static int NORM_PRIORITY 分配给线程的默认优先级,取值为5。
下面代码实现: 基本信息
public static void main(String[] args) throws InterruptedException {Rundemo rundemo = new Rundemo();Thread thread = new Thread(rundemo);thread.setName("线程"); //设置线程的名称System.out.println(thread.getName()); //获取当前线性的名称System.out.println(Thread.currentThread().getName()); //main线程thread.start();System.out.println("线程启动后的状态:" + thread.isAlive());Thread.sleep(10);rundemo.stop();Thread.sleep(1000); //停止后休眠一下,再看线程的状态System.out.println("线程停止后的状态:" + thread.isAlive());test();}
复制代码
优先级
public static void test() throws InterruptedException {Rundemo rundemo1 = new Rundemo();Thread thread1 = new Thread(rundemo1);thread1.setName("线程thread1");Rundemo rundemo2 = new Rundemo();Thread thread2 = new Thread(rundemo2);thread2.setName("线程thread2");thread1.setPriority(Thread.MAX_PRIORITY); thread2.setPriority(Thread.MIN_PRIORITY); thread1.start(); thread2.start(); Thread.sleep(1000);rundemo1.stop(); rundemo2.stop(); }复制代码
四、线程的同步和死锁问题
同步方法:synchronized 同步代码块:synchronized(引用类型|this|类.class){ } 线程同步是为了多个线程同时访问一份资源确保数据的正确,不会造成数据的桩读,死锁是线程间相互等待锁锁造成的.
下面代码实现:多个线程同时访问一份资源使用synchronized
public class Qp12306 implements Runnable {private int num = 10; private boolean flag = true;@Overridepublic synchronized void run() {while (true) {test(); } } public synchronized void test() {if (num <= 0) {flag = false;return;} System.out.println(Thread.currentThread().getName() + "抢到票" + num--);}}public class ClientQpTest {public static void main(String[] args) {Qp12306 qp12306 = new Qp12306();Thread thread = new Thread(qp12306, "张三");Thread thread1 = new Thread(qp12306, "李四");Thread thread2 = new Thread(qp12306, "王五");thread.start(); thread1.start(); thread2.start(); }}复制代码
运行结果
synchronized 静态代码块
public class Client {public static void main(String[] args) throws InterruptedException {JvmThread thread1 = new JvmThread(100);JvmThread thread2 = new JvmThread(500);thread1.start(); thread2.start(); }}class JvmThread extends Thread{private long time;public JvmThread() {} public JvmThread(long time) {this.time =time;} @Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"-->创建:"+Jvm.getInstance(time));}}/*** 单例设计模式* 确保一个类只有一个对象* 懒汉式 * 1、构造器私有化,避免外部直接创建对象* 2、声明一个私有的静态变量* 3、创建一个对外的公共的静态方法 访问该变量,如果变量没有对象,创建该对象*/
class Jvm {//声明一个私有的静态变量private static Jvm instance =null;//构造器私有化,避免外部直接创建对象private Jvm(){}//创建一个对外的公共的静态方法 访问该变量,如果变量没有对象,创建该对象public static Jvm getInstance(long time){if(null==instance){synchronized(Jvm.class){if(null==instance ){try {Thread.sleep(time); } catch (InterruptedException e) {e.printStackTrace();}instance =new Jvm();}}}return instance;}public static Jvm getInstance3(long time){synchronized(Jvm.class){if(null==instance ){try {Thread.sleep(time); } catch (InterruptedException e) {e.printStackTrace();}instance =new Jvm();}return instance;}}}
复制代码
五、生产者消费者模式
生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 存储空间已满,而生产者占用着它,消费者等着生产者让出空间从而去除产品,生产者等着消费者消费产品,从而向空间中添加产品。互相等待,从而发生死锁.
具体实现代码如下:
/*** 生产者*/
public class ProduceRu implements Runnable {private Movie movie;public ProduceRu(Movie movie) {this.movie = movie;} @Overridepublic void run() {for (int i = 0; i < 10; i++) {if (0 == i % 2) {movie.proTest("向往的生活");} else {movie.proTest("好声音");} } }}/***消费者*/
public class ConsumeRu implements Runnable {private Movie movie;public ConsumeRu(Movie movie) {this.movie = movie;} @Overridepublic void run() {for(int i=0;i<10;i++){movie.conTest(); } }}/*** 生产者消费者模式共同访问同一份资源* wait() 等等,释放锁,sleep()不释放锁* notify()/notifyAll():唤醒*/
public class Movie {private String pic;//flag--->true 生产者生产,消费者等待,生产完后通知消费//flag--->false 消费者消费,生产者等待,消费完通知生产private boolean flag = true;/*** 生产者生产,消费者等待,生产完后通知消费* @param pic*/public synchronized void proTest(String pic) {if (!flag) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("生产了:" + pic);this.pic = pic;this.notify();this.flag = false;}/*** 消费者消费,生产者等待,消费完通知生产*/public synchronized void conTest() {if (flag) {try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("消费者:" + pic);this.notifyAll();this.flag = true;}
}
public class ClientTest {public static void main(String[] args) {Movie movie=new Movie();new Thread(new ProduceRu(movie)).start();new Thread(new ConsumeRu(movie)).start();}
}
复制代码
六、任务调度
1.Thread实现方法 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:
public class ThreadTest {public static void main(String[] args) {Runnable runnable = new Runnable() {@Overridepublic void run() {try {System.out.println("任务开始了");while (true) {Thread.sleep(1000);System.out.println("hello");} } catch (InterruptedException e) {e.printStackTrace(); } } }; Thread thread = new Thread(runnable);thread.start(); }}复制代码
2.TimeTask实现方法 Thread方法优点就是简单,但缺少了灵活性,TimeTask实现方法最主要的两个优点是:可以控制启动和取消任务的时间、第一次执行任务时可以指定想要delay的时间。 实现的过程中Timer用于调度任务,TimeTask用户具体的实现,是线程安全的,代码如下:
public class TimeTest {public static void main(String[] args) {Timer timer=new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.println("任务运行开始.......");} },new Date(),1000);}}复制代码
3.ScheduledExecutorService实现方法 ScheduledExecutorService是从Java java.util.concurrent里 相比于上两个方法,它有以下好处: 相比于Timer的单线程,它是通过线程池的方式来执行任务的可以很灵活的去设定第一次执行任务 delay时间 具体代码如下:
方法说明: ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) 创建并执行在给定的初始延迟之后首先启用的定期动作,随后在一个执行的终止和下一个执行的开始之间给定的延迟。 如果任务的执行遇到异常,则后续的执行被抑制。 否则,任务将仅通过取消或终止执行人终止。 参数 command - 要执行的任务 initialDelay - 延迟第一次执行的时间 (就是第一次指定定时延时多久),代码里我延时10秒 delay - 一个执行终止与下一个执行的开始之间的延迟 unit - initialDelay和delay参数的时间单位
public class ScheduledExecutorServiceTest {public static void main(String[] args) {ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);scheduledExecutorService.scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {System.out.println("任务!!!!");} },10000,1000, TimeUnit.MILLISECONDS);}}复制代码
读者福利
对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。
我这边为大家准备了近几年来各大厂的Java面试资料,均可以免费提供,希望大家金九银十面试顺利,拿下自己心仪的offer!
有需要的加我小助手VX“免费获取”
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- windows破解连接过的wife密码
windows破解连接过的wife密码 step 1:打开控制台 step 2:输入命令:netsh wlan show profiles step 3:找到需要查找的网络名称,输入命令:netsh wlan show profiles 【网络名称】 keyclear...
2024/4/27 22:58:26 - 【大数据】Hadoop安装(VMware + 进入BIOS开启Intel VT-x + Ubuntu16.04 + Hadoop2.7.7 + jdk1.8.0)
环境:VMwareUbuntu16.04Hadoop2.7.7jdk1.8.0 1、超稳进入BIOS,开启虚拟技术,Intel VT-x 左下角右键,设置,更新和安全,恢复,立即重新启动。疑难解答,高级选项,UEFI固件设置…...
2024/4/13 20:13:42 - 「Java并发编程」常见基础问题整理
进程和线程? 进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,进程是动态的。系统运行一个程序就是一个进程从创建,运行到消亡的过程。 Java中,启动main函数的时候其实就是启动了一个JVM进程&a…...
2024/4/28 9:08:24 - 【Java并发编程】线程池相关知识点整理
为什么要用线程池? 池化技术:减少每次获取资源的消耗,提高对资源的利用率。 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 使用线程池的…...
2024/4/28 2:19:32 - Git 将本地项目上传到Github
一、开始二、git add 命令1、详解2、总结三、相关地址一、开始 如图: 步骤: 1、git init (建立本地仓库)2、git add * (将代码添加到本地仓库,《*是添加全部代码,代码全部更新》)3、git commit -m &quo…...
2024/4/23 5:42:24 - 自动化测试工程
我想一个基本的自动化测试工程应该需要包含这些吧,当然不同的项目和不同的人最终出来的东西肯定有差别,我觉得应该大同小异吧 1.测试用例的组织逻辑,其中包括用例组织的存储方式,用例的测试开关,用例的描述,…...
2024/4/21 6:13:11 - layui扩展组件(组合输入框inputTags)
inputTags.js内容(从layui官方网站下载后修改的,主要是将限定id改为class(id在html中是唯一的,当需要在同个html页面多处使用时就不能满足需求)) layui.define([jquery,layer],function(exports){"use strict";var $ layui.jquery,layer layui.layer,/…...
2024/4/27 17:44:29 - PageHelper的基础使用
0.从源码层面上理解PageHelper 简单的点击了一下,觉得挺复杂的,决定把设计模式透析之后,再来分析。PageHelper结合MyBatis进行使用,通过拦截器保证pageNum和pageSize以及total,然后一个 wrapper,还有一个代…...
2024/4/12 6:11:34 - 树莓派编译安装Openssl
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar zxf openssl-1.1.1d.tar.gz cd openssl-1.1.1d ./config --prefix/usr/local/openssl --openssldir/usr/local/openssl make -j4 && make install...
2024/4/24 10:22:58 - 【Window】解决window的bat脚本执行出现中文乱码的问题
中文那么好,你为什么不好好善待她... window下通过新建txt文件然后改成.bat的文件,输入内容后,执行出现中文乱码? 原因: 批处理文件,是以ANSI编码方式。若以别的方式(如UTF-8)编辑…...
2024/4/20 18:02:32 - log4j日志传送至flume至kafka显示输出
妈耶,一个简简单单的功能,废了我大半天功夫,反思了一下原因,1是自己之前学的东西记不清了,各种配置搞的很晕,看了半天,2是网上的教程实在不堪入目,跟着走让人云里雾里,费…...
2024/4/24 21:14:20 - Mac安装nacos
一、前言 初次使用Mac,还不太习惯,但是鉴于朋友们都说mac用久了,你就会鄙视windows了,于是,步入了新系统的开发队伍中,本次安装nacos,特此记录一下; 二、下载 1、下载安装包 nac…...
2024/4/27 0:55:23 - 程序员艰苦奋战三个月后终于成功斩获字节跳动offer[Java研发岗]
前言: 经历不断学习加上总结,终于开始出效果。努力没有白费。 相比来说等offer真煎熬,但是终于还是到了。发完就去搬砖啦,明天还有其他面试呢~ 面的是Java研发实习生... 一、字节跳动技术一面(算法) Java 的 16 进…...
2024/4/20 9:53:02 - 日志查找常用命令-超实用
0 前言 (1)命令的尾部添加 --color 或者 --colorauto 可以使关键字带颜色,很清晰。 1 Linux日志查找常用命令 1.1 cat、zcat cat -n app.log | grep "error":查询日志中含有某个关键字error的信息,显示行…...
2024/4/11 4:38:21 - 一个冒号带来的错误 ——No suitable driver found for jdbc:mysql:/…错误
No suitable driver found for jdbc:mysql:/…错误 用的IDEA2018.2版本连接mysql数据库,sql版本是8.0.20,相对应的jar包是 用JDBC注册并连接数据库,出现错误… 我把网上的方法都试了一遍 这儿在test连接数据库的时候可能出现can’t connect…...
2024/4/27 9:31:26 - 阿里云OSS 简单文件上传,配置
云存储 1、阿里云oss https://packagist.org/packages/aliyuncs/oss-sdk-php 安装sdk composer require aliyuncs/oss-sdk-php第一步找到config的app这里主要就是配置一下常用信息。 比如 在你的配置文件里面配置一些基础信息 如下 aliyun_oss > [KeyId > anho…...
2024/4/14 0:42:50 - 关于对Match-Sea,第一次做完的游戏进行反思
关于Match-Sea的反思 本文皆在熟悉Markdown的使用和对于曾经完成的项目进行反思。 A、Match-Sea是什么? Match-Sea是一个Unity项目名称,是于大一下半学期参加大学生计算机设计大赛所成立的项目,总过程共有3人参与开发,我为主程…...
2024/4/14 18:26:07 - 网络运维工程师-第一天
运维工程师(Operations),负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的ROI. 运维工程师面对的最大挑战是大规模集群的管理问题,如何管理好几十万台服务器上的服务,同时保障服务…...
2024/4/14 17:10:51 - TypeScript入门这篇还不够!!!
一、安装 全局安装typescript(默认你已经安装了node) npm install -g typescript安装完了以后,就可以使用 typescript 进行开发了 // demo.ts function demo01() {let test: string a test typescript;console.log(test) } demo01()typescript结尾的.ts文件是不…...
2024/4/19 13:46:05 - 未来世界的幸存者-阮一峰
我们一直相信,技术会让生活更美好,但是这一次,技术似乎正在动摇人类社会的结构,将整个社会一分为二:有技术的人与没技术的人。他们之间的贫富差距正在越拉越大,人类束手无策。 如果你有技术,那么…...
2024/4/28 1:15:50
最新文章
- 无监督学习的评价指标
轮廓系数(Silhouette Coefficient) 轮廓系数用于判断聚类结果的紧密度和分离度。轮廓系数综合了样本与其所属簇内的相似度以及最近的其他簇间的不相似度。 其计算方法如下: 1、计算簇中的每个样本i 1.计算a(i) &#x…...
2024/4/28 18:40:30 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 备战蓝桥杯Day37 - 真题 - 特殊日期
一、题目描述 思路: 1、统计2000年到2000000年的日期,肯定是需要遍历 2、闰年的2月是29天,非闰年的2月是28天。我们需要判断这一年是否是闰年。 1、3、5、7、8、10、12月是31天,4、6、9、11月是30天。 3、年份yy是月份mm的倍数…...
2024/4/24 9:33:16 - Kafka架构概述
Kafka的体系结构 Kafka是由Apache软件基金会管理的一个开源的分布式数据流处理平台。Kafka具有支持消息的发布/订阅模式、高吞吐量与低延迟、持久化、支持水平扩展、高可用性等特点。可以将Kafka应用于大数据实时处理、高性能数据管道、流分析、数据集成和关键任务应用等场景。…...
2024/4/24 15:38:05 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/4/28 4:04:40 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/4/28 12:01:04 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/4/28 16:34:55 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/4/28 18:31:47 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/4/28 12:01:03 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/4/28 12:01:03 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/4/28 12:01:03 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/4/28 16:07:14 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/4/27 21:08:20 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/4/28 9:00:42 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/4/27 18:40:35 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/4/28 4:14:21 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/4/27 13:52:15 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/4/27 13:38:13 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/4/28 12:00:58 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/4/28 12:00:58 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/4/27 22:51:49 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/4/28 7:31:46 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/4/28 8:32:05 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/4/27 20:28:35 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57