- 博客(140)
- 收藏
- 关注
原创 P4_toturial练习1问题:ModuleNotFoundError: No module named ‘p4.tmp‘
P4 tutorial 练习1
2022-08-18 18:38:30
1094
1
转载 基数估计算法简介
基数估计算法简介注:本文是之前工作时在团队内分享的一个PPT的文字版本.下文中的sqrt表示开根号(sqrt(4)=2),m^n表示m的n次方什么是基数(Cardinality)基数指的是一个可重复集合中不重复元素的个数。什么是基数计算给定一个含有重复元素的有限集合,计算其不重复元素的个数。应用场景举例:某家店铺今天有多少不同用户访问 某家店铺今天接待了多少不同买家简单来说就是各种UV的计算常见的实现方式Hash集合 + 计数 或者 BitMap + 计数缺陷
2022-05-20 10:30:24
1510
原创 Python安装docx,执行时出现moduleNotFoundError:No module named ‘exceptions‘
今天在安装docx包的时候出现了:moduleNotFoundError:No module named 'exceptions' 问题,原本用的是anaconda安装的,但是openpyxl总是装不好,所以就还是换回了原来的python。对于找不到exceptions模块的问题,直接在setting里找到下载库的东西,然后下载一个python-docx库就可以了。...
2022-05-12 20:06:26
4786
1
原创 LeetCode 剑指 05 :替换空格
题目:思路:这个题我是直接另外用了一个字符串变量来存储,这样的话就另外需要O(n)的空间。也可以直接在同一个字符串s上进行操作,不过那样的话就需要先对字符串的长度进行扩充。扩充可以调用库函数 resize()实现。当利用 resize()扩容后就是给字符串进行替换操作了,这里很容易想到可以用双指针的方法,但是如果双指针我们是从前往后移动的话,那么每次需要替换空格的时候都要把后面的数据往后挪3位,如此一来时间复杂度相当于就是O(n^2)了,那还不如再创一个字符串呢。。。所以,这里的小技巧是双指
2022-05-10 19:52:43
183
原创 LeetCode 151:颠倒字符串中的单词
题目:思路:这道题实际上还是对字符串的翻转的操作,只不过限制又加多了一些,单词与单词之间有多余的空格,题目要求空格也要规整,这道题目我的思路是,先把单词里多余的空格删掉,那么这里就分为了三种情况,一种是在最前面有多余的空格,需要全部清除,第二种是单词与单词之间有多余的空格,只需要保留一个就可以,第三种就是最后面有多个空格,也全部删掉。关于去除多余的空格我的思路是利用了两个标记来进行判断,判断空格是否多余或者是合法,类似于移除元素那道题,利用双指针把字符串前移到正确的格式,然后start指针的
2022-05-10 14:05:39
256
1
转载 Compressive Sensing
压缩感知(Compressed Sensing),曾今在2008 - 2013那段时间大红大紫,在信号处理,信息论,通信,甚至计算机视觉领域的热度,直逼如今的Deep Learning,几乎称霸了各大信号处理会议和期刊。这波热潮的真正开端,应该是在06-07年,Terence Tao,Candès,Donoho他们几个搞出来的,基于sparsity prior的compressed sensing框架的时候。这套compressed sensing框架和配套理论证明了,在采样率低于critical sa
2022-05-10 10:38:58
269
原创 LeetCode 剑指 Offer 58 - II. 左旋转字符串
思路:这道题可以有两种方法,实际上就是字符串的翻转问题。这里我先对整体翻转,然后再对局部进行翻转,但是这里要注意,局部翻转的时候要注意字符的个数需要进行处理。class Solution {public: string reverseLeftWords(string s, int n) { reverse(s.begin(), s.end()); n = n % s.length(); reverse(s.begin(), s.begin() + (s.length() ..
2022-05-10 10:29:48
153
原创 翻转字符串
对于字符串的问题来说,翻转问题还是比较常见的,在LeetCode里也有这样的问题,需要倒序输出字符串的内容之类的,这种问题有多种解法,这里进行简单的总结。方法1:这种方法的原理思路是,直接创建一个新的字符串,倒序存储原本的字符串的内容,就可以实现字符串的翻转了void reverse1(string s) { string newstr; for (int i = s.size() - 1; i >= 0; i--) { newstr += s[i]; } cout <
2022-05-10 10:29:05
369
原创 LeetCode 189:轮转数组
题目:思路:最简单的方法应该是利用for多次将数组的内容一个一个的移动,但是这种方式需要多个双重for循环,比较耗时,所以这里想的方法是尽量在一个for循环中就结束操作,以下分为两种情况,一种是当我要循环的次数少一整个数组长度的一半的时候,还有是超过一半的时候,具体可以看代码,这里有一个要注意的点是,k的次数需要取模(如果是暴力法通过取模可以减少循环的次数),如果k没有取模那么可能就会有错误。代码:class Solution {public: void rotate(vec
2022-05-08 21:33:30
1171
原创 LeetCode 283:移动零
思路:暴力法多次移动肯定是不行的,会超时。提出新的方法,通过快慢指针来实现代码:class Solution {public: void moveZeroes(vector<int>& nums) { int fastIndex=0,slowIndex=0; bool flag=true; while(fastIndex<nums.size()){ if(flag==true){ ..
2022-05-08 21:28:19
584
原创 LeetCode:58. 最后一个单词的长度(C++)
题目:代码:class Solution {public: int stringLength(string str) { int length = 0; while (str[length] != '\0') { length += 1; } return length; } int lengthOfLastWord(string s) { int last
2022-04-27 10:53:36
1064
原创 LeetCode 824: (C++)山羊拉丁文
太久没有写过LeetCode啦,今天刚好突然想起来,就找了道题目写一下,这次是用C++写的,因为最近在复习C++,正好这道题也简单,就写了一下,可能写的不咋样,大家就参考参考就行~题目:我把一些操作都分别用了不同的函数来写,应该也好理解,就不写详细思路了,应该都可以很容易看出来,这里有一个要注意的点就是 a e i o u不光是小写,还有大写也是属于同一种情况,加上就可以了代码:#include<iostream>using namespace std;cla.
2022-04-21 20:11:25
677
原创 fatal error: bits/libc-header-start.h: No such file or directory #include <bits/libc-header-start.h>
在测试p4-ovs时,将p4程序编译成C程序没有问题,但是把C程序编译为.o文件时出现了如下的错误:查找原因,一个博客说法如下:这多半是你所编译的项目是在64位机器上生成32位的项目,你需要安装对应的gcc 32位的库;此时检查gcc一定有-m32的存在;你系统中gcc没有安装multilib 库;使用这个库可以在64位的机器上产生32位的程序或者库文件;你可以选择:apt install gcc-multilib进行完善安装;也可以只编译特定平台的文件: 例如 make x86_6
2022-03-25 11:24:12
2301
原创 插入内核模块时提示:ERROR:could not insert module ...../file.ko : File exits 解决办法
在插入内核模块的时候提示我 文件已经存在,但在这之前我插入内核模块提示我无法正常插入,为了避免模块有问题,所以还是决定删掉原本的模块再插入一次,这里给大家提供一个方法。查看当前的模块有哪些lsmod可以看到里面有正在运行的模块,如果找到了自己要插入的模块,那么执行删除操作sudo rmmod openvswitch然后再重新插入就可以了sudo insmod datapath/linux/openvswitch.ko然后就可以正常插入模块了。...
2022-03-25 10:08:14
7146
转载 OVS安装配置时出现configure: error:……,version newer than 5.0.x is not supported
OVS安装配置出现configure error问题阐述:在安装OVS过程中,需要先./configure对环境进行检查,要构建Linux内核模块,以便能够运行基于内核的交换机,需要在–with-linux上传递内核构建目录的位置。例如,要构建一个运行的Linux实例:./configure --with-linux=/lib/modules/$(uname -r)/build但是过程中出现错误,内容显示:configure: error: Linux kernel in /lib/mo
2022-03-25 09:47:20
653
原创 Linux内核升级(降级)
Linux升级内核的正确姿势很多童鞋在玩耍linux发行版的时候,都会遇到各种各样的问题,比如:网卡不能使用,亮度不能调节,触摸板不能识别,蓝牙不能使用等等,这些关系都和linux的内核有关系。什么是linux内核?Linux内核(英语:Linux kernel),是一种开源的类Unix操作系统宏内核。Linux内核最早是于1991年由芬兰黑客林纳斯·托瓦兹为自己的个人计算机开发的,他当时在Usenet新闻组comp.os.minix登载帖子,这份著名的帖子标志着Linux内核计划的正式开始
2022-03-25 09:44:13
5135
1
转载 Ubuntu20.04 P4-OvS安装教程
P4-OvSGit项目地址:GitHub - osinstom/P4-OvS: Bringing the power of P4 to OvS!安装文档:https://github.com/osinstom/P4-OvS/blob/p4/Documentation/intro/install/general.rst安装步骤#第一步 ==安装依赖项依赖==# apt-get update# sudo apt-get install -y automake cmake libjudy-d
2022-03-25 09:20:14
2001
1
原创 linux切换内核版本
前言做测试,需要在5.8.0的linux内核上才能正常运行,当前操作系统的linux内核为5.13.0-37-generic,需要更改运行的内核版本,所以简单记录一下怎么切换内核版本。环境操作系统:Ubuntu20.04CPU架构:x86_64目标内核版本:5.8.0步骤1. 确认当前操作系统是支持在目标内核版本上运行,这个自行百度吧2. 查看当前使用的内核版本:uname -r当前的内核版本为5.13.0-37-generic ,这里没有截图,大家执行命令后就可以.
2022-03-24 22:31:54
13220
原创 手动安装m4、autoconf、automake、libtool
安装m4wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gztar -xzvf m4-1.4.13.tar.gzcd m4-1.4.13./configure –prefix=/usr/localmake && make install安装autoconfwget http://mirrors.kernel.org/gnu/autoconf/autoconf-2.63.tar.gztar -xzvf autoc
2022-03-22 16:32:41
1286
转载 解决ubuntu安装libssl-dev失败
问题描述在ubuntu进行apt操作时,提示libssl依赖不匹配,如:The following packages have unmet dependencies: libssl-dev : Depends: libssl1.0.0 (= 1.0.1-4ubuntu5.7) but 1.0.1c-3ubuntu2.2 is to be installed Recommends: libssl-doc but it is not going to be install
2022-03-22 14:36:54
3250
2
原创 Linux 下检查 VT-d / IOMMU 是否开启
介绍VT-d和IOMMU其实都是指的I/O 虚拟化,只不过前者是Intel的叫法,后者是AMD的叫法:VT-d全称为Intel® Virtualization Technology for Directed I/O IOMMU全称为Input/Output Memory Management Unit这项技术是可以让PCI-e设备的资源直接分配给虚拟机,即PCI直通。举个例子,在虚拟客户机里可以直接访问到物理显卡,性能比使用由VMM/Hypervisor虚拟出来...
2022-03-19 19:22:14
11538
原创 DPDK编译出现错误 error: this statement may fall through [-Werror=implicit-fallthrough=] 解决方法
今天在编译dpdk的时候出现了error: this statement may fall through [-Werror=implicit-fallthrough=]的错误提示,实际上之前就遇到一次,当时也解决了,结果这次又遇到就忘了,又弄了好久,所以干脆就在这里记录一下,以防未来可能还会用到。。。提示这个错误,根据网上的教程提示,说是因为有 Makefile 文件里有 -Werror 这个参数导致的,这个参数会导致一些警告也编程error,所以要找到对应的 Makefile 文件将里面的 -Wer
2022-03-17 22:59:58
9003
3
原创 fatal: remote error: The unauthenticated git protocol on port 9418 is no longer supported.
今天在安装mininet 的时候出现了如下的错误提示某个端口不能再用了,上网找了一下解决方法,然鹅并没有解决到我的问题,包括git config --global url."https://".insteadOf git://这个方式直接导致fatal: unable to access 'https://github.com/mininet/mininet.git/': gnutls_handshake() failed: Error in the pull function.所以
2022-03-16 09:54:24
4467
14
转载 Ubuntu18.04 编译出现fatal error: bits/libc-header-start.h: No such file or directory
apt-get installgcc-multilib , 环境没有完善,安装这个即可
2022-03-14 22:05:23
457
转载 Linux网络虚拟化:1、名称空间和veth
Network namespace是linux内核提供的进行网络隔离的功能,每一个名称空间内有自己独立的网络协议栈,有自己独立的路由表等。Docker容器网络的实现和隔离就是通过网络名称空间实现的。操作网络名称空间# 添加[root@localhost ~]# ip netns add ns1# 查看[root@localhost ~]# ip netns listns1[root@localhost ~]# ip netns showns1# 在名称空间内执行命令[root
2022-03-13 15:05:38
843
原创 fatal error :numa.h:No such file or directory 解决方法
在编译DPDK的时候,出现了如下错误提示,fatal error: numa.h: No such file or directory原因是缺少安装包,执行如下命令即可。Ubuntu:$ apt-get install libnuma-dev
2022-03-06 10:01:48
5687
3
原创 C++ internal compiler error:killed (program cc1plus)
1.问题描述在编译p4c的时候报了一个错c++: internal compiler error: Killed (program cc1plus)Please submit a full bug report主要是在编译过程中,内存不够造成的。2.解决方案使用swap创建临时分区sudo dd if=/dev/zero of=/swapfile bs=64M count=16#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count
2022-03-03 21:30:05
6586
1
原创 ubuntu开启远程ssh连接
1. 更新源列表打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-->回车,就可以了。2. 安装openssh-server在终端中输入: sudo apt-get install openssh-server
2022-03-01 14:22:19
3068
原创 fatal error:Killed signal terminated program cc1plus错误解决方法
在进行make编译的时候,有的时候会出现fatal error:Killed signal terminated program cc1plus的错误提示,这是因为虚拟机的内存分配小了导致的,只需要将虚拟机的内存设置大一些即可
2022-02-27 22:18:07
7935
原创 unable to access https://github.com/....解决方法
git config --global url."https://".insteadOf git://可以把git:// 替换成 https:// 方便使用 https 协议相反的,如果想要将https 替换成 git,比如我们平时下载不到github的东西,提示 unable to access https://github.com/.......的时候就可以用git config --global url."git://".insteadOf https://这个方法来解决..
2022-02-27 15:35:55
24941
2
原创 DPDK执行测试文件报错
最近在安装DPDK的时候,由于没有开启大页导致在执行测试用例的时候报错了,具体:./build/helloworld然后报错make[2]: *** [lib/netdev-dpdk.lo] Error 1make[2]: *** Waiting for unfinished jobs....make[2]: Leaving directory `/home/vagrant/ovs'make[1]: *** [all-recursive] Error 1make[1]: Leavin
2022-02-26 11:04:41
544
转载 DPDK无法分出大页面:EAL: No free hugepages reported in hugepages-2048kB 解决方法
运行vagrant,启动vswitchd时,遇到了DPDK大页面无法分出的问题:EAL: No free hugepages reported in hugepages-2048kB解决方法:$ cd [path-to-dpdk] // 这里是ovs/deps/dpdk$ sudo ./tools/setup.sh[选择Set up hugepages的选项]> 22 // 这里22是 Set up hugepages> 35 // exit...
2022-02-25 21:46:47
2397
原创 vagrant启动报错The following SSH command responded with a non-zero exit status.
启动vagrant报错:vagrant up,报如下错误解决方案:虽然vagrant up启动报错,但是vagrant ssh还是能登陆虚拟机的,进入虚拟机后,执行如下命令sudo rm -f /etc/udev/rules.d/70-persistent-net.rules对, 问题就处在在持久网络设备udev规则(persistent network device udev rules)是被原VM设置好的,再用box生成新VM时,这些rules需要被更新。而这和Vagrantfi.
2022-02-25 21:11:11
1179
转载 VirtualBox不能建立host only network,用ccleaner解决报错E_FAIL (0x80004005)
报错语句Querying NetCfgInstanceId failed (0x00000002).返回 代码: E_FAIL (0x80004005)组件: HostNetworkInterface看网上有很多教程说在设备管理器中添加过时设备,但会超时,找了很久,最终清理注册表解决。首先在控制面版中卸载当前安装的virtualbox,在文件管理器中搜索virtualbox,将.pf和.exe以外的文件都可以删掉。安装ccleaner,安装免费版就可以下载地址然后重新安装v
2022-02-25 20:52:07
2416
转载 wget下载到指定目录并指定文件名
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ./tmp/miniconda3.sh下载到tmp文件夹,并命名为miniconda3.sh如果就是当前目录,可以写成:wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda3.sh...
2022-02-25 20:00:26
6071
转载 vagrant box 各种命令详解
最近用到了vagrant 虚拟机管理工具,学习一下他的命令vagrant box命令用于管理boxes的命令,比如添加、删除等等。此命令的功能主要通过以下子命令完成: add list outdated prune remove repackage update Box Add用法:vargant box add ADDRESS通过地址添加一个vagrant box,地址可是如下几咱: 来自可用Vagrant..
2022-02-25 18:31:02
978
原创 使用 wget 提示 scheme missing
今天在使用wget命令下载东西的时候,出现了scheme missing的错误提示应该是wget位置找不到的原因,可以用whereis wget查看wget安装在了哪然后再按照路径的形式执行wget 来代替原本的wget/usr/bin/wget http://.............
2022-02-25 10:01:59
6122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人