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

java – 为什么InputStream#read()返回一个int而不是一个字节?

这个是一个有意思的问题,所以我在这里记录一下。 首先字节正好是8位,所以使用8位的char类型数据来与字节数据相互一一对应是最好的选择?...首先,我们要完成一个EOF(End of File)判断,在Java中就是以-1来表示数据读完了,但是如果返回的char类型值,那么根本没有-1这个数值;如果换种方式,返回一个特殊的char值,比如char...其次,既然只是如上的需求,那么为什么不返回short值呢? 实际上在Java内存模型中,对于short以及int类型值,都是占据32位的内存空间的。...因此,当您将局部变量或对象字段声明为(例如)一个字节时,变量/字段将像int一样存储在32位单元中。...值和int值表示是没有区别的,除非是一连串的short值,也就是short数组,才可能会比int值有效。

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

为什么选择做一个程序员?

问了一连串的问题,学习编程这份急切心情溢于言表。然后说了一堆为了学习编程一次次的背概念,学习过程中如果觉得时间浪累就会恨自己不争气之类的话。...这倒是勾起了的一些回忆,当初为什么选择做一个程序员,自己是如何度过入门这段煎熬的路程的?为什么一直坚持编码到现在?...由于家庭条件不是不好,也没有勉强给自己配上一台电脑,研究理论的层次多一些,网吧是唯一的实践基地,很难想象周围的人都在热火朝天的玩游戏,在一边去敲代码研究一些算法,算是奇葩了。...于是在不安分中,来到了帝都,来到了这个自己洒下十年汗水的地方,带着无限的憧憬期待来到,加入第一家公司,第一天就感受到了,啥叫定力,一个人坐上一整天在电脑旁边还是需要,对于一个随意习惯的来说,是个极大的考验...在坚持的路上,有很多的诱惑,压住自己性子,在一个适合自己发展的平台,彻底了解彻底了解一个产品是如何出来的,从头经历一个产品的产生过程还是相当重要的,不要只想着自己在这个公司挣得太少,换个公司能多拿多少,

84140

日常||为什么新开一个公众号?

这个世界没有什么好畏惧的,反正我们只来一次 朱德庸 一个星期前,又有了写公众号的打算,与其磨磨蹭蹭,不如马上开始,谁知道当我正准备“大干一场”时,因为曾经用自己的邮箱给别人注册过一个账号导致不能再进行注册...;每天听着师兄师姐谈论着谁谁谁又要延毕了,谁谁谁想跳槽到别的实验室,也感到迷茫。...又担心计算机基础≈0,生物学基础无限接近于0的,在这条路上一踩一个坑...... 经过四处讨教,嗯,打算:先上车再补票,总比踌躇不前好!...既然如此,想借写公众号来提醒初心,不断学习,无限进步!...以后打算在这个公众号上更新的一些学习笔记和我的日常,可能涉及Python或Linux或生物信息学或其他一些稀奇古怪,也许以后会偷懒停更,也许会因为最后还是发现生信不适合而退坑,也许呢也许呢,也许坚持下去了呢

19330

作为一个java开发者为什么不用Swagger

Swagger号称是最好的Rest Api 文件生成工具,但是作为一个一直从事java相关开发工作的开发者。...在2018年6月以前一直坚持用Markdown来手写接口文档,即便是那时候有同事给我推荐过,但作为一个骨子里追求极简的程序员,一直没有想明白一个需要写一大堆注解强侵入到后端代码工具,它为什么会在中国如此风靡...在2018年春节自己萌生了自己一个java rest api文档生成的工具,目的也不是去造轮子,因为天生不喜欢闲的没事到处造轮子,而起国内已经有一些开源的Java Rest Api文档生成工具,这些工具实现机制几乎和...只是可能使用更便捷了一些,针对这些工具没完全没有去使用的意愿。因此开发这个工具的目标非常明确,就是完全不用任何注解,能够去依赖源代码和注释直接分析出文档。...smart-doc完全基于接口源码分析来生成接口文档,完全做到零注解侵入,你只需要按照java标准注释的写,smart-doc就能帮你生成一个简易明了的markdown 或是一个像GitBook样式的静态

3.3K00

为什么要创建一个不能被实例化的类

摄影:产品经理 感谢小何的上等牛肉 当我们创建一个Python 类并初始化时,一般代码这样写: class People: def __init__(self, name): self.name...但如果有一天,你发现写了这样一个类: class People: def say(self): print(f'叫做:{self.name}') def __new...一个不能被初始化的类,有什么用? 这就要引入我们今天讨论的一种设计模式——混入(Mixins)。 Python 由于多继承的原因,可能会出现钻石继承[1]又叫菱形继承。...Mixins 是一个 Python 类,它只有方法,没有状态,不应该被初始化。它只能作为父类被继承。每个 Mixins 类只有一个或者少数几个方法。不同的 Mixin 的方法互不重叠。...self.name = name def say(self): print(f'叫做:{self.name},今年{self.age}岁') kingname = People

3.4K10

现在有一个非常庞大的数据,假设全是 int 类型。现在给你一个数,你需要告诉它是否存在其中(尽量高效)

前言 最近有朋友问我这么一个面试题目: 现在有一个非常庞大的数据,假设全是 int 类型。现在给你一个数,你需要告诉它是否存在其中(尽量高效)。...如图所示: 首先需要初始化一个二进制的数组,长度设为 L(图中为 8),同时初始值全为 0 。...为什么返回存在的数据却是可能存在呢,这其实也和 HashMap 类似。...构造方法中有两个比较重要的参数,一个是预计存放多少数据,一个是可以接受的误报率。 这里的测试 demo 分别是 1000W 以及 0.01。 ?...根据 murmur3_128 方法的到一个 128 位长度的 byte[]。 分别取高低 8 位的到两个 hash 值。 再根据初始化时的到的执行 hash 的次数进行 hash 运算。

65620

从根上理解,一个 Redis 字符串为什么要设计的这么复杂!

什么是二进制安全的字符串 在 C 语言中,字符串采用的是一个 char 数组(柔性数组)来存储字符串,而且字符串必须要以一个字符串 \0 来结尾。...而且字符串并不记录长度,所以如果想要获取一个字符串的长度就必须遍历整个字符串,直到遇到第一个 \0 为止(\0 不会计入字符串长度),故而获取字符串长度的时间复杂度为 O(n)。...embstr 编码为什么从 39 位修改为 44 位 embstr 编码中,redisObject 和 sds 是连续的一块内存空间,这块内存空间 Redis 限制为了 64 个字节,而redisObject...同样的,如果是操作 int 编码的字符串之后,「导致 long 类型无法存储时(int 类型不再是整数或者长度超过 2 的 63 次方减 1 时)」,也会将 int 编码修改为 raw 编码。...PS:「需要注意的是,编码一旦升级(int-->embstr-->raw),即使后期再把字符串修改为符合原编码能存储的格式时,编码也不会回退。」

52920

青云周小四:为什么会在一个公司待 7 年?| TGO专访

1 的愿望是活到 75 岁,有一天死在办公桌上 之所以加入青云,与 CEO 黄允松颇有渊源。...「中国的 IT 软件产品还没有真正走出国门,想做一款全球知名的软件产品,做一个典范出来,软件产品能解决企业的问题,企业又能辐射到用户,这样作用会成几何倍增长。」...「搞技术的人很容易陷入一种误区,觉得自己是最厉害的,其他人我都不相信,也不愿跟他们合作,就按照的方式去交付给客户。」 但他却认为,技术人不能这么干,一定要团结所有能团结的人,包括竞争对手。...记得在做 KubeSphere 第一个版本时,带头和大家一起 996 搞了三四个月,最后发现自己吃不消,年轻人虽然说身体比我强一些,但能强多少呢?...觉得 996 不是个好事情,适当加班是可以的,但我觉得要根据不同人的工作性质,去决定到底是不是要加班。 TGO: 为什么说混合云和多云架构是企业上云的最佳途径之一? 周小四:每一种云都有优缺点。

36010

请教一个问题,为什么是列表格式,但是运行就报错啊?

一、前言 前几天在Python最强王者群【黑科技·鼓包】问了一个numpy数据处理的问题,一起来看看吧。 请教一个问题,为什么是列表格式,但是运行就报错啊?不允许变量赋值这个结果吗?...np.gcd.reduce(列表),简单来说需要一个输入框,输入一串字符串逗号分隔的数字,用来判断公约数然后所有数值除以这个值,得到最小的值,例如10,20,30的结果是1,2,3 二、实现过程 这里...但是又出现新问题了,为什么不计算结果啊?后来发现是列表处理冗余了。 这下总算欧克了。 三、总结 大家好,是皮皮。...这篇文章主要盘点了一个numpy数据处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

10920

作为一个区块链技术人员,为什么只做技术不炒币?

2018年初,突然发现,身边人一个个转身变成了比特币专家,区块链代言人,以太坊、分布式存储一直挂在嘴边,而我,一个做区块链的技术人员却成了区块链的“边缘派”…… 然而,作为区块链的“边缘派”,今天想说为什么不赞成炒币...,但是执着于做好区块链的技术。...区块链职位需求 有一个人才缺口的公式,个人觉得很有意思: 人才的紧缺程度:区块链>人工智能>互联网金融>O2O 很多人都误以为区块链的门槛很高,但是不得不跟你说,就像你对区块链和比特币的误解一样,对区块链的职位需求你也理解错了...区块链人才机遇 说到人才机遇,作为区块链的技术人员,告诉你们区块链技术人员真的不一定炒币,不是没有契机去炒币,只是对于我个人来说可能炒币倒不如踏踏实实的代码,搭建的区块链框架。

1.4K50

CC++入门003-C语言变量与运算符

天天早上和老师说“早上好”。早上好也是常量。 常量的类型 整型常量,实型常量,字符常量,字符串常量,自定义常量 整型常量: 十进制整数。八进制整数。十六进制整数。二进制整数。...张某某,190cm; 为什么要定义变量 为什么要指定变量名称?...printf("studentId %d \nstudentCopyId %d \n",studentId,studentCopyId); 输出为: 变量的作用域 为什么要有作用域呢,在的公司,...scanf函数的调用格式为: scanf("格式控制字符串", 地址列表); scanf是一个变参函数。 scanf的第一个参数是字符串。scanf的第一个参数内容为匹配字符以及转换规范。...a; } 输出为: 运算符 算数运算符 赋值运算符 sizeof运算符 sizeof可以用来计算一个变量或常量、数据类型所占的内存字节数 逗号运算符 关系运算符 逻辑运算符 三目运算符

30420

为什么用 Svelte 写一个小程序如此快速?用10分钟就搞定了!

创建一个书籍列表 我们将建立一个小的书单,允许我们添加和删除我们的阅读清单上的书。最终结果如下图所示。 我们将从一个项目模板开始搭建我们的项目。我们将使用官方的Svelte模板。...这也是为什么Svelte应用程序的包大小如此之小的原因:所有不需要的东西都不会出现在输出中,所以Svelte可以省去运行时中所有不需要的部分。...这就是为什么我们需要做books=[…书,newBook];或books.push (newBook);book=books;。否则,sevlet 不会知道 book 更新了。 收尾 我们做到了!...一个成熟的应用程序需要某种状态管理、多个组件,以及将这些组件相互集成的方法。 例如,将一个待办事项的显示拆分为一个单独的组件是有意义的,因为我们将添加一些功能,如就地编辑名称或将其标记为已完成。...有一个官方的VS Code扩展正在积极维护,以及一个底层的语言服务器,可以被许多其他ide用来集成智能感知。

2.6K10

详解指针(超详细)(第一卷)

,就无法直接对a的值进行改变,这时我们就可以用解引用,例如这样 (c++中不支持该操作,编译器会报错) 二.指针变量 1.注意上文对指针p的定义是int*,那么会有人问如果写成int * p或者int...*p可以吗,答案是肯定的啦,它们本质是一样的,那么又有人要问了为什么非要用int嘞,char/short/long这些不行吗?...我们都知道C语言中有个函数叫做strlen,统计一个字符串中出\0外的字符个数 就像这样,那么接下来我们可以用指针-指针自己设计一个类似于strlen函数的函数,来更直观的体验一下指针-指针: 具体代码如下...未初始化的指针:在使用指针之前没有对其进行初始化,导致指针指向一个随机的内存地址。 2. 释放后使用指针:在释放动态分配的内存之后仍然使用指向该内存的指针。 3....初始化指针:在使用指针之前,务必将其初始化一个有效的地址,例如 NULL。 2. 使用智能指针:智能指针可以自动管理动态分配的内存,避免手动释放内存时出现错误。 3.

7410

一文带你了解c++和c中字符串的使用

C++和C语言中都使用ASCII编码对字符进行编程,编码后可以用char型变量来表示一个字符。字符串就是多个字符打包在一起共同组成的。          ...为什么需要sizeof?...注意一点是:strlen返回的字符串长度是不包含字符串结尾的'\0'的。我们为什么需要strlen库函数?...(2)sizeof(数组名)得到的永远是数组的元素个数(也就是数组的大小),和数组中有无初始化初始化多、少等是没有关系的;strlen是用来计算字符串的长度的,只能传递合法的字符串进去才有意义,如果随便传递一个字符指针...3、字符数组与字符串的本质差异(内存分配角度):    (1)字符数组char a[] = "linux";来说,定义了一个数组a,数组a占6字节,右值"linux"本身只存在于编译器中,编译器将它用来初始化字符数组

69720

c语言每日一练(5)

,打印字符串,打印到'\0'就停止,没遇到'\0'就会一直打印到遇到'\0'为止 代码将a,b,'\0',c,'\0'一个一个字符放进了c这个字符数组中,并用打印字符串的形式打印,但刚打印完a,b..."; C、char a[15]; D、char a[10]='5'; 解析:A,B选项都使用了字符串初始化数组,可能你不明白为什么可以用字符串初始化数组,但做这道题的时候你就应该直接排除掉...之所以可以用字符串初始化数组,是因为,字符串的特殊性,字符串本身代表首元素的地址。而C选项它没有初始化数组,当然不能算错。...,一个缺失,那么使用1^2^3........对qsort函数不了解的小伙伴可以看下之前的文章 手把手教你使用qsort函数_大海里的番茄的博客-CSDN博客 #include #include int cmp_int

14010

【图解】记一次手撕算法面试:字节跳动的面试官把四连击了

这道题是这样的 给定一个只包括 '(',')'的字符串,判断字符串是否有效。...相当于字符串的最前面出现了 ")",显然这是不合理的。 2、当字符串遍历完成,判断栈是否为空,如果为空则表示字符串有效,否则无效。 为了兼顾小白,该给你们画了个图演示,,,,太良心了。...由于我们栈里面存放的都是**同一种字符 **"(" ,其实我们可以用一个变量来取代栈的,这个变量就记录 "(" 的个数,遇到 "(" 变量就加 1,遇到 ")" 变量就减 1,栈为空就相当于变量的值为...没事,弄个例子画几个图,例如 s = "( ) ) ( ( ) )",并且用变量 max 来保存最长有效字符串的程度,i 表示当前字符串的下标 0、初始化:max = 0; i = 0。...当遍历完字符串,我们是否就得到最大长度的有效括号了呢?大家可以想一下 答是不可以的,我们还需要从右到左遍历计算一下。 为什么呢?

38820
领券