基于Open VPN实现加密通信

版权声明:版权声明:本文为原创文章,版权归 Deng‘s Blog 所有,转载请注明出处! https://blog.csdn.net/deng_xj/article/details/88902700 基于Open VPN实现加密通信(以Raspberry Pi 为例为例) 数据转发+开放网络端口 配置 安装配置 配置完成后连接 服务端VPS Open VPN 服务端和客户端 证书与私钥 隧道 客户端 使用一个虚拟专用网,也就是VPN(virtual private network)可以使你的
分类: 其他 发布时间: 04-09 22:56 阅读次数: 0

Linux(编程-进程基础):03:---程序的内存结构

一、内存结构 C程序一直由下列几部分组成 正文段:这是由CPU执行的机器指令部分。通常,正文段是可共享的,。所以即使是频繁执行的程序(如文本编辑程序、C编译程序、shell等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外而修改其的指令 初始化数据段:通常将此段称为数据段,它包含了程序中需赋初值的变量 例如, C程序中任何函数之外的说明:int maxcount = 99;使此变量以初值存放在初始化数据段中 非初始化数据段:通常将此段称为bss段,这一名称来源于早期汇
分类: 其他 发布时间: 04-09 22:56 阅读次数: 0

Linux(编程-进程基础):04:---环境变量(getenv、putenv、setenv、unsetenv)

name=value name是环境变量的名称。value是环境变量的值 一、环境变量的查看 #include <stdlib.h> char *getenv(const char *name); //返回值返回:指向与name关联的value的指针,若未找到则为NULL 各系统支持的环境变量(•代表支持) 二、环境变量的设置 #include <stdlib.h> int putenv(char *str); //返回值:成功返回0;出错返回非0 int setenv(const ch
分类: 其他 发布时间: 04-09 22:55 阅读次数: 0

Linux(编程-进程基础):05:---程序跳转功能函数(setjmp、longjmp)

#include <setjmp.h> int setjmp(jmp_buf env); //返回:若直接调用则为0,若从longjmp返回则为非0 void longjmp(jmp_buf env, int val); 待更新
分类: 其他 发布时间: 04-09 22:55 阅读次数: 0

Linux(编程-进程基础):06:---进程资源函数(getrlimit、setrlimit)

一、进程资源查询于更改函数 #include <sys/resource.h> int getrlimit(int resource, struct rlimit *rlptr); int setrlimit(int resource, const struct rlimit *rlptr); //返回值:两个函数返回:若成功则为 0,若出错则为非0 备注: 进程的资源限制通常是在系统初始化时由0进程建立的,然后由后续进程继承。每种实现都可以用自己的方法对资源限制做出调整 资源限制影响到调用
分类: 其他 发布时间: 04-09 22:55 阅读次数: 0

Linux(编程-进程基础):07:---进程标识(pid、uid、gid)

一、进程标识 特点 每个进程都有一个非负整型的唯一进程ID。因为进程ID标识符总是唯一的,常将其用做其 他标识符的一部分以保证其唯一性 虽然是唯一的,但是进程ID是可服用的。当一个进程终止后,其进程ID就成为服用的候选者。大多数UNIX系统实现延迟复用算法,使得赋予新建进程的ID不同于最近终止进程所使用的ID。这防止了将新进程误认为是使用同一ID的某个已终止的先前进程 #include <unistd.h> pid_t getpid(void); //返回:调用进程的进程ID pid_t
分类: 其他 发布时间: 04-09 22:55 阅读次数: 0

Linux(编程-进程基础):08:---进程创建(fork、vfork)

一、fork() #include <unistd.h> pid_t fork(void); //返回:子进程返回0,父进程返回子进程ID,出错为-1 1.功能 fork可用于创建一个子进程 2.fork的返回值 fork函数被调用一次,但返回两次,成功时: 子进程的PID将在父进程中返回 而0将在子进程中返回 失败时: -1:是在父进程中返回,不创建子进程,并且正确设置errno 3.创建的子进程与父进程之间的关系 ①子进程是父进程的副本。例如,子进程获得父进程数据空间、堆和栈的副本 ②
分类: 其他 发布时间: 04-09 22:54 阅读次数: 0

Linux(编程-进程基础):09:---进程等待(wait、waitpid、waitid、wait3、wait4)

wait、waitpid的作用: 当一个进程正常或异常终止时,内核就向其父进程发送SIGCHLD信号。因为子进程终止是个异步事件(这可以在父进程运行的任何时候发生),所以这种信号也是内核向父进程发的异步通知。 父进程可以忽略该信号,或者提供一个该信号发生时即被调用执行的函数 (信号处理程序)。对于这种信号的系统默认动作是忽略它 当父进程接收到子进程发来的SIGCHLD信号时,可调用wait、waitpid函数来接受子进程的终止状态 终止状态判断宏 概念:wait()、waitpid()的参数可
分类: 其他 发布时间: 04-09 22:54 阅读次数: 0

Linux(编程-进程基础):10:---进程的竞争条件、轮询

一、概念 当多个进程都企图对共享数据进行某种处理,而最后的结果又取决于进程运行的顺序时,则我们认为这发生了竞态条件(race conditions) 如果在fork之后的某种逻 辑显式或隐式地依赖于在fork之后是父进程先运行还是子进程先运行,那么fork函数就会是竞态条件活跃的滋生地 通常,我们不能预料哪一个进程先运行。即使知道哪一个进程先运行, 那么在该进程开始运行后,所发生的事情也依赖于系统负载以及内核的调度算法 二、案例 在https://blog.csdn.net/qq_414532
分类: 其他 发布时间: 04-09 22:54 阅读次数: 0

Linux(编程-进程基础):11:---exec函数

一、什么是exec函数 用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序 当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其main函数开始执行 因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了 当前进程的正文、数据、堆和栈段 二、exec函数 有7种不同的exec函数可供使用,它们常常被统称为exec函数,我们可以使用这些中的其中一个 这些exec函数使得UNIX进程控制原语更加完善。用fork可以创建
分类: 其他 发布时间: 04-09 22:54 阅读次数: 0

Linux(网络编程-基本用法):01---套接字地址结构体

一、IPv4套接字地址结构 头文件:#include<netinet/in.h> 各个字段的数据类型 注意事项 Linux下struct sockaddr_in没有sin_len成员 二、IPv6套接字地址结构 头文件:#include<netinet/in.h> 注意事项 三、通用套接字地址结构 1.结构 头文件:#include<sys/socket.h> 2.作用 3.案例 注意事项 四、新的通用套接字地址结构 1.结构 头文件:#include<netinet/in.h> 2.注意事项
分类: 其他 发布时间: 04-09 22:53 阅读次数: 0

Linux(网络编程-基本用法):02---本地字节序、网络字节序

一、本地字节序、网络字节序 本地字节序:数值的存储采用小端法存储。数值低位存储在内存的地地址,数值高位存储在内存的高地址 网络字节序:数值的存储采用大端法存储。数值高位存储在内存的地地址,数值低位存储在内存的高地址 例如:有一个数0x12345678。左侧为本地字节序,右侧为网络字节序 二、字节序的转换 头文件:#include<netinet/in.h> 本地字节序转换为网络字节序: 网络字节序转换为本地字节序: 备注 三、演示案例 检验自己的主机是大端存储还是小端存储
分类: 其他 发布时间: 04-09 22:53 阅读次数: 0

C:22---预处理器(#define)

一、宏定义:#define 格式一:普通宏定义 #define 宏名称 宏对应内容 //案例: #define PERSON 17 #define PRI printf("HelloWorld\n") 格式二:带参宏定义 #define 宏名称(参数列表) 参数计算 //案例: #define ADD(x,y) x*y #define PRI(s) printf("%s\n",s) //因为是字符串,使用时需要加引号,整型不用 注意事项 带参宏定义建议每个参数建议带上括号,并且整
分类: 其他 发布时间: 04-09 22:53 阅读次数: 0

C:23---字节操纵函数(memset、memcpy、memcmp)

一、memset 头文件:#include<string.h> 功能:b把目标字符串指定数目的字节置为值c 参数:1.字符串 2.值 3.设置多少个字节 二、memcpy 头文件:#include<string.h> 功能:将指定数目的字节从源字符串移动到目标字符串中 参数:1.目标字符串 2.源字符串 3.移动的字节 三、memcmp 头文件:#include<string.h> 功能:比较两个字符串的大小 参数:1.2.比较的两个字符串 3.比较的数目 返回值:相等返回0。ptr1>ptr
分类: 其他 发布时间: 04-09 22:53 阅读次数: 0

Linux(程序设计):010---字节操纵函数(bzero、bcopy、bcmp)

一、bzero 头文件:#include<strings.h> 功能:bzero把目标字符串中指定的数目的字节置为0 常用来把一个套接字地址结构体初始化为0 参数:1.字符串 2.指定的字节 二、bcopy 头文件:#include<strings.h> 功能:将指定数目的字节从源字符串移动到目标字符串中 参数:1.源字符串 2.目标字符串 3.移动的字节 三、bcmp 头文件:#include<strings.h> 功能:比较两个字符串的大小 参数:1.2.比较的两个字符串 3.比较的数目
分类: 其他 发布时间: 04-09 22:52 阅读次数: 0

Linux(网络编程-基本用法):03---本地IP与网络IP转换

一、inet_aton、inet_addr、inet_ntoa 这三个函数只适用于IPv4地址 头文件:#include<arap/inet.h> 1.点分十进制IP字符串-->网络字节序的二进制IP 功能:将参数1的点分十进制IP字符串转为网络字节的二进制IP,并传递给参数2 参数:1.点分十进制的字符串 2.网络字节序的IP结构体地址 返回值:成功返回1。否则返回0 功能:将参数的二进制字符串转为网络字节的二进制IP,并通过返回值返回 参数:十进制的字符串 返回值:成功返回网络字节的二进制
分类: 其他 发布时间: 04-09 22:52 阅读次数: 0

Linux(编程-进程基础):12:---解释器文件

待续
分类: 其他 发布时间: 04-09 22:52 阅读次数: 0

Linux(编程-进程基础):13:---system函数

待续
分类: 其他 发布时间: 04-09 22:52 阅读次数: 0

Linux(编程-进程基础):14:---进程会计

待续
分类: 其他 发布时间: 04-09 22:51 阅读次数: 0

面试分享:最全Spring事务面试考点整理

Spring和事务的关系 关系型数据库、某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务。 Spring很显然不是事务性资源,但是它可以管理事务性资源,所以Spring和事务之间是管理关系。 就像Jack Ma虽然不会写代码,但是他却管理者一大批会写代码的码农。 Spring事务三要素 数据源:表示具体的事务性资源,是事务的真正处理者,如MySQL等。 事务管理器:像一个大管家,从整体上管理事务的处理过程,如打开、提交、回滚等。 事务应用和属性配置:像一个标识符,
分类: 其他 发布时间: 04-09 22:51 阅读次数: 0