场景应用

浅谈线程与线程池应用场景

亡梦爱人 提交于 2019-12-05 23:37:01
什么是线程 简述: 线程是操作系统能够进行调度的最小单位。它运行于进程中。进程将资源整合在一起,以供线程使用。 为什么要有线程 创建线程的开销远小于进程 进程和线程的区别 1. 线程共享创建它的进程的地址空间;过程有它们自己的。地址空间 2. 线程可以直接访问其进程的数据;进程有自己的父进程数据段的副本。 3.线程可以直接与进程中的其他线程通信;进程必须使用进程间通信来与同级进程通信 4. 新线程很容易创建;新的进程需要父进程的复制。 5. 线程可以对同一进程的线程进行相当大的控制;流程只能对子流程进行控制。6. 主线程的更改(取消、优先级更改等)可能会影响进程中其他线程的行为;对父进程的更改不会影响子进程。 不同进程间是充满敌意的,彼此是抢占,竞争cpu的关系;例如:酷狗会和mysql抢占资源。 不同线程之间是数据共享的是合作关系,一个线程可以访问另外一个线程的内存地址 为何要用多线程(线程对比进程的好处) 1.多线程共享一个进程的地址空间。线程之间数据共享 2.线程比进程更轻量级,线程比进程更容易创建并且可以撤销。创建线程耗时是进程的十分之一到百分之一 3.如果使用多线程是cpu密集型的,那么不能获得性能上的增加,但是如果线程处理大量I/O操作,多线程可以节约时间,加快程序执行的速度 4.在多cpu的系统中(现在电脑多为多cpu),为了最大限度利用多核

程序猿的三种职业生涯发展路线

时光总嘲笑我的痴心妄想 提交于 2019-12-05 20:17:13
三种路线对应了从“纯产品”至“纯技术”的过渡: CPO主要做业务决策:他只对产品的结果负责 CTO主要做技术决策:他既要考虑业务需求,又要考虑技术的实现难度。他需要对技术落地的结果负责 技术专家只负责解决技术问题:他基本只考虑特定的技术场景,对企业的技术竞争力负责 当然,以产品为核心竞争力的企业是比较多的,以技术为核心竞争力的企业是比较少的。所以市场需求方面:CPO > CTP > Expert 对于实现成本比较高的技术,大部分企业选择的是购买服务(或使用破解版软件),比如数据库。但这并不意味着数据库专家没有了生存空间。当市面上流通的服务无法满足企业需求时,还是需要技术专家出马来解决问题的。 不过,技术专家在学习时也不能只考虑技术上的难易,而忽视了应用场景的需求。毕竟,技术专家的最终目的是为企业解决问题,所以要根据技术在实际应用时的障碍来调整自己的研究方向。 来源: https://www.cnblogs.com/lokvahkoor/p/11944956.html

[NodeJS] 优缺点及适用场景讨论

喜欢而已 提交于 2019-12-05 14:03:53
概述:   NodeJS宣称其目标是“ 旨在提供一种简单的构建可伸缩网络程序的方法 ”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢?   本文就个人使用经验对这些问题进行探讨。 一. NodeJS的特点   我们先来看看NodeJS官网上的介绍:   Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.   其特点为:   1. 它是一个Javascript运行环境   2. 依赖于Chrome V8引擎进行代码解释   3. 事件驱动   4. 非阻塞I/O   5. 轻量、可伸缩,适于实时数据交互应用   6. 单进程,单线程 二. NodeJS带来的对系统瓶颈的解决方案  

装饰器的应用场景

三世轮回 提交于 2019-12-05 11:46:32
# 1. 测试代码的运行时间 import time def outter(func): def inner(*args,**kwargs): s = time.time() func() e = time.time() return e - s return inner @outter def demo(): for i in range(1000000): pass t = demo() print(t) # 结果0.022935152053833008 # 2. 限制访问 from flask import Flask,request app = Flask(__name__) @app.route("/") def index(): print(request.host) print(request.host_url) # 怎么设置一个逻辑,同一个host一秒钟访问次数超过10次,认为是非人为操作,然后拉入黑名单,12个小时候才能继续访问。 # 方式一,将访问的ip插入到redis中,设置过期时间为1/10s,若插入成功,就可以继续访问,插入失败就返回请求过于频繁。 # 对每一个网页的话都限制IP的话,就要封装一个装饰器,请求前先进行ip检查,flask中的请求钩子,before_request,是否合理 # 方式二, return "welcome to flask"

redis数据类型及应用场景

血红的双手。 提交于 2019-12-05 08:13:15
0.key的通用操作 KEYS * keys a keys a* 查看已存在所有键的名字 **** TYPE 返回键所存储值的类型 **** EXPIRE\ PEXPIRE 以秒\毫秒设定生存时间 *** TTL\ PTTL 以秒\毫秒为单位返回生存时间 *** PERSIST 取消生存时间设置 *** DEL 删除一个key EXISTS 检查是否存在 RENAME 变更KEY名 ---例子: 127.0.0.1:6379> set name zhangsan 127.0.0.1:6379> EXPIRE name 60 (integer) 1 127.0.0.1:6379> ttl name (integer) 57 127.0.0.1:6379> set a b ex 60 OK 127.0.0.1:6379> ttl a 127.0.0.1:6379> PERSIST a (integer) 1 127.0.0.1:6379> ttl a (integer) -1 View Code Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 redis5.0版本以后增加了新的数据类型:流数据类型 1.strings 应用场景 session 共享 常规计数:微博数,粉丝数,订阅、礼物

浅析VO、DTO、DO、PO的概念、区别和用处

ぃ、小莉子 提交于 2019-12-05 06:26:42
篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和PO。 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: VO (View Object ): 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 DTO (Data Transfer Object ): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。 DO (Domain Object ): 领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。 PO (Persistent Object ): 持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。 模型: 下面以一个时序图建立简单模型来描述上述对象在三层架构应用中的位置 用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO。 展示层把VO转换为服务层对应方法所要求的DTO,传送给服务层。 服务层首先根据DTO的数据构造(或重建)一个DO

基于Hadoop大数据分析应用场景

ぐ巨炮叔叔 提交于 2019-12-05 04:28:43
一.Hadoop应用业务分析 大数据是不能用传统的计算技术处理的大型数据集的集合。它不是一个单一的技术或工具,而是涉及业务和技术的许多领域。 目前主流的三大分布式计算系统分别为Hadoop、Spark和Strom: Hadoop当前大数据管理标准之一,运用在当前很多商业应用系统。可以轻松地集成结构化、非结构化甚至非结构化数据集。 Spark采用了内存计算,从多迭代批处理出发,允许将数据载入内存做反复查询,此处还融合数据仓库,流处理和图形计算等多种计算范式。Spark构建在HDFS上,能与Hadoop很好的结合,它的RDD是一个很大的特点。 Storm用于处理高速、大型数据流的分布式实时计算系统。为Hadoop添加了可靠的实时数据处理功能。 Hadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据处理的Apache的开源框架。Hadoop框架应用工程提供跨计算机的分布式存储和计算的环境。Hadoop是专门从单一服务器到上千台服务器拓展,每个机器都可以提供本地计算和存储。 Hadoop适用于海量数据、离线数据和负责数据,应用场景如下: 场景1:数据分析,如(海量数据日志分析,商品推荐,用户行为分析) 场景2:离线计算(异构计算+分布式计算) 场景3:海量数据存储(存储集群) 三个实用场景: 京麦用户分析 京麦流量分析 京麦订单分析 都属于离线数据

Zookeeper基本原理与应用场景

ぐ巨炮叔叔 提交于 2019-12-05 04:23:56
Zookeeper是一个针对大型分布式系统的可靠协调系统。提供的功能包括:配置维护、名字服务、分布式同步、组服务等。目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。Zookeeper已经成为Hadoop生态系统中的基础组件。 Zookeeper有如下特点: 最终一致性:为客户端展示同一视图,这是zookeeper最重要的功能。 可靠性:如果消息被到一台服务器接受,那么它将被所有的服务器接受。 实时性:Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。 等待无关(wait-free):慢的或者失效的client不干预快速的client的请求。 原子性:更新只能成功或者失败,没有中间状态。 顺序性:所有Server,同一消息发布顺序一致。 Zookeeper的应用有 HDFS、YARN、Storm、HBase、Flume、Dubbo(阿里巴巴)以及metaq阿里巴巴)。 Zookeeper基本原理 Zookeeper的架构如图所示。 每个Server在内存中存储了一份数据。当Zookeeper启动时,将从实例中选举一个leader(Paxos协议)。Leader负责处理数据更新等操作(Zab协议)。一个更新操作成功,当且仅当大多数Server在内存中成功修改数据。

zookeeper原理 使用场景

不羁岁月 提交于 2019-12-05 04:20:01
ZooKeeper是 Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。 ZooKeeper基本原理 1. 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用,在后面的典型应用场景中会介绍到。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的,关于ZooKeeper中的Acl可以参考之前写过的一篇文章《 说说Zookeeper中的ACL 》。 2.重要概念 2.1 ZNode 前文已介绍了ZNode

应用场景不同,是无代码和低代码的最大区别 ZT

谁都会走 提交于 2019-12-05 04:19:55
随着媒体对低代码、无代码等先进技术的持续关注,我们发现大多数人都听说过低代码开发和无代码开发这两个概念,但是对两者之间的区别其实并不清楚。事实上,低代码开发和无代码开发之间存在着很多非常显著的差异,如果你正在考虑放弃传统的应用程序开发方式,或者只是想尝试一下全新的可视化应用程序开发方式,那么你需要了解这两个技术能给你带来什么好处。 这篇文章,将会对低代码开发与无代码开发技术进行深度解析,看看它们区别在哪里,探讨如何使用它们为企业信息化服务。 从编程发展史说起 编程是编定程序的中文简称,指设计具备逻辑流动作用的一种“可控体系”。最早的编程可以溯源至1804年,历史远早于电子计算机。19世纪早期的法国里昂是世界闻名的丝织之都。里昂的丝织工人们使用的工具却是质量低劣、效率低下的老式手工提花机。这种机器需要有人站在上面,费力地一根一根地将丝线提起、放下,才能织出精细复杂的丝绸,就好像演员在操纵牵线木偶。这种繁琐的劳动随着1804年雅卡尔提花机的发明发生了改变。雅卡尔提花机利用预先打孔的卡片来控制织物的编织式样,速度比老式手工提花机快了25倍。 (雅卡尔提花机复原图,图片来自网络) 从这种借助穿孔卡片进行编程的提花织机问世至今,编程语言已经走过了200多年的历史。随着计算机技术的发展,1950年代开始,为电子计算机设计的编程语言层出不穷。到现在为止,已经出现了250多种编程语言。每一年