一.网页端(bs架构,web2.0)
0.前言
浏览器才是通用的,或者说chromium有统一客户端的趋势。前端服务器为ngnix只管返回html页面(js引擎)。后端服务器为webapi连接数据库处理业务逻辑只管返回json格式。
- 原则:
- 开发: 可复用性可拓展性(实现:解耦和内聚),可维护性(实现:规范)、健壮性(实现:测试)、敏捷性(实现:云原生Devops)
- 后端三高:高并发(高性能服务器)、高可用(合理利用cpu和内存资源应对多的请求、负载均衡、微服务)、高性能(利用中间件提速、数据库、服务器调优)
- 前端:热部署、美观人性化、兼容性强、响应块。
- 如何提速:
- redis:减少io多用内存
- ngnix:多用高性能服务器能压榨cpu
- netty:一种非阻塞io技术,广泛应用于应用服务器
- 前后端分离:并行网络请求少等待延迟。
- 把逻辑处理交给客户机:安全低但是省去网络传输延迟和分担服务器压力到客户机。广泛应用在游戏、工控。
- 把逻辑处理交给服务器:对网络要求极高,云计算趋势,现有的应用有云游戏、云渲染。
1.前端
- 前端服务器:只用ngnix,分担后端服务器编译出dom页面的cpu和内存压力、加载图片视频的io压力。
- apache:十年前在用,但只支持静态网页。
- ngnix:基于c开发。目前主流,对硬件压榨能力极强。
- 浏览器:
- chrome(Google):webkit+v8引擎,基于chormium。性能巅峰
- firefox(Mozilla):浏览器元老,内核不一样是Gecko。
- edge(microsoft):新起之秀,ie的替代品。
- safari(webkit渲染内核):需要单独做样式
- 国产:uc、qq、夸克。特点是内核无改变、主攻移动端、推出资讯、网盘、文档处理工具等附加模块。
- 前端技术分析:
- ngnix速度快多了
- ssr Server-Side Rendering:node.js可再次分担浏览器渲染压力,提升seo排名。
- 在为你的应用使用 SSR 之前,你首先应该问自己是否真的需要它。这主要取决于首屏加载速度对应用的重要程度。例如,如果你正在开发一个内部的管理面板,初始加载时的那额外几百毫秒对你来说并不重要,这种情况下使用 SSR 就没有太多必要了。然而,在内容展示速度极其重要的场景下,SSR 可以尽可能地帮你实现最优的初始加载性能。
- vue(2015-2019-2020):轻量级框架,组件式开发,配合elementui、axios飞速上手业务代码。
- react(Netflix)(2013-2022):纯js方式构建页面,jsx,虚拟dom开创者,适合构建大型项目。
- 小程序:由微信制定平台了接口、内容审核规范
- uniapp(2021):开发跨端应用,小程序开发。
- react-native:编译原生安卓应用。
- fluter:谷歌推的dart表现层语言,谷歌对接了其他所有端的内核层开发。
- electron:运行一个Chromium渲染环境+nodejs操作系统环境,在此基础上构建出桌面页面。
2.后端
- Windows server:付费。跑iis服务器,支持.net环境和asp。
- linux:
- ngnix服务器支持静态资源和php
- Apache服务器支持php
- Tomcat服务器支持java
- Jboss:企业级java服务器
- oss:静态资源存储源站
- cdn:静态资源托管和分发,分担服务器压力同时,加速(网络快,0拷贝)。
- 配置:购买流量包——访问的域名——源站ip(或静态资源oss)
- 后端的技术分析
- mvc:
- view层:即传统的jsp、asp、php、cshtml动态页面,进阶的blazor组件页面。
- controller层:即控制器层,完成业务逻辑的调用和数据的封装返回
- service层:解耦,复用业务逻辑VO、DTO、原生表Model。
- adapt适配器:提供json自动封装,自己封装RESULTVO。
- view resolve视图解析器:提供动态页面的编译。
- model层:即dao层,完成对数据库的直接语句操作,返回对象或布尔,并需要事务支持。
- basedao/Dbhelper:封装对数据库的连接池管理。
- mapper.xml:封装sql语句,只接受参数。封装orm映射。
- jsp(oracle):tomcat是一个性能瓶颈,他编译页面会提高服务器cpu和内存压力,同时速度不够快(虚拟机)。
- asp(microsoft):性能强于jsp,但差不多,且生态绑定严重。
- ngnix负载均衡:充分利用多服务器硬件资源解决高并发高可用问题。但仍然产生大量内存和cpu浪费。
- 微服务:解决tomcat复制以后多出来很多无用服务占用内存的问题,还是解决高可用高并发。
- 开发解耦:单模块的拓展更容易、负载均衡能有针对性。
- 负载均衡的副作用:数据库本地事务失效、微服务本地锁失效、会话失效、微服务的会话同步(jwt)、
-
中间件:
-
redis:提高内存利用率,提高数据库访问速度。
-
mq:提高并发性,常用于订单处理、秒杀,实现业务解耦,提高响应速度。
- elasticsearch:存储文档(模糊搜索、键值对),提高搜索速度。
-
- Nio:
- 比较差的:同步、两段复制到用户空间、直接io
- 好的:直接内存映射、异步。
- golang(google):
- 吃java市场,垃圾回收,性能高,开源。
- 目前应用:web框架gin、中间件。
- mvc:
二.桌面端(cs架构,web1.0)
0.前言
后端是可以通用的,但终端用户分为四大阵营(浏览器、桌面应用、移动应用、嵌入式设备)
- 终端:
- 性能要求:生产工具(渲染引擎)>桌面游戏(GPU)>移动游戏(GPU)>桌面应用>移动应用>浏览器、chromium跨平台应用>嵌入式应用
- 钱的要求:10k+>6K>2K=2K>1K>?
1.windows
- C++图形开发:性能最高。
- mfc、qt:性能最快,但c++开发难度大。最主要是生态极差。
- unity:涉及底层库开发,难
- ue4:生态同unity一样好,面向3d游戏(难)
- .net框架C#:支持游戏桌面应用
- winform:性能中,但是开发更易
- unity:需要引擎,引擎强大,2d易上手。
- wpf:mvvm模式,开发难度略大,用的是direct引擎
- java:需要装虚拟机、jre
- swing包开发:开发难度大、性能不如原生、组件落后。
- 应用:某211的签到系统、finalshell
- 跨端:
- electron:性能不如原生,但够用,界面美观度无敌。
- fluter:性能接近原生,移动端跨平台首选,吊打uniapp。
- uniapp:生态成熟,可兼容vant等组件库。但是不如fluter原生ui美观。
- react native:国内不受欢迎,有ant组件库。对前端程序员要求较高。
- 后端:两种模式
- 在本地直连数据库:后端逻辑基于事件在客户端执行,安全风险大、维护成本高,但是性能足。
- 服务器通信:需要用json作为通信方式,安全性高,开发难度大。Android和商业级Windows软件常用。
- c++:cgi程序,常见于游戏服务器,运行于apache服务器之上,只发json(游戏封包)性能高。
2.linux
- 现状:客户端生态小,用户极少,有一个特例是安卓,但权限管理也混乱。某些手机谷歌框架的缺失导致标准无法建立。
- Android:需求少,原生开发越来越内卷
- 普通软件开发:四大组件和应用层服务调用搭配常用网络框架。
- 音视频开发:需要调用底层库JNI,以及图形学、音视频编码等知识。
- Kotlin:google为了版权因素而专用的编译器和语言,一样是生成字节码文件。
- 和传统桌面开发对比:一样是事件驱动模式,架构差不多都是布局-观察控制器的模式。但Android更加解耦并增加了事件种类、动画效果。
3.ios
- 现状:应用权限申请极为严格,存在统一标准(AppStore)和审查机制。
- swift:代替object-c成为开发首选。
三.需求分析(项目)
- 需求分析:需要功能模块图、总体流程图。
- 总体设计:el图、包设计图、技术架构图、uml的总体状态图、uml的总体用例图
- 详细设计:数据库逻辑设计、数据库物理设计、uml的活动图、uml的详细用例图、uml时序图(数据流图)
- 编码开发:实际使用的工具类、重用性高的接口、类设计、上下层解耦。
- 测试:参数检查、用例测试、压力测试、操作指引文档
- 故障:硬件、网络、改数据库、查内存删资料、
1.企业内网开发
- 技术选型:
- 首选C#的winform、WPF(开发简单快,可监控后台数据)。数据库Mysql
- 次选electron或qt。数据库SQL server。
- 采用web的b/s架构也行,看跑的环境有无要求;调用api能力如何。
- ERP&OA:详情看下一篇文章分析。
- MES:详情看下一篇文章分析。
- APS:详情看下一篇文章分析。
2.工具软件开发
- 原则:必用c++、c#库,因为可能用到通信协议如RFID、蓝牙、nfc。
- 上位机:
- 基于通信协议和其他硬件设备的控制系统。
- 高级:含有算法部分,带有运动控制和建模分析。
- 音视频处理:图像检测、修改
- 美颜软件:bili、抖音等都有
- 播放器
- moboPlayer
- 直播功能:ffmpeg
- 练手为主
- 小程序游戏:H5的webGL开发、后台java。
- 音乐播放器:前端玩组件、安卓玩组件。
- 云盘:不懂
- 超星云盘
- 浏览器:前端的识别、对象、网络内容。
- 油猴:没写过,主要是自动刷视频赚广告费。
- 插件开发:接触过,主要是原生js去写,Chrome开放了很多api。
- 实况通讯:
- telegram:权限管理、内容检索
- 小程序:用uniapp api和云数据库
- 外挂:逆向分析,单机、网络慎重
- ce
3.企业OA开发
- 技术选型:首选Sass成本低、部署快、容易维护,次选Iass
- 员工考勤系统:基于Android移动设备
- 需要记录考勤时间,总计天数时长。
- 超时判定、后台修改、人数统计、地点方式限定。
- 财务系统:基于开销成本和营收
4.商业软件开发(互联网)
- 技术选型:首选b/s架构,开发易,多端应用。
- 后端:三高,支撑足够多用户群。大数据
- 前端:美观,组件开发快,保证上线速度。
- 教育:文化周边、功能付费、知识选购、直播视频互动。
- 中公:职业培训领域
- 猿题库:ocr+题库、应试培训领域
- 慕课网:笔记系统、与高校对接的课程资源。
- 作业帮:传统的付费看答案模式
- 通信:增值业务、多平台模块
- 三大运营商:售卖通信服务
- 金融
- 理财:数据可视化、平台对接。
- p2p借贷:已弃用。
- 银行:数据加密、高并发、数据一致性、系统架构设计。
- 电商:b2c、大数据营销系统、元宇宙、社区、物流、金融绑定
- 视频内容:
- 版权影视:完善的付费和广告系统
- 爱奇艺:拥有自创平台
- 芒果tv:背靠湖南娱乐资源
- 视频创作
- youtube:极高质量创作者、背靠Google广告体系、大数据
- bilibili:文化周边、大数据、付费服务业务,一众优秀的中文创作者(目前在娱乐鬼畜和地理历史和数码计算机领域)
- 直播:元宇宙、推流技术、礼物系统、pw系统
- huya:游戏板块
- 盗版影视:必须精通广告嵌入以及引流技术
- 套壳影视网站:需要掌握seo技巧和基础运维
- 资源网站:精通资源加密、文章引流技术。
- 短视频:完整的大数据算法、2400*1080p创作
- 抖音:背靠电商
- 快手:独家创作者
- nsfw:同版权影视部分,需要强大的数据库、高带宽高并发。
- 某1:反爬虫、隐私版权问题、内容审查
- 某board:纯靠广告、多半转入付费模式
- 某pan:服务器和网络成本高。
- 某msf:靠广告、
- 版权影视:完善的付费和广告系统
- 社交
- 博客:基于用户、话题、内容检索的内容创作与浏览
- wordpress:个人博客,完善的文章编写和内容管理体验和强大的插件功能。
- twitter:强大的组件交互、简洁的页面,拥有众多高质量用户。
- weibo:偏日常化、微型化的创作。中文互联网言论的缩影
- 小红书:基于图片的娱乐消费领域的创作。
- instagram:基于图片的娱乐日常创作。
- 论坛:基于共同领域的内容创作与浏览
- reddict:卡片式内容浏览,并支持长文章创作。
- tiebe:庞大的社区文化
- 其他小众社区:kr、
- 问答式社区:基于问答和长文章创作。
- 知乎:开创知识付费体系,消费咨询、职场话题的首选。
- 熟人社区:QQ空间、微信朋友圈
- 博客:基于用户、话题、内容检索的内容创作与浏览
- 粉丝付费
- fanza:
- onlyfans:基于高质量创作者
- 交通:o2o模式,多用户、大数据、队列。
- 物流:
- 货拉拉
- 跑腿
- 打车:
- 哈喽
- 滴滴
- 外卖:
- 美团
- 饿了没
- 物流:
- 面向开发者:
- 培训:收藏夹的培训机构公司
- 社区平台:博客园、csdn、gin-vue、
- 开发工具:uniapp、
- 开发插件:vscode插件(TS)、
5.区块链(web3.0)
- 元宇宙:虚拟货币+虚拟形象+数据开放+个人创作。
- 核心:3d建模、社交性、信息流通度
- 技术核心:虚幻引擎、unity
- 例子:soul、淘宝人生
本文作者为抱一只橘,转载请注明。