自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(815)
  • 资源 (3)
  • 收藏
  • 关注

原创 dart实现单client连接的grpc server (以ip地址作判断)

如标题,假设现在已有grpc client/server程序。我这里的逻辑比较简单,基于ip地址的简单限制访问,但是允许来自一个ip地址的多次访问。在client发送grpc请求后,server端在服务类的实际操作函类前后加上连接管理类的判断,以及不符后的连接清除处理。导入需要的插件 .dart。增加一个连接管理的类。具体的实现逻辑在于,

2025-05-30 21:04:01 289

原创 linux 下 scp 传文件时保留文件夹中的原格式属性

服务器的 SSH 服务运行在非标准端口(如 2222、5000 等)。覆盖默认的 SSH 端口(22),连接到远程服务器的指定端口。需要保持文件的原始创建 / 修改时间(如日志文件、配置文件)。在传输文件时保留原文件的修改时间、访问时间和权限模式。避免因传输导致文件权限丢失(如可执行文件)。防火墙限制,仅开放了特定 SSH 端口。(大写 P):指定 SSH 端口。(小写 p):保留文件属性。

2025-05-22 18:42:13 260

原创 linux中sigint和sigterm的区别

当用户在终端运行一个进程,并且想要终止该进程时,可以通过按下 Ctrl + C 向进程发送 SIGINT 信号。:一般是由系统或其他进程发送的,用于请求目标进程正常终止。但与 SIGINT 不同的是,SIGTERM 设计的初衷是让进程有机会进行清理操作,比如保存数据、释放资源等,然后再正常终止。比如在系统关机时,会向所有正在运行的进程发送 SIGTERM 信号,让它们有机会进行清理工作后再终止。不过,进程可以捕获这个信号并自定义处理逻辑。:主要用于用户在终端手动终止正在运行的进程,是一种交互式的终止方式。

2025-04-30 18:46:26 479

原创 linux中systemctl stop 和 kill -9的区别

systemctl 是 Systemd 系统和服务管理器的命令行工具,systemctl stop 用于停止由 Systemd 管理的服务。例如,服务单元文件中可能定义了在停止服务时需要执行的预停止脚本、如何处理依赖关系等。:适用于停止由 Systemd 管理的服务,特别是那些需要优雅停止的服务。例如,停止一个 Web 服务器服务时,使用 systemctl stop 可以让服务器处理完正在进行的请求后再停止,避免客户端出现异常。这种方式不会给进程留出清理资源的时间,可能会导致数据丢失、资源泄漏等问题。

2025-04-30 10:56:29 410

原创 linux 下查看指定进程的内存CPU占用情况(用于程序崩溃类的排查)

在程序开发过程中,如果程序较为庞大,逻辑较为复杂时,容易出现运行时崩溃的问题。导致的原因有很多,我这里只对较为通用的内容占用情况作记录,如程序中对文件描述符打开未关闭(导致fd积攒过多超过了系统的标准数量,则由系统就给它close了),再者,如程序开启一些耗时费资源的任务未跳出(这个只能从程序里定位了,所记录的方式只作内存占用的排查)。

2025-04-29 14:24:03 634

原创 ubuntu 解挂载时提示 “umount: /home/xx/Applications/yy: target is busy.”

在 Unix 类系统(如 Linux、macOS)中,许多资源(如网络套接字、设备文件等)都被抽象为文件,lsof 可以列出当前系统中所有被打开的文件以及与之关联的进程信息。用于递归地查找指定目录 /home/xx/Applications/yy 及其子目录下所有被打开的文件,并列出使用这些文件的进程信息。找到界面中会打印占用这个挂载路径的所有进程信息,取出其中的各个PID,并手动将这些进程都kill掉。问题如题所示,我挂载一个squanfs文件系统到指定目录,当我使用完后,准备解挂载时,提示。

2025-03-21 15:27:22 391

原创 dart中的主子isolate带参通信(主isolate - 多个子isolate)

原因:由于项目中主要耗时的任务分为两类,一个是数据库处理,另一个是http相关的处理,之前我偷懒,就把这两个都放到同一个子isolate中去处理。当然是我这边的锅,前文中的例子,主子isolate间的通信是主发给子,子处理完再发回给主,再关闭port,如果子isolate中发生了异常、卡死等的问题,则主无法再向子发出处理要求。是主isolate和一个子isolate间的通信,这里再给出个主isolate和多个isolate之间的通信例子,这个例子给出的是2个子isolate。

2025-03-12 16:52:34 238

原创 dart中实现子isolate的管理类(主子isolate带参通信),特适用于针对数据库的处理

dart中的isolate已经困扰我好几天了,主要项目需要,比如对数据库的处理,都放到一个单独的子isolate(子线程)中,优势在于,当数据库足够大时,对数据库的处理可能较为耗时,这时,只用dart的主isolate,可能会对其他逻辑的处理,造成阻塞。最开始接触isolate时,主子isolate发送接收port,很容易绕晕,不过,结合一些网上资料,加上这个简单的demo,有助于理解,希望能帮到一些和我一样,因刚接触isolate而头疼的人。至少让我豁然开朗了,也看到了自己思维的局限性,不够扩散开来。

2025-03-07 17:39:04 379

原创 flutter/dart 中Timer里内容什么时候首次执行

当个小tip了解即可,在给出的这行代码中,使用 Timer.periodic 来创建一个周期性的定时器时,第一次执行指定的回调函数(这里是 getCamStatusFresh)是在指定的时间间隔之后,也就是说,getCamStatusFresh 函数会在 10 秒之后首次执行,之后每隔 10 秒执行一次。这个细节之前一直没留意过,直到一次代码运行时,发现本该直接出结果的打印,缺要隔好一会才会出。这我才知道,我又有东西不知道的了。

2025-03-07 17:16:22 185

原创 flutter将utf-8编码的字节序列转换为中英文字符串

这里遇到的问题是,我通过某种方式拿到了utf-8编码的字节序列,我只知道他们对应的是中英文字符。怎么将其转成中英文,并打印,让我对utf-8编码有了些许许的了解。打头且带有两个十六进制数的string(unicode码点)。所以,需要把这每个的十六进制数的编码部分,都依次转换为字节。4、最后,使用utf8.decode方法对这个列表作解码,就能得到其对应的unicode字符内容。这样的开头部分,就获取紧跟其后的两个十六进制数,并把它转成整数,然后添加到列表中;开头的,就直接把它放到列表里;

2025-02-21 19:26:36 470

原创 将SquashFS文件mount到指定文件夹时,提示‘failed to setup loop device for’

我手里有一个压缩起来的SquashFS镜像文件,由于我想查看此镜像文件中的内容,常做的就是将其挂载(mount)到一个空白的文件夹。命令没有正确地将这个SquashFS镜像文件关联到一个循环设备(loop device)。命令将这个循环设备挂载到目标文件夹。挂载的大致过程为:镜像文件 -> 空闲循环设备 -> 目标空闲文件夹。查看当前循环设备的关联情况,可见当前空闲设备。在解挂载镜像文件后,需断开循环设备的关联。),并将文件关联到这个循环设备,然后再用。,由图中可知当前空闲的循环设备是。

2025-02-18 11:44:05 776

原创 ubuntu使用防火墙开放和关闭指定端口

防火墙可以阻止或允许外部对特定端口的访问,Ubuntu 常用的防火墙管理工具是 ufw(Uncomplicated Firewall) ,如果在开发网络通信相关的内容时,要确保所需的端口是打开的,这样可以排除出题出现时的一个问题——端口未打开。

2025-02-11 22:41:56 1248

原创 ubuntu 22.04 arm版国内镜像源,亲测可用

因为工作原因,需要对项目工程在ubuntu 22.04 arm中进行编译,然而packages缺的挺多,安装起来经常太慢且容易Failed。因为网上较多的资料都是x86版本的,关于这个国内镜像源,时间太久远的,可能那源会有问题,所以我一直只找最近博发布的资料(关于国内镜像源的)。这里找到了ubuntu22.04arm版本中科大的国内镜像源,亲测可用,记录一下。将下面给出的源替换进去,并ctrl+O(保存)、ctrl+x(退出)更新源,如果无误,后续就可以更快的安装我们需要的内容。

2025-01-24 11:12:55 1927 1

原创 给已有的.so库重新封装一个新的库,并能使用新旧库中的函数

此时,libnew.so 就是一个新的动态库,我们可以直接使用 libnew.so 来访问新旧库中的函数,而无需直接与 libold.so 交互。这一步很关键,至少我的问题主要出在这步,也是我太菜,好久才捋顺思路,到最后没出问题。要求如题,这里给出一个简单的例子,自己亲测可用之后才记录下来。这里如果包含了多个库的头文件,以及想了解参数含义的,可看看。,而我们需要在它的基础上重新封装一个新的库。外,还提供一个新库中的函数。编写封装代码,即新库的生成代码。的现有库,它包含函数。的文件为例,内容如下,

2024-09-04 20:05:10 740

原创 命令行gcc编译一个包含多个头文件的cpp项目并生成动态库.so

编译是将源代码(.c 文件)转换成目标代码(.o 文件),链接是将一个或多个目标代码文件与库文件结合起来生成最终的可执行文件。动态库是一种在运行时被加载的库,而不是在编译时静态链接到程序中。这可以让多个程序共享同一份库的副本,节省内存和磁盘空间,且易更新库。位置无关代码是一种可以在内存中的任何位置执行的代码,可用于创建动态库,因为动态库在运行时可能会被加载到内存中的任意位置。这个选项后面跟着的是头文件所在的目录路径,如果有多个目录,可以重复。so库文件是在linux下使用的库文件,文件前缀须为lib;

2024-09-04 17:03:59 758

原创 flutter中Process.start执行命令后,kill对应进程

我在flutter中用dart:io库中的Process.start执行一个命令行后,怎么也无法删除,尝试用dart给的process的pid,再kill掉,发现所给的并不是正确的pid,故此,我通过。这个函数的大致逻辑,是让其找到python对应进程的进程号,然后把他kill掉。得出当前正在执行的所有进程信息,kill掉所指定的进程。

2024-08-30 12:23:56 1074

原创 flutter存储日志文件代码

如题所示,我需要将flutter运行得到的相关日志信息存储成文件,可以按时间或者文件大小,将日志文件拆分存储成多个日志文件。在项目中我已实现这个功能,因为觉得有用,所以单独简化出来放在一个demo中。demo中没有使用logger类插件的,借鉴了网上大神的代码,并在其基础上修改。demo很简单,留作后用。这里给出我整理出来的一个小demo(demo的实际效果如下图所示。

2024-07-31 20:12:38 451

原创 docker中创建一个容器并进入交互模式

创建完成后,查看容器会发现,容器名很随机,如果想指定容器的名字,可使用命令。

2024-06-17 22:19:32 251

原创 ROS2安装教程之强大辅助

第一次接触ROS2,安装时跟这个,跟那个教程,真的是一把泪,耗费数多个小时,依旧存在一些或多或少的问题,最主要的是永远提示。直到遇到了一个鱼香大佬,是真的香啊,好不容易找到的资料,必须贴出来。傻瓜操作,我真的是感激涕零,一把鼻涕一把泪啊。PS:网上的教程也要看看的,但这个资料也确实有帮助,可以辅助看。

2024-05-24 12:19:34 366

原创 flutter使用dbus插件时,在终端无法使用“dart-dbus”命令

不用flutter的人,可能都不会找到这儿,遇到这个问题,所以这里默认flutter已经装过了,且对flutter如何使用插件也有所了解了。由于我在项目中用到了dbus插件,用法如图所示,我需要使用这条命令来生成一个source file。然而,终端执行却报错,不认识 dart-dbus 命令。这个问题,我搜不太到,所以不确定是不是普遍性的问题,还是记录下,万一有人遇到了呢。

2024-05-23 21:36:52 422

原创 ubuntu手动替换源后,更新源时提示“仓库.... jammy Release“ 没有Release文件

问题如图所示,由于问题不好定位,我就从替换源,以及解决错误提示这两个步骤,来解决其中可能存在的问题。

2024-05-23 21:04:19 3640 3

原创 在flutter项目中使用自己做的flutter插件

把插件项目放置在Flutter项目根目录下的一个特定文件夹中。这里,我是创建了一个文件夹,名字为。在Flutter项目中,导入插件,这时,就可以调用插件里头的API了。注意,格式要严格一致,多一个缩进就会出错。命令,让Flutter项目获取到这个插件。中,添加对自己插件的依赖。,并把插件项目复制进去。在Flutter项目的。

2024-03-19 17:12:38 1186

原创 flutter-elinux的基本介绍及安装调试

搜集到两个很有用的网站:1、flutter-elinux的基本介绍:

2024-03-19 16:40:07 721

原创 flutter中的RelativeRect.fromLTRB

RelativeRect.fromLTRB 是一个用于指定矩形位置的便捷构造函数,它需要四个参数:left, top, right, bottom。这四个参数分别代表了矩形左上角的 x 坐标、y 坐标以及右下角的 x 坐标、y 坐标。其中,矩形的中心点位于矩形的左上角与右下角连线的中点。

2024-03-15 11:24:39 695

原创 Flutter,点击图标后,显示下拉条目选框

这里给出两种方式,一种是点击时没有动画效果的Icon+GestureDetector,另一种是点击时带动画的Material Widget自带的IconButton。

2024-03-15 11:20:46 976

原创 在ubuntu中,如何一条语句执行2个命令

先解释下,我这里的这个意思是,使用一条语句,让终端去执行2个操作,是两个命令分别对应的操作。,则需要将先执行command1,仅当command1执行成功后,才会继续执行command2,否则停止执行。这表明,需要将前一个命令的输出作为后一个命令的输入,也就是linux中的管道通信。此时,前一个命令必须先执行成功,才能继续执行接下去的命令。,会先执行command1,并将其输出作为command2的输入。是依次执行command1和command2,多条命令依次类推。:使用竖线 | 分隔多个命令。

2024-03-07 20:53:23 1001

原创 C++关于socket中收发数据不完整问题

每一个socket在被创建之后,系统都会给它分配两个缓冲区,即输入缓冲区和输出缓冲区。输入输出缓冲区,系统会为每个socket都单独分配,并且是在socket创建的时候自动生成的。一般来说,默认的输入输出缓冲区大小为8K。套接字关闭的时候,输出缓冲区的数据不会丢失,会由协议发送到另一方;而输入缓冲区的数据则会丢失。

2024-03-07 20:32:13 1263 1

原创 ubuntu下命令行安装指定版本的jdk,并在多jdk时指定默认版本

分别输入对应 java 、javac 版本的编号,并按下 Enter 键。step3、验证 java 和 javac 的版本是否正确。step1、打印当前系统中已安装jdk的相关信息。step2、选择需要的jdk版本。

2024-01-31 19:32:30 1243

原创 使用Scrollbar时,提示“flutter: Interceptor: ══╡ EXCEPTION CAUGHT BY ANIMATION LIBRARY ╞═══”

问题如图所示,我写了一个小例子,来学习。

2024-01-31 19:21:51 692

原创 C++中JSON与string格式互转

1、在C++中新建一个json对象并赋值,然后将其转给char *data。2、在使用 #include <json.h> 头文件时,通常是使用第三方库 jsoncpp。由于它不是标准库的一部分,所以需要从官网下载相应的源码包,并在编码时包含其头文件。

2024-01-15 21:28:27 4729

原创 Ubuntu下,Flutter安装及在VScode中的配置

在自己指定的目录下,新建文件夹,并将源码git clone到本地。

2024-01-15 21:12:43 1963

原创 如何一次性scp多个文件到远程机器上

但是前提为,你对远程主机有访问权限。

2023-12-15 19:48:00 2909

原创 ssh时怎么同时指定其端口号,以及scp文件到远程的指定端口

如果我要将本地文件 /path/to/local/file.txt 复制到远程主机 example.com 的 /path/to/remote/ 路径下,并使用自定义的端口号 12345,我该怎么做?如果想要通过 SSH 连接到指定端口的远程服务器,可以在 SSH 命令中使用 -p 或 --port 参数来指定端口号。在执行命令时,系统会要求输入远程主机的密码(如果使用密码进行身份验证)。其中, 是要连接的端口号,user 是远程服务器上的用户名,host 是远程服务器的地址或 IP。

2023-12-14 20:44:35 4152

原创 已知某个脚本在运行,查找并打印它对应的所有进程的详细信息并kill

step 1、首先,使用ps -ef | grep <脚本名称>命令查找正在运行的该脚本的进程ID(PID)。如果该进程无法进行关闭,也可以使用kill -9 命令,它将向进程发送一个强制终止信号,确保该进程被关闭。如题,如果我已知系统中有一个脚本在运行,但是这个脚本有多个相同的命名方式,或者说,我在不知觉的情况下,给它运行了多次。这个命令将输出包含正在运行该脚本的进程信息,包括进程ID。记录下进程ID,它通常是该输出的第二列值。命令,该命令可以显示所有进程的PID、启动时间和命令行。

2023-12-14 20:33:50 258

原创 pulseaudio使用pacmd命令进入pa设置界面,提示“No Pulseaudio daemon running, or not running as session daemon.”

开启pa,终端提示,它不适合在root下使用,但是依旧可以进入。

2023-11-29 21:01:32 1330

原创 docker start一个容器之后,怎么进入这个容器界面

要进入已经启动的 docker 容器的交互式终端,可以使用。

2023-11-29 20:34:47 2386

原创 Linux下~目录和home目录的区别

它是主目录的完整路径。每个用户在 Linux 系统中都有一个独立的主目录,其中存放着该用户的配置文件、个人文件等。如果当前机子下有user1和user2两个用户,则进入/home目录,ls下,便可看到这两个用户名对应的文件夹。:表示当前登录用户的主目录。例如,如果你当前是以用户user1的身份登陆,则 ~ 路径就等于 user1 自己的主目录,即 /home/user1。在 Linux 中,~(波浪号)路径和 home 路径都与用户的主目录(home directory)相关。

2023-11-29 20:15:03 855

原创 Ubuntu下怎么使用cat命令查看大文件时,从第一行开始显示

注:使用箭头键向上或向下滚动浏览文件内容,按下 q 键退出 less 模式。或者使用其他 less 命令来进行更复杂的浏览和搜索操作,例如按下 / 键后输入关键词进行文件内搜索等。

2023-11-29 19:59:51 255

原创 ubuntu下如何查看.gz压缩包中的内容,以及grep过滤查找文件中的某些内容

4、过滤查找文件中的内容,并显示其上下3行的内容。1、查看压缩包file.gz中的全部内容。注:我通常先解压,然后再grep。2、对一个.gz的压缩包解压缩。3、过滤查找文件中的某些内容。

2023-11-28 20:06:35 1547

原创 linux下,如何查看一个文件的哈希值md5以及sha264

这也正是哈希算法的特性之一:无论文件的大小如何,生成的哈希值都是固定长度的。即使是对于非常大的文件,比如几个 GB 的文件,计算出的 MD5 哈希值也是长度固定的 128 位。然而,需要注意的是,由于 MD5 是哈希碰撞的漏洞,即有可能存在两个不同内容的文件拥有相同的 MD5 值。出于安全考虑,MD5 已不再被认为是足够安全的哈希算法,尤其是用于敏感数据的校验。SHA-256 是一种较为常见和安全的哈希算法,用于验证文件的完整性或作为文件的唯一标识。这种哈希算法生成的值是固定长度的,通常为 256 位。

2023-10-13 17:23:57 4175

keil5安装包

keil5的安装包,可以用来51开发板的编程,支持C语言,汇编语言等的编写

2018-10-26

VC++6.0安装包.zip

Visual C++ 6.0 ,用于编写C语言等,内有安装步骤,绝对简单,完整,安装完毕 ,是企业版,已帮同学多次安装,无误。

2020-04-04

fscapture 安装包.rar

这是一个体积特别小的小软件,可以用来截图、录屏、取色等,使用起来特别方便。由于很小,所以也不会很占空间,在学校时,老师很推荐的一款

2020-06-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除