自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

转载 linux启用NAT功能,双网卡共享网络,iptables简单实现

此处研究网络上的教程一大堆,利用iptables增加了很多条规则,但是每个教程还都不太一样,所以自己去研究了下iptables的具体教程,发现网上很多教程都是冗余了很多不相关的指令,真正有用的就是iptables的NAT启用,下面以图示拓扑说一下详细内容。简单来说就是一台linux有两块网卡,比如eth0及eth1,eth0可以正常连接外网,eth1连接内部网络,那么可以通过iptables实现eth1内部网络上的设备共享eth0的网络,即linux充当网关的作用。掩码:255.255.255.0。

2023-11-14 14:09:47 1320

转载 c++ vector 自定义排序的问题

如果要自己定义STL容器的元素类最好满足STL容器对元素的要求 必须要求: 1、Copy构造函数 2、赋值=操作符 3、能够销毁对象的析构函数 另外: 1、可用的缺省构造函数,序列型容器必须,用于初始化元素 2、==操作符定义,用于判断相等 3、<操作符定义,关联型容器必须,用于缺省排序你可在struct內加入 operator < ,就可以使struct有排序能力.因為而你的pcd struct內沒有指針,所...

2022-03-09 10:22:58 707

转载 笔记本电脑、VM虚拟机、开发板三者网线连接互ping

笔记本电脑、VM虚拟机、开发板三者网线连接互ping笔者在做NFS挂接练习时,发现网上的资料大部分是笔记本电脑(以下简称PC)和虚拟机PING、PC和开发板PING,这样的方式不是我想要的。笔者需要使用无线网卡上网,使用有线网卡进行三者互PING。在开始正文之前我们要先确定三者在同一网段:PC:192.168.7.7虚拟机:192.168.7.5开发板:192.168.7.9一、使用网线连接PC与开发板,配置PC有线IP1、在没有使用网线连接PC与开发板时,PC机的网络连接如下图,

2021-10-19 22:55:03 1264 1

原创 Nand flash

Nand Flash控制器初始化读Nand Flash 芯片ID读Nand Flash 状态寄存器擦除Nand Flash 某个块随机读Nand Flash 数据随机写数据到Nand Falsh

2021-09-26 22:26:07 1987

转载 s5pv210 nandflash学习(一)

一、Flash简介:Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。这类设备,除了Flash,还有其他比较常见的如硬盘,ROM等。与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。Flash的内部存储是MOSFET,里面有个悬浮门(Floa

2021-09-25 21:18:08 450

原创 qemu模拟arm嵌入式环境

文章目录一、安装qemu二、安装arm工具链三、下载编译内核四、制作根文件系统五、qemu 运行1、直接启动kernel2、通过uboot启动内核2.1 配置QEMU Tap网络2.2 安装配置tftp2.3 编译uImage2.4 编写启动脚本boot.sh3. 挂载 NFS 文件系统六、qemu 模拟机连接外网七、其他1、制作多分区镜像2、运行qemu一、安装qemu1、下载编译安装# wget https://download.qemu.org/qemu-4.2.0.tar.xz# tar x

2021-04-29 13:57:47 2796

转载 VXlan 技术实现原理

Vxlan 概况VXLAN(Virtual eXtential LAN)意为虚拟可拓展局域网。随着大数据、云计算技术的兴起以及虚拟化技术的普及,VLAN技术的弊端逐渐显现出来,具体表现为如下3个方面:(1) 虚拟化技术的发展促使大数据、云计算技术公司采用单个物理设备虚拟多台虚拟机的方式来进行组网,随着应用模块的增加,对于支持VLAN数目的要求也在提升,802.1Q标准中的最多支持4094个VLAN的能力已经无法满足当下需求。(2) 公有云提供商的业务要求将实体网络租借给多个不同的用户,这些用户对于网络

2021-03-05 15:43:43 494

原创 Tire树(字典树)

1.1、什么是Trie树  Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。  Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符连接起来,为该节点对应

2021-02-04 15:04:52 1806 1

转载 KMP算法

有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍。但KMP算法真的不适合这样去学。最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉。我试着从这个思路再介绍一下。大家只需要记住一点,PMT是什么东西。然后自己临时推这个算法也是能推出来的,完全不需要死记硬背。KMP算法的核心,是一个被称为部分匹配表(Partial Match Table)的数组。我觉得理解KMP的最大障碍就是很多人在看了很多关于KMP的文章之后,仍然搞不懂PMT中的值代表了什么意

2021-02-04 14:49:21 380

原创 Aho-Corasick 多模式匹配算法(AC自动机)

一、概述Aho-Corasick算法是多模式匹配中的经典算法,目前在实际应用中较多。Aho-Corasick算法对应的数据结构是Aho-Corasick自动机,简称AC自动机。搞编程的一般都应该知道自动机FA吧,具体细分为:确定性有限状态自动机(DFA)和非确定性有限状态自动机NFA。普通的自动机不能进行多模式匹配,AC自动机增加了失败转移,转移到已经输入成功的文本的后缀,来实现。在学习AC自动机之前我们必须要学习一下KMP算法和Trie树(字典树)KMP算法:http://www.active

2021-02-04 14:34:29 2030

转载 网络数据包分析 网卡OFFLOAD

对于网络安全来说,网络传输数据包的捕获和分析是个基础工作,绿盟科技研究员在日常工作中,经常会捕获到一些大小远大于MTU值的数据包,经过分析这些大包的特性,发现和网卡的offload特性有关,本文对网卡Offload技术做简要描述。 网络分片技术MTU最大传输单元,指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单...

2021-01-29 10:37:16 725

转载 Linux常用网络指令

手动/自动设定与启动/关闭IP 参数: ifconfig, ifup, ifdown这三个指令的用途都是在启动网络接口,不过, ifup 与ifdown 仅能就/etc/sysconfig/network-scripts 内的ifcfg-ethX (X 为数字) 进行启动或关闭的动作,并不能直接修改网络参数,除非手动调整ifcfg-ethX 档案才行。至于ifconfig 则可以直接手动给予某个接口IP 或调整其网络参数!底下我们就分别来谈一谈!ifconfigifconfig 主要是可以手动的启动、

2021-01-27 14:37:44 257

原创 eclipse 配置 C++

前言最近有项目需要c++,但是c++自从离校那时就没碰过了,所以要重新学习下。因为曾经为了做自己的博客网站,学了java,下载了eclipse,也是在eclipse上写的博客网站的,所以对eclipse还是相对熟悉的。而且平时写代码都是用vim,所以对市面上所有的IDE都不熟悉。所以现在学习c++也就使用eclipse。一、使eclipse支持c++如果你下载的就是for c++ 的,就不要看了,看看一些配置就行了。因为我原来下载的使为java的,所以不支持c++。1、安装CDT打开eclips

2021-01-15 22:21:56 4033

原创 Nginx + tomcat(三) 使用https 代替 http

一、为什么使用HTTPS  为什么要使用HTTPS,就两个字:安全。我们知道在http下都是明文进行数据传输的,任何人截取到了你的数据,都能获取你的信息。这么大的隐患没有人能够人忍受得了,所以为了消除这些隐患,我们必须使用更安全的方法。  HTTPS 在 TCP 和 HTTP 之间增加了 TLS(Transport Layer Security,传输层安全),提供了内容加密、身份认证和数据完整性三大功能。这样,即使其他人截取到了你的数据,他们也是一脸懵逼的,看到的都是 一串毫无规则的字母数据。我们的隐私

2021-01-13 14:49:25 246

原创 Nginx + tomcat(二) Nginx + tomcat 的实例运用

前言 本篇文章是根据我的实际例子来写的,Nginx的配置就是我的博客网站所运用的一、安装Ngiinx 我的云服务器是Centos,直接命令安装就可以了,当然你也可以到官网下载源码编译后安装,如果你明确自己需要Nginx哪些功能,比较推荐源码安装,可以根据自己的需求来配置Nginx 编译参数。>yuminstallnginx-y 安装完成后,就可以在/etc/nginx/ 下找到Nginx的所有配置了。二、配置...

2021-01-13 14:48:33 613

原创 Nginx + tomcat(一) Nginx 基本介绍与常用功能

一、Nginx 能做什么1.HTTP 服务器(动静分离)例如nginx + tomcat中,可以将动态资源交给tomcat,而静态资源则交给Nginx,这样可以减轻tomcat的负担,增加效率。2. 反向代理 3. 负载均衡4. 正向代理二、HTTP 服务器Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现,首先看看...

2021-01-13 14:47:52 2351 1

原创 给文件加解密(openssl 实现)(二)公钥私钥加解密

一、openssl 命令openssl rsautl [-in file] [-out file] [-inkey file] [-pubin] [-certin] [-passin arg] [-sign] [-verify] [-encrypt] [-decrypt] [-hexdump]选项:-in file:指定输入文件-out file:指定输出文件-inkey file:指定密钥输入文件,默认是私钥文件,指定了"-pubin"则表示为公钥文件,使用

2021-01-13 11:31:32 1150

原创 给文件加解密(openssl 实现)(一)

一、前言当有重要的敏感数据的时候,给文件和目录额外加一层保护是至关重要的,特别是当需要通过网络与他人传输数据的时候。给文件加密有多种命令,如gzexe、tar、shc 。在这里我来介绍一下利用tar和openssl来实现加密,并用脚本实现它,以后实现运行一下脚本就行了。二、openssl 命令OpenSSL 是一个开源项目,其组成主要包括一下三个组件:openssl:多用途的命令行工具libcrypto:加密算法库libssl:加密模块应用库,实现了ssl及tlsopenssl 作为

2021-01-13 11:13:57 824

原创 一些挺有用的Linux命令总结

Linux命令dd 命令hexdumpdd 命令dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >ibs=bytes:一次读入bytes个字节,即指定一个块大小为byt

2021-01-12 15:02:51 214

原创 c lua API 及 读取lua配置文件

一、lua c api 是什么  C API是一组能使C/C++代码与Lua交互的函数。其中包括读写Lua全局变量、调用Lua函数、运行一段Lua代码,以及注册C函数以供Lua代码调用等。二、常用api  在Lua和C语言之间进行数据交换时,由于两种语言之间有着较大的差异,比如Lua是动态类型,C语言是静态类型,Lua是自动内存管理,而C语言则是手动内存管理。为了解决这些问题,Lua的设计者使用了虚拟栈作为二者之间数据交互的介质。在C/C++程序中,如果要获取Lua的值,只需调用Lua的C API函

2021-01-11 15:21:57 1476 1

原创 使用autotools生成Makefile(四) 总结

configure.ac文件标签名说明AC_PREREQ声明autoconf要求的版本号AC_INIT定义软件名称、版本号、联系方式AM_INIT_AUTOMAKE必须要的,指定编译参数AC_CONFIG_SRCDIR用来侦测所指定的源码文件是否存在, 来确定源码目录的有效性AC_CONFIG_HEADER指定产生的配置文件名称(一般是config.h),用于生成config.h文件,以便 autoheader 命令使用AC_PROG_CC用以

2021-01-05 11:10:11 869

原创 使用autotools生成Makefile(三) 生成库文件(.so和.a) 、安装、打包

一、代码详情见上一篇博客。二、创建各个目录下的Makefile.am1、顶层目录SUBDIRS = test_src test_example2、test_src 目录 Makefile.am:SUBDIRS = moudle1 moudle2 moudle33、test_src/moudle1 目录 Makefile.am:NULL =# 这里使用libtool工具生成库文件,包含动态库.so 和 静态库.a# 如果不想生成静态库:./configire --disable-s

2021-01-05 10:30:04 1089

原创 使用autotools生成Makefile (二) 多目录编译

代码详情主目录下有俩个目录test_example和test_src。test_src 下有3个目录,分别对应三个功能模块。模块3依赖于模块1和模块2。现在需把三个模块分别编译成三个静态库。test_example是一些例子,sample.c 依赖于模块3实现的应用实例。生成Makefile1、先创建各个目录下的Makefile.am主目录 Makefile.am:# 在这里列举子目录时,如果目录之间存在依赖关系时,那么一定要在这里使用先后关系体现出来(被依赖的写在前面)# 读者可以尝试打乱

2020-12-31 16:40:20 520

原创 使用autotools生成Makefile(一)

为什么使用automake  在 Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个 Makefile 就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于 make的文档比较多,不过写一个 Makefile 总是一件很烦人的事情,GNU Autoconf 及Automake 这两个软件就是帮助程序开发者轻松产生 Makefile 文件的。现在的 GNU 软件如 Apache, MySQL

2020-12-30 16:16:15 481

原创 Linux 不常用系统函数总结

Linux 系统函数sleep()和sched_yield()sleep()和sched_yield()sched_yield()会让出当前线程的CPU占有权,然后把线程放到静态优先队列的尾端,然后一个新的线程会占用CPU。那这个和sleep()有啥区别呢?sched_yield()这个函数可以使用另一个级别等于或高于当前线程的线程先运行。如果没有符合条件的线程,那么这个函数将会立刻返回然后继续执行当前线程的程序。而sleep则是等待一定时间后等待CPU的调度,然后去获得CPU资源(这也是uslee

2020-12-11 10:07:29 158

转载 APT攻击是什么?该如何预防?

多数人可能从来没听过APT攻击,文章内容通俗易懂,耐心看哦。APT名字来源 Advanced(高级)Persistent(持续)Threat(威胁),中文全称高级持续性威胁。而这种攻击最主要的两个特点就是高级、持续。高级指的是攻击手段高,攻击对象也高端,通常攻击对象是国家政府单位,政府或企业高管人员,国家机密军事机密等。持续指持续性,说明攻击时间极长,通常以年为单位,想象一下,当一个技术顶尖的组织,分工明确,目的明确,长期盯着要害部门,收集情报,获取重要机密,并且长期潜伏,攻击持续数年甚

2020-12-08 10:20:58 5772

原创 Linux 查看进程内存方法

查看进程内存方法一方法二方法三方法一首先得到进程id, 例如查看MySQL内存使用情况ps -ef | grep mysqldtop -p 1253方法二直接使用ps命令:ps -aux | grep mysqld第一个标注的地方是CPU和内存占用率,后面的192296是物理内存使用量,单位是k,此时mysql大约占用192M内存方法三查看进程的status文件(1253是进程id):cat /proc/1253/status得到结果跟上面两个方法一样。另外可以

2020-11-09 10:59:11 2817

转载 Linux top 命令

top命令用法top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。top的使用方式 top [-d number] | top [-bnp]参数解释:-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。 -b:以批次的方式执行top。 -n:与-b配合使用,表示需要进行几次top命令的输出结果。 -p:指定特定的pid进程号进行观察。在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的

2020-11-09 10:29:17 97

原创 Smart20学习记录----异步通知

异步通知:阻塞与非阻塞访问、poll()函数提供了较好地解决设备访问的机制(应用程序主动访问)异步通知:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步 I/O”阻塞 I/O 意味着一直等待设备可访问后再访问,非阻塞 I/O 中使用 poll()意味着查询设备是否可访问,而异步...

2020-10-28 14:26:00 54

原创 make源文件时出现 cannot find -lstdc++ 错误

解决CentOS 7 中,make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误在CentOS 7中,使用static方法编译,需要安装static version of glibc-static libstdc+±static。使用如下命令安装yum install glibc-static libstdc+±static...

2020-05-26 09:46:18 480

原创 Murmurhash 哈希算法 介绍与实现

最近在项目代码中看到了一种hash算法,以前没有遇见过,在此记录下来。 一、介绍  MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。 由Austin Appleby在2008年发明, 并出现了多个变种,都已经发布到了公有领域(public domain)。与其它流行的哈希函数相比,对于规律性较强的key,MurmurHash的随机分布特征表现更良好。—摘自w...

2019-10-31 15:47:05 24993 3

原创 哈希表

文章目录一、哈希表二、代码实现 一、哈希表  哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。  记录的存储位置=f(关键字)  这里的对应关系f称为散列函数,又称为哈希(Hash函数),采用散列...

2019-10-31 15:33:47 112

转载 hash函数总结

文章目录一、性能分析二、各类hash函数代码  一、性能分析  常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。  常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RS...

2019-10-31 15:13:37 470

原创 数据结构及算法基础 之图 (六) 最小生成树

文章目录一、什么是最小生成树二、普里姆算法—Prim算法三、代码实现四、示例测试  一、什么是最小生成树  现在假设有一个很实际的问题:我们要在n个城市中建立一个通信网络,则连通这n个城市需要布置n-1一条通信线路,这个时候我们需要考虑如何在成本最低的情况下建立这个通信网?  于是我们就可以引入连通图来解决我们遇到的问题,n个城市就是图上的n个顶点,然后,边表示两个城...

2019-10-31 14:35:39 265

原创 数据结构及算法基础 之图(五) 图的广度优先遍历

文章目录一、广度优先遍历定义二、基本实现思想三、代码实现(以图的存储结构邻接表为例)四、示例测试  一、广度优先遍历定义  图的广度优先遍历BFS算法是一个分层搜索的过程,和树的层序遍历算法类同,它也需要一个队列以保持遍历过的顶点顺序,以便按出队的顺序再去访问这些顶点的邻接顶点。 二、基本实现思想顶点v入队列。当队列非空时则继续执行,否则算法结束。...

2019-10-31 14:22:28 1882

原创 数据结构及算法基础 之图(四) 图的深度优先遍历

文章目录一、深度优先遍历的递归定义二、基本实现思想三、示例测试  一、深度优先遍历的递归定义   假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的...

2019-10-31 14:07:02 891

原创 数据结构及算法基础 之图(三)十字链表

文章目录一、十字链表二、代码示例  一、十字链表  邻接表在某种程度上是有缺陷的,它表示了出度就表示不了入度。所以出现了十字链表,它既能表示入度也能表示出度。  说通俗点,十字链表也就是邻接表的改进,顶点集包含两个指针,firstIn和firstOut, firstIn指向入边表(逆邻接表), firstOut表示出边表(也就是邻接表)。(需要先理解上面代码中顶点集...

2019-10-31 11:32:13 457

原创 数据结构及算法基础 之图(二)邻接表

文章目录一、邻接表二、代码实现  一、邻接表  邻接矩阵看上去是个不错的选择,首先是容易理解,第二是索引和编排都很舒服~但是我们也发现,对于边数相对顶点较少的图,这种结构无疑是存在对存储空间的极大浪费。因此我们可以考虑另外一种存储结构方式,例如把数组与链表结合一起来存储,这种方式在图结构也适用,我们称为邻接表(AdjacencyList)。邻接表的处理方法是这样:...

2019-10-31 11:23:24 651

原创 数据结构及算法基础 之图(一)邻接矩阵

文章目录一、图结构介绍二、邻接矩阵三、代码实现  一、图结构介绍图的定义与术语:http://www.360doc.com/content/17/0714/10/17799864_671231489.shtml 二、邻接矩阵  简单理解就是用一个二维矩阵(二维数组)来存储。按照标记来查看此边是否存在。邻接矩阵为每一种情况都做好了空间预存。  适用场景:...

2019-10-31 10:24:57 517

原创 二叉搜索树(排序二叉树)

文章目录一、排序二叉树性质二、代码实例三、测试结果  一、排序二叉树性质就是若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于其根节点的值。换句话说就是:任何节点的键值一定大于其左子树中的每一个节点的键值,并小于其右子树中的每一个节点的键值。 二、代码实例tree.h#ifndef __...

2019-10-31 10:14:43 203

mingw-w64-install.exe

安装mingw-64,为编译c/c++

2021-01-15

test_so_sample-1.0.0.tar.gz

autotools 测试代码,直接./confugure

2021-01-05

test-autotools-code.tar.gz

autotools 测试代码

2021-01-05

linux_nand_flash_driver.rar

Linux nand flash 驱动,下载于https://www.cnblogs.com/linux-rookie/articles/3016990.html

2019-10-29

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

TA关注的人

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