utm

锁优化

耗尽温柔 提交于 2020-08-13 02:39:10
1.偏向锁: 偏向于第一个访问锁的线程,同个线程可以直接获得锁继续运行下去。 如果在运行过程中只有一个线程会访问,那么就不需要进行同步操作,这时候会给这个线程加个偏向锁。 而当有另外的线程同样想获取锁时,获取失败就会将偏向锁升级为轻量级锁。 ps:在有锁竞争的情况下,偏向锁会做很多额外操作降低性能,所以只有当没什么多线程的情况下再启动偏向锁。 2.轻量级锁: 在对象头中CAS尝试保存指向线程的指针,失败了就用自旋重新尝试,如果一直失败或又有线程尝试争抢锁,锁就会升级为重量级。 ps:此时失败并不会阻塞而是自旋重新尝试。 3.重量级锁: 就是以前的同步锁,一个线程获得锁,其他线程会被阻塞直到锁被释放后唤醒。 java同步锁优化方案学习笔记(偏向锁,轻量级锁,自旋锁,重量级锁) synchronized原理分析及自旋锁、偏向锁、轻量级锁和重量级锁的概念和优化 来源: oschina 链接: https://my.oschina.net/u/4527334/blog/4309045

Ubuntu 18.04.4 LTS 成功安装FSL+PANDA

不打扰是莪最后的温柔 提交于 2020-08-12 15:43:51
装fsl的过程走了太多太多的弯路!花了差不多三天时间,所以作为小白也想分享一下经验。 背景,我想使用PANDA软件(这个matlab工具包基于fsl),但是发现所有操作都是报错,以为是fsl没有安装好,所以就开启了重装fsl的一系列操作。 如果你只是想使用fsl的话就可以不用看了。 PANDA的安装包: https://www.nitrc.org/projects/panda/ 但是你想使用PANDA软件的话,不要走官网通常的渠道,还有debian版本也是不行的,要独立下载一个安装包。我前边就是费了九牛二虎之力安装了fsl(遇到比如密钥的问题,无法获取安装包等等问题),然后安装成功了之后发现还是不能正常使用PANDA。这时我才想起PANDA的手册。。。我顿时觉得我的弯路白走了。。。 PANDA手册介绍的步骤非常简单易明,再简化说一下: 1.下载一个独立的安装包,必须是LInux OS (centos) 版本的,Ubuntu/Debian 版本都不支持! 我是百度了一个资源, https://pan.baidu.com/s/1minhAZ2 fsl官网也提供了旧版本的下载连接,但我觉得下载速度太慢了 https://fsl.fmrib.ox.ac.uk/fsldownloads/oldversions/ 2.打开终端,输入su切换到root权限用户

全球首款“蚕丝硬盘”!耐高温可重写,能存DNA,还能植入人体

混江龙づ霸主 提交于 2020-08-12 14:41:44
大数据文摘出品 想到蚕丝你会联想到什么?蚕丝被?面膜? 最近,来自中科院、美国纽约州立大学石溪分校和德州大学奥斯汀分校的联合课题组,首次实现了基于蚕丝蛋白的高容量、可重写的生物存储技术。 也就是说, 未来,你的数据可能不需要再存储在半导体上,而是一个蚕茧中。 项目的主要参与者、中国科学院上海微系统与信息技术研究所研究员、博士生导师、上海微系统所2020前沿实验室主任陶虎今天在接受《澎湃新闻》采访中表示,这款“蚕丝硬盘”除了能存信息,还能装东西, 比如血液样本、DNA、疫苗,甚至可以植入生物体。 图源:《澎湃新闻》受访者供图 突然就有了科幻的感觉,天然生物蛋白也可以作为存储信息的介质了! 8月10日,陶虎团队的相关论文《A rewritable optical storage medium of silk proteins using near-field nano-optics》发表在了《自然纳米技术》(Nature Nanotechnology)上。 论文链接: https://www. nature.com/articles/s41 565-020-0755-9?utm_source=other&utm_medium=other&utm_content=null&utm_campaign=JRCN_2_DD01_CN_NatureRJ_article_paid_XMOL

进程通信的方式及区别

拟墨画扇 提交于 2020-08-12 11:37:53
进程通信方式有5种: 1.管道: 又分匿名管道和有名管道。如果管道中的信息没有被读取,这个管道就会一直被阻塞。 匿名管道 :是半双工通信(只能单向传递),只能在亲缘关系的进程之传间传递信息,不属于文件系统只存在于内存中。 有名管道 (FIFO):任何进程均可以进行通信,有特定的路径名与之关联,存在于文件系统中。 2.消息队列: 它是消息的链接表,存于内核中,每个消息队列都有一个标识符ID。 其中的消息有特定的格式和优先级,接收消息可以按先进先出,也可以按消息的类型去查询;另外,消息是有一定大小限制的。 消息队列独立于发送接收进程,就是两个进程终止了,消息队列中的内容还是会留着。 3.信号量: 信号量是一个计数器,它并不能用于存储数据,而是用来进行进程同步,通常和共享内存结合使用。 它基于操作系统的PV操作,可以加减任意数值。 4.共享内存: 共享内存指两个或多个进程共享一个给定的存储区。(进程中的内存都是虚拟内存空间,可以拿出一部分映射到相同的物理空间上实现共享) 它是最快的一种IPC,进程可以直接去内存中获取数据。 共享内存需要同步,信号量就是用来同步对共享内存的访问。 还有socket等好像不是重点,先不总结了。 如何向面试官讲述进程间通信 面试必问:进程与线程的异同以及进程间通信方式 来源: oschina 链接: https://my.oschina.net/u

实战案例丨代码优化:如何去除context中的warning?

一个人想着一个人 提交于 2020-08-12 11:11:25
在一个java语言群里面,有人抛了这么一段代码出来,问题是出现了下下图中的warning,问有什么好的方法消除 这种强转都是因为类型链条断掉了,写入的时候擦除了类型,读出来的时候也就只能强转了,那个instanceof 其实并没有帮到什么忙,无外乎把A异常变成了B异常。 最简单的解决方法也非常直观,就是加上 @SuppressWarnings("unchecked")。 这里先不谈用其他的方法相对优雅的除掉这个warning,而是看看这段代码本身的问题。 这是一个context,这种模式就是一个数据容器,啥都能装,通过编码的人来保证类型匹配,进去擦除类型,出来补上类型,能不能弄对,全看人。 这种模式类似于在其他的语言里面就拿个容器类型就开始编程,忽略一切的type信息。 我们应当能够看到几个问题 1. context装进去的是有类型化的对象,出来就没有了,设计上讲究封装性,封装基本的就要保证对称,那么context抹除掉的东西,就应该由他来补上。 2. 由于他没有补上,所以所有使用的地方自己来补充,代码其实会产生很多冗余,考虑到他是一个context,那么实际上其他地方一定还有很多处有类似的代码 3. 这里模拟的其实是一个computeIfAbsent的逻辑,如果没有对象就补一个默认值,然后set进去,借用了isEmpty来婉转的表达容器里面没有这个元素

redis

柔情痞子 提交于 2020-08-12 07:39:36
springBoot整合redisCluster(redis集群)模式 Redis的哨兵模式和集群模式 Redis哨兵(Sentinel)模式 Redis Sentinel集群部署 首次支持多线程:Redis 6.0与老版性能对比评测 高并发下redis的瓶颈分析 Docker化高可用redis集群 来源: oschina 链接: https://my.oschina.net/miaojiangmin/blog/4294403

云小课 | 搬迁本地数据至OBS,多种方式任你选

本小妞迷上赌 提交于 2020-08-12 07:34:13
摘要: 搬迁本地数据至OBS,包括OBS工具方式、CDM方式、DES磁盘方式、DES Teleport方式和云专线方式,每种方式特点不同,本节课我们就一起看看有什么区别。 已有的业务数据可能保存在本地的自建存储服务器上,也有可能保存在第三方云厂商中,可能大家首要面临的问题就是还不清楚如何将自己的业务数据搬迁至OBS。华为云OBS提供全场景的数据迁移解决方案,满足从离线到在线,从云下到云上,从友商云到华为云,从GB级到EB级的数据迁移需求,实现“企业数据迁移零门槛”。前面小课已经为大家介绍迁移第三方云厂商数据至OBS的方法,今天继续为大家介绍搬迁本地数据至OBS的方法。 华为云当前提供了多种线下到线上的数据搬迁方案,帮助用户将自建存储服务器上的数据短时间、低成本、安全、高效地搬迁至OBS。用户可根据数据量、耗时、费用等需求选择适合的方案进行数据搬迁。 针对不同的搬迁场景及需求,华为云提供的搬迁方案如下: 下面小编将针对以上五种方案做详细介绍: OBS工具方式 OBS工具方式适用于百GB规模的数据搬迁。OBS提供OBS Browser、obsutil等多种客户端工具,方便用户在本地直接将数据上传至OBS。由于上传需要占用用户公网带宽,为不影响用户在公网上主营业务,建议利用公网带宽空闲的时间上传数据。各工具使用场景及操作指导,请参见 OBS工具指南 。 CDM方式 云数据迁移(Cloud

【华为云技术分享】跟唐老师学习云网络 : Kubernetes网络实现

懵懂的女人 提交于 2020-08-12 06:40:29
当今K8s独霸天下之时,咱们站在更高的角度,好好的看看K8s网络是以什么理念构筑的。以及一个容器集群的好保姆,是如何分别照顾 南北流量和东西流量的。 一、简单介绍下Kubernetes 略。。容器集群管理的事实标准了,不知道要打屁股。 (ps:本章节可参考唐老师的《K8S前世今生》文章) 二、世界上的集群都一个样 有点标题党哈,不过我接触过的各种集群也不少,各种各样: Ø OpenStack:在一大堆物理机上面,管理(启动/停止)VM的。 Ø SGE,Slurm,PBS:在一大堆电脑集群里面,管理(启动/停止)App的。 Ø Yarn:在一大堆电脑集群里面,管理(启动/停止)大数据App的。 Ø CloudFoundry:在一大堆电脑集群里面,管理(启动/停止)容器的 Ø Kubernetes:在一大堆电脑集群里面,管理(启动/停止)容器的。 它们都有一些共同特点: 2.1 跨节点跑xx程序 这个xx程序一定是首先单机可以运行的。比如OpenStack:单机上面可以用qemu启动VM,想跨节点管理VM,就引入了OpenStack。Kubernetes也一样:单机上面可以跑Docker容器;想跨节点管理容器,就得引入集群管理老大的概念。 2.2 有一个管事的老大 A)集群管理的老大,负责让手下的某个小弟干活。别管是命令式(直接下命令)的,还是申明式(发告示)的,小弟收到命令后

竞享实例:让你尽享云服务的“鱼”和“熊掌”

橙三吉。 提交于 2020-08-12 06:31:16
摘要: 竞享实例作为创新商业模式,为用户提供除按需、包周期之外的新模式 ,即用户可以先到先享,并将颗粒化算力瞬间批量组织起来用于各类可容错场景,其以远低于同类产品的价格以及出色性能为离线转码、离线渲染、基因测序及Web应用等可容错业务场景提供强有力的基础支撑,助力用户瞬享自由算力。 随着5G、AI、云计算及物联网等新技术的快速演进,全球数据正在指数级增长并呈海量喷涌的态势。 这些海量喷涌的数据,则意味着计算成本、运维成本以及人力成本面临大幅上升的趋势。特别是一些影视、生物、金融等领域的企业必须在业务应用中做出艰难的选择,无论是机器学习还是高性能计算,视频和图像处理,不仅是吞噬数据的饕餮,更是消耗算力的“黑洞”。如何即能满足各种无状态、可容错、大规模等业务场景的算力需求,又能降低算力成本,则成为企业面临的难题。 针对企业面临的突发性算力需求,华为云结合其产品优势推出了“竞享实例”服务。竞享实例作为创新商业模式,为用户提供除按需、包周期之外的新模式 ,即用户可以先到先享,并将颗粒化算力瞬间批量组织起来用于各类可容错场景,其以远低于同类产品的价格以及出色性能为离线转码、离线渲染、基因测序及Web应用等可容错业务场景提供强有力的基础支撑,助力用户瞬享自由算力。 三大场景,瞬享自由算力 极致性能,激发潜能 影视特效作为电影产业中或不可缺的元素之一,为电影的发展做出了巨大的贡献

解密TaurusDB存储端高并发之线程池

和自甴很熟 提交于 2020-08-12 05:08:42
摘要: 为了能加快相关任务的高效执行,TaurusDB采用多线程技术处理的方式,增加处理器单元的吞吐能力,从而提高存储端的执行效率。 1. TaurusDB背景 随着云计算进入2.0时代,数据急剧膨胀,这对实现数据库的高可靠、高性能、高吞吐的目标产生了巨大的挑战。如图1 所示,TaurusDB是华为自研的最新一代企业级具备横向扩展、海量存储能力的分布式数据库,其采用了计算存储分离,一写多读的分布式架构。将原本计算层的高密度存储相关压力下沉到存储层,极大地释放了计算层的算力。但同时将原来的存储IO转移到了网络IO,这也就是意味着,存储层将面临来自计算层风暴级的压力。如果存储层不能快速响应计算层的读写请求,会极大影响用户的使用体验。 图1 TaurusDB整体架构 图2 slice功能组件 从图2可知,TaurusDB的存储层,不单单只做存储相关的工作,也需要大量的算力,比如consolidation生成特定数据页、compation回收旧版本数据、BufferPool缓存热点数据页等任务。为了能加快这些任务的高效执行,我们首先能想到的就是能够并行执行这些任务,也就是采用多线程技术处理的方式,增加处理器单元的吞吐能力,从而提高存储端的执行效率。 2.线程池化设计思想 2.1线程为什么需要池化 首先,线程是稀缺的资源,如果频繁创建和销毁线程的开销是可观的