- 博客(61)
- 收藏
- 关注
原创 jetson 裁剪之后从sd卡版本移植到emmc版本
由于sd卡可以放置更大的系统,所以我们先使用sd卡版本的jetson开发应用,开发完应用,发行sd卡版本的jetson板没货了,这TM坑爹玩意儿要转到emmc版本,emmc版本仅支持16GB的,这TM坑爹玩意儿裁剪吧!裁剪过程忽略不谈,这玩意儿根据各家的需求,自行决定裁剪完毕,将之灌装到emmc中。
2023-09-07 09:53:15 403
原创 MYSQL事务原理分析
目录事务是什么ACID特性原子性(A)隔离性(I)持久性(D)一致性(C)隔离级别简介有些什么READ UNCOMMITTED(读未提交)READ COMMITTED(读已提交)REPEATABLE READ(可重复读)SERIALIZABLE实现MVCC锁锁类型锁算法undologredolog并发异常读异常脏读不可重复读幻读死锁加锁顺序事务是什么将数据库从一种一致性状态转换为另一种一致性状态可以是一条语句,也可以是一组语句ACID特性原子性(A)事务操作要么都做(提交),要么都不做(
2022-11-24 22:27:48 455
原创 【Django】python后端的POST与GET请求
目录简介POST与GET协议中的区别使用中的区别开始整理代码先来GET接口再来整理POST接口代码访问本路径的请求参数HttpRequest简介POST与GET超文本协议中总共四种数据交互方式:PUT、DELETE、POST、GET对应数据处理的增、删、改、查PUT、DELETE两种方式此处不做介绍主要说下POST与GET,也就是改、查协议中的区别http报文中标签不一致,一个是POST,一个是GETGET是直接将整个报文发出(这里不考虑MSS MTU这些因素),POST是先发header
2022-04-25 21:27:40 1199
原创 【Django】初入数据库--mysql
目录Django模型架构OMR与数据库的对应关系建立数据库Navicatubuntu在Django中配置数据库Django模型Django可以支持四种数据库(python3.7)PostgreSQLMySQLSQLiteOracle我这边目前只使用mMySql架构Django的模型为数据库提供了提供了统一接口,名为OMROMR与数据库的对应关系Models类 <====> 数据表对象实例 <====> 一条记录属性 <====> 字
2022-04-23 19:27:04 1646
原创 【Django】模板应用
目录模板介绍建立模板模板文件声明模板文件路径编写代码使用模板配置访问路径结果模板介绍上文helloworld中,我们是直接将hello world以文本的方式通过django.http.HttpResponse传到http访问response中,这样我们将视图与数据混合到了一起,并不方便维护代码,所以建议采用模板的方式,将视图与数据分离开来。建立模板模板文件makdir templatesvim templatges/first.html<h1>{{ hello }}</h
2022-04-23 11:31:23 554
原创 【TCP】网络拥塞
目录什么是网络拥塞如何判断如何网络拥塞RTT抖动什么时候认为出现了网络拥塞网络拥塞的解决方案慢启动避免拥塞通知发包方滑动窗口什么是网络拥塞随着网络的发展,网络服务越来越多,热门的网络服务将会面临xxxx好吧,这个有些 扯淡了,一句白话描述:接收端接受的包太多,造成了接受时候网络拥堵,此为网络拥塞如何判断如何网络拥塞RTT计算超时,从TCP的三次握手开始,一次往返数据所用时间我们名之为RTT抖动由于网络环境的突然变化,比如从开阔地进入电梯、地下车库时候网络质量急剧下降,这个时候RTT理论上将
2022-04-21 22:22:59 1559
原创 【Django】第一行代码
目录生成helloworld工程工程文件介绍ASGI与WSGI是什么coding编写视图增加路径运行生成helloworld工程django-admin startproject helloworld工程文件介绍manage.py项目管理脚本helloworld项目路径helloworld/init.py指示改文件夹是个python包helloworld/asgi.pyASGI兼容的web server入口helloworld/settings.pydjango配置文件he
2022-04-20 11:18:20 241
原创 【Django】startup
目录安装生成django项目运行django访问django服务器安装pip3 install django -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple生成django项目django-admin startproject testdjango运行djangocd testdjangopython3 mange.py runserver访问django服务器上面有输出http://1
2022-04-20 10:28:29 386
原创 TCP/IP协议
目录协议code头文件TCP/IP协议收发数据协议code头文件#include <stdio.h>#include <sys/poll.h>#include <arpa/inet.h>#define NETMAP_WITH_LIBS#include <net/netmap_user.h>TCP/IP协议struct ethhdr { unsigned char h_dst[ETH_ADDR_LENGTH]; unsigned
2022-04-19 21:14:34 2753
原创 内存泄露了好烦,搞个内存泄漏检测插件试试
目录内存泄漏原因危害解决方案如何知道内存泄漏如何定位哪一行代码引起内存泄漏手动实现工具方案一方案二现有工具介绍内存泄漏原因代码不带垃圾回收机制动态分配(malloc、new)了内存没用释放(free、delete)危害导致某些内存被系统强制回收进程可能被强制killmalloc或者new等动态内存分配失败解决方案如何知道内存泄漏如何定位哪一行代码引起内存泄漏file、func、LINEbuiltin_return_address()addr2line -f -e xxx.
2022-04-18 13:09:28 284
原创 ICMP协议
目录ICMP协议简介协议code头文件ICMP协议收发数据ICMP协议简介这是一个简单的网络收发包比如ping操作就使用该协议它能够确认数据是否可以到达目的地它可能能够得到丢包的原因它是属于IP层的协议协议code头文件#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <sys/poll.h>#
2022-04-14 22:22:47 238
原创 ARP协议以及攻击
目录ARP简介ARP是什么ARP攻击ARP协议内容code头文件ARP协议ARP攻击ARP简介ARP是什么ARP(地址解析协议),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址。ARP攻击局域网中的成员需要将网络数据发送出局域网,进入广域网,需要经过网关转发数据,但是一开始并不知道网关是在哪里,那么就需要广播寻找网关现在局域A与B属于同一局域网,A开始寻找网关,向局域网发起广播,B
2022-04-14 22:15:36 2389
原创 网络协议栈
五层协议应用层–>传输层 : 加上TCP(8B) 头传输层–>网络层 : 加上IP(20B)头网络层–>链路层 : 加上以太网(14B)头struct ethhdr { unsigned char h_dst[6]; //MAC addrs unsigned char h_src[6]; //MAC addrs unsigned short h_proto; //协议类型}链路层–>物理层 : 通过网卡做DA转换为模拟信号发送出去物理层:光纤网线中的信
2022-04-14 21:48:39 2959
原创 Nginx(filter)过滤模块开发
目录upstream(转发)模块filter(过滤器)模块handler(前置挡板)模块upstream(转发)模块filter(过滤器)模块模块配置位置选择NGX_HTTP_MAIN_CONF //放置到http的根目录下handler(前置挡板)模块...
2022-03-28 16:51:25 4559
原创 【C++11特性】右值、左值、右值引用、左值引用
目录右值引用与移动语义moveforward判定左值还是右值的方法右值引用与移动语义避免无谓的复制,提高了程序性能避免深拷贝,优化性能&& 可能是右值引用也可可能是左值引用& 也可能是左值左值,是能够被赋值的右值,是临时的movea = MyString("Hello"); // moveMyString b = a; // copyMyString c = std::move(a); // move, 将左值转为右值forward左值变右值不改变值
2022-03-21 15:12:33 974
原创 【C++11特性】智能指针
目录缘起头文件auto_ptr可能造成的问题解决方法shared_ptr存在以下问题:unique_ptrwake_ptr缘起提出该方法目的:很多时候开辟了空间都忘记释放,为了解决该问题,提出了智能指针方案头文件#include auto_ptrauto_ptr <double> pd(new double);C++98中提供方案,C++11已经放弃该方法,当其他方法不能使用时候,那就认命吧。可能造成的问题auto_ptr<string> a(new string
2022-03-21 09:17:07 1363
原创 移植第一个django项目
目录搭建环境安装miniconda安装python3.5方案一方案二安装依赖包安装mysql设置宿主机Navicat允许访问搭建环境git clone https://gitee.com/feiyujun/pyenv.git ~/.pyenvsudo vim /etc/profileexport PYENV_ROOT="/root/.pyenv" #这里需要改成用户电脑的具体地址export PATH="$PYENV_ROOT/bin:$PATH"eval "$(pyenv init -)"
2022-03-17 16:23:54 1403
原创 ubuntu 18.04 iso虚拟机安装
下载 ubuntu18.04下载地址:http://big.xiazaicc.com/bigfile/500/ubuntu-9.10-desktop-i386.iso打开VMware workstation,进入主页,选择创建新的虚拟机选择自定义,一路下一步,直至选择镜像文件。选择刚刚下载的ubuntu 18.04 iso文件下一步,输入用户名密码,此处密码为获取root权限时候需要输入的密码,需要记忆。下一步,此处需要设置该虚拟系统存放路径,以后需要复制虚拟机,只需要复制该路径便可。接下
2022-03-16 20:52:57 2051
原创 Nginx介绍与参数配置conf原理
目录Nginx优势安装指令安装方式源码安装方式操作控制方式启动conf原理配置进程数配置每一个进程对应的连接数链接方式配置路径请求路径资源路径转发路径设置负载均衡Nginx优势C语言架构,可阅读性强文档超级全面开源社区活跃,问题能够得到很快的反应性能高安装指令安装方式apt-get install nginx源码安装方式操作控制方式启动的时候conf文件解析的时候运行时候的接收到请求3.1 http3.2 rtmp3.3 smtp启动下面指令中nginx.co
2022-03-11 15:45:06 4095
原创 EPOLL的实现原理
目录协议栈为什么要在用户态协议栈实现epoll数据结构所有fd的集合:红黑树就绪fd的集合:队列协议栈如何与epoll通信如何对epoll加锁epoll_createepoll_ctlepoll_waitET与LT的区别LTET协议栈首先明确,网络协议栈中,recv与send都是异步执行,所谓的send与recv只是从buffer中读取或者写入buffer,剩余操作将在kernel中执行。epoll代码路径:kernel源码中fs/eventpoll.c为什么要在用户态协议栈实现epolle
2022-03-09 21:51:24 418
原创 UDP可靠性传输协议(QUIC)
UDP与TCP对比可靠性机制ACK机制重传机制ARQ协议的三种模式(1) 即停等式ARQ : 等待ACK, 规定事件内没有收到对面ACK,则重传该帧(2) 回退n帧ARQ : 不等待对面ACK,每个包存在生命周期,生命结束之前没有收到ACK,则回退到该该包重新发包(错误帧之后的包已经发送过,任然需要重新发送)(3) 选择性重传ARQ : 不等待对面ACK,每个包存在生命周期,生命结束之前没有收到ACK,不需要回退到该该包重新发包, 仅需重发该包流控控制控制发送方发送速率,以
2022-02-12 16:49:37 5555
原创 单例模式需要注意的问题点
目录单例模式版本一问题分析版本二问题分析版本三问题分析方案四cpu reorder代码版本五版本六单例模式保证一个类仅有一个实例,并提供一个该实例的全局访问点。版本一class A{ public : static A *GetInstance(){ if(!_instance ) _instance = new A(); return _instance; } private: A(); ~A(); A(const A & a); A&a
2022-02-08 17:10:43 648
原创 内存池的实现原理
内存池实现意义避免频繁开辟空间解决堆空间频繁开辟与关闭的造成的内存碎片。这种碎片会随着程序运行的递进,碎片内存越来越多,导致无法再次malloc而引起的程序崩溃不建议自己实现内存池,使用开源内存池jemalloctcmalloc方案1:使用链表该方案就是开辟空间只开辟,不释放,然后使用链表管理起来。typedef struct memnode { void *addr; uint32_t size; bool flag;//是否被使用 struct memnode *next;
2022-01-25 14:05:49 663
原创 Posix API实现原理(TCP)
Posix APItcp serversocket创建tcbbind作用:绑定ip、port到fd, 不调用的话使用默认值(填充五元组)listen(fd, backlog)backlog: (unix中)半连接+全连接的总数的最大值, 容易收到DDOS攻击: (其他)全连接的最大数, 不会遭受DDOS攻击acceptrecv发现tcb的recv_buffer中存在了数据,再cp过来(TCP协议栈执行)tcb每收到一个包,重置延时定时器,发现有包没有收全,比如收到了包序号1,2,
2022-01-24 16:41:45 1751
原创 C++模板显示实例化、隐式实例化、显式具体化、部分具体化介绍
目录函数模板隐示实例化显式实例化类模板隐式实例化显式实例化显式具体化部分具体化函数模板隐示实例化直接调用已经定义过的模板函数,即可让编译器将该函数实例化template <class T> void func(T &t);int a = 10;func (a);显式实例化通过一次声明模板的类型,使得函数被实例化。template <class T> void func(T &t);template void func<int>(int
2022-01-14 15:10:57 550
原创 简易websocket讲解
目录websocket协议websocket流程websocket通信的状态分析建立连接流程拆解shark包接收数据协议解码封装websocket的head包拆包发送数据websocket协议未完待续websocket流程websocket通信的状态分析enum{ WS_HANDSHARK, WS_TRANSDATA, WS_DISCONNECT,}建立连接 (WS_HANDSHARK)传输数据 (WS_TRANSDATA)断开连接 (WS_DISCONNECT)int we
2022-01-13 23:11:04 1239
原创 区块链简介
目录区块链是什么强调区块链与比特币的关系区块链的技术要点P2P网络技术分布式账本技术共识机制密码学区块链分类区块链的必要性人工智能流派个体智能结构门派(联结主义)功能门派(符号主义/逻辑注意)行为门派(控制主义)群体智能分布式人工智能区块链是什么利用链式数据结构来验证并存储数据利用分布式节点共识算法生成和更新数据利用密码学的方式保证数据传输和访问的安全利用智能合约(自动化脚步代码组成的)来编程和操作数据分布式基础架构与计算范式强调安全共识(接受众人监管)链式数据结构分布式架构计
2022-01-12 21:51:30 11492 2
原创 MYSQL索引机制
目录约束主键索引唯一索引普通索引组合索引最左匹配原则全文索引辅助索引覆盖索引聚集索引innodb表结构查询模式非聚集索引(辅助索引)myisam表结构查询模式索引失效索引原则约束外键约束约束与索引的区别索引实现索引存储innodb体系结构Buffer PoolChange buffer约束主键索引非空唯一索引,一个表只有一个主键索引;在 innodb 中,主键索引的 B+ 树包含表数据信息 PRIMARY KEY(key)唯一索引不可以出现相同的值,可以有NULL值 UNIQUE(key)
2022-01-08 21:57:20 1098
原创 【scrapy专题】搭建环境
目录安装依赖包安装package--scrapy通过镜像源网址下载通过conda 下载通过pip下载生成scrapy工程安装依赖包lxmltwistedcryptographypyOpenSSLw3libparsel安装package–scrapy通过镜像源网址下载前往https://www.lfd.uci.edu/~gohlke/pythonlibs/下载下述包进行安装注意选择适合自己的python环境lxmlTwistedscrapy通过conda 下载conda
2021-12-31 13:44:27 395
原创 ping--pong心跳包 与 keepalive的区别
ping–pong需要服务器应用端组织pong包并且回复服务器应用端发生死锁,或者应用down机,将不再返回pong包,导致客户端认为服务端断开连接服务器发生死锁,客户端可能认为服务端断开连接,客户端将执行close流程,主动关闭连接keepalive仅需要内核层支持,由内核层与客户端进行通信维持服务器应用端发生死锁,或者应用down机,客户端将依然收到服务段的回复,导致客户端认为服务端任然存活如果服务端down机,下次重启应用,客户端可能将会连接两路链接到服务端...
2021-12-25 20:52:44 1091
原创 IO集中式管理--reactor浅析
reactorreactor基于epoll的轮询而实现,上一篇博文中已经介绍了epoll的实现,其中recv与send两个接口的调用有一个缺点,那就是当数据相当多的时候,可能会有recv或者send调用时候,io的资源不够,导致了recv与send的失败。此处引入回调函数的(recv_cb, send_cb)机制,将recv与send另外处理。reactor的应用redis单reactor,所有事件由一个epoll来管理水平触发int accept(int fd, struct sockadd
2021-12-23 16:44:37 1144
原创 异步请求池
请求池通过第三方请求来做的事情DNS/NTPHTTPmysqlredis模型请求组件线程池协程异步请求池请求组件的必然性由于这种请求是需要消耗时间的,所以设立请求组件,防止该操作阻塞业务进程异步请求池发送数据(commit)启用单独线程接收返回(thread_callback)初始化发送与接收方法(init)销毁该异步请求相关资源(destroy)void init(void){ epfd = epoll_create() pthread_create}
2021-12-09 21:28:45 850
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人