自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 二进制数的1的数量

这个实现很多地方都有。

2024-09-25 17:40:01 221

原创 二进制数的最低不为0的位置和最高不为0的位置

求一个二进数的最低不为0的bit位,可用于使用bit位来高效管理资源的场景

2024-09-20 14:55:22 289

原创 vscode远程免密登入

windows vscode免密登录linux服务器

2024-07-26 16:22:09 429

原创 平衡二叉树 红黑树

红黑树的简单性质和结构设计

2024-03-20 14:22:04 299

原创 popen,程序中执行shell命令

popen的返回值只与是否fork或者分配空间成功有关。至于我们的shell命令是成功还是失败呢?取决于pclose的返回值,如果返回0,代表shell命令成功,否则失败。

2022-07-19 21:02:06 1590

原创 一种结构化数据编码、解码ASN.1报文的设计方法

ASN.1简介ASN.1抽象语法标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。对于ASN.1中的数据,包含整形,字符型,时间,字符串等我们需要不同的函数或者方案来进行编码和解码。因此本文设计一种自动化编码和解码的计算机程序,根据设计好的结构体,自动编码成ASN.1格式的

2022-02-21 16:49:56 6958

原创 Linux dts设备树和platform驱动详解

概念小麦大叔 2019-05-06 22:56:31 12603 收藏 135什么是设备树 dts(device tree)?设备树(Device Tree)是描述计算机的特定硬件设备信息的数据结构,以便于操作系统的内核可以管理和使用这些硬件,包括CPU或CPU,内存,总线和其他一些外设。dtb文件会被保存到ROM中,最终通过bootbolader被加载到内核,这样内核就可以通过解析设备树来让驱动去控制实际的硬件了。设备树是通过Open Firmware项目从基于SPARC的工作站和服务器派生而来的

2022-02-14 14:17:24 9090 7

原创 Linux之shell编程

walkingLL 2018-09-22 08:51:26 14717 收藏 129shell历史Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Sh

2022-02-10 15:33:00 1834

原创 linux之shell-信号及trap信号捕捉

trap命令trap ‘commands’ signal-list:当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令trap signal-list:trap不指定任何命令,接受信号的默认操作.默认操作是结束进程的运行trap - signal-list: 重置某个信号的处理为默认值,恢复信号trap ’ ’ signal-list:trap命令指定一个空命令串,允许忽视信号.注意:trap 对同种signal只能相应一种设定,如果在一个shell里面设置多个tr

2022-02-08 16:24:28 3012 1

原创 linux常用命令

Axn_很优秀 2018-08-29 09:45:41 88305 收藏 1739分类专栏: linux 文章标签: linux linux命令字体颜色含义:浅蓝色:表示链接文件;灰色:表示其他文件;绿色:表示可执行文件;红色:表示压缩文件;蓝色:表示目录;红色闪烁:表示链接的文件有问题了;黄色:表示设备文件,包括block,char,fifo。用"dircolors -p"命令可以看到缺省的颜色设置,包括各种颜色和"粗体",下划线,闪烁等的定义。日常使用命令/常用快捷键命令开关机命

2022-02-08 13:57:44 2168

原创 虚拟机上网及静态IP配置

电脑设置(1)打开“网络和internet”设置(2)更改适配器选项(3)右键点击上网网卡,选择属性(4)选择共享,勾选2个允许,选择你要共享到的网卡,确定;会弹出一个提示框,自动设置上面选择网卡的IP为192.168.137.1,点击是(5)查看上面选择网卡的IPv4地址,确实已经变化虚拟机网络模式设置(1)点击编辑,点击虚拟网络编辑器,一般默认的有3张网卡,模式分别为桥接、仅主机、NAT模式(2)点击右下角中间小图标,选择网络适配器,选择NAT模式,点击确定虚拟机网络地址设

2022-02-07 14:11:25 4124

原创 以太网通讯报文详解

以太网通讯报文详解来源:编程帮,http://c.biancheng.net/view/6385.html1、物理层协议有:EIA/TIA-232, EIA/TIA-499,V.35, V.24,RJ45, Ethernet, 802.32、数据链路层协议有:Frame Relay,HDLC,PPP, IEEE 802.3/802.23、网络层协议有:IP,IPX,AppleTalk DDP4、传输层协议有:TCP,UDP,SPX,ICMP5、会话层协议有:RPC,SQL,NFS,NetBIO

2022-02-07 13:59:21 25699

原创 一种MQTT客户端消息队列的设计

MQTT简介MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器

2022-01-10 10:35:36 5049

原创 图之图片格式

什么是图计算机能以位图和矢量图格式显示图像。常见的图像文件格式有:BMP、JPG(JPE,JPEG)、GIF等。打开WINGDI.h文件,搜索"BITMAPFILEHEADER"就可以定位到BMP文件的位图文件的数据结构定义。位图(Bitmap)图像又称点阵图或光栅图,它使用我们称为像素(象素,Pixel)的一格一格的小点来描述图像。计算机屏幕其实就是一张包含大量像素点的网格。当我们把位图放大时,每一个像素小点看上去就像是一个个马赛克色块。矢量图(Vector)使用直线和曲线来描述图形,这些图

2022-01-08 11:38:14 3490

翻译 docker应用

docker应用docker简介fei2636 2018-02-27 10:55:20 61903 收藏 103Docker 是一个开源项目,为开发者和系统管理员提供了一个开放的平台,在任何地方通过打包和运行应用程序作为一个轻量级的容器。Docker 在软件容器内自动部署应用程序。Docker 最开始由 Solomon Hykes 作为 dotCloud 一个内部开发项目,一个企业级的 PaaS (platform as a service 服务平台),该软件现在由 Docker 社区和 Docker

2022-01-01 15:30:08 579

翻译 Makefile教程

工程实例工程目录automake.sh#前面可以创建一些目录啥的# 获取第一个参数,可以删除所有的中间件重新编译One_Flag=$1if [ "clean" == "$One_Flag" ]; then rm -rf $PrjDir/Output/Exe/* rm -rf $PrjDir/Output/Obj/*.o exit 1fi# 将标准 Makefile 文件复制到每个不含该文件的 SoftDirfor a_dir in $(find $SoftDir

2022-01-01 14:36:02 1622

翻译 CMake 手册详解之二 实例

Cmake Practicefishmov 2017-10-13 15:27:01 2324 收藏 2最近在编译安装OpenCV和OpenGL的时候,发现构建系统都换成了cmake自动生成Makefile,确实方便了不少,因此打算学习下cmake的语法规则.参考书籍<< Cmake Practice>>,这个学习笔记也是参考这本书来练习的.全部代码路径:https://github.com/xuewend/learn-cmake背景知识cmake是kitware公司以及

2022-01-01 14:08:45 778

翻译 CMake 手册详解之一 语法

来源 http://www.cnblogs.com/coderfenghc/tag/cmake/公司的一个项目使用CMake作为跨平台构建工具;业务有需求,当然要好好研读一下官方的技术手册。目前的计划是先把官方手册翻译一下,了解清楚CMake中的各种命令、属性和变量的用法。同时在工作中也会阅读CMake的真实源码,后续会基于此陆续写一些工程中使用CMake的心得。CMake的版本也在不停更新,有些新的命令和变量会随着版本更新添加进来,这是后事了,暂且不管;现在锁定CMake 2.8.3作为手册翻译的版本。

2022-01-01 14:04:32 1543

原创 C++双冒号::的作用

天占 2013-10-12 14:45:05 1653 收藏 2类作用域作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分。如:class B :public AA中有虚函数member(),那么B中的member()怎么调用A中的member()呢?只需要加类作用域::即可。B::member() {A::member(); …}命名空间作用域用来注明所使用的类、函数属于哪一个命名空间的。如:std::cout

2022-01-01 11:37:57 310

翻译 C语言str系列与mem系列函数总结

马赛克| 2020-01-04 18:06:59 205 收藏前言这两个系列函数都包含在 string.h这个头文件中,经常被用来进行数组的数据操作。大多数情况下,str系列操作字符数组,mem系列操作其他类型的数组。strlen 统计字符串的长度(空值结束符之前的数目)strcpy 将某个字符串复制到字符数组strcmp 比较两个字符串的大小strcat 将两个字符串连接起来strncpy 将某个字符串前n个字符复制到字符数组strncmp 比

2022-01-01 11:32:36 1044

翻译 C++之Lambda表达式

https://www.cnblogs.com/jimodetiantang/p/9016826.htmlC++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda语法分析Lambda 的语法形式如下:[capture](parameters) mutable ->return-type{statement}[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}。可以看到,Lambda

2022-01-01 10:31:58 16791

翻译 C++设计模式

Lethe♪ 2017-08-19 10:18:46 14697 收藏 153总结和整合了网上一些设计模式资料。软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。设计模式的分类总体来说设计模式分为三大类:(1)

2021-11-06 19:11:49 735

原创 C++模板

liitdar 2018-06-05 20:51:03 2789 收藏 23分类专栏: C/C++语言 文章标签: C++ 模板概述C++是一门强类型语言,所以无法做到像一些动态语言(如 python 、 javascript )那样:编写出一段通用的逻辑,然后把任意类型的变量传入进行处理。不过,泛型编程弥补了C++的这个缺点,通过把通用逻辑设计为模板,摆脱了类型的限制,提供了继承机制以外的另一种抽象机制,极大地提升了代码的可重用性。模板是泛型编程的基础,泛型编程是一种代码编写方式,通过使用泛型编程

2021-11-06 16:39:39 1143

原创 C++类的单例模式

zhanghuaichao 2018-03-06 17:03:00 45832 收藏 135分类专栏: C/C++三种单例模式转自博客:http://blog.youkuaiyun.com/q_l_s/article/details/52369065简介单例模式是使用广泛的一种设计模式,又称为单件模式、单子模式。其意图是保证一个类仅有一个实列,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多的地方都需要这样的功能模块,如系统的日志输出,操作系统只能有一个窗口管理器,一台pc连一个键盘等等。单例模

2021-11-06 16:05:43 4432 1

原创 C++标准库之typeid、static_cast和dynamic_cast

typeidxuqing-ICT 2014-05-04 22:22:07 19592 收藏 17man_of_sillyy 2016-06-26 14:07:43 20106 收藏 5简介typeid是C++的关键字之一,等同于sizeof这类的操作符。typeid操作符的返回结果是名为type_info的标准库类型的对象的引用。在将该操作符之前,不得不提的是RTTI(Run-Time Type Identification,运行时类型识别),其实就是说在运行期得到对象的实际的类型。这立刻使我们

2021-11-06 14:40:50 552

原创 windows和linux快捷键

windowswin系列Win 桌面与开始菜单切换按键Win + R 运行命令窗,cmdWin + I 快速打开Win10设置栏Win + E 快速打开 文件资源管理器(我的电脑)Win + D 最小化桌面Win + L 锁屏win + Q 查找Win + Home 快速清理活动窗口,除当前窗口外的所有窗口都会最小化Win + TAB 预览所有当前打开的窗口,并且可以按需进行快速切换Alt + Tab 切换窗口Win +↑/↓/←/→ 窗口可以变为 1/4 大小放置在屏幕 4 个角落

2021-10-30 18:38:01 723

原创 43. 字符串相乘

0.题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。1.解法1不能直接乘,那就只能用最朴素

2021-05-01 12:00:11 157

原创 42. 接雨水

0.题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。标题1.解法1我们先考虑这样一个数组[2,1,0,1,3]能接多少雨水,显然,这样的结构只需要两端减中间就可以了。我们称上面的结构为“四川盆地”,

2021-04-18 12:27:56 77

原创 41. 缺失的第一个正数

0.题目描述给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:31.解法1O(n)复杂度,代表不能排序,只能遍历几次。常数空间,代表不能申请同等大小数组。看似无解,也确实无解。但是我们是引用的数组,当前数组是可以更改的,于是我们就有了额外的n个int空间,这样就可以做了。如果能申请int m[n]的空间,我们只需要把对应序列的数放到m空

2021-04-15 23:38:55 159

原创 40. 组合总和 II

0.题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7], [1, 2, 5], [2, 6], [1, 1, 6]]1.解法1跟39题一样的思

2021-04-13 21:30:17 68

原创 39. 组合总和

0.题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]1.解法1注意到元素可以重复使用,故对函数而言,是有恒定不变的源数据的,因此,显

2021-04-12 23:36:09 131

原创 38. 外观数列

#0.题目描述给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:111211211111221第一项是数字 1描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “

2021-04-11 22:35:18 83

原创 36. 有效的数独

#0.题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。输入:[[“8”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".","."],[".",“9”,“8”,".",".","

2021-04-11 18:42:37 80

原创 35. 搜索插入位置

#0.题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2#1.解法1这题就很简单了,二分法的基本应用。class Solution {public: int searchInsert(vector<int>& nums, int target) { int i = 0, j = nums.s

2021-04-11 16:45:46 83

原创 34. 在排序数组中查找元素的第一个和最后一个位置

#0.题目描述34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]#1.解法1由于是升序数组,我们还是可以用二分法将目标值找出来。然后分别前后遍

2021-04-11 16:36:43 307

原创 33. 搜索旋转排序数组

#0.题目描述整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums

2021-04-11 12:41:37 93

原创 32. 最长有效括号**

#0.题目描述给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”#1.解法1这题贼有意思,我一直以为是个难度中等的题,结果我做了2个晚上才做出来,发现等级是难度。显然,这个判断有效括号是个类似的题,因此,首选栈方法。对于一个括号序列")()()((())()()",要找最长有序序列。正向思维:我们依次入栈、出栈,把最长的求出来就行了,但是这样需要很多的标志位,要么"(()

2021-04-10 17:17:56 90

原创 31. 下一个排列

#0.题目描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]#1.解法1自然地,从后往前处理比较容易,我们需要找到第一个前数比后数小的位置,然后做一些处理即可。当找到这个位置时,此位置后面的数一定都是降序排列,我们先转成升序,然后找到刚刚比此位置大的数,交换位置即可。如果

2021-04-08 21:21:06 83

原创 30. 串联所有单词的子串*

#0.题目描述给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例 1:输入:s = “barfoothefoobarman”,words = [“foo”,“bar”]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 “barfoo” 和 “foobar” 。输出的顺序不重要, [9,0] 也

2021-04-06 23:20:46 104

原创 29. 两数相除

#0.题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333…) = trun

2021-03-28 11:40:11 125

空空如也

空空如也

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

TA关注的人

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