为什么我选择重开博客?

educoder数字逻辑实训:寄存器设计与应用(Logisim) 第1关:基本寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位基本寄存器,要求上升沿触发,具有异步复位功能。 第2关:移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位右移移位寄存器,要求上升沿触发,具有异步复位功能。 第3关:循环移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位循环右移移位寄存器,要求上升沿触发,具有异步复位功能以及并行数据同步加载功能。 第4关:并行.. 阅读详情

上一次写博客的时候,我已经忘了是多久之前的。我印象中以前博客还是用来记录一些小技巧、记录摄影(其实只是胡乱拍拍)的点滴的。有了微博和朋友圈之后,基本上就转发到那里了,而且那里的受众还特别好(特别是微信,基于熟人社交嘛),价值观输出强烈。


但是感觉朋友圈更多是为了方便被转发、方便手机查看而设的,文章的专业性,尤其是对于技术人员想要上传代码到文章里面显得困难。这是功能上的原因,我觉得专业的技术资料还是应该留在专业的博客里面。在思想上,我觉得一直以来我自己积累下来的知识都没有一个整理的过程,我希望通过一个博客用更有条理的方式整理下来。


写博客最怕是没有时间维护。在写下这句话的时候,我正处于失业的状态中,算是比在上班的日子有更多的时间进行博客编写了。虽说我可以立刻去找一份工作,但是我还是觉得想要任性一次,先做一次从业以来都没有做过的技术沉淀。


我感觉入行以来,就软件开发技术而言我已经更新了三轮。第一轮是我从.NET C#开发C/S软件开始(这个S是指直接连接数据库),转到C#通过连接接口的方式(包括RPC调用、WCF调用和WebService调用)与服务端进行交互,客户端开发从C# Windows Form到ASP.NET再到WPF。第二轮是从.NET C#转到Java平台开发为主,从ASP.NET B/S开发模式转移到Java平台的前后端分离的Web开发、从单个服务端到分布式高可用高性能架构。第三轮是从互联网常用的分布式架构转移到我自认为更适应O2O行业的基于云服务的可伸缩架构。


在这三轮技术更新的过程中,企业通过软件盈利的模式也在发生变化。最开始是直接以软件项目合同的方式进行盈利。然后我加入到更高层次的企业,通过开发产品附带高附加值的软件,靠提升产品议价能力盈利。最后演变成目前以软件即服务的形式,目前的O2O基本上都是以这种方式,软件属于服务的一部分,通过线下服务和线上平台对企业和产品造成的估值溢价而盈利。我们从中学就开始学习了,生产力和生产关系其实应该是相互促进的关系。我目前在从事O2O软件开发为主的工作,而O2O的生产关系,我认为与我第二次更新技术后,主要从事的分布式高性能高可用架构还是有所不同的。换句话说,我觉得目前的生产关系(互联网+,尤其是中小企业要做O2O),反过来对生产力有不一样的要求,这是我想要把自己积累的东西对外公布、对外发声的重要技术原因。


我比较认同Ruby语言作者,日本的松本行弘先生的观点:未来的软件研发发展的方向应该是提高敏捷性、高度可定制化、通过提高机器的开销而节省开发人员花销的。这观点与当前国内互联网行业——偏爱重复制造车轮、多数公司为提高生产力首先考虑雇佣更多的开发人员和给开发人员开更高的待遇,是有明显的方向性差别的。尤其是对中小型企业而言,中小型企业首先融资困难,雇佣更多开发人员和给开发人员开出溢价的待遇是比较困难的。但在互联网+的趋势之下,IT已经越来越难以决定企业和产品的成败,它沦为了一种基础设施——没有不行,但是做得最好可能只是60分。尤其是对O2O来说,决定产品成败很重要的因素,是线下服务质量水平,线上IT平台只要能满足业务需要,技术上各种指标没有与主流软件形成明显差距,就可以初步满足中小型企业需要了。


知乎上有个比较火的讨论是:计算机业还能再火几年。其实楼主的意思应该是程序员就业还能再火几年。主要的高赞成答案不在这列了,不过其中有很多的答案我都觉得有意思,有一个是说目前的信息化程度还是严重偏低的,所以未来必须需要更多的程序员实现社会各行各业更高程度的信息化。而即便是目前信息化程度不高,但对程序员的需求也已经这么高了,那么日后对程序员的需求更高的情况下,程序员的稀缺程度会进一步加剧,而且大陆程序员的待遇会在一段长时间内保持缓慢增长逐渐追上欧美程序员的薪酬水平。即使我觉得目前的程序员收入仍然不足以回馈他们的工作水平,但对于企业来说,绝大多数的企业没有直接销售软件的能力,软件或IT平台的盈利需要通过提供非IT产品和服务的形式产生,盈利能力是否能够不断跟得上软件平台的成本增长呢?我认为目前已经成为了一个问题了。


回到上面松本先生的观点,其实就是通过提高软件开发的生产力、使用低成本的资源,降低IT平台的总成本。这里指的不是程序员工资降低,我一直都赞成程序员加薪,但程序员的薪酬毫无疑问是IT平台的绝大部分。我举个例,是我曾经工作过的一个项目组的情况,我来说明一下如何在不降薪的情况下降低整个平台的开销。先列出这个APP的人员总编制:

  • 13个Java后端开发人员(包含架构师、开发经理)
  • 6个Web开发人员
  • 7个iOS开发人员
  • 7个Android开发人员
  • 3个运维工程师
  • 8个测试人员


测试人员我们先不讨论,因为即便是目前顶尖的软件公司,仍然需要足够的测试人员进行黑盒测试以保证功能稳定,我们先讨论其他的36个人员。这里暂时没有讨论产品经理的功能输出,就以一个大版本周期需要完成150个功能点计算。


第一个大版本,首先13个Java开发人员需要做这么一套框架:

  • 第一个模板之用的Maven项目,需要封装基础的HTTP REST接口操作、引用必须的Jar包,调用分布式RPC框架(Dubbo/DubboX等)
  • 若干个基础项目,封装Quartz或者Crontab访问,进行定时任务触发;封装RabbitMQ或者ActiveMQ消息队列的接收和发送、封装短信和极光推送等
  • 搭建NginX反向代理和负载均衡,控制生产线的IP黑白名单
  • 数据库需要使用MyCat搭建分布式MySQL集群
  • 需要搭建FastDFS用于文件上传


有一部分工作是运维人员协助完成的。运维人员还需要搭建Zabbix监控系统、Elastic Search+LogStash+Kibana的日志收集与查询系统,维护生产线、测试线、开发线等多套不同环境等。


第二个大版本,开发第151-300个功能点。这时候APP主界面上面九宫格已经有9个不同的业务了。13个Java后端开发人员需要做的是把每个单独的业务都进行单独的逻辑设计——分库分表、不同的业务逻辑设计在不同的数据库上,不同的业务相互之间不可以使用JOIN。如果确实是需要使用JOIN的情况,临时解决方法是直接使用MyCat的特性跨数据库查询,更好的解决方案是通过数据同步机制,把数据高速同步到不同的逻辑数据库上。


如果有比较了解的同行看了上面的描述,可能会明白为什么需要这么做,而且做了这些事情对于3个月内必须上线完这300个功能点,但还需要从零开始开发基础业务模块——用户、权限、基础数据等,这13个后端开发人员+运维人员是多么的吃紧。比较资深的同行应该会明白,这软件使用的是高性能高可用性分布式架构,优点就不在这阐述了。


这个APP编制已经达到了40个人左右的规模,算是一个中型团队了,但是在日后的迭代中,都受到了以上的开发框架的制约,新需求和旧的Bug修改越来越慢。尤其是后端开发越发吃紧,不但无法缩减人数,还需要增加编制才能满足每个月大概80个新功能点的增加。而这个技术团队按照广州的市场价粗略估算,每个人税前工资+五险一金,平均需要25万人民币一个人,按照40个人的规模估算,一年薪资的开销需要1000万人民币,3个月也起码需要300万的投入,而一个APP保守估计运营时间也得在一年以上。而且这些预算还没包括产品经理和调研需求的投入、运营团队和推广费用的投入。 


对于传统的中小企业来说,软件平台一年的开支超过150万以上,就会觉得非常难以承受了,尤其是收益可能来得很慢,甚至是没有直接收益。于是对于以推广为主的某些企业,直接使用了微信公众号的形式发布信息,节省了100%的开发投入。部分有更高要求的企业,购买了第三方开发的微信运营软件,打通微信公众号的API,一年一两万元的软件使用费就能够轻松搭建一个满足70%左右需求的微网站。


但这些事我只是为了说明企业难以承受一定规模的开发团队的支出所以采取的一些变通办法。决策人完全不懂技术,不懂得评估使用这些方法拼凑而来的解决方案,在数据的积累上、业务的扩展性上可能存在的短板吗?未必不知道,但是按照以上的开发方式(几乎成为了每个大型互联网企业的技术团队的标配)实在成本太高,只是不知道有没有更好的渐进式投入而已。


而这就是我想要做自己的技术积累并且公布发声的目的之一,我想要归纳出一种未必是高技术,但是是更加容易为企业接受的一种开发方式,更好地适应中小企业尤其是目前尚未进入互联网+的企业的需求。


当然,这仅是我一家之言。最近有朋友和某些渠道联系我工作,沟通后也有发现一些企业决策人不同意我以上的观点的。不过如果说我在个人简历里面要挑出一个相对有优势的地方,我觉得只能是“擅长中小型产品从无到有的开拓性过程”,大型分布式高可用高性能架构,继续留给其他同行去写吧。

【音视频基础】一篇搞懂视频的各种封装格式 在现代多媒体处理中,视频封装格式扮演着至关重要的角色。不同的封装格式决定了视频文件的存储方式、兼容性以及功能特性。无论是观看高清视频、编辑电影剪辑,还是在互联网上流式传输内容,理解各种视频封装格式的基础知识都是必不可少的。在这篇文章中,我们将详细介绍常见的视频封装格式,探讨为什么需要这些格式,以及它们各自的功能和区别,帮助你在选择和使用视频格式时做出更明智的决定。WEBM理解各种视频封装格式的功能和区别对于选择合适的格式至关重要。 阅读详情

相关推荐

cadence——MOS晶体管I-V特性曲线仿真

MOS晶体管I-V特性曲线仿真 目标:使用cadence绘制晶体管的I-V特性曲线(dc仿真) 流程: 新建原理图,将MOS管的栅极电压设为变量Vg,漏极电压设为变量Vd 打开ADEL,点击Variables——Copy From Cellview添加变量;并选择dc仿真,对Vd进行扫描 以Vg作为参变量进行仿真,点击Tools——Parametric Analysis进行设置 选择漏极电流作为输出,进行仿真即可得到I-V特性曲线 ...

skycmq的博客 1万+

PYTHON-“人生重开模拟器“

🔎大家好,我是Aileen★。希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎🆔本文由 Aileen_0v0★ 原创 优快云首发🐒 如需转载还请通知⚠📝个人主页:Aileen_0v0★—优快云博客📣系列专栏:Aileen_0v0★的PYTHON学习系列专栏——优快云博客✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本。

“路漫漫其修远兮,吾将上下求索。” 1811

ubuntu安装XXX包时出现(= 20.0.8-0ubuntu1~18.04.1) but it is not going to be installed

安装mujoco_py时,最后一步尝试 import mujoco_py 时出现报错 esashim.c:1:10: fatal error: GL/osmesa.h: No such file or directory 1 | #include <GL/osmesa.h> | ^~~~~~~~~~~~~ compilation terminated. 在https://github.com/openai/mujoco-py#ubuntu-ins

dealexce的博客 1794

Python-人生重开模拟器

我们已经学习了基本的Python语法知识,现在的年轻人压力普遍都有点大,不如我们利用已经学过的知识,写一个简单的人生重开模拟器,让我们体验一把”吕氏春秋”,我写的游戏,我做主。还有,我们不仅要做该游戏的主角,还要做自己生活中的主角!

qq_62662919的博客 1613

UE5 Mass交通规则设计指南:从Stop Sign到智能红绿灯的进阶配置

本文详细解析了UE5 Mass框架下的交通规则设计,从基础Stop Sign到智能红绿灯的进阶配置。通过UMassTrafficIntersectionSpawnDataGenerator等核心组件,实现动态响应、自然流畅的交通行为系统,提升虚拟城市的真实感与游戏性。

weixin_30500105的博客 502

基于opencv人脸识别实现课堂抬头率检测系统 完整代码 可直接运行 作为毕设

基于opencv人脸识别实现课堂抬头率检测系统 完整代码 可直接运行 作为毕设

机器学习深度学习业余选手 1146

html人生重开模拟器(加强版2.0)

《HTML 人生重开模拟器 - 无限天赋版》是一款基于浏览器的文字模拟游戏,取消了原版的天赋数量限制,允许玩家自由选择任意数量的天赋开启新人生。游戏界面简洁美观,包含天赋选择界面、年龄/年份显示、属性统计和事件日志等功能区域。通过JavaScript动态生成游戏内容,玩家可以体验不同天赋组合带来的多样化人生轨迹,从出生到死亡的全过程都将以文字形式呈现,包括随机事件、成就和最终结局。游戏采用响应式设计,适配不同设备屏幕,提供沉浸式的人生模拟体验。

shandianjianbing的博客 613

懒人必备!Coze一键制作火柴人心理学视频,新号45天涨了2.6w粉!(附超详细实战教程)

其实,只需要借助扣子(https://www.coze.cn/),采用的是 AI 智能体工作流模式,这种模式能够一站式搞定上述所有环节,一条四五十秒的视频,短短一两分钟就能轻松搞定!让制作效率提升了整整百倍!在这篇教程里,我将毫无保留地为大家分享,如何使用扣子 Coze 批量制作 “火柴人风格的心理学视频” 的超详细步骤。

李同学Lino的博客 3859

HTML 人生重开模拟器

这篇文章展示了一个完整的人生重开模拟器的HTML实现,包含以下核心功能: 界面设计:采用响应式布局,包含标题、游戏容器和多个屏幕区域 天赋选择系统:通过网格布局展示可选天赋,支持选择和禁用状态 属性系统:展示体质、智力等四项基本属性 游戏日志:记录人生事件、成就和结局 进度显示:包含年龄、年份和进度条 交互功能:提供开始游戏和重新开始按钮 整个实现采用HTML+CSS构建前端界面,通过class切换实现不同屏幕的显示控制,为JavaScript功能实现提供了完整的基础框架。界面设计简洁明了,色彩搭配合理,具

shandianjianbing的博客 727

GameFramework框架详解之 DataTable配置表模块

一.前言: DataTable模块是项目的配置表模块,配置表一般是从excel导出csv/json/xml格式的,之所以是excel作为源文件,原因是因为策划同学使用配表最方便。然后一键导出到项目中,除了csv/json/xml配置文件外,一般还会伴随着导出配置的实体类,这样研发同学就可以使用了。GameFramework的DataTable模块也是秉持着这种一贯的策略来实现的。 二.DataRow DataRow在excel数据表中,对应的是一行数据,而在代码中对应的其实就是一条数据对象。 接口IData

TxNet 4727

QCC305x-QCC304x系列开发教程之应用程序子系统详解 嵌入式

本文对QCC305x-QCC304x系列芯片的应用程序子系统进行了详细解析,并给出了一个LED闪烁的示例代码。嵌入式系统的开发既需要理论知识的支持,也需要实践经验的积累,希望本文能够为读者在QCC305x-QCC304x系列芯片的开发中提供一些有益的指导。QCC305x-QCC304x系列芯片提供了丰富的外设接口,包括UART、SPI、I2C等,开发者可以根据需求选择适合的接口进行数据传输和控制。QCC305x-QCC304x系列芯片的应用程序子系统是整个嵌入式系统的核心部分,负责管理和执行各种应用程序。

CodeMaven的博客 226

人生重开模拟器 ai版

当你运行这个程序时,它会模拟重新开始人生的过程。你可以输入不同的选择,来看看不同的结果。你可以运行这段代码,根据提示输入不同的选项,体验重新开始人生的模拟过程。希望这个模拟器能给你一些乐趣!

2402_88219100的博客 1415

【GameFramework框架内置模块】15、场景(Scene)

场景(Scene)模块,提供场景管理的功能,负责场景的加载、卸载、切换和管理。可以方便地管理不同场景之间的切换以及不同场景之间的信息传递。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1888

人生重开模拟器 HTML 代码

人生重开模拟器 HTML 代码

as_asdf的博客 669

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python学习-----小游戏之人生重开模拟器(普通版)

Python学习-----小游戏之人生重开模拟器(普通版)

qqsq321的博客 2669

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

重开 优快云 博客一周年

大学的时候开始写技术博客,最早是在 优快云 开的。后来整了个个人博客(http://liaojieliang.com/),处于某个记不清的原因,清空了 优快云 的博客。不久之后觉得个人博客的访问量低得可怜,又不便于与他人做技术交流,于是在 cnblogs 开始写。 然后到去年的今天,2018 年 11 月 8 日,重新在我之前已清空了的 优快云 博客写下新的第一篇博客《命令行终端下的处理进...

一个软件工程师的技术笔记 331

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【代码案例】人生重开模拟器(基于Python)

💬 就像玩 RPG 游戏一样,但这次——

2502_90266460的博客 1003

人生重开模拟器 HTML 代码3.0

人生重开模拟器 HTML 代码3.0

as_asdf的博客 667

【30天python从零到一】---第五天:人生重开模拟器 ,循环语句

本文总共介绍了循环语句的概念,使用等,还介绍了Python实现一个人生重开模拟器的部分代码,剩下的部分的代码我们下一节再讲,希望大家读后也能有所收获!

qq_62662919的博客 1047

博客重开

今天用手机新注册了账号,决定在此重开博客!! 今后将尽量抽空把这些年来接触研究的互联网软件开发知识及心得记录于此!! 【QQ2081731157 Q群387430437  E-mail: grafo@sina.com】  Grafo  2016年06月29日

Grafo6387的博客 205

人生重开模拟器 HTML 代码2.0

人生重开模拟器 HTML 代码2.0

as_asdf的博客 524

人生重开模拟器怎么刷到神秘的小盒子

人生重开模拟器怎么刷到神秘的小盒子 最近在玩人生重开模拟器但是怎么都没办法刷到小盒子 于是我走了捷径… 游戏地址: http://liferestart.syaro.io/view/ 进入游戏随便选择三个天赋,开始游戏 无了之后 点击再次重开 3. 然后右键网页选择检查或者F12打开控制台 双击extendTalent右侧 修改为1048 快去刷新页面点击十连抽吧。 仅供娱乐 ...

qq_36864724的博客 2672

重开博客

发现自己好久没有写了,博客时间停留在2014年4月。2018已经过去了一半多,重新开始写起来吧!

156

html人生重开模拟器(加强版3.0)

以下是一个天赋效果加强的人生重开模拟器版本,所有天赋效果都得到了显著提升: 主要加强内容 天赋效果全面提升:新增强力天赋:新增高级职业:成就系统加强:

shandianjianbing的博客 667

重开博客园博客

前几天由于个人网站遇到些问题,导致网站关闭,由于很早之前的用户名和密码忘记,现在重开博客园博客。 转载于:https://www.cnblogs.com/visionwang/archive/2012/08/01/2618182.html...

weixin_30379911的博客 74

【Python】综合案例--人生重开模拟器

会生成一个介于 0(包含)和 1(不包含)之间的随机浮点数。每次调用该函数都会得到一个不同的随机数。再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况.我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20.如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.生成一个 [1, 6] 的随机整数, 类似于掷色子.此处我们以幼年为例, 简单实现一下这里的处理逻辑.更多的逻辑, 此处就不再实现了。男孩和女孩会遇到不同的事件.之间的随机整数,包括。这里的代码主要就是各种。

Sakura_ding的博客 778
下一篇: 【低功耗架构开发系列】(一)云服务选型
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值