如果我们需要批量求两个已知经纬度的点之间的距离, 就会用到半正矢公式,本文记录公式内容和推导过程。...简介 半正矢公式是一种根据两点的经度和纬度来确定大圆上两点之间距离的计算方法,在导航有着重要地位。...L_{AD}=2L_{AA’}=2R\sin(∠AOD/2)=2R\sin((φ_1-φ_2)/2) 这里关于∠DO’B要多说一句:因为弧NAEDS和弧NCDFS都是经线,而NS是穿南北极的地轴,所以∠...这时再来求线段AC的长度LAC,思路和求LBD是一模一样的,就不再写一遍了。..._2-λ_1)/2)^2\\ &=&4R^2(\sin((φ_1-φ_2)/2)^2+\cos(φ_1)\cos(φ_2)\sin((λ_2-λ_1)/2)) \end{array} $$ $$ L_
最近腾讯云有台服务器有几次登陆的时候和以前比稍微慢了点,就用 Xshell 连接上去看了一下 CPU 的占用情况,同时观察腾讯云服务器后台的 CPU 实时监测,二者结合起来看看目前这台云服务器的运行情况如何...监测 CPU 和内存占用可以用安全狗之类的软件客户端在本地电脑实现,那样同样需要安装服务器端,会占用一些资源;不爱安装软件或者偶尔才观察一次的可以看看下面手动的办法。...能够看到系统已经持续运行了 215 天,当前时刻 CPU 占用情况 23.4%,内存使用情况也是蛮好的。下面的列表还能看到是哪些用户占用了 CPU 和内存,及占用百分比。 ?...因为这个占用情况是实时刷新的,所以看个几分钟不是持续太高的话,没啥问题就可以离开了。 下面再结合腾讯云服务器后台的系统监控情况来确认这台服务器到底有没有问题。...经过查看近 24 小时及 7 天 CPU 占用情况来看,总体来说这台腾讯云Linux 服务器的 CPU 占用及内存使用情况还都是蛮理想的。
从系统架构来看,服务器的CPU和内存架构可以分三类: SMP :Symmetric Multi-Processor NUMA :Non-Uniform Memory Access MPP :Massive...Parallel Processing 我本人不认为MPP是CPU和内存架构的一种;我认为他是SMP或者NUMA的分布式架构应用而已;本文后续说明。...1.早期的服务器:SMP ? 最早的服务器都是一颗CPU,随着业务压力的增大,面临CPU不够的境况。怎么办?简单粗暴的办法就是:架构不动,在现有架构上加CPU即可。 ?...2.现在的服务器:NUMA ? ? ? NUMA解决了SMP架构内存总线的瓶颈,确保每个CPU都有自己的私有内存和内存总线;如果本CPU的内存不够怎么办?...任何事情都不可能十全十美,NUMA也有自己的问题,尤其是在数据库和虚拟化场景下的某些情况会有性能问题:1.跨CPU访问内存(即和别的CPU借内存)比访问本CPU的内存效率要低 2.会出现内存和CPU访问失衡问题
top top 命令是监视 Linux 中实时系统进程的基本命令之一,显示系统信息和正在运行的进程信息,如:正常运行时间,平均负载,正在运行的任务,登录的用户数,CPU利用率,MEM利用率,内存和交换信息...1、默认情况下,top命令打印的是所有cpu的平均值。...2、查看内存总容量 # /proc/meminfo统计的是系统全局的内存使用状况 cat /proc/meminfo # MemTotal: 总的物理内存,需要转换一下 # MemFree: 空闲内存...,表示系统尚未使用的内存 2.1)通过free来显示内存的使用情况 free free -m free -g # 默认不加参数就是以 KB 为单位显示结果, # 可以加-m,显示内存总量,以...MB 为单位显示结果, # 可以加-g,显示内存总量,以 GB 为单位显示结果。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。...内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。...内存溢出的原因及解决方法: (1) 内存溢出原因: 内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 代码中存在死循环或循环产生过多重复的对象实体...; 使用的第三方软件中的BUG; 启动参数内存值设定的过小 (2)内存溢出的解决方案: 第一步,修改JVM启动参数,直接增加内存。...第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。重点排查以下几点: 检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。
发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。 2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。...对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。 3. 一次性内存泄漏。...隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。...但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。...从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到 重点排查以下几点: 1.检查对数据库查询中,是否有一次获得全部数据的查询
这几天自己线上的乞丐服务器遇到一个问题,io会瞬间飙升到很高很高,造成内存使用飙升。但是实际上并发量并不大(网络连接数)。知道是哪个进程造成的,但是确实排查代码中没有是么地方会有这么大的读写。...部署的是一个socket服务。用测试脚本跑,同时100个socket连接毫无压力。也不知道对方到底发的什么数据导致这么大的内存占用。 之前也处理过类似的问题。...服务器问题,无非就是资源不合理的使用,造成服务器内存,cpu,io,流量等相关资源出现非常不正常的波动,资源使用率飙升。对于服务器性能问题的排查,没有其他比较好的办法,只能是通过重现复盘去改进。...特别是如果服务器上跑的东西比较多,一个个的排查相当痛苦。 出现问题,首先看日志。如果是线上的,先想办法恢复服务再排查。 看看登录日志,访问日志是否有异常,确定是否有人扫机器。...看性能监控图表,分析机器的状况,以及问题发生的规律。 看是否有服务被系统kill。一般系统日志都会记录kill之前的进程列表,可以很好的分析哪些进程资源占用多。
马克-to-win:有关Session和servletContext长期占用服务器内存的解决方案就是:对于确定不再需要的数据,一定要及时释放所占 资源,比如:context.removeAttribute...("mysqlds");否则的话,严重的情况可能造成内存泄露。...(请参见我Java部分第 三章内存泄漏部分知识。) 4) pageContext: 保存的键值仅在本个页面有效。在未来学习Taglib过程当中,将发挥巨大作用。...pageContext范围比类变量小,和局部变量是一样的,但局部变量可以在非service的方法中用,而 pageContext只能在service方法中用。...见例子2.4 5)局部变量:转化成servlet后的某个方法中的局部变量。 6)类变量:转化成servlet后的类变量。
话说阿黎的vps最近稍有不稳定现象,体现是服务器重启。 而且不是因为我这个vps自身配置问题,而是vps所在主机的重启。 阿黎小小的用php写了一个获取系统启动时间(运行时间)和内存占用的程序。...> 服务器信息 运行时间: 启动时间: 内存使用率:%
堆栈,这个名词很多Java开发者在一开始学习Java的时候就经常听说了。 对于这个名词来说,它描述的其实是JVM的内存模型, 如果面试中问到,堆栈具体对应着什么,不知道是否了解?...堆和栈 其实堆栈是两个东西,在JVM中分别对应两个不同的内存部分。 对于JVM内存模型来说,只要记住下面这张图就足够了, ? 对于左边黄色的部分,就是JVM中的“堆”,相对应的右边的则是"栈"。...其实 stack over flow本身是一种异常,这里的 stack 说的就是JVM里的栈。 而栈是用来干什么的呢, 举个例子,平时我们写的非静态方法,执行时就在栈里。...return recursive(); } 然后尝试让这个递归无限的嵌套下去, 你就会看到 StackOverFlowException了, 原因就是因为 stack内存不足以运行方法。...总结 所以总的来说,JVM分为Head和Stack两个部分 对于初学者,只要初步了解了这个基础,基本能应付开发中遇到的问题。 但如果想要提高自己,最终都需要深入了解 JVM的内存模型。
3、外部模块的引用 4、单例模式 1 概念 内存泄漏: 分配出去的内存没有被回收回来,失去对内存区域的控制,造成资源的浪费,比如:new出来了对象并没有引用,垃圾回收器不会回收他,造成内存泄漏 内存溢出...: 程序所需要的内存超出了系统所能分配的内存。...发生这种情况一般就是代码除了问题,比如写了个递归调用,和 Metaspace 的内存溢出一样,也很少发生。...Metaspace 保存类的基本信息,如果加载太多类就会 OOM 永久代的垃圾收集主要回收两部分内容:废弃常量和无用的类。 回收废弃常量与回收 Java 堆中的对象非常类似。...虚拟机可以对满足上述3 个条件的无用类进行回收,这里说的仅仅是“可以”,而并不是和对象一样,不使用了就必然会回收。 注意:方法区溢出方法区中只会产生OutOfMemoryError异常。
凡事有坏的一面,也往往有好的一面。...同样的,噪声也与温度有关,只是这个噪声对温度并不敏感,因为公式中是热力学温度,当温度变化为十几或几十摄氏度时,对噪声的影响并不是很大。 比如上面例子中,17℃和27℃下,电阻两端的噪声基本差别不大。...信噪比的计算公式: 比如一个正弦电流I为:2*sin(t) 采样电阻的阻值为R,那么电阻两端的电压就是I*R=2R*sin(t),这个电压的有效值Vrms_sig1: 根据公式1,电阻两端噪声电压的有效值...Vrms_noise1: 那么把Vrms_sig1和Vrms_noise1带入公式2,得到SNR1: 现在采样电阻阻值增加一倍,变为2R,那么电阻两端的电压就是I*R=4R*sin(t),这个电压的有效值...Vrms_sig2: 根据公式1,电阻两端电压的有效值Vrms_noise2: 那么把Vrms_sig2和Vrms_noise2带入公式2,得到SNR2: 4 SNR2比SNR1大了多少呢?
Java的堆内存(Heap)和栈内存(Stack)是两种 JVM(Java虚拟机)中的不同的存储区域。1. 堆内存(Heap)堆内存用于存储动态分配的对象实例和数组。...它是由 JVM 自动进行分配和释放的。堆内存是所有线程共享的,它的大小可以通过命令行参数进行调整。堆内存中的对象可以被任意线程访问,在多线程环境下需要注意同步。...区别:堆内存的分配和释放由 JVM 自动进行,而栈内存的分配和释放由方法的调用和结束进行自动管理。联系:堆和栈都是内存中的存储区域,用于支持 Java 的运行和内存管理。...联系:堆内存和栈内存都是 JVM 在运行时根据程序需要进行分配和管理的,在编写 Java 程序时,可以根据需求合理地使用堆内存和栈内存来优化程序性能和内存占用。...同时,也需要结合具体的编程语言、开发环境和应用场景选择适合的工具和方法来解决问题。
一、栈内存 存放基本类型的变量,对象的引用和方法调用,遵循先入后出的规则 栈内存在函数中定义的“一些基本类型的变量和对象的引用变量”都在函数的栈内存中分配。...栈中主要存放一些基本类型的变量(int, short, long, byte, float, double, boolean, char)和对象句柄。...二、堆内存 存放所有new出来的对象 特此强调,堆内存和数据结构中的堆完全是两码事,分配方式倒是类似于链表 堆内存是区别于栈区、全局数据区和代码区的另一个内存区域。...这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆内存的大小受限于计算机系统中有效的虚拟内存。由此可见,堆内存获得的空间比较灵活,也比较大。...三、其他数据存储 1、常量池:存放基本类型常量和字符串常量(public static final) 2、静态域:存放静态成员(static定义的) 3、非RAM存储:硬盘等永久存储空间
早期内存通过存储器总线和北桥相连,北桥通过前端总线与CPU通信。从Intel Nehalem起,北桥被集成到CPU内部,内存直接通过存储器总线和CPU相连。...Intel在2017年推出对应于六代酷睿Skylake的云服务器平台“Purley”,采用14nm工艺、最多28核心56线程、6通道DDR4内存、光纤互连通道,采用UPI总线替代QPI总线等等。...内存未来三大演进方向分别为容量、电压和频率。...,三大内存颗粒(DRAM)原厂依次为Samsung、SK Hynix和Micron。...模组厂商Ramaxel和Kingston通过从颗粒厂商购买颗粒制作内存条(DIMM)。 内存有三种不同的频率指标,它们分别是核心频率、时钟频率和有效数据传输频率。
内存泄漏和内存溢出的区别? 内存泄漏(memory leak):是指程序在申请内存后,无法释放已申请的内存空间,新申请的内存在增加,而没有内存释放,迟早被占光,导致后面程序无法申请到内存。...内存溢出(out of memory):是指程序在申请内存的时候,发现没有足够的空间,导致out memeory。 JVM造成以上两种溢出的原因可能?...jvm回收; 大量的静态实例,比如很多动态放到内存内的字符串,并且还是static的; ......内存溢出(out of memory) java虚拟机堆内存不够:有可能是由于内存泄露导致一直占用着堆内存,导致新的对象无法分配到内存导致OOM; 大对象:内存中突然或者持续创建大量的大对象放到堆中,导致...OOM; 物理内存不足:由于物理内存的空间不足导致OOM; ...
在开始今天的分享之前,我先给大家看两个 1R * 8 的内存条。 现在的 CPU 都是 64 位的,每次和内存通信都要传输 64 比特的数据。...但在服务器应用中,处理的一般都是非常重要的计算,可能是一笔订单交易,也可能是一笔存款。另外就是服务器经常是连续要运行几个月甚至是几年,没有办法通过重启的方式来解决问题。...因此服务器对比特翻转错误的容忍度很低。需要有技术方案能够一定程度解决比特翻转问题所带来的影响。 ECC 就是这样一种内存技术。...所以虽然海明码不能应对 3 比特以上的比特翻转,但目前仍然广泛地应用在服务器端的内存的错误检查和纠正上。在 SSD 硬盘中由于应用场景的不同,采用的是支持多比特翻转校验和纠错的 LDPC 码。...但因为在 64 比特中有 3 比特同时出现错误的概率太低了,所以海明码仍然广泛地应用在服务器的 ECC 内存中。 总结 开篇我们看到了两个内存条,一个有 8 个黑色颗粒,另外一个有 9 个内存颗粒。
在冯诺依曼体系结构里,内存是除了CPU之外第二重要的设备。如果没有内存,服务器将完全无法运行。在这一节中,我们来了解下内存的物理结构。如下图的是一个 16 GB 的笔记本内存条实物的正面和反面图。...那么后面的 2R*8 是什么意思呢? 实际上,内存标识第二段中的 2R*8 非常重要,它直接简单清晰地把内存的物理结构给表示出来了。...2R:表示该内存有 2 个 Rank *8:表示每个内存颗粒的位宽是 8 bit, 接下来我们分两个小节,深入地看看 Rank、位宽与内存颗粒的内部结构。...所以,内存在排列和组织二维矩阵结构的时候,会按方便 Burst IO 的方式来组织,实际二维矩阵单元中存储的字节数会比位宽要大。 例如下面是一个美光(Megon)内存 Chip 的内部结构。...例如 2R*4 表示的是内存条有 2 个 Rank,每个 Chip 的位宽大小是 4。可以推算出每个 Rank 需要 64/4 = 16 个 Chip 颗粒。这种内存常见于服务器内存。
不同的业务,设计也不尽相同,但至少都一些共同的追求,比如性能。 做服务器开发很多年了,有时候被人问到,服务器性能是什么呢?各种服务器间拼得是什么呢?...能用内存就别用IO,CPU则能少用就少用,相同的QPS,CPU和内存用的少点的性能就要比用的多点好,同样,QPS跑得多点的就比 跑得小点的性能要好,哪怕多用了点CPU和内存。 什么是性能的保障呢?...如果你看过apache, nginx之类服务器的代码,或者想入手,那么多半应该从内存管理开始。...与服务器性能息息相关,内存池的设计也追求快速与稳定,生命周期一般有下面三种: global: 全局的内存,存放整个进程的全局信息。 conn: 每个连接的信息,从连接产生到关闭。...,再来看看内部设计吧,pool 的四个元素里 size 对应 block_size, data和last 分别对应块的起始地址和可分配地址,next和current分别对应下块内存池和当前可用内存池。
之前有位读者问我为什么服务器内存上有这么多的颗粒,今天我专门就这个话题成文一篇作为回复。 各位从事服务器端开发的同学天天都在开发代码,代码都需要内存。确实了解一下服务器内存硬件是挺有有必要的。...所以我特地找来了一个服务器内存条来。下图是一个 32 GB 服务器内存条的正面和反面图。 可见服务器内存上有很多的黑色颗粒,相比下面的台式机内存颗粒要多很多。...原因1:服务器内存需要 ECC 功能 在开篇所示的内存正面有着一串字符串标识32 GB 2R\*4 PC4-2666V-RB2-12-DB1。 在这段标识中,第一段的 32 GB,是内存的容量大小。...第二段后面的 2R*4 我们在《理解内存的Rank、位宽以及内存颗粒内部结构》一篇文章中也介绍过了,2R:表示该内存有 2 个 Rank,*4:表示每个内存颗粒的位宽是 4 bit。...RCD从主机存储器控制器获取命令地址总线、控制信号和时钟信号,然后将这些信号流扇出到DIMM上的DRAM。所有的信号通过RCD进入RDIMM后都会重新计时和清理。
领取专属 10元无门槛券
手把手带您无忧上云