分类目录归档:编程汇总

海外环境下HTTP异常分析

1.背景

使用紫光展锐W307芯片(uws6130e),在海外环境使用海外sim卡(英国网络O2, Three运营商), 在使用使用过程中发现了,HTTP网络请求异常。

2.O2运营商卡

O2运营商卡,http出现的网络现象,socket建立连接后,一旦发送数据,立马会得到对端RST+ACK回复 (也就是无效请求,被拒绝)。其实服务端进行抓包,数据并未到达服务端,由于使用运营商网络 中间节点较多,我们只能从无效请求分析,猜测这个无效请求是由于什么造成的,我们使用python socket 进行尝试模拟这个请求(其实在中国请求正常,在英国这个O2运营商网络上不正常)。 最后锁定了HTTP hea

Read more

Wireshark分析HTTPS

1.说明

主要是通过wireshark抓包分析HTTPS通信过程,了解一下HTTPS通信交互流程。 可以较清晰看到TCP的三次握手,四次挥手。

2.实际抓包结果分析

备注:举例的例子,是访问海外服务环境,其实际信号较差,不光可以看到基本握手流程, 也包含了TCP的重传(超时重传、虚假重传)。

2.1 TCP握手流程

上面是TCP的三次握手,1207为客户端,建立的端口,443为服务端HTTPS的端口 1)SYN同步 1207--> 443 2)SYN,ACK 443--> 1207 3)ACK 1207--> 443 连接建立成功 上述过程信号较差(数据连接较不稳定,超时重

Read more

C++多继承内存模型

1.说明

C++允许多继承(区别于java,不能多继承,需要使用接口),但是C++的多继承也带来了 用户层面理解盲区(例如:内存布局等)

2.代码测试

实现一个基础的继承

class A{
public:
    int a;
    int b;
    virtual void function1()
    {
        cout<<"this is class A ,function1 !"<<endl;
    }
};

class B{
public:
    int a;
    int b;
    virtual void 

Read more

Makefile语法

1.make讲解

make命令执行时,需要一个Makefile文件,Makefile文件告诉make命令需要怎么样编译和 链接程序。Makefile文件指引make工具执行。

2.makefile常见模板

###########  target name
# compile all .c file in $(PWD)
SRCS:=$(wildcard ./*.c)   #通配符会自动展开,获取目录下所有c文件列表
#OBJS := $(SRCS:.c=.o) #?????
OBJS = $(patsubst %.c, %.o, $(SRCS)) #替换通配符
OUT := bpool
OUT_

Read more

卡尔曼Kalman算法使用简述

1.卡尔曼作用简述

卡尔曼滤波是一种递归的最优状态估计算法,用于传感器数据融合、导航系统和机器人 领域,核心思想,通过预测-更新循环,结合系统动态模型和当前测量值,对系统状态 做出最优估计。

2.卡尔曼核心步骤

2.1 预测步骤

状态预测 误差协方差预测

2.2 更新步骤

卡尔曼增益计算 状态更新 误差协方差更新

3.关键性参数

3.1 初始化状态估计X

系统初始状态的给定值(猜测),对于心率之类的,例如给定一个正常值。 若不准确,较大的初始化误差协方差,可使滤波器快速收敛。

3.2 初始误差协方差P

初始话状态估计的不确定性,值越大越不确定。 如果是初始化状态已经很明确,可以设置较小值,如果

Read more

pkg-config工具使用

工具作用简述

Linux下,一个用户获取某个库、模块的所有编译相关信息的工具,作用在于可以通过 该工具,轻松获取库、模块的头文件路径信息、动态链接库路径信息。极大的提升了 开发过程中,指明使用的库、模块的各种信息。

pkg-config工具获取

对于部分Linux环境,默认有,对于没有,可以使用源码进行安装pkg-config工具。

pkg-config工作机制

第一种:获取系统/usr/lib下所有的*.pc 文件(文件里面含有库、模块信息) 第二种:PKG_CONFIG_PATH环境变量所指向的路径下的所有*.pc 文件 以opencv 的 pc文件示例: '''

Package Info

Read more

搭建和部署django服务器

本文主要是记录简单的创建一个基于django的webserver服务器。

0.环境搭建

python安装

下载python3代码,以下纪录从源码安装 默认源码没有ssl模块,需要先安装好openssl组件 将python3源码中

django安装

安装django,比较麻烦的是对应的requirement

1.django工程创建

django-admin startproject djtest
创建好的工程目录结构
创建的工程在workspace下面
/djtest        #新创建的工程
manage.py  #manage.py 工程管理文件
djtest     #创建的第一个a

Read more

C语言关键字volatile

1.简介

  volatile关键字,作为一个指令关键字,确保本条指令不会因为编译器的优化而省略,且要求每次
直接读取值。该关键字可以保持内存可见性,但不是保证原子性(无法知道是否有其它线程在修改该地址的值)内存可见性,是保证每次都可以读取到最新值。
  另外一个是保证有序性(这个只是保证这个变量之前的代码一定比它先执行,但是并不保证这个变量之前的代码不可以重排序)。   一个定义为volatile的变量就是说这个变量可能会意想不到的改变,这样编译器就不会去随便假设
这个变量的值,精确说,编译器优在用到这个变量的值的时候,必须每次都小

Read more