二进制

php接收二进制文件转换成图片

泄露秘密 提交于 2020-03-24 06:58:45
$GLOBALS['HTTP_RAW_POST_DATA'] 最近在做Flash在线裁剪图片 生成图片的东西。 通过Flash POST 图片的二进制数据给php,由php生成图片保存。 开始想到用$_POST来接受。后来发现行不通。 查阅了很多资料 明白了所以然,这里做一个笔记: 于PHP默认只识别application/x-www.form-urlencoded标准的数据类型。 因此,对型如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用$_POST数组来接收就会失败! 故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA'] 来接收。 另外还有一项 php://input 也可以实现此这个功能 php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input和 $HTTP_RAW_POST_DATA 不能用于 enctype="multipart/form-data"。 我在Flash中使用JPGEncoder把BitMapData转成二进制,然后post给php php页面代码如下: <?php $filename="teststream.jpg";/

如果有一个特别大的访问量到数据库上,怎么做优化?主从复制、读写分离

余生颓废 提交于 2020-03-23 17:07:34
第一个就是使用优化查询的方法。这个在前期的内容中有具体说明,这里不再做说明。 第二、这里简要说明一个以下几个方法:    主从复制、读写分离、负载均衡    目前,大部分的主流关系型数据库都提供了主从复制的功能,通过配置两台(或多台)数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站可以利用数据库的这一功能, 实现数据库的读写分离,从而改善数据库的负载压力。 一个系统的读操作远远多于其写操作,因此写操作发向master,读操作发向slaves进行操作(简单的轮循算法来决定使用哪个slave)。   利用数据库的读写分离,web服务器在写数据的时候,访问著数据库(Master),主数据库通过主从复制机制将数据更新同步到从数据库(Slave),这样web服务器读数据的时候,就可以通过从数据库获得数据。这一方案使得在大量读操作的web应用可以轻松地读取数据,而主数据库也只会承受少量的写入操作,还可以实现数据热备份,可谓是一举两得的方案。 1.复制的基本原则    MySQL复制是异步的且串行化的;   每个Slave只有一个Master;   每个Slave只有一个唯一的服务器ID;   每个Master可以有多个Slave; 2.一主一从常见配置:   MySQL版本一致且后台以服务运行;   主从都配置在[mysqld]结点下,都是小写,主机修改my

Java语言基础组成

孤者浪人 提交于 2020-03-23 10:32:48
  写完才发现,这个博客不提供目录这个功能,真是想骂爹了。。。。。。 目录 关键字 标识符 注释 常量和变量 运算符 语句 函数 数组 1、关键字   描述:刚刚开始学这个的时候,真是傻傻分不清楚,不过没关系,不懂就记住概念就行。   概念:被Java语言赋予了特殊含义的单词( 关键字中所有字母都为小写 )       2.标识符   概念:开头无数字,不用关键字,区分大小写 3.注释(不多说,菜鸟都懂) 4.常量和变量   常量:表示不能能改变的数值   分类:整数,小数,布尔,字符,字符串,null(以前一直以为就空的意思,没想到是个常量)   普及知识:(进制间的换算,二进制、八进制、十进制、十六进制等)   可能有很多人都觉得这个知识不用到,没什么有。但是工作经历告诉我,这个知识还是非常重要的。前段时间在做手环的时候,数据接收手环数据就是有的16进制。当时转的我一脸的恶心。   十进制转二进制   sum = (10)50   正整数:除2取余数直到余数为1或0,倒叙排列,结果110100       负整数:取反加一,ex:上正数结果为110100,那么负数结果:001010 1   小数:乘二取整,正序排列   ex:0.4转二进制:0110   0.4x2 = 0. 8 -----0    0.8 x2 = 1. 6 -----1    0.6 x2 = 1. 2 -

《深入浅出WPF》笔记——资源篇

若如初见. 提交于 2020-03-23 09:26:59
原文: 《深入浅出WPF》笔记——资源篇   前面的记录有的地方已经用到了资源,本文就来详细的记录一下WPF中的资源。我们平时的“资源”一词是指“资财之源”,是创造人类社会财富的源泉。在计算机程序中,只要是对程序有用的对象都可以统称资源。不过本文只记录WPF对象级资源和二进制资源。 一、WPF对象级资源的定义与查找   在WPF中,每一个界面元素都是一个对象,并且都有一个名为Resources的属性,这个属性继承于FrameworkElement类,其类型为ResourceDictionary。由于元素的属性名是复数形式,所以每一个对象可以拥有多个资源,由于资源的多样化,获取到的资源的类型为object类型,所以在获取到资源时,必要时要进行转化成符合自己要求的类型;由其类型可以知对象资源是以键值对的形式来存储的,当需要某个资源时,可以通过key索引来获取。下面看一个小实例: <Window x:Class="Chapter_08.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly

Python实现十进制和二进制之间相互转换

家住魔仙堡 提交于 2020-03-23 08:25:46
十进制转二进制 原理:采用除2取余,逆序排列输出。 实现:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后依次翻转排序即可得到二进制数,在Python中我们采”//”(地板除)的方法实现转换 # 十进制整数转二进制def decToBin(num): arry = [] #定义一个空数组,用于存放2整除后的商 while True: arry.append(str(num % 2)) #用列表的append方法追加 num = num // 2 #用地板除求num的值 if num == 0: #若地板除后的值为0,那么退出循环 break return "".join(arry[::-1]) #列表切片倒叙排列后再用join拼接print(decToBin(10))输出结果:1010 二进制转十进制 原理:要从右到左用二进制的每个数去乘以2的相应次方求累加。 # 二进制整数转十进制def binToDec(binary): result = 0 #定义一个初始化变量,后续用于存储最终结果 for i in range(len(binary)): #利用for循环及切片从右至左依次取出,然后再用内置方法求2的次方 result += int(binary[-(i + 1)]) * pow(2, i) return

内容传送编码Base64原理

夙愿已清 提交于 2020-03-23 03:18:32
什么是Base64?   按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形 式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.) 为什么要使用Base64?   在设计这个编码的时候,我想设计人员最主要考虑了3个问题:   1.是否加密?   2.加密算法复杂程度和效率    3.如何处理传输?   加密是肯定的,但是加密的目的不是让用户发送非常安全的Email。这种加密方式主要就是“防君子不防小人”。即达到一眼望去完全看不出内容即 可。基于这个目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是如何收发Email, 而并不是如何安全的收发Email。因此算法的复杂程度要小,效率要高,否则因为发送Email而大量占用资源,路就有点走歪了。但是,如果是基于以上两 点,那么我们使用最简单的恺撒法即可,为什么Base64看起来要比恺撒法复杂呢?这是因为在Email的传送过程中,由于历史原因,Email只被允许

基于二进制的权限管理与验证

帅比萌擦擦* 提交于 2020-03-22 17:58:33
1、权限值的设定 用二进制来表示权限值应该是按位来设置,每个位占一个,表示一种权限,如: 00000001表示十进制1, 00000010表示十进制2, 00000100表示十进制4, 00001000表示十进制8; 依次类推,才能清晰正确的标识,多种权限的赋予则使用“或运算”,此时各位比较混乱,如00000011表示十进制3,此时它意味着拥有两种权限。 Long userrolevalue ;//用户的权限值,根据他属于的权限组,这个值会不同 Long oprolevalue ;//一个操作的权限值,根据他属于的权限组,这个值会不同 2、 权限的赋予 (或运算) userrolevalue = userrolevalue | oprolevalue 假设一个用户u1,他的初始权限值为0(00000000)。如果要指定他有经理的权限,经理的权限值为4(00000100),在第三个二进制位为1。 很显然,userrolevalue = 0 | 4 ,值为4,如果u1要同时具有文员、主管、经理的权限呢, userrolevalue = 0 | 1 00000000 | 00000001 = 00000001 userrolevalue = 1 | 2 00000001 | 00000010 = 00000011 userrolevalue = 3 | 4 00000011 |

Java的基本数据类型

最后都变了- 提交于 2020-03-22 16:10:46
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。 Java的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 Java语言提供了八种基本类型。六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,还有一种布尔型。 byte: byte数据类型是8位、有符号的,以二进制补码表示的整数;(256个数字),占1字节 最小值是-128(-2^7); 最大值是127(2^7-1); 默认值是0; byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一; 例子:byte a = 100,byte b = -50。 short: short数据类型是16位、有符号的以二进制补码表示的整数,占2字节 最小值是-32768(-2^15); 最大值是32767(2^15 - 1); Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一; 默认值是0; 例子:short s = 1000,short r = -20000。 int: int数据类型是32位

计算机基础

你离开我真会死。 提交于 2020-03-22 09:40:08
一,int类型在内存是如何存储的? 数据类型  占用字节数  取值范围  int     4byte   -2^31 ~ 2^31-1 unsigned int  4byte   0 ~2^32 1,占用的比特位数 int占用4个字节,每个字节有8个比特位,所以有32个 0-1 的二进制位数。注意:int类型有正负号,unsigned int 没有正负,所以int要用一位来标识正负 2,符号的表示方法 int类型占用的比特位中,左起第一个位(最高位)就是符号位。0表示正数,1表示负数。其余后面31是数值位。 3,数字0怎么表示? 3.1,因为有了正负数,那么就会有 +0 和 -0 。(注意:0有了两种表示:+0,-0)   +0的表示方法:0000 0000 0000 0000 0000 0000   -0的表示方法:-2^31   0就用 +0 的表示方法 3.2,正数部分 2^31-1 ,之所以要减一,就是因为数字0占用了 +0 。负数不需要表示0,-0 就用来表示 -2^31 3.3,int类型的数字 -1 ,在内存中32个比特位上该如何表示? 10000000 00000000 00000001 左边第一个1表示负号,后面31位表示数值部分“1”。----> 然而,并不是这样的 二,补码 计算机中的符号数有三种表示方法:原码,反码,补码

C 位运算

与世无争的帅哥 提交于 2020-03-21 10:28:49
位运算符 位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示: p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示: A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011 << 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 A << 2 将得到 240,即为 1111 0000 >> 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 A >> 2 将得到 15,即为 0000 1111 来源: https://www.cnblogs.com/nanqiang/p/9988669.html