嵌入式开发高频面试题——第一章 进程与线程(下)
1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解?1.2.1 什么是线程同步和互斥?⭐⭐⭐⭐⭐
同步:多个线程在协作时,某个线程需要等待其他线程完成某个任务后才能继续执行。通常用于确保任务按照预期的顺序执行。
互斥:用于防止多个线程同时访问共享资源,导致数据竞争或冲突。通过互斥锁来保证同一时刻只有一个线程可以访问资源。
1.2.2 线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?⭐⭐⭐⭐
线程同步与阻塞的关系:同步通常需要阻塞来等待某个条件的满足,因此同步操作常常导致线程阻塞。
同步一定阻塞吗?不一定。某些同步操作可以通过非阻塞机制来实现。
阻塞一定同步吗?不一定。阻塞是指线程因为某种原因无法继续执行,可能与同步无关(例如等待 I/O 完成)。
1.2.3 并发,同步,异步,互斥,阻塞,非阻塞的理解?⭐⭐⭐⭐⭐
并发:多个任务在同一时间段内交替执行。
同步:任务之间通过某种方式协调,确保按照特定的顺序执行。
异步:任务可以独立于其他任务执行,无需等待其他任务完成。
互斥:确保共享资源在任意时刻只被一个线程或进程访问。
阻塞:任务因为等待某个事件(如 I/O 操作)而暂停执行 ...
电力系统60870-5-103规约项目开发知识小结——积成电子
前言最近有一个103规约需要开发,在这个浩大的工程开始之前,先完善一下前辈开发的电力系统规约字段解析工具,它可以选择不同的规约类型,输入对应的规约报文,然后告诉你对应的字段是什么含义,我需要完善积成103规约的解析功能,在完善完这个小工具之后再进行103规约的开发。
下图是我刚开发出的解析通用分类服务的功能:
这个小工具大家如果有需要,可以后台私信我。
复习预编译条件判断123456789101112# 空指令,无任何效果#define 定义宏#undef 取消已定义的宏#if 如果给定条件为真,则编译下面代码#ifdef 如果宏已经定义,则编译下面代码#ifndef 如果宏没有定义,则编译下面代码#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #elif预处理指令等效于#else和#if指令的综合#endif 结束一个#if……#else条件编译块#error 停止编译并显示错误信息//结构体访问用点,指针访问用箭头。
在电力系统中有很多协议会用到APDU这个东西,比如101、102、103 ...
嵌入式开发高频面试题——第一章 进程与线程(上)
1.1 进程线程的基本概念1.1.1 什么是进程,线程,彼此有什么区别?⭐⭐⭐⭐⭐
进程:是操作系统分配资源和调度任务的基本单位。它包含了程序代码、数据、堆栈、文件描述符、内存地址空间等资源。每个进程有一个独立的内存空间,它们之间的通信比较困难。进程的切换开销较大,因为切换进程时需要保存和恢复上下文信息(如寄存器状态、地址空间等)。
线程:是进程中的一个执行流,是 CPU 调度的基本单位。线程共享进程的资源(如内存、文件描述符等),但每个线程有独立的栈和寄存器。线程之间的切换开销相对较小,因为它们共享同一个进程的内存空间。
区别:
进程有独立的内存空间,线程共享进程的内存。
进程之间的通信较复杂(如通过 IPC 机制),而线程之间的通信较为简单。
进程切换开销大,线程切换开销小。
1.1.2 多进程、多线程的优缺点?⭐⭐⭐⭐
多进程:
优点:
稳定性高,进程间互不影响,某个进程崩溃不会影响其他进程。
安全性高,进程间的资源是隔离的。
缺点:
创建和销毁进程的开销较大。
进程间通信(IPC)复杂。
多线程:
优点:
线程间通信方便,线程共享进程资源,创建线程开销较 ...
解决hexo图片不显示问题
我的hexo+butterfly+github一言难尽啊。
不久前的一周,我像往常一样,闲来无事打开CSDN消遣,虽然行业内流传着,CSDN就是垃圾的说法,但是秉持着存在即合理和善待的原则,我还是会光顾一下,我静静地看着我原创的七十多篇文章,以及两百多个粉丝,不仅感叹岁月蹉跎。
回想大学时无数个日夜,眉头紧锁地调试程序改BUG,热情爆棚,这BUG啊一改就是一宿,第二天听闻学长学姐的“谏言”,一定要坚持写博客,不管写什么,只要写就行,改BUG这种也能写成博客,这样在你找工作的时候,hr会对你另眼相待的,这对于我这种间接性迷茫的半吊子来说,如雪中送炭,他们说的话我深以为然。
知者,行也。我开始每周都至少写两篇文章,发表在CSDN,然后天天看着那几个赞傻乐,从0个粉丝,慢慢地,到了两百个粉丝。
写了一阵子,学长学姐又“谏言”说最好搭建一个自己的博客,这样更显得自己“热爱”,我再一次深以为然,然后开始了我的hexo+butterfly+github之旅。
在我苦苦征战了三天三夜之后,我的博客终于迎来了“首秀”,当时正值算法期末考试,我咔咔一顿写,完成了一篇名为“算法期末复习”的博客,可谓是图文 ...
我喜欢你
我还是很喜欢你,像风走了八千里,不问归期。
我还是很喜欢你,像云追着风,不问所起。
我还是很喜欢你,像雨洒落在热带与极地,不远万里。
我还是很喜欢你,像雪肆虐大地,茫茫无际。
我还是很喜欢你,像太阳升了又落去,无论朝夕。
我还是很喜欢你,像群星耀过亘古,不曾甘熄。
我还是很喜欢你,像柳动蝉鸣日落潮汐,不忍离去/不能自已。
我还是很喜欢你,像月光洒满天地,温柔惬意。
我还是很喜欢你,像花朵在枝头尽情绽放,不问飘零。
我还是很喜欢你,像蒲公英飘散,不曾歇息。
我还是很喜欢你,像盛夏树梢上的蝉鸣,乐此不疲。
我还是好喜欢你,像秋雨渗透大地,默默无息
我还是很喜欢你,像落英纷纷而下,不问归期。
我还是很喜欢你,像清风拂皱春水,余波未平。
我还是很喜欢你,像鸿雁北归山河,义无反顾。
我还是很喜欢你,像鲸沉于海底温柔呼吸,痴极嗔极。
我还是很喜欢你,像星辰奔波亿万年黑夜,不诉怨语。
我还是很喜欢你,像泛黄书本上的故事,依然字迹清晰。
我还是很喜欢你,像高空的被融化的雨,点点滴滴历历在目。
我还是很喜欢你,像庭院里那株海棠落了又开,周而复始。
我还是很喜欢你,像山峰上的积雪无论世间怎样变换,依然坚持 ...
记录:第一次使用Chat-GPT解决毕设中的BUG
前言 最近在玩chat-GPT,也在研究毕业设计,但是因为论文的课题是深度学习和关系抽取相关的,第一次接触,
所以跑代码的过程中遇到了BUG,搜索引擎搜了好久没找到,有点泄气,忽然想到了GPT。
解决过程 出人意料。竟然用chat-GPT解决了好多BUG,给大家分享一个解决过程,这哥们太顶了。
我先是抛给他我的报错信息,问他如何解决。
他进行了回答,然后我用他的方法进行修改,他的回答说我需要实现这个函数,但是我已经实现了,之后我告知他我已实现此函数,依旧报错,如何解决呢
我按着它的回答先是看了一眼参数的设置发现没有问题,接着添加了一些输出语句,一运行并没有打印结果。
我推测应该是完全没有进入到函数中,然后用了它给的默认的函数,发现报错信息变为了“ index 1 is out of bounds for dimension 1 with size 1” ,我便知道解释器识别了默认函数,但是我自定义的函数并没有识别。
我在想是不是自定义的函数有点问题(毕竟是github上pull来的),我想了想,何不告诉它这个函数的作用,让它帮我写这个函 ...
韩顺平老师的Linux基础课(复习笔记)
唯手熟尔今天听了韩老师的课程,深受启发啊!!!卖油翁的“我亦无他,唯手熟尔”,只是手法熟练罢了!!还有老黄牛的坚持,别人把时间都放在努力上,而我把时间放在选择上,还习惯于放弃,这是极不可取的,认定一件事,就应该坚持!!!
安装虚拟机一开始是比较简单的软件安装与虚拟机创建手动分区时,boot占1G,swap占2G,根目录/占17G,其中boot与根目录都选标准分区和ext4,swap选标准分区和swap。在实际的开发环境时,要勾选kdump哦,而且实际开发时root的密码一定要复杂一点,介绍一个随机生成密码网址,linux建议登录时用权限比较低的用户登录,所以还要设置一个用户名和密码哦然后韩老师讲了网络连接的桥接模式和NAT模式桥接模式是说我们创建的虚拟机也会占用我们网段中的一个IP,主机多了会造成IP冲突的问题NAT是说我会在主机处生成一个虚拟网卡,它和创建的虚拟机的IP是 一个网段的但是与我主机的ip不是一个网段,当我用虚拟机访问其他主机是会发生地址转换,这便是NAT
然后讲了虚拟机的克隆,用文件夹复制或者用VM克隆(记得关闭正在运行的linux系统)然后是虚拟机快照,就是回到虚拟机 ...
phpMyAdmin中的MYSQL服务打不开?| 无法登录DVWA 的问题 | Illegal mix of collations for operation ‘UNION‘
phpMyAdmin中的MYSQL服务打不开?打开PHPStudy之后点击mysql服务启动之后,会自动关闭,也就是无法正常启动,如何解决这个问题呢?网上看了很多教程说是端口号冲突,然后我用那个方法无法正常解决我的问题,然后就自己捣鼓了一下,可以正常打开了
解决方法如下:不过使用 这个方法有个前提条件是你的任务管理器中有mysqld.exe进程然后按照一下步骤进行操作:
打开任务管理器找到mysqld.exe,右击打开文件所在位置
将任务管理器中的mysqld.exe进程结束
启动PHPstudy中的MySQL服务,再打开mysqld.exe
无法登录DVWA 的问题最后发现原来是账号和密码写错了,DVWA的默认账号和密码是admin/password,结果我直接用数据库的密码了emmm
dvwa中SQL注入出现Illegal mix of collations for operation ‘UNION’问题在输入框输入
11' union select 1,column_name from information_schema.columns where table_n ...
海南大学算法设计与分析--期末复习
引言快要期末考试啦,对算法做一个总结,以备自己后续的学习。
看之前可以先重点看看目录,这样可以明确这篇文章的结构,并且迅速找到需要的知识
算法基础知识算法的五个特性:(必考)
输入
输出
有穷
可行
确定
常用的描述算法的方法:
自然语言
流程图
伪代码
程序设计语言
时间复杂度: 概念:
O(n):用来描述增长率的上限
Ω(n):用来描述增长率的下限
最优算法:大Ω符号常常与大O符号配合以证明某问题的一个特定算法是该问题的最优算法,或是该问题中的某算法类中的最优算法。一般情况下,如果能够证明某问题的时间下界是Ω(g(n))来求解该问题的任何算法,都认为是求解该问题的最优算法
主定理:
习题:
基本的算法设计技术分治法与减治法基本思路: 分治法:将一个难以直接解决的大问题划分成一些规模较小的子问题,分别求解各个子问题,然后将各个子问题的解合并。分为三步:划分、求解子问题、合并。
减治法:将一个难以直接解决的大问题划分为若干子问题,但是这些子问题不需要分别求解,只需求解其中的一个子问题,因而也就无需对子问题的解进行合并。
同与异:同:都需要划分子问题 ...
详解动态规划解决01背包问题
问题描述有n个物品,它们有各自的容量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?
假设我们有四个物品,背包的容量为8
物品1的重量为2,价值为3.
…
读了题目我们稍作思考,不难发现,若先不管价值多少,那么每个物品它要么放在背包中,要么不放在背包中。(注意,这个思路很重要,可以说动态规划思路的启蒙点就是这个)。那么我们可以按着顺序把物品1到物品4依次尝试放入背包中。
首先明确几个定义:
value[i]:代表第i个物品的价值
weight[i]:代表第i个物品的体积(重量,体积,容量其实说的是一回事)
j表示为此时的背包容量
dp[i] [j]: 代表在前i个物品中选取物品放入容量为j的背包中,此时所选取的物品的价值之和
例如dp[ i-1 ] [ j ]表示为:在前i-1个物品中的选取物品放入容量为j的背包中,此时所选取的物品的价值之和
再例如dp[ 4 ] [ 8 ]表示为:在前4个物品中的选取物品放入容量为8的背包中,此时所选取的物品的价值之和(这便是上面的例题)
那可以从几个方向可以得到dp[4] [8]呢?也就是从哪几个方向得到这个最大值?
确定递 ...