精华内容
下载资源
问答
  • 怎样根据开关容量计算MNS抽屉柜的抽屉尺寸
  •  很多用户都遇到相同的问题,就是怎样计算一定容量的超级电容在以一定电流放电时的放电时间,或者根据放电电流及放电时间,怎么选择超级电容的容量,下面我们给出简单的计算公司,用户根据这个公式,就可以简单地...
  • 计算Map初始容量算法

    2019-10-11 10:41:28
    在实际开发中经常需要使用到Map,但给Map一个怎样的初始容量比较合理? 众所周知是最接近(要大于)数据长度的2的N次方 那么,如何计算? 欢迎指出错误 /** * 计算Map初始容量 * @author 枫铃也 * @since 2019-10-...

    在实际开发中经常需要使用到Map,但给Map一个怎样的初始容量比较合理?
    众所周知是最接近(要大于)数据长度的2的N次方
    那么,如何计算?

    欢迎指出错误

    /**
     * 计算Map初始容量
     * @author 枫铃也
     * @since 2019-10-09 15:51
     */
    public class CapacityUtil {
    
        private static final double MODULE = 2;
    
        public static int getCapacityFactor(int size) {
            int n = size;
            int power = 0;
            while (n > 1) {
                power++;
                n >>>= 1;
            }
            int capacity = (int) Math.pow(MODULE, power);
            if (capacity < size || capacity % MODULE != 0) {
                capacity *= MODULE;
            }
            return capacity;
        }
    }
    

    欢迎指出错误

    展开全文
  • 网络摄像机设置多少码流,需要多少储存容量,NVR的接入带宽需要接多少码流的网络摄像机。
  • 容量单位、字符集 完成:第一遍 1 计算机基本的容量单位有哪些? bit 位(比特),简写b,计算机存储信息的最小单位 byte 字节,简写B,1B=8b 1B=8b 1KB=1024B(千字节) 1MB=1024KB(兆字节) 1GB=1024MB(吉字节)...

    11.容量单位、字符集:计算机基本容量单位和换算关系是怎样的???什么是字符集???常见的字符集有哪些???

    学习:第7遍

    常见单词:
    ——》【bit 】
    ——》【byte 】
    ——》【emoji】
    ——》【ASCII】


    1 .计算机基本容量单位和换算关系是怎样的???

    计算机基本的容量单位:
    bit 位也就是比特,用小写字母b表示
    位是计算机存储信息的最小单位
    byte 字节,用大写字母B表示
    KB是千字节
    MB是兆字节
    GB是吉字节
    TB是太字节
    PB是拍字节
    EB是艾字节

    换算关系是:
    1B=8b
    1KB=1024B
    1MB=1024KB
    1GB=1024MB
    1TB=1024GB
    1PB=1024TB
    1EB=1024PB


    2 .什么是字符集???

    所有数据在计算机底层都是以二进制形式保存

    将字符比如汉字转换为二进制的过程,称为编码
    将二进制转换为字符的过程,称为解码

    编码和解码时采用的规则,就是字符集


    3.常见的字符集有哪些???

    美国常用字符集:ASCII
    使用7位二进制进行编码
    总共128个字符,不支持中文

    0的ASCII码是32
    小写字母a的ASCII码是97
    大写字母A的ASCII码是65
    小写字母如a的ASCII码等于大写字母如A的ASCII码+32

    欧洲常用字符集:ISO-8895-1
    使用8位二进制进行编码
    总共256个字符,不支持中文

    中国简体字字符集:GBK
    中国繁体字字符集:Big5

    包含世界上所有语言和字符的字符集是Unicode万国码
    常见是:
    utf-8
    可放emoji表情符号的utf8mb4
    utf-16
    utf-32


    开发人员一般使用utf8mb4字符集
    但Windows系统在中国默认字符集是GBK
    乱码原因:编码和解码所使用字符集不一致

    展开全文
  • 怎样确定样本容量的理论解释

    千次阅读 2018-07-18 21:02:03
    研究随机问题时,基本都要用到抽样仿真,比较仿真结果与实验结果的偏差。...在给定的置信水平 1−α1−α1-\alpha 下, 设样本的均值为 X¯¯¯¯X¯\overline{X},其误差 εε\varepsilon 由下列计算公式...

    研究随机问题时,基本都要用到抽样仿真,比较仿真结果与实验结果的偏差。

    设随机变量的均值为 μ,方差为 σ2,则 n 个样本的均值为 μ,方差为 σ2n

    在给定的置信水平 1α 下, 设样本的均值为 X¯,其误差 ε 由下列计算公式得出:

    ε=|X¯μ|

    1. 若 σ 已知

    由于中心极限定理,大量样本服从正态分布,样本的标准差为 σ/n,根据正态分布概率的计算公式,

    Φ(|X¯μ|σ/n)=α/2

    因此,
    ε=|X¯μ|=Zα/2σn

    可以推出样本容量 n 的计算公式为:

    n=Zα/22σ2ε2

    2. 若 σ 未知

    大部分情况下 σ 是未知的,为了消除 σ 的影响,有学者引入了 t 分布,

    t=X¯μS/n

    上面这个表达式为 自由度为 n1t 分布,其中 S 为样本方差,则

    ε=|X¯μ|=tα(n1)Sn

    得到 n 的计算公式为:

    n=tα2(n1)S2ε2

    在样本容量 n>30 时,置信水平 α<0.05时,一般可以近似采用下面的计算公式:

    n=4S2ε2

    若样本容量实在很小,则采用 “试差法” 确定 n.

    参考资料:
    1. https://en.wikipedia.org/wiki/Student%27s_t-distribution
    2. https://wenku.baidu.com/view/45a2dab5f605cc1755270722192e453610665bef.htmlrec_flag=default&sxts=1531916030126

    展开全文
  • 在计算机发展的早期阶段,硬件的发展速度慢,容量小,所以软件开发人员写起代码里对 byte、bit 都是「斤斤计较」,这才使用写出来的应用能在我们今天看起来那么小的,配置那么低的硬件中运行...

    在计算机发展的早期阶段,硬件的发展速度慢,容量小,所以软件开发人员写起代码里对 byte、bit 都是「斤斤计较」,这才使用写出来的应用能在我们今天看起来那么小的,配置那么低的硬件中运行良好,同时效果惊人。

    那么计算机发展到今天,硬件看似配置越来越高,但依然架不住你随意写,搞不好应用就挂了。另外像游戏等一些行业还是「锱铢必较」,让应用能 稳定的运行。在Java 应用里,要想精确计算,需要对于对象的占用大小做到心里有数。那这篇文章一起来看看, 在 Java 的世界里,一个对象的大小究竟是多少呢?有哪些方式能够计算对象大小。

    要看一个对象的大小,首先需要看Java 运行的平台是 32位还是 64位的 ,其次还要看对象内有多少属性(field)。最后还有一些 JVM 自身需要 在对象里记录的信息,比如说有GC的状态、同步状态、数组长度等等多种信息。这些项汇总求和,基本就是一个对象的大小了。不过VM为了效率,会采用固定长度,比如 8 位的整数倍来统一存储。这种情况下,如果原对象大小不足时,就会扩展对齐来存储。

    好的,下面来看下 JVM 里,一个Java 对象大小占用多少。

    由于现在基本操作系统基本都是64位,咱们后面都以64位 JVM 来说明。

    首先来看两个例子

    public class App {}
    
     public class App {    private byte a;    private int b;}
    

    例子1里, App 这个对象占用内存大小是多少 byte 呢?答案是 16。例子2 又是多少呢?答案是 24。

    这里是怎么计算的呢?

    计算方式

    和开头的文字描述类似,在Java 里一个对象大小,是由这些内容组成

    一个对象Object 大小 = Header + Primitive Fields + Reference Fields + Alignment & Padding`

    其中的 Header 部分,就是 JVM 用于记录特定信息的,一版也叫做 object header,在 OpenJDK 的汇总页里,描述是这样的:

    Common structure at the beginning of every GC-managed heap object. (Every oop points to an object header.) Includes fundamental information about the heap object's layout, type, GC state, synchronization state, and identity hash code. Consists of two words. In arrays it is immediately followed by a length field. Note that both Java objects and VM-internal objects have a common object header format.

    我们看到 object header 由这些部分组成:

    • mark word

    • klass pointer

    • (Optinal) 如果是数组,会记录数组的长度

    mark word

    The first word of every object header. Usually a set of bitfields including synchronization state and identity hash code. May also be a pointer (with characteristic low bit encoding) to synchronization related information. During GC, may contain GC state bits.

    klass pointer

    The second word of every object header. Points to another object (a metaobject) which describes the layout and behavior of the original object. For Java objects, the "klass" contains a C++ style "vtable".

    总结一下,对象头里,基本是 GC的状态、同步状态、identity hash code,数组长度,以及 class 元信息的指针。

    header 的长度由两个 word 组成。mark word 在 64位VM里,长度是 8 bytes。klass pointer 的长度64位VM下受参数-XX:+UseCompressedOops配置控制, 可能是 4 bytes,也可能是8 bytes。

    例子1,我们看关闭情况-XX:-UseCompressedOops

    OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
          0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
          4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
          8     4        (object header)                           38 c4 6a 97 (00111000 11000100 01101010 10010111) (-1754610632)
         12     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
    Instance size: 16 bytes
    Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
    

    16 bytes 全都是对象头。

    如果打开,则 object header 占 12 个bytes, 另外4个会补齐。

    OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
          0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
          4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
          8     4        (object header)                           05 c0 00 f8 (00000101 11000000 00000000 11111000) (-134168571)
         12     4        (loss due to the next object alignment)
    Instance size: 16 bytes
    Space losses: 0 bytes internal + 4 bytes external = 4 bytes total
    

    例子2,输出是这样:

    OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
          0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
          4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
          8     4        (object header)                           05 c1 00 f8 (00000101 11000001 00000000 11111000) (-134168315)
         12     4    int App.b                                     0
         16     1   byte App.a                                     0
         17     7        (loss due to the next object alignment)
    Instance size: 24 bytes
    Space losses: 0 bytes internal + 7 bytes external = 7 bytes total
    

    增加了 field 的占用, 这里的占用大小,就是咱们常说的 基本数据类型 的大小。如果有对象引用类型,就再加上这些的大小即可。

    工具

    下面的这些工具及方式,可用来计算对象的大小。

    1. JOL

    JOL 是 OpenJDK 提供的一个工具,在项目中添加依赖后可直接使用。

    <dependency>
        <groupId>org.openjdk.jol</groupId>
        <artifactId>jol-core</artifactId>
        <version>0.9</version>
    </dependency>
    

    然后代码里直接输出即可

    public class App {
        private byte a;
        private int b;    
        public static void main(String[] args) {
            // 这里就会输出和上面类似的内容
            System.out.println(ClassLayout.parseClass(new App()).toPrintable()); 
        }
    }
    
    1. Instrument

    在 Instrument 包的 Instrumentation类内,有一个可以直接获取对象大小的方法,注释如下

     /**
         * Returns an implementation-specific approximation of the amount of storage consumed by
         * the specified object. The result may include some or all of the object's overhead,
         * and thus is useful for comparison within an implementation but not between implementations.
         *
         * The estimate may change during a single invocation of the JVM.
         *
         * @param objectToSize     the object to size
         * @return an implementation-specific approximation of the amount of storage consumed by the specified object
         * @throws java.lang.NullPointerException if the supplied Object is <code>null</code>.
         */
    

    那怎样拿到 Instrument,从而调用这个方法,一般是通过 Agent attach 到 VM上来得到,一种是Agent 实现premain方法,一种是agentMain方法,区别在于attach的时机。

    比如你自己定义了一个Agent 的 jar

    import java.lang.instrument.Instrumentation;
    
    
    public class ObjectSizeFetcher {
        private static Instrumentation instrumentation;
    
    
        public static void premain(String args, Instrumentation inst) {
            instrumentation = inst;
        }
    
    
        public static long getObjectSize(Object o) {
            return instrumentation.getObjectSize(o);
        }
    }
    

    后面咱们在代码里直接静态调用 getObjectSize 方法就行了。

    1. SA

    我之前的文章(Java虚拟机的显微镜 Serviceability Agent)里介绍过 SA(Serviceablity Agent), 通过 SA,可以做到许多剖析 JVM 的事情。观察对象的组成和大小当然也不在话下。

    通过SA来观察上面例子2,效果是这样的:

    咱们能看到,整个对象先是_mark(mark word), 之后是 compressed klass(klass pointer ), 再后面是实例包含的属性。 如果红框所示,在  klass pointer 里面包含一个 _layout_helper,显示的就是该对象的大小。

    此外,在SA里的 Console 里,可以像命令行一样交互,也可以显示对象的大小。

    PS: 对于对象的大小,JVM在初始化分配的时候,会对 field 有个「重排序」,给 field 的分配排序,从而节省空间。比如先分配byte 或者 boolean 之后,再分配 int 这些,那 byte 之后可能需要增加 3 bytes 进行 padding,重排序可以减小空间占用。

    比如有这些属性:

    public class App {    private byte a;    private int b;    private boolean c;    private float d;    private char e = 'a';}
    
    OFFSET  SIZE      TYPE DESCRIPTION                               VALUE
          0     4           (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
          4     4           (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
          8     4           (object header)                           61 c1 00 f8 (01100001 11000001 00000000 11111000) (-134168223)
         12     4       int App.b                                     0
         16     4     float App.d                                     0.0
         20     2      char App.e                                     a
         22     1      byte App.a                                     0
         23     1   boolean App.c                                     false
    Instance size: 24 bytes
    Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
    

    在输出对象内容,我们发现,并不是按属性的声明顺序来分配的,这样只占用24 bytes,如果按声明顺序,那应该先分配byte, 之后再分配 int 这样为了对齐,会额外增加 3 个 bytes的(alignment/padding gap)最后可能会占用到32bytes。

    为了减少空间浪费,一般情况下,field分配的优先依次顺序是:

    double > long > int > float > char > short > byte > boolean > object reference。

    这里有个基本的原则是:尽可能先分配占用空间大的类型。


    我们公司不少部门都在招聘,另外看到不少前同事,朋友等所在公司也都在招聘,有社招,也有应届生和实习招聘,基本都是BATJ等大厂,所以特意创建了一个免费的知识星球「互联网求职」圈子。如果你在求职中,在招聘或在找内推,欢迎加入

    我会把这些招聘的信息发布到里面。后面有时间的话,会把关于简历、求职等一些共性的问题提提建议之类的。大家也可以一起交流,也更便于历史内容保存与查找。

    当然也欢迎加我微信,拉个微信群实时交流。 

    看点别的

    IO 多路复用是什么意思?

    问题诊断神器BTrace

    Java七武器系列霸王枪 -- 线程状态分析 jstack

    官方App,GitHub 能随身携带了

    Tomcat的异步Servlet实现原理

    阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力

    监控诊断工具 Arthas 源码原理分析

    自学三个月,成功面试大厂路线图

    Java虚拟机的显微镜 Serviceability Agent

    怎样回答技术面试题?

    怎样了解你的线程在干嘛?

    从0到1的微服务实践和优化思路

    怎样设计一个好用的短链接服务?

    更多常见问题,请关注公众号,在菜单「常见问题」中查看。

    源码|实战|成长|职场

    这里是「Tomcat那些事儿

    请留下你的足迹

    我们一起「终身成长」

    展开全文
  • 荷电状态又叫剩余电量,SOC,State of Charge,是反应电池包内当前电量占总体可用容量百分比的一个参数。驾驶员根据满电状态总的里程数,可以推断出当前电量的续航能力,也有车型直接显示续航距离。电量估计不准确的...
  • 这是中国首台自主研发CPU和底层系统的千万亿次超级计算机神威蓝光。带着几分好奇,电脑报记者来到济南...存储容量高达2PB(1PB等于100万GB); 最高带宽达到69.6TB/s(1TB等于1000GB); 每秒峰值运算达1.07千万亿
  • 变压器和配电设备的投资造价也跟着增长,怎样去合理选择变压器的和配电设备的额定容量或电流。即达到满足使用需求又不浪费,要求我们必须掌握负荷计算的方法,能准确预估电气负荷,这就到了考验电气工程师们的水平...
  • 怎样根据全厂电机总功率计算变压器大小?  1、电动机起动电流Iq≈2~7额定电流,GB12325-90规定10KV及以下三相供电电压允许偏差为额定电压的±7%,GB-T-3811-2008起重机设计规范7.2.1.2规定电压波动不得超过额定值...
  • 计算机存储单位换算

    2020-04-05 23:34:08
     二、他们换算关系是怎样的呢?  1、计算机存储信息的最小单位: 位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。  2、计算机存储容量基本单位是字节 字节...
  • 电费的计算

    2013-07-24 11:36:00
    某厂10KV供电,变压器容量200KVA,高压侧计量,月有功电量为65000KWH,无功量为5000KVar.h,求该月应缴电费 2010-10-23 ...怎样计算? 2010-10-23 提问者采纳 电费=变压器基本费用+有功电费+无功费用+罚款。 ...
  • 电容 放电时间的计算

    2011-04-07 10:50:06
    详细介绍:怎样计算一定容量的超级电容在以一定电流放电时的放电时间,或者根据放电电流及放电时间,怎么选择超级电容的容量。 如:单片机应用系统中,应用超级电容作为后备电源,在掉电后需要用超级电容维持100mA的...
  • 怎样才能做到更精确的分区容量呢?这里分区计算存在误差,既不是标准的 1024 也不是工业上面的 1000,而是:(A-1)×4+1024×A=YA — 你想要得到的整数分区的数值(单位为:GB)Y — 你分区时应该输入的数字(单位为...
  • 举些例子,研究计算乘法我们是用乘法器还是用多个加法器实现,这是计算机组成研究的事情,而怎样用电路实现一个乘法器是计算机实现研究的事情;再比如,研究主存的编址方式,容量,访问这些是计
  • 电容放电时间的计算

    2010-01-26 21:00:00
    在超级电容的应用中,很多用户都遇到相同的问题,就是怎样计算一定容量的超级电容在以一定电流放电时的放电时间,或者根据放电电流及放电时间,怎么选择超级电容的容量,下面我们给出简单的计算公司,用户根据这个...
  • 研究计算乘法我们是用乘法器还是用多个加法器实现,这是计算机组成研究的事情,而怎样用电路实现一个乘法器是计算机实现研究的事情;再比如,研究主存的编址方式,容量,访问这些是计算机组成研究的事物,但我们研究...
  • 硬盘整数分区大小计算

    千次阅读 2008-02-01 15:13:00
    怎样才能做到更精确的分区容量呢?这里分区计算存在误差,既不是标准的 1024 也不是工业上面的 1000,而是:(A-1)×4+1024×A=YA — 你想要得到的整数分区的数值(单位为:GB)Y — 你分区时应该输入的数字(单位为...
  • 一、HashMap底层数据结构 JDK1.7及之前:数组+链表 JDK1.8:数组+链表+红黑树 关于HashMap基本的大家...当添加元素时,会通过哈希值和数组长度计算计算下标来准确定位该元素应该put的位置,通常我们为了使元素时分...
  • 新千年信息怎样储存?又需要如何传输?MRAM芯片是磁阻随机存取存储器。1989年巨磁阻现像的发现及随后几年巨磁阻材料的开发,直至巨磁阻磁头GMR的制成与应用都为MRAM存储器研究开发奠定了基础。 1995年IBM、摩托罗拉及...
  • 计算机虚拟内存的设置

    千次阅读 2018-01-18 12:57:21
    虚拟不需要每个盘都设置,虚拟内存只需要在一个盘开辟一块磁盘空间即可。如果内存超过4G或者更高则不建议自己手工设置,最好让系统默认管理。虚拟内存,让系统托管最好。 1、随着现在电脑可用...怎样设置虚拟内存:
  • 怎样让硬盘分区显示... 工具/原料 计算器 ,或硬盘整数分区计算器 方法/步骤1 先为大家详细分析硬盘分区容量显示原理: 不论是机械硬盘还是固态SSD硬盘,厂商为了换算方便,是按照千进制来计算硬盘容量的,例如一...
  • 例:求冷(热)水机制冷量的计算方法,有一蓄水箱(温度7度日容量10立方米),要通过冷水机将水在4-5小时之内将温度升高到15度,需要多少热量,需要压缩机的功率是多少,是怎样计算。计算方法:1、体积(升)×升温度数÷...
  • 1.如果存储器的存储字长为32位,这是指一个存储单元的大小为32,同时计算机每次读取的数据都将是32位。如果存储器的编址单位为字节...3.从目前的所学来看,对于存储器容量的地址分配,有两种地址的存在,字节地址和...
  • 数据库表格:  customer 分页的实现: 从数据库查询--总记录:...通过总记录数和页容量计算出来--总页数: totalPages ----(totalRecords%pageSize==0? totalRecords/pageSize : totalRecords/page...
  • 怎样的关系?↵ 3.画出补码加减运算部件图 4、什么是“程序访问的局部性”?存储系统中哪一级采用了程序访问的局部性 原理? 5、设某机主存容里为16MB,Cache容量为16KB,每字块32字节。设计一个四路组相联映像的...
  • 1、怎样测量电池电量检测普通锌锰干电池的电量是否充足,通常有两种方法。第一种方法是通过测量电池瞬时短路电流来估算电池的内阻,进而判断电池电量是否充足;第二种方法是用电流表串联一只阻值适当的电阻,通过...

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

容量怎样计算