二进制数

HTTP基础原理与koa-bodyparser原理解析

戏子无情 提交于 2019-12-14 21:48:52
一、前置知识   在理解koa-bodyparser原理之前,首先需要了解部分HTTP相关的知识。 1、报文主体   HTTP报文主要分为请求报文和响应报文,koa-bodyparser主要针对请求报文的处理。   请求报文主要由以下三个部分组成: 报文头部 空行 报文主体   而koa-bodyparser中的body指的就是请求报文中的报文主体部分。 2、服务器端获取报文主体流程   HTTP底层采用TCP提供可靠的字节流服务,简单而言就是报文主体部分会被转化为二进制数据在网络中传输,所以服务器端首先需要拿到二进制流数据。   谈到网络传输,当然会涉及到传输速度的优化,而其中一种优化方式就是对内容进行压缩编码,常用的压缩编码方式有: gzip compress deflate identity(不执行压缩或不会变化的默认编码格式)   服务器端会根据报文头部信息中的Content-Encoding确认采用何种解压编码。   接下来就需要将二进制数据转换为相应的字符,而字符也有不同的字符编码方式,例如对于中文字符处理差异巨大的UTF-8和GBK,UTF-8编码汉字通常需要三个字节,而GBK只需要两个字节。所以还需要在请求报文的头部信息中设置Content-Type使用的字符编码信息(默认情况下采用的是UTF-8),这样服务器端就可以利用相应的字符规则进行解码,得到正确的字符串。

SQL server的字段类型详解

泪湿孤枕 提交于 2019-12-12 18:02:34
SQL server的字段类型详解 bit 整型 bit数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或False 、On 或Off. 注意:很省空间的一种数据类型,如果能够满足需求应该尽量多用。 tinyint 整型 tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。这种数据类型在数据库中占用1 个字节. 注意:如果bit类型太单调不能满足您的需求,您可以考虑用tinyint类型,因为这个类型相对也是比较安全的,不接受恶意脚本内容的嵌入。 smallint 整型 smallint 数据类型可以存储从- 2的15次幂(-32768)到2的15次幂(32767)之间的整数。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间. 注意:如果tinyint类型太单调不能满足您的需求,您可以考虑用smallint类型,因为这个类型相对也是比较安全的,不接受恶意脚本内容的嵌入。 int 整型 int 数据类型可以存储从- 2的31次幂(-2147483648)到2的31次幂 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节. 注意

[LOJ2494][AHOI/HNOI2018]寻宝游戏

泪湿孤枕 提交于 2019-12-11 03:04:07
题目描述  某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会。作为新生的你,对这个活动非常感兴趣。你每天都要从西向东经过教学楼一条很长的走廊,这条走廊是如此的长,以至于它被人戏称为 infinite corridor。一次,你经过这条走廊的时候,注意到在走廊的墙壁上隐藏着𝑛个等长的二进制的数字,长度均为𝑚。你从西向东将这些数字记录了下来,形成一个含有𝑛个数的二进制数组 a1,a2,…,an。很快,在最新的一期 Voo Doo 杂志上,你发现了𝑞个长度也为𝑚的二进制串 r1,r2,…,rq。聪明的你很快发现了这些数字的含义。保持数组 a1,a2,…,an 的元素顺序不变,你可以在它们之间插入∧(按位与运算)或者∨(按位或运算)两种二进制运算符。例如:11011∧00111=00011,11011∨00111=11111。你需要插入恰好𝑛个运算符,相邻两个数之间恰好一个,在第一个数的左边还有一个。如果我们在第一个运算符的左边补入一个 0,这就形成了一个运算式,我们可以计算它的值。与往常一样,运算顺序是从左往右。有趣的是,出题人已经告诉你这个值的可能的集合——Voo Doo 杂志里的那一些二进制数 r1,r2,…,rq,而解谜的方法,就是对 r1,r2,…,rq 中的每一个值 ri

从根到叶的二进制数之和

*爱你&永不变心* 提交于 2019-12-09 22:56:17
题目 给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。 对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。 以 10^9 + 7 为模,返回这些数字之和。 思想 递归,从根节点开始,num表示根节点到当前节点路径所表示的数字大小,num每递归一次,便乘以2并且加上当前节点的值,当递归到叶子结点之后,加入总和sum中。 代码 /** * Definition for a binary tree node. * public class TreeNode { * * int val; * * TreeNode left; * * TreeNode right; * * TreeNode(int x) { val = x; } * * } * */ class Solution { static int sum ; public Solution ( ) { this . sum = 0 ; } public int sumRootToLeaf ( TreeNode root ) { pre ( root , 0 ) ; return sum ; } public void pre ( TreeNode

2BIT

让人想犯罪 __ 提交于 2019-12-04 09:00:45
bit是比特,是英文 binary digit的缩写。而Byte是字节又叫bait。 bit是表示信息的最小单位,是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量。一般来说,n比特的信息量可以表现出2的n次方种选择。 来源: https://www.cnblogs.com/hshy/p/11851525.html

Python中的四种交换数值的方法

∥☆過路亽.° 提交于 2019-12-03 05:36:51
交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的。 今天这个面试是问大家有几种办法来实现交换两个变量的值。 在没开始看具体答案前,你可以先想想看 下面分别来说说这几种方法 方法一 通过新添加中间变量temp的方式,这个方法是最简单的,每个语言都适用。 方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元组。 方法三 这个方法采用加减法来交换。不考虑效率,能达到交换的效果就行 方法四 采用异或运算,这个是不是看起来比较高大上。通过按位异或运算来交换两变量的值,可以减少变量的定义。 按位异或运算即计算机会先把十进制数转化为二进制数,并对二进制数讲行从右到左用从1开始编数,然后比较两个二进制数值相同位置的数,如果相同结果为0,不同时结果为1。 “1^1=01^0=10^0=0° 如:10101111 则结果为0101 来源: https://www.cnblogs.com/oldfish123/p/11780271.html

面试题15:二进制中1的个数

匿名 (未验证) 提交于 2019-12-03 00:34:01
一、题目 二、解法 int NumberOf1_Solution1(int n) { int count = 0; unsigned int flag = 1; while (flag) { if (n & flag) count++; flag = flag << 1; } return count; } 我们发现把一个整数减去1,都是把其二进制中最右边的1编程0,如果它的右边还有0,则所有0都变成,而它左边的所有位都保持不变,接下来我们把一个整数和它减去1的结果做位与运算,相当于把它最右边的1编程0,以1100为例,它减去1的结果是1011。我们再把1100和1011做位于运算,得到的结果是1000,我们把1100最右边的1变成了0,结果刚好就是1000。 int NumberOf1_Solution2(int n) { int count = 0; while (n) { ++count; n = (n - 1) & n; } return count; } 文章来源: 面试题15:二进制中1的个数

Java I/O

匿名 (未验证) 提交于 2019-12-02 21:40:30
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huoguang_/article/details/90342640 Java本身不包含I/O流,而是通过Java API提供的java.io包完成I/O。 为了读取或输出数据,Java程序与数据发送者或接收者之间要建立一个数据通道,这个数据通道被抽象成为---流。 按照流操作的数据单元划分,流可分为字节流和字符流。 字节流:以字节为基本单元进行数据I/O,可用于二进制数据的读写 字符流:以字符为基本单元进行数据I/O,可用于文本数据的读写 常用的I/O流类 (1)文件流: FileInputStream类/FileOutputStream类(常用于读写二进制,如图片) FileRead类/FileWriter类(常用于读写文本文件) (2)数据流: DataInputStream类/DataOutputStream类 (3)缓存流: (4)InputStreamReader/OutputStreamWriter (5)PrintStream/PrintWriter (6)标准输入/输出:System.in/System.out 对象序列化 对象序列化是指将对象写入字节流以实现对象的持久性,在需要时又可以从字节流中恢复该对象的过程(反序列化)。

自立题4-2代码示例

流过昼夜 提交于 2019-12-02 09:05:30
题目说明 将输入的二进制数(一个非“0”即“1”的字符串)转化为十进制并输出结果。 实验目的 1、使用字符数组来存放所输入的二进制数,循环处理其中的每个“位”(字符数组的元素), 最终“拼成”一个十进制数并输出。 2、加入检查输入数据的合法性。 代码示例 /* */ # include <iostream> # include <cmath> //包含pow函数 using namespace std ; int main ( ) { char a [ 20 ] ; //声明数组 int value = 0 ; //声明value,并赋初值为0 cin >> a ; //输入数组 int i = 0 ; while ( a [ i ] != '\0' ) { //检查输入是否合法,且判断输入字符串的长度 if ( a [ i ] != '0' && a [ i ] != '1' ) { cout << "输入不正确!" << endl ; system ( "pause" ) ; return 0 ; } i ++ ; } //cout<<i<<endl; i代表了总共有几个有效字符 int len = i ; while ( i > 0 ) { //倒序取数组中的字符,进行处理 //cout<<"i:"<<i<<endl; int temp = pow ( 2.0 , len -

day27总结

﹥>﹥吖頭↗ 提交于 2019-12-01 19:32:08
目录 subprocess模块 作用 day26作业最后一题 服务端 客户端 粘包问题 什么是粘包问题 TCP流式协议特点 struct模块 struct模块打包只包含数据长度的简单报头解决粘包问题 struct模块优化解决粘包问题 客户端基于TCP协议往服务端上传大文件 UDP协议 什么是UDP 服务端 客户端 基于UDP协议实现QQ聊天室 subprocess模块 作用 通过代码执行操作系统的终端命令 返回终端执行命令后的结果 import subprocess # 子进程模块 cmd = input('请输入cmd命令:') # 实例化子进程对象 obj = subprocess.Popen( # cmd命令 cmd, # Shell = True shell=True, # 返回正确结果参数 stdout=subprocess.PIPE, # 返回错误结果参数 stderr=subprocess.PIPE ) # 调用方法获取二进制正确输出结果和二进制错误信息结果并将它们合并 res = obj.stdout.read() + obj.stderr.read() print(res.decode('gbk')) # 二进制终端执行结果解码并打印 day26作业最后一题 服务端 # 服务器收到命令后执行,无论执行是否成功,无论执行几遍,都将执行结果返回给客户端 import