杂记
工作中涉及到的一些小知识点
无聊的阿乐
每天进步一点点,量变才会质变
展开
-
快速精通Git
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。原创 2023-04-24 16:41:40 · 413 阅读 · 0 评论 -
telnet 查看目标主机是否打开了某端口
(1)telnet客户进程和终端用户本身就是通过tcp建立连接的,当然前提是双方都打开了相应的port,如果失败,那就证明没有开放次端口(当然这个不是绝对的,例如防火墙限制)(2)从过程来看,“telnet 目标ip” 就是想连接目标ip的telnet服务嘛,而且要默认占用对端的23端口;后面又跟上另外一个端口算怎么回事啊?telnet服务目的端默认的端口是23,这是应用层的C/S,所以你telnet+ip地址是可以的,原创 2023-03-25 12:55:39 · 1665 阅读 · 0 评论 -
Ubuntu20.04设置SSH远程登录
ubuntu20配置SSH原创 2023-01-29 17:25:34 · 1990 阅读 · 1 评论 -
Int32和UInt32有什么区别?以及对数据正负的理解
【代码】Int32和UInt32有什么区别?以及对数据正负的理解。原创 2022-12-27 13:01:36 · 5651 阅读 · 0 评论 -
Ubuntu通过修改配置文件interface进行网络配置的方法
【代码】Ubuntu通过修改配置文件interface进行网络配置的方法。原创 2022-11-30 21:29:00 · 4689 阅读 · 0 评论 -
git使用记录
【代码】git使用记录。原创 2022-10-27 22:37:27 · 345 阅读 · 0 评论 -
Zlog日志库使用方法
【代码】Zlog日志库使用方法。原创 2022-10-10 18:25:26 · 352 阅读 · 0 评论 -
Linux 系统调用相关,及新增一个系统调用
系统调用本质上是应用程序请求操作系统内核完成某功能时的一种过程调用。原创 2022-08-07 21:33:44 · 134 阅读 · 0 评论 -
VS2015采用loadlibrary方式调用dll库
顺便再讲下关于调用约定和函数符号的关系,即_stdcall,_cdecl.还有就是extern"c"对函数名符号的影响。说明库里边已经把函数导出来了,使用loadlibrary的时候需要和导出名字对应上。由于_stdcall是被调用方清理堆栈,所以函数符号里面包含了传参的信息。我们先编译一个库文件,然后采用Loadlibrary的方式调用。由于_cdecl是调用方清理堆栈,所以只需要函数名就可以。+函数名+@@YG+返回类型+参数1类型…+函数名+@@YA+返回类型+XZ。.........原创 2022-07-28 22:30:59 · 1461 阅读 · 0 评论 -
VS2015使用dumpbin 查看库的导出函数符号
dumpbin是VS2015自动安装的,使用VS2015自带的命令行可以打开使用。原创 2022-07-27 18:20:49 · 410 阅读 · 0 评论 -
windows平台下发布QT程序
问题我们已经编译出来了exe文件,发布时不知道需要依赖哪些库。原创 2022-07-25 15:32:46 · 659 阅读 · 0 评论 -
QT编译出来的exe以管理员权限启动
QT编译生成的exe启动时直接以管理员权限启动原创 2022-07-25 15:02:09 · 630 阅读 · 0 评论 -
web编程(三)显示html网页
下面列出几个html脚本,并将其放到/usr/local/apache/htdocs目录下,该目录下存放的都是网页。在浏览器输入服务器的ip和脚本名字,显示一个图片。原创 2022-07-23 21:30:12 · 723 阅读 · 0 评论 -
创建一个守护进程
参考《后台开发核心技术与应用》第10.4小节。原创 2022-07-16 11:27:31 · 678 阅读 · 0 评论 -
嵌入式Linux 系统移植流程总结
嵌入式Linux系统移植主要由四大部分组成:一、搭建交叉开发环境二、bootloader的选择和移植三、kernel的配置、编译、和移植四、根文件系统的制作先介绍第一分部的内容:搭建交叉开发环境,首先必须得思考两个问题,什么是交叉环境? 为什么需要搭建交叉环境?先回答第一个问题,在嵌入式开发中,交叉开发是很重要的一个概念,开发的第一个环节就是搭建环境,第一步不能完成,后面的步骤从无谈起,这里所说的交叉开发环境主要指的是:在开发主机上(通常是我的pc机)开发出能够在目标机(通常是我们的开发板)上运行的程原创 2022-07-06 21:09:55 · 649 阅读 · 0 评论 -
C++ 实现FSM有限状态机
现态:当前所处状态次态:当条件满足后,即将转移的下一个状态动作:当满足某个事件时执行的动作;动作执行完毕后可以转移到另一个状态或保持原有状态条件:转移状态所需的条件,当满足条件时,会触发一个动作或进行状态转移案例:学生的日常生活。学生的日常生活包含以下几个状态:起床、上学、吃午饭、做作业、睡觉;每个状态之间进行转移需要执行相应的事件。分为以下几个步骤来实现:(1)绘制状态转移图(2)创建状态转移的FSMItem类枚举:所有状态State、所有事件Event;成员变量:现态_curState、事件_event原创 2022-06-26 16:02:00 · 1583 阅读 · 0 评论 -
工作中一些常用的工具函数
来自于自己写的加密机客户端源码,包括时间日期格式校验,IP校验,大小端转换,文件查找等原创 2022-06-22 18:08:27 · 111 阅读 · 0 评论 -
C语言将16进制字符数组转为字符串
数据为十六进制数(0xA1,0xB1,0xC1,0xD1),结果是:将此十六进制数据转换为字符串“A1B2C1D1”。方便用%s打印出来查看原创 2022-06-15 20:32:38 · 7075 阅读 · 1 评论 -
大小端转换
大小端转换原创 2022-06-10 12:44:47 · 150 阅读 · 1 评论 -
Linux 下查找某个库里是否有某个函数定义
nm -D libnucs.so(库名) | grep SDF_ExchangeDigitEnvelopeBaseOnRSA(函数名)原创 2022-05-31 18:20:03 · 586 阅读 · 0 评论 -
Linux和Windows符号导入导出(库调用相关)
Linux和Windows符号导入导出的对比分析原创 2022-05-12 14:35:09 · 309 阅读 · 0 评论 -
Linux echo输出带颜色的内容,闪烁等
参考原创 2022-05-09 14:40:01 · 464 阅读 · 0 评论 -
Linux进程间通信之互斥锁(共享内存实现),包括C++11的事件,信号量
#pragma once#include <mutex>#include <condition_variable>#include <chrono>#include <string>#include <memory>#ifndef _WIN32#include <unistd.h>#include <semaphore.h>#include <stdio.h>#include <fcn原创 2022-04-25 18:18:52 · 3616 阅读 · 1 评论 -
C语言指针++运算本质,及各数据类型所占字节
对于 T *p; p + 1 增加 sizeof(T)char **p; p +1 增加 sizeof(char *)(*p) + 1 对 *p 增加 sizeof (char)1、告诉大家一个技巧:对一个指针变量+1的时候,指针到底向后偏移多少个字节,要根据指针变量当前的类型而定,如果是char* 的那么+1会向后偏移1个字节,如果是 short* 那么+1会向后偏移2个字节,如果是int* 那么就会向后偏移4个字节(具体的要根据不同的编译器而定);2、指针占几个字节指针即为地址,指针占原创 2022-03-22 16:10:33 · 1838 阅读 · 0 评论 -
Linux shell中函数编写
该脚本实现功能为:判断Linux用户是否在线,任意输入一个用户即可#!/bin/bash #注意几点:函数的定义中,括号里面不能写任何东西(第一行);函数必须定义在调用之前; 给函数传参的时候,传递的参数在函数的定义里用$n 来表示第 n 个参数。$?代表函数调用 的返回值。check_user(){ # 若函数的第一个参数$1 为“quit”,则立即结束脚本 if [ $1 = "q" ] #判断字符串用= ,数值用-eq =两边要加空格 then exit fi U原创 2022-03-21 18:08:22 · 1287 阅读 · 0 评论 -
windows和Linux中的动态库区别
windows下:1、.lib /.dll,指的是编译dll的时候生成的导入.lib。这样的.lib只有导入表,没有代码。和静态库的.lib虽然后缀名一样,但是内容不一样。.lib仅仅是提供链接到.DLL的地址信息等。所以对于动态链接来说,.lib和.dll缺一不可。主要体现在:在编译时如果你加了.lib的依赖项,不会出任何问题,但运行时,若没有.dll,会提示找不到xx.dll的信息。2、对于静态库lib,索引和实现都在其中。这时不需要dll。3、 静态链接的静态就是链接时把里面需要的东西抽取出来安原创 2022-03-14 16:49:33 · 1114 阅读 · 0 评论 -
Linux下查看电脑配置信息
1、输入"uname -a ",可显示电脑以及操作系统的相关信息2、输入"cat /proc/version",说明正在运行的内核版本。3、输入"cat /etc/issue", 显示的是发行版本信息4、lsb_release -a (适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb)查看CPU信息:1.1 查看CPU个数# cat /proc/cpuinfo | grep "physical id" | uniq | wc -.原创 2022-03-10 17:02:27 · 11276 阅读 · 0 评论 -
Linux 下使用 sem_t 有名信号量的注意事项
一、简介这种有名信号量的名字由类似“/somename”这样的字符串组成,注意前面有一个正 斜杠,这样的信号量其实是一个特殊的文件,创建成功之后将会被放置在系统的一个特殊的 虚拟文件系统 /dev/shm 之中,并以sem.name命名,如果不调用sem_unlink处理,则会在系统中一直保存至下一次启动。不同的进程间只要约定好一个相同的名字,他们就可以通 过这种有名信号量来相互协调。 值得一提的是,有名信号量跟 system-V 的信号量都是系统范畴的,在进程退出之后 他们并不会自动消失,而需要手原创 2022-02-25 20:52:03 · 1359 阅读 · 0 评论 -
Makefile中的一些小知识点,及常用的makefile举例
1、gcc -s(注意是小写的s)命令是什么意思?为什么用此命令编译后的程序比用优化后的程序还小?这个参数会把符号表从最终的可执行文件中删除。没有符号表,你就不能用gdb调试了,常见的用法是:比方说你的程序由 1.c 2.c 3.c 组成,那么你编译的时候应该是这样的gcc -g -c 1.cgcc -g -c 2.cgcc -g -c 3.c然后链接成可执行文件gcc -o test 1.o 2.o 3.o此时生成的 test 是可以用gdb来调试的,因为它包括了符号表等调试信息。但是如原创 2021-02-04 17:21:28 · 2504 阅读 · 1 评论 -
代码调试-打印日志输出到文件
1、将日志输出到文件函数void logprintf(const char *fmt, ...)//自定义可变参数函数{ static int bLogFirstOpen = 0; //函数体内定义的静态局部变量,它的生命期跟全局变量相同,在整个程序运行期间一直保留; //它的可见性跟局部变量相同,只有在这个函数内部才能通过这个变量名访问这个变量。 static char* Log_file = "./libs原创 2022-02-21 11:09:43 · 782 阅读 · 0 评论 -
win7+CentOS7 双系统安装记录
前提:电脑已经安装win7系统,再安装centOS71、参考:https://www.imzcy.cn/146.html安装CentOS7时按tab键的内容2、参考:https://blog.csdn.net/zjy900507/article/details/81302820最后安装引导项的内容3、其他步骤基本类似...原创 2022-02-11 16:41:47 · 151 阅读 · 0 评论 -
C++11 跨平台 代码,包括线程、时间、互斥锁、Event 等
完整代码链接:C++11 平台相关代码封装#include <string>#include <iostream>#include <memory>#include <mutex>#include <thread>#include <algorithm>#include <chrono>#include "Event.h"#include "ByteArray.h"#include "ThreadP原创 2022-02-10 21:35:03 · 904 阅读 · 0 评论 -
Linux 下gdb调试学习
还有更详细的gdb调试资料,参考Linux下如何使用gdb调试一、首先看一下编译选项下面是gcc/g++常用编译选项,我们的可执行文件要能够被gdb调试,必须在编译时加上调试信息,也即是加上-g选项例如: gcc -g test.c -o test二、看一下常用命令1、启动gdb调试,-q :不输出版本信息,或者不加-q 会显示好多版本信息此处platform.exe 为要调试的可执行程序gdb -q platform.exe xcl@ubuntu:~/platform/sampl原创 2022-02-06 15:11:14 · 1402 阅读 · 0 评论 -
C++多语言模块实现,界面显示多种语言
C++ 实现多语言打印输出原创 2022-01-27 18:11:16 · 1569 阅读 · 0 评论 -
Linux 下查找文件命令find和locate
1.whereis 文件名特点:快速,但是是模糊查找,例如 找whereis mysql它会把mysql,mysql.ini,mysql.*所在的目录都找出来.2.find / -name 文件名或文件夹名特点:准确,但速度慢,消耗资源大,例如我想找到PHP.ini的准确位置,就需要用find / -name php.ini3.locate 文件名强力推荐的方法,最快,最好的方法.CentOS7默认没有安装该命令解决方案:1、安装"locate"命令即可。在联网状态运行“yum原创 2022-01-24 16:55:58 · 299 阅读 · 0 评论 -
Linux调试智能卡环境搭建(二),其中包含Linux编译链接动态库相关
以下所需要的部分资源已上传CSDN资源一、CentOS下载离线安装包(注意安装过后的就无法只下载了)CentOS利用yum下载好rpm包,并离线安装1、联网安装好rpm包,并将下载好的包备好#yum install --downloadonly --downloaddir=/home/samba samba其中samba 是要用yum安装的安装包,/home/samba是要存放下载的yum安装包及其依赖包的保存路径2、离线的机器上,在rpm所在的文件夹内,执行以下脚本#rpm -Uvh原创 2022-01-23 11:34:44 · 1402 阅读 · 0 评论 -
调试代码快速定位到出错位置
#define ERROR_MSG(format, ...) \ fprintf(stderr, "Fi:%s Func:%s Line:%d " format, __FILE__, __FUNCTION__,__LINE__, ##__VA_ARGS__) #define DEBUG_MSG(format, ...) \ fprintf(stdout, format, ##__VA_ARGS__) 用法:rv = SKF_DigestInit(data->hDev, S原创 2022-01-19 15:40:26 · 429 阅读 · 0 评论 -
yum离线安装rpm包
CentOS利用yum下载好rpm包,并离线安装1、联网安装好rpm包,并将下载好的包备好#yum install --downloadonly --downloaddir=/home/samba samba其中samba 是要用yum安装的安装包,/home/samba是要存放下载的yum安装包及其依赖包的保存路径2、离线的机器上,在rpm所在的文件夹内,执行以下脚本#rpm -Uvh --force --nodeps *.rpm...原创 2022-01-13 18:29:51 · 5103 阅读 · 1 评论 -
CentOS8 下yum 安装gcc-4.8.2的过程,只是做个参考
一、使用yum安装默认gcc因为编译安装gcc,是需要用gcc编译的,所以首先需要安装默认gccyum install gccyum install gcc-c++ 如果没有yum源,可以先配置阿里源cd /etc/yum.repo.d/mv CentOS-Base.repo CentOS-Base.repo.bakwget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo重新加载yum源yum clea原创 2022-01-13 18:26:40 · 3974 阅读 · 0 评论 -
Linux下c语言实现输入密码的两种方法,回显为 * 和不显示
第一种:回显为*#include <stdio.h>#include <stdlib.h>/* 不用getch()实现密码的输入,回显为*,最大可输入16位数*/#define BACKSPACE 0x08 //删除的asccll码值//使密码以*号输出char* InputCode(char *pass){ int i=0; system("stty -icanon"); //设置一次性读完操作,即getchar()不原创 2022-01-07 14:14:16 · 3323 阅读 · 1 评论