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

【数据结构和算法】1. 数据结构和算法简介、二分搜索

本文根据 数据结构和算法入门 视频记录

文章目录

  • 1. 数据结构和算法简介
    • 1.1 什么是数据结构?什么是算法?
    • 1.2 数据结构和算法之间的关系
    • 1.3 “数据结构和算法”有那么重要吗?
  • 2. 二分搜索(Binary Search)
    • 2.1 算法概念
    • 2.2 代码实现
    • 2.3 算法复杂度分析

1. 数据结构和算法简介

1.1 什么是数据结构?什么是算法?

什么是”数据结构和算法“?这可能是第一次接触此内容的新朋友最常有的问题。我先给大家一个比较官方的解释:

数据结构是计算机存储、组织数据的方式。
算法是一系列规定的计算步骤,为了实现特定的计算目的。

你可能更困惑了,那我换种简单的说法吧:

程序 = 数据结构 + 算法

这什么意思?我们都知道,电脑最主要功能是储存数据,计算数据,输出数据,而程序无非就是电脑中一部分数据的集合而已,所以程序也是要控制数据的。那么数据结构就是程序用来储存数据的基本单位,而算法就是为了实现特定目的,一系列操作数据的方式。简单来讲,一个程序把数据存储在特定的数据结构中,并使用特定的算法进行数据的计算。

举例来说,你要在数据库中查找一个特定的数字75,假设这个数据库用数组存储数据,并存好了100个从小打大排好序的数字,那我们可以使用两种方式来找75。第一种方式就是一个一个按顺序找,那就需要找75次才能找到我们的目标。第二种方式就是我们只找一堆数中间的那个数,如果那个数比我们要找的数小,那么我们排除此数之前的所有数,只管那个数之后的数字。如果那个数比我们要找的数大,那么我们知道我们要的数肯定排在它的前面,那就只找它之前的数。所以我们第一次会找到50,50比75小,那我们就只管50~100之间的数,然后再找中间的数75,这下就找到了,可见第二种方法比第一种方法快多了。

在这个例子中,数据库用来存储数据的数组就是数据结构,而搜索的两种方式则是特定的两种搜索算法:暴力搜索和二分搜索。如果这个数据库中数据没有排好序,那么二分查找就不适用了,我们只能使用暴力搜索。可见特定的算法需要通过特定的数据结构来实现,二分搜索基于数组这种数据结构,且其中的数字必须排好序。算法的设计需要结合数据结构和特征才行。

1.2 数据结构和算法之间的关系

但数据结构和算法不一定像数组和二分查找这个例子这样是完全分开的单独内容。数组是最简单的数据结构,而很多其他复杂的数据结构往往又集成了很多的算法在其中。

比如一个优先队列数据结构,每次你向其中加入一个新数据的时候,它都会自动帮你排序好,将优先级最高的数据放在第一个。如果我们用这个数据结构来存储数据,并设定数字大的优先级更高,那么我们每次我们想要查找最大的数字,都不需要查找,直接取优先队列第一个数字即可。可见数据结构和算法的关系密不可分,每个数据结构中往往集成了很多的算法,比如这个优先队列中就集合了某种排序算法,我们才能如此快速地拿到最大值。

这些就是数据结构和算法的基本概念:数据结构是程序储存信息的基本单位,数组就是常见的数据结构。而算法则是实现特定任务的计算步骤,比如排序算法和搜索算法的目的顾名思义就是排序和搜索。数据结构和算法之间的关系密不可分,特定算法有时候需要基于特定的数据结构,比如二分查找就要基于排好序的数组。另一方面,数据结构也往往集成了特定的算法,比如优先队列就集成了排序算法在其中。

1.3 “数据结构和算法”有那么重要吗?

很多小伙伴就问了,如今各种编程语言都有丰富的第三方代码库,不需要自己实现算法,那我们还需要学习”数据结构和算法“吗?这个问题就等价于,搬砖需不需要学习物理。如果只干搬砖砌墙的活,熟练掌握工具那就够了。但是要想设计建筑的话,还是要打好基础的。“数据结构和算法”也是计算机科学的必修课,不学也不行哈哈。

毫不夸张地说,“数据结构和算法”就是编程的内功,如果能深入掌握这方面的知识,我们就可以设计出计算效率更高的程序,比如Google这一个看起来功能单一的搜索引擎,不仅仅可以搜索相关性极高的内容,其搜索速度也是惊人的,背后的秘密就是各种搜索算法的集合。所以,好好学习”数据结构和算法“吧!

2. 二分搜索(Binary Search)

2.1 算法概念

明白基本的“数据结构和算法”的概念后,我们来具体了解下一前文例子中提到的二分搜索吧,这是个很简单的算法,但是却非常实用。

二分搜索是一种在有序数组中查找特定元素的算法。假设我们要搜索x,搜索过程从数组的中间元素开始,如果中间元素正好是x,而查找成功;否则我们利用中间位置将数组分为前、后两个子数组。如果x小于中间位置的元素,则进一步查找前一个子数组,否则进一步查找后一个子数组。重复以上步骤,直到找到满足条件的元素,或直到子数组不存在为止,代表查找不成功。

2.2 代码实现

伪代码 (Pseudocode)

search(array[], left, right, target):while(left <= right) mid = (left + right) / 2;if(array[mid] == target): return midelse if(target < array[mid]):right = mid - 1else if(target > array[mid]):left = mid + 1return -1;

Java 迭代方式(非递归方式)

public int binarySearch(int array[], int target) {int left = 0;int right = array.length - 1;while(left <= right) {  int mid = left + (right - left) / 2;if (array[mid] == target) { return mid;} else if (target < array[mid]) {right = mid - 1;} else {left = mid + 1;}}return -1;
}

Java 递归方式

public int search(int nums[], int start, int end, int target) {if(end >= start) {int mid = start + (end - start) / 2;if(nums[mid] == target) {return mid;} else if (target < nums[mid]) {return search(nums, start, mid - 1, target);} return search(nums, mid + 1, end, target);}return -1;
}

2.3 算法复杂度分析

关于复杂度的概念会在下一章节详细介绍,接下来简单分析一下时间空间复杂度,大家只要了解就好。

最糟糕的情况下,我们需要将数组迭代切分到只有一个元素,那么需要多少次才会切到只有一个元素呢?假设如果数组有n个元素,切分的次数为k,每次都切一半,也就是 n / (2^k) = 1,转换公式为 2^k = n,那么k就是log2N,所以时间复杂度为O(log2N)。

因为我们不需要额外的空间,所以空间复杂度为O(1)。

相关文章:

【数据结构和算法】1. 数据结构和算法简介、二分搜索

本文根据 数据结构和算法入门 视频记录 文章目录 1. 数据结构和算法简介1.1 什么是数据结构&#xff1f;什么是算法&#xff1f;1.2 数据结构和算法之间的关系1.3 “数据结构和算法”有那么重要吗&#xff1f; 2. 二分搜索&#xff08;Binary Search&#xff09;2.1 算法概念2…...

4月19日记(补)算了和周日一块写了 4月20日日记

周六啊 昨天晚上又玩的太嗨了。睡觉的时候有点晚了&#xff0c;眼睛疼就没写日记。现在补上 实际上现在是20号晚上八点半了。理论上来说应该写今天的日记。 周六上午打比赛啦&#xff0c;和研究生&#xff0c;输了&#xff0c;我是替补没上场。没关系再练一练明天就可以变强…...

面试常用基础算法

目录 快速排序归并排序堆排序 n n n皇后问题最大和子数组爬楼梯中心扩展法求最长回文子序列分割回文串动态规划求最长回文子序列最长回文子串单调栈双指针算法修改 分割回文串滑动窗口栈 快速排序 #include <iostream> #include <algorithm>using namespace std;…...

微服务与 SOA:架构异同全解析与应用指南

微服务和 SOA&#xff08;面向服务的架构&#xff09;是两种不同的软件架构风格&#xff0c;它们在很多方面存在相似之处&#xff0c;但也有一些区别。以下是对它们的详细介绍&#xff1a; 一、概念 1.微服务 微服务架构将一个大型应用程序拆分成多个小型、独立的服务&#…...

Dijkstra 算法入门笔记 (适用于算法竞赛初学者) - C++ 代码版

目录 算法是做什么的&#xff1f;核心思想&#xff1a;贪就完事了&#xff01;算法前提&#xff1a;不能有负权边&#xff01;需要哪些工具&#xff1f;(数据结构)算法具体步骤关键操作&#xff1a;松弛 (Relaxation)两种实现方式 (C 代码) 朴素版 Dijkstra (O(V^2))堆优化版 …...

脑影像分析软件推荐| GraphVar介绍

目录 1.软件界面 2.工具包功能简介 3.软件安装注意事项 1.软件界面 2.工具包功能简介 GraphVar是一个用户友好的 MATLAB 工具箱&#xff0c;用于对功能性大脑连接进行全面的图形分析。这里我们介绍了该工具箱的全面扩展&#xff0c;使用户能够无缝探索跨功能连接测量的可轻…...

如何优雅地实现全局唯一?深入理解单例模式

如何优雅地实现全局唯一&#xff1f;深入理解单例模式 一、什么是单例模式&#xff1f; 单例模式是一种创建型设计模式&#xff0c;旨在确保一个类只有一个实例&#xff0c;并为该实例提供全局访问点&#xff0c;从而避免全局变量的命名污染&#xff0c;并支持延迟初始化Wiki…...

【Flutter】使用LiveKit和Flutter构建实时视频聊天应用

引言 在当今快速发展的数字世界中&#xff0c;实时视频通信已成为许多应用程序的核心功能。无论是远程工作、在线教育还是社交网络&#xff0c;高质量的实时视频功能都至关重要。LiveKit作为一个开源的WebRTC解决方案&#xff0c;提供了构建可扩展实时音视频应用所需的一切工具…...

Android Jetpack Compose 状态管理解析:remember vs mutableStateOf,有啥不一样?为啥要一起用?

&#x1f331;《Jetpack Compose 状态管理解析&#xff1a;remember vs mutableStateOf&#xff0c;有啥不一样&#xff1f;为啥要一起用&#xff1f;》 在 Jetpack Compose 的世界里&#xff0c;UI 是响应式的。这意味着当状态发生变化时&#xff0c;UI 会自动重组&#xff0…...

QT6 源(37):界面组件的总基类 QWidget 的源码阅读(下,c++ 代码部分)

&#xff08;1&#xff09; QT 在 c 的基础上增加了自己的编译器&#xff0c;以支持元对象系统和 UI 界面设计&#xff0c;有 MOC 、 UIC 等 QT 自己的编译器。本节的源代码里&#xff0c;为了减少篇幅&#xff0c;易于阅读&#xff0c;去除了上篇中的属性部分&#xff0c; 上篇…...

进程与线程:01 CPU管理的直观想法

多进程图像与操作系统核心 好从今天开始&#xff0c;我们就要开始学习操作系统&#xff0c;最核心的图像是多进程图像。前面我们讲过&#xff0c;多进程图像对操作系统来说非常重要&#xff0c;它是操作系统的核心图像。明白了它以后&#xff0c;对于理解操作系统的一大部分内…...

19. git reflog

基本概述 git reflog 的作用是&#xff1a;查看本地仓库的引用日志&#xff08;reference log&#xff09;&#xff0c;例如分支、HEAD等。它可以帮助你找回误删的提交、恢复被覆盖的分支&#xff0c;或回溯操作历史。 基本用法 1.查看完整的reflog git reflog这会显示所有…...

C语言 —— 铭纹织构未诞之镜 - 预处理详解

目录 1. 什么是预处理&#xff08;预编译&#xff09; ​编辑 2. 预定义符号 3. #define 定义常量 4. #define定义宏 5. 带副作用的宏参数 6. 宏替换的规则 7. 宏和函数的对比 8. #和## 8.1 #运算符 8.2 ## 运算符 9. #undef 10. 条件编译 1. 什么是预处理&#xf…...

Linux 文件系统目录结构详解

Linux 文件系统目录结构详解 Linux 文件系统遵循 Filesystem Hierarchy Standard (FHS) 标准&#xff0c;定义了各个目录的用途和文件存放规则。无论是开发者、运维工程师还是普通用户&#xff0c;理解这些目录的作用都至关重要。本文将全面解析 Linux 的目录结构&#xff0c;…...

2025-4-19 情绪周期视角复盘(mini)

我本以为市场进化规律下产生龙头战法的末法时代导致情绪周期逐步混乱或者说混沌期漫长。所谓的市场进化无非也是量化的发展和各类资金逐步量化化的充分博弈下的结果。通过逐步向上思考发现&#xff0c;不仅仅我们的市场是处于一个存量的时代背景&#xff0c;重要的是我们的思维…...

-实用类-

1. API是什么 2.什么是枚举 &#xff01;有点类似封装&#xff01; 2.包装类 注意&#xff1a; 1.Boolean类构造方法参数为String类型时&#xff0c;若该字符串内容为true(不考虑大小写)&#xff0c;则该Boolean对象表示true&#xff0c;否则表示false 2.当包装类构造方法参…...

Unity3D仿星露谷物语开发36之锄地动画2

1、目标 当角色锄地之后&#xff0c;地面会显示开垦后的样貌。 2、思路 上一篇中&#xff0c;虽然角色dig了hoe&#xff0c;同时grid属性也改变了&#xff0c;但是没有任何可视化的反馈。我们现在将添加新的功能&#xff0c;动态地将"dug ground"瓷砖添加到"…...

【备考高项】模拟预测题(一)案例分析及答案详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题 1】(10分)【问题 2】(5分)【问题 3】(4分)【问题 4】(6分)试题二【问题 1】(12分)【问题 2】(3分)【问题 3】(6分)【问题 4】(4分)试题三【问题 1】(4分)【问题 2】(10分)【问题 3】…...

7、sentinel

控制台访问地址&#xff1a;http://localhost:8080/ 依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>配置文件 spring:cloud:sentinel:transpo…...

状态管理最佳实践:Provider使用技巧与源码分析

状态管理最佳实践&#xff1a;Provider使用技巧与源码分析 前言 Provider是Flutter官方推荐的状态管理解决方案&#xff0c;它简单易用且功能强大。本文将从实战角度深入讲解Provider的使用技巧和源码实现原理&#xff0c;帮助你更好地在项目中应用Provider进行状态管理。 基…...

INFINI Console 系统集群状态异常修复方案

背景介绍 运行 INFINI Console 1.29.0 和 1.29.1 版本 的用户在 新初始化 平台后可能会遇到一个特定问题。如果后台的系统 Easysearch/Elasticsearch 集群&#xff08;存储 Console 元数据的集群&#xff0c;通常名为 .infini_cluster 或类似名称&#xff09;包含超过一个节点…...

Spring Boot自动装配原理(源码详细剖析!)

什么是Spring Boot的自动装配&#xff1f; 自动装配是Spring Boot的核心功能&#xff0c;它能够根据应用程序的依赖和配置自动配置Spring。这意味着我们只需要添加大量的依赖&#xff0c;Spring Boot就能自动完成配置&#xff0c;减少了人工配置的工作量。 自动装配的核心注…...

大数据驱动的高效能量管理:智能优化与实践探索

大数据驱动的高效能量管理:智能优化与实践探索 在全球能源需求不断增长的背景下,如何提高能源利用效率成为各行业关注的焦点。传统的能源管理方式往往依赖固定规则和人工监测,难以适应复杂多变的应用场景。而大数据技术的兴起,为能量管理提供了新的解决方案——通过数据驱…...

《银行数字化风控-业务于实战》读后知识总结

引言 在金融科技高速发展的今天&#xff0c;银行的风控体系正经历从“人工经验驱动”向“数据智能驱动”的深刻变革。《银行数字化风控-业务于实战》一书以实战为导向&#xff0c;系统性地剖析了数字化风控的核心逻辑、技术实现路径及业务落地方法论。作为深耕风控领域多年的从…...

初级达梦dba的技能水准

在x86环境&#xff08;windows、linux&#xff09;安装单机软件&#xff0c;安装客户端创建过至少20套数据库&#xff0c;优化参数并更新过正式许可会用逻辑导出导入以及dmrman备份了解manager工具的使用配置sqllog日志&#xff0c;并能解释输出内容能够分析因磁盘空间不足、内…...

C++初阶-类和对象(中)

目录 1.类的默认成员函数 2.构造函数&#xff08;难度较高&#xff09; ​编辑 ​编辑 ​编辑 3.析构函数 4.拷贝构造函数 5.赋值运算符重载 5.1运算符重载 5.2赋值运算符重载 6.取地址运算符重载 6.1const成员函数 6.2取地址运算符重载 7.总结 1.类的默认成员函数…...

Linux网络UDP与TCP

基础知识 传输层 负责数据能够从发送端传输接收端。 端口号(Port)标识了一个主机上进行通信的不同的应用程序; 在 TCP/IP 协议中, 用 “源 IP”, “源端口号”, “目的 IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过 netstat -n 查看); 端口号范…...

23、.NET和C#有什么区别?

1、定义与范畴 .NET 定义 .NET 是一个由微软开发的开发平台&#xff08;Platform&#xff09;&#xff0c;它提供了一套完整的工具、库和运行时环境&#xff0c;用于构建各种类型的应用程序。 范畴 包括 .NET Framework、.NET Core&#xff08;现称为 .NET 5 及以上版本&a…...

Qt6离线安装过程

Qt6离线安装过程 说明解决方案联网笔记本安装qt6拷贝到离线电脑修改qtenv2.bat文件 说明 现在qt6已经不能通过离线的方式下载安装包安装了&#xff0c;只能通过登陆的方式在线安装&#xff0c;但是&#xff0c;又有离线安装运行的需求&#xff0c;那么怎么办呢&#xff1f;请跟…...

如何在 Go 中创建和部署 AWS Lambda 函数

AWS Lambda 是一个无服务器计算平台&#xff0c;您可以使用自己喜欢的编程语言编写代码&#xff0c;无需担心设置虚拟机。 您只需为 Lambda 函数的调用次数和运行时间&#xff08;毫秒&#xff09;付费。 我们大多数人都了解 JavaScript 和 Python&#xff0c;但它们的内存效率…...

【后端】【Django】Django 模型中的 `clean()` 方法详解:数据校验的最后防线

Django 模型中的 clean() 方法详解&#xff1a;数据校验的最后防线 在 Django 的模型系统中&#xff0c;我们经常使用字段级别的校验器&#xff08;validators&#xff09;来约束某个字段的取值范围。但当校验逻辑涉及多个字段之间的关系时&#xff0c;字段级别校验就无能为力…...

内存管理详解(曼波脑图超详细版!)

(✪ω✪)曼波来解答三连问啦&#xff01;准备好内存知识大礼包了吗&#xff1f;(≧∇≦)&#xff89; ━━━━━━━━━━━━━ ฅ^•ω•^ฅ ━━━━━━━━━━━ 一、内存分配详解 (๑>ᴗ<๑) (1) 栈内存 → 像便签纸&#x1f4dd; void calculate() {int a …...

【2025最新redis数据结构之Hypeloglog介绍】关于Hypeloglog

HyperLogLog (HLL) 算法深度解析 一、HLL 基本概念 HyperLogLog 是一种用于基数统计&#xff08;distinct counting&#xff09;的概率算法&#xff0c;能够在极小内存占用下&#xff08;通常只需几KB&#xff09;估算巨大数据集的基数&#xff08;不重复元素数量&#xff09…...

软考复习——知识点软件开发

开发模型 瀑布模型 各个活动规定为线性顺序连接的若干阶段的模型。是一种理想的现象开发模型&#xff0c;缺乏灵活性&#xff0c;无法理解软件需求不明确或不准确的问题。适用于需求明确的项目。 演化模型 从初始的原型逐步演化成最终软件产品&#xff0c;特别适用于对软件…...

关于AI:记忆、身份和锁死

作者&#xff1a;John Battelle 当生成式AI迎来投资热潮、产品发布和炒作高峰时&#xff0c;我们大多数人在奔向“下一个大事件”的过程中&#xff0c;忽略了一个深层次的缺陷。我们现在主流的AI产品和服务&#xff08;比如OpenAI、Google和Microsoft的产品&#xff09;都是通过…...

2024新版仿蓝奏云网盘源码,已修复已知BUG,样式风格美化,可正常运营生产

说起网盘源码&#xff0c;网络上出现的也很多&#xff0c;不过可真正正能够用于运营的少之又少。今天将的蓝奏云网盘源码&#xff0c;其实网络上也有&#xff0c;不过是残缺版&#xff0c;bug很多。我今天分享的仿蓝奏云模板是经过长时间测试修复后的源码&#xff0c;源码实测可…...

OJ - 设计循环队列

622. 设计循环队列 - 力扣&#xff08;LeetCode&#xff09; 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则&#xff0c;并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可…...

实战指南:封装Faster-Whisper为FastAPI接口并实现高并发处理-附整合包

实战指南&#xff1a;封装Faster-Whisper为FastAPI接口并实现高并发处理-附整合包 「faster-whisper」 链接&#xff1a;https://pan.quark.cn/s/d4ddffb1b196 标题下面提供一个完整的示例&#xff0c;说明如何使用 FastAPI 封装 faster-whisper 接口&#xff0c;对外提供 RES…...

011数论——算法备赛

素数筛 给定n, 求2~n内的所有素数 埃氏筛 利用素数的定义&#xff0c; 输出素数2&#xff0c;然后筛掉2的倍数&#xff0c;得 {2,3,5,7,9,11,13&#xff0c;…}输出素数3&#xff0c;然后筛掉3的倍数&#xff0c;得 {2,3,5,7,11,13&#xff0c;…} 继续上述步骤&#xff0…...

C语言之机房机位预约系统

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 C语言之机房机位预约系统 目录 博客&#xff1a;机房机位预约系统设计与实现 系统功能概述…...

中间件--ClickHouse-14--案例-3-其他案例思路概述

1、广告投放效果分析 案例背景&#xff1a; 一家广告平台需要分析广告的点击、曝光、转化等数据&#xff0c;以优化广告投放策略并提升 ROI&#xff08;投资回报率&#xff09;。 解决方案&#xff1a; 数据接入&#xff1a;将广告投放相关的数据&#xff08;如曝光、点击、…...

saas是什么?它做什么用的。及和Paas和laas有什么区别

Saas是什么&#xff1f;它做什么用的。及和Paas和laas有什么区别 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是行业内容。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ 文…...

Qt基础005(文件操作后续)

文章目录 QFileDialogQFileDialog打开开发案例QFileDialog保存开发案例实现文件打开功能开发流程打开功能优化 QComboBoxQListExtraSelection 简介 QFileDialog QFileDialog打开开发案例 #include <QApplication> #include <QFileDialog> #include <QStringLi…...

松灵Cobot Magic双臂具身遥操机器人(基于ROS的定位建图与协同导航技术)

摘要 本文以CobotMagic可移动协作机器人为研究对象&#xff0c;从硬件架构设计、软件系统架构、多传感器融合定位建图系统、智能导航系统协同机制四个维度&#xff0c;深入解析机器人系统工作原理。重点研究多传感器融合定位建图系统实现原理&#xff0c;结合实测数据验证系统…...

AI——神经网络以及TensorFlow使用

文章目录 一、TensorFlow安装二、张量、变量及其操作1、张量Tensor2、变量 三、tf.keras介绍1、使用tf.keras构建我们的模型2、激活函数1、sigmoid/logistics函数2、tanh函数3、RELU函数4、LeakReLu5、SoftMax6、如何选择激活函数 3、参数初始化1、bias偏置初始化2、weight权重…...

实现对象之间的序列化和反序列化

1.什么是序列化&#xff1f; 在项目的开发中&#xff0c;为了让前端更好的分析后端返回的结果&#xff0c;我们一般会将返回的信息进行序列化&#xff0c;序列化就是将返回对象的状态信息转换为一种标准化的格式&#xff0c;方便在网络中传输也方便打印日志时号观察&#xff0…...

QML中日期处理类

在 QML 中处理日期和时间主要使用 JavaScript 的 Date 对象以及 Qt 提供的一些相关功能。以下是常用的日期处理方式&#xff1a; 1. JavaScript Date 对象 QML 可以直接使用 JavaScript 的 Date 对象&#xff1a; qml // 创建当前日期时间 var currentDate new Date()// 创…...

基于docker-java封装的工具类

基于docker-java封装的工具类 背景环境工具类 背景 写OJ系统时需要用docker作为代码沙箱使用&#xff0c;顺手封装了一个工具类&#xff0c;给自己做个笔记&#xff0c;如果可以的话也希望帮助到其他人。 环境 docker 26.1.4docker-java 3.4.2docker-java-transport-httpcli…...

windows docker desktop 无法访问容器端口映射

为什么使用docker desktop访问映射的端口失败&#xff0c;而其端口对应的服务是正常的&#xff1f; 常见问题&#xff0c;容器的防火墙没有关闭&#xff01;&#xff01;&#xff01; 以centos7为例&#xff0c;默认情况下防火墙处于开启状态&#xff1a; 这下访问就OK了...

ReentrantReadWriteLock读写锁

一、锁的分类 这里不会对Java中大部分的分类都聊清楚&#xff0c;主要把 **互斥&#xff0c;共享** 这种分类聊清楚。 Java中的互斥锁&#xff0c;synchronized&#xff0c;ReentrantLock这种都是互斥锁。一个线程持有锁操作时&#xff0c;其他线程都需要等待前面的线程释放锁…...