watermark

如何选择合适的小型项目管理工具?

孤者浪人 提交于 2020-10-16 07:22:05
小型项目通常是指工作量在三人至十几人之间的项目,这类项目一般是放任自流,少有管理,通常具有投资少、人员少、时间紧、需求不明确等特点。 如借助小型项目管理工具,可以节省大量时间和避免资源浪费,提高项目效率。 下面介绍小型项目团队常遇到的问题,以及项目管理工具是如何有效协助解决这些问题的,与大家一起分享交流。 因资源有限,小型项目团队很少设有专职的项目经理控制项目进度,以至于规范的项目管理方法常常被忽视。 另一方面,由于小型项目直接沟通成本较低,过多的项目管理流程反而使得项目执行过程变得更繁琐。 也正因为这样,在项目管理过程中,小型项目团队大多数会遇到以下问题: 1、项目质量、进度跟不上 小型项目执行过程中,缺乏统一的项目工作流程,不知道先做什么再做什么,没有一一个详细的规划,往往等事情发生了才去安排相应的工作,导致项目拖延,项目缺陷多。 2、信息流通有障碍 大部分小型项目在管理时,都是几个人各自为政,没有一个统一协作交流的平台来互相沟通协商,并记录成果,导致信息孤岛的形成。 3、对项目进度控制不足 没有对项目整体进度制定合理的进度计划,对各成员的工作任务没有及时分配,并且也无法实时跟踪项目的实际进度执行情况,导致进度毫无条理地进行。 4、项目文档资料不集中 不重视项目文档资料的整理工作,对项目过程没有管理好,无法累计项目经验,也不利于以后的工作交接。 因此

运行快应用rpk文件只需要3分钟4个步骤?

我是研究僧i 提交于 2020-10-15 19:41:32
快应用开发完打包出rpk文件,如何运行此文件查看快应用的效果? Step1下载华为快应用加载器 快应用需要使用华为快应用加载器进行启动、运行,访问官网文档 安装开发工具 ,根据快应用运行的不同设备,选择下载对应快应用加载器的安装包。 Step2安装快应用加载器PC助手 快应用加载器PC助手可以方便地将快应用推送到测试终端,访问官网文档 安装开发工具 ,下载快应用加载器PC助手的安装包,并在PC上完成安装。 Step3安装快应用加载器 用USB线连接电脑和手机,打开快应用加载器PC助手,点击“安装/更新加载器”,选择步骤一下载的加载器安装包,进行安装。 安装完成后,“已安装版本”显示快应用加载器的版本号,表示安装成功。 Step4 运行rpk文件 在快应用加载器PC助手中,点击“选择文件”,选择需要运行的rpk文件后,点击“加载”。 测试手机上可以查看快应用的运行效果,运用后的快应用会存在使用记录,方便再次使用。 如果rpk包已经存放在测试手机中,可以通过快应用加载器直接加载。点击右上角的“+”,通过“文件管理”进入rpk包存放的路径,选择rpk包运行。 原文链接: https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203377095456150309&fid=18 作者:鼓楼赵又廷 来源: oschina

SpringCloud系列之服务容错保护Netflix Hystrix

被刻印的时光 ゝ 提交于 2020-10-14 04:47:09
1. 什么是雪崩效应? 微服务环境,各服务之间是经常相互依赖的,如果某个不可用,很容易引起连锁效应,造成整个系统的不可用,这种现象称为服务雪崩效应。 如图,引用国外网站的图例: https://www.javatpoint.com/fault-tolerance-with-hystrix# ,如图系统各种服务相互调用,一旦一个服务出现问题,假如系统没有熔断器,很容易影响其它模块使用 可用自己画图表示这种情况,如图:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者。A不可用引起了B的不可用,像滚雪球一样放大到C和D时,雪崩效应就形成了。当然也不一定是服务提供者出现问题,也有可能是消费者出现问题 从两个方面来分析服务雪崩产生的原因: 服务提供者 服务提供者出现问题,一般都是影响调用的服务消费者,然后造成连锁反应 服务消费者 服务消费者方面,主要表现在同步调用等待结果导致资源紧张,ps:还有一种特殊情况是,服务既是服务提供者,又是服务消费者 2. 什么是熔断器模式 熔断器(CircuitBreaker),英文是CircuitBreaker,软件设计中的熔断器模式实现,思路是用一个函数调用在断路器保护对象,对故障监控。失败达到一定阈值后,断路器工作,接口调用返回一个错误,以达到保护系统,预防线程资源被大量占用,造成系统雪崩的情况 引用 https://martinfowler

基于 Flink 的典型 ETL 场景实现

北慕城南 提交于 2020-10-10 14:07:36
简介: 本文将从数仓诞生的背景、数仓架构、离线与实时数仓的对比着手,综述数仓发展演进,然后分享基于 Flink 实现典型 ETL 场景的几个方案。 作者:买蓉 · 美团点评高级技术专家 整理:赵阳(Flink 社区志愿者) 校对:苗浩冲(Flink 社区志愿者) 本文将从数仓诞生的背景、数仓架构、离线与实时数仓的对比着手,综述数仓发展演进,然后分享基于 Flink 实现典型 ETL 场景的几个方案。 1.实时数仓的相关概述 1.1 实时数仓产生背景 我们先来回顾一下数据仓库的概念。 数据仓库的概念是于90年代由 Bill Inmon 提出, 当时的背景是传统的 OLTP 数据库无法很好的支持长周期分析决策场景,所以数据仓库概念的4个核心点,我们要结合着 OLTP 数据库当时的状态来对比理解。 面向主题的:数据仓库的数据组织方式与 OLTP 面向事务处理不同。因为数据仓库是面向分析决策的,所以数据经常按分析场景或者是分析对象等主题形式来组织。 集成的:对于数据仓库来说,经常需要去集合多个分散的、异构的数据源,做一些数据清洗等 ETL 处理,整合成一块数据仓库,OLTP 则不需要做类似的集成操作。 相对稳定的:OLTP 数据库一般都是面向业务的,它主要的作用是把当前的业务状态精准的反映出来,所以 OLTP 数据库需要支持大量的增、删、改的操作。但是对于数据仓库来说

TCP 传输链接的释放

会有一股神秘感。 提交于 2020-10-10 01:59:02
摘自:《深入理解计算机网络》 王达著 机械工业出版社 相关知识链接 1. IPV4数据报头部格式 2. IPv6数据报头部格式 3. IPv4数据报的封装与解封装 4. IPv4数据报的分段与重组 5. ARP协议报文格式及ARP表 6. ARP地址解析原理 7. ICMP协议及报文格式 8. IPv6协议族的其它协议 9. TCP的主要特性 10. TCP的套接字 11. TCP端口 12. TCP连接状态转移 13. TCP传输的建立 TCP 传输链接的释放 当 TCP 连接建立以后,就可以在两个方向传送数据流。当 TCP 的网络应用进程再没有数据需要发送的时候,就可以发出关闭连接命令,释放连接。TCP 是通过发送 FIN 字段置1的数据段来作为关闭传输连接的命令,从而关闭本端数据流的,但是本端仍还可以继续接收来自对端的数据,直到对端也使用了同样的方法关闭那个方向的数据流为止,,这时整个双方传输连接就彻底关闭了。 单方面主动关闭的 TCP 连接释放过程 相对 TCP 传输连接建立的三次握手过程来说,TCP 传输连接的释放过程要稍微复杂一些,需要经过四次握手过程。这是由 TCP 的半关闭(half-closed)特性造成的,因为这一个 TCP 连接是全双工(即数据在两个方向上能同时传递),每个方向必须单独进行关闭。TCP 传输连接关闭原则如下

基于 Flink 的典型 ETL 场景实现

余生颓废 提交于 2020-10-09 02:01:11
作者:买蓉 · 美团点评高级技术专家 整理:赵阳(Flink 社区志愿者) 校对:苗浩冲(Flink 社区志愿者) 本文将从数仓诞生的背景、数仓架构、离线与实时数仓的对比着手,综述数仓发展演进,然后分享基于 Flink 实现典型 ETL 场景的几个方案。 1.实时数仓的相关概述 1.1 实时数仓产生背景 我们先来回顾一下数据仓库的概念。 数据仓库的概念是于90年代由 Bill Inmon 提出, 当时的背景是传统的 OLTP 数据库无法很好的支持长周期分析决策场景,所以数据仓库概念的4个核心点,我们要结合着 OLTP 数据库当时的状态来对比理解。 面向主题的:数据仓库的数据组织方式与 OLTP 面向事务处理不同。因为数据仓库是面向分析决策的,所以数据经常按分析场景或者是分析对象等主题形式来组织。 集成的:对于数据仓库来说,经常需要去集合多个分散的、异构的数据源,做一些数据清洗等 ETL 处理,整合成一块数据仓库,OLTP 则不需要做类似的集成操作。 相对稳定的:OLTP 数据库一般都是面向业务的,它主要的作用是把当前的业务状态精准的反映出来,所以 OLTP 数据库需要支持大量的增、删、改的操作。但是对于数据仓库来说,只要是入仓存下来的数据,一般使用场景都是查询,因此数据是相对稳定的。 反映历史变化:数据仓库是反映历史变化的数据集合,可以理解成它会将历史的一些数据的快照存下来。而对于

基于蜜獾家族MCF公链系统发行加密数字钱包教程

☆樱花仙子☆ 提交于 2020-10-07 11:05:46
基于蜜獾家族MCF公链系统发行加密数字钱包教程 ​区块链是互联网的第二个时代! 每一个企业都需要一个网站,一个公众号,一个企业自己创建的钱包,拥抱未来。 此教程手把手教你如何搭建自己企业的区块链加密钱包。 在这里插入图片描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201005112301472.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nmNzZG4ubmV0L01DRmFtaWx5,size_16,color_FFFFFF,t_70#pic_center 来源: oschina 链接: https://my.oschina.net/u/4367530/blog/4661414

面试官问:为什么 Java 线程没有 Running 状态?我懵了

孤人 提交于 2020-10-06 09:27:15
什么是 RUNNABLE? 与传统的ready状态的区别 与传统的running状态的区别 当I/O阻塞时 如何看待RUNNABLE状态? Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事。具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态: 什么是 RUNNABLE? 直接看它的 Javadoc 中的说明: 一个在 JVM 中执行的线程处于这一状态中。(A thread executing in the Java virtual machine is in this state.) 而传统的进(线)程状态一般划分如下: 注:这里的进程指早期的单线程进程,这里所谓进程状态实质就是线程状态。 那么 runnable 与图中的 ready 与 running 区别在哪呢? 与传统的ready状态的区别 更具体点,javadoc 中是这样说的: 处于 runnable 状态下的线程正在 Java 虚拟机中执行,但它可能正在等待来自于操作系统的其它资源,比如处理器。 A thread in the runnable state is executing in the Java virtual machine but it may be waiting forother resources from

DeFi Compound开发REST API

被刻印的时光 ゝ 提交于 2020-10-06 01:30:06
在这个教程中,我们将学习如何为DeFi协议Compound的智能合约创建一个可以通过HTTP访问的API开发接口,并学习如何使用Infura作为以太坊网络和应用之间的桥梁。 Compound是一个基于以太坊的数字资产借贷利率协议。 Infura 是以太坊和IPFS网络API提供商。下面是我们的Web API实现架构图: 用自己熟悉的语言学习 以太坊DApp开发 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、Compound协议的HTTP API设计 在创建访问以太坊智能合约的API之前,我们可以先实现一个可以处理客户端HTTP请求的web应用。 下面是API可能的访问端结点,这些API允许用户从Compound协议存入或赎回加密资产。你可以为Compound协议支持的以太坊ERC-20代币创建更多的访问端结点。 A1、钱包账户ETH余额API :返回钱包中的以太币数量。 GET /wallet-balance/eth/ A2、钱包账户cETH余额API :返回钱包中的cETH代币数量。 GET /wallet-balance/ceth/ A3、Compound协议余额API : 返回钱包已存入Compund协议的以太币数量。 GET /protocol-balance/eth/ A4

JVM系列之:JIT中的Virtual Call

被刻印的时光 ゝ 提交于 2020-10-05 06:47:52
简介 什么是Virtual Call?Virtual Call在java中的实现是怎么样的?Virtual Call在JIT中有没有优化? 所有的答案看完这篇文章就明白了。 Virtual Call和它的本质 有用过PrintAssembly的朋友,可能会在反编译的汇编代码中发现有些方法调用的说明是invokevirtual,实际上这个invokevirtual就是Virtual Call。 Virtual Call是什么呢? 面向对象的编程语言基本上都支持方法的重写,我们考虑下面的情况: private static class CustObj { public void methodCall() { if(System.currentTimeMillis()== 0){ System.out.println("CustObj is very good!"); } } } private static class CustObj2 extends CustObj { public final void methodCall() { if(System.currentTimeMillis()== 0){ System.out.println("CustObj2 is very good!"); } } } 我们定义了两个类,CustObj是父类CustObj2是子类