热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

随想录(谈谈软件架构)

【声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:feixiaoxing@163.com】  最近很少写blog,主要是因为自己一直在看麦子学院的东西,学习的时间偏多一些。麦


【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    最近很少写blog,主要是因为自己一直在看麦子学院的东西,学习的时间偏多一些。麦子学院是一个网上视频学习网站,讲述的主要是it开发的相关内容,有兴趣的同学可以关注一下。另外一个我自己也觉得不错的网站是极客学院。当然这些都是题外话了。


    前几天,正好有一位前同事问我,怎么学些软件架构这些东西?正好自己自己最近也在关注这方面的东西,所以我告诉了他一些个人的想法。


    1、软件架构离不开具体的业务,也就是说只有理解了业务,才能有好的架构。目前描述业务最多的语言还是uml,通过用例图、类图、顺序图、状态图、活动图、组件图和部署图,就可以把基本的业务模型搭建出来。一开始的时候,你使用uml或许会有一些陌生,但是熟能生巧,自己就会慢慢从中领略到精髓。俗话说,文不如表,表不如图,uml就是那个顺利和别人沟通的图。


    2、当然除了uml之外,自己还需要了解一些基本的设计模式,这其中包括mvc、mvvm、move、reactor模式等等。mvc是最基本的设计方法,常用在客户端的开发当中,mvvm和move是它发展出来的新模式。而reactor则用在服务器编程中比较多,云风的skynet开源代码也使用到了它的方法。


    3、一些经典的、关于设计的书籍还是要看的,比如说head first、design pattern等等。即使暂时看不懂,关系也不大,可以后面想起来的时候再拿起来翻一番,或许有了工作的积累之后理解得更加深刻。


    4、找一些开源的项目练练手,看看别人是怎么做的。不管是pc的代码,还是android的代码,只要你认真分析下来总会有很多收获。就拿android来说,其实大多数app都是相似的,基本上可以分为工具类、游戏类、hybrid 混合开发类三种。如果你可以把这些app流程图画下来,并且进行0像素的copy,那么你就会慢慢找到那个做产品的感觉了,进而将软件架构抽象出来。分析和模仿别人的应用本身并不可耻,只是不要用在商业上就可以了。


    5、了解一下移动互联网的基本架构。掌握移动互联网是怎么做到跨平台开发、如果做到统一的服务器api开发、如何缓存、如何均衡负载、如何添加搜索和推荐功能、什么时候cdn加速、如何升级、怎样灰度发布等等?慢慢地做下去,那些你需要解决的问题,会让你勇往向前,不断进步的。


    总之,就是找到自己的兴趣点,按照uml的业务流程,结合已有的框架,借鉴别人的设计,不断提高自己软件设计的水平。



随想录(谈谈软件架构)


推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • CSS标签、类名和ID选择器的使用区别
    本文讲解了CSS中标签选择器、类名选择器和ID选择器的使用区别,主要包括加空格和不加空格的区别。通过示例代码,说明了加空格表示选择当前节点的后代节点,而不加空格表示一个元素的多个类名不能加空格的规则。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • 本文介绍了一种图片处理应用,通过固定容器来实现缩略图的功能。该方法可以实现等比例缩略、扩容填充和裁剪等操作。详细的实现步骤和代码示例在正文中给出。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
author-avatar
手机用户2502857341
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有