java技术圈 为您找到相关结果 55

自建对象存储服务minio在使用nginx进行反向代理时出现对象无法正常共享的解决办法

什么是minio Minio是在Apache License v2.0下发布的对象存储服务器。它与Amazon S3云存储服务兼容。它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/VM镜像等。对象的大小可以从几KB到最大5TB。 docker 安装示例 docker run -p 9000:9000 --name minio1 -e "MINIO_ACCESS_KEY=自己的access_key,相当于用户名" -e "MINIO_SECRET_KEY=自己的secret_key,相当于密码" -v /mnt/minio-data-v1:/data -v /mnt/minio-v1:/root/.minio -d minio/minio:RELEASE.2018-07-31T0...阅读全文

博文 2019-04-03 14:31:24 www.allocmem.com

java.lang.OutOfMemoryError:GC overhead limit exceeded

前言 在我们写的java service里,需要加载一个比较大的算法模型pmml文件.在此模型文件由500M+变为1G+的时候,在测试环境中出现了此问题 异常由来 GC overhead limt exceed检查是Hotspot VM 1.6定义的一个策略,通过统计GC时间来预测是否要OOM了,提前抛出异常,防止OOM发生。Sun 官方对此的定义是:“并行/并发回收器在GC回收时间过长时会抛出OutOfMemroyError。过长的定义是,超过98%的时间用来做GC并且回收了不到2%的堆内存。用来避免内存过小造成应用不能正常工作。 代码中使用静态对象的方式用来在多线程中共享此文件模型,由于加载文件过大,并且长时间的GC回收了不到2%的内存,于是抛出了这个异常 这个异常的作用: > 在应用o...阅读全文

博文 2019-04-03 14:31:02 www.allocmem.com

golang中new和make简析

引言: 目前简单梳理了golang的知识点,进行查漏补缺,这里简要记录下golang中的make和new,由于个人能力有限,如有错误,欢迎指正。 正文: 1. make 分配了一个有初始值(非零)的T类型(我这里打印的为空,个人理解为空值)返回值 当slice cap无法满足需要,则在初始大小cap(即第三个参数,这里为6),成倍增长 2. new 分配了零值填充的T类型的内存空间,并返回其地址(指针) 当slice cap无法满足需要,则以16为基数,成倍增长 测试代码如下: “` package main import "fmt" //make 分配了一个有初始值(非零)的T类型(我这里打印的为空,个人理解为空值)返回值 当slice cap无法满足需要,则在初始大小cap(即第三个参数...阅读全文

博文 2019-04-04 09:53:58 www.allocmem.com

浅析字节存储序列的大小端存储方式

基础 内存地址是从低地址开始进行编号的,用16进制来进行编号,比如内存的开始地址(即低地址)0x0000,然后内存偏移以字节为单位,比如0x0001表示从0x0000位置偏移到后面1个字节,即偏移8bit.字节的高低位是俗成约定的,比如字节序列0x12345678,由于一个16进制的转为2进制占四个2进制(2^4=16,进制转换基础),那么0x12则可以转为8个二进制,也就是8bit=1byte,也就是1字节,回到字节的高低位的俗成约定,0x12为最高位,0x78为字节序列的最低位置 什么是大端和小端 Big-Endian和Little-Endian的定义如下: 1. Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 2. Big-Endian就是高...阅读全文

博文 2019-04-03 14:30:28 www.allocmem.com

java和golang中的unsafe包

首先聊聊反射 java和golang都有各自的反射机制,为什么标准库会提供反射机制呢? 反射(reflection)允许程序在运行时(runtime)检查、修改程序(比如对象,struct等)的结构与行为,跳过编译检查,越过访问权限,运行时对象生成,方法调用等。如果没有反射,那么需要完全手动进行硬编码,比如如果没有反射,那么在spring的ioc容器管理实现就需要我们使用new来创建对象,那么也就不叫spring ioc,不会有spring ioc的诞生了。 静态编译(多数静态语言):在编译时确定类型,绑定对象。 动态编译(多数动态语言):运行时确定类型,绑定对象。可以实现动态创建对象和编译,体现出很大的灵活性(特别是在J2EE的开发中它的灵活性就表现的十分明显)。通过反射机制我们可以获得类...阅读全文

博文 2019-04-03 14:27:58 www.allocmem.com

理解 Linux 的虚拟内存

前言 前不久组内又有一次我比较期待的分享:”Linux 的虚拟内存”。是某天晚上加班时,我们讨论虚拟内存的概念时,leader 发现几位同事对虚拟内存认识不清后,特意给这位同学挑选的主题(笑)。 我之前了解一些操作系统的概念,主要是毕业后对自己大学四年的荒废比较懊恼,觉得自己有些对不起计算机专业出身,于是在工作之余抽出时间看了哈工大在网易云课堂的操作系统公开课,自己也读了一本讲操作系统比较浅的书 《Linux内核设计与实现》,而且去年自己用 C 写简单的服务器时,也追根究底了解了更多的系统底层知识。多亏了这些知识,让我对应用层的知识更有掌控感,也在上次排查问题时(从应用到内核查接口超时)助了我一臂之力。 前几天另一位同事来问另一个虚拟内存相关的问题,我才发现对于虚拟内存,我的理解还不够深刻,...阅读全文

博文 2019-06-20 08:48:00 枕边书

java和golang中的unsafe包

### 首先聊聊反射 java和golang都有各自的反射机制,为什么标准库会提供反射机制呢? 反射(reflection)允许程序在运行时(runtime)检查、修改程序(比如对象,struct等)的结构与行为,跳过编译检查,越过访问权限,运行时对象生成,方法调用等。如果没有反射,那么需要完全手动进行硬编码,比如如果没有反射,那么在spring的ioc容器管理实现就需要我们使用new来创建对象,那么也就不叫spring ioc,不会有spring ioc的诞生了。 静态编译(多数静态语言):在编译时确定类型,绑定对象。 动态编译(多数动态语言):运行时确定类型,绑定对象。可以实现动态创建对象和编译,体现出很大的灵活性(特别是在J2EE的开发中它的灵活性就表现的十分...阅读全文

操作系统管理内存的机制——为什么要设置虚拟内存? - wj_hubei

在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。 一 早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当程序同时运行多个程序时,操作系统是如何为这些程序分配内存的呢?下面通过实例来说明当时的内存分配方法: 某台计算机总的内存大小是128M,现在同时运行两个程序A和B,A需占用内存10M,B需占用内存110。计算机在给程序分配内存时会采取这样的方法:先将内存中的前10M分配给程序A,接着再从内存中剩余的118M中划分出110M分配给程...阅读全文

Java 为什么使用 UTF-16 而不是更节省内存的 UTF-8?

因为当时 Java 选择的是 UCS-2,是一个定长的编码,在当时以单个码元能表示所有字符,以下标获取字符的开销基本等同于在数组中索引一个字符,用起来是最方便的,多占用的内存大小也是可以接受的。到了后来 UCS-2 无法表示所有 Unicode 字符的时候,过渡到了兼容它的 UTF-16 上也是最自然以及迁移成本最低的选择,这很好理解。至于 UTF-16 浪费内存的问题,在 JEP 254 Compact Strings 中优化了这个问题,Java 9 已经实现了这个 JEP。翻翻源码就能看到,现在 String 内部是存储了一个 byte[],以及对应的编码标记,而不再是 char[] :public final class String { ... private final byte[...阅读全文

操作系统内存管理_黄规速, 逆水行舟,不进则退。

1、 计算机的存储体系 内存是计算机很重要的一个资源,因为程序只有被加载到内存中才可以运行;此外,CPU所需要的指令与数据也都是来自内存的。可以说,内存是影响计算机性能的一个很重要的因素。 在介绍内存管理的细节前,先要了解一下分层存储器体系: 大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。这些资源的合理使用与否直接关系着系统的效率。 CPU缓存(Cache Memory):是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存 读写速度不匹配的矛盾,因为CPU运算速度要比内...阅读全文

linux是怎样分配内存的

我们常说的内存容量,比方说我的笔记本电脑内存就是8GB,其实指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。 linux内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的,这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。 虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长(也就是单个CPU指令可以处理数据的最大长度)的处理器,地址空间的范围也不同。比如最常见的32位和64位系统。如下所示: 32位系统的内核空间占用1G,位于最高处,剩下的3G是用户空间。而64位系统的内核空间和用户空间都是128T,分别占据整个内存空间的最高和最低处,没剩下的中间部分是未定义的。 进程在用户态时...阅读全文

byte 为什么要 & 0xff?_iblade的博客

在MD5运算中 通常会把MD5(十六进制的byte[])转成HexString, 会用到一个方法 private static String bytesToHex1(byte[] md5Array) { StringBuilder strBuilder = new StringBuilder(); for (int i = 0; i < md5Array.length; i++) { int temp = 0xff & md5Array[i];//TODO:此处为什么添加 0xff & ? String hexString = Integer.toHexString(temp); if (hexString.length() == 1) {//如果是十六进制的0f,默认只显示f,此时要补上0...阅读全文

博文 2021-09-16 12:35:04 CSDN博客

页 页表 页表项_WaneGi没有故事

五一假期前落下了几节操作系统的课,现在艰难的恶补中。。 以下是分页存储管理相关的一些知识点梳理。 首先我们应该知道的概念: 逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号开始编址,称之为目标模块的相对地址,即逻辑地址。 虚拟地址:计算机处理器的地址有32位和64位的两种,对应的虚拟地址的空间大小分别是2^32字节和2^64字节,字节用B表示。 页:分页存储管理将进程的逻辑地址空间划分为若干页(面),并且对其编号,号数从0开始,每个页(面)的大小称为页面大小,且大小应为2的幂。 物理块:将内存的物理地址空间划分为若干块,称为物理块,物理块与页(面)一一对应。 页表:又称页面映像表,存储在内存中,通过页表建立页(面)与物理块的索引。 下面通过举例子梳理一下: 假设我们已经知道了逻辑地...阅读全文

博文 2020-10-11 13:38:47 CSDN博客

ThreadLocalMap里Entry为何声明为WeakReference? - waterystone

Java里,每个线程都有自己的ThreadLocalMap,里边存着自己私有的对象。Map的Entry里,key为ThreadLocal对象,value即为私有对象T。在spring MVC中,常用ThreadLocal保存当前登陆用户信息,这样线程在任意地方都可以取到用户信息了。 public class UserContext { private static final ThreadLocal userInfoLocal = new ThreadLocal(); public static UserInfo getUserInfo() { return userInfoLocal.get(); } public static void setUs...阅读全文

博文 2021-04-27 05:58:59 博客园

free命令中的buffer和cached的比较

free命令中的buffer和cached的比较最近在搞监控,突然看到我系统的内存要用完了,赶紧登录服务器看看,~]# dstat -m 16G内存就剩1G了。怎么回事,然后用free命令看了下~]# free -m 原来是cached占用较多,真正用的只有6773M,空闲是9307M。但是还是对cached占用这么多比较担心,所以就查了下,下面文章转载至http://blog.csdn.net/beacherlu/article/details/45871489经常遇到一些刚接触Linux的新手会问内存占用怎么那么多? 在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是linux内存管理的一个优秀特性,在这方面,区别于Windows的内...阅读全文

Java JVM 参数设置大全

首页 > 基础教程 > 基础知识 > JDK&JRE&JVM Java JVM 参数设置大全 JVM参数设置说明 参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. -Xmx 最大堆大小 物理内存的1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 -Xmn 年轻代大小(1.4or lator) 注意:此处的大小是(eden+ 2 survivor space).与jmap -heap中显示的New gen是不同的。 整个堆大小=年轻代大小 + 年老代大小 + 持久代...阅读全文

博文 2020-07-28 06:53:23 www.51gjie.com

深入剖析Linux IO原理和几种零拷贝机制的实现

前言零拷贝(Zero-copy)技术指在计算机执行操作时,CPU 不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及 CPU 的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现 CPU 的零参与,彻底消除 CPU 在这方面的负载。实现零拷贝用到的最主要技术是 DMA 数据传输技术和内存区域映射技术。零拷贝机制可以减少数据在内核缓冲区和用户进程缓冲区之间反复的 I/O 拷贝操作。零拷贝机制可以减少用户进程地址空间和内核地址空间之间因为上下文切换而带来的 CPU 开销。正文1. 物理内存和虚拟内存由于操作系统的进程与进程之间是共享 CPU 和内存资源的,因此需要一套完善的内存管理机制防止进程之间内存泄漏的问题。为了更...阅读全文

博文 2021-08-17 04:10:56 知乎

CSP和Actor两种并发模型分析 - _Eternity味道

背景 在多核CPU机器下,为了充分利用多核计算机的资源,我们需要进行并发编程,提高对CPU的利用率, # 提示:如你已了解或无意了解并行和并发,可以跳过本段,直达标题 ”传统并发和基于消息传递的并发“ 并行(parallel): 物理上同一时间处理不同任务 并发(concurrent): 逻辑上处理同时的任务的能力 通常所说的并发编程,也就是说它允许多个任务同时执行,但实际上并不一定在同一时刻被执行。 在单核处理器上,通过多线程共享CPU时间片串行执行(并发非并行)。 而并行则依赖于多核处理器等物理资源,让多个任务可以实现并行执行(并发且并行)。 如下是一些编程语言,以及它们相应的并发机制: Actors Model — Erlang, Scala, Rust CSP — Go-lang 多...阅读全文

博文 2022-11-13 08:00:25 博客园

idea编译项目很慢

如果你正在使用 IntelliJ IDEA 编译 Java 项目,遇到编译速度缓慢的问题,以下是一些可能的原因和解决方法: 内存不足:检查你的电脑内存是否足够支持 IDEA 运行,并确保为 IDEA 分配了足够的内存。你可以编辑 IntelliJ IDEA 安装目录下的 bin 目录下的 idea64.exe.vmoptions 文件,将-Xms和-Xmx参数值增加一些。 插件过多:禁用不必要的插件,因为一些插件可能会导致 IDEA 编译速度变慢。 外部依赖库:检查你的项目是否引用了大量的外部依赖库,如果是,建议尝试减少依赖库的数量或者更换为较小的依赖库。 编译设置:检查你的编译设置是否正确。例如,你可以在“File” -> “Settings” -> “Build, Execution, ...阅读全文

linux使用MAT分析dump文件-腾讯云开发者社区

Widows 分析dump文件的工具太多了,而且都是傻瓜式的点点就好了。但是生产上分析dump文件的话,还是linux工具比较方便,因为生产上的dump文件一般都至少是GB级别的,这么大的文件拷贝到本机要耗费很长时间,特别是遇到生产事故的时候,时间=金钱。 更不允许我们把宝贵的拍错时间浪费到网络传输上面。 那么linux有什么好的解析dump工具呢? 如何解析 java dump的文件? 这里比较推荐IBM的eclipse的MAT工具。运行环境要求linux操作系统JDK8 以上下载MAT的linux版本Eclipse的MAT工具下载链接 MAT支持各种操作系统,找到Linux版本下载下来# 运行uname -m 看一下linux是 x86_64还是 x86的帮助你选择下载那个版本。 una...阅读全文

博文 2024-03-13 10:51:37 腾讯云

云存储环境下的容灾关键技术

本文分享自天翼云开发者社区《云存储环境下的容灾关键技术》,作者:王兆龙云存储的出现解决了现有容灾系统的几个显著问题:一是面对大量的备份数据,管理系统不够完善的问题;二是面对大规模的数据容灾灵活性和效率不高的问题;三是在数据加密保护方面依然存在的安全隐患问题。那么,云存储解决这些问题主要依靠的技术原理和机制是什么呢,云环境下的容灾关键技术都有哪些,本文接下来将对此进行简单的介绍和分析。映射技术映射技术是实现信息存储的核心技术。追踪映射技术十分关键,在通常情况下,云存储环境下的处理程序和管理设备程序之间会形成映射关系,这种管理能够直接的影响到容灾系统的应用。一是数据自动迁移,这种方法的应用是一种事件触发的,并且触发事件还包括了磁盘容量的扩展、缩小,磁盘的损坏、维修,磁盘的饱和、填充等一系列事件,...阅读全文

博文 2023-06-30 10:58:57 Tianyiyun

虚拟化技术 - CPU虚拟化

本文分享自天翼云开发者社区《虚拟化技术 - CPU虚拟化》,作者:谢****悦物理机器是由CPU,内存和I/O设备等一组资源构成的实体。虚拟机也一样,由虚拟CPU,虚拟内存和虚拟I/O设备等组成。VMM(VM Monitor)按照与传统OS并发执行用户进程的相似方式,仲裁对所有共享资源的访问。本文将分别讨论CPU虚拟化、内存虚拟化和I/O虚拟化技术的原理和实现。在虚拟化的平台上,虚拟机(guest VM)所使用的多个虚拟CPU(以下称vCPU)可能是共享同一个物理CPU(以下称pCPU)的。VMM负责vCPU的调度,当一个vCPU被调度到获得pCPU的使用权后,基于该vCPU运行的guest OS又可以调度OS中的各个线程/进程了。也就是说,guest OS中的各个线程/进程分时复用了vCP...阅读全文

博文 2023-05-19 09:35:52 Tianyiyun

NUMA架构介绍及优缺点分析

本文分享自天翼云开发者社区《NUMA架构介绍及优缺点分析》,作者:郁****航什么是NUMA架构1、概念NUMA(Non-Uniform Memory Access,非统一内存访问)架构是一种针对多处理器系统的内存组织方式。在这种架构中,处理器被分配到不同的节点,每个节点拥有自己的本地内存。处理器可以访问本地内存和其他节点的内存,但访问本地内存的速度要快于访问其他节点的内存。 2、设计原理NUMA架构的设计原理主要是为了解决多处理器系统中的内存访问瓶颈问题。随着处理器数量的增加,内存带宽需求也会相应提高。然而,在传统的统一内存访问(UMA)架构中,所有处理器共享同一块内存,导致内存访问延迟增加、内存带宽成为系统性能的瓶颈。NUMA架构通过将内存分配到各个节点,使处理器优先访问本地内存,降低内...阅读全文

云服务器虚拟化超分与虚机性能关系分析

本文分享自天翼云开发者社区《云服务器虚拟化超分与虚机性能关系分析》,作者:l****n虚拟化技术是云计算商业模式的基础,它也是推动云计算经济的核心技术。虚拟化是指使用虚拟化软件在计算机硬件上创建抽象层,将单个计算机的硬件元素(包括处理器、内存、存储器等)分成多个虚拟计算机 (VM), 每个 VM 都运行自己的操作系统 (OS) ,类似于独立的计算机。这样虚拟化技术能让一台服务器变成几台甚至上百台互相隔离的虚拟服务器,不再受限于物理上的界限,而是让CPU、内存、存储、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合池化,让IT对业务的变化更具适应力。虚拟化能够提高企业资源运营效率,节约能耗,降低经济成本和空间浪费。​服务器虚拟化示意图CPU虚拟化公式...阅读全文

关于Linux中的mmap和page cache的问题?

功能描述:mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。基 于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到 更新,首次对映射区的第一个页索引时会更新该字段的值。用PROT_WRITE 和 MAP_SHARED标志建立起来的文件映射,其st_ctime和 st_mtime在对映射区写入之后,但在msync()通过MS_SYNC 和 MS_ASYNC两个标志调用之前会被更新。用法: void *mmap(void *start, size_t length,...阅读全文

linux 创建 swap分区

linux 创建 swap分区 swap是什么?Swap:交换分区类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。当用户提交程序,然后产生进程,在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常. 复制链...阅读全文

云电脑运行原理分析

本文分享自天翼云开发者社区《云电脑运行原理分析》,作者:大利一、虚拟化技术虚拟化技术是云电脑运行的核心技术之一。它可以将物理服务器虚拟化成多个虚拟机,每个虚拟机都拥有独立的操作系统和应用程序运行环境。虚拟机之间相互隔离,互不影响。虚拟化技术可以显著提高服务器的利用率,减少能源消耗,同时还可以提高系统的可靠性和安全性。在云电脑中,虚拟化技术主要应用于计算资源的管理和调度。当用户通过网络发送计算请求时,云电脑管理系统会根据负载情况,将请求分配给不同的虚拟机进行处理。每个虚拟机都拥有独立的计算资源,可以同时处理多个用户请求。这种分布式计算的方式可以显著提高系统的处理能力和响应速度。二、容器技术容器技术是另一种轻量级的虚拟化技术,它可以将应用程序及其依赖项打包成一个独立的容器,实现应用程序的快速部署...阅读全文

Three.js可视化企业实战WEBGL课(2024年1月升级版48章全)

Three.js可视化企业实战WEBGL课(2024年1月升级版48章全) 给大家分享一套课程——Three.js可视化企业实战WEBGL课,2024年1月最新升级48章,附源码+课件等资料下载,课程不定期更新,包更新。 Three.js是一个基于WebGL的JavaScript 3D图形库,它可以轻松地在浏览器中创建3D场景和动画。同时,它支持外部模型和纹理的导入,让开发者可以更加便捷地创建出震撼的3D场景。 Three.js的应用场景非常广泛,主要包括以下几个方面: 游戏开发:Three.js可以轻松地创建3D游戏场景和动画效果,让游戏制作变得更加简单。 产品展示:对于需要展现3D产品模型的企业来说,Three.js可以帮助他们创建出非常逼真的展示场景,大大提升了产品展示效果。 教育培训...阅读全文

博文 2024-02-03 14:14:59 haoighd6668

【Java集合】数据结构与集合的神秘联系,一文读懂!

上篇文章中我们对单列集合中常用的方法和遍历查询。通过本文章为我们解惑,好好的字符串用起来不就行了,为什么要用集合这些工具类?本篇文章将简要介绍数据结构,让读者了解它们在计算机中以何种结构方式存在。那么,什么是数据结构呢?下面我们来详细解释。 ## 数据结构 ### 1.1 数据结构有什么用? 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 ![image.png](http://static.itsharecircle.com/231107/780768685050bf3238e22caee5c12252.png) 数据结构往往同高效的检索算法和索引技术有关。 这句话是啥意思...阅读全文

浅析进程分配内存的两种方式——brk()和mmap()

如何查看进程发生缺页中断的次数?用ps -o majflt,minflt -C program命令查看。majflt代表major fault,中文名-叫大错误,minflt代表minor fault,中文名叫小错误。这两个数值表示一个进程自启动以来所发生的缺页中断的次数。发成缺页中断后,执行了那些操作?当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 内存分配的原理从操作系统角度来看,进程分配内存有两种方...阅读全文

malloc中的系统调用brk和mmap - 一生热爱

malloc中的系统调用brk和mmap 环境 ubuntu14.04 malloc通过系统调用的方式从操作系统申请内存,malloc内部又通过系统调用brk()或mmap来申请内存的。入下图进程虚拟内存布局所示,mmap对应Memory Mapping Segment,brk对应Heap. brk brk通过增加program break的位置(brk)从内核申请(非零值初始化)内存。一开始堆段(heap segment)的其实位置(start_brk)和结束位置(brk)指向同一个位置。 当ASLR(Address Space Layout Randomization)关闭时,start_brk和brk同时指向data/bss段的结束位置(end_data) 当ASLR打开时,start...阅读全文

博文 2023-05-12 15:49:36 博客园

Java IO学习笔记三:MMAP与RandomAccessFile - Grey Zeng

作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和FileReader/Writer 普通的Reader和Writer只能顺序读写数据,RandomAccessFile提供了一个独有的seek方法,可以修改文件内容的指针,从而可以方便读取和修改文件中的任意位置。示例: import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import static java.nio.charset.Standar...阅读全文

博文 2023-05-12 16:32:23 博客园

linux环境常用的性能监控和协助开发调试工具_s1mba的博客

linux有诸多优秀的工具帮助我们分析服务器各项性能指标和协助开发调试工作。下面只列举比较基础的命令,且一般是集成在linux环境中而不需再次安装的命令。更多更详细的命令可以参考 https://github.com/brendangregg/perf-tools A 、CPU进程相关 常用工具列举下:uptime、ps、top、mpstat、pidstat等 uptime: 查看系统运行时间,平均负载等。 ps:可查看某个进程占用CPU资源百分比;查看线程信息 ps -eLf top/htop/atop:显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示; top -Hp pid(主线程id) 可以看到多线程程序中所有线程的状态。 mpstat: 可以查...阅读全文

博文 2023-05-15 08:57:04 CSDN博客

云服务器比传统服务器更安全的原因与实现机制

本文分享自天翼云开发者社区《云服务器比传统服务器更安全的原因与实现机制》,作者:3****m随着互联网的普及和云计算技术的发展,越来越多的企业和组织选择使用云服务器来提供和存储数据。与传统服务器相比,云服务器在安全性方面具有诸多优势。本文将围绕云服务器比传统服务器更安全的原因,探讨其实现机制。一、云服务器比传统服务器更安全的原因虚拟化技术云服务器采用虚拟化技术,将物理服务器上的资源(如CPU、内存、存储等)汇聚到一个虚拟的云中,然后通过网络对外提供服务。这种虚拟化技术可以隔离不同用户和业务,防止数据泄露和攻-击。同时,虚拟化技术还可以实现资源的动态调整和负载均衡,提高资源利用率和系统稳定性。容错技术云服务器通常采用容错技术,实现故障自动切换和负载均衡。当某个虚拟机出现故障时,系统会自动将其切...阅读全文

云电脑架构设计的层次

本文分享自天翼云开发者社区《云电脑架构设计的层次》,作者:3****m一、基础设施层基础设施层是云电脑架构的最底层,负责提供计算、存储、网络等基础设施。这些基础设施可以由多个服务器组成,通过虚拟化技术进行资源池化,实现资源的动态分配和共享。基础设施层需要提供足够的计算、存储和网络资源,以满足虚拟化层和应用层的资源需求。同时,基础设施层还需要具备高可用性、可扩展性和安全性等特点,以满足用户的需求和保障数据安全。二、虚拟化层虚拟化层是云电脑架构的核心层,负责将硬件资源虚拟化成多个虚拟机。每个虚拟机都拥有独立的操作系统和应用程序,可以独立运行。虚拟化层还可以实现虚拟机的动态迁移和容错处理。通过虚拟化技术,虚拟化层可以实现对计算资源的动态分配和共享,提高计算机的处理能力和资源利用率。同时,虚拟化层还...阅读全文

Django+Vue:Python Web全栈开发(基于Django4.1)

![1.png](http://static.itsharecircle.com/240105/de015aec364ad609b39e3dcef34aa519.png) Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。Django 是一个高级的 Python Web 框架,用于快速开发可维护和可扩展的 Web 应用程序。使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务。 第一步,安装 Python Windows 下安装 Python 非常简单,去 Python 官方网站找到 Python 3 的下载地址,根据你的系统选择 32 位或者 64 位的安装包,下载...阅读全文

博文 2024-01-05 14:08:49 giadnbhaytgw

云电脑:IO虚拟化实现的技术分析

本文分享自天翼云开发者社区《云电脑:IO虚拟化实现的技术分析》,作者:大利云电脑是一种基于云计算技术的虚拟化电脑,它通过网络将物理硬件资源虚拟化成多个虚拟机,每个虚拟机都拥有独立的操作系统和应用程序。IO虚拟化技术是实现云电脑的关键技术之一,它可以实现网络和存储等资源的虚拟化。本文将从专业论述的角度来探讨云电脑中IO虚拟化技术的实现原理、分类和应用场景。一、IO虚拟化技术的实现原理IO虚拟化技术是一种将硬件资源虚拟化的技术,它可以在虚拟机中模拟真实的网络和存储设备,使得虚拟机可以像真实的计算机一样进行网络访问和数据存储。IO虚拟化技术的实现原理主要包括以下几个方面:1.硬件资源的虚拟化:IO虚拟化技术通过在物理硬件资源上添加虚拟化层,将物理硬件资源划分为多个虚拟资源,每个虚拟资源都有独立的内...阅读全文

博文 2023-12-04 16:37:27 Tianyiyun

云主机CPU和内存配比:优化资源分配的关键

本文分享自天翼云开发者社区《云主机CPU和内存配比:优化资源分配的关键》,作者:每日知识小分享随着云计算技术的快速发展,云主机已经成为了许多企业和个人用户首-选的计算解决方案。在部署和配置云主机时,CPU和内存的配比是一个非常重要的考虑因素。本文将深入探讨云主机CPU和内存配比的问题,以帮助用户更好地优化资源分配,提高云主机的性能和效率。一、云主机CPU和内存的重要性CPU和内存是云主机中最重要的两个资源。CPU负责处理数据和指令,是决定云主机计算能力的关键因素。而内存则负责存储数据和程序,是影响云主机响应速度和并发处理能力的核心因素。对于大多数应用程序来说,CPU和内存的性能都会影响到其运行效果。因此,合理的CPU和内存配比能够提高云主机的整体性能,并确保应用程序的稳定运行。二、云主机CP...阅读全文

java使用nio读写文件_使用nio读取文件_小码农叔叔的博客

IO原理 最近在研究 JAVA NIO 的相关知识,学习NIO,就不能提到IO的原理和事项,必经NIO是基于IO进化而来 IO涉及到的底层的概念大致如下: 缓冲区操作。2) 内核空间与用户空间。3) 虚拟内存。4) 分页技术 一,虚拟存储器 虚拟存储器是硬件异常(缺页异常)、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。 虚拟存储器的三大能力: ①将主存看成是一个存储在磁盘上的地址空间的高速缓存。 ②为每个进程提供了一个一致的地址空间。 ③保护每个进程的地址空间不被其他进程破坏。 虚拟内存的两大好处: ① 一个以上的虚拟地址可指向同一个物理内存地址。 ② 虚拟内存空间可大于实际可用的硬件内存。 二,用户空间与内核空间 设虚拟地址为32位...阅读全文

博文 2023-05-15 10:50:14 CSDN博客

为什么重写equals必须重写hashCode-腾讯云开发者社区

equals常见面试题在开始聊之前,我们先看几个常见的面试题,看看你能不能都回答上来。1、equals和==有什么区别?2、hashcode相等的两个对象一定==相等吗?equals相等吗?3、两个对象用equals比较相等,那它们的hashcode相等吗?如果我们不重写equals和hashcode,那么它使用的是Object方法的实现。我们先简单看一下public boolean equals(Object obj) { return (this == obj); }复制public static int hashCode(Object o) { return o != null ? o.hashCode() : 0; }复制为什么要重写equals通过以上代码可以看出,Object提供...阅读全文

博文 2023-12-20 10:22:22 腾讯云

认识Redis:不只是缓存,还有这些厉害的功能!

在当今数据驱动的世界中,快速存取信息成为了技术发展的关键。而在众多存储解决方案中,Redis以其独特的魅力和强大的功能,成为了开发者们的宠儿。今天,就让我们一起来认识一下Redis。 ### 一、Redis是什么,可以用来干什么? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 ![image.png](http://static.itsharecircle.com/240220/c4b8adfc73b7950a6784418485d666f8.png) 与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速...阅读全文

博文 2024-02-20 16:18:32 YDYXCODE

让存储绿“翼”盎然,天翼云HBlock入选工信部目录!

近日,中国电信天翼云的自研产品HBlock凭借“存储资源盘活技术”成功入选《国家工业和信息化领域节能降碳技术装备推荐目录(2024年版)》(以下简称《目录》),这一成绩是对中国电信天翼云以科技创新赋能千行百业绿色低碳发展的认可。存储资源盘活技术作为该目录唯一的存储软件技术,能够快速整合现网资源,大幅提升基础设施资源利用率,同时具备轻量、绿色、灵活、共生等优势,助力企业实现节能降碳和降本增效,为数据中心绿色转型提供技术保障。​复制链接前往工信部官网即可查看:https://www.miit.gov.cn/jgsj/jns/gzdt/art/2024/art_60736b016395460890aeda756751526d.html《目录》的发布,旨在加快节能技术装备推广应用,提高工业和信息化领...阅读全文

HPC的基本概念

本文分享自天翼云开发者社区《HPC的基本概念》,作者:它零食抱佛jioHPC(High Performance Computing)是一种高性能计算技术,它利用大规模并行处理器集群或超级计算机等高性能计算设备,以及高速网络互联技术,实现对大规模数据和复杂计算任务的高效处理和分析。HPC根据业务场景可分为科学计算场景:科学计算场景主要用于模拟和分析科学问题,如气候模拟、天体物理学、生物医学等领域。这些计算任务通常需要大量的计算资源和高度并行的计算能力,以便处理大规模的数据和复杂的计算模型。工程计算场景:工程计算场景主要用于工程设计和优化,如航空航天、汽车工程、建筑设计等领域。这些计算任务通常需要高度精确的计算结果和快速的计算速度,以便进行工程设计和优化。数据分析场景:数据分析场景主要用于处理大...阅读全文

“翼”鸣惊人,天翼云两篇论文被ACM ICPP 2024收录!

近日,由天翼云科技有限公司弹性计算产品线天玑实验室撰写的两篇论文《PheCon: Fine-Grained VM Consolidation with Nimble Resource Defragmentation in Public Cloud Platforms》及《Yggdrasil: Reducing Network I/O Tax with (CXL-Based) Distributed Shared Memory》被ACM International Conference on Parallel Processing(ICPP)收录。​ACM ICPP是计算机体系结构、并行与分布计算、存储系统领域的顶级会议之一,也是世界上最古老的连续举办的并行计算国际会议之一。ACM ICPP收...阅读全文

博文 2024-06-20 17:28:25 Tianyiyun

“分离”“聚合”两手抓,天翼云聚合计算赋能多元化应用场景!

随着大数据、人工智能和高性能计算的迅猛发展,在大数据分析、基因测序、芯片设计、数据库和AI训练等“大计算”应用场景中,计算资源需求呈现爆发式增长态势,而传统的计算架构在资源利用率、扩展性、IO性能等方面存在诸多挑战。为了应对这些挑战,天翼云提出全新的云计算基础设施产品理念——聚合计算,旨在突破物理限制,资源池化分离,聚合异构算力。天翼云聚合计算是由天翼云自主研发的下一代云计算算力基础设施,面向数据库、芯片设计、大数据、AI训练等场景,提供超聚合主机、超大内存主机、内存即服务、池化计算加速四种产品和服务。通过高速总线互联技术,聚合计算不仅继承了传统云主机弹性、高可靠等优势,同时具备内存跨机共享、vCPU“无限”扩展和内存空间热变配等特性,为复杂业务场景提供源源不断的算力。依托领先的高速总线互联...阅读全文

虚拟化技术简介

本文分享自天翼云开发者社区《虚拟化技术简介》,作者:s****n在计算机科学中,虚拟化技术(Virtualization)是一种资源管理技术,将计算机的各种物理资源予以抽象、转换,然后呈现出来的一个可供分割并任意组合为一个或多个虚拟计算机的配置环境。虚拟化技术是云计算的基础,本文将简介虚拟化技术,同时介绍虚拟化技术在云计算中的重要作用。虚拟化技术的历史1959年,牛津大学的计算机教授Christopher提出并论述了虚拟化技术概念,从此拉开了虚拟化发展的帷幕。但受限于服务器架构局限,当时的虚拟化技术发展不足。1998年,VMware软件公司成立,并推出VMware Workstation和ESX Server等虚拟化产品,成为行业领导者。目前主流商业虚拟化产品有VMware、Virtual ...阅读全文

DPDK简介和原理

本文分享自天翼云开发者社区《DPDK简介和原理》,作者:s****nDPDK是一种绕过内核直接在用户态收发包来解决内核性能的瓶颈技术。什么是中断了解DPDK之前,首先需要先了解什么是中断,其实中断就是电信号,中断分两种:硬中断和软中断。什么是硬中断?硬中断是由与系统相连的外设(比如网卡、硬盘)自动产生的,主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。什么是软中断?软中断为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。硬中断和软中断有...阅读全文

博文 2024-08-23 10:14:22 Tianyiyun