精华内容
下载资源
问答
  • 对项目的了解几乎为零?如何快速上手一个新项目

    千次阅读 热门讨论 2015-07-21 10:46:50
    ITOO项目3.1截止昨天已经结束,3.1的这一个星期从刚开始对我负责的模块的一无所知,到后几天的算是“游 刃有余”吧,感触颇多。 3.1规定的是一个星期完成的,我是在3.1开始的前一天加入成绩管理系统的。刚上手的...

        ITOO项目3.1截止昨天已经结束,做3.1的这一个星期从刚开始对我负责的模块的一无所知,到后几天的算是“游

    刃有余”吧,感触颇多。

        3.1规定的是一个星期完成的,我是在3.1开始的前一天加入成绩管理系统的。刚上手的前两天可以说是那个纠结

    啊,只有未解决的问题,没有关于关于模块的文档,而且之前负责该模块的又不在,一时间我是“丈二的和尚,摸不

    着头脑”啊,于是下载下来学生端模块,开始顺着代码来一步一步往下顺。总共就7天,需要解决旧问题,完成新问

    题,而且软考有些天没有敲代码了。可能自己给自己设定了压力和害怕吧,所以前两天基本上都没什么实质性的进

    展,也是觉得自己刚接手,时间这么短,在怀疑自己是否能完成中度过的。到了第三天的时候突然发现没时间去怀疑

    了,有的只是抓紧时间向下走。于是开始了紧张有序的工作。

        下面说一下我是如何做的。

        1.先看了下原型图,可以知道负责的模块要做成什么样子

        2.看了下数据库,知道如何传递一些数据,传递哪些数据

        3.看了下框架。之前1.0做过,所以就是大概回忆了一下。顺着代码走一遍更有助于自己的回忆

        4.之后从SVN上宕下来3.0的系统,按照遗留问题的文档,开始了工作


        通过这七天,接手完善了一个新的模块,我也有一些简单的经验分享给大家,旨在能够让接手的人上手更容易些。

        1.代码注释

        代码注释一定要很详细,而且不是每个方法头注释一下就可以了,方法中的一些话也需要注释。比如,方法中调用

    了哪个模块的什么方法,作用是什么。

        2.参数命名

        命名一定要能够体现该字段的含义,再声明之前能够注释一个更好

        3.对于获取的参数进行解释

        比如js中用到了html页的一个标签的id,最后注明这是前台的哪个标签,以及有什么用,否则别人接手后,只能自

    己先看一下前台哪些页面用到了该js,之后再ctr+c,ctrl+f,ctrl+v。相当麻烦。

        4.交接前跟要交接人交代清楚,交接的人哪有模糊的地方及时问请吃了

        我遇到了一个尴尬的事情就是负责该模块的人去实习了,于是只能自己琢磨,一些不太理解的地方及时问清楚了。

        这也是这7天从接手一个一点需求都不懂的一个项目,到完成项目经验上的一个小小的收获的总结吧,希望对大家

    有所帮助。

    展开全文
  • 当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期...

    在这里插入图片描述



    大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻…


    特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。


    后来自己花了一个星期看完了 Python 的基础知识,就想着找点项目看一看,学一学,练一练,这个时候我才真正的去了解 GitHub,开始了在 GitHub 的瞎逛之旅,在开始之初,随之而来的问题是我不知道哪些项目当时还是新手的我,哪些项目是好项目,哪些项目好玩有价值。


    虽然现在我已经在 GitHub 上逛的相当流畅,但我还是想如果有一个东西可以收集这些对新手友好的东西,那么我当时可以少走更多的弯路,节省更多的时间吧。


    那么有这么一个东西么?


    有的,而且已经做了三年多,这就是 HelloGitHub,一个分享 GitHub 上有趣,入门级的开源项目。


    在这里插入图片描述


    GitHub 网址:https://github.com/521xueweihan/HelloGitHub


    在项目中,内容每月 28 号以月刊的形式更新发布,主要是面向编程新手、热爱编程、对开源社区感兴趣人群的项目。更新的内容主要包括:各种语言的流行项目、入门级项目、让生活变得更美好的工具、书籍、学习心得笔记、企业级项目等。


    在这里插入图片描述

    这些项目都有一些共同的特征,那就是很酷,非常容易上手的项目,编程的魅力和便捷体验起来就是这么简单。


    在这里插入图片描述


    再次给出 GitHub 地址:
    https://github.com/521xueweihan/HelloGitHub


    下面我们就来看看,这个项目具体包括啥,我们以最新的月刊(43 期)为例。


    在这里插入图片描述



    0x00 简介


    在这里插入图片描述



    0x01 目录


    在这里插入图片描述



    0x02 内容


    每个类型的项目我们挑一个来看。


    C 项目


    tmux:一个终端复用工具,可极大的提高工作效率。
    提供了强劲的、易于使用的命令行界面;
    可横向和纵向分割窗口;
    窗格可以自由移动和调整大小,或直接利用四个预设布局之一;
    可在多个缓冲区进行复制和粘贴;
    可通过交互式菜单来选择窗口、会话及客户端;
    等等。


    在这里插入图片描述


    C# 项目


    BenchmarkDotNet:功能强大的用于基准测试 .NET 库。


    在这里插入图片描述


    C++ 项目

    dbg-macro:打日志是 C++ 开发中必不可少的一种 debug 方式,dbg-macro 受 rust-lang 中 的 dbg 启发,提供比 printf 和 std::cout 更好的宏函数。主要有如下特点:
    美观的彩色输出(当输出不是交互式终端时,颜色将自动禁用);
    兼容 C++11,并且是 header-only;
    支持基础类型和 STL 容器类型的输出;
    除了基本信息外,还输出变量名和类型;
    启用 DBG_MACRO_DISABLE 生成 release 版。


    #include <vector>
    #include <dbg.h>
    
    // You can use "dbg(..)" in expressions:
    int factorial(int n) {
      if (dbg(n <= 1)) {
        return dbg(1);
      } else {
        return dbg(n * factorial(n - 1));
      }
    }
    
    int main() {
      std::string message = "hello";
      dbg(message);  // [example.cpp:15 (main)] message = "hello" (std::string)
      const int a = 2;
      const int b = dbg(3 * a) + 1;  // [example.cpp:18 (main)] 3 * a = 6 (int)
      std::vector<int> numbers{b, 13, 42};
      dbg(numbers);  // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)
      dbg("this line is executed");  // [example.cpp:23 (main)] this line is executed
      factorial(4);
      return 0;
    }
    

    在这里插入图片描述


    Go 项目


    go-admin:基于 Golang 语言的数据可视化与管理平台。特性如下:


    🚀
    高生产效率:10 分钟内做一个好看的管理后台;

    🎨
    主题:默认为 adminlte,更多好看的主题正在制作中,欢迎给我们留言;

    🔢
    插件化:提供插件使用,真正实现一个插件解决不了问题,那就两个;


    认证:开箱即用的 rbac 认证系统;

    ⚙️
    框架支持:支持大部分框架接入,让你更容易去上手和扩展。


    在这里插入图片描述


    Java 项目


    eladmin:基于 Spring Boot 2.1.0、Vue 的前后端分离的后台管理系统,支持数据字典与数据权限管理、一键生成前后端代码、前端菜单动态路由等。基于 Spring Boot2.1.0 框架,涉及的技术栈:非关系数据库 redis、接口测试工具 swagger、druid 数据源驱动、邮件依赖(javax.mail)、三方支付和云存储 SDK、页面模板引擎 freemarker。技术栈丰富,初学者可以作为实战项目学习和使用。


    在这里插入图片描述


    JavaScript


    chart-race-react:一个简单易用的 Bar Chart Race(长条图赛跑动画) React 组件。示例代码:


    
    import ReactDOM from 'react-dom';
    import BarChart from 'chart-race-react';
    
    ReactDOM.render(<BarChart />, document.getElementById('root'));
    
    

    在这里插入图片描述


    Python 项目


    TagUI-Python:一个 Python 自动化操作的库。比如:自动打开网页并截图,示例代码:


    t.init()
    t.url('https://www.google.com')
    t.type('q', 'decentralization[enter]')
    t.snap('page', 'results.png')
    t.close()
    

    Ruby 项目


    shift:一个 Ruby 语言写的在线 MySQL 数据库迁移工具。


    在这里插入图片描述
    在这里插入图片描述


    Swift 项目


    Percent:让 Swift 语言支持百分比类型,消除精度缺失的烦恼。示例代码:


    import Percent
    
    10% + 5.5%
    //=> 15.5%
    -10% / 2
    //=> -5%
    

    其他


    cascadia-code:微软开源的一套等宽字体,有趣的是可以组合字符创建新的字形。组合效果如下:


    在这里插入图片描述


    开源书籍


    python_ebook:Python 编程相关的电子书资源集合项目。


    book:(英文)《Cosmic Python》讲述如何管理复杂性的 Pythonic 应用程序结构的书籍。


    教程


    BigData-Notes:大数据入门教程,该教程介绍了大数据常用技术栈的基础和核心知识。内容涵盖:Hadoop、Spark、Storm、HBase、Hive、ZooKeeper、Kafka 等。


    机器学习


    Ultra-Light-Fast-Generic-Face-Detector-1MB:该项目使用 Python 实现了 11 种经典的数据抽取(数据降维)算法。同时附有相关资料、展示效果,适用于机器学习初学者和刚刚入坑数据挖掘的小伙伴。


    在这里插入图片描述



    0x03 写在之后


    以上,就是今天分享的内容,希望更多的人能够知道 HelloGitHub 这个项目,内容已经在这了,万事俱备,差的就是你学习的驱动力和对作者 Star 的支持了。

    让走在开源路上的开发者不再孤单,让想进入开源世界的人不再畏惧。

    看完有所收获?点个赞,让更多人可以看到~谢谢啦!


    今天的分享就到这,拜里个拜~


    在这里插入图片描述


    另外本蒟蒻把公众号的高分原创文章整理成了一本电子书,取名《Python修炼之道》,一共 400 页!

    具体内容请戳:熬夜爆肝整理 400 页 《Python 修炼之道》,一本高分原创高清电子书送给你!

    目录如下:


    在这里插入图片描述

    现在免费送给大家,在我的公众号Python空间(微信搜 Devtogether) 回复 修炼之道即可获取。



    作者Info:

    【作者】:Rocky0429
    【原创公众号】:Python空间。
    【简介】:CSDN 博客专家, 985 计算机在读研究生,ACM 退役狗 & 亚洲区域赛银奖划水选手。这是一个坚持原创的技术公众号,每天坚持推送各种 Python 基础/进阶文章,数据分析,爬虫实战,数据结构与算法,不定期分享各类资源。
    【福利】:送你新人大礼包一份,关注微信公众号,后台回复:“CSDN” 即可获取!
    【转载说明】:转载请说明出处,谢谢合作!~

    展开全文
  • 一个合格的项目经理都需要做哪些事情?

    万次阅读 多人点赞 2018-08-16 18:23:22
    之前在公司一直主要负责app研发这块工作,后来公司实行项目责任制,正好谈下来一个比较大的项目(北京机场机场安全管控平台),这个平台简单来讲就是集团承包安全部用的一个安全管控平台,因为总包下面有100多家...

    之前在公司一直主要负责app研发这块工作,后来公司实行项目责任制,正好谈下来一个比较大的项目(北京新机场新机场安全管控平台),这个平台简单来讲就是集团承包安全部用的一个安全管控平台,因为总包下面有100多家分包公司,整体工程的安全管理是一块很大的工作。

    这个和之前只负责APP研发管理还是有很大区别的,首先原来只需要拿到需求做好APP人员的任务分配及进度就可以了,但是作为一个项目经理要操心的事情一下子就多了。重点体现在以下几方面

    目录

    1.项目需求整体了解

    2.项目人员整体分配

    3.项目开发进度把控

    4.如何应付客户的需求变动及临时人员及业务调整

    5.项目相关文件的编写等

    6.项目培训及验收

    7.项目后期奖金分配


     

    1.项目需求整体了解

    这个从项目最开始的谈判基本项目经理就开始参与了,因为作为整个项目的项目经理,要把控项目的整体进度,所以对需求及细节一定要了解的非常透彻仔细。

    这个最开始我们就去机场安保部和他们做第一次需求对接,了解他们的业务流程 以及他们想要实现的功能,想通过整个大平台解决现在目前面临的哪些问题?拿到第一手需求资料后,因为基本上第一次对接只是大概的框架及业务,我们回来后对这个业务及需求进行分析,和产品经理一起讨论制定需求文档,原型。当然这中间会进行很多次的讨论,这里直接略过了。

    后面通过文档原型 和他们进行二次 ,三次的沟通细化,形成最初版本的设计原型,详细的项目需求文档。

    2.项目人员整体分配

    项目经理需要组织协调的人就多了,因为整个项目包含 APP开发  (android,ios),后台接口开发人员,前端开发人员,web平台开发人员,产品经理,设计UI,测试人员,技术服务部人员,销售,还有老板。

    加上老板,是因为老板其实也是整个项目中一直都会参与的人员,老板会需要过问开发计划进度,沟通上的一些事情。销售负责项目的一些商务谈判等。

    首先大概流程是 原型确定好初版后,开立项需求讨论会,和所有相关人员进行需求交底。然后分配对应工作,设计出图,后台设计数据库,平台前端提前写前端页面(和设计效果图其实同步进行),APP人员搭建项目框架(没有接口写一些前端的逻辑及页面),分配人员制定接口文档,给测试也要提前交底方便后期他们测试工作展开。

    根据讨论情况,制定开发计划进度表,明确责任人及具体负责内容,项目整体工作要快速同步展开。

    3.项目开发进度把控

    因为整个项目包括 android APP + ios APP +Web平台 ,所以对于整体的开发进度要在项目开始时候有个大概的规划,估算整体开发工作量,配备相应人员,制定详细的开发计划进度表,制定里程碑

    按照总工期,制定阶段性计划,里程碑。每个阶段要完成的工作 都详细规划好,这样便于对整体的进度进行管理,保证项目顺利进行。在开发具体过程中 还是对于业务的一些细节要求很清楚详细的讨论,这时一定要思考清楚,不然变来变去时间就不能保证了,很可能要延期。这时安排专人 一般都是产品专门负责和客户对接,有对具体业务不确定的 要及时与客户沟通。

    4.如何应付客户的需求变动及临时人员及业务调整

    在开发过程中不可避免的会有客户改需求的情况,所以在制定好需求功能明细表后一定要客户确认签字,这个流程还是很重要的,但是即使客户确认签字了也可能会变需求,因为公司可能会考虑尽量和重要客户维持一个不错的关系,所以一般都会答应客户的要求,所以这个压力肯定会转嫁到项目经理身上,时间计划各方面的调整,所以给大家提醒几点 

    1.项目立项编制计划给自己多预留一些时间  目的用来应对需求变动 (因为小的需求是没法和老板谈加开发时间的) 和应对项目开发人员请假等情况

    2.一些需求上不是很合理的变动尽量让产品经理引导他往正确的方向发展。这个需要产品有这个能力才可以,不然容易把事情搞砸...

    5.项目相关文件的编写等

    一个项目从立项到验收,需要的文件非常非常多。这些文件有很多都是需要项目经理参与编写的。我大概罗列一下,

    项目需求文档、项目原型说明书、项目开发计划文档、项目报价单(一般还需要围标的报价)、项目合同及合同中技术附件、项目平台操作手册、项目实施方案、项目验收文档及相关文件。

    一般这些文件很多都需要一些关联文档 ,比如 一些附件说明文档等等。这些东西其实很多时候都是非常耗费时间的,我印象中做一个项目详细的开发报价单都不知道改了多少版才定稿。

    6.项目培训及验收

    项目开发完成后,一般都会有一段试运行时间 比如 一周或者两周,这个时候需要给客户做一些简单的培训(当然非外包项目不用考虑这些),这个时候要提前准备制定好流程,准备好相关的材料 如使用帮助文档等。

    验收也是项目中很重要的一个环节,这个代表整个项目结束的一个标志,这个过程要提前准备好一些资料(需求分析说明书,程序源文件,用户使用手册,原型文件等),还要根据合同中约定后期维护二期开发等事宜,然后甲方签字验收。

    7.项目后期奖金分配

    截止到我发稿时,奖金还没批下来,所以还没想好具体的分配方案,但是原则基本就是多劳多得,少劳少得。但是衡量多和少的标准需要仔细考虑一下...

    其实我写这篇文章也不是以一个优秀的项目经理的身份在这侃侃而谈,而是为了记录一下从一个APP负责人转为项目经理后,亲自接手一个项目后所碰到的很多问题做个简单的记录,希望可以从中总结出一些经验教训。肯定有很多问题或者不足之处,希望各位前辈多多指教,也希望后来的小伙伴能从中得到一些启发帮助。

    时间关系,先写到这里,希望此篇文章对大家有些帮助。大家感兴趣的话,也可以加入我的qq群讨论交流,那里已经有很多小伙伴在等着你了

    开发一群:454430053 开发二群:537532956


    展开全文
  • 新人如何快速熟悉一个新项目

    千次阅读 多人点赞 2019-06-13 11:22:43
    很多新人进入一家公司后,最头疼的就是如何快速了解公司的业务和项目架构。 因为文档很少,没有文档,或者是文档严重落伍, 根本没法看;如果你碰到一个特别热心的老员工,事无巨细地给你讲,随时在你身边答疑...

    本文来自:https://www.cnblogs.com/flashsun/p/9450066.html

     

    很多新人进入一家新公司后,最头疼的就是如何快速了解公司的业务和项目架构。

    因为文档很少,没有文档,或者是文档严重落伍, 根本没法看;如果你碰到一个特别热心的老员工,事无巨细地给你讲,随时在你身边答疑解惑, 那简直是天大的好运气, 现实是大家都很忙,没人给你讲解。

    很快就要深入项目做开发了,怎么办呢?

     

    一. 必要条件

    这里说的必要条件不是“项目面对的客户是谁”,“项目用的框架是什么”这种,而是真真正正的必要条件,就好比用几条数学公理能推出整个数学体系一样。这里我总结的真正的必要条件只有这两点:

    源码位置(gitlab或svn)

    部署环境(dev/test/online)

     

    所谓项目,其实就是一堆代码放在了一堆机器上而已,所以这些就足够了。当然,为了更加节约时间,也要获得wiki、jenkins、页面访问路径、数据库地址等相关信息。

    我之所以说那两个必要条件,是想说其实项目本质上就是这么简单的一个事,你千万不要想的太复杂。

    它的业务可以无限复杂,但它的本质却逃不出这些,你千万不可以糊涂。当你无从下手或者什么都不清楚的时候,那么就主要把源码和环境弄清楚吧,其它的都是附属品。

     

    二. 从页面到数据库

    有了上面的必要条件后,我们就开始了解项目了。由于不只是一个项目,所以千万不能深入具体代码,否则你就越来越烦,怀疑人生,很快放弃。

    对某个具体项目的了解,一定要建立在对整体了解的基础上。这时我们首先为各个项目画出一条线,并标明每一个节点的信息,就像下面的样子:

    页面访问路径--前端项目--后台服务--数据库地址

    这里的一个前端项目可能对应多个后台服务,所以最终的图应该差不多是这样:

     

    这个整理的过程,主要是让自己梳理清楚,一共有哪些项目,哪些是前端可视的,哪些是后台提供服务的。

    了解前端项目分别调用了哪些后台服务,通过后台服务和数据库的名称,我们能从本质上了解到这条业务线提供了什么功能,从前端项目和页面路径,我们能了解到我们需要给用户展示什么。

    注意,这个阶段我们只是见名知意,即使点开页面,连接上数据库看看,也千万别花过多的时间,这个阶段的重点就是仅仅知道,这条业务线提的整体内容。

    在此基础之上,这个图可以不断细化,比如项目部署的机器,我们可以标注在项目旁边,或者保存在xshell里。此外所有非业务相关的,能查到的尽量都记录下来,这个真的为以后找各种东西方便太多了,否则别看你现在节约了时间,把以后查找相关东西的时间加起来,将会是天文数字了。

     

    这里关于整理项目部署的机器还有个小插曲,跟大家分享一下。由于这部分的信息没人会一个一个地告诉你,就算有也不可能说的特别全。所以我是借助jenkins来整理的。项目部署都需要用到jenkins,只要查看jenkins配置的命令,就可以把部署环境一一整理出来,这个我认为是最全而且最新的。

    不要和我说查wiki,如果公司wiki都写的这么全,我估计就没这篇文章什么事了。当时我的jenkins权限特别少,只能看一部分项目,后来费了很大的劲,想了很多办法才看到项目的配置,整理出了部署的机器。

     

    三. 了解项目间的关系

     

    这部分如果有老员工愿意和你说说,那最好还是了解一下。如果没有也没关系,先跳过这段,以后慢慢了解也是可以的。

     

    四. 整理数据库表

     

    我们上面都是整理项目的大体框架,还没有涉及到具体的项目细节。这一部分,仍然不去涉及。

    如果说站在整个业务的本质上看,业务无非就是一堆代码运行在一堆机器上。那么站在单个项目来看,一个项目无非就是对数据库的增删改查操作而已,或者从使用者的角度看,一个项目就是输入一些参数得到一些返回结果。

     

    所以接下来我们要做两件事,一个是整理数据库表,一个是整理Controller层的所有接口

    这里首先要选择一个核心项目去看,众多项目中一定有一个是核心项目,先从这个开始看起。

    如果数据库的表比较少,那我们拿工具导出来表结构,一个个看就行了,这个不难。但如果数据库表特别多,我们首先要将表名全部导出,筛选出那些核心的表。

    这里导出表名、筛选表以及后面的分析表字段,不妨给自己做个工具,我在遇到一些很麻烦的或者感觉以后还可以通用的事情时,就会做成一个小工具,放在一个我给自己起名为javamate的程序中,这些小工具逐渐积累起来你会发现今后有意想不到的方便。

     

    话说回来,如何判断哪些是核心表呢,不要着急,我们首先排除掉一些没用的。拿我在公司分析的系统来说,一共150多个表,其中有好多copy结尾的是备份,flow结尾的是流水,rel结尾的是中间关联表,statistics结尾的是数据统计表,log结尾的是日志表,config结尾的是配置表。等等。

    排除掉这些对核心业务理解无影响的表之后,所剩的也就20来张表,再根据他们的名字,可以看出好多表是属于一类的,比如order表就有各种order,按类别再分出来也就四五类,再分析起来就不难了。当然如果是更大的体系结构,那就要再不断做拆解。

    再具体分析这些核心表字段之前,还要做一件事就是找出表中间的关系。如果表b中有个字段叫比如a.id,那么b和a就是一对多的关系,如果两个表有rel中间表,那二者就是多对多的关系,起码从逻辑上讲是这样的。这个分析过程我也是做了个小工具,通过程序来判断的。

    到此,你就对整体的数据库结构有所了解了。根据表名也能对表的大致内容有所了解,接下来就是针对具体的表,看里面具体的字段和前人给出的备注,这个过程就没有技巧了,要耐心,要慢慢熬

     

    五. 深入代码层

    当你对数据库表做了以上到了解后,你基本上对这个系统能提供什么服务了解到差不多了。这个不论你的代码长什么样子,数据库摆在那里,其实能提供的服务就已经差不多出来了,对于有经验的人来讲,代码的业务逻辑也大致能猜到个八九分。

     

    我认为一个业务相关的项目代码只分三个部分:

    1. 通过交互对自身数据库进行增删改查操作

    2. 通过定时任务或服务器脚本对自身数据库进行增删改查操作

    3. 调用或通知其他服务做一些事情

    如果只是单一项目,无非就是通过各种途径去玩自己的数据库而已,前两点足够了。而如果是微服务部署,那么加一个第三点足矣。我们将代码逻辑分成这三个部分看,快速了解一个项目就不成问题,甚至在你没有看过某一项目而突然有一个bug要你解决时,你也可以按照这种方式去快速定问问题。

     

    通过交互对自身数据库进行增删改查操作

    这个无非是最简单的一部分,即使复杂也是代码较长,表较多而已。所谓的交互,或许是Controller暴露给前端用户的接口,或许是开一个rpc端口暴露给其他微服务的接口,总之是第三方去触发的。

     

    这里我也给自己做了个小工具,扫描出所有的暴露服务的接口,展示出方法名,路径名,参数列表和返回值等。

     

    和数据库一样,如果接口很少那么一个个看,如果特别多,还是先找出比较核心的几个方法研究。这里我用的是postman,把要研究的接口访问保存起来,并且添加访问成功和失败的Example。

     

    这里我推荐自己开发的时候也把postman用起来,越详细越好,postman不只是可以简简单单访问你的接口,还能做批量测试,还可以生成api文档用于和前端交互。这样你不但测试了自己的接口,还省的写文档了。而且postman还有个好处就是可以给自己的接口mock一个服务,这样即使你的接口挂了,或者你的接口根本就没写好,你可以让前端人员先访问你的mock,完全不影响前端边测试边开发,这才是真正的前后端分离嘛。

    整理出所有接口后,肯定大部分是很简单的,一看就懂,一层一层点进去直到数据库层的sql语句,该接口最本质的东西就出来了。

    如果是复杂的,那就一步一步debug,花时间总是可以分析的。如果再复杂的,你可以画流程图(这里我比较推荐用processon)。甚至几个接口围绕一个功能的,你可以画状态流转图。比如我之前看我们公司处理订单业务这块,逻辑确实比较复杂,我就画了类似如下的图:

     

    状态流转图:横轴代表order_status字段的状态,纵轴代表当order_status是以上状态时,触发该接口操作会使该字段发生什么变化)

     

    接口对表的影响图:这里你可以把所有涉及到的表以及表中的关键字段列举出来,然后看分别调用接口后对各个表字段的影响,变化的就用红色标出

     

    有了这两种维度的视角,我相信再复杂的业务都能很理清楚,也能发现某些bug最本质的问题。

    我正是通过这样的方式,把一个本来不属于我的项目短时间内了解清楚,快速准确地修复了好多顽固的bug

    虽然项目很烂,业务逻辑十分混乱,但正是这样一段时间锻炼了我深入代码理清逻辑的能力,也有了自己独特的一套方法。

     

    定时任务或服务器脚本

    这个和第一种类型一样,只不过换了个入口。比如定时任务,或者启动的时候就开启的一些线程。

    寻找这些入口的确不是特别容易,比较头疼,但也只是入口比较隐蔽而已。找到他,记下来,具体分析过程还是按照上述方法去分析,就可以了。

     

    调用或通知其他服务做一些事情

    代码中可能有通过mq给其他服务发消息,或者直接调用其他服务的接口,或者调用类似云推送的接口让它去帮忙像mq发消息。

    这部分代码可能更加隐蔽,但数量少,逻辑也简单,你需要做的仍然只是找到它们。这部分也是为了解项目之间的关系打下伏笔。

     

    这三种类型的代码研究清楚后,对于一个业务型的项目来说,已经基本足够了。

    对于一些基础服务和中间件类型的服务,还是得慢慢积累技术深度才行。由于本篇文章是快速了解一个业务型的项目,所以就不展开叙述了。

     

    六. 重新理清项目间的关系

    好了,这时候每个项目你已经大致了解,最起码调用的效果,数据库所能提供的服务,甚至某些关键部分的本质逻辑,你是清楚的。这个时候,要重新整理下项目之间的关系。

    1. 根据之前的接口名称,详细了解下项目间的调用关系。理不清的部分去问老员工,这时候你带着自己的了解问,他们也能给出更多的信息。

    2. 看看每个项目中用到的中间件,主要是mq服务,看看谁是生产者,谁是消费者,以此来了解关系

    3. 这时你应该已经开了好几轮的周会了,接下来的周会你应该能听懂部分内容。根据每个人的描述和最新的几组需求,逐渐摸清楚现在项目面临的问题,以及哪个项目是核心,哪个项目是辅助,哪个项目是以稳定安全为主的

     

    到此为止,整条业务线你就有了大致的了解,接下来就要结合你具体负责的内容,领导安排你做的方向,去看具体的业务代码了。深入其中,事无巨细地了解。

    但此时,你通过前面的努力,你已经可以站在一定的高度看每一个项目了,虽然你细节上还是不了解,但这是完全不同的。

    在研究具体业务代码的同时,不断地跳出来看整条业务线的框架,修正之前由于不了解具体业务而理解错误的架构。长此以往,你一定会在某个项目中脱颖而出,让大家认识到你的全局视野,这也是走出老是写增删改查代码怪圈的一个途径。

    慢慢会有人意识到,你对项目的理解总能站在全局的视野,很多需要跨项目去做的业务,也会自然而然想到你,慢慢地,你会接触到更为核心的东西,成为架构师,或者去转向产品,转向管理。

    展开全文
  • 进入一个新的团体,接手或者接触项目,我们最终的目的是什么?这个弄清楚了才好说如何去快速融入和达到最终目的。 以我而言,我都是按照允许去熟悉或者能够与这个团队或者项目一起合作的时间去判断;我就两个...
  • 如何快速的熟悉一个新的软件项目

    千次阅读 多人点赞 2018-05-11 11:40:40
    我们会经常遇到一些来公司的大牛,在短短是两周就可以熟悉公司的业务和技术了,而且还能熟练的辅导比他更早来公司的小菜鸟了。 什么原因呢?因为他们已经从以往的经验中总结了一些套路出来了。上套路 1、绝大...
  • 不知道你有没有经历过一个五年或者更长工作年限的开发人员半路加入团队的情况,可能第一两个星期他会问一些业务或者技术问题,不过一两个月他就可能在指导那些初级开发人员了。 什么原因呢?因为他已经从过往经验...
  • 如何做一个软件项目经理?----写给公司所有的开发人员
  • 很多新人进入一家公司后,最头疼的就是如何快速了解公司的业务和项目架构,或者说不要求快速,即便有足够的时间,也很难在庞大的业务中整理出思绪。当然,如果你碰到一个特别热心的老员工,事无巨细地给你讲,随时...
  • 炸裂!手摸手教你如何吃透一个 Java 项目,yyds

    万次阅读 多人点赞 2021-06-11 08:24:07
    先说一下大多数新手的情况:就是对着视频敲 Java 项目,其中遇到的 BUG 还能解决,但就是每次敲完一个项目,就感觉很空虚,项目里面的知识点感觉懂了但又好像没懂,应该怎样才能掌握一个项目所用的知识点呢?...
  • 全球化背景下的超20多国家地区共同实施的SAP项目概览
  • 如何看一个Java项目

    万次阅读 2017-06-07 10:21:57
    1.看项目经验: 一定把系统业务弄懂,另外看看有没有并发、设计模式、io方面的代码,要研究透了,最好自己能写出来,最后研究系统架构和服务器的拓扑结构  1项目介绍,wiki,源码包的readme等。 2明确项目的目标,...
  • Github 最新 AI 开源项目了解一下?

    千次阅读 2018-03-07 00:00:00
    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考。...这是 PaperDaily 的第 48 篇文章DeepPavlov#对话系统训练开源库DeepPavlov 是一个基于 TensorFlow 和 Keras 的智能对话库,其主要用
  • 如何吃透一个java项目

    万次阅读 多人点赞 2021-04-14 22:59:39
    从从未接触过MQ,从零开始研究RocketMQ,最终出版《RocketMQ技术内幕》书,在这里谈谈分享一下我的学习方法。
  • 好,现在我们已经在自己的机器上建立了一个持续集成服务器,并初步了解它的配置文件。在本文中,我们就要把自己的项目加到其中。 一个入门示例,我们先要陈述一下假设条件,以便我们快速推进我们的部署过程。一...
  • Maven(一)如何用Eclipse创建一个Maven项目

    万次阅读 多人点赞 2017-09-30 00:05:13
    Apache Maven 是一个项目管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建、报告和文档。 Maven工程结构和内容被定义在一个 xml 文件中——pom.xml,是 ...
  • IT项目经理应该做什么

    万次阅读 2012-09-28 15:02:48
    IT项目经理应该做什么 经常看到这样的项目经理,一副整天忙得团团转的样子,电话不停地作响,一个小时之内要发出几十个指令,好像他所领导的团队离开了他就一天也活不下去。然后他还会说:"我很忙"或"我很累...
  • 开源一个功能完整的SpringBoot项目框架

    万次阅读 多人点赞 2019-10-11 14:14:39
    最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前的框架,里面通用模块有:用户...
  • 对于一个的软工,做一个项目项目的分析是很重要的一个步骤。项目分析清楚了才知道自己在做什么。写代码的时候自己心中也有轮廓。 这篇博客是分析一个医药管理平台系统。让我们跟着博客一步一步的分析这个系统吧...
  • 1) 创建一个新项目 点击项目,选择新建项目SOAP。...注意:你也可以CTRL + N(WIN)或CMD+ N(MAC)来创建一个新的SOAP项目。在的SOAP项目对话框中输入项目名称,然后单击确定 这将创建在导航器一个新的项
  • 你真的了解什么项目管理吗?

    千次阅读 2016-10-29 15:45:43
    想首先问大家一个问题:你觉得中国人聪明还是美国人聪明?我见过最好的回答是美籍华人。我们说美国人很愚蠢,为什么呢?你们都考过T或G吧,他们经常会出这么一道题1/3+1/2=? 50%的人回答是2/5,这可是美国研究生...
  • 某天午饭前,项目组一同事挑起了这个话题,由于是马上要到饭点了,所以没有细聊,但公认的结论是,从零开始准备一个项目,花费的工作量不小。 由于最近我参与了一个全新的web项目,有切身的体验,所以记录下来。 ...
  • 一个LIMS项目的经验和教训

    千次阅读 2011-06-16 09:07:00
    一个LIMS项目的经验和教训 LIMS项目类似与ERP,客户的个性化内容很多。导致项目成败的,往往不是技术问题。比如,在这个珠宝LIMS项目中,我也了一些总结和反思。 A. 客户的选择 1)慎选客户;2)一个“专家...
  • 程序员的职业生涯中难免遇到烂项目,有些项目是你加入时已经烂了,有些是自己从头开始亲手成了烂项目,有些是从里到外的烂,有些是表面光鲜等你深入进去发现是“焦油坑”,有些是此时还没烂但是已经出现问题征兆...
  • NodeJS+express如何新建一个自己需要项目

    万次阅读 多人点赞 2018-09-10 17:59:30
    、安装Node.js环境,可以官网直接下载或者指令下载 二、安装Express $npm install express -g $npm install express-generator -g 三、创建express项目,初始化 3.1cmd终端打开指令,依次输入如下指令,根据...
  • PMBOK第六版--了解项目管理49过程

    千次阅读 2019-10-12 17:09:51
    定义一个新项目或现有项目的一个新阶段,授权开始该项目或阶段的过程。 规划过程: 明确项目范围,优化目标,为实现目标制度行动方案的过程。 执行过程 完成项目管理计划中确定的工作,以满足项目要求的过程。 ...
  • 复盘,是运营必不可少的能力,小到一次买菜的经历,大到百亿千亿的投资项目,都可以通过复盘...以下内容来源于我工作中的思考,同时参考了柳传志的关于复盘的方法论,力图展现一个完整的、可实践的项目复盘流程。 ...
  • 一个项目Web工程看Eclipse如何导入Gradle项目

    万次阅读 热门讨论 2016-02-21 17:07:40
    这里再次说一下为什么我们需要熟悉Gradle构建工具,主要原因就是很多开源项目现在都在改用Gradle作为构建工具。部分的github上的示例代码也在用Gradle构建,如果还是只能用maven,那么很多好的项目都只能用肉眼看...
  • 分钟了解约定优于配置

    千次阅读 多人点赞 2019-09-29 17:34:51
    文章目录什么是约定优于配置Maven与Spring Boot项目的约定Maven项目的约定Spring Boot项目的约定约定优于配置是的概念吗 什么是约定优于配置 约定优于配置(convention over configuration),也称作按约定编程,...
  •  对于一个开发者来说,或许,并不认为我需要去对业务模式了解多少,老老实实写好自己代码就够了。最近的公司的一个创业项目正是一个O2O,作为几个月 的项目开发体验,我想还是哔哔几句吧。    核心结论: O2O...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 857,785
精华内容 343,114
关键字:

做一个新项目需要了解什么