开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
U.S.

葛大爷的不见不散就看见油价了

视频网站推了一个 1998 年的老电影。 别的没有看见,就看见油价是 1.17,现在 CA 的油价可不是这个数了吧。   时间过得可真快呀,那个时候在那读书都不知道呢? https://www.isharkfly.com/t/topic/14710/1

2023年09月07日 0Comments 380Browse 0Like Read more
Computer Science

多年没有这么花时间解决一个问题了

Ruby 和 PgSQL 并不是我非常熟悉的领域。 多年没有花这么多的时间解决一个问题了,从数据的 Dump 到数据导入,到容器的 SQL 执行。 当你想放弃的时候,发现你有的是一种热爱,喜欢体验到问题被解决的感觉,人还是有需要有理想的。 尤其是在你感觉到沮丧和低谷的时候,你一定要相信自己。 Buster Moon 说过 : When you’ve reached rock bottom, there’s only one way to go, and that’s up! 不要放弃,一切问题都是有原因的,也会有解决办法的。 开始阶段 最开始的时候我们只是遇到图片没有显示的问题,一直不知道是什么原因。 后来发现是在 Discourse 的 HTML 没有被正确的重新构建。 后来,我们发现可能是算法,因为 Discourse 的 URL 短算法有可能会导致没有办法进行完全的解码。 问题 当我们继续寻找问题的时候,我们发现没有办法直接查询数据库获得 String 的映射信息。 这时候怎么办呢?我们只对数据库进行查看,这是第一次我们 dump 数据库。 Discourse 使用的是 PgSQL 数据库,这个比 MySQL 要更加复杂,所以我们在本地的计算机中装了一个 PGSQL 数据库实例。 然后把服务器上的备份文件下载到本地后导入到数据库。 我们最后发现 uploads 的表数据量不一样。 最后我们才定位到是因为表丢数据了,虽然不知道具体的原因,但是只要恢复具体的数据问题就能解决了。     因为 Discourse 使用了容器,如何执行 SQL 导入数据又是问题。 我们需要进入 Docker 容器后,然后登录数据库再运行 SQL 才能导入数据。 同时因为文件格式的不一样,甚至没有办法直接运行 SQL 脚本。 经过最后一堆折腾后才解决这个问题,很高兴最后问题解决了。 很长时间没有为了解决一个问题花费这么多时间了,很多人说搞 IT 为什么,调 Bug 为什么。 有时候只是单纯的因为喜欢。   https://www.isharkfly.com/t/topic/14709

2023年09月07日 0Comments 394Browse 0Like Read more
Computer Science

计算机的 bit(比特)和Byte(字节)

我们来说说和数据有关的单位 bit 和 Byte。 在说这这个数据当我之前,大家应该都知道计算机实际上只能处理0和1。 计算机能够把0和1转换为电路中的信号来进行计算,这个其实就是计算机的本质。 单位定义 我们先对需要使用的单位进行一些定义。 bit(比特) bit 就是计算机对数据存储和移动的最小单元,这个只有2个值,0和1。它的简写为小写字母“b”。 作为信息技术的最基本存储单元,因为比特实在太小了,所以大家生活中可能接触不到,在装宽带的时候被忽悠的就是这个单位。 Byte(字节) Byte 是字节的英文写法。它的简写为大写字母“B”。 既然名字叫字节,那肯定跟字符有关系。英文字符通常是一个字节,也就是1B。中文字符因为字符集的问题通常会超过 2 个字节。 这是和中文字符有关的,因为中文字符编码的问题,我们是没有办法把所中文存储在一个字节中的。 所以对亚洲国家用的字符,比如我们以后可能会说到的 CJK,会占到 4 个字节。 转换关系 8 bit 等于 1 byte。 一个字节等于八位。 表达用途 因为 bit 这个单位实在是太小了,用在存储上并不是很好用。 所以我们大致上只需要了解: bit 用在数据通信上,存储上用的是 Byte。 简单来说,和通信有关的都是位,和存储有关的都是字节。 这是因为在数据传输中,交换机和硬件只负责把 0 或者 1 发送到目的地,所以使用位这个单位更好来表示数据传输。 为什么要了解 Bit 和 Byte 现在来说下为什么需要对 Bit 和 Byte 有些基本的了解。 其实我们主要是用来理解下计算机是如何对数据进行计算的。 比如说,在 Java 程序中,我们都会知道有一个数据类型,其实所有的计算机语言都会有数据类型的。 我们拿最常用的 Int 来举例,如果你不知道 Java 的 Int 是多少位的话,你可以随意搜索下应该得到的答案是 Java Int 是 32 位的。 当我们在程序中对 Int 进行计算的时候,就涉及到你需要进行计算的 2 个数字,如何通过位的移动来获得结果,因为我们知道计算机只能处理 Bit 数据。 举例来说,假设我们希望让计算机告诉我们 12 +12 等于多少,首先我们就需要知道 12 在计算机内是怎么存储的,对于数字 12 的整数类型,程序会用一什么 0 和 1 的序列进行存储。 在做加法的时候,程序会通过怎么样的位移动来得到具体的值。 这个过程实际上就是计算机 CPU 处理的过程。 因为我们在程序计算的时候,这部分对大部分程序开发都是透明的,所以我们实际上只需要了解 Bit 和 Byte 直接的一些关系就好了。 因为了解这些关系,能够有助于我们在以后看到一些文献资料的时候了解存储和计算过程,但因实际用得并不多,大部分情况也不会要求你主动去进行位移动计算,因为这是计算机做的事情。 https://www.isharkfly.com/t/bit-byte/14696

2023年09月05日 0Comments 449Browse 0Like Read more
Computer Science

Java 几个基本数据类型长度

对 Java 来说,我们通常会有下面几个基本数据类型。 需要了解的一个定义是,一个字节(byte) 是 8 位(Bit)。 针对 Java 的所有数据类型,最小的是 1 个字节,最多的是 8 个字节 数据长度对照表 下面是 Java 数据长度使用的对照表。 类型 长度(位) 长度(字节) 范围 byte(字节型) 4 1 -128~127 boolean(布尔型) 4 1 true或false int(整型) 32 4 -2147483648~2147483647 short(短整型) 16 2 -32768~32767 long(长整型) 64 8 -9223372036854775808 ~ 9223372036854775807 char(字符型) 16 2 0~65535 float(浮点型) 32 4 -3.4E38~3.4E38 double(双精度型) 64 8 -1.7E308~1.7E308 记不住可以实际的取值范围? 其实是人都记不住。 Java API Java 的 API 提供了方法是可以让直接输出的。 比如说,你想知道 Float 的最大值,可以运行下面的代码 System.out.println(Float.MAX_VALUE); 程序上将会输出为:3.4028235E38 不知道上面什么意思? 科学计数法的表达。 又比如 Long 这个整数可以存储的最大数值为:9223372036854775807 直接运行就可以输出了:     同时你可以可以读 Java 的 API,在构造函数中,Java 已经定义了 Max_value。     上面的图片中的内容就定义了值。 我们看到是用 16 进制定义的。 https://www.isharkfly.com/t/java/14695

2023年09月05日 0Comments 441Browse 0Like Read more
Computer Science

开始投简历了

歇了好长时间,也该开始找点事情折腾了。 第一周基本上是没有什么太多的消息,大部分情况就是收到回复的邮件说你很优秀,希望下次合作这种礼节性的拒绝邮件。 给人有点感觉都是在忽悠,有点感觉现在的公司一边到处拒绝,一边又在到处找人。 一个招聘放网站能放 3 个月,真的不知道他们是招人来工作还是就是给自己做点广告啥的,毕竟这招聘广告可比 Google 广告便宜多。 第二周 一直到第二周才有一些正儿八经的面试了,通常都是第一轮大家见个面聊聊。   还有更奇葩的,发消息过来说你能接受做个 OA 吗?回答,当然是 Yes 了。然后就没有下文了。   其中还发了个消息过去说,你不是说要做 OA 吗?链接呢? 从这个事情上,感觉这 OA 也就是一个毛。 如果你 OA 做不出来,没关系,不是你的能力问题,而是这 OA 实在就是没啥意义,千万不要因为自己 OA 没有做好就觉得自己有问题。 也算是个好消息 以前有一个 Google 的广告账号的,不知道怎么被封了。 早上打开电脑后,莫名其妙的说账号可以用了。     有时候觉得还挺奇葩的,当你需要的时候,不是这有问题那有问题。 生活上,也许总会有那么点小挫折吧,然后就是一些小惊喜。   https://www.isharkfly.com/t/topic/14673

2023年09月05日 0Comments 395Browse 0Like Read more
U.S.

美联航这生意经 Premier Access 都拿来卖了

只要坐过国际航班都都知道,经济舱那个看不到都头的排队。 不管怎么排队,貌似最后大家都能上飞机了,如果你不想在托运行李那里等个把小时,那这插队的权利是你需要的。 美联航有一个 Premier Access,说白了就是这个能够给你在办票的和登机的时候插个队。 现在被美联航拿来卖了,不想排队,也行每次 24 美元。     真的有点佩服 UA 这生意经,什么东西都可以拿来卖。 等卖得多了,这东西也不值钱了,搞不好 Premier Access 也要妥妥的排上几十分钟。   https://www.isharkfly.com/t/premier-access/14645/1

2023年09月04日 0Comments 408Browse 0Like Read more
U.S.

2023年硬是活生生的把美联航飞成银卡了

感觉最主要好用的福利可能就是下面 2 个用得多点。     Premier Access 专属Check-in柜台,优先安检,优先登机,优先取托运行李。 UA 银卡及以上会员,在机场可享受专属check-in柜台,和优先安检通道(视机场而定)的福利。     Economy Plus 待遇 坐飞机时,多一寸legroom就是多一寸舒适。UA 的Economy Plus在经济舱的基础上,增加了前后距离,使小伙伴们能有更多的腿部空间。 也就比后面稍微宽敞点吧,本着有比没有好的态度就行了。   https://www.isharkfly.com/t/topic/14644

2023年09月04日 0Comments 464Browse 0Like Read more
Computer Science

Java 中的移位运算符(Shift Operator)

针对移位(Shift Operator)操作符是最基本的操作符之一,几乎每种编程语言都包含这一操作符。 同时我们对移位运算又会觉得比较陌生和困惑,这是因为移位运算除了在 JDK 底层你会遇到不少,还有就是在各种奇葩的面试题会遇到一些,在实际使用的时候,这个运算其实很难用得上。 因为用得不多,所以在大部分人的面对的代码情况下,根本不会考虑移位运算,所以对移位运算我们大致知道下就可以了,至于如何奇葩的运算,你只知道一些基本概念就行,其实很多时候并不需要你直接用移位运算算出来。 基本概念 针对移位运算,我们需要了解有几个基本概念。 3 个移位运算符 Java 只有 3 个移位运算符, << (左移)、 >> (带符号右移)和 >>> (无符号右移)。 为什么有 3 个,移位运算不是左就是右,为什么有 3 个? 因为 Java 的整数是有符号的整数,所以针对符号转换 Java 添加了一个无符号右移。 只能用于整数 Java 的移位运算,不能用于浮点数,只能用于整数。 因为 Java 可以处理整数的长度不一样,所以移位运算只会用在 int 上,虽然其他数据类型也可以用,但是都是在转换成 int 后进行计算的。 类型 长度 long 64 位 int 32 位 short 16 位 byte 8 位 char 16 位 整数 2 进制表达 在 Java 的整数 int 表达中,其中有一个位留给了符号位置,所以真正可以存储数据的位为 31 位。 因此,Int 的存储范围为:[-2^31,2^31-1],所以上面的指数为 31, 而不是 32 的原因是其中有一位留给了符号位。 左移操作符 << 左移操作符 << 是将数据转换成二进制数后,向左移若干位,高位丢弃,低位补零 。 如下面的代码: log.debug("{}/{}", Integer.toBinaryString(12), Integer.parseInt(Integer.toBinaryString(12), 2)); log.debug("{}/{}", Integer.toBinaryString(12 << 1), Integer.parseInt(Integer.toBinaryString(12 << 1), 2)); log.debug("{}/{}", Integer.toBinaryString(12 << 8), Integer.parseInt(Integer.toBinaryString(12 << 1), 2)); 程序的输出为: 12:16:18.985 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 1100/12 12:16:18.986 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11000/24 12:16:18.986 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 110000000000/24 因为都在末尾补 0 ,所以在范围内,不管你是左移 1 位还是超过 1 位,都是等于 10 进制的数乘以 2。     带符号右移操作符 >> Java中整型表示负数时,最高位为符号位,正数为0 ,负数为1 。 >> 是带符号的右移操作符,将数据转换成二进制数后,向右移若干位,高位补符号位,低位丢弃 。 对于正数作右移操作时,具体体现为高位补0 ;负数则补1 这个主要是针对右移动的时候高位出现空白,我们应该还是补 0 还是 1 的问题。 带符号的右移意思就是:当高位出现空白的时候,我们补符号位,根据当前的数据不同而不同。 如下面的代码: log.debug("{}", Integer.toBinaryString(-12)); log.debug("{}", Integer.toBinaryString(-12 >> 1)); log.debug("{}", Integer.toBinaryString(-12 >> 8)); 运行结果为: 12:25:32.765 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111110100 12:25:32.765 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111111010 12:25:32.765 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111111111 我们可以看到上面的移位为带有符号的移位置,所有移动的高位在负数的时候都被补充为符号位了。 如果是负数的话,就会补充为 1 。 无符号右移操作符 >>> 无符号右移操作符 >>> 与>> 类似,都是将数据转换为二进制数后右移若干位,不同之处在于,不论负数与否,结果都 是高位补零,低位丢弃 。 这个操作符的计算对负数的计算会因为补位的不同而变成整数。 如下面的代码。 log.debug("---- Shift Operator >>> ---"); log.debug("{}", Integer.toBinaryString(-12)); log.debug("{}/{}", Integer.toBinaryString(-12 >>> 1), Integer.parseInt(Integer.toBinaryString(-12 >>> 1), 2)); log.debug("{}/{}", Integer.toBinaryString(-12 >>> 8), Integer.parseInt(Integer.toBinaryString(-12 >>> 8), 2)); 程序输出如下: 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - ---- Shift Operator >>> --- 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 11111111111111111111111111110100 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 1111111111111111111111111111010/2147483642 13:25:19.374 [main] DEBUG com.ossez.toolkits.codebank.tests.EmptyQuickTest - 111111111111111111111111/16777215     从上面的代码输出中,我们会发现对应的 2 进制长度不一样,因为在 Java 程序中对于二进制,前面为 0 的时候,在输出的时候会进行丢弃的。 所以显示的长度不一样,如果希望显示长度一致的话,前面补 0 就可以了。   https://www.isharkfly.com/t/java-shift-operator/14594

2023年09月04日 0Comments 492Browse 0Like Read more
Computer Science

Java 乘等赋值运算

下面这个题目是在一公司发过来的,如果你对 Java 的赋值运算比较了解的话,会很快知道答案的。     这个运算符在 Java 里面叫做乘等或者乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数。 例如下面的:density *= invertedRatio; 其实等于的就是 density = density * invertedRatio; 这个语法是从 C 语言里面借鉴过来的,运算的目的就是把 2 个数相乘后把结果赋值给自己。 因为上面题目中的 Result 已经被赋值为 0 了。 因此这个循环不管循环多少次的结果都应该为 0。 因这个题目太简单了,所以我们就不把代码敲上来验证了。   https://www.ossez.com/t/java/14590

2023年09月02日 0Comments 418Browse 0Like Read more
Computer Science

题目有点太简单了,不知道怎么选了

有个公司给了下面一个题目,看了下太简单了,都怕选错了。     后来拿着程序跑了下,就是这个意思嘛。 结论 程序跑出来的结果就是对输入的列表进行倒序排列。 public void testGetPut() throws Exception { List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7); List<Integer> result = new ArrayList<Integer>(); for (int i = numbers.size() - 1; i >= 0; i--) { result.add(numbers.get(i)); } System.out.println(result); } 一度怀疑是不是写错了。 按照套路来说,上面的代码不应该还是要复杂点的吗?     觉得,有时候在公司给你做 OA 的时候,自己也需要相信自己,不是所有的东西都是复杂的。 其实有时候你做的 OA ,很多公司可能看都不会看。   https://www.ossez.com/t/topic/14588/1

2023年09月02日 0Comments 392Browse 0Like Read more
1…7475767778…303
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (518)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1