CTO来分享:用极度公开透明,打造清新的内部研发组织架构

管理之痛

当你的研发团队只有几个人时,作为管理者,你不会考虑这么多。凡事直接安排就好,不需要工具、不需要流程、不需要指标。直接干就对了!

但当你的研发团队增长到几十个人甚至上百人时,如果前期一直不注重流程规范、工具使用和疏于管理和把控,以往的随意和凭感觉的做法,就会容易让快速扩张的团队陷入混乱。当业务快速增长、新人大量加入、旧的研发流程还不健全时,就会明显感知到管理上的乏力、团队士气低下和来自业务部门的催促不满压力。

尤其,当你作为技术管理者,也是企业经营者时,这种痛苦和担忧、焦虑就越发明显。这就是技术管理者,都会面临或已经遇到过的痛点问题。

极度公开透明

最近,和一位大佬在沟通时,他突然在开会前和我提到要有“极度公开透明”的原则。事后,我意识到,结合这么多年的技术管理经验,“极度公开透明”和XP编程提倡的“沟通、简单、反馈、尊重和勇气”、和敏捷开发的“畅所欲言、实事求是”、以及DDD领域驱动设计中的大声地“通用语言”是如出一辙的。又如同,钉钉宜搭在企业组织协同上所主张的“共同看见”。

我觉得,结合“极度公开透明”这个原则作为出发点,作为指导我们提升内部研发架构的思想之一,是很有参考、借鉴和落地的价值。

原则、思想和经验,对于几个人的研发团队,它是一个虚的东西,因为你还不需要它;创业团队更需要的是先活下去、能赚钱。而对于几十个人的研发团队,尤其是当前正在经历管理之痛的团队,就需要获得一些有价值的经验指导来改善当下团队的开发效率和交付质量。

打个比喻,还没买车的时候,别人和你怎么讲开车的故事和技巧经验,你是没感觉的;当你刚提新车时,作为新手上路,你会对开车的注意事项很有需要;当你又是新手又是在高速路上时,具体往哪个方向走,这时如果有老师傅给你具体的经验和指引,就会非常有迫切和意义。

故而,“极度公开透明”的原则,对于正处于混乱、管理之痛的技术管理者和研发团队,我相信它会有参考价值。

团队协同透明

在研发过程中,我们应当首先树立一个共同的关注点,这个关注要清晰、统一且可执行。同时,能满足开发者个人高效工作、团队成员之间进行流转协作,以及管理者进行管控和计划,甚至能和客户、业务部门一起,共同参与、共同看见。

经过多年的总结,我发现这个共同关注点,就是:项目。项目是一个集合,是一个共同的目标,是对整体负责的发力点。

技术管理者和项目经理,会重点关注项目对,项目最终结果负责。其他项目成员,例如:开发人员、测试人员、产品经理、设计师等,则会参与项目其中,进行具体事务和工作项的执行。细分拆解下去,就会有任务、工时、问题、Bug、需求这些常见的工作项。

因此,在YesDev这款协同工具中,我们重点以项目为全部研发团队的共同关注点,并且只关注当前激活的项目、关注和自己相关的项目、关注最新有发生变化和进展的项目。

对于每一个项目,在项目概览一栏中,团队可以共同看见当前项目的整体进度,例如:需求进度、任务进度、工时进度、Bug修复进度,以及项目的更新动态情况。这些简明的指标,给研发项目提供了当前最为核心的几个日常指标。

再进一步,为了让团队拥有透明的协同,最大限度消除信息不对等的情况,YesDev充分发挥了“信息找人”的精神,在项目进行了多功能协作和智能聚合。除了看到当前和自己有关的项目外,YesDev联合周报助手、测试计划助手、PRD助手、文档助手、管理助手等,为每个不同岗位、不同角色和团队成员都提供了贴切的、及时、恰到好处的协助。

简而言之,以项目为核心、共同的关注点,向下拆解细分需求、任务、Bug等可执行、可量化的工作项;向上形成内部研发团队当前最值得关注和协同的项目集;横向再扩展延伸研发协同过程中可能需要用到的文档、测试计划、周报总结等。

那么:

作为技术管理者和项目,你应该关注最终的项目进度、交付情况,关注当前产品迭代升级以及技术侧需求和其他一系列的专项的协调和安排,在更高的公司目标和层面,以项目为单元,进行统筹、计划和推进。

作为项目参与人员,你应该关注自己在每个项目的待办工作项,看一下,我分别在每个项目有多少个待开发的需求、有多少个待修复的bug、有多少个待完成的任务。这些都是实实在在需要执行的工作。

最后,作为项目的干系人,你可能需要了解掌握项目的最新动态。那么,相比以前老是问技术、问开发、问技术管理者,这时你可以直接查看YesDev协同工具,就能同步及时掌握项目的最新、最真实的动态。当然,工具以外的未知信息,还需要在内部多充分沟通和交流。

工作透明

现如今,就垂直领域的研发协同工具来说,可谓是“百家齐放,百家争鸣”。从国外的Jira、Trello,到国内大厂的腾讯TAPD、阿里Teambition,各厂商提供的PingCode、Ones、ezOne、Tower等,还有禅道、Readmine等开源软件,还有企业内部自主研发的项目管理系统。

讲真的,我们现在不缺协同工具,但我们缺少能正确使用这些工具的人员、团队和管理者。

以YesDev的任务工时为例,我们应该知道在什么时候,应该使用什么工具和看什么数据。为了让工作极度透明,我们需要关注以下几个最为常用的工作场景。

每个人,每位成员,每个员工,都应该清晰地知道,自己的这一天、这一周需要做什么工作。只有实习生和刚毕业的学生,才会被动地每天做一些工作。有2年及以上工作经验的人员,都应该让他们自己填写、登记和做好他自己这一周的工作计划。不能都是空空如此,不能一个任务做40个小时。只有他本人排好了自己的工作计划,知道了每个需求做多久,才有后面更顺畅的协作。

每一次在进行需求工作量评估和排期时,我都会重复再三地和技术开发人员讲,你们在进行需求排期时,不能只关注自己的时间,还要结合前后端联调、开发提测的时间一起进行综合评估。在上面有了每个人真实的任务工时评估后,接下来就可以让需求的前端后端开发人员,一起再结合联调的时间,进行协商和排期。对于需求交付和整体的项目交付,只看单个任务的具体时间没有太大意义,只有组合联动起来,才有价值。这时,在任务工时登记,就可以根据团队的需要,查看对应工作组的成员每日任务。这样,对于大家每个人的工作安排,都是透明的。

有了人员各自的任务,也有了联调确认后的工作计划排期,在期间当需要开站会或协调人员之间的任务分配时,我们可以使用熟悉的敏捷任务看板,也可以使用YesDev专门提供的任务对比。

敏捷任务看板,既可以按人员,也可以按项目、按任务类型,快速切换我们所关注的维度。

而任务对比,则是技术管理者,站在协调角度进行成员之间的任务分配的调配。谁忙谁不忙,共同承担或主动承担。

从成员自身出发,到成员之间的联调,再到技术管理员的任务调配,继续再向上一个台阶,就是项目经理或者项目负责人,需要从整体上把控项目的进度和计划。

这时,在每个项目中,我们就可以用到项目排期表、项目燃烧图和项目甘特图。

项目排期表,可以在人员或需求的维度,告诉我们汇总和拆解的项目工时进度,方便知道当前项目的开发压力在谁那里,可以知道谁的开发进度最为落后。

项目燃尽图,可以告诉我们,项目的整体进度落后多少,以及未来的进度走势如何。

而项目甘特图,不仅在时间合理安排和人员工作量安排上,都有很大的参考指导意义。例如在春节过年前后的工作安排,或者需要进行冲刺交付阶段,结合项目甘特图,我们可以“知未来”,看一下每一天、每个人的时间安排是否合理。合理很重要,不要想着一天一个人能干40个小时的活,那是不可能的。谁能告诉我们,排期明显不合理?甘特图。

到了每周五或每月底,我们再从YesDev导出各成员的工作任务,就能更清楚地回顾和知道,他们每个人这段时间的主要工作内容了。对于管理者,可以形成闭环管理。对于成员,他们也可以快速编写每周的周报。

这是从任务工时,核心以时间为主线,介绍了结合工具、团队,可以怎么进行协作、协同和管理。管理者和开发人员之间更好的搭配是:你懂管理,我能执行。

信息透明

协同不同审批。协同是一个开放、透明的过程。在研发团队内,需要彼此信任、共享信息。

我需要知道你在做什么,以及将要做什么。以前做技术管理时,包括现在也是,经常都要问开发人员,XXX事情,进度怎么样了?半天了,他回复了:“还没做”。吐血。

为了让更多的技术管理者,不要经历我的痛苦,我们特意在YesDev进行了深层次、人性化的产品设计。

曾经我到佛山某一传统的工厂去洽谈一个ERP项目,那里的老板和我们说:“根据我多年的经验,现在的流水线每日的产能是远不止这个数和。但我不知道怎么改善它,因为我们没有数据的支持。所以需要引入ERP,让产能可视化”。广告主也有类似的话:“我知道我的钱有一半是浪费的,但不知道浪费在哪”。研发团队的成员,其实也是需要指点的。但需要的是指点,而不是指指点点。那通过什么方式,管理者和开发人员之间,都能有一个透明的信息,一起来对研发工作进行共同探讨和提升呢?

我看来,脑图是一个好工具。

一方面,人员方面,技术管理者,可以留意和对比每个成员的工作脑图。除了任务工时,还有需求、bug、项目等。哪些是积压的?哪些是还没来得及做的?哪些是重点花时间、花精力攻克的?了解情况,再从旁协助,让团队成员有更加清晰的发力点。

另一方面,在项目内部混乱时,借助项目脑图、需求脑图,再纵向和横向,静下心来,和团队一起分析下,当前项目和团队遇到的问题。回过头看一下,是沟通没清楚,还是需求有误解,还是其他事项耽误了?

在对新项目,或复杂核心的功能进行测试时,维护好测试计划后,通过测试计划的脑图,在脑海中重新梳理和规划一下用例的覆盖面和执行情况,以及对应的bug修复进度。

这些脑图,不仅自己可以查看,还可以共享,也可以在项目评审、需求评审、测试评审时,结合使用。

通知反馈透明

当产品经理提出一个新需求时,要想想,这个需求,开发人员知道了吗?老板知道了?业务方知道了吗?当这个需求进行测试或上线时,产品经理知道了吗,项目经理知道了吗?当这个需求中途有变更、优先级有调整,开发人员知道了吗?

如果每一次信息和调整和改动,都要人工去知会和通知,这样的组织效率,可想而知,是低下的、是不对等的,是不透明的。不是我们不想让反馈透明,是实在没时间,忙不过来。

那怎么办?

让你的协同工具,结合群通知和邮件通知,是一个满足日常办公和沟通最为直接的方式。

在实时群通知方面,你可以在组织内部任意创建自己的群。通过机器人助手,接收和这一个群有关的项目通知和消息。

另一方面,可以针对员工,同步接收更加精准的工作指派和流转重要通知。

研发透明

很多研发团队,正经历项目泥潭、正在被历史问题困扰、正在被当下的混乱内耗。原因在哪里?本质又是什么呢?

正如《风吹半夏》里面的赵总在餐桌上提到:“买了一台小轿车,都不会开,怎么办?难道4个人推送走吗?”。我们不缺协同工具,但缺少能正确使用的人员、团队和管理者。又或许,我们不缺会正确使用的人员,但缺少有经验、能指导、能负责的管理者。

结合流程、团队和工具,让研发透明,拒绝黑洞。

本文转载于网络 如有侵权请联系删除

相关文章

  • Linux IPTables:如何添加防火墙规则(使用允许 SSH 示例)

    本文介绍了如何使用“iptables-A”命令添加iptables防火墙规则。“-A”用于追加。如果它让你更容易记住“-A”作为添加规则(而不是附加规则),那就没问题了。但是,请记住,“-A”在链的末尾添加了规则。同样,记住-A在末尾添加规则非常重要。 通常,最后一条规则是丢弃所有数据包。如果您已经有一个丢弃所有数据包的规则,并且如果您尝试在命令行中使用“-A”来创建新规则,您最终会在当前的“丢弃所有数据包”规则之后添加新规则,这将使您的新规则几乎毫无用处。一旦您掌握了iptables,并且当您在生产中实现它时,您应该使用shell脚本,您可以在其中使用-A命令添加所有规则。在那个shell脚本中,你的最后一行应该总是“丢弃所有数据包”规则。当您想要添加任何新规则时,请修改该shell脚本并将您的新规则添加到“丢弃所有数据包”规则之上。句法:iptables-Achainfirewall-rule复制-A链-指定应附加规则的链。例如,对传入数据包使用INPUT链,对传出数据包使用OUTPUT。firewall-rule–各种参数构成防火墙规则。如果您不知道链是什么意思,最好先阅读ip

  • Acrel5000能耗监测系统在肥西中学的应用

    【摘要】:针对大型公共建筑能耗高且能源管理不合理的问题,利用计算机网络技术、通讯技术、计量控制技术等信息化技术,实现能源资源分类分项计量和能源资源运行监管功能,清晰描述建筑内总的用能现状;实时监测各供电回路的电压、电流和功率等电力参数,识别有用负荷与无效能耗,从而可通过技术或行为节能方式,实现建筑的节能。【关键词】:办公建筑;大型公共建筑;节能;能耗;绿色建筑;0  引言  随着社会的发展,能源的消耗量也在迅速增长,特别是建筑能耗的增长特别迅速,已经成为除工业、交通外的第三大能源消耗。按照当前建筑业的发展趋势,在若干年后社会的能源产出将无法满足能源的需求,所以减小能源的消耗量是一个十分重要的且需要尽早解决的问题。在建筑能耗中,大型公共建筑的能源消耗量占据了很大的份额,虽然其总能耗量远不如住宅建筑消耗量大,但是单位面积的能耗消耗量十分巨大,所以大型公共建筑的节能工作具有很大的潜力。大型公共建筑能耗监测系统的建设使得人们可以充分了解大型公共建筑的能耗使用情况,为提出节能减排政策与决策奠定基础,随着中国城市化进程的推进、经济的发展,我国建筑能耗总量呈持续增长的态势,并且增长速度有越来越快的趋

  • Mysql

    安装#启动mysql sudosystemctlstartmysql #查看mysql状态 sudosystemctlstatusmysql #查看mysql配置 vim/etc/mysql/mariadb.conf.d/50-server.cnf #查看系统中的mysql进程 ps-aux|grep"mysql" ps-ef|grepmysql #杀掉mysql进程提示bash:kill:(4385)-Operationnotpermitted,因为没有权限,要使用sudo sudokill-15复制问题:访问数据库报错ERROR1524(HY000):Plugin‘unix_socket’isnotloaded 解决:在配置文件[mysqld]下增加plugin-load-add=auth_socket.so,重启服务。 安全管理管理用户查看用户创建用户spaceack,密码为password123为用户授予数据库权限连接数据库管理系统mysql-uroot-p-hlocalhost-P3306查看所有数据库 SHOWDATABASES;使用数据库USEm

  • 这20个Docker Command,有几个是你会的?

    安装完成docker容器服务之后,需要了解如何操作它?在shell命令行下直接输入docker就可以查看帮助信息,如下。1、dockerstart/stop/restart/kill启动/停止/重启/杀掉容器实例操作如下:[root@docker~]#dockerstartmyweb [root@docker~]#dockerstopmyweb [root@docker~]#dockerrestartmyweb [root@docker~]#dockerkill-skillmyweb 参数-s#向容器发送信号 复制这些命令不做过多解释2、dockerrun创建并启动一个新的容器常用参数如下:-d#后台运行容器,并返回容器ID -i#以交互式模式运行容器,常与-t参数同时使用 -t#给容器重新分配一个伪终端,常与-i参数同时使用 --name#给容器指定一个名称 -m#指定容器使用内存的最大值 --net#指定容器使用的网络类型 --link#链接到另一个容器实例操作如下:[root@docker~]#dockerrun-d--namenginxnginx:latest #后台启动并运行

  • 使用kubeadm搭建高可用k8s v1.16.3集群

    1、部署环境说明本文通过kubeadm搭建一个高可用的k8s集群,kubeadm可以帮助我们快速的搭建k8s集群,高可用主要体现在对master节点组件及etcd存储的高可用,文中使用到的服务器ip及角色对应如下:主机名称ip地址角色-192.168.9.80虚拟ip(vip)k8s-master-01192.168.9.81masterK8s-master-02192.168.9.82masterK8s-master-03192.168.9.83masterk8s-node-01192.168.9.84nodeK8s-node-02192.168.9.85nodeK8s-node-03192.168.9.79node2、集群架构及部署准备工作2.1、集群架构说明前面提到高可用主要体现在master相关组件及etcd,master中apiserver是集群的入口,搭建三个master通过keepalived提供一个vip实现高可用,并且添加haproxy来为apiserver提供反向代理的作用,这样来自haproxy的所有请求都将轮询转发到后端的master节点上。如果仅仅使用keep

  • 大数据智能洞察、知识图谱、数据可视化技术

    智能五大技术方向知识工程面向垂直行业,结合专家知识、多源异构的碎片化知识和组织智能,引领从大数据分析到大知识工程进而大智慧系统的研发和落地应用。构建行业知识图谱,实现智能推理与知识服务,推进多机多人多任务的人机协同,开发新一代知识工程的技术体系和系统平台,服务搜索、推荐、规划、对话机器人等领域的情景感知和人机协同。信息检索围绕自然语言处理、自然语言理解、知识图谱工具、智能问答、智能检索等领域进行技术研究与应用。建设基于主动学习与迁移学习的自然语言处理平台,重点投入自然语言理解、非结构化数据的实体与关系提取,半自动化及自动化知识抽取等方向,构建知识图谱工具,提供智能问答、智能检索等上层应用。深度学习专注于以深度学习为核心的技术研发,针对垂直行业,支撑集团的智能餐饮、智能零售、供应链物流、智能营销、智能工业等业务领域。分为三个小组: 计算机视觉组:检测分割、目标跟踪、图像分类、动作识别、场景识别、身份识别等算法模型与工具; 语音技术组:语音识别、语音合成、声纹识别、音频搜索;高性能计算组:深度学习算法模型在单机(CPU/GPU/FPGA/ASIC)或集群上的并行化、高性能实现与移植,为计算

  • linux下java程序占用CPU和内存过高排错处理方案

    1:通过jps命令查看所有进程pid。2:使用top-ppid针对你所要查的pid查看这个进程的CPU和内存以及负载情况如图:使用top-ppid -H 查看针对每一个线程占用CPU情况进行查询 如果你发现某一个PID占用的CPU过高,就拿到这个PID转换成16进制例如pid为12760转化成16进制31D8,大写换成小写 jstack 22821|grep -A 10 0x31d8针对你的每个线程拿出占用CPU的堆栈信息,你可以根据这个去查找CPU的占用如果你的内存占用较高,我比较喜欢使用jmap命令 jmap-histo:live9652|head-n100 jmap-heap12733

  • “萨德”的死敌竟是无人机?

    近期“萨德”体系入韩事情时至今日照旧波涛四起,一开端的强烈抗议深表轻视如同并没有啥作用,现在各路网友开端评论如何反制“萨德”以求威胁最小化。事实上网路频传的反辐射导弹或许巡航导弹都是不错的手法,不过报价不免高了一些,而且在面临维护萨德体系的爱国者防空导弹等中低空防护体系时较为费劲。“萨德”体系的中心功能主要靠其X波段固体有源相控阵雷达完成,其配套的AN/TPY-2雷达将对中国构成严重威胁。由于该雷达探测距离达2000公里,意味中国境内大部分陆空军演都无所遁形,而战机出动的架次与数量等,也都会被观测到。更致命的,就是中国境内的飞弹发射活动,都会被监测到,彷彿在你家里装了一台监控器。假如该雷达被炸毁,不仅是敌方物资的巨大损失,也是全部萨德体系功用环节的完全损坏,功能优越的阻拦弹会刹那间变成瞎子。中国面对如此重大的威胁,势必要在战时采取反制措施。而因应“萨德”的硬杀伤方式有好几种,其中就包括反辐射无人机的攻击。若说“萨德”的雷达是整套系统的眼睛,那么反辐射无人机的作用,就是打瞎敌人的眼睛。珠海航展上面,中航工业相关单位展出了国产反辐射无人机,比较特别的是这种反辐射无人机可以无人机可以装在集装

  • Java FtpClient 实现文件上传服务

    一、Ubuntu安装Vsftpd服务   1、安装    sudoapt-getinstallvsftpd复制   2、添加用户(uftp)sudouseradd-d/home/uftp-s/bin/bashuftp复制   3、设置用户密码sudouseradd-d/home/uftp-s/bin/bashuftp复制   4、创建用户目录sudomkdir/home/uftp复制   5、设置用户密码sudopasswduftp复制   6、设置/etc/vsftpd.conf配置文件sudovim/etc/vsftpd.conf复制    a、修改上传文件的权限:      这里会有一个问题,默认情况下的默认权限是077也就是对应Linux中的700计算规则是linux的权限777-local_umask      如果没有设置local_umask文件权限,会导致上传之后的文件,我们无法通过服务器访问(缺少权限)     b、在配置文件末尾添加:userlist_deny=NO userlist_enable=YES userlist_file=/etc/allowed_use

  • 编程是枯燥的,除非……

    作者码农网–小峰译文链接:http://www.codeceo.com/article/coding-is-boring-unless.html原文链接:https://medium.com/m/global-identity?redirectUrl=https://blog.enki.com/coding-is-boring-unless-4e496720d664作为一个开发者,我干同一份工作的时间不会超过两年。每一份新工作都是一次职业的飞跃,而且在我们这个行业中,高频跳槽本来就很常见。但是我前任,前前任,前前前任,前前前…任雇主对于我的辞职并不开心。有些甚至试图挽留我,但是我已经厌倦了,我真心无法继续留下来了。(免责声明:我很幸运地生活在程序员供不应求的地方,不过后来我发现换工作并不总是一个很好的选择!)。我现在是Enki的联合创始人和CTO。我负责工程文化。我的部分工作是要确保我们的开发人员永远不会像我过去那样觉得工作无聊枯燥。在我的团队的共同努力下,我们制定了防止程序员感到无聊枯燥的策略,并应用到公司里。由于这一策略到目前为止一直运作良好,所以在这里我想和大家一起分享。在Enk

  • 设计模式学习(十五):策略模式

    设计模式学习(十五):策略模式 作者:Grey 原文地址: 博客园:设计模式学习(十五):策略模式 CSDN:设计模式学习(十五):策略模式 策略模式 策略模式是一种行为型模式,它定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。 以实例来说明 假设我们有一个猫类,这个类里面有体重和身高这两个属性,给你一个猫的集合,然后需要你按猫的体重从小到大排序 主要思路 我们可以把体重从小到大这个看成是一个策略,后续可能衍生其他的策略,比如:按身高从高到低,体重从小到大,体重一样的身高从高到低…… 以「身高从低到高」排序这个策略为例 publicclassCatSortStrategyimplementsComparator<Cat>{ @Override publicintcompare(Cato1,Cato2){ returno1.getHeight()-o2.getHeight(); } } 复制 假设我们定义猫排序的方法是sort(),那么这个方法必然需要传入一个排序策略的参数(否则我怎么知道要怎么排序猫?)所以定义的sort方法可以是: publicclass

  • 若依(ruoyi)代码生成树表结构的那些坑

    若依(RuoYI)代码生成树表结构的那些坑 相信许多做后端开发的同学,一定用过若依这款框架,这款框架易上手,适合用来做后台管理系统,但是其中也存在一些坑,稍不注意就会中招(大佬可以忽略...) 今天,我们说的是若依的代码生成:树结构表。话不多说,直接看图说话: 1.项目正常运行,成功登录之后,按照图上步骤操作。 2.基本信息、字段信息设置依照自己的项目需求进行设置,这里主要介绍生成信息的设置。 友情提示:其他信息设置的三个字段,必须与数据表中一一对应(可以参考我的截图) 3.将生成的代码放入项目中运行,会出现报错,别急往下看 a.修改实体类或重新new一个Vo类,但必须有下图中的字段属性: 无需继承TreeEntity类: b.修改Mapper中的“selectProductCategoryById”sql语句 c.修改Controller层代码: add方法: update方法: 其它生成的代码无需改动,直接使用即可,附一张展示界面: PS(建表sql): 查看代码 CREATETABLE`product_category`( `category_id`char(

  • golang中io包用法(二)

    本文转自https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.1.md,并在此基础上进行修改. io包为I/O原语提供了基本的接口。它主要包装了这些原语的已有实现。 由于这些接口和原语以不同的实现包装了低级操作,因此除非另行通知,否则客户端不应假定它们对于并行执行是安全的。 在io包中最重要的是两个接口:Reader和Writer接口。本章所提到的各种IO包,都跟这两个接口有关,也就是说,只要实现了这两个接口,它就有了IO的功能。  Reader接口 Reader接口的定义如下: typeReaderinterface{ Read(p[]byte)(nint,errerror) }复制 官方文档中关于该接口方法的说明: //Read将len(p)个字节读取到p中。它返回读取的字节数n(0<=n<=len(p))以及任何遇到的错误。即使Read返回的n<len(p),它也会在调用过程中使用p的全部作为暂存空间。若

  • Google果然有收购眼光:其收购的SCHAFT机器人团队在2013 DARPA挑战赛上获最高分

      苑伶      据ibtimes报道,2013DARPA机器人挑战赛(DRC)上,有16支团队为进入决赛进行了8个项目的比拼,最后Google收购的日本SCHAFT团队凭其双足机器人得到了最高分27分,位列最后的NASAValkyrie机器人则一分未得。 这次的比赛在佛罗里达州的HomesteadMiamiSpeedway举行,整个赛场环境都被布置成重灾区的形貌,据DARPA表示,这次挑战赛的主要目标就是开发出可以在险恶环境下行走的机器人,并且可以抵抗突发灾难。因此具体的竞赛项目包括了驾驶汽车、行走在废墟上、移除障碍物、开门并通过该道门、爬梯、使用工具砸碎混凝土板、连接救火水管到消防栓上并打开闸门、关闭指定阀门8个任务。 每一项任务顺利完成后机器人团队就可以获得3分的基础得分,如果比赛过程中不需要人工参与调解,则可再获得1分额外奖励,因此满分为32分。而SCHAFT的重216磅、高4.8英尺的HRP-2机器人则在一个周末的比赛中获得了27分,在爬梯、废墟行走、开门和移除障碍物上表现出色,远远超过了只获得第二名(20

  • 织梦中flag和noflag的区别,noflag=&#39;c&#39;是什么意思?

    flag标签是用来限定文章的自定义属性,和noflag标签其实有相同的作用两者的区别在于:flag=‘c’表示所有包含‘c’(推荐)属性的文章noflag=‘c’表示的则是不包含‘c'属性的文章 此外,flag标签的属性值还有以下几种: 头条[h] 特荐[a] 推荐[c] 幻灯[f] 滚动[s] 加粗[b] 图片[p] 跳转[j]示例:     {dede:arclistrow='5'titlelen='100'flag='c'}     示例解析:调用当前栏目下的5篇包含【推荐】属性的文章,文章标题最大长度为100个字符。在我们需要调用特定内容的时候可以将特定内容设置对应的flag属性,然后在特定的区域通过flag标签的不同属性来进行调用!

  • JFileChooser设置窗体打开路径

    JFileChooser作为Java中Swing的文件选取器,是放置在对话框中的轻量组件。通过该组件能够打开文件选取对话框,并记录所选文件,因此在软件开发过程中使用率很高。但是在使用过程中有些设置还是需要引起使用者的重视,尤其是如何设置文件选取对话框的路径。   最近在使用该组件进行软件开发过程中,但是如何合理的设置文件选取对话框默认打开路径还是给我造成了小小的困扰,最后通过查资料终于按照预期实现了相应的功能。今天就总结一下使用JFileChooser组件设置窗体默认打开路径的问题。   1、默认的打开路径为“我的文档” 如果仅使用JFileChooserfileChooser=newJFileChooser()定义一个文件选取器时,而且不进行其他设置,则文件选取器的默认打开目录就是“我的文档”。   2、修改默认打开路径  如果开发人员想设置文件选取器的默认目录,则可以使用JFileChooserfileChooser=newJFileChooser(newFile("想设置的默认目录路径"))   软件使用者在使用软件过程中,为了降

  • 洛谷 P1536 村村通

    题目描述 某市调查城镇交通状况,得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府"村村通工程"的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要相互之间可达即可)。请你计算出最少还需要建设多少条道路? 输入格式 输入包含若干组测试测试数据,每组测试数据的第一行给出两个用空格隔开的正整数,分别是城镇数目 nn 和道路数目 mm ;随后的 mm 行对应 mm 条道路,每行给出一对用空格隔开的正整数,分别是该条道路直接相连的两个城镇的编号。简单起见,城镇从 11 到 nn 编号。 注意:两个城市间可以有多条道路相通。 输出格式 对于每组数据,对应一行一个整数。表示最少还需要建设的道路数目。 输入输出样例 输入#1复制 42 13 43 33 12 13 23 52 12 35 9990 0 复制 输出#1复制 1 0 2 998代码复制 #include<bits/stdc++.h> usingnames

  • 习题2.3 数列求和-加强版 (模拟)

    习题2.3 数列求和-加强版 (20 分) 给定某数字A(1)以及非负整数N(0),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,1。 输入格式: 输入数字A与非负整数N。 输出格式: 输出其N项数列之和S的值。 输入样例: 13 复制 输出样例: 123题解:大数的加法模拟+找规律复制 1#include<iostream> 2#include<cstdio> 3#include<cstring> 4usingnamespacestd; 5constintmaxn=1e5+10; 6typedeflonglongll; 7llnum[maxn]; 8intmain() 9{ 10lla,n; 11cin>>a>>n; 12if(n==0) 13cout<<0<<endl; 14else 15{ 16llcnt=0; 17lltmp=0; 18for(lli=0;i<n;i++) 19{ 20tmp+=(n-i)*a; 2

  • Java反射

    java反射中的Proxy类的方法getProxyClass中的一个参数,我们可以看到源码如下 packagejava.lang.reflect; publicinterfaceInvocationHandler{ publicObjectinvoke(Objectproxy,Methodmethod,Object[]args) throwsThrowable; }复制 该方法中的参数proxy是生成的代理类对象,method是被代理类的某个方法,args是在该method中的参数。业务增强就是在这里 一个次动态代理的组成,一个接口,一个实现类,一个动态代理类。这个动态代理类是生成的,并且该类继承了Proxy并实现了接口。因为已经继承了Proxy所以被代理类一定需要一个接口,而不能是个抽象类。这个接口存在是为了提供给动态生成的代理类,需要实现哪些方法,方法的修饰符和参数类型都是什么。 一个完整的例子如下。 packagecom.easyjdbc.proxyobtain; importjava.lang.reflect.InvocationHandler; importjava

  • hbase实践之flush and compaction

    本文主要涉及flush流程,探讨flush流程过程中引入的问题并阐述2种解决策略,最后简要说明Flush执行策略。 对于Compaction,本文主要探讨Compaction要解决的本质问题以及由Compaction引入的问题。面对Compaction带来的双刃剑,如何根据自己的业务模型合理的执行Compaciton,不同的场景可以采用不同的Compaction策略以及如何选择待合并文件。 Flush 1.Flush流程(HBase1.*) MemStore中的数据,达到一定的阈值,被Flush成HDFS中的HFile文件。 2.由Flush流程而引入的问题 随着Flush次数的不断增多,HFile的文件数量也会不断增多,那这会带来什么影响? Hontonworks测试过的随着HFile的数量的不断增多对读取时延带来的影响如上图所示,随着HFile文件增多,读取延时增大。因为查询一条记录需要读取1~N个HFile文件,文件越多,N越大,读取时间开销越大。 针对上述问题,可以减少HFile文件的数量减少读取延时,有2种解决思路: 通过compation减少HFile 在内存中执行

  • TCP/IP四层模型和OSI七层模型

    TCP/IP四层模型 复制TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。复制TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 网际层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络访问层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、SerialLine等)来传送数据。复制 复制OSI七层模型复制OSI(OpenSystemInterconnection,开放系统

相关推荐

推荐阅读