编程面试_动态规划
题目1 最大连续乘积子串
题目描述给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就是说,上述数组中,3 0.5 8这3个数的乘积30.58=12是最大的,而且是连续的。考虑到乘积子序列中有正有负也还可能有0,我们可以把问题简化成这样:数组中找一个子序列,使得它的乘积最大;同时找一个子序列,使得它的乘积最小(负数的情况)。因为虽然我们只要一个最大积,但由于负数的存在,我们同时找这两个乘积做起来反而方便。也就是说,不但记录最大乘积,也要记录最小乘积。假设数组为a[],直接利用动态规划来求解,考虑到可能存在负数的情况,我们用maxend来表示以a[i]结尾的最大连续子串的乘积值,用minend表示以a[i]结尾的最小的子串的乘积值,那么状态转移方程为:maxend = max(max(maxend * a[i], minend * a[i]), a[i]);minend = min(min(maxend * a[i], minend * a[i]), a[i]);初始状态为maxend = minend = a[0]。
参考代码如下:
double MaxProductSubString(double *a, int num){double MaxEnd = a[0];double MinEnd = a[0];double MaxResult = a[0];for(int i = 0; i < num; ++i){double end1 = MaxEnd * a[i], end2 = MinEnd * a[i];MaxEnd = max(max(end1, end2), a[i]);MinEnd = min(min(end1, end2), a[i]);MaxResult = max(MaxResult, MaxEnd);}return MaxResult;}// 动态规划求解的方法一个for循环搞定,所以时间复杂度为O(n)。
搜索算法中的老祖宗,深度和广度优先搜索算法。
广度优先(BFS Breadth-First Search)搜索
这个用形象的比喻,就像是地震波,从起点向外辐射,直到找到目标点。我们在实现的时候,一般采用队列来实现。广搜是一层一层往外遍历,寻找最短路径,其策略是采取队列的方法。这个算法的优点:1、简单。代码也就几十行;2、路径能找到最优解;不足:1、算法消耗的时间比较大,遍历的点会很多。广度优先搜索之所以能找到最优的路径,原因就是:每一次扩展的点,都是距离出发点最近、步骤最少的。如此这样递推,当扩展到目标点的时候,也是距离出发点最近的。这样的路径自然形成了最短的路线。
深度优先(DFS Depth-First Search)搜索
用俗话说就是不见棺材不回头。算法会朝一个方向(目标位置)进发,直到遇到边界或者障碍物,才改变方向。一般在实现的时候,我们采用递归的方式来进行,也可以采用模拟压栈的方式来实现。这个算法的好处就是实现简单,可能就十几行代码。不过问题也很明显,就是:1、路径可能不是最优解;2、寻路时间比较长。
数据结构----BFS和DFS详解 c++代码
A*算法 广度优先 + 启发式搜索 考虑距出发点距离 + 距目标点距离
正是由于广度优先搜索一层层的扩展,虽然让他找到了最优的路线,但是,他却很傻的走完了绝大多数格子,才找到我们的目标点。也就是,他只关注了当前扩展点和出发点的关系,而忽略了当前点和目标点的距离。如果,如果,如果……我们每扩展一个点,就踮起脚尖,看看诗和远方,找找我们要寻找的那个目标,是不是就有可能指引我们快速的去往正确的方向,而不用傻乎乎的一层层的发展了呢?答案是肯定的。A*算法相对广度优先搜索算法,除了考虑中间某个点同出发点的距离以外,还考虑了这个点同目标点的距离。这就是A*算法比广度优先算法智能的地方。也就是所谓的启发式搜索。
如果用f(M)表示:从起点S到终点E(经过M点)的距离,那他就可以表示成为两段距离之和,M为中间策略点
即:S→M的距离 + M→E的距离。如果我们用符号表示的话,就可以写成:f(M) = g(M) + h(M)。 我们扩展到M点的时候,S→M的距离就已经知道,所以g(M)是已知的。但是M到E的距离我们还不知道。如果我们能用某种公式,能大概预测一下这个距离,而这个预测的值又比较精确,我们是不是就能很精确的知道每一个即将扩展的点是否是最优的解路径上的点呢?
估算函数h(M)如何计算?
常见的距离计算公式有这么几种:1、曼哈顿距离:这个名字听起来好高端,说白了,就是上面我们讲的横向格子数+纵向格子数(折线段距离);2、欧式距离:这个名字听起来也很高端,说白了,就是两点间的直线距离sqrt((x1-x2)^2 + (y1-y2)^2)3、欧式距离平方: (x1-x2)^2 + (y1-y2)^2除了上述的距离计算公式以外,还有一些变种的距离计算公式,如:对角线距离等等。这个就在具体的问题中做具体的优化了。
不同估算函数对于结果的影响
1、当估算的距离h完全等于实际距离h'时,也就是每次扩展的那个点我们都准确的知道,如果选他以后,我们的路径距离是多少,这样我们就不用乱选了,每次都选最小的那个,一路下去,肯定就是最优的解,而且基本不用扩展其他的点。2、如果估算距离h小于实际距离h'时,我们到最后一定能找到一条最短路径(如果存在另外一条更短的评估路径,就会选择更小的那个),但是有可能会经过很多无效的点。曼哈顿距离\欧式距离极端情况,当h==0的时候,最终的距离函数就变成:f(M)=g(M)+h(M)=> f(M)=g(M)+0=> f(M)=g(M)这不就是我们的广度优先搜索算法嘛?! 他只考虑和起始点的距离关系,毫无启发而言。 3、如果估算距离h大于实际距离h'时,有可能就很快找到一条通往目的地的路径,但是却不一定是最优的解。这种情况就是h值大于等于实际距离的,明显他扩展的点很少,不过找到的路径却不是最短路径。欧式距离平方
Dijkstra(迪杰斯特拉)算法
算法特点:
迪科斯彻算法使用了 广度优先搜索 BFS
解决 赋权的有向图 或者 无向图的 单源最短路径问题,算法最终得到一个最短路径树。
该算法常用于路由算法或者作为其他图算法的一个子模块。
算法的思路
Dijkstra算法采用的是一种贪心的策略,声明一个数组dis来保存源点s 到各个顶点m 的最短距离 和一个保存已经找到了最短路径的顶点的集合:T,初始时:原点s 的路径权重被赋为 0 (dis[s] = 0)。若对于顶点 s 存在能直接到达的边(s,m) 另一个顶点为m则把dis[m]设为w(s, m),即单个路径边上的权重值,同时把所有其他(s不能直接到达的)顶点的路径长度设为无穷大。初始时,短路集合T 只有 顶点s。 然后,从dis数组选择最小值,则该值就是 源点s 到该值对应的顶点 m 的最短路径,并且把该点加入到 短路集合T中,OK,此时完成一个顶点, 然后,我们需要看看新加入的顶点是否可以到达其他顶点,并且看看通过该顶点到达其他点的路径长度是否比源点直接到达短,如果是,那么就替换这些顶点在dis中的值。 然后,又从dis中找出最小值,重复上述动作,直到T中包含了图的所有顶点。
示例:
顶点数 边数6 8起点 终点 权重值1 3 101 5 301 6 1002 3 53 4 504 6 105 4 205 6 60图的邻接矩阵为:∞ ∞ 10 ∞ 30 100 v1节点直接到达其他节点的距离∞ ∞ 5 ∞ ∞ ∞∞ ∞ ∞ 50 ∞ ∞∞ ∞ ∞ ∞ ∞ 10 ...∞ ∞ ∞ 20 ∞ 60∞ ∞ ∞ ∞ ∞ ∞ v6节点直接到达其他节点的距离新建dis 向量(从v1到达各个点 经过的最短距离)dis = {0, ∞, 10, ∞, 30, 100}解法:步骤1:v1 到 v3 路径最短 dis[2] = 10, 下标从0开始 除去dis[0]外最小的 为dis[2] 到第三个顶点 v3v3可以到达v4,v1->v3->v4 距离为 10 + 50 = 60而从v1直接到v4,v1->v4,距离为无穷大,dis[3] = 60dis = {0, ∞, 10, 60, 30, 100}因此 dis[3]要更新为 60。这个过程有个专业术语叫做“松弛”。即 v1顶点到 v4顶点的路程即 dis[3],通过 <v3,v4> 这条边松弛成功。这便是 Dijkstra 算法的主要思想:通过“边”来松弛v1顶点到其余各个顶点的路程。步骤2:我们从除去 dis[0] 、 dis[2]中选择最小的 为 dis[4] = 30 到第五个顶点 v5v5 可以到达 v4, v1->v5->v4 距离为 30 + 20 = 50,而,从v1->v4为 60 > 50 ,则 dis[3] 被更新为 50另外 v5 也可以到达 v6,而v1 -> v5 -> v6 = 30 + 60 = 90而,从v1 -> v6 为 100则,dis[5] 被更为 90dis = {0, ∞, 10, 50, 30, 90}步骤3:我们再从 除去 dis[0] 、 dis[2]、 dis[4] 中选择最小的为 dis[3] = 50 到第四个顶点 v4而v4 可以到达 v6,v1 -> v4 -> v6 距离为 50 + 10 = 60而v1 -> v6 = 90 > 60 ,则dis[5] 被更新为 60dis = {0, ∞, 10, 50, 30, 60}步骤4:然后,从除去 dis[0] 、 dis[2]、 dis[4]、dis[3] 中选取最小的为 dis[5] = 60 到第六个顶点 v4而 v6 到达不了其他地方,更新不了
Dijkstra算法的代码实现(c++)
Dijkstra.h 头文件的代码
// Dijkstra.h#pragma once//#pragma once是一个比较常用的C/C++杂注,//只要在头文件的最开始加入这条杂注,//就能够保证头文件只被编译一次。#include<iostream>#include<string>using namespace std;/*本程序是使用Dijkstra算法实现求解最短路径的问题采用的邻接矩阵来存储图*///记录起点到每个顶点的最短路径的信息struct Dis {string path;//字符串路径 int value; //最短路径值bool visit; //已经找到最短路径的标记 Dis() { //结构体初始化函数
visit = false;
value = 0;
path = “”;
}
};
// 自定义类的声明
class Graph_DG {
private:// 私有变量
int vexnum; //图的顶点个数 v1,v2,…,v6
int edge; //图的边数
int **arc; //邻接矩阵 二维数组 指针的指针
Dis * dis; //记录各个顶点最短路径的信息
public://共有函数方法 Graph_DG(int vexnum, int edge); // 默认构造函数 与类同名~Graph_DG(); // 销毁时自动执行的析构函数 构造函数前 + ~//顶点从1开始编号 而权重必须大于0 bool check_edge_value(int start, int end, int weight); // 判断我们每次输入的的边的权重信息是否合法void createGraph(); //创建图void print(); //打印邻接矩阵void Dijkstra(int begin); //求最短路径void print_path(int); //打印最短路径};
Dijkstra.cpp 源文件的代码
// Dijkstra.cpp 源文件的代码
#include"Dijkstra.h"// 包含声明 头文件
//默认构造函数Graph_DG::Graph_DG(int vexnum, int edge) {//初始化顶点数和边数this->vexnum = vexnum;this->edge = edge;//为邻接矩阵开辟空间和赋初值arc = new int*[this->vexnum];// 指针数组 顶点数 * 顶点数的 二维数组dis = new Dis[this->vexnum]; // 最短路径 向量for (int i = 0; i < this->vexnum; i++) {arc[i] = new int[this->vexnum];// 行数组for (int k = 0; k < this->vexnum; k++) {arc[i][k] = INT_MAX; //邻接矩阵初始化为无穷大}}}//析构函数Graph_DG::~Graph_DG() {delete[] dis;// delete[] 删除 最短路径 变量 数组for (int i = 0; i < this->vexnum; i++) {delete this->arc[i];// 删除邻接矩阵 每一行的数组}delete arc; // 删除邻接矩阵 数组}// 判断我们每次输入的的边的信息是否合法 权重必须大于0 //顶点从1开始编号bool Graph_DG::check_edge_value(int start, int end, int weight) {if (start<1 || end<1 || start>vexnum || end>vexnum || weight < 0) {return false;}return true;}//创建初始邻接图 根据输入信息void Graph_DG::createGraph() {cout << "请输入每条边的起点和终点(顶点编号从1开始)以及其权重" << endl;int start;int end;int weight;int count = 0;// 输入边数记录while (count != this->edge) {// 0~edge-1cin >> start >> end >> weight;// 得到 起点终点 对应权重//首先判断边的信息是否合法while (!this->check_edge_value(start, end, weight)) {cout << "输入的边的信息不合法,请重新输入" << endl;cin >> start >> end >> weight;}//对邻接矩阵对应上的点赋值arc[start - 1][end - 1] = weight;//无向图添加上这行代码//arc[end - 1][start - 1] = weight;++count;}}// 打印邻接矩阵void Graph_DG::print() {cout << "图的邻接矩阵为:" << endl;int count_row = 0; //打印行的标签int count_col = 0; //打印列的标签//开始打印while (count_row != this->vexnum) {count_col = 0;while (count_col != this->vexnum) {if (arc[count_row][count_col] == INT_MAX)cout << "∞" << " ";elsecout << arc[count_row][count_col] << " ";++count_col;// 列 下标}cout << endl;++count_row;// 行 下标}}// Dijkstra 求最短路径void Graph_DG::Dijkstra(int begin){//【1】首先初始化我们的dis数组int i;for (i = 0; i < this->vexnum; ++i) {//设置当前的路径dis[i].path = "v" + to_string(begin) + "-->v" + to_string(i + 1);dis[i].value = arc[begin - 1][i];// v11 v12 v13 v14 v15 v16的值}//设置起点到起点的路径为0dis[begin - 1].value = 0;dis[begin - 1].visit = true;int count = 1;//计算剩余的顶点的最短路径( 剩余this->vexnum-1个顶点)while (count != this->vexnum) {// 【2】找到 dis数组内的最小路径值// temp用于保存当前dis数组中最小的那个下标// min记录的当前的最小值int temp=0;// int min = INT_MAX;for (i = 0; i < this->vexnum; i++) {if (!dis[i].visit && dis[i].value < min) {min = dis[i].value;// 最小值temp = i;// 最小下标}}//cout << temp + 1 << " "<<min << endl;//把temp对应的顶点加入到已经找到的最短路径的集合中dis[temp].visit = true;// 找到标志++count;// 遍历该节点for (i = 0; i < this->vexnum; i++) {//注意这里的条件arc[temp][i]!=INT_MAX必须加,不然会出现溢出,从而造成程序异常if (!dis[i].visit && arc[temp][i] !=INT_MAX && (dis[temp].value + arc[temp][i]) < dis[i].value) {//如果新得到的边可以影响其他为访问的顶点,那就就更新它的最短路径和长度 v1->v4->v5 < v1->v5 更新dis[i].value = dis[temp].value + arc[temp][i];dis[i].path = dis[temp].path + "-->v" + to_string(i + 1);// 记录路径}}}}//打印最短路径void Graph_DG::print_path(int begin) {string str;str = "v" + to_string(begin);cout << "以"<< str <<"为起点的图的最短路径为:" << endl;for (int i = 0; i != this->vexnum; i++) {if(dis[i].value != INT_MAX)cout << dis[i].path << "=" << dis[i].value << endl;else {cout << dis[i].path << " 是无最短路径的. " << endl;}}}
相关文章:
编程面试_动态规划
题目1 最大连续乘积子串 题目描述给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就…...
ip地址可以精确定位吗
在互联网时代,IP地址的重要性不言而喻。作为网络通信的基础,IP地址用于标识每一台连接到互联网的设备。然而,传统的IP地址定位方式仅能粗略地确定设备的大致位置,无法实现精确定位。那么,IP地址能否实现精确定位呢&…...
Xamarin体验:使用C#开发iOS/Android应用
http://www.cnblogs.com/lwme/p/use-xamarin-develop-Android-iOS-app.html Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发。 简介 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:h…...
聊聊druid连接池的监控
序 本文主要研究一下druid连接池的监控 init com/alibaba/druid/pool/DruidDataSource.java public void init() throws SQLException {//......registerMbean();//...... }DruidDataSource的init方法会执行registerMbean registerMbean com/alibaba/druid/pool/DruidData…...
CentOS 7 安装 Docker 的详细步骤
文章目录 Docker简介1.更新2.安装必要的软件包3.添加Docker仓库4.安装5.安装后的一些常规设置及常用的命令5.1 启动 Docker5.2 Docker 在系统启动时自动运行5.3 运行一个 Hello World 镜像5.4 查看docker运行状态5.5 docker ps5.6 查看docker版本 6.安装种常见的错误错误1:yum-…...
竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别
文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…...
数据结构之【泛型】
泛型:定义阶段不明确具体类型,产生对象时明确具体类型。 //Object是Java中的最高参数统一化,能够接受所有的引用类型; //有了包装类的自动拆装箱之后,Object还能够接收基本类型数值(自动装箱) …...
华为ac无线侧命令行配置思路和步骤
无线侧配置思路: Ap和ac在同一个广播域内,不用配置 option 43 source 源ip回包哪个模式都得配置 Cli配置业务模版流程: 1、 AC控制器上全局配置capwap回包接口地址 1、配置ssid:wifi名称 2、配置安全模版:用户连接密码…...
十六)Stable Diffusion教程:出图流程化
今天说一个流程化出图的案例,适用很多方面。 1、得到线稿,自己画或者图生图加线稿lora出线稿;如果想sd出图调整参数不那么频繁细致,则线稿的素描关系、层次、精深要表现出来,表现清楚。 2、文生图,seed随机…...
SpringBoot全局异常处理源码
SpringBoot全局异常处理源码 一、SpringMVC执行流程二、SpringBoot源码跟踪三、自定义优雅的全局异常处理脚手架starter自定义异常国际化引入封装基础异常封装基础异常扫描器,并注册到ExceptionHandler中项目分享以及改进点 一、SpringMVC执行流程 今天这里叙述的全…...
设计模式——7. 装饰者模式
1. 说明 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不改变对象接口的前提下,动态地将新行为附加到对象上。这种模式是通过创建一个包装(或装饰)对象,将要被装饰的对象包裹起来,从而实现对原有对象功能的增强和扩展。 装饰者模式的主要特点包括:…...
安卓玩机-----反编译apk 修改apk 去广告 去弹窗等操作中的一些常识
安卓机型app的编译与反编译 apk文件的简单说明与解析 -安卓修改apk apk的组成和编译 一 电脑端几种反编译apk工具操作步骤解析 前面几个博文有说明关于反编译apk和apk架构等有些常识.今天对以上做个补充。初学者记住一点。对于一个apk文件使用压缩软件7zip打开可以查看到文件…...
Hoeffing不等式
在李航老师的统计学习方法(第一版中) H o e f f i n g 不等式 Hoeffing不等式 Hoeffing不等式是这样子给出的 设 X 1 , X 2 , . . . , X N X_1,X_2,...,X_N X1,X2,...,XN是独立随机变量,且 X i ∈ [ a i , b i ] , i 1 , 2 , . . . ,…...
ffmpeg解复用指定pid转推udp
命令 ffmpeg -re -i udp://224.2.2.2:4003?fifo_size1024000 -map #5001 -acodec copy -flush_packets 1 -f mpegts udp://192.168.2.62:5161 ffmpeg -re -i udp://224.2.2.2:4003?fifo_size1024000 -map #5001 -acodec copy -flush_packets 1 -f mpegts udp://192.16…...
Vue组件通信方式
1.props通信 1.1在 Vue 2 中使用 props 通信 注意:props传递的数据是只读的,子组件修改,不会影响父组件 1.1.1.定义 props 在子组件中使用 props 选项来定义要接收的属性 // 子组件 <script> export default {props: {message: String} } </script>1.1.2.传递…...
redis-设置从节点
节点结构 节点配置文件 主节点 不变 6380节点 port 6380 slaveof 127.0.0.1 63796381节点 port 6381 slaveof 127.0.0.1 6380启动 指定配置文件的方式启动 D:\jiqun\redis\Redis-6380>redis-server.exe redis.windows.conf启动时,会触发同步数据命令 主节点…...
k8s-实战——基于nfs实现动态存储
部署nfs服务 基于Centos7.9版本创建动态存储注意k8s版本应低于v1.24版本高k8s版本ServiceAccount需要手动创建secrets并关联相关sa部署流程 创建NFS共享服务、采用单独的节点用于nfs服务独占安装nfs-utils和rpcbindnfs客户端和服务端都安装nfs-utils包通过部署化脚本安装k8s集群…...
【广州华锐互动】鱼类授精繁殖VR虚拟仿真实训系统
随着科技的不断发展,虚拟现实技术在各个领域的应用越来越广泛。在养殖业中,VR技术可以帮助养殖户进行家鱼授精实操演练,提高养殖效率和繁殖成功率。本文将介绍利用VR开展家鱼授精实操演练的方法和应用。 首先,我们需要了解家鱼授精…...
RocketMQ Promethus Exporter
介绍 Rocketmq-exporter 是用于监控 RocketMQ broker 端和客户端所有相关指标的系统,通过 mqAdmin 从 broker 端获取指标值后封装成 87 个 cache。 警告 过去版本曾是 87 个 concurrentHashMap,由于 Map 不会删除过期指标,所以一旦有 la…...
Kafka收发消息核心参数详解
文章目录 1、从基础的客户端说起1.1、消息发送者主流程1.2、消息消费者主流程 2、从客户端属性来梳理客户端工作机制2.1、消费者分组消费机制 1、从基础的客户端说起 Kafka提供了非常简单的客户端API。只需要引入一个Maven依赖即可: <dependency><groupId…...
Springboot中Aop的使用
Springboot中使用拦截器、过滤器、监听器-CSDN博客 相比较于拦截器,Spring 的aop则功能更强大,封装的更细致,需要单独引用 jar包。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-b…...
创建vue3项目、链式调用、setup函数、ref函数、reactive函数、计算和监听属性、vue3的生命周期、torefs的使用、vue3的setup写法
1 创建vue3项目 # 两种方式- vue-cli:vue脚手架---》创建vue项目---》构建vue项目--》工具链跟之前一样- vite :https://cn.vitejs.dev/-npm create vuelatest // 或者-npm create vitelatest一路选择即可# 运行vue3项目-vue-cli跟之前一样-vite 创建的…...
搭建好自己的PyPi服务器后怎么使用
当您成功搭建好自己的 PyPI 服务器后,您可以使用以下步骤来发布和使用您的包: 打包您的代码: 首先,将您的 Python 项目打包成一个发布包。确保您已经在项目根目录下创建了 setup.py 文件,并按照正确的格式填写了项目信…...
Vue3 中使用provide和reject
1、provide 和reject 可以实现一条事件线上的 父传子,父传孙等;相比较 props emits 仅限与父子传参更方便,相较于pinia书写更简单,但是需要注意使用响应式,如果是非响应式的会导致页面更新不及时 父组件 <templat…...
大数据flink篇之一-基础知识
一、起源 2010至2014年间,由柏林工业大学、柏林洪堡大学和哈索普拉特纳研究所联合发起名Stratosphere的研究项目。2014年4月,项目贡献给Apache基金会,成为孵化项目。更名为Flink2014年12月,成为基金会顶级项目2015年9月ÿ…...
No140.精选前端面试题,享受每天的挑战和学习
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...
Oracle 11g_FusionOS_安装文档
同事让安装数据库,查询服务器信息发现操作系统是超聚变根据华为openEuler操作系统更改的自研操作系统,安装过程中踩坑不少,最后在超聚变厂商的技术支持下安装成功,步骤可参数该文。 一、 安装环境准备 1.1 软件下载 下载地址:…...
Linux驱动实现IO模型
在Linux系统分为内核态和用户态,CPU会在这两个状态之间进行切换。当进行IO操作时,应用程序会使用系统调用进入内核态,内核操作系统会准备好数据,把IO设备的数据加载到内核缓冲区。 然后内核操作系统会把内核缓冲区的数据从内核空…...
wsl2 更新报错问题解决记录
1、问题 win10 中安装的 wsl2,启动 docker desktop 时提示 wsl2 有问题: 于是点击推荐的地址连接到微软,下载 wsl2 的更新文件。之后运行,又报错: 更新被卡住。 2、解决方法 WinR 输入 cmd 打开命令行窗口&#x…...
突破算法迷宫:精选50道-算法刷题指南
前言 在计算机科学和编程领域,算法和数据结构是基础的概念,无论你是一名初学者还是有经验的开发者,都需要掌握它们。本文将带你深入了解一系列常见的算法和数据结构问题,包括二分查找、滑动窗口、链表、二叉树、TopK、设计题、动…...
陕西响应式网站建设公司/网站推广优化怎样
本篇文章给大家带来的内容是关于vue和iview以及less如何实现换肤的功能(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。项目搭建用的vue—cli,css框架选择的iview1、首先安装less支持npm install --save-…...
成都有几家做网站的公司/百度站长工具收费吗
springboot学习比较总结:https://pan.baidu.com/s/1dYwvpk spring STS工具安装:https://blog.51cto.com/qinbin/2067347Java系统部署脚本:当想把程序放到后台运行: nohup ./your_command &部署Java:1. 在eclips…...
手机网站建设比较好的公司/临沂seo公司
最近在看JVM虚拟机,想要搞懂虚拟机的内部运行机制,指令码的分析是必不可少的!来看一个简单的测试小程序,看看里面的运行机制!这里就需要借助javap命令去查看了! 第一步,创建一个简单的测试程序…...
sae wordpress 3.9/建网站的详细步骤
注意:本文是在乌班图和Windows10环境下配置,Centos与乌班图略有不同,就是Centos的MySQL配置文件路径为/etc/my.cnf,其他操作一致1. 主从同步的定义主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时&#x…...
洛阳建网站公司/学it学费大概多少钱
http://acm.hdu.edu.cn/showproblem.php?pid1212 题目大意: 给你一个长度不超过1000的大数A,还有一个不超过100000的B,让你快速求A % B。 什么?你说用大数的模板?那太慢了! 思路: 举个例子&…...
国外电商网站如何建立/站长seo软件
我正在尝试使用python构建一个简单的加密。在这是加密:from Crypto.Cipher import AESfrom Crypto.Util.Padding import padfrom Crypto.Util.Padding import unpadBLOCK_SIZE 32def encrypt(message):obj AES.new(bThis is a key123, AES.MODE_CBC, bThis is an …...