重构

2016-Structural Deep Network Embedding

那年仲夏 提交于 2020-01-07 14:39:24
文章目录 ABSTRACT 1. INTRODUCTION 2. RELATED WORK 2.1 Deep Neural Network 2.2 Network Embedding 3. STRUCTURAL DEEP NETWORK EMBEDDING 3.1 Problem Definition 3.2 The Model 3.2.1 Framework 3.2.2 Loss Functions 3.2.3 Optimization 3.3 Analysis and Discussions 4. EXPERIMENTS 4.1 Datasets 4.2 Baseline Algorithms 4.3 Evaluation Metrics 4.4 Parameter Settings 4.5 Experiment Results 4.5.1 Network Reconstruction 4.5.2 Multi-label Classification 4.5.3 Link Prediction 4.5.4 Visualization 4.6 Parameter Sensitivity 5. CONCLUSIONS ABSTRACT    网络嵌入是学习网络中顶点的低维表示的一种重要方法,旨在捕获和保留网络结构。几乎所有现有的网络嵌入方法都采用浅层模型。但是

从此重构

我与影子孤独终老i 提交于 2020-01-05 06:04:38
设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功, 软件 开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象 编程 、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层 技术 上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世

机房重构---我们“重构”出了什么?

浪尽此生 提交于 2020-01-05 06:04:30
机房重构立即就要结束了,在这“第三个”系统结束的时候,有必要思考一下我们重构的目的了。 或许有人说,还有什么目的呀,不就是编程语言换成了.Net,做出来,调完bug,能执行就得了呗。这么浮夸的日子里,还叫什么劲啊? 对于有这样的想法的人,我必须道一声:您(白)辛苦了 ! 不管做什么事,没有一点总结性思考是无法进步的。 我以下的一些重构论述或者说反思性总结也存在很多不足,希望大家多多指正,在此先致谢! 本文将从五个方面论述一下这次的重构系统,各自是系统架构、UML图指导、设计模式应用、数据处理和面向对象。 首先, 系统架构方面 。 在这次重构中,我们都运用了三层架构,目的是减少耦合,提高系统的重用性和可维护性等各种目的。在设计中,和第一次机房的基本面向过程编程相比,我们确实也深刻的体会到了有架构的方便和易维护。 通过加入外观、SqlHelper、配置文件等基本辅助模块或工具,我们再次体会到了独立的封装给我们带来的巨大便利,从解耦到封装,就看到了面向对象。 其次, UML图和文档的指导 。这次重点是放在了UML图上,用例图、包图、类图和时序图是关键。 包与”三层“、类图与三层中D层和B层的设计(不同的分类标准,如按数据库表还是功能进行B层设计)、时序图对功能运行过程的指导等都是密不可分,须要我们必须提前细致分析的。当然,这些都是建立在需求分析和用例设计之上的。 再次, 设计模式方面 。

从此重构

耗尽温柔 提交于 2020-01-05 06:04:17
从此重构 设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功,软件开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象编程、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层技术上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世

你的代码需要重构吗?

自闭症网瘾萝莉.ら 提交于 2020-01-02 15:35:35
  当你学会用挑剔的眼光审视自己所写的代码时,将一段代码反复读上五六遍,每次都会找到新的问题。    重构,也就是对既有代码设计的改善,要求你首先知道什么样的代码需要改善。   最常见的设计问题都出自这样的代码:   *重复。   *不清晰。   *复杂。   这些大原则当然对发现代码中何处需要改进有帮助。但是,许多程序员会感到这个列表太过含糊;他们不知道如何认出外表上不同代码重复,把握什么样的代码表达不算清晰,更难辨别简单代码和复杂代码。   Fowler和Beck为我们列出了存在代码坏味的12种情况。   1、重复代码。   2、代码过长。将一个厂方法分解为几个小方法,不但利于理解,而且能发现通常有很多方式能够使它们共享逻辑。   3、条件逻辑太复杂。   4、基本类型迷恋。   5、不恰当的暴露。   6、解决方案蔓延。   如果许多类都有用来完成某些职责的代码或数据,我们就说存在解决方案蔓延。这种坏味通常由于在系统中快速添加特性,却没有花费足够时间来简化和改进设计以适应新特性而造成的。   7、异曲同工的类。   如果发现有两个类很相似,通常可以将它们重构为共享一个公共的接口。   8、冗赘类。   9、类过大。一个过大的类往往存在维护难、理解难的等问题,那就应该把它分为几个小类。   10、分支语句。   switch(if...else if...)本身并没有问题

重构:以Java POI 导出EXCEL为例2

本秂侑毒 提交于 2020-01-01 02:29:46
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数。这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等。 上一篇博文地址: http://www.cnblogs.com/fixzd/p/8982739.html 正文 我们先来看看上一篇博文重构后的代码,还是有点长 public class ExportExcel<T> { private HSSFWorkbook workbook; public ExportExcel() { this(new HSSFWorkbook()); } public ExportExcel(HSSFWorkbook workbook) { this.workbook = workbook; } public void exportExcel(Collection<T> dataset, OutputStream out) { exportExcel("测试POI导出EXCEL文档", null, dataset, out, "yyyy-MM-dd"); } public void exportExcel(String[] headers, Collection<T> dataset, OutputStream out) { exportExcel("测试POI导出EXCEL文档",

转 管理技术债

风流意气都作罢 提交于 2019-12-29 18:32:12
技术债被广泛视为一件坏事,它应该避免或者要尽快进行偿付。 你应该这样做吗?我们并不这么认为。首先,我们对比了技术债与财务债,阐述了它与战略设计(Strategic Design)的相似性以及它的利益相关者。然后,我们列出了识别代码中技术债的各种可行的方式,这可能是你所关心的。 最后,我们描述了项目中可以偿还技术债的不同方式,并且阐述了当你在决定要偿还债务、转移债务或者只是支付利息哪个方案更好时,必须要考虑的因素。 什么是技术债 开发人员在实现新特性的时候,有两种不同的方式:一种是快速且混乱地完成,这会使得将来的变化很困难。另一种是整洁(clean)和明智的方案,它需要更长的时间来实现但是将来的变化会更为容易(亦可参见 Martin Fowler )。不过,如果同一个特性以较为凌乱的方式实现时,能够具有相同的功能和较低的成本,那么项目的赞助者为什么会接受一个较高成本的整洁实现呢?他们为什么会花费金钱在自动化测试覆盖率上呢?测试不是什么特性,因此不会交付业务价值! 如果凌乱的代码和没有测试的代码能够交付期望的业务价值,对于客户来说也会运行得很好,但是这将会导致难以控制的代码基、极其专门化的开发人员并最终形成缺乏灵活性的软件产品。大量的混乱代码有可能会使得整个工程部门 停滞(stand-still) 。 “技术债”的比喻说法——与“财务债”的相似和不同 1992年

(深度好文)重构CMDB,避免运维之耻

大兔子大兔子 提交于 2019-12-27 17:38:43
(深度好文)重构CMDB,避免运维之耻 CMDB,几乎是每个运维人都绕不过去的字眼,但又是很多运维人的痛,因为CMDB很少有成功的,因此我也把它称之为运维人的耻辱。 那么到底错在哪儿了?该如何去重构它? 今天我想从我的角度来和大家探讨一下业务失败的原因,基于失败再去看重构的逻辑,也许会成功。 从失败中寻找成功的逻辑,往往是最有效的,那我们就来逐一看看: 1、组织的设计问题 我必须把核心原因归结成这一条,很多公司把CMDB的建设责任放到基础设施建设部门,由他们主导承建。最后他们梳理出来的核心逻辑是面向基础设施资源的管理,你在他们的CMDB中都能看到如下菜单,AIX主机是哪些,中间件有哪些,大小机有哪些,Oracle有哪些等等,这些都是和公司的IT运维部门组织结构是一一对应的。组织的隔离是CMDB失败的核心原因! 这个里面能看到一些CMDB管理能力错位,拿两个例子来说一下: A、中间件。 一直搞不明白为什么中间件要作为一个单独的对象来管理,“皮之不存,毛将附焉”。没有主机,没有业务这个皮,哪来的中间件。把他单独拿出来管理,纯粹就是为了满足组织的一个管理视角。从来没人想过,这是主机上的一个资源对象,应该是一个附属资源,其实对他的信息管理和机器上的CPU、网卡一样。 B、进程对象,比如说数据库 这个是另外一种管理错位,是专业的管理平台应该去履行的管理职责,结果放到CMDB平台中了

代码重构

ⅰ亾dé卋堺 提交于 2019-12-27 14:14:42
代码重构在软件开发中经常遇见,重构的原因很多,例如:项目存在的时间久了,代码经过很多人维护已经变得千疮百孔,稍微改动一个地方就可能会出现莫名的bug,这是软件开发中难免的情况。除了维护成本高昂外,还有就是新的需求过来后,老的架构已经无法支撑或者支撑的成本非常高,这个时候就必须考虑重构。 代码重构本身技术上没有多大难度,但是什么时候应该重构,这个往往很难把握。经常会出现的情况是,没有早点重构,在业务需求和用户量不断飞涨时,老的系统已经不允许重构,因为这样做很可能导致系统不可用。所以就会出现干脆花更大的代价来重新做一套系统去替代老系统。这个看似比较完美的方案其实是有许多暗坑的。 首先,你需要有充足的开发资源来保证同时兼顾新老版本系统的开发。对于资源相对匮乏的公司来说,成本显然是第一要考虑的,因为新需求需要在两套版本上同时实现,而业务并不会因为技术的重构而停止发展。所以需要双倍的资源投入,但是在一些大公司这个情况倒不是问题,因为往往大公司不缺资源,team leader更需要新产品来提供KPI,所以有没有新产品产出是决策层非常看重的。是否需要新老版本并行开发需要根据当前的可用资源来考虑。 其次,开发了新系统需要将老的系统中所有的关键功能全部满足,否则老系统无法下线,新系统也不会受老用户喜爱。这样新系统的开发工作量会成倍增加,需要不断追赶老系统的进度。为了避免这种情况

记录一次项目重构

倖福魔咒の 提交于 2019-12-27 14:13:48
为什么要重构 框架陈旧 -> SpringBoot 微服务架构,更方便划分责任田 -> 云龙等套件,便于质量管控审查 -> Redis 提升加载和相应速度 代码组织结构混乱,扩展性,可读性,健壮性都很差 -> 优化框架设计,规范普通开发人员开发出高质量代码 -> 提升代码复用率。封装工具包; 函数只包含最小逻辑 等 -> 请对自己的代码加上注释 -> (还能修复一些无从下手的BUG ^-^) 数据库设计不合理/使用华为自研数据库 (如最佳实践 引用的文档复制了多份; 回帖的匿名信息不保存;) -> 抛弃Oracle, 拥抱Gauss(其实是Postgrel) -> 重新设计数据库 重构依然存在问题 重构没有计划 我们的SE在开发上有丰富的经验,但是性格比较(乖巧?),说话比较含糊,感觉思路不是十分明确 没有明确的计划,走一步看一步(如“大家先把xxx做了,然后再看”),导致效率极低 与甲方的思路不一致,如要求出类图,但是我们都觉得没什么用,>_> 过度设计 设计应当遵守规范,保持最简单,所有开发人员一看就能明白。 不要为了设计而设计,不要添加复杂的逻辑。 重构编码管理粗放 我以为重构的编码会严格的管控起来,事实是我想错了,根本没人在意... 还是风格各异的代码,几百行的函数比比皆是 (这样有什么意思,换一批人还是骂前人代码的) 两个月后: 整个项目重构基本完成,虽经历波折