资源池

Java线程笔记-生产者和消费者

蹲街弑〆低调 提交于 2019-12-04 11:54:55
Java线程笔记 1. 线程的介绍:   Java中每一个对象都可以作为锁,这是synchronized实现同步的基础; 普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁; 静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁; 同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁; 2. synchronized 关键字;   关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块;用于解决多线程共同操作共享数据的问题。 3. 方法介绍; wait() :当前线程进入等待状态,释放锁,停止执行wait() 方法后面的语句; notify() : notifyAll() : 通知所有等待相同资源的线程,不会立即释放锁,当前线程执行完后释放锁,即,notifyAll()通知发出后,需当前线程执行完后释放锁,其他等待的线程才能抢到资源; 4. 生产者-消费者实现方式一 (synchronized、wait和notify) 4.1 先定义一个资源池,用于存放线程共享资源,并提供生产、消费资源的方法 1 //定义一个资源池的类Resource 2 3 class Resource { 4 private int num = 0; 5 private int size =

后摩尔定律时代的计算力破局!

人走茶凉 提交于 2019-12-03 11:48:07
  后摩尔定律时代的计算力破局!   万物互联、人工智能等技术的成熟正在重构我们的生活方式,数据将以前所未有的速度累积增长,今后的智能设备数量会越来越多,体积越来越小,重量越来越轻。相应的,通过物联网,这些设备会把各式各样的数据源源不断地传输到后端的数据中心,数据来源的多样性、格式的复杂性和语义的不确定性,都将导致后端的计算量越来越大,对计算力的要求也越来越高。   当摩尔定律逐渐失效   过去的半个世纪,得益于半导体芯片产业飞速发展,在摩尔定律的驱动下,计算力一直保持着大跨度的发展。1956年,英特尔创始人戈登·摩尔提出,集成电路的集成度每两年会翻一番,后这个周期缩短到18个月,微处理器的性能每隔18个月提高1倍。   然而,硅芯片已逼近物理和经济成本上的极限,各界纷纷预测,摩尔定律在不久的将来面临失效,半导体工艺升级带来的计算性能的提升不能再像以前那么快了,每一代制程工艺的研发和成熟需要的时间将越来越长。制程发展减缓,新的替代材料和计算方式还未成熟,想要追求更高的计算力,可以从两个方向发展。   一个方向是向内,借助服务器系统架构的优化,打破数据读取瓶颈,从而提升单机计算力。当前,服务器普遍采用的是冯诺依曼架构,即计算和存储分离,而CPU的处理速度和数据的读取速度却无法匹配。纵观整个计算史,处理最缓慢的一部分就是从硬盘获取数据,很多处理性能都浪费在了等待数据到达上

Jedi连接池

会有一股神秘感。 提交于 2019-12-03 07:04:23
简介 jedis用于创建和管理连接,并提供了对redis数据库的操作方法。Jedis相当于JDBC中的Connection,JedisPool相当于DBCP或者C3P0,而JedisCluster更像是Spring中的JDBCTemplate(将连接池和连接都给封装起来了,只提供给我们直接操作redis的api)。 JedisPool和JedisCluster在构造连接池对象的时候,需要传入JedisPoolConfig,host,port等。这些配置信息我们可以统一地定义在jedis.properties文件中,方便后续维护。但 jedis有个不足,就是不能读取properties文件,需要我们手动取值设置。 使用例子 需求 使用jedis连接池对redis进行String、Set、Sorted Set、List、Hash和Key的操作。(这里仅测试单机版,集群不涉及) 工程环境 JDK:1.8.0_201 maven:3.6.1 IDE:Spring Tool Suites4 for Eclipse redis:3.2.100(windows64) 主要步骤 读取jedis.properties文件,创建并设置JedisPoolConfig; 根据配置参数构造JedisPool; 调用JedisPool的getResource方法获取Jedis对象;

云数据中心架构

匿名 (未验证) 提交于 2019-12-02 23:35:02
云数据中心架构 最近一次更新博客是去年5月份,到现在已经8个月了,不找借口了就是懒。我一直认为只有 能够分享出来的知识才真正属于自己,分享出去的才是自己的。最近在学华为数据中心认证课程 ,之前也有拜读过《银行信息系统架构》和《商业银行私有云设计与实现》系列丛书, 对于现代 云数据中心架构有了一些自己的想法,每个人在这个世界上都在不断探索,学习的过程就是在不 断刷新自己的认知域,也许在某一天或豁然开朗,也希望这次分享能够对学习感兴趣的兄产生一 些启发。 数据中心分为传统数据中心IDC和现代数据中心CDC(云数据中心),现在绝大多数数据中心 已经由IDC向CDC转变。这些转变在底层的基础设施部分并没有太多体现,不同的是CDC是将底 层的计算、网络、存储等各类资源用软件纳管起来,之后纳入同一个云资源池。说白了把各类资 源聚集到一起从而形成了云。(目前纳管CDC各类资源的系统软件是openstack,由于代码开源 故各个厂商都在openstack的基础上更新优化出符合自家产品特性的云管软件,如华为的“Fusion Sphere OpenStack”。) 传统数据中心遇到了很多问题,如“资源利用率下降、设备种类多且分 散各地难以管理、业务上线速度慢等特点。而云数据中心引入了“资源池化“和”自动化”2个概念, 将各类资源先资源池化,再在次基础上做资源自动化。自动化从本质上提升了新业务上线速度

赋能故事 : 3年匠心“智”造,铸就华金证券上云梦

微笑、不失礼 提交于 2019-11-29 10:14:34
《赋能故事》编者按:从云计算到边缘计算,九州云始终相信“开源·赋能变革”。7年时间里,九州云不断突破和超越,用开源技术创造了一个又一个精彩的赋能故事。2019年10月,九州云《赋能故事》系列正式推出,我们将用一个个经典的客户案例故事,为您展现不一样的九州云产品、不一样的九州云服务。*** 曾几何时,股票是人们发财和一夜暴富的手段,那时的人们用拷克箱来装实物股票,数目大的股民需要用麻袋装实物股票到交易所办理转让过户手续…… 曾几何时,办理交易的人们需要到窗口排队,远远望去像极了一条条“长龙”,场面十分壮观,那时的交易工作需要大量的人力来完成…… 曾几何时,中国的证券行业正处于熊市,那时电话委托、网上交易取代了传统的交易方式,券商的IT工程师们“马不停蹄”地奔走于各大城市,调研自己所在券商公司各地营业厅的交易以及系统运行情况,一轮又一轮扩容相应的IT系统…… 而今,对于跃然云上的华金证券来说,那样的日子已经一去不复返了。 华金证券股份有限公司(以下简称:“华金证券”)前身是设立于2000年9月的上海久联证券经纪有限责任公司,而后经历引进战投、增资扩股、股份改制等一系列事宜,2016年12月正式更名为华金证券。作为一家拥有全牌照的综合性证券公司,华金证券业务范围涵盖证券承销与保荐、证券资产管理、证券经纪、证券自营、另类投资等诸多领域。 目前,华金证券业务主要依托股票期权、沪港通、期货

IDC企业如何选择合适公有云管理平台?

旧时模样 提交于 2019-11-28 22:45:33
一,了解公有云管理系统诞生的背景 作为互联网的基础服务行业,IDC行业一直为网站提供存储、运维、安全相关的各项服务,是互联网能够有效运行、高效发展的中流砥柱。而随着云计算概念的引入并发展成熟,以大规模存储和分布式计算为特色的云计算也给IDC产业带来了新的挑战和机遇。 市场创新型云计算业务对自有核心IDC业务的冲击,导致营收不涨反降;内部管理体系不完善导致人员与业务管理无法闭环,间接造成客户流失;IDC的业务以销售为主,综合云服务能力弱成业务增长的阻碍。应对这种情况,业界纷纷探索中小IDC云化转型的最佳方式。 二,现阶段IDC企业转型所面临的困境 1.管理能力较弱 2.缺少技术能力,创新力不足 3.产品,资源,资金相对匮乏 4.抗风险能力弱 三,IDC企业如何选择合适的公有云管理系统 ZKEYS系统+资源池,打造云计算共享生态圈 ZKEYS系统拥有核心稀缺资源的集采存储能力,并支持本地化资源的导入与调用,中小IDC加入系统后,支持互相调用资源,最终形成你中有我,我中有你的生态局面,共享ZKEYS云计算生态圈。 ZKEYS自2002年创立以来,已经过了数次更新迭代,是目前国内最大的IDC业务管理系统之一。在商用领域,ZKEYS已获得了上千家企业的高度认可,其完善的行业解决方案及云计算生态为中小型IDC企业云化打造了一条可复制的新模式。 全面支持无限制资源池API

生产者和消费者模型

天涯浪子 提交于 2019-11-28 22:34:18
生产者和消费者模型 1. 什么是生产者和消费者模型 生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。 再具体一点: 生产者生产数据到缓冲区中,消费者从缓冲区中取数据。 如果缓冲区已经满了,则生产者线程阻塞。 如果缓冲区为空,那么消费者线程阻塞。 2. 如何实现 实现生产者消费者模型有两种方式: 采用 wait—notify 方式实现生产者消费者模型(注意这里需要加同步锁 synchronized) 采用 阻塞队列 方式实现生产者消费者模式 3. wait-notify 方式 实现过程并不复杂,直接上代码: 这里设置了生产者生产速度大于消费者消费速度(通过 sleep() 方法实现)。 缓冲区 BufferArea.java : public class BufferArea { // 当前资源数量的计数值 private int currNum = 0; // 资源池中允许存放的资源数目 private int maxSize = 10; /** * 从资源池中取走资源 */ public synchronized void get() { if (currNum > 0) { currNum--; System.out.println("Cosumer_" + Thread

解决 JDK1.7 不支持 VCenter 6.7 的问题(涉及到Https TLS1.2协议)

亡梦爱人 提交于 2019-11-28 13:33:15
解决 JDK1.7 不支持 VCenter 6.7 的问题 问题描述 原项目工程是使用JDK 1.7,可以连接 5.X版本和 6.0版本的 VCenter资源池。 但是,现在VCenter已经升到 6.7版本,原程序对于高版本的 VCenter 6.7 不再试用。 连接 VCenter 6.7 版本的资源池的时候,一直报 SSLHandshakeException 的异常错误。 报错信息如下: 问题处理 1、背景介绍 JDK1.7 默认是 TSLv1, 但是可以支持 TSLv1.1,TSLv1.2; JDK1.8 默认是 TSLv1.2 2、解决方案 1)如果是 脚本访问 ,可以在连接参数里增加 -Dhttps.protocols=TLSv1.2 2)如果是 Java程序处理 ,想使用 JDK 1.7 访问 VCenter 6.7 资源池,需要对VCenter 6.7版本单独处理 a)根据资源池类型,设置不同的 https.protocols if (type.equals("VC67")){ java.lang.System.setProperty("https.protocols", "TLSv1.2"); }else{ java.lang.System.setProperty("https.protocols", "TLSv1"); } b)对于连接VC的认证处理如下: if

redis07

点点圈 提交于 2019-11-27 20:39:42
redis的规范与运维 Key设计 1.可读性和可管理性 - 以业务名(或数据库名)为前缀(防止key冲突),用冒号分割分割,例如 业务名:表名:id,如 ugc:video:1 2.简洁性 保证语义的情况下,控制key的长度,当key较多时,内存占用也不容忽视 例如 user:{uid}:friends:messages:{mid} 可以简化为 u:{uid}:fri:mes:{mid} 3.不要包含特殊字符 反例:包含空格、换行、单双引号以及其他转义字符 Value设计 1.避免bigkey string类型控制在10KB以内 hash、list、set、zset元素个数不要超过5000个 反例:一个包含几百万个元素的list、hash等,一个巨大的json字符串 2.bigkey的危害 网络阻塞 Redis阻塞 会形成慢查询阻塞其他命令 集群节点数据不均衡 频繁序列化:应用服务器CPU消耗 Redis客户端本身不负责序列化 应用频繁序列化和反序列化bigkey:本地缓存或Redis缓存 发现bigkey的方法 使用应用的监控异常对其发现 JedisConnectionException:Read timed out Could not get a resource from the pool 在从节点上执行 redis-cli --bigkeys scan + debug

node 连接 mysql 数据库三种方法------笔记

强颜欢笑 提交于 2019-11-26 12:58:33
一、mysql库 文档: https://github.com/mysqljs/mysql mysql有三种创建连接方式 1.createConnection 使用时需要对连接的创建、断开进行管理 2.createPool 创建资源池,使用时不需要对连接的创建、断开进行管理,每次使用完调用一次release进行释放连接到资源池,至于连接是否断开交给资源池去管理。每次建立连接时非常消耗资源的,影响性能,因此对连接创建合理的管理,有利于提高性能。 3.createPoolCluster 创建连接池集群,允许与多个host连接 二、sequelize库 中文文档: https://github.com/demopark/sequelize-docs-Zh-CN 此库依赖mysql2 与mysql库相比,不需要写sql语句,增删查改都封装成对应的方法。 mysql库入门比较简单,有利于学习sql语句 sequelize封装了一些简单sql语句,掌握封装的方法及对应的参数即可,但学习成本稍微高一些,需要创建模式,模式需要与数据库中的表对应起来。在项目实际开发过程中,使用sequelize开发效率更高,代码可以更加简短。也有query方法,支持使用sql语句。 sequelize提供了一个方法sequelize.sync({ force: true });强制数据库中的表与模式定义的表进行同步