- 博客(110)
- 资源 (1)
- 收藏
- 关注
原创 nmap getting started 网络扫描工具安全加固工具
Nmap(Network Mapper)是一款用于网络发现和安全审计的强大工具。它可以帮助你识别网络上的主机、服务和开放端口,并提供关于它们的详细信息。基本扫描扫描多个主机指定端口范围服务和版本探测Nmap可以识别正在运行的服务和它们的版本信息。你可以使用-sV选项来启用服务和版本探测。操作系统检测Nmap可以尝试识别目标主机的操作系统。你可以使用-O选项来进行操作系统检测。脚本扫描Nmap提供了一系列预置的脚本,可以用于执行更深入的审计和攻击。
2024-04-21 11:38:29 219
原创 VIM插件安装与配置
在某些情况下只能用vim编辑器,而没有类似vscode的图形化界面,为vim配置一系列插件即可方便的在vim下编程建议用vscode,经过一番折腾,发现还是vscode好用。
2024-04-21 11:38:00 290
原创 C/C++编译问题,摆脱编译时的动态库依赖
在编译程序时,考虑如下场景:代码中使用到了A库的函数,此外再无其它依赖库。但是,A库中使用了B库的函数,B库依赖C库,C库依赖D库。因此在编译可执行文件时,需要找到ABCD,并指定库的路径,在链接时才不会爆出找不到某个定义的错误。如果在交叉编译时A库的依赖项高达几十甚至更多个,会让编译变得非常麻烦,需要指定每个库的位置和库名,有些情况可能需要给库添加软链。有没有什么方法在编译时不需要指定依赖?在编译可执行文件时,需要找到所有已使用符号的定义,如果该符号在动态库中就需要指定动态库;
2024-03-17 17:07:49 1197
原创 Linux运维相关基础知识
终端仿真器/终端仿真程序虚拟控制台tty1(桌面环境 gnome等) | tty2 | tty3 …分区(分区表,GPT等)物理磁盘Linux系统拥有很高的灵活性和自由度,系统启动后首先进入桌面环境(例如Ubuntu默认进入gnome,用户可更换其他桌面)或者tty(虚拟终端)。当进入桌面环境后可启动终端仿真器(用户可自行更换),终端仿真器会启动默认的shell(Ubuntu默认bash,用户可自行更换)。
2024-03-17 17:07:26 866
原创 riscv简单常用汇编指令xv6
riscv在目录下,执行make qemu-gdb ,进程会阻塞.另开一个终端,在目录下,执行gdb-multiarch kernel/kernel进入gdb后 b _entry将断点打在最开始处退出qemu:用户态执行#include "syscall.h"# execinit , 0 };init , 0 };init , 0 };init , 0 };init , 0 };;init , 0 };init , 0 };init , 0 };
2024-03-10 18:33:49 1036
原创 boost.asio使用简介
The Boost.Asio库是为使用C++进行系统编程的程序员设计的,在系统编程中,通常需要访问操作系统功能(如网络)。特别是Boost。便携性。该库应支持一系列常用的操作系统,并在这些操作系统之间提供一致的行为。可扩展性。该库应促进可扩展到数千个并发连接的网络应用程序的开发。每个操作系统的库实现都应该使用最能实现这种可伸缩性的机制。效率该库应支持分散采集I/O等技术,并允许程序最大限度地减少数据复制。从已建立的API(如BSD套接字)中建模概念。
2024-03-09 21:53:10 983
原创 jmeter快速使用
Apache JMeter may be used to test performance both on static and dynamic resources, Web dynamic applications.It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance un
2024-03-03 21:00:38 605
原创 mongoose httpserver webcommand
在mongoose http server的基础上允许在URL栏输入command,返回输出结果eg:ls其中为关键字代表之后的为要执行的命令256。
2024-02-24 23:43:24 578
原创 mongoose httpserver浅析
mongoose是一款基于C/C++的网络库,可以实现TCP, UDP, HTTP, WebSocket, MQTT通讯。mongoose是的嵌入式网络程序更快、健壮,易于实现。mongoose只有mongoose.c和mongoose.h两个文件,其它的例子基本是基于这两个文件加上对应的xxx.c文件。mongoose.ws/documentation/介绍了mongoose.h文件中的API。它通过单向链表维护所有连接的client对象,其数据结构不是线程安全的。
2024-02-24 23:42:38 1218
原创 cJSON简析
其中object和array中的value都可以嵌套。json是一种文本格式的协议。对于人的可阅读性非常好。每个节点的数据结构如下。
2023-12-26 22:27:28 420
原创 base64编码,C语言实现
base64是一种编码方案,将二进制字节流编码成可显示字符,其中可显示字符有64种,如下表所示。在http头,JSON等格式中,要求必须为可显示字符,如果想将二进制字节流加入http头或JSON中可将其用base64转换成字符后加入到协议中。
2023-12-26 22:26:55 524
原创 异步I/O操作函数aio_xxx函数
POXSIX提供了用于异步I/O的"aio_xxx"函数集。名称功能aio_read异步readaio_write异步writeaio_fsync异步fsyncaio_error获取错误状态aio_return获取返回值aio_cancel请求取消请求等待。
2023-12-02 21:42:25 450
原创 Linux程序设计(下)
Linux进程表就像一个数据结构,它把当前加载在内存中的所有进程的有关信息保存在一个表中,其中包括进程的PID、进程的状态、命令字符串和其它一些ps命令输出的各类信息。进程表的长度是有限制的,所以操作系统能够支持的同时运行的进程数也是有限制的,如今可同时运行的进程数可能只与用于建立进程表项的内存容量有关。在Linux系统中,PR值指的是进程的优先级。Autoconf解决了系统特使构建和运行时信息的难题,但在软件开发时还有更多的难题,GNU构建系统是为了更好的开发软件而开发的一套完整的公益事业。
2023-12-02 21:41:49 1071
原创 c语言实现简单的string
在c语言中利用面向对象的编程方式,实现类似c++中的string类。虽然可以利用面向对象的思想实现类似的c++中的string类,但是由于受到c语言语法的限制,不能像写c++一样写C,如析构函数必须显示写出。
2023-11-25 21:06:52 525
原创 Linux程序设计(上)
通用许可证(GPL)条款下发布的一些主要GNU项目软件:通过以上一些列的可用的自由软件+Linux kernel,可以说:创建一个GNU的、自由的类UNIX系统的目标已经通过Linux系统实现了。Linux内核+一系列工具程序=Linux发行版POSIX:POSIX(Portable, Operating System Interface)是基于UNIX或类UNIX操作系统的一系列操作系统接口标准。标准定义了常用接口(open, write…)和通用工具(cd, ls…)。POSIX在源代码级别支持应用程
2023-11-20 22:03:25 212
原创 CMake
CMakeake是什么,是用来做什么的,以及如何?cmake是一个用于管理和构建源代码的工具。cmake广泛应用于编译C/C++代码,其实也可以用于编译其他语言。cmake可实现跨平台构建、编译c/c++源码。cmake除了用于编译外还提供了ctest, cpack用于测试,安装或打包。第一章适用于新手,在不了解cmake语言的情况下可快速构建自己的项目CMake中使用set和unset命令设置或者取消设置变量一般变量。
2023-10-23 22:16:02 466
原创 Valgrind——c/c++内存检测工具
Valgrind 是一个用于构建动态分析工具的检测框架。Valgrind包含了可以自动检测多种内存管理和线程错误的工具,并对程序进行详细的分析。而且,还可以使用Valgrind来构建新工具。
2023-10-21 09:28:43 186
原创 GNU-ncurses库简介
ncurses是一个管理应用程序在字符终端显示的函数库。它提供了移动光标,建立窗口,产生颜色,处理鼠标操作等功能。ncurses提供的是字符用户界面,而非图形用户界面。
2023-09-20 22:30:39 571
原创 c++新标准11~17等
{初始化列表},可用于所有的内置类型和用户定义的类型,可添加=也可不加。// = {3.4} 报错 double y = {2.35 };double w;1 , 3.45 };1 , 3.45 };如果有类将模板std::initializer_list作为参数的构造函数,则只有该构造函数可以使用列表初始化形式STL容器提供了将initializer_list作为参数的构造函数。
2023-07-02 15:28:18 179
原创 操作系统概述(二、入门,基础,计算机系统)
软件和硬件的桥梁操作系统的加载和初始化AbstractMachine代码导读__LabOS- 熟悉代码框架- 多处理器上的kalloc/free- 中断和异常驱动的上下文(线程)切换- 虚拟地址空间、用户态进程和系统调用- 虚拟文件系统。devfs, procfs, 简单的文件系统;ELF加载器如果一个人在未经训练的情况下就能把某件事情做的很好,证明他在某件事情上很有“天赋”,但是和接受过专业训练的人依然存在不小的差距。
2023-06-24 22:29:52 390
原创 c++输入输出文件操作stream
c++程序把输入和输出看作字节流。输入时,程序从输入流中抽取字节:输出时,程序将字节流插入到输出流中。一般输入和输出都有缓冲区。C++程序通常在用户按下回车键时刷新输入缓冲区。cin: 标准输入流cout: 标准输出流如果输出被重定向到文件,则标准错误流依然会被输出到屏幕cerr: 标准错误流,无缓冲区clog: 标准错误流,有缓冲区coutostream类将输出转化为字符字节流put() 显示字符write() 显示字符串将val内存中的数据作为字节字符输出到屏幕输出缓冲区。
2023-05-27 20:50:13 2464
原创 操作系统概述(一、并发)
操作系统广义上讲可以是…非常广这里只讨论狭义上的操作系统,如Windows、Linux操作系统是负责管理软硬件资源,为应用程序和用户提供服务的 系统的 大型 软件。所以说,操作系统和普通的软件没有本质区别,只不过它会直接操纵硬件资源;当程序员想要申请128byte的内存空间时,只需要调用通过系统提供的API即可,而不是自行编写申请内存空间的程序,所以说操作系统为程序和用户提供服务。生产者消费者模型还得是信号量(还是要具体问题具体分析)自旋锁 -> 互斥锁 -> 条件变量 -> 信号量。
2023-05-07 10:11:37 489
原创 GDB调试gdb
启动程序,可以按照自定义的要求随心所欲的运行程序可以让被调试的程序在所指定的断点处停住(断点可以是条件表达式)当程序被停住时,可以检查此时程序中所发生的的事可以改变程序,讲一个BUG产生的影响修正从而测试其他BUG带有动态库的程序如何调试?多线程如何调试?
2023-04-25 22:29:38 1056 1
原创 矩阵求导简介
提示:本文简要介绍矩阵求导方面的知识标量函数的求导读者应该非常熟悉了。假设fxf(x)fx对xxx求导,那么将得到dfdxdxdf这样一个导数,显然它仍然是一个标量。然后下面分别介绍当xxx为向量或者fff为向量函数的情况。提示:以下是本篇文章正文内容,可供参考。
2023-04-02 22:34:23 262
原创 c++ plus复习(二)
对于静态类成员,可以在类声明之外使用单独的语句来进行初始化,这是因为静态类成员是单独存储的,而不是对象的组成部分。C++函数的作用域可以是整个类或整个命名空间(包括全局的),但不能是局部的(因为不能在代码块内定义函数,如果函数的作用域为局部,则只能对它自己是可见的,因此不能被其他函数调用。这样的函数将无法运行)。初始化是在方法文件中,而不是在类声明文件中进行的,因为类声明位于头文件中,程序可能将头文件包括在其他几个文件中。声明类指是描述了对象的形式,并没有创建对象,在创建对象前,将没有用于存储值的空间。
2023-04-02 19:18:11 353
原创 μC/OS - III
μC/OS - III是什么?它是一个可裁减、可固化、可剥夺型的实时内核,管理任务的数目不受限。可提供现代实时内核所能提供的所有服务,如资源管理、任务间同步、任务间通讯等,在如,在系统运行时做性能测试,向任务直接发信号量或消息,以及同时等待多个内核对象等。实时系统:硬实时和软实时。
2023-03-29 19:21:16 308
原创 卡尔曼滤波浅析
Kalman Filter算法,是一种递推预测滤波算法,算法中涉及到滤波,也涉及到对下一时刻数据的预测。Kalman Filter 由一系列递归数学公式描述。它提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波器应用广泛且功能强大:它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。Kalman Filter 只能减小均值为0的测量噪声带来的影响。只要噪声期望为0,那么不管方差多大,只要迭代次数足够多,那效果都很好。
2023-03-26 22:05:32 630 2
原创 simulink stateflow 状态机
在tooltrip中选择DEBUG,通过Animation Speed可更改动画的播放速度。添加状态机的快捷操作transition上的数字代表执行顺序,选中transition后在toolstrip -> Execution Order可更改执行顺序在transition上可进行的操作下图的状态机中junction不属于状态,只负责条件的跳转,可用于实现类似if-else的结构after(N, sec)为EventNameDefault transition不能有任何的。
2023-03-07 20:43:54 6290
原创 matlab基础
> save filename . mat % 将当前工作区的所有变量保存为mat文件 > > load filename . mat % 加载文件 > > load filename variable % 只加载filename.mat中的某一variable > > save filename variable % 只把某个variable变量保存在filename.mat中 > > format long > > format short % 切换在command中的显示精度矩阵操作3;
2023-03-02 23:06:43 267
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人