首页 > 编程语言 >3月5日-java随笔(雪花算法)

3月5日-java随笔(雪花算法)

时间:2024-03-05 17:14:48浏览次数:24  
标签:java 容量 ArrayList 节点 算法 数组 随笔 ID

一、简单介绍一下雪花算法原理

1、雪花算法生成一个64bit的长整型标识符,其内部结构包含四个部分。首先,最左侧的一个bit通常被置为0作为符号位(在实际应用中往往无意义)。接下来的41bit用于存储自某个时间起点以来的毫秒级时间戳,以此确保生成的ID具有时间上的有序性。第三个组成部分是10bit的工作节点ID部分,在跨机房部署的情况下,这10bit可以根据需求划分为两部分,例如前5bit代表机房ID,后5bit代表机房内的机器ID,以确保每个工作节点的ID在整个系统中唯一。最后的12bit则用来存储同一节点内同一毫秒内产生的不同事件序号,以便在同一节点内部生成多个唯一的ID。

ArrayList扩容原理

1、ArrayList在Java中采用数组作为底层数据结构,其初始容量(capacity)可在构造时指定为10或其他值。当向ArrayList中添加元素,使得其实际元素数量达到等于当前容量时,便会触发自动扩容操作。扩容过程中,ArrayList并非调用copyOfValue方法,而是调用ensureCapacityInternal方法进而调用grow方法,grow方法会新建一个容量大约为原数组1.5倍的新数组(确切说是旧容量加原容量的一半,向上取整),然后将旧数组中的所有元素逐一复制到新数组中,从而完成扩容操作。"

 

标签:java,容量,ArrayList,节点,算法,数组,随笔,ID
From: https://www.cnblogs.com/yuanyuuan/p/18054433

相关文章

  • 代码随想录算法训练营第三十六天| ● 738.单调递增的数字 ● 968.监控二叉树 ● 总
    单调递增的数字 题目链接:738.单调递增的数字-力扣(LeetCode)思路:从左向右验证是否按位单调递增,如果出现递减的区间,则从该位开始验证该位减1后是否比左边的相邻位大,如果不符合就接着向左寻找这样的位,如果找到了,则将该位前面的位复制到结果中,该位减1加入结果,该位之后的位全部改......
  • day56 动态规划part13 代码随想录算法训练营 718. 最长重复子数组
    题目:718.最长重复子数组我的感悟:有难度,不好想。理解难点:二维DP,记住那个图:===============听课笔记:我的代码:classSolution:deffindLength(self,nums1:List[int],nums2:List[int])->int:#初始化#假设内层是nums1,n,j,外层是nums2,m,......
  • Java八股文
    什么是面向对象对比面向过程注重事情的步骤顺序,面向对象更关注有哪些参与者(对象),各种需要做什么,易于扩展。封装内部对外部来说是透明的,无需修改关心内部实现例如:操作数据库,不需要关心连接简历,sql执行,引入mybatis,调方法即可JavaBean属性私有,不能由外部随意修改。继承继承基......
  • 基于JAVA的2048小游戏的二次开发
    引言《2048Numberpuzzlegame》是一款数字益智游戏,而《2048》的初始数字则是由2+2组成的基数4。在操作方面的不同则表现为一步一格的移动,变成更为爽快的一次到底。相同数字的方框在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出「2048」......
  • 基于JAVA的康威生命游戏二次开发
    引言:       康威生命游戏(Conway'sGameofLife)是一种基于细胞自动机的零玩家游戏,由数学家约翰·康威(JohnConway)于1970年创建。这个游戏并不是传统意义上的游戏,而是一种模拟生命演变的规则系统。康威生命游戏的“宇宙”是一个由无限的二维网格组成的平面,每个格子被称为......
  • 文心一言 VS 讯飞星火 VS chatgpt (208)-- 算法导论15.4 5题
    五、设计一个O($n^2$)时间的算法,求一个n个数的序列的最长单调递增子序列。要写代码的时候,请用go语言。文心一言,抛panic:在Go语言中设计一个O(n^2)时间复杂度的算法来求一个n个数的序列的最长单调递增子序列(LongestIncreasingSubsequence,LIS)可以使用动态规划的方法......
  • day56 动态规划part13 代码随想录算法训练营 674. 最长连续递增序列
    题目:674.最长连续递增序列我的感悟:网速快是不一样!!这个题别看简单,写不出递推公式也白搭理解难点:递推公式,是只跟昨天的比,如果没有,就重新计算!听课笔记:我的代码:classSolution:deffindLengthOfLCIS(self,nums:List[int])->int:dp=[1]*len(nums)......
  • linux下的java部署
    jar命令简介java部署jar包可以使用java-jar命令,比如:java-jardemo.jar执行上述命令后,JAR包中的程序将在Linux系统中运行。注:在运行JAR包之前,确保你的JAR文件是可执行的,并且包含了正确的类和依赖项。如果JAR包依赖于其他库或配置文件,确保它们也在正确的位置可用。......
  • 动手学强化学习(七.1):DQN 算法代码
    一、代码如下:importrandomimportgymimportnumpyasnpimportcollectionsfromtqdmimporttqdmimporttorchimporttorch.nn.functionalasFimportmatplotlib.pyplotaspltimportrl_utilsclassReplayBuffer:'''经验回放池'''......
  • 代码随想录算法训练营第三十六天 | 56. 合并区间,763.划分字母区间,435. 无重叠区间
    435.无重叠区间 已解答中等 相关标签相关企业 给定一个区间的集合 intervals ,其中 intervals[i]=[starti,endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 示例1:输入:intervals=[[1,2],[2,3],[3,4],[1,3]]输出:1解......