32位

openssl的安装与简单使用

拜拜、爱过 提交于 2019-12-17 21:40:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现 (包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求 (PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。 上述知识各位可以去官网看看,或参考网上资料。 本文只针对本人实践过的openssl的安装过程以及关于RSA、AES的两种加解密算法的简单使用实例 一、Linux下安装过程(本人是Centos 64bit系统) 1、 官方下载相应的源码,相应的安装教程,网上应该能找到很多的,这里就不在累赘了。 需要提醒的是,安装完openssl后,发现程序编译提示-lcrypto 无法链接,表示缺少crypto库,此时参照该篇帖子 http://blog.chinaunix.net/uid-14704264-id-4204452.html 完成即可。本人选择直接yum安装openssl-devel 即 yum install openssl-devel 二、 Windows7 64bit 操作系统 下编译openssl过程 (仅讲述本人机器环境下

MongoDB中关于64位整型存储解决方案

亡梦爱人 提交于 2019-12-04 02:06:02
社区内一哥们@smcboy 提出关于 php中操作MongoDB存储整数问题 ,找到点资料花点时间翻译过来,是个很好的学习方式。 @红薯 那篇讨论我的修改回复,仍然没有更新可恶啊~!!说实话我就是高一英语水平 为了这篇文章我算是绞尽脑汁,翻译了大半天,累死我了。科学精神可贵、可贵!! 在我当前项目中大量是 MongoDB ,正在从传统RDBMS过度到key-value存储。Facebook中用户标识 UserID 使用64位Int数据类型存储,杯具的是 MongoDB的 PHP驱动 只支持32位整型数据,导致UserID被截断无法处理Facebook用户信息。 MongoDB数据采用 BSON (Binary JSON )文档型存储,BSON有两种整型数据类型,1、32位有符号整型数据(INT); 2、64位有符号型整型数据(LONG)。由于PHP不支持大于8个字节整数,所以MongoDB PHP驱动只支持32位有符号整型数据存储。然而这样不是绝对的,在C类型 long 为64位平台上,PHP仍然可以正常支持64位整型数据; 除了在Windowns上,其他平台上C中long类型总是32位。 当PHP中整型存储到MongoDB中,PHP驱动会采用最低兼容原则用32位进行转换存储到MongoDB文档中。下面是测试案例(测试平台为 64位): $m = new Mongo(); $c =

Linux内存管理(x86-32位系统)

北慕城南 提交于 2019-12-01 17:12:46
linux内存的管理主要分为两部分,地址管理和存储设备管理。下面针对这两部分介绍一下我对内存管理的理解。 硬件地址的基本概念 DRAM域地址:是DRAM控制器所能访问的地址空间集合。 PCI总线域地址:是PCI设备所能直接访问的地址空间集合。 存储器域地址:是CPU所能访问的地址空间集合。 结合下图对上面概念进行解释: CPU访问DRAM域或PCI总线域地址空间时,都需要进行地址转换(将存储器域地址转换为相应域的地址)。例如:CPU访问DRAM域时,需要进行存储器域地址空间到DRAM域地址空间的转换(由DRAM控制器完成);CPU访问PCI总线域时,需要进行存储器域地址空间到PCI总线域地址空间的转换(由HOST主桥完成)。 在x86处理器系统中,会将DRAM域和PCI总线域映射到存储器域空间中,并且其大多数DRAM域中的地址与存储器域中的地址一一对应而且相等,而存储器域的PCI地址与PCI总线域的地址也一一对应而且相等。它们在存储器域空间的映射彼此独立,互不冲突,映射关系由BIOS提供(e820地址映射表)。 PCI设备访问DRAM域地址空间时,首先要经过HOST主桥将PCI总线域地址转换为存储器域地址,然后再由DRAM控制器将存储器域地址转换为DRAM域地址。 软件地址的基本概念 逻辑地址 ,是一个32位长的地址。所有进程地址都使用逻辑地址。 线性地址(也称为虚拟地址)

如何在64位版本Linux上开发运行32位应用程序

倾然丶 夕夏残阳落幕 提交于 2019-12-01 11:33:55
最近换了Linux系统,由i686换成了x86-64,导致在进行开发的时候出用不了原来SDK中32位的开发工具。于是,博主找到如下文章,博主亲测实用: 如何在64位版本Linux上开发运行32位应用程序 内容如下: 很多程序员(特别是别的公司的)跟我抱怨说他们32位软件无法在我们的64位Linux系统上正常运行,而在他们32位机上正常,其实这个很好解决,一般 是64位系统安装后没有默认安装glibc的32位版本,通过简单的执行以下命令即可实现在64位Linux系统上开发运行32位应用程序,而不用重新安 装操作系统。 yum install glibc*.i686 -y 如果还提示少某个so文件,安装对应的库,如提示缺少libz.so,则安装libzip以及libzip-devel的64位和32位版本,如果提示缺少libssl.so则安装openssl以及openssl-devel的64位和32位版本,命令行如下: yum install libzip libzip-devel -y yum install libzip.i686 libzip-devel.i686 -y yum install openssl openssl-devel -y yum install openssl.i686 openssl-devel.i686 -y 如果出现:i386 architecture

32位、64位与Java开发研究分析

主宰稳场 提交于 2019-11-29 04:29:02
1 32位与64位五大不同 1.1 设计初衷不同 64位操作系统的设计初衷 是:满足机械设计和分析、三维动画、视频编辑和创作,以及科学计算和高性能计算应用程序等 领域中需要大量内存和浮点性能的客户需求 。换句简明的话说就是:它们是高科技人员使用本行业特殊软件的运行平台。而32位操作系统是为普通用户设计的。 1.2 要求配置不同 64位操作系统 只能安装在64位电脑上(CPU必须是64位的) 。同时需要 安装64位常用软件以发挥64位(x64)的最佳性能 。32位操作系统则可以 安装在32位(32位CPU)或64位(64位CPU)电脑上 。当然, 32位操作系统安装在64位电脑上,其硬件恰似“大马拉小车”:64位效能就会大打折扣 。 1.3 运算速度不同 64位CPU GPRs(General-Purpose Registers,通用寄存器)的 数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据) ,比32位(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍。 1.4 寻址能力不同 64位处理器的优势还 体现在系统对内存的控制上 。由于地址使用的是特殊的整数,因此一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。比如,Windows Vista x64

32位与64位应用程序速度分析

给你一囗甜甜゛ 提交于 2019-11-27 20:06:05
32或64指的是内存地址位数 32位的操作系统也只能识别最大4GB的内存 64位CPU的最大寻址空间为2的64次方bytes,计算后其可寻址空间达到了惊人的16TB(treabytes),即16384GB 64位平台上的运行性能要远超过32位平台。原因在与CPU通用寄存器的数据位宽,64位平台是64位,而32位平台是32位,也就是说,64位平台可以运行64位数据指令,处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32位(需要四个指令,一次提取4个字节的数据)提高了一倍。由于内存中可以保留更多的数据,可以减少速度慢的磁盘访问,寄存器更大,运算速度更高。但是在64位下指针长度增加,同样的结构需要更多内存,程序运行的开销也更大。但通常64位带来的性能提升可以弥补由于指针变大带来的额外开销。 来源: oschina 链接: https://my.oschina.net/u/81653/blog/291239