首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java学习笔记(2)——数据类型

然而,Java88种基本数据类型不是对象,之所以这样设计,是因为相对于对象来说,基本数据使用上更加方便,并且效率上也高于对象类型。所以这就需要去了解一下Java创建对象过程。...(其实常量通常直接存放在程序代码内部,因为这样非常安全,因为它们永远都不会被改变) 所以当我们创建对象,例如实例一个Person类: Person p = new Person(); 首先,会在堆开辟一块空间存放这个新来...java里,“=”语句不应该被翻译成赋值语句,因为它所执行的确实不是一个简单赋值过程,而是一个地址过程,被译成赋值语句会造成很多误解,译得不准确。 特例:基本数据类型 为什么要有特例呢?...也就是说,我们调用一个需要传递参数函数传递给函数参数并不是我们进去参数本身,而是它副本。说起来比较拗口,但是其实原理很简单。...计算机使用二进制来存储数据,而二进制无法准确表示分数 1/10 ,就像使用十进制,无法准确地表示 1/3 一样。 数量级差很大浮点运算 当浮点数值数量级相差很大时候,运算又会有什么问题呢?

59330

JSON 这么可爱,让我们用千字短文吃透它吧!

:unicode 字符: JSON 传输应当是可视字符,而不应该也无法承载不可读二进制数据换句话说,请尽量不要用 JSON 来传输二进制数据没有 boolean 类型这个问题不大,主要是对各种库使用上...解决方案不敢说万能,但应该即便是上古解码都能处理——这个方案就是指定各编码在编码,对大于 ASCII 范围字符均作转义处理为 \uXXXX 格式。...但是实际操作,这种转义太浪费字节序列了,各种语言对 string 类型进行操作,习惯性地按照本身字符串在内存默认编码格式照搬到 JSON 序列上了。...其实这个问题并不大,即便把这些控制字符原封不动地包装在 JSON 序列之后数据,对端也是可以正确解析出来。...在这一点上,自己也犯过一个很低级错误:JSON 数据幂等检查和数据校验年少无知有一次设计过一个模块,接收上游发来各种事件信息。

1.9K110
您找到你想要的搜索结果了吗?
是的
没有找到

格式字符串漏洞利用 六、特殊案例

译者注:动态链接,程序会调用libc系统调用封装。其它系统调用同理。 但是 GOT 技巧最实用优点,就是它易于使用,你只需要运行objdump,就能得到要覆盖地址(retloc)。...6.1.2 DTORS 实用 GCC 编译二进制包含一个特殊析构表区段,叫做DTORS。真实exit系统调用触发之前,在所有的常见清理操作完成之后,这里列出析构会调用。...6.3 多重打印 如果你可以相同进程多次触发格式字符串漏洞(就像 wu-ftpd 那样),你就可以不仅仅覆盖返回地址。...为了调用程序,你可以格式字符串尾部使用这个序列: ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;id > /tmp/owned;exit;" 任何指向;字符地址,传递给system...但是由于没有重要操作码是0x25或者0x00,你构造 shellcode 不会有什么麻烦。如果地址储存在格式字符串,是一样

69520

使用 Kubernetes 模糊测试

简而言之,模糊测试核心是向给定目标二进制文件(本例为radare2)抛出格式错误输入,以希望导致崩溃。到那时,我们将检查崩溃,看看它是否可以用于本地 DoS 之外东西。...现在,关于这个格式错误输入“愚蠢”部分是我们只是从我们二进制语料库任意操作二进制随机字节,然后二进制上调用radare2 来处理和分析它。...Fuzzing Radare2 最新和最好版本 现在知道你在想什么“为什么 $NEW_CI_TOOL 存在使用 Jenkins?”。詹金就像 1985 年 F150。...知道当我开车我会进入什么状态。归根结底,所有这些工具都是美化远程代码执行实用程序,而 Jenkins 提供了做奇怪事情灵活性。简单地说,使用 Jenkins 是因为喜欢 Jenkins。...让我们退后一步,看看数据是如何传递给易受攻击函数数据如何传递给易受攻击函数 易受攻击函数__func_name_from_ord只一个文件中被调用,ne.c特别是第 488 行。

1.5K20

接口测试面试题

1 接口测试重点? 检查数据交换,数据传递正确性,以及接口间逻辑依赖关系 2 GET请求和POST请求区别是什么? GET浏览回退是无害,而POST会再次提交请求。...先从上一个接口中响应数据获取对应返回值,然后使用正则表达式or使用JSON解析来提取需要获取值,然后存储一个变量,最后在下一个接口中直接引用该变量即可,也可以叫关联技术 18 接口测试用例编写要点有哪些...依赖登最状态接口,本质上是每次发送请求需要带上存储有账户有效信息Session或Cookie才能发送成功,构建POST请求headers添加必要Session或Cookie 20依赖于第三方数据接口如何进行测试...然后Fiddler伪造自己CA证书(这里CA证书,也是根证书,只不过是Fiddler伪造根证书), 冒充服务证书传递给客户端浏览。...第四步,客户端将重要信息传递给服务, 又被Fiddler截获。Fiddler将截获密文用自己伪造证书私钥解开, 获得并计算得到HTTPS通信用对称密钥enc_key。

1.1K10

关于值与引用讨论

编译将调用Base类复制构造函数来初始B,初始数据来源于A,但构造结果是个Base类对象:也就意味着A特有部分数据被切割掉了。...函数func,B行为是一个Base行为而不是Derive行为。...若希望func中使用到实参特性,引用能够保证这一点。 STL使用情况 如果你打开STL源码,你会发现容器iterator都是通过值形式参。...《Effective C++》中指出,对于内置类型、STL 迭代和 STL 仿函数,pass-by-value 也是可以,一般没有性能损失。... x86-64 上,对于只有一个 指针成员且没有自定义复制构造函数类,值是可以通过寄存进行就像传递普通 int 和指针那样

73020

关于值与引用讨论

(A); } 编译将调用Base类复制构造函数来初始B,初始数据来源于A,但构造结果是个Base类对象:也就意味着A特有部分数据被切割掉了。...函数func,B行为是一个Base行为而不是Derive行为。...若希望func中使用到实参特性,引用能够保证这一点。 STL使用情况 如果你打开STL源码,你会发现容器iterator都是通过值形式参。...《Effective C++》中指出,对于内置类型、STL 迭代和 STL 仿函数,pass-by-value 也是可以,一般没有性能损失。... x86-64 上,对于只有一个 指针成员且没有自定义复制构造函数类,值是可以通过寄存进行就像传递普通 int 和指针那样

79350

使用 JavaScript 自动 Mac

本文作者:IMWeb 吴浩麟 原文出处:IMWeb社区 未经同意,禁止转载 Apple发布Yosemite系统(OSX10.10+)中有一个被大家忽略特性:使用 JavaScript编写自动脚本...接下来我们就来实战一下,写一个每天自动发新人日报邮件自动脚本。具体流程是这样接到所有需求都会记录到Reminders里,当我完成一个需求我会把它标记为已经完成。...,再让它每天晚上定时执行就不用写手写邮件只需要在reminders里更新需求就OK啦~ 除此之外还编写了一个可以每天早上9点自动去公司oa网签到脚步,让这些流程工作全交给程序自动化处理。...脱离ScriptEditor,使用你喜爱编辑 使用ScriptEditor编写脚本保存后是.scpt格式,是以二进制格式存储非文本文件。...OSX自带一个自动脚本解释叫osascript,AppleScript和JavaScript编写脚本都需要又他来解释执行,就像node解释执行js文件一样。

2.3K30

使用 JavaScript 自动 Mac

Apple发布Yosemite系统(OSX10.10+)中有一个被大家忽略特性:使用 JavaScript编写自动脚本。在这之前只能通过AppleScript语言给OS X编写自动脚本。...具体流程是这样接到所有需求都会记录到Reminders里,当我完成一个需求我会把它标记为已经完成。...,再让它每天晚上定时执行就不用写手写邮件只需要在reminders里更新需求就OK啦~ 除此之外还编写了一个可以每天早上9点自动去公司oa网签到脚步,让这些流程工作全交给程序自动化处理。...脱离ScriptEditor,使用你喜爱编辑 使用ScriptEditor编写脚本保存后是.scpt格式,是以二进制格式存储非文本文件。...OSX自带一个自动脚本解释叫osascript,AppleScript和JavaScript编写脚本都需要又他来解释执行,就像node解释执行js文件一样。

3.1K101

RPC框架:从原理到选型,一文带你搞懂RPC

一个通俗描述是:客户端不知道调用细节情况下,调用存在于远程计算机上某个对象,就像调用本地应用程序对象一样。...信息格式对其透明:我们知道本地应用程序,对于某个对象调用需要传递一些参数,并且会返回一个调用结果。至于被调用对象内部是如何使用这些参数,并计算出处理结果,调用方是不需要关心。...那么对于远程调用来说,这些参数会以某种信息格式传递给网络上另外一台计算机,这个信息格式是怎样构成,调用方是不需要关心。 应该有跨语言能力:为什么这样说呢?...什么是序列?序列就是将数据结构或对象转换成二进制过程,也就是编码过程。 什么是反序列?将在序列过程中所生成二进制串转换成数据结构或者对象过程。 为什么需要序列?...我们知道使用XML、JSON进行数据编译数据文本格式更容易阅读,但进行数据交换,设备就需要耗费大量CPUI/O动作上,自然会影响整个传输速率。

22.3K812

Swift 幻象类型

,切换到所传递文档格式,然后为每种情况打开正确编辑。...然而,虽然这对文本和HTML文档很有效,但由于PDF文档我们应用程序是不可编辑——当遇到PDF,我们将被迫抛出一个错误,触发一个断言,或以其他方式失败: func openEditor(for...String就像我们上面做那样,我们通过传递对该类型本身引用来传递我们希望字符串被解码编码——本例是UTF8。...这可以防止我们不小心将一个长度传递给一个接受角度函数,反之亦然——就像我们之前防止文档格式被混淆一样。 结论 使用幻象类型是一种非常强大技术,它可以让我们利用类型系统来验证一个特定值不同变体。...就像一般泛型一样,认为部署幻象类型之前,首先要仔细评估当前情况,这很重要。

1.5K30

Swift Phantom(幻象)类型

,切换到所传递文档格式,然后为每种情况打开正确编辑。...然而,虽然这对文本和HTML文档很有效,但由于PDF文档我们应用程序是不可编辑——当遇到PDF,我们将被迫抛出一个错误,触发一个断言,或以其他方式失败: func openEditor(for...String就像我们上面做那样,我们通过传递对该类型本身引用来传递我们希望字符串被解码编码——本例是UTF8。...这可以防止我们不小心将一个长度传递给一个接受角度函数,反之亦然——就像我们之前防止文档格式被混淆一样。 结论 使用幻象类型是一种非常强大技术,它可以让我们利用类型系统来验证一个特定值不同变体。...就像一般泛型一样,认为部署幻象类型之前,首先要仔细评估当前情况,这很重要。

86120

IM通讯协议专题学习(三):由浅入深,从根上理解Protobuf编解码原理

可见:同样一串二进制不同“上下文/协议”下有完全不一样解读,这也是为什么计算机明明只认知0和1但是却能处理非常复杂任务根本原因,因为一切都可以编码为0和1,同样我们也可以从0和1解析出我们想要信息...当我电商App里搜索商品、打车App里呼叫出租车以及刷短视频,每一次请求背后在后端都涉及大量服务之间交互。...就像C/C++定义变量: int i = 100; 在这里,字段名称就是i,字段类型是int,字段值是100。...假设我们需要传递这样一个字段: int long_long_name = 100; 那么我们真的需要把“long_long_name”这么多字符通过网络传递给对端吗?...[3]如何选择即时通讯应用数据传输格式 [4]强列建议将Protobuf作为你即时通讯应用数据传输格式 [5]APP与后台通信数据格式演进:从文本协议到二进制协议 [6]面试必考,史上最通俗大小端字节序详解

45640

理解std::move和std::forward

; //call with rvalue logAndProcess实现,参数param被传递给了函数process.process按照参数类型是lvalue或者rvalue都做了重载。...当我们用lvalue调用logAndProcess,我们自然地期望: forward给process也是一个lvalue,当我们用rvalue来调用logAndProcess,我们希望process...为了让以上代码行为表现正确,我们需要一个机制,param转化为rvalue当且仅当:传递给logAndProcess用来初始param参数必须是一个rvalue.这正是std::forward做事情...你可能想知道std::forward怎么知道它参数是否被一个rvalue初始。比如说,以上代码,std::forward怎么知道param被一个lvalue或者rvalue初始?...消除了传递错误类型(比如说,一个std::string&,可以导致数据成员s被拷贝构造,而不是想要move构造)可能性。

1.5K21

坚持还是放弃,Go语言“美好与丑陋”解读

不管喜不喜欢,gofmt 都定义了 Go 代码应该如何格式,因此该问题得到一次性解决! 标准测试框架 Go 在其标准库中提供了一个很好测试框架。...自定义类型 喜欢自定义类型,而且恼怒/害怕一些情况,就好像当我们来回一个字符串型或者 long 型持久对象标识符时候。...vendor 目录最终 Go 1.6 得到了官方支持。但对于克隆供应内容,仍然没有合适版本管理。也不能通过语义版本解决混淆导入和依赖传递问题。...为什么 Go 决定使用原始字符串,并且任何库都可以决定是否使用它想要任何 DSL,在运行时解析? 当您使用多个库,情况可能会变得尴尬:下面是从协议缓冲区 Go 文档取出一个例子: ?...然而在 JSON ,常见字段命名习惯用小骆驼命名法或者蛇形命名法。因此需要很多冗长标签。 JSON 编码和解码标准不允许提供命名策略来转自动转化,就像 Java Jackso n文档

1.3K41

Pytorch.backward()方法

RuntimeError: grad can be implicitly created only for scalar outputs 文档写道:当我们调用张量反向函数,如果张量是非标量(即它数据有不止一个元素...这里F是非标量张量所以我们需要把梯度参数传递给和张量F维数相同反向传播函数 ? 在上面的代码示例,将梯度参数传递给backword函数并给出了所需梯度值a和b。...但是,为什么我们必须将梯度参数传递给backword函数? 要理解这一点,我们需要了解.backward()函数是如何工作。...,就像我们一个例子中所做那样。...T = J 但是,当输出张量是非标量,我们需要传递外部梯度向量v,得到梯度计算雅可比向量积,即J@v.T 在这里,对于F = a*ba = [10.0, 10.0] b =[20.0, 20.0]

2.4K20

自定义HScript Expression Functions

当我需要使用Expression Functions来写表达式时候,比如stamp函数,试图想通过一种通用理念站在编程角度来表述如何使用它,而不是依靠惯性记忆来使用它。...有人可能觉得笔者钻牛角尖,其实不然,笔者理解牛角尖是当我不理解一件事件时候,我会去从根本上去学习它规则是怎么玩,而不会纠结它规则为什么这样制定,钻牛角尖是一件浪费时间才能有所收获事情(除非你有时间...,比如制定计算机二进制数,1+1就等于10,而我们没必要去破坏这种规则,如果你是想开发一个跟Houdini一样软件可以去思考思考,如果只是使用Houdini就理解到它规则就行了。...虽然表达式函数设定就像一个只有说明书黑盒子一样,但如果有一点点编程基础,知道函数是如何定义参与返回值这些基础知识的话,或许也是一条通用理念,我们只需要知道这个黑盒子需要什么类型参数才能正确运作...如果非要像官方那样扩展写一些表达式函数的话,需要用到HDK来扩展,语法和案例开发文档上都有明确规定

70750

格式字符串漏洞利用 二、格式函数

当函数求解格式字符串,它会访问向函数提供额外参数。它是一个转换函数,用于将原始 C 数据类型表示为人类可读字符串形式。...它们几乎任何 C 程序中都会使用,来输出信息、打印错误信息或处理字符串。 这一章,我们会涵盖格式函数使用典型漏洞,正确用法,它们一些参数,以及格式字符串漏洞一般概念。...直接(值)或间接(址)保存二者 调用函数 需要知道它向栈压入了多少参数,因为它当格式函数返回需要清栈。...它会被 C 编译在编译使其替换,将转义序列替换为二进制适当字符。格式函数并不会识别这些特殊序列。实际上,它们并不对格式字符串做任何事情,但是有时会产生混淆,就像它们被编译求值一样。...如果它不是%,字符会复制到输出。否则,%后面的字符规定了要求值参数类型。字符串%%拥有特殊函数,用于打印转义字符%本身。其它每个参数都和数据相关,位于栈上。

1K20

NodeJS错误处理最佳实践

应该检查更加具体约束么?例如参数是否非空,是否大于零,是不是看起来像个IP地址,等等等。 该如何处理那些不符合预期参数?是应该抛出一个异常,还是把错误传递给一个callback。...理解操作失败和程序员失误不同, 是搞清怎么传递异常和处理异常基础。明白了这点再继续往下读。 处理操作失败 就像性能和安全问题一样,错误处理并不是可以凭空加到一个没有任何错误处理程序。... GNU/Linux 或者 基于 illumos 系统上使用这些内核文件,你不仅查看应用崩溃堆栈记录,还可以看到传递给函数参数和其它 JavaScript 对象,甚至是那些闭包里引用变量...大多数情况下,你需要写一个以回调函数作为参数函数,然后你会把异常传递给这个回调函数。这种方式工作很好,并且被广泛使用。例子可参照 NodeJS fs模块。...写新函数时候,用文档清楚地记录函数预期参数,包括它们类型、是否有其它约束(例如必须是有效IP地址),可能会发生合理操作失败(例如无法解析主机名,连接服务失败,所有的服务错误),错误是怎么传递给调用者

1.5K41

用Click编写Python命令行工具

根据CLI复杂性,通常可以将参数传递给脚本,可以是: 1.参数,它是传递给脚本必需参数。如果您不提供它,CLI将返回一个错误。...这就是为什么爱上了click click正在解决与optparse和argparse相同问题,但使用方法稍微不同。它使用装饰概念。这需要命令是可以使用装饰包装函数。...让我们来看看当我们将API位置设置为london时会发生什么: ? 如果你正在用这样面孔查看屏幕?因为上面的例子包含一个API密钥,所以不要担心这是他们提供示例API密钥。...Click使用该名称作为变量传递到包装函数参数我们例子,命令行参数location值将作为位置参数传递给主函数。有道理吧?...希望在这一点上,你感觉到了当我第一次发现click感觉: 带有clickPython CLI:摘要&回顾 好,我们已经本教程中介绍了大量内容。 现在是您为自己感到自豪时候了。

3.3K10
领券