什么是bitmap
在了解bitmap之前,先看下Java中的8个基本数据类型: 可以看到,不同数据类型,占用的存储空间也是不一样的。这里主要有两个单位:byte和bit。 byte byte就是平常说的字节,是计算机中基本存储单位。可以看到除了boolean,其他基本数据类型都是以byte作为基本存储单位的。计算机在处理数据时,也是以字节来处理和存储的,一个字节通常有8位构成。以无符号数为例,一个字节可以表示从00000000到11111111的二进制数,即 0 到 255 之间的整数。 bit bit就是平时说的位,也叫比特,是计算机中最小数据单位,只有两个值:0和1,可以表示true和false,上面的boolean占位就是1bit。我们都知道计算机的CPU有32位和64位,这里的位就是bit,你也可以说64位CPU每个时钟周期能处理8字节数据。1byte = 8 bit。 字节和表示范围 从上面的图可以看出,int和float都是4个字节,但是都知道int和float能表示的数值范围是不同的。这是因为字节只是规定了数据类型的长度,他们俩都是32位的,但是对于这32位的定义确是不同的: in...
面试题:两数组之和
题目 有两个数组:int[] a = {1,2,3,4}; int[] b = {5,6,7}; 请实现add(a, b);算法,计算两个数组相加的值int c [] = {1,8,0,1}; 即1234+567=1801。 解答 算法一 将字符串转换为数字,计算出c=a+b后,再将c转换为字符串输出: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647public class ArrayAddition { public static int[] add(int[] a, int[] b) { // 将数组转换为字符串 StringBuilder num1 = new StringBuilder(); StringBuilder num2 = new StringBuilder(); for (int i : a) { num1....
写在金九银十前夕
从年后到现在断断续续都在投简历,实际面试的数量简直屈指可数,说[投面比]百分之一也不过分。虽然小红书上和各大招聘软件社区里也都是哀鴻遍野,都觉得软件行业今年很难,Java最难,但是各大招聘软件这两年都吃的挺好。 行业关键字 卡年龄 35岁几乎是公认的码农下岗线。很多公司都在招聘时标明了年龄在35岁以下,对于大龄码农企业一直是一种不待见的态度。要求5-10工作经验,但是年龄不能超过35。虽然某些软件强制不能写出来,但是HR招聘的时候简历也会被过滤掉。 卡学历 2024年软件行业对学历的要求也比之前高了。还记得2020年左右,三本和专科也能获得一份不错的IT工作。但是2024年我感觉基本上非本科已经很难了。再说非软工,除非有985/211这种级别的buff加持,否则也很难入局,或者在高位就职。即使招聘条件上不让写必须985或211,但是你看到的“*** 优先”说明了一切。不过得说一下,982和211已经是过去的称呼,现在都是叫"双一流"。 ⚠️985/211/双一流区别:点这里看看 卡薪资 之前3-5年随便20k,现在5-10年18k。大厂薪资和福利虽然还是比较高...
Java后端必备技能(四):MySQL进阶篇
这是一个系列文章,完整列表在这里: 🚀 Java后端面试必备技能列表 Java Version:如果没有特别说明,那么默认Java8,hotspot虚拟机。 MySQL Version:如果没有特别说明那就是最后一个5.x版本5.7.44。 SQL子语言 SQL:Structured Query Language,结构化查询语言,主要对数据库管理和操作,主要由以下几个子语言组成: DDL Data Definition Language,数据定义语言。用于定义和管理表,索引,视图等,如CREATE,ALTER,DROP DML:Data Manipulation Language,数据操作语言。用于对数据库中数据进行操作,如:INSERT,DELETE,UPDATE DQL Data Query Language,数据查询语言。不涉及修改,如SELECT DCL Data Control Language,数据控制语言。主要控制对数据库的访问权限,如:GRANT、REVOKE TCL Transaction Control Language,事务控制语言。主要用来管理数据库...
Java后端必备技能(三):MySQL基础篇
这是一个系列文章,完整列表在这里: 🚀 Java后端面试必备技能列表 Java Version:如果没有特别说明,那么默认Java8,hotspot虚拟机。 MySQL Version:如果没有特别说明那就是最后一个5.x版本5.7.44。 关系数据库特点 MySQL是典型的关系数据库(Relational Database Management System, RDBMS),它由多张SQL表组成。对于关系型数据库,主要有以下几个特点: 二维表结构 关系型数据库(database)的基本元素是数据表(table),他可以理解为一张二维表,由行(row)和列(column)组成。每一行就是一条记录,每一列就是一个字段,下面是一张标准sql表: 表结构固定 关系型数据库在创建后拥有固定的表结构,后续数据的插入需要符合已经设定的字段和数据类型。 使用SQL查询 关系型数据库使用结构化查询语言SQL对数据库操作,支持多种复杂的查询方式,入多表关联,事务等。 支持事务 事务的作用,就是为了确保数据的完整性和一致性,它规定了一组操作要么全部执行,要么全部不执行。关系型数据库一般都会支...
Hexo配置记录
主题 在用主题 hexo-theme-keep : https://github.com/XPoet/hexo-theme-keep 整体好用。就是每次更新文章最后更新日期都被刷成了最新,虽然在github actions提供了解决方案,但是其他平台没有。会折腾的可以玩。 hexo-theme-butterfly : https://github.com/jerryc127/hexo-theme-butterfly 整体好用。布局基本能覆盖上个主题,定制化强,魔改可以很魔幻。特点是图片很多,不加不好看,加了速度慢。会搞优化的很推荐玩。 目前发现的bug:配置giscus不能显示最新评论。所以我改成了默认waline。也有可能是giscus不支持。 这两个主题都有配置,可能随时切换,配置文件在这里。 用过的主题 hexo-theme-indigo : https://github.com/yscoder/hexo-theme-indigo 简约风格。很久之前用过的一个主题,特点是简约。不过现在已经好久没更新了,node和其他模块版本都比较老旧,不推荐。 之前的配置在这里。 推荐主题...
Java后端必备技能(二):Java原理
这是一个系列文章,完整列表在这里: 🚀 Java后端面试必备技能列表 Java Version:如果没有特别说明,那么默认Java8,hotspot虚拟机。 这一篇讲下你编写的.Java文件,最终是如何被翻译成机器码在CPU上执行的,顺便讲明白了四个常问面试八股: Java源代码如何翻译成机器码? — Java编译原理 Java源代码在JVM中是如何运行的? — Java执行过程 Java类是如何加载到JVM的? — JVM类加载机制 Java如何保证类加载的唯一性和安全性? — Java双亲委派模型 高级语言 Java是一门高级开发语言。不是说learning Java OR be a Javaer高级,也不是说哪种开发语言好哪种不好,而是语言的抽象程度。记住一句话:越需要考虑操作系统的编程语言级别越低。 举个例子 在stackoverflow看到一个很好的回答,他通过对比不同开发语言特点,非常直观的让你感受到开发语言的高级和低级: 各自特点 低级语言 一般都需要较长的开发时间,对操作系统和硬件指令有一定的要求,需要直接对底层操作,代码执行效率高。 高级语言 对开发...
Java后端必备技能(一):JVM
这是一个系列文章,完整列表在这里: 🚀 Java后端面试必备技能列表 Java Version:如果没有特别说明,那么默认Java8,hotspot虚拟机。 我写的东西会比较干,一点也不润~ “干”其实就是没那么多上下文,只有生硬的知识点。写这个些列的重点是为了记录📝知识点和最终结论,关于细节上的解释建议自行探索。 Java和JVM的关系 Java特点 1.Java是一种面向对象的服务端开发语言 2.Java所有的方法都必须写在类(class)中 3.Java是一种编译+解释型语言 4.在Java中,一切皆对象 5.在Java中,只有值传递,不存在引用传递 6.Java通过Java内存模型(JMM:原子性,可见性,有序性)保证多线程环境中数据一致性 JVM特点 JVM的全称是Java Virtual Machine,即Java虚拟机,主要负责: 1.解释和执行字节码文件(.class) 2.管理程序内存(堆内存+栈内存) 3.提供垃圾回收机制 4.提供多线程支持 Java平台无关性 Java语言是平台无关的,主要由下面三个方面给于保证: 1.Java语言规范:保证了Jav...
Java后端面试必备技能
📚 文章目录 🚀 Java后端面试必备技能列表 🚀 Java后端必备技能(一):JVM原理 🚀 Java后端必备技能(二):Java原理 🚀 Java后端必备技能(三):MySQL基础篇 🚀 Java后端必备技能(四):MySQL进阶篇 TODO说明:这是一个系列文章,目前还没有全部完成。 Java Version:如果没有特别说明,那么默认Java8,hotspot虚拟机。 接下来的一段时间,我将对我之前工作中用到的知识和技能做一个整理,从一个Java后端开发人员的角度整理一份《Java后端面试必备技能》。 我的计划🐔 Q:我想让这份文档是怎样的,应该具备什么样的特点? A:我觉得主要从以下三个点来总结和整理: 1.非常的实用:这份文档主打实用性,尽量覆盖面试中占80%以上的知识点。 2.不会大而全:不涉及前端、运维等技术,做一个真正的后端开发。 3.必备知识点:主要还是精炼为主,几乎是每个学习Java和使用Java工作的人都会用到的技能。 先挖个坑⛰️ 坑先挖好,目前计划要写的内容如下: 1、Java特性:Java基础,集合,并发,jvm原理 2、...
java/python/go简单比较
Java 优点 跨平台性:Java的“写一次,运行到处”的特性使其可以在不同的平台上无缝运行。 丰富的库和框架:拥有大量的库和框架支持,从Web开发(如Spring)到大数据处理(如Hadoop)。 强类型语言:严格的类型检查使得代码更加安全,减少了运行时错误。 多线程:内置强大的多线程和并发处理能力。 成熟和稳定:经过多年发展,Java已经非常成熟和稳定,社区支持庞大。 缺点 语法冗长:相对于其他语言,Java代码显得比较冗长。 性能开销:JVM的启动时间和内存开销较大。 学习曲线:对于初学者来说,Java的语法和概念可能较为复杂。 Go 优点 简单性:语法简洁,容易学习和掌握。 性能高效:接近C/C++的性能,但更易于编写和维护。 并发支持:内置的goroutines和channel使得并发编程更加简单高效。 静态编译:编译成静态的二进制文件,部署方便。 内存管理:内置垃圾回收和内存管理机制。 缺点 库和框架少:相比Java和Python,Go的库和框架较少。 不支持泛型:目前不支持泛型(虽然未来可能会加入),限制了一些编程灵活性。 社区较小:虽然在增长中,但G...