unsigned

python 存储引擎

99封情书 提交于 2020-02-12 14:46:46
# 存储引擎 -- 存储数据的方式# 一张表 # 数据 # 表的结构 # 索引(查询的时候使用的一个目录结构)# Innodb存储引擎 mysql5.6之后的默认的存储引擎# 数据和索引存储在一起 2个文件 # 数据索引\表结构# 数据持久化# 支持事务 : 为了保证数据的完整性,将多个操作变成原子性操作 : 保持数据安全# 支持行级锁 : 修改的行少的时候使用 : 修改数据频繁的操作# 支持表级锁 : 批量修改多行的时候使用 : 对于大量数据的同时修改# 支持外键 : 约束两张表中的关联字段不能随意的添加\删除 : 能够降低数据增删改的出错率# Myisam存储引擎 mysql5.5之前的默认的存储引擎# 数据和索引不存储在一起 3个文件 # 数据\索引\表结构# 数据持久化# 只支持表锁# Memory存储引擎# 数据存储在内存中, 1个文件 # 表结构# 数据断电消失# 面试题# 你了解mysql的存储引擎么?# 你的项目用了什么存储引擎,为什么? # innodb # 多个用户操作的过程中对同一张表的数据同时做修改 # innodb支持行级锁,所以我们使用了这个存储引擎 # 为了适应程序未来的扩展性,扩展新功能的时候可能会用到...,涉及到要维护数据的完整性 # 项目中有一两张xx xx表,之间的外键关系是什么,一张表的修改或者删除比较频繁,怕出错所以做了外键约束4

网络嗅探

只愿长相守 提交于 2020-02-12 11:50:58
windows下不能获取数据链路层的数据 所以拿不到mac地址,RawSocket 编程 要用管理员权限打开 看到这张图,我又想起了期末考试的时候,考了tcp源地址和目的地址,记反了,丢了四分,我现在还记忆深刻。唉~ 1 #include <winsock2.h> 2 #include <ws2tcpip.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #define MAX_HOSTNAME_LAN 255 6 #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) 7 #define MAX_ADDR_LEN 16 8 9 struct ipheader{ 10 unsigned char ip_h1:4; //先存低位,再存高位。这样两个的顺序就反了 11 unsigned char ip_v:4; 12 unsigned char ip_tos; //服务类型 8位 13 unsigned short int ip_len; //ip数据包总长度 14 unsigned short int ip_id; //16位标识 15 unsigned short int ip_off; //标志加偏移量(16)位 16 unsigned char ip_ttl; //8位 生成时间 17 unsigned

sockaddr结构体

淺唱寂寞╮ 提交于 2020-02-12 08:57:05
sockaddr 本词条缺少 名片图 ,补充相关内容使词条更完整,还能快速升级,赶紧来 编辑 吧! 一,用于存储参与(IP)Windows套接字通信的计算机上的一个internet协议(IP)地址。为了统一地址结构的表示方法 ,统一接口函数,使得不同的地址结构可以被bind()、connect()、recvfrom()、sendto()等函数调用。但一般的编程中并不直接对此数据结构进行操作,而使用另一个与之等价的数据结构sockaddr_in。这是由于Microsoft TCP/IP 套接字 开发人员的工具箱仅支持internet地址字段,而实际填充字段的每一部分则遵循sockaddr_in数据结构,两者大小都是16字节,所以二者之间可以进行切换。 外文名 sockaddr 性 质 通用地址结构 定 义 struct sockaddr { 说 明 sa_data : 是14字节的协议地址 目录 1 sockaddr 2 sockaddr_in 1 sockaddr 其定义如下: struct sockaddr {   unsigned short sa_family; /* address family, AF_xxx */   char sa_data[14]; /* 14 bytes of protocol address */   }; 说明: sa_family

网络字节序与主机字节序

做~自己de王妃 提交于 2020-02-12 08:56:08
不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种 1. Little endian:将低序字节存储在起始地址 2. Big endian:将高序字节存储在起始地址 LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说 低位值小,就应该放在内存地址小的地方,也即内存地址低位 反之,高位值就应该放在内存地址大的地方,也即内存地址高位 BE big-endian 最直观的字节序 地址低位存储值的高位 地址高位存储值的低位 为什么说直观,不要考虑对应关系 只需要把内存地址从左到右按照由低到高的顺序写出 把值按照通常的高位到低位的顺序写出 两者对照,一个字节一个字节的填充进去 例子:在内存中双字0x01020304(DWORD)的存储方式 内存地址 4000 4001 4002 4003 LE 04 03 02 01 BE 01 02 03 04 例子:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为 big-endian little-endian 0x0000 0x12 0xcd 0x0001 0x23 0xab 0x0002 0xab 0x34 0x0003 0xcd 0x12

IORESOURCE_IO和IORESOURCE_MEM

♀尐吖头ヾ 提交于 2020-02-11 12:11:34
内核中有很多资源,但属于IO资源的有: #define IORESOURCE_IO 0x00000100 /* Resource type */ #define IORESOURCE_MEM 0x00000200 #define IORESOURCE_IRQ 0x00000400 #define IORESOURCE_DMA 0x00000800 本文我主要研究IORESOURCE_IO IORESOURCE_MEM,及地址空间的管理,涉及的文件只有kernel/resource.c. 这两种资源本质上都是一段地址空间. 只是类型不一样 IORESOURCE_IO 指的是IO地址空间,这个空间从kernel编程上来看,只能通过专门的接口函数才能访问.硬件层面上,cpu需要用特殊指令才能访问或需要用特殊访问方式才能访问,不能直接用指针来寻址.在PC机上,其指的就是PCI/CPU IO address space.在嵌入式中,基本上没有io address space. IORESOURCE_MEM 指的是属于外设或者用于和设备通讯的支持直接寻址的地址空间.PC机上,主板上北桥上连的内存都是交给kernel直接管理,或者都是用于软件执行,所以这部分内存不属于IORESOURCE_MEM, IORESOURCE_MEM主要是指PCI设备的 memory address space.

2.1/2.2字符的编码方式及显示

非 Y 不嫁゛ 提交于 2020-02-11 00:06:17
1.字符集 ASCII码 一字节;包括英文数字这些符号 GB2312编码 汉字为两字节;与ASCII码兼容,后来扩展汉字又有了GBK编码 Unicode编码 包括中,日,韩,英文等格式;有Utf-32,Utf-16,Utf-8三种格式 Utf-32:每个字符都采用4字节(32bit),缺点浪费空间 Utf-16(错一个字符则整个乱码):每个字符的长度为2字节(16bit),常用 Utf-8(容错能力强):每个字符的长度为1~4字节,越常用的字符越短 一般一个文件的开头都会有标志,通过16进制编辑文件便可看到 Utf-8: EF BB BF Utf-16:FE FE Utf-32:FF FE 没有前缀的表示ANSI格式(GBK) 2.文件的格式不同,执行的结果也不同 3.如何解决文件格式不同,编码也不同的问题? eg: gcc -finput-charset=GBK -fexec-charset=UTF-8 -o utf-8_2 ansi.c 告诉gcc编译器该文件是GBK编码,需要转换为UTF-8编码后在编译 注: -finput-charset= ? // 表示源文件的编码格式,默认UTF-8 -fexec-charset= ? // 表示可执行程序里的字以什么方式表示,默认UTF-8 4.点阵显示 说明: 这里字符选用8*16(内核中有),汉字HZK16*16(自己找库) 链接

位图bitmap数据结构

谁都会走 提交于 2020-02-10 21:51:37
位图是一种很特殊的数据结构,可以利用位图来排序,但是这种排序方法对输入的数据是有比较严格的要求(数据不能重复,大致知道数据的范围)。举个例子,假如有一个集合{3,5,7,8,2,1},我们可以用一个8位的二进制向量set[1-8]来表示该集合,如果数据存在,则将set相对应的二进制位置1,否则置0.根据给出的集合得到的set为{1,1,1,0,1,0,1,1},然后再根据set集合的值输出对应的下标即可得到集合{3,5,7,8,2,1}的排序结果。 位图的应用: 1.给40亿个不重复的unsigned int的整数,没有排过序,然后再给一个数,如果快速判断这个数是否在那40亿个数当中。 因为unsigned int数据的最大范围在在40亿左右,40 10^8/1024 1024*8=476,因此只需申请512M的内存空间,每个bit位表示一个unsigned int。读入40亿个数,并设置相应的bit位为1.然后读取要查询的数,查看该bit是否为1,是1则存在,否则不存在。 2.给40亿个unsigned int的整数,如何判断这40亿个数中哪些数重复? 同理,可以申请512M的内存空间,然后读取40亿个整数,并且将相应的bit位置1。如果是第一次读取某个数据,则在将该bit位置1之前,此bit位必定是0;如果是第二次读取该数据,则可根据相应的bit位是否为1判断该数据是否重复。

2440 裸机学习 点亮LED

萝らか妹 提交于 2020-02-10 02:55:43
1。首先需要知道 led 是受哪一个gpio口控制 从上图可以看出,两个led灯是受GPF4 GPF5控制的,低电平有效。 2、怎么控制GPF4 GPF5 通过2440的芯片手册可以看出,需要设置GPF的引脚只需要设置,两个寄存器就可以了。GPFCON GPFDAT。   C语言部分: void delay(volatile int d)//延时函数 { while (d--); } int led_on(int which) { unsigned int *pGPFCON = (unsigned int *)0x56000050; unsigned int *pGPFDAT = (unsigned int *)0x56000054; if (which == 4) { /* 配置GPF4为输出引脚 */ *pGPFCON = 0x100; } else if (which == 5) { /* 配置GPF5为输出引脚 */ *pGPFCON = 0x400; } /* 设置GPF4/5输出0 */ *pGPFDAT = 0; return 0; } 汇编代码部分: .text .global _start _start: ldr sp,=4096 mov r0,#4 bl led_on ldr r0,=100000 bl delay mov r0,#5 bl led_on

CC2540开发板学习笔记(七)—— 睡眠唤醒

余生长醉 提交于 2020-02-09 19:09:36
(一)中断唤醒 一、实验内容 通过中断唤醒在睡眠模式下的CC2540 二、实验原理 1、系统电源管理(工作方式) (1)全功能模式: 高频晶振(16M或者32M)和低频晶振(32.768K RCOSC/XOSC)全部工作,数字梳理模块正常工作 (2)PM1: 高频晶振(16或者32M)关闭,低频晶振(32.768K RCOSC/XOSC)工作,数字核心模块正常工作。 (3)PM2: 低频晶振(32.768K RCOSC/XOSC)工作,数字核心模块关闭,系统通过 RESET,外部中断或者睡眠计时器溢出 唤醒 (3)PM3: 晶振全部关闭,数字处理核心模块关闭,系统只能通过 RESET或外部中断 唤醒。此模式的功耗最低。 2、LED硬件原理图 3、寄存器配置 PCON(0X87) 系统电源模式控制寄存器 BIT0 置1将强制系统进入SLEEPCMD所指定的电源模式,所有中断信号都可以清除此置位 SLEEPCMD(0XBE) 系统电源模式设定 BIT1:BIT0 00:全功能模式 01:PM1模式 10:PM2模式 11:PM3模式 三、实验代码 #include<ioCC2540.h> //宏定义声明 #define uint unsigned int #define uchar unsigned char #define LED2 P1_1 #define KEY1 P0_0 /

可重入函数

 ̄綄美尐妖づ 提交于 2020-02-08 22:18:28
一、可重入函数 1)什么是可重入性? 可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。 2)可重入函数: 不为连续的调用持有静态数据。 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。 如果必须访问全局变量,记住利用互斥信号量来保护全局变量。 绝不调用任何不可重入函数。 3)不可重入函数: 函数中使用了静态变量,无论是全局静态变量还是局部静态变量。 函数返回静态变量。 函数中调用了不可重入函数。 函数体内使用了静态的数据结构; 函数体内调用了malloc()或者free()函数; 函数体内调用了其他标准I/O函数。 函数是singleton中的成员函数而且使用了不使用线程独立存储的成员变量 。 总的来说,如果一个函数在重入条件下使用了未受保护的共享的资源,那么它是不可重入的。 4)示例 在多线程条件下,函数应当是线程安全的,进一步,更强的条件是可重入的。可重入函数保证了在多线程条件下,函数的状态不会出现错误