二进制代码

JavaSE基础(四)--Java基本数据类型

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

运算符详解

萝らか妹 提交于 2019-12-05 17:03:49
异或(^)、异或和 的性质及应用总结 异或的含义 异或运算与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另外一个的值为非真。转化为命题,就是:“两者的值不同。”或“有且仅有一个为真。”符号为 XOR 或 EOR 或 ⊕(编程语言中常用 ^ )。 或在数学中的含义:一个元素在集合A中或在集合B中,或的维恩图如下: 而异或是不允许共存的,所以 A ^ B 的维恩图如下: 同理对于 A ^ B ^ C 维恩图: 异或运算{\displaystyle A\oplus B} 的真值表如下:F表示false,T代表true A B ⊕ F F F F T T T F T T T F A B ⊕ 0 0 0 1 1 1 1 0 1 1 1 0 任何数异或自己=把自己置0 异或的性质:满足交换律和结合律 交换律:A ^ B = B ^ A; 结合律:A ^ (B ^ C) = (A ^ B) ^ C; 恒等律:X ^ 0 = X; 归零律:X ^ X = 0; 自反:A ^ B ^ B = A ^ 0 = A; 对于任意的 X: X ^ (-1) = ~X; 如果 A ^ B = C 成立,那么 A ^ B = C,B ^ C = A; 异或的应用 1-1000放在含有1001个元素的数组中,只有唯一的一个元素重复,找出这个重复的数字

python基础之九:文件操作

拟墨画扇 提交于 2019-12-05 07:43:12
1、绝对路径与相对路径 path1 = "D:\orders.txt" # 绝对路径:包含根地址的路径 path2 = "homework.py" # 相对路径:相对当前文件所在目录的地址 2、文件读取 1 bj = open(path1, 'r', 1, 'utf-8') # 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式. 2 # ---> 如果文件不是utf-8编码,有中文的情况下会报错。如用gb2132写入中文,用utf-8打开就会报错,但是一个字节可以表示的字符,不报错! 3 print(obj.read()) 4 obj.close() # 完成后要关闭对象 5 6 # 对应的二进制模式 7 obj_b = open(path1, 'rb', 1) # 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 8 print(obj_b.read().decode()) # 一开始用的字符串的encode方法,还要将bytes转为字符串,然后再encode,结果还是字节码,应该是文件对象解码才对! 9 obj_b.close() 10 11 # 升级版读取"+":可以读写 12 obj_plus = open(path1, 'r+', 1, 'utf-8') # 打开一个文件用于读写

类加载器 - ClassLoader详解

▼魔方 西西 提交于 2019-12-05 07:28:02
获得ClassLoader的途径 获得当前类的ClassLoader clazz.getClassLoader() 获得当前线程上下文的ClassLoader Thread.currentThread().getContextClassLoader(); 获得系统的ClassLoader ClassLoader.getSystemClassLoader() 获得调用者的ClassLoader DriverManager.getCallerClassLoader ClassLoader源码解析 概述 类加载器是用于加载类的对象,ClassLoader是一个抽象类。如果我们给定了一个类的 二进制名称 ,类加载器应尝试去定位或生成构成定义类的数据。一种典型的策略是将给定的二进制名称转换为文件名,然后去文件系统中读取这个文件名所对应的class文件。 每个Class对象都会包含一个定义它的ClassLoader的一个引用。 数组类的Class对象,不是由类加载器去创建的,而是在Java运行期JVM根据需要自动创建的。对于数组类的类加载器来说,是通过 Class.getClassLoader() 返回的,与数组当中元素类型的类加载器是一样的;如果数组当中的元素类型是一个原生类型,数组类是没有类加载器的【代码一】。 应用实现了ClassLoader的子类是为了扩展JVM动态加载类的方式。

为什么1.2-1.1不等于0.1。

给你一囗甜甜゛ 提交于 2019-12-05 07:17:07
我们在java代码里写入这么一句代码: System.out.println(1.2-1.1); 运行它,结果出来了,却不是预期的0.1。 这是为什么呢? 这是由计算机本身二进制结构导致的结果。在十进制中,1.1是有穷尽的小数,但是用计算机表达的时候,会被自动翻译成二进制,也就是1.0001100110011... 1.2也是如此,二进制是1.001100110011.. .两者相减,也就是约等于(1.001100110011...-1.0001100110011...=0.0001100110011...) 当计算机再把0.0001100110011...这个结果翻译成10进制的时候,就得到了让人诧异的0.09999999999999987。 这个问题让我想起了大学里数据结构课程中,用数组模拟大数字四则运算的代码……怀念~ 很多时候,大家在程序设计里,一不小心就会碰到这个问题(算钱不正确等等现象),但是怎么也找不到问题究竟发生在哪里。最后才发现问题原来出在这里! 即便你知道java有这么个问题存在,但是写代码的时候一不小心就忽视了它,导致bug发生。希望大家能够避免类似情况发生。(例如设计的时候就考虑到,用Java的BigDecimal类去实现相关计算。) 来源: CSDN 作者: jun1987929 链接: https://blog.csdn.net/jun1987929

马甲包 规避审核

孤街浪徒 提交于 2019-12-05 06:18:12
App提审时会给苹果审核人员提供演示账号,具有完全访问权限帐户的用户名和密码,以便审核人员体验产品。 1 二进制代码务必不同 二进制代码是判别唯一性的,代码稍作调整或局部更改,会重新生成一个新的二进制代码,这是操作马甲的前提。 2页面差异化 修改App启动后第一个页面,保证马甲与主App的第一个页面不同,从先入视觉迷惑苹果审核人员。 3 整套UI更改 整套UI/美术更改,适合游戏类。 4功能局部化 如果主App功能较为丰富,做马甲是可以独立其中一部分功能,这种方式审核通过率高,但技术投入成本也比较昂贵,适合大产品大公司操作。 5 产品简单化(关闭部分功能或页面) 如果独立部分功能操作马甲复杂,可以选择产品简单化操作。具体是指: (1)将主App中的部分界面/功能删除掉; (2)主App中的部分界面/功能设置开关按钮,在审核期间关闭,审核通过后打开,此操作对用户体验不造成任何影响,常见的第三支付接口一般都是这样搞的。 苹果是通过二进制代码来判别唯一性,通过包名来区分产品,重复二进制代码不允许上传。做以下3中情况解读: (1)包名一样,二进制代码不同,苹果视为更新; (2)包名不一样,二进制代码相同,审核无法通过; (3)包名不一样,二进制代码不同,就是通常说的马甲,审核可能通过; (4)包名一样,二进制代码相同,无任何意义。 除对二进制代码有要求外,5月份以来

用二进制写程序,提升装 X 境界

久未见 提交于 2019-12-05 05:10:49
用二进制来写程序这么反人类的事情,的确是很装的事情,但是它不但是一件很装的事情,也是掌握底层知识的 基础能力之一。 听我慢慢道来。 程序设计语言有高级语言和低级语言之分,尤其是现在各种编程语言的不断发展,掌握高级程序设计语言的人越来越多。 但是是否可以使用二进制来写程序呢? 也许最初使用打孔带来控制机器的人可以完成,那么现在是否仍然有人可以完成呢? 答案是肯定的! 计算机可以直接运行的指令是二进制的机器码,所有的代码在运行之前都会变成 CPU 可以识别的二进制。 对于编译型的二进制语言,其实都是可以直接使用二进制来写的。 比如,Windows 下使用 C 语言编写的程序编译连接后可以生成一个 .exe 的可执行程序,生成的这个可执行程序就是一个二进制程序。 那么,这个程序如何用二进制编写呢? 先来考虑几个问题! 首先,可执行程序中并非只有代码,而 CPU 要执行的只有代码。 其次,CPU 执行的代码是二进制,但是在内存中的数据也是二进制数据,那么如何知道哪部分是代码,哪部分是数据呢? 这是操作系统在加载程序文件进入内存时,操作系统按照一定规则把不同二进制按照不同的属性装入了不同的内存分页当中,并对内存设置相应的属性。 最后,操作系统如何知道程序文件中的二进制哪部分是数据,哪部分是代码呢? 这是在程序被编译连接时不但把代码和代码所需的数据编译到了程序中

JavaScript位运算符

匆匆过客 提交于 2019-12-04 22:11:08
一、位运算符 位运算符处理 32 位数 该运算中的任何数值运算数都会被转换为 32 位数,结果会被转换回 JavaScript 数 位运算符用于直接对二进制进行计算,共有七个运算符: 或运算(or):符号为 | ,若两个二进制位都为0,则结果为0,否则为 1; 与运算符(and):符号为 & ,若两个二进制位都为 1,则结果为1,否则为 0; 否运算(not):符号为 ~ ,对一个二进制位取反; 异或运算(xor):符号为 ^ ,若两个二进制位不相同,则结果为1,否为0。 左移运算(left shift):符号为 << 右移运算(right shift):符号为 >> 带符号位的右移运算(zero filled right shift):符号为 >>> 二、位运算符简介 位运算符直接处理每一个比特位(bit),所以是非常底层的运算。 好处 :运算速度极快; 缺点 :运算很不直观,许多场合不能使用,否则会使代码难以理解和查错。 注意 : 位运算符只对整数起作用,如果一个运算子不是整数,则会自动转成整数后再执行 。 在JavaScript内部,数值都是以64位浮点数的形式储存的,但是在做位运算的时候,是以32位带符号的整数进行运算的,并且返回的值也是一个32位带符号的整数。 三、各位运算符的特点 (一)或运算 和 与运算 逐个位数比较两个运算子 或运算 : 两个二进制位中只要有一个为

【转载】mysql的三种备份方式

杀马特。学长 韩版系。学妹 提交于 2019-12-04 21:21:01
一、备份的目的 做灾难恢复:对损坏的数据进行恢复和还原 需求改变:因需求改变而需要把数据还原到改变以前 测试:测试新功能是否可用 二、备份需要考虑的问题 可以容忍丢失多长时间的数据; 恢复数据要在多长时间内完; 恢复的时候是否需要持续提供服务; 恢复的对象,是整个库,多个表,还是单个库,单个表。 三、备份的类型 1、根据是否需要数据库离线 冷备(cold backup) :需要关mysql服务,读写请求均不允许状态下进行; 温备(warm backup) : 服务在线,但仅支持读请求,不允许写请求; 热备(hot backup) :备份的同时,业务不受影响。 注: 1、这种类型的备份,取决于业务的需求,而不是备份工具 2、MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具 2、根据要备份的数据集合的范围 完全备份:full backup,备份全部字符集。 增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。 差异备份:differential backup 上次完全备份以来改变了的数据。 建议的恢复策略: 完全+增量+二进制日志 完全+差异+二进制日志 3、根据备份数据或文件 物理备份:直接备份数据文件 优点: 备份和恢复操作都比较简单,能够跨mysql的版本,

字符集编码详解(学习,看一篇就够了)

我的未来我决定 提交于 2019-12-04 21:14:54
置顶 2018-11-11 17:25:14 笑我归无处 阅读数 6456 更多 分类专栏: 基础 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_42068856/article/details/83792174 最近学习字符集编码,发现很多博文的讲解对初学者很不友善,许多文章繁杂且不易懂,需要阅读了大量文章和查询资料后,才能明白字符集及相关概念,本文致力于一篇文章就可以让初学者对字符集有一个很好的认识,为将来开发项目充实其理论基础,为解决BUG提供思路。 什么是字符集 一、疑惑 相信很多对字符集编码不够了解的程序员经常会出现很多乱码问题,抱有很多疑惑。 比如,为什么会出现乱码? 这里用的是什么字符编码? 创建一个文本它是GBK编码还是UTF-8编码? (创建文本文件默认使用ANSI,就是系统默认编码方式,中文windows系统默认使用GBK编码方式) 我应该使用GBK编码还是UTF-8编码? Unicode和UTF-8的区别是什么? 那么看完这篇文章,相信这些问题都可以迎刃而解。 二、基础概念 字节 这个是最基本的概念了, 字节 是计算存储容量的一种计量单位。我们知道计算机只能识别1和0组成的二进制位。一个数就是1位(bit),为了方便计算