当前位置: 首页 > news >正文

24/04/15总结

多线程:

线程
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位
并发:在同一时刻,有多个指令在单个cpu上交替执行
并行:在同一时刻,有多个指令在多个cpu上同时执行
多线程的实现方式
1.继承Thread类的方式进行实现
2.实现Runnable接口的方式进行实现
3.利用Callable接口和Future接口方式实现

 

Thread
第一步自己定义一个类继承Thread
第二步重写run方法
第三步创建子类的对象,并启动线程
 //创建子类的对象Demo2myThread t1 = new Demo2myThread();Demo2myThread t2 = new Demo2myThread();t1.setName("线程1");          //setName在Thread类里t2.setName("线程2");//开启线程t1.start();t2.start();//可以看到线程1和线程2是交互执行的
public class Demo2myThread extends Thread{@Overridepublic void run() {//书写线程要执行的代码for (int i = 0; i < 100; i++) {System.out.println(getName()+"HelloWorld");     //getName在Thread类中}}
}
Runnable
第一步先自己定义一个类实现Runnable接口
第二步重写里面的Runnable方法
第三步创建自己的类的对象
第四步创建一个Thread类的对象,并开启线程
package com.itheima.demo15多线程;public class Demo3 {public static void main(String[] args) {//Runnable//第一步先自己定义一个类实现Runnable接口//第二步重写里面的Runnable方法//第三步创建自己的类的对象//第四步创建一个Thread类的对象,并开启线程//创建Demo3MyRun的对象//表示多线程要执行的任务Demo3MyRun mr = new Demo3MyRun();//创建线程对象Thread t1 = new Thread(mr);Thread t2 = new Thread(mr);t1.setName("线程1");t2.setName("线程2");//开启线程t1.start();t2.start();}
}
public class Demo3MyRun implements Runnable{@Overridepublic void run() {//书写线程要执行的代码for (int i = 0; i < 100; i++) {//先获取到当前线程的对象Thread t = Thread.currentThread();System.out.println(t.getName()+"HelloWorld");       //因为getName是Thread里的所以这里不能直接用}}
}
利用Callable接口和Future接口方式实现
特点:可以获取到多线程运行的结果
第一步:创建一个类MyCallable实现Callable接口
第二步:重写call(是有返回值的,表示多线程运行的结果)
第三步:创建MyCallable的对象(表示多线程要执行的任务)
第四步:创建FutureTask(因为Future是接口)的对象(作用管理多线程运行的结果)
第五步:创建Thread类的对象,并启动(表示线程)
   //创建MyCallable的对象Demo4MyCallable mc = new Demo4MyCallable();//创建FutureTask的对象FutureTask<Integer> ft = new FutureTask<>(mc);//创建线程的对象Thread t1 = new Thread(ft);//启动线程t1.start();//获取多线程运行的结果Integer result = ft.get();System.out.println(result);
package com.itheima.demo15多线程;import java.util.concurrent.Callable;public class Demo4MyCallable implements Callable<Integer> {@Overridepublic Integer call() throws Exception {//求1-100之间的和int sum=0;for (int i = 1; i <= 100; i++) {sum+=i;}return sum ;}
}
Thread中常见的成员方法
方法名称                                              说明
String getName()                                  返回此线程的名称
void setName(String name)                         设置线程的名字(构造方法也可以设置名字)
static Thread currentThread()                     获取当前线程的对象
static void sleep(long time)                      让线程休眠指定的时间,单位为毫秒
setPriority(int newPriority)                      设置线程的优先级(最小1,最大10,默认5,越大优先级越高)
final int getPriority()                           获取线程的优先级
final void setDaemon(boolean on)                  设置为守护线程
public static void yield()                        出让线程/礼让线程
public static void join()                         插入线程/插队线程
void setName(String name)
细节:如果我们没有给线程设置名字,线程也是有默认的名字的:Thread-x(x起始为0)
static Thread currentThread()
细节:
获取当前线程的对象
当Java虚拟机启动之后,会自动的启动多条线程
其中有一条线程就叫做main线程
他的作用就是去调用main方法,并执行里面的代码
在以前,我们写的所有的代码,其实都是运行在main线程当中
static void sleep(long time)
细节:
1、哪条线程执行到这个方法,那么哪条线程就会在这里停留对应的时间
2、方法的参数:就表示睡眠的时间,单位毫秒
3、当时间到了之后,线程会自动的醒来,继续执行下面的其他代码
setPriority(int newPriority)
final int getPriority()
t1.setPriority(1);    //设置优先级为1
t2.setPriority(10);   //设置优先级为10
System.out.println(t1.setPriority());     //输出t1的优先级
final void setDaemon(boolean on)
细节:
当其他的非守护线程执行完毕之后,守护线程会陆续结束(不是立马结束)
通俗易懂:
当非守护线程结束了,那么守护线程也没有存在的必要了
t2.setDaemon(true);           //开启守护线程
public static void yield()
在重写的run方法里:Thread.yield();    //表示出让当前cpu的执行权(尽可能会让结果均匀一些,不是绝对的)
就是当前线程弄完之后就会出让cpu的执行权
public static void join()
t1.join();    //表示把t1这个线程,插入到当前线程之前
线程安全的问题
需求:
某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票
买票引发的安全问题:
  //相同的票出现了多次
  //出现了超出范围的票
解决方法:同步代码锁(把操作共享数据的代码锁起来)
格式:
synchronized (锁){     (注意:锁对象一定要唯一:就是前面加个static)
操作共享数据的代码
}
特点1:锁默认打开,有一个线程进去了,锁自动关闭
特点2:里面的代码全部执行完毕,线程出来,锁自动打开
 //创建线程对象Demo7myThread t1 = new Demo7myThread();Demo7myThread t2 = new Demo7myThread();Demo7myThread t3 = new Demo7myThread();//起名字t1.setName("窗口1");t2.setName("窗口2");t3.setName("窗口3");//开启线程t1.start();t2.start();t3.start();
package com.itheima.demo15多线程;public class Demo7myThread extends Thread{static  int ticket =0;@Overridepublic void run() {while (true) {synchronized (Demo7myThread.class){              //细节1:synchronized要放在循环里面if(ticket<100) {                             //细节2:一般用类名.class用作锁的对象(当前字节码文件对象),(锁对象一定要唯一)try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}ticket++;System.out.println(getName() +"正在卖"+ ticket+"张票");}else {break;}}}}
}
//同步方法:就是把synchronized关键字加到方法上
    //格式:修饰符 synchronized 返回值类型 方法名(方法参数) {...}
    //特点1:同步方法是锁住方法里面所有的代码
    //特点2:锁对象不能自己指定(非静态: this,静态:当前类的字节码文件对象)
   static  int ticket=0;@Overridepublic void run() {//1.循环while(true){//2.(同步方法)if (method()) break;}}private synchronized boolean method() {         //此时方法是非静态的,它的锁对象是thisif(ticket==100)return true;else {try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}ticket++;System.out.println(Thread.currentThread()+"正在卖"+ ticket+"张票");}return false;}

 

线程池
线程池只要核心原理:
1.创建一个池子,池子中是空的
2.提交任务时,池子会创建新的线程对象,任务执行完毕,线程归还给池子
下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可
3.但是如果提交任务时,池子中没有空闲线程,也无法创建新的线程,任务就会排队等待
线程池代码实现
Executors:线程池的工具类通过调用方法返回不同类型的线程池对象
                      方法名称                                                                                             说明
public static ExecutorService newCachedThreadPool()                               创建一个没有上限的线程池(上限是int类型的最大值)
public static ExecutorService newFixedThreadPool(int nThreads)                    创建有上限的线程池
 

网络编程: 
 

网络编程:在网络通信协议下,不同计算机上运行的程序,进行的数据传输。
不管是什么场景,都是计算机跟计算机之间通过网络进行数据传输,数据传输就需要网络编程
C/S:客户端/服务器
B/S:浏览器/服务器
BS架构的优缺点
不需要开发客户端,只需要页面+服务端
用户不需要下载,打开浏览器就能使用
如果应用过大,用户体验受到影响
CS架构的优缺点
画面可以做的非常精美,用户体验好
需要开发客户端,也需要开发服务端
//static InetAddress getByName(string host)      确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址
        //String getHostName()                          获取此IP地址的主机名
        //String getHostAddress()                       返回文本显示中的IP地址字符串

 
//1.获取InetAddress的对象//IP的对象InetAddress address = InetAddress.getByName("snow");System.out.println(address);String name = address.getHostName();//获取电脑的主机名System.out.println(name);String ip = address.getHostAddress();//获取电脑的IPSystem.out.println(ip);
端口号
应用程序在设备中唯一的标识。
端口号:由两个字节表示的整数,取值范围:0~65535
其中0~1023之间的端口号用于一些知名的网络服务或者应用
我们自己使用1024以上的端口号就可以了
注意:一个端口号只能被一个应用程序使用
UDP协议
用户数据报协议(User Datagram Protocol)
UDP是面向无连接通信协议。
速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据
TCP协议
传输控制协议TCP(Transmission control Protocol
TCP协议是面向连接的通信协议。
速度慢,没有大小限制,数据安全

 

//1.创建DatagramSocket对象(快递公司)//细节://绑定端口:以后我们就是通过这个端口往外发送//空参:所有可用的端口中随机一个进行使用//有参:指定端口号进行绑定DatagramSocket ds = new DatagramSocket();     //单播是创建这个//2.打包数据String str = "你好";byte[] bytes = str.getBytes();//只能发字节数据InetAddress address = InetAddress.getByName("127.0.0.1");int port=10086;DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);//(要发的数据,数据的长度,往哪台电脑发,发到哪个端口上)//3.发送数据ds.send(dp);//4.释放资源ds.close();
 //UDP通信程序(接收数据)//1.创建DatagramSocket对象(快递公司)//细节://在接收的时候,一定要绑定端口//而且绑定的端口一定要跟发送的端口保持一致DatagramSocket ds2 = new DatagramSocket(10086);//2.接收数据包byte[] bytes2 = new byte[1024];DatagramPacket dp2 = new DatagramPacket(bytes2,bytes2.length);       //(接收放到的地方,接收放到的地方的长度)//该方法是阻塞的//程序执行到这一步的时候,会在这里死等//等发送端发送消息ds2.receive(dp2);//3.解析数据包byte[] data = dp2.getData();     //获取数据int len = dp2.getLength();       //获取多少个字节数据InetAddress address1 = dp2.getAddress();         //获取从哪台电脑发来的int port1 = dp2.getPort();           //获取从哪个端口发来的System.out.println("接收到数据"+ new String(data,0,len));System.out.println("该数据是从"+ address1 +"这台电脑中的"+ port1 +"这个端口发出的");//4.释放资源ds2.close();
单播:以前的代码就是单播
组播:组播驰址:224.0.0.0~239.255.255.255
其中224.0.0.0~224.0.0.255 为预留的组播地址
广播:255.255.255.255
 //1.创建MulticastSocket对象MulticastSocket ms = new MulticastSocket();     //组播创建这个//2.打包数据String str = "你好";byte[] bytes = str.getBytes();//只能发字节数据InetAddress address = InetAddress.getByName("224.0.0.2");int port=10086;DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);//(要发的数据,数据的长度,往哪台电脑发,发到哪个端口上)//3.发送数据ms.send(dp);//4.释放资源ms.close();

 

  //1.创建 MulticastSocket对象MulticastSocket ms = new MulticastSocket(10086);//2.将当前本机,添加到224.0.0.1的这一组当中InetAddress address = InetAddress.getByName("224.0.0.2");ms.joinGroup(address);//3.接收数据包byte[] bytes2 = new byte[1024];DatagramPacket dp2 = new DatagramPacket(bytes2,bytes2.length);       //(接收放到的地方,接收放到的地方的长度)//该方法是阻塞的//程序执行到这一步的时候,会在这里死等//等发送端发送消息ms.receive(dp2);//4.解析数据包byte[] data = dp2.getData();     //获取数据int len = dp2.getLength();       //获取多少个字节数据InetAddress address1 = dp2.getAddress();         //获取从哪台电脑发来的int port1 = dp2.getPort();           //获取从哪个端口发来的System.out.println("接收到数据"+ new String(data,0,len));System.out.println("该数据是从"+ address1 +"这台电脑中的"+ port1 +"这个端口发出的");//5.释放资源ms.close();
TCP通信程序
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象
通信之前要保证连接已经建立
通过Socket产生IO流来进行网络通信
客户端(Socket)---输出流---->   通信之前要保证连接已经建立      ----输入流---->服务器端(SeverSocket)
客户端:
创建客户端的Socket对象(Socket)与指定服务端连接
Socket(string host, int port)         (服务器的ip,端口号)
获取输出流,写数据
OutputStream getOutputStream()
释放资源
void close()
服务器端:
创建服务器端的Socket对象(ServerSocket)
ServerSocket(int port)    (此时服务器绑定的端口要和客户端绑定的端口保持一致)
监听客户端连接,返回一个Socket对象
Socket accept()
获取输入流,读数据,并把数据显示在控制台
InputStream getInputStream()
释放资源
void close()

相关文章:

24/04/15总结

多线程&#xff1a; 线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位 并发:在同一时刻&#xff0c;有多个指令在单个cpu上交替执行 并行:在同一时刻&#xff0c;有多个指令在多个cpu上同时执行 多线程的实现方式 1.继承…...

vue3、vue2中nextTick源码解析

nexttick是啥 nextTick是Vue提供的一个全局API&#xff0c;由于Vue的异步更新策略导致我们对数据的修改不会更新&#xff0c;如果此时想要获取更新后的Dom&#xff0c;就需要使用这个方法. vue的异步更新策略意思是如果数据变化,vue不会立刻更新dom,而是开启一个队列,把组件更…...

【氮化镓】GaN HEMTs结温和热阻测试方法

文章《Temperature rise detection in GaN high-electron-mobility transistors via gate-drain Schottky junction forward-conduction voltages》&#xff0c;由Xiujuan Huang, Chunsheng Guo, Qian Wen, Shiwei Feng, 和 Yamin Zhang撰写&#xff0c;发表在《Microelectroni…...

c++11 标准模板(STL)本地化库 - 平面类别(std::codecvt) - 在字符编码间转换,包括 UTF-8、UTF-16、UTF-32 (四)

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 在字符编码间转换&#xff0c;包括 UTF-8、UTF-16、UTF-32 std::…...

【状态压缩 容斥原理 组合数学】100267. 单面值组合的第 K 小金额

本文涉及知识点 状态压缩 容斥原理 组合数学 二分查找算法合集 LeetCode100267. 单面值组合的第 K 小金额 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给你一个整数 k 。 你有无限量的每种面额的硬币。但是&#xff0c;你 不能 组合使用不同面额的硬币。 返回…...

.net框架和c#程序设计第三次测试

目录 一、测试要求 二、实现效果 三、实现代码 一、测试要求 二、实现效果 数据库中的内容&#xff1a; 使用数据库中的账号登录&#xff1a; 若不是数据库中的内容&#xff1a; 三、实现代码 login.aspx文件&#xff1a; <% Page Language"C#" AutoEventW…...

架构师系列-搜索引擎ElasticSearch(五)- 索引设计

索引创建后&#xff0c;要非常谨慎&#xff0c;创建不好后面会出现各种问题。 索引设计的重要性 索引创建后&#xff0c;索引分片只能通过_split和_shrink 接口对其进行成倍的增加和缩减。 ES的数据是通过_routing分配到各个分片上的&#xff0c;所以本质上不推荐区改变索引的…...

kafka ----修改log4j、jmx、jvm参数等

1、修改log4j 日志路径 在kafka-run-class.sh文件中修改如下配置&#xff0c;将 LOG_DIR变量指定为自己想要存储的路径 # Log directory to use if [ "x$LOG_DIR" "x" ]; thenLOG_DIR"$base_dir/logs" fi2、修改jmx参数 在kafka-run-class.s…...

Python 全栈 Web 应用模板:成熟架构,急速开发 | 开源日报 No.223

tiangolo/full-stack-fastapi-template Stars: 15.6k License: MIT full-stack-fastapi-template 是一个现代化的全栈 Web 应用模板。 使用 FastAPI 构建 Python 后端 API。使用 SQLModel 进行 Python SQL 数据库交互&#xff08;ORM&#xff09;。Pydantic 用于数据验证和设…...

STM32之DHT11温湿度传感器

目录 一 DHT11温湿度传感器简介 1.1 传感器特点 1.2 传感器特性 1.3 传感器引脚说明 二 测量原理及方法 2.1 典型应用电路 2.2 单线制串行简介 2.2.1 串行接口 (单线双向) 2.2.2 数据示例 2.3 通信时序 三 单片机简介 3.1 STM32F103C8T6最小系统板 四 接线说明 …...

paddle ocr

paddle安装教程&#xff0c;git clone xxxgit https://blog.csdn.net/Castlehe/article/details/117356343 只有paddle 1.x 的教程&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/static/doc/doc_en/quickstart_en.md 报错是因为安装的是paddle 2.x而教程只给了…...

Xcode 15.0 新 #Preview 预览让 SwiftUI 界面调试更加悠然自得

概览 从 Xcode 15 开始&#xff0c;苹果推出了新的 #Preview 宏预览机制&#xff0c;它无论从语法还是灵活性上都远远超过之前的预览方式。#Preview 不但可以实时预览 SwiftUI 视图&#xff0c;而且对 UIKit 的界面预览也是信手拈来。 想学习新 #Preview 预览的一些超实用调试…...

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境 安装完VS2019后&#xff0c;打开终端x64 Native Tools Command Prompt for Vs 2019&#xff0c;直接运行conda会出现‘conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序 原因分析&am…...

网络篇09 | 运输层 udp

网络篇09 | 运输层 udp 01 简介UDP 是面向报文的 02 报文协议 01 简介 UDP 只在 IP 的数据报服务之上增加了一些功能&#xff1a;复用和分用、差错检测 UDP 的主要特点&#xff1a;无连接。发送数据之前不需要建立连接。 使用尽最大努力交付。即不保证可靠交付。 面向报文。…...

vim相关指令

vim的各种模式及其转换关系图 vim 默认处于命令模式&#xff01;&#xff01;&#xff01; 模式之间转换的指令 除【命令模式】之外&#xff0c;其它模式要切换到【命令模式】&#xff0c;只需要无脑 ESC 即可&#xff01;&#xff01;&#xff01; [ 命令模式 ] 切换至 [ 插…...

STM32常见调试工具介绍

STM32的常见调试工具主要包括ST-LINK、USB转TTL、USB转485以及USB转CAN。这些工具在嵌入式系统开发、调试以及通信中发挥着重要的作用。 1.ST-LINK&#xff1a; ST-LINK是STMicroelectronics公司专为其STM32系列微控制器开发的调试和编程工具。既能仿真也能将编译好的程序下载…...

简历上写熟悉Linux下常用命令?直接寄

大家写简历技术栈时&#xff0c;都觉得越多越好&#xff0c;其中一条&#xff0c;熟悉Linux下常用命令&#xff1f;其实开发中Linux不是必备考点&#xff0c;除了运维&#xff0c;真正用的多的仅仅cd ls mkdir等&#xff0c;但当面试官问到上面命令时&#xff0c;是不是就傻眼了…...

【设计模式】4、prototype 原型模式

四、prototype 原型模式 https://refactoringguru.cn/design-patterns/prototype 如果希望 复制对象, 可使用 “prototype 模式” 如果 “待复制的对象” 是 interface 而不是 class, 或者如果 class 有 private 变量时. 无法知道 "待复制的对象"的细节, 则需要其…...

ES6 关于Class类的继承 extends(2024-04-10)

1、简介 类Class 可以通过extends关键字实现继承&#xff0c;让子类继承父类的属性和方法。extends 的写法比 ES5 的原型链继承&#xff0c;要清晰和方便很多。 class Foo {constructor(x, y) {this.x x;this.y y;console.log(父类构造函数)}toString() {return ( this.x …...

边缘计算【智能+安全检测】系列教程--使用OpenCV+GStreamer实现真正的硬解码,完全消除马赛克

通过现有博客的GST_URL = "rtspsrc location=rtsp://admin:abcd1234@192.168.1.64:554/h264/ch01/main/av_stream latency=150 ! rtph264depay ! avdec_h264 ! videorate ! videoconvert ! appsink sync=false" GStreamer的解码方式解码,大多情况应该存在上图马赛克…...

Anaconda在Ubuntu下的安装与简单使用

一、参考资料 ubuntu16.04下安装&配置anacondatensorflow新手教程 二、安装Anaconda 下载 Miniconda镜像1 or Miniconda镜像2 # 下载 wget Miniconda3-py39_4.10.3-Linux-x86_64.sh# 安装 bash Miniconda3-py39_4.10.3-Linux-x86_64.sh一路yes 安装过程中的选项 Do you …...

网络编程【InetAddress , TCP 、UDP 、HTTP 案例】

day38上 网络编程 InetAddress 理解&#xff1a;表示主机类 一个域名 对应 多个IP地址 public static void main(String[] args) throws UnknownHostException {//获取本机的IP地址 // InetAddress localHost InetAddress.getLocalHost(); // System.out.println(localHos…...

软考中级工程师网络技术第二节网络体系结构

OSPF将路由器连接的物理网络划分为以下4种类型&#xff0c;以太网属于&#xff08;25&#xff09;&#xff0c;X.25分组交换网属于&#xff08;非广播多址网络NBMA&#xff09;。 A 点对点网络 B 广播多址网络 C 点到多点网络 D 非广播多址网络 试题答案 正确答案&#xff1a; …...

Mac 软件清单

~自留备用~ Macbook用了几年之后, 512G的内置硬盘有些紧张了, 这几天总是提示空间不足, 就重装了下系统, 重装之后竟然不记得有些软件的名字和下载链接, 特此记录 Office 办公套件 直接从微软官网下载Office 安装包https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F…...

【Leetcode每日一题】 分治 - 颜色分类(难度⭐⭐)(57)

1. 题目解析 题目链接&#xff1a;75. 颜色分类 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 算法思路解析 本算法采用三指针法&#xff0c;将数组划分为三个区域&#xff0c;分别用于存放值为0、1和2的元素。通过…...

微信登录功能-保姆级教学

目录 一、使用组件 二、登录功能 2.1 步骤 2.2 首先找到网页权限 复制demo 代码 这里我们需要修改两个参数 三、前端代码 3.1 api 里weiXinApi.ts 3.2 api里的 index.ts 3.3 pinia.ts 3.4 My.vue 四、后端代码 4.1 WeiXinController 4.2 Access_Token.Java 4.3 We…...

嵌入式MCU BootLoader开发配置详细笔记教程

目录 一、BootLoader基础 二、BootLoader原理及配置 三、BootLoader程序 bootloader.h bootloader.c 四、Application1 用户程序 application1.h application1.c 五、Application2 用户程序 application2.h 六、程序运行效果 七、工程文件Demo 一、BootLoader基础 …...

Unity 中消息提醒框

Tooltip 用于ui布局 using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI;[ExecuteInEditMode()] // 可以在编辑模式下运行public class Tooltip : MonoBehaviour {public TMP_Text header; // 头部文本publi…...

好数(蓝桥杯)

文章目录 好数题目描述暴力方法一暴力方法二&#xff08;超时&#xff09; 好数 题目描述 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 …...

自动化收集Unity版本更新日志

自动化收集Unity版本更新日志 &#x1f365;功能介绍&#x1f96a;食用手册填写配置开始搜集 &#x1f368;数据展示 &#x1f365;功能介绍 &#x1f4a1;获取指定年份中所有的Unity版本更新日志。 &#x1f4a1;根据指定字符串过滤。 &#x1f4a1;.收集后自动保存成markdow…...

站酷网官网/新闻发稿

多半的时间&#xff0c;都花在了格式转换上……或者在修转换bug上面。 const char* char* char[] stringQString类型常用&#xff1a; QString::fromStdString(string str); QString::Number(int str); QString::toString(QString str); 实际遇到的稀奇古怪的需要 1.string转…...

想建一个免费的网站/百度贴吧官网

红米k40耗电快怎么解决&#xff1f;具体的解决办法介绍小编已经为大家准备好了。下面&#xff0c;就跟随玩游戏网的小编一起继续往下看&#xff0c;感兴趣的小伙伴一定把固有错过哦&#xff01;红米k40耗电快怎么解决&#xff1a;1、留意信号强度如果处于一个信号比较糟糕的地方…...

wordpress超简洁主题/跨境电商哪个平台比较好

在《【Hibernate】Hibernate的聚类查询、分组查询、排序与时间之差》&#xff08;点击打开链接&#xff09;一文中已经讲述过如何利用HQL语句取代SQL语句&#xff0c;进行聚类查询、分组查询、排序与时间之差的查询&#xff0c;同时指出hql能代替sql语句做任何事情。我原本以为…...

wordpress主题ashley/免费发广告的网站

- START - 什么是内存管理器&#xff08;what&#xff09; Python作为一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言&#xff0c;与大多数编程语言不同。Python中的变量无需事先申明&#xff0c;变量无需指定类型&#xff0c;程序员无需关心内存管理&#xff…...

网站怎么做下载内容/seo搜索引擎优化平台

周四见 公开课系列We,知数堂习惯用实力介绍自己—我们只分享干货重磅福利来袭2018年5月24日&#xff0c;20:30-21:30 周四见不见不散&#xff01;主讲嘉宾&#xff1a;叶金荣 知数堂联合创始人 & 3306π社区负责人 资深MySQL专家&#xff0c;Oracle M…...

做高端品牌网站/高端网站建设企业

1、引言 HitTest是命中测试的意思。在使用MFC编程的时候&#xff0c;在列表视图中通常会涉及到需要获取鼠标当前位置所对应的元素。这种通过光标位置来获得相应元素项的操作我们称之为命中测试。 2、获取光标位置 网上有人这样处理&#xff1a; DWORDdwPos ::GetMessagePos(…...