自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 shell编程字符串的处理

shell字符串处理常用技巧

2022-06-03 00:41:55 199

原创 contiki编程(二)

上一篇讲完了如何定义一个process,很多同学便接着有疑问了,那我怎么启动它们呢?其实在上一篇文章也出现了,不过我们没拿出来细讲,请看大屏幕:没错,就是大名鼎鼎的45行:AUSTOSTART_PROCESSES. 让我们来看一下它究竟为何方神圣:好像也就是定义了一个叫autostart_processes[]的数组,然后把里面的变量置为我们传入的变量(注意,可变参数哦,意思就是你要启动多个你就传入多个变量)?是的,没错!就是这么简单。但为什么声明了这个变量就能自动启动了呢?这个且听

2021-03-27 22:19:11 1359

原创 contiki编程(一)

继续上一篇文章已经过去很久了。工作原因也正式开始接触contiki。上次已经简单将cooja跑起来,这次来看一下基本的demo吧。contiki里面已经有一些适配的硬件平台,手上没有相关硬件,最简单的就是编译本地native版本了。当执行make没有指定target参数,便执行相当于执行make target=native额,好像还没有说在哪个目录。直接上图:hello-world-example.csc :上一篇文章提到过的cooja仿真文件; Makefile:这是工程Makefil.

2021-03-20 23:27:43 1603

原创 一次内核网络listendrops分析记录

背景如下:手上有一个机顶盒开发板,于是想通过adb连接进去进行各种操作。1. 机顶盒开机,设置静态ip:192.168.10.99 pc的ip: 192.168.10.88eth0 Link encap:Ethernet HWaddr inet addr:192.168.10.99 Bcast:192.168.10.255 Mask:255.255.255.0 inet6 addr: fe80::232:88ff:fe00:1/64 Sc...

2021-02-04 11:24:21 1577

原创 windows开启linux子系统,将ubuntu安装到其他盘

windows目前支持wsl, 这对于需求不高又不想安装虚拟机的用户着实是一大福音。按照microsoft store的标准步骤安装,下载速度慢,并且会安装到C盘。本文来描述解决这个问题。1. 首先,到microsoft官网下载对应的ubuntu版本:WSL版本建议获取下载链接后复制到迅雷下载比较快。2. 然后,将下载完成后的appx文件后缀改为zip,然后解压到你希望放到的目标盘符3. 点击解压的ubuntu*.exe文件即可完成安装...

2021-01-04 22:51:30 2443 1

原创 ubuntu快速更新软件源

当安装完ubuntu后,需要下载安装一些软件时,如果采用默认的软件源,则更新非常慢,这时候需要切换到国内的镜像源。由于ubuntu版本差异,网上找的软件源可能与安装版本不匹配,导致更新后可能出现各种库版本依赖不正确。因此在更新镜像地址时,注意不需要修改其他。 sudo vim /etc/apt/sources.list 在vim命令行模式中,输入命令:%s/archive.ubuntu.com/mirrors.aliyun.com/g这条命令的意思是将sources.list中所有archi

2021-01-04 22:44:05 819

原创 contiki仿真模拟器cooja的使用

最近想学习一下无线传感器网络,慢慢接触了6LowPan和Ipv6以及RPL, 但是手里没有相关硬件,再机缘巧合的情况下发现了contiki,以及里面强大的模拟器。这篇文章就记录一下cooja仿真模拟的步骤吧。下面看一下效果图:运行cooja得下载contiki源码以及搭建环境等一系列复杂步骤,但是我们可以通过直接下载官方虚拟机镜像运行,省去了搭建环境的麻烦。虚拟机镜像:Instant Contiki-3.0下载好后用Vmware打开就好了。进入cooja目录user@instant-.

2020-12-13 14:36:18 3418 2

原创 C语言条件判断&&、|| 中的条件执行

我们先来看一个简单的C语言程序:#include <stdio.h>#include <stdbool.h>bool test_1 (bool flag){ printf("%s\n", __func__); return flag;}bool test_2 (bool flag){ printf("%s\n", __func__); return flag;}int main (int argc, char *argv[]){ print

2020-12-05 11:05:05 2127

原创 C++虚继承构造函数的坑

我们先来看一段简单的代码:#include <iostream>class Vehicle {public: Vehicle(double x = 0.0, double y = 0.0);};Vehicle::Vehicle(double x, double y){ cout << "Vehicle construct: x=" << x << " y=" << y << endl;}cla

2020-09-27 11:19:03 275

原创 我的vim配置,自己用着开心就好

set nocompatibleset backspace=2syntax onset numberlet g:clang_use_library = 1" set the runtime path to include Vundle and initializeset rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()Plugin 'gmarik/Vundle.vim'Plugin 'taglist.vim'Plugin 'The-N.

2020-09-17 00:37:07 131

原创 使用iperf进行组播性能测试

虽然平时我们使用的交换机可以直接处理ethernet报文,但是对于电力猫或者其他传输介质的网络设备,测试网络性能最简单的方法就是使用iperf了。 关于ipef的的大部分用法网上几乎都能找到。现在就来讲讲比较偏门的测试组播性能的方法。在PC1 设置发流: iperf -c 224.0.67.67 -u --ttl 5 -t 3600 -b10M在PC2收流:iperf -s -u -B 224.0.67.67 -i 1...

2020-08-28 17:50:22 5466 7

原创 C语言可变参数传递

#include <stdio.h>#include <stdarg.h>//name前面的#号将name表示的值字符串化//##的作用是如果format后面没有参数,可避免逗号存在的错误导致语法错误#define DEBUG(name, id, format, ...) print_log(#name, id, format, ##__VA_ARGS__)void print_log(char *name, int id, char *format, ...){.

2020-07-25 14:41:39 1095

原创 NTP服务器配置

一、国内的NTP服务器地址如下:a. time.buptnet.edu.cn 北京邮电大学b. slb.time.edu.cn 清华大学c. slc.time.edu.cn 北京大学d. sld.time.edu.cn 东南大学二、 Linux网络时间服务器a. 安装: sudo apt-get install ntpb. 配置文件 /etc/ntp.conf :NTP服务的主要配置文件; /usr/share/zoneinfo :这...

2020-07-13 01:15:25 3105

原创 彻底l理解大端与小端在内存中的关系

大小端的概念在这里不解释了,我们直接引用一句很经典的话:大端模式:高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中;小端模式:高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中;但是看这文字解析是很枯燥的,我们来一步步说明。首先:我们都知道数据在内存的分布,栈是往下增长的,堆是往上增长的。也就是:#include <stdlib.h>#include <unistd.h>#include <string.h>.

2020-05-30 13:10:52 282

原创 C/C++中的符号与extern C的作用

很多人都知道,在C++中调用C的api, 需要在C++中使用extern "C"来修饰。那么,为什么呢???我们需要先来了解几个概念:符号: 在链接中,我们将函数和变量统称为符号(Symbol), 函数名或变量名就是符号名(Symbol Name)。每个目标文件(使用gcc -c参数编译出来的.o文件)都会有一个相应的符号表(Symbol Table)。这个表里面记录了目标文件中所用到的所有符号。每个定义的符号都有一个对应的值,叫做符号值(Symbol Value),对于变量和函数来说,符号值就

2020-05-15 02:33:19 293

原创 setjmp 与 longjmp 的使用

今天在浏览公司代码的时候发现了一个很有意思的函数...setjump百度了一下,这个setjump函数已经使面向过程编程变得扑朔迷离了~先看代码吧:#include <stdlib.h>#include <setjmp.h>#include <stdio.h>jmp_buf b;void test(){ longjmp(b, 1);}int main(){ if (setjmp(b)) printf("...

2020-05-10 23:00:26 388

原创 Linux C中动态链接库的全局变量问题

如果一个共享对象libtest.so中定义了一个全局变量G,而进程A和进程B都使用了libtest.so, 那么当进程A改变这个全局变量G的值时,进程B中的G会受到影响吗?古人云:实践出真知.../** =====================================================================================**...

2020-05-05 11:43:51 3782

原创 python 解决2018年刑侦推理试题

编程这种东西。。。就是要有东西玩玩才开心。。。废话不多说,直接上源码:import sysfrom itertools import productanswer = list('0AAAAAAAAAA')def q1(choice): if answer[1...

2020-04-20 01:20:38 341

原创 GCC 编译文件生成可执行文件的过程分析

学硬件的同学第一件事肯定是GPIO点亮LED灯,而学软件的同学,大部分做的第一件事就是Hello world!#include <stdio.h>int main(int argc, char *argv[]){ printf("Hello World!\n"); return 0;}相信上述代码很多同学闭着眼睛都能敲出来,然后使用下面的命令编译...

2020-04-20 01:08:51 3091

原创 PyQt5 + Opencv 显示摄像头图像

需要安装的库 PyQt5 opencv效果代码from PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtGui import *import cv2import sysclass Example(QWidget): def __init__(self): super(...

2020-02-09 23:36:43 3369 4

原创 shell编程中declare命令的使用

众所周知,shell变量是弱类型变量,默认情况下都是字符串型。字符串不能直接进行数学运算,如果想要进行数学运算,便可使用declare声明变量类型。declare命令的用法:declare [+/-] [选项] 变量名+ : 取消变量类型的属性- :给变量设定类型属性选项类型:a : 将变量声明为数组型i : 将变量声明为整数型x :将变量声明为环境变量r......

2019-02-16 22:35:09 9188

原创 Android Logcat日志优化

      在android开发中,logcat日志是最常用的打印调试功能。但是android提供的logcat类只能打印TAG信息以及content,因此,受C语言宏定义__FILE__以及__FUNCTION__的启发,优化logcat日志输出。import android.util.Log;public class LogcatUtils { private static fin...

2018-08-26 23:18:49 377

原创 一个JNI的简单示例

在JAVA开发中,常常听到JNI这个名词,那么JNI究竟是什么呢?JNI,全称JAVA Native Interface,它提供若干API使得JAVA可以和C/C++语言通信。简单的说,也就是C/C++和JAVA能够相互调用。流程如下:1.新建java测试类,名为JNITest.java,内容如下:class JNITest{ //在加载此类时先加载libhello_JNI...

2018-08-26 23:13:17 367

原创 如何使用Android.mk编译动态库以及可执行文件

     在Android开发中,开发层次我认为大体上分为三个层次:     1.应用层:应用层主要通过eclipse以及android studio编写上层业务以及UI等,主要依赖于系统提供的接口。     2.framework层:此层次主要为应用层apk提供接口实现相应的功能。Framwork提供的功能可谓非常多。在Android中,大量应用了Binder进程通信,完成了各种丰富的操...

2018-08-26 22:17:39 13144

空空如也

空空如也

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

TA关注的人

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