首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏瓜农老梁

    Netty11# 非内存分配

    前言 非内存的分配由UnpooledByteBufAllocator负责,本文梳理下由其负责分配的堆内存和堆外内存如何实现的 。 Netty在非堆内存分配上Java9与Java8以下版本有啥不同呢?Netty堆外内存回收默认机制使用JDK提供的Cleaner吗? 一、非堆内内存分配 下面这小段代码摘自UnpooledByteBufAllocator#newHeapBuffer,通过此方法分析非堆内存的分配。 非堆内存分配总结 当使用Netty非进行堆内存分配时: 1.Java8及其以下版本:直接在堆空间分配内存。 二、非堆外内存分配 下面这段代码摘自UnpooledByteBufAllocator#newDirectBuffer方法,通过此方法分析非堆外存的分配。

    92010发布于 2021-03-16
  • 来自专栏月梦·剑心的技术专栏

    层.最大

    层,有核类似于卷积核。最常使用的操作时最大,最大操作是选择核所覆盖的网格中最大的数作为输出。 层的作用是保留输入特征同时把数据量减小 写一个仅有层的神经网络作为测试,体验层的作用 import torch from torch import nn #设置输入数据,5*5矩阵 input __init__() #构建层 self.pooling=torch.nn.MaxPool2d(3,ceil_mode=True) #前向传播函数 def =model(input) print(output) 层MaxPool2d的参数ceil_mode若设置为True,则当核未完全覆盖网格时,仍然取最大的数字输出,若设置为False,则直接舍弃并且不输出 ;stride参数默认值为核的大小。

    72530编辑于 2022-09-14
  • 来自专栏运维开发故事

    开发 Operator 调度 GPU 实例资源

    本文我们将自己开发一个 Operator 来维护 GPU 资源的稳定,解决 AI 模型训练的基础平台的稳定性。 其架构如下: ee11ee9bb3ba2f232c0f78573956823f MD5 其中: GPU 资源采用的是腾讯云的竞价 GPU 实例 Operator 运行在 K8s 中,通过 SpootPool 控制 GPU 资源的数量 若云平台释放了某台 GPU 实例,当 Operator 监听到资源数量和期望的不匹配,会自动补充到期望数量 Operator 的开发有多种脚手架,常用的有 operator-sdk 资源的自动管理。 Operator 是云原生时代自动运维的重要利器。掌握其开发方法,意味着我们不仅能“用好” Kubernetes,更能“扩展” Kubernetes,为复杂业务场景提供定制的解决方案。

    35210编辑于 2025-09-04
  • 来自专栏全栈程序员必看

    选择】全局最大和全局平均的实验分析

    Learning Deep Features for Discriminative Localization论文中的描述,在使用类响应图class activation mapping (CAM) 对比全局平均 Global average pooling (GAP) vs 全局最大global max pooling (GMP): 类响应图示例: 图中高亮区域就是根据label的注意图高响应区域 具体得到的这个相应区的方法是 1) 训练主干网络得到特征图 2) 进行全局(图中用的GAP,也可以使用GMP) 3) 对全局的结果做全连接得到全连接参数 w 4) 把全连接参数作为权重对特征图进行加权求和

    2.6K40编辑于 2022-07-25
  • 来自专栏用户5325874的专栏

    技术

    技术 概念 技术:把一些能够复用的东西(比如说数据库连接、线程)放到池中,避免重复创建、销毁的开销,从而极大提高性能。 不过,技术也存在一些缺陷,比方说存储池子中的对象肯定需要消耗多余的内存,如果对象没有被频繁使用,就会造成内存上的浪费。 可这些缺陷相比技术的优势来说就比较微不足道了,只要我们确认要使用的对象在创建时确实比较耗时或者消耗资源,并且这些对象也确实会被频繁地创建和销毁,我们就可以使用技术来优化。 池子中的对象需要在使用之前预先初始完成,这叫做池子的预热,比方说使用线程时就需要预先初始所有的核心线程。如果池子未经过预热可能会导致系统重启后产生比较多的慢请求。 技术核心是一种空间换时间优化方法的实践,所以要关注空间占用情况,避免出现空间过度使用出现内存泄露或者频繁垃圾回收等问题。 参考 技术

    1.4K40发布于 2020-04-13
  • 来自专栏全栈程序员必看

    卷积、反卷积、、反「建议收藏」

    三、 的定义比较简单,最直观的作用便是降维,常见的有最大、平均和随机层不需要训练参数。 1、三种示意图 最大是对局部的值取最大;平均是对局部的值取平均;随机是根据概率对局部的值进行采样,采样结果便是结果。 (2)平均往往能保留整体数据的特征,能凸出背景的信息。 (3)随机中元素值大的被选中的概率也大,但不是像最大总是取最大值。 3、重叠 一般在CNN中使用的都是不重叠的,但是也可以重叠,重叠和卷积操作类似,可以定义步长等参数,其和卷积的不同在于:卷积操作将窗口元素和卷积核求内积,而操作求最大值/平均值等,窗口的滑动等原理完全相同 四、反 操作中最常见的最大和平均,因此最常见的反操作有反最大和反平均,其示意图如下: 反最大需要记录化时最大值的位置,反平均不需要此过程。

    5.2K22编辑于 2022-08-31
  • 来自专栏全栈程序员必看

    全局平均层替代全连接层(最大和平均的区别)

    最近看了两张图,我对第一张图有些不同的见解。首先全连接层和softmax层是不同的两个部分,其次计算参数时候可以理解为,假设最后一个卷积层是4个4*4的特征图,类别为4,则计算量为4*4*4*4。同样去理解GAP,为4*4,而这里与softmax还没有关系。

    1.3K40编辑于 2022-07-31
  • 来自专栏magicsoar

    基于C++11的线程

    socket网络爬虫(1)的姊妹篇,写网络爬虫怎么能少得了线程呢 源代码地址:http://files.cnblogs.com/magicsoar/ThreadPoolProject.rar *需要C++11 而在线程池中,我们通常会预先创建m个线程,放到空闲容器中,当有任务来临时,线程会从空闲的线程中挑选一个线程来执行该任务, 在执行完毕后再将其放回空闲容器中 C++11 在C++11中,C++对线程提供了一个很高的抽象 所以在项目中实现了对std::thread二次封装,并提供了基本的优先级控制 项目概述 项目中有一个主线程,即运行程序时创建的线程可以从用户那里获取任务,还有一个管理线程,用于进行线程池中线程的调度,还有初始线程时创建的若干空闲线程 ,用于执行任务 项目中主要有以下几个类: Task:任务类,内有任务的优先级,和一个纯虚Run方法,我们需要派生Task,将要完成的任务写到Run方法中 MyThread:线程类,封装了C++11的thread 线程使用后记 线程并不是万能的,线程减少了创建与销毁线程本身对任务照成的影响,但如果任务本身的运行时间很长,那么这些开销相当于任务本身执行开销而言是可以忽略的。

    2.5K90发布于 2018-02-06
  • 来自专栏Android菜鸟成长记录

    浅谈技术

    前言 在编程学习中我们经常听到各种各样的技术,如线程、连接、对象和缓存等,平时我们背八股都是背诵里面的技术,但少有人去了解什么是技术,这些技术为什么要带个"",本文主要介绍一下什么是技术 二、为什么要使用技术? 资源节约 技术可以显著减少资源的浪费。在没有的情况下,我们可能会不断地创建新的资源实例,例如线程或数据库连接,使用完毕后再将它们销毁。 三、技术的应用场景 技术在编程中的应用场景非常广泛,它们可以帮助我们更有效地管理各种资源,从而提高系统的性能和效率。以下是四种常见的技术以及它们在不同编程场景中的详细解释: 1. 四、技术的学习收获 技术不仅在编程领域有着广泛的应用,而且在学习和职业发展方面也提供了宝贵的经验和教训。 通过学习和应用技术,我们可以获得以下几方面的收获: 资源管理技能 技术的核心思想是有效地管理资源。通过学习技术,我们可以掌握资源管理的基本原则,包括资源的创建、分配、重用和回收。

    1.4K10编辑于 2023-11-22
  • 来自专栏分享技术

    什么是

    思想对于 JAVA 是意义非凡的,因为其避免了很多的创建开销。 线程资源,数据库连接资源,TCP连接等,这些对象的初始,通常是要花费较长时间的,如果我们频繁的进行申请和销毁,就会消耗大量的系统资源,进而对性能造成影像。 于此同时这些对象又有一个共性的特征,就是如果他们是可以的,通过创建一个虚拟的,将这些资源预存起来,当我们需要的时候,从中按需获取,就可以了。 数据库连接先从数据库连接讲起吧,其基本思路就是在系统初始的时候,就把数据库连接作为对象储存起来,放在内存中,当用户需要在访问数据库的时候,我们不创建新的连接,而是从连接汇中获取一个已经创建好的空闲的连接对象 在使用完后,也不关闭,物归原主,依旧放进连接,以供之后使用。这些连接的行为都由连接来管理。任务的管理就需要我们通过参数来调整了。

    42620编辑于 2023-11-09
  • 来自专栏亨利笔记

    一文了解 TKG 如何使用 GPU 资源

    ,细粒度,快速交付切分 GPU 算力需求,急需经济高效 GPU 算力方案。 VMware 作为虚拟与云原生技术的领导者,在 GPU 算力资源领域也是一直处于领先地位,针对不同使用场景有对应的 GPU 资源方案。 GPU 算力方式 优点 缺点 备注 GPU直通方式 GPU独占模式,运算功能强 GPU资源浪费;不支持共享GPU资源;不支持vMotion 支持虚拟机,vsphere with Tanzu方案 vGPU 方式 GPU共享;支持vMotion,挂起/恢复 GPU配置文件固定;资源分配静态;需要购买vGPU License 支持虚拟机,vSphere with Tanzu方案 Bitfusion GPU方式 ,本文重点介绍 VMware vSphere Bitfusion GPU方案。

    2K50编辑于 2023-04-04
  • 来自专栏虚拟化云计算

    GPU虚拟哪家强

    2014年之前GPU虚拟技术一直采用的是GPU直接passthrough技术,它分为GPU直接passthrough和使用VFIO的passthrough,后来出现了基于SRIOV的GPU虚拟方案( AMD的GPU采用这种方案)和GPU分片虚拟(mdev)的GPU虚拟方案(Intel和NVDIA采用这种方案) Intel的GPU虚拟技术叫做GVT-g,NVDIA的GPU虚拟技术叫做GRID 现在Intel和NVIDIA的GPU虚拟方案都是采用的VFIO mediated passthrough framework。 GPU直接passthrough以及AMD采用的SRIOV方式下,IOMMU是必备组件,直接使用IOMMU硬件完成GFN到PFN的地址转换。 而VFIO mediated passthrough可以通过Host端对vGPU性能指标进行监控,因为VM对GPU的访问要绕道Host端。

    3.3K20发布于 2020-09-01
  • 来自专栏ccf19881030的博客

    简单的C++11线程实现

    线程的C++11简单实现,源代码来自Github上作者progschj,地址为:A simple C++11 Thread Pool implementation,具体博客可以参见Jakob’s Devlog ,地址为:A Thread Pool with C++11 1、线程的实现代码如下: ThreadPool.h #ifndef THREAD_POOL_H #define THREAD_POOL_H { return answer; }, 42); // get result from future std::cout << result.get() << std::endl; 3、测试C++11 线程的例子程序如下: example.cpp #include <iostream> #include <vector> #include <chrono> #include "ThreadPool.h 在Linux下的编译的命令为: g++ example.cpp -o example -std=c++11 -lpthread;如果在VS2017中使用,由于默认支持C++11,可以直接创建一个控制台程序

    4.2K20发布于 2019-08-01
  • 来自专栏JUC并发原理与源码

    JUC并发—11.线程源码分析

    为了解决这个问题,Java提供了线程技术。线程运用的是一种技术,技术就是提前创建好大量的资源保存在某个容器中,在需要使用时可直接从容器中获取资源,用完之后会进行回收以便下次使用。 技术是一种比较常见的设计思想,在请求量大时能很好优化应用的性能,减少频繁创建和销毁资源的性能开销。 常见的技术实现有:线程、数据库连接、对象、内存等,需要用到技术的场景对应的资源都比较"费时且昂贵"。 4.ThreadPoolExecutor线程的执行流程当调用execute(Runnable command)方法往线程提交一个任务后,线程首先会判断的核心线程是否已经初始。 0100 0000 0000 0000 0000 0000 0000 0000private static final int TIDYING = 2 << COUNT_BITS;//3的二进制是11

    17600编辑于 2025-05-05
  • 来自专栏Lambda

    11.JUC线程高级-线程&ForkJoin

    什么是线程 线程: 提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。 第四种获取线程的方法:线程,一个 ExecutorService,它使用可能的几个线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。 线程的体系结构: java.util.concurrent.Executor:负责线程的使用与调度的根接口 ExecutorService 子接口:线程的主要接口 ThreadPoolExecutor :线程的实现类 ScheduledExecutorService 子接口:负责线程的调度 ScheduledThreadPoolExecutor:继承 ThreadPoolExecutor实现类 ExecutorService newCachedThreadPool():缓存线程,线程的数量数量不固定,根据自己的需要更改大小 ExecutorService newSingleThreadExecutor

    30510编辑于 2022-04-13
  • 来自专栏轻量级微服务

    容器 TensorFlow GPU 环境搭建

    基础环境信息 CPU:Intel Xeon E5-2699 v4 显卡:Nvidia Tesla P100 操作系统:CentOS 7.4 基础环境验证 验证系统是否能正常识别 GPU lspci NVIDIA-Linux-x86_64-415.18.run --no-opengl-files 校验 Nvidia 驱动,执行 nvidia-smi,若有如下输出,证明安装成功: TensorFlow 容器 device_name = sys.argv[1] shape = (int(sys.argv[2]), int(sys.argv[2])) if device_name == "gpu": registry.docker-cn.com/tensorflow/tensorflow:latest-gpu \ python /app/test.py gpu 20000 ? GPU 测试结果

    1.3K10发布于 2018-12-19
  • 来自专栏涓流

    设计之CommonPool

    技术 CommonPool 对象管理是一个很重要的功能,无论是数据库连接还是redis连接,都应该特别关注连接的使用,重点关注几个关键的指标是否正常,连接使用不当很有可能导致连接泄露的问题 //创建一个实例 PooledObject<T> makeObject(); void activateObject(PooledObject<T> obj); //去初始, passivateObject(PooledObject<T> obj); boolean validateObject(PooledObject<T> obj); //销毁对象,不再被需要 并且释放资源 void close(); } 一个对象的基本使用方式如下: Object obj = null;//被管理的对象 try { obj = pool.borrowObject } } catch(Exception e) { //获取对象失败 } GenericObjectPool GenericObjectPool 实现了对象的管理

    62110编辑于 2022-06-28
  • 来自专栏王磊的博客

    1.技术

    在 Java 语言中,提高程序的执行效率有两种实现方法,一个是使用线程、另一个是使用线程。而在生产环境下,我们通常会采用后者。为什么会这样呢?今天我们就来聊聊线程的优点,以及技术及其应用。 1.技术 技术指的是提前准备一些资源,在需要时可以重复使用这些预先准备的资源。 技术的优点主要有两个:提前准备和重复利用。 2.技术应用 常见的技术的应用有:线程、内存、数据库连接、HttpClient 连接等,接下来,我们分别来看。 2.1 线程 线程的原理很简单,类似于操作系统中的缓冲区的概念。 技术的优点主要有两个:提前准备和重复利用。 线程技术的典型场景,线程的优点主要有 4 点:1.复用线程,降低了资源消耗;2.提高响应速度;3.提供了管理线程数和任务数的能力;4.更多增强功能。 ​

    83910编辑于 2022-05-09
  • 来自专栏全栈程序员必看

    层的作用

    层理解 2. 层的作用: 3. 函数解析 tf.nn.max_pool(value, ksize, strides, padding, name=None) 4. 代码演示详解维度变化 1. 层理解 层夹在连续的卷积层中间, 用于压缩数据和参数的量。 简而言之,如果输入是图像的话,那么层的最主要作用就是压缩图像。 个人理解的同图片resize方法类似(双线性插值法,邻近法),只不过层用的是取最大值法。 2. PCA)和计算量,防止过拟合,提高模型泛能力 A: 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片 函数解析 tf.nn.max_pool(value, ksize, strides, padding, name=None) 参数是四个,和卷积很类似: 第一个参数value:需要的输入,一般层接在卷积层后面

    11.5K31编辑于 2022-07-25
  • 来自专栏thinkphp+vue

    为什么需要线程?什么是技术?

    在 Java 语言中,提高程序的执行效率有两种实现方法,一个是使用线程、另一个是使用线程。而在生产环境下,我们通常会采用后者。为什么会这样呢?今天我们就来聊聊线程的优点,以及技术及其应用。 1.技术 技术指的是提前准备一些资源,在需要时可以重复使用这些预先准备的资源。 技术的优点主要有两个:提前准备和重复利用。 2.技术应用 常见的技术的应用有:线程、内存、数据库连接、HttpClient 连接等,接下来,我们分别来看。 2.1 线程 线程的原理很简单,类似于操作系统中的缓冲区的概念。 技术的优点主要有两个:提前准备和重复利用。 线程技术的典型场景,线程的优点主要有 4 点:1.复用线程,降低了资源消耗;2.提高响应速度;3.提供了管理线程数和任务数的能力;4.更多增强功能。

    92430编辑于 2022-03-02
领券