
6、编程感悟
文章平均质量分 63
广州接入
毕业于北京交通大学计算机系,一直从事企业应用开发,有十多年的SaaS平台产品研发经验。擅长系统架构,需求分析。
展开
-
也聊下数字化、信息化等概念
最近看到有篇文章说信息化,数字化的事情,感觉文章的理解很有问题。IT界的概念和名词层出不穷,又都是新的技术,很容易把人搞糊涂。外面比较热,呆在家里也没什么事情,就思考和总结了一下这些个概念,分享给大家,希望能有些作用。 数字化是将人类活动及其要素进行数字化转换或模拟,形成计算机(数学)可以处理的形式或模型。数字化的顾名思义其实就是用数字系统(数学体系)表达。通俗点说数字化也就是数学模型化。数字化的核心概念是将客观对象通过数字化技术在数字世界建立相应的虚拟模型的过程。信息化是指...原创 2021-07-19 10:33:40 · 2141 阅读 · 1 评论 -
程序的组织(1)
程序的组织可以分为代码的组织,功能的组织协同和存储的组织。面向过程,面向对象,面向切面,微服务,SOA等其实都是这个范畴,这些东西也不是编程所独有的,很多东西都可以在现实的生产生活中找到,其本质也是社会生产生活组织的一部分。这些程序组织的方法也并不是相互孤立的或者排他的,是可以相互应用和协作的。程序组织所涉及的基本对象是代码,功能和数据。外部关联对象当然就是团队成员和客户等。而要理解和用好这些核心的基础就是抽象和分类。分类和抽象是相互作用的。这里面,抽象是基本功,抽象的目的是为了分类和简化实现。分类的好原创 2020-09-05 09:32:53 · 1461 阅读 · 0 评论 -
你到底是程序员还是BUG生产机?
其实编程是个讲逻辑的活,但由于需求太大,很多本不适合干这个事情的人都进入了这个行业。本来的职责是生产代码,但他们同时也把Bug多多的创造了出来。而且产生Bug的花式很多,关键是提测的时候Bug很少,一旦修改起Bug来,Bug越来越多,永不收敛。但也不要嘲笑他们,他们是测试的衣食父母,是国家GDP的创造者。Bug多一个,GDP就会长很多。而且他们并不觉得产生这些Bug有什么不妥,因为产生这些Bug的原因要么是产品,要么是主管,要么是结队的伙伴,总之,完全是自己产生的Bug几乎没有。对,最后的Bug产生责任人是原创 2020-06-18 16:52:38 · 2755 阅读 · 0 评论 -
你的不自信,其实是你懒了
这几年以来,经过我仔细的观察,我有一个体会,这个体会应证了一个网络段子:你的人生巅峰时刻就是你高中毕业的时候。直白点说就是大学还学点专业,而工作后,大部分人基本放弃了系统学习,慢慢的很多知识就还给老师了,特别是老板和高管这个群体,要么学厚黑(所谓管理),要么学玄学(易经之类),要么学宗教....但唯独比较少学基础科学或科普。这就导致了一个很有意思的现象,很多前浪喜欢用“人生经验”来说教后浪,却不愿意去系统的复习、学习科学知识,并结合自己的实践去总结下。中美科技之争,大多数年轻人充满斗志,而这些个前浪最怂,原原创 2020-06-07 20:27:32 · 1541 阅读 · 0 评论 -
纯思考:主观和客观中的观察者
人类对自然的认识是不断发展的,经典物理给我们描述了一个客观世界,但客观世界在被人类的认知过程中还是带着主观意识。无论是相对论还是量子世界,观察者的引入或者说效应都是非常重要的。对于我们来说,没有观测没有世界也不能说错。我们就是作为客观世界的另一极--观察者,也会对客观世界产生影响。现实客观世界中,完全靠思维进行推理也不现实,我们必须接触和实际观察这个客观世界。人接收客观世界的信息无非就是视觉,听觉,触觉等方式。而这些信息的传递必然都是物质的,而物质必然导致与客观世界之间的相互影响,因此要做到客观独立的观察者原创 2020-06-06 12:57:27 · 3249 阅读 · 0 评论 -
MySQL的字符集真的是个坑
MySQL的字符集处理看起来非常灵活,一个表中不同的字段都可以设置不同的字符集。但我感觉这个粒度有点细了,一般到数据库就足够了。今天就遇到了这个坑,有个SQL执行比较慢,其实数据量不大。经过一系列的检查和验证,发现是字符集问题引起,因为查询的字段间字符集不一致,导致了很多字符转换的操作,降低了性能。一个正常1秒就可以完成的语句,居然要花10来秒,这个字符集的坑还不浅。utf8和utf8-mb4是不一样的字符集,如果字段的字符集不一样就会导致大量的字符集转换操作,消耗计算资源,拖慢查询速度。以此为记。原创 2020-06-04 16:38:24 · 1595 阅读 · 0 评论 -
构建SaaS化平台产品的建议
构建SaaS化产品相对于定制、普通产品而言肯定要难很多,但以往的产品研发经验还是有用的。毕竟发展路径还是遵循系统的定制化、产品化和SaaS化这个进发路径。我觉得构建SaaS产品需要有以下注意点:1)无论是做定制,产品还是SaaS,都不要技术优先,而要需求优先。做SaaS架构要面向需求(应用)架构,而不是面向技术架构。技术的使用是以满足需求为目的。同时要极力避免使用单一架构或者单一技术解决问题的...原创 2020-05-02 18:17:08 · 2665 阅读 · 1 评论 -
SaaS产品开发的难度
SaaS产品的开发并不是简单的将单机版云化,相对于非SaaS化的产品研发来说难度要大很多,特别是toB的SaaS应用软件,主要体现如下:1)SaaS化产品首先要解决底层的系统架构符合云计算的要求,传统的分库分表多用户只是SaaS的一些基本要求,采用传统的系统架构如果不支持分布式,也不能叫做SaaS。微服务架构当然有其优势,但对于B端应用来说,微服务架构其实是不适合,这里的主要问题是微服务对事务...原创 2020-02-24 13:55:11 · 2693 阅读 · 0 评论 -
产品设计质量的思考(1)
产品质量的发展从质量是检测出来的,到质量是制造出来的,到现在质量是设计出来的,经历了3个阶段,现在质量处于新全面质量阶段,这个阶段的特征是质量已经从最初的从属地位到了哲学高度。当然,产品质量到了现在阶段也不是说质量的检测和制造保证就不重要,而是对于质量的保证要更多的从设计(甚至是需求阶段)就要开始,而且要作为重点考虑的阶段。产品设计阶段的质量对于产品整个研发的成本来说至关重要,传统的产品设计质...原创 2020-01-01 11:01:06 · 1622 阅读 · 0 评论 -
Java与C#的比较学习记录(2)
1) I/O:这个东西其实比较没什么意义,不过java的流概念跟C#的流概念其实都差不多,继承体系都差不多,只是Java中是Input,Output,而C#中是Read和Write.其实各自支持类中的方法名大部分都相同.当然,C# 除了流支持外,还兼容原来的一些文件读写.2)序列化:对象的序列化两者都有支持,做法都差不多,当然,C# 中除了二进制序列化外,还可以序列化成XML格式(Java中有不有原创 2012-08-11 11:54:10 · 2921 阅读 · 0 评论 -
F#学习过程中的一点看法
接触F#其实已经很久,因为没有用,也就没有仔细去学,现在在公司的一部分工作也是负责新技术的研究,在弄VS2011过程中发现MVC4中有模型层直接用F#的模板,看来微软有点要实际推F#的感觉,于是决定系统的学习一下F#。下面聊聊这几天学习F#的一些感觉:1)函数式编程其实并不是什么新的玩意,可以看做是一种过程式语言,属于结构化编程,面向过程。这其实也符合我原来对面向过程和面向对象编程的一些看法(可以原创 2012-04-13 08:56:46 · 3434 阅读 · 0 评论 -
C#的新特性体验(异步方法的同步调用)
异步编程出现已经很早了,微软在silverlight中的(RIA Service)将这个发挥到了极致,其实就是只提供异步远程服务调用,说起来也是非常美好的事情,但实际上却未必如此美好,因为很多应用,特别是带有业务性质的,都需要一定程度上的同步,在这种情况下如果用异步编程就会非常的复杂,需要用异步模拟同步,这个工作量是非常大的,特别是在业务逻辑比较复杂的情况下,需要调用一系列异步方法来组合,而调用在原创 2012-03-27 14:01:59 · 4589 阅读 · 0 评论 -
一点小预测(纯娱乐)
感觉经济的寒冬要来了,老百姓的日子估计难过了,但人还是需要积极向上,因此对技术的发展做个小预测,以10年计:1)云计算将会深入企业应用;2)现有的电商模式将会被淘汰或者被融入;3)云计算后很快就会形成云集群,这将会颠覆现有的很多商业模式和软件应用模式;4)很多新技术,新服务模式将会在云平台下相互渗透和融合,并将自己发挥得淋漓尽致;5)云计算下的安全技术将会需求强劲;6)你可以将云平台看作是一种融合原创 2012-03-23 21:04:47 · 2532 阅读 · 0 评论 -
关于分布式流水作业架构的一点浅见(领导者压力和瓶颈的解决方法和思路)
这段时间其实一直在思考Hadoop的东西,主要是我准备用Dotnet来模拟玩一下,这两天刚好看到 http://blog.youkuaiyun.com/cenwenchu79/article/details/7206804 这篇文章,看来对hadoop的架构有看法的不止我一个,当然,别人都是牛人,有牛人敢怀疑,我也跟着说点看法。首先,坦率的讲,我没有用过hadoop,我只是了解过其机制,根据上面那位牛原创 2012-01-21 10:31:57 · 6328 阅读 · 4 评论 -
微软技术系列(WebForm)
在桌面程序和BS应用程序比较来看,无论是开发速度还是用户体验来说,都是桌面程序要有优势.由于BS程序的特性,使得在开发BS程序时可使用的资源非常有限(客户端只能借助浏览器,客户端与服务端的无状态交互,服务端的集中计算压力等),因而也严重影响了BS程序开发的效率。怎么让BS的开发能像桌面开发那样富有效率,一直以来也是业界的追求。微软的WebForm就是这样一种尝试,而且取得了一定的成功。Webfor原创 2012-09-26 13:26:35 · 2885 阅读 · 0 评论 -
被神化的海量数据处理和高并发处理
其实任何简单的问题,只要规模大了都会成为一个问题,就如中国人口多,很多小问题都会变成大问题一样。但处理这种海量数据的方法无非就是分治和”人海”战术。使用人海战术的前提是问题的划分能够支持这种人海战术,其手段无非是切割(纵向,横向)和负载均衡。纵向分隔主要是按业务(功能)来分,也就是所谓面向服务架构,横向分隔方式比较多,主要依赖于所处理的对象属性,比如时间属性或者特定业务数据属性划分(比如铁路客票的原创 2012-01-10 23:00:15 · 13937 阅读 · 10 评论 -
剖析云计算技术及架构(1)
我希望能有这样一台计算机:运算能力可大可小,存储空间也可大可小,我需要多少就配多少,只需要通过参数配置就达到计算机系统的升级和降级。其实云计算就是要提供给每个网络用户这样的一种逻辑上的计算机。 我前面的博文已经讲了云计算的一些概念和我的理解,其实我觉得要把握为什么会有云计算,只要把握住两个地方,一是资本的逐利性,二是充分资源共享。资本的逐利性是云计算的根本动力,降低成本,提高效率,实现利润最大原创 2011-12-08 14:23:12 · 4931 阅读 · 4 评论 -
编程思想的理解(POP,OOP,SOA,AOP)
1)POP--面向过程编程(Process-oriented programming ):面向过程编程是以功能为中心来进行思考和组织的一种编程方法,它强调的是系统的数据被加工和处理的过程,在程序设计中主要以函数或者过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成。面向过程强调的是功能(加工),数据仅仅作为输入和输出存在。这种过程化的思想是一种很朴素和普遍的思想和方法,人类很多原创 2011-11-29 09:15:40 · 45242 阅读 · 4 评论 -
闲谈计算机系统(2)
1)逻辑计算与处理部分与数据存储部分交互叫数据库访问,有:ODBC,BDE,JDBC,ADO,ADO.NET,DAO....2)系统之间或客户端与应用服务器之间的通信有:HTTP(s),SOAP(WS,WCF,NetRemoting,WCF RIAService),Cobra(JRMI...)3)几个人同时要用一个东西,叫资源竞争,对这种情况进行处理叫并发处理,保证大家按一定词序处理叫同步原创 2011-11-30 07:36:49 · 2856 阅读 · 0 评论 -
闲谈计算机系统(1)
1)可以将系统抽象为5个部分:输入,输出,存储,计算(处理),通信网络;2)其实这也是计算机的基本体系架构,也是人本身的模型抽象;3)系统作为一个整体向用户提供服务,这种模型可以称作面向系统,当然把系统看做是一个对象,就可以叫面向对象,如果你把关注点放在系统的输入,输出,进行运算和处理的过程,这叫面向过程;如果系统专门用来向其它系统提供某种服务,你可以叫它面向服务,而如果你的系统是由这样的原创 2011-11-29 22:50:40 · 2988 阅读 · 0 评论 -
我眼中的云--暂告一个阶段
感觉写这个系列的博文很累人,这些天也在比较系统的学习这个方面的知识,有些东西跟我原来的预感一样,概念多于实际,但云计算的出现,也阐释了一个基本的商业法则:利润=收入-成本,增加收入降低成本是企业活动的基本目的--赚取更大的利润。云计算通过网络共享来充分利用资源,同时保证应用和数据的安全和可靠来降低成本,同时,提高可靠性和性能(服务响应)也可以增加收入。因此,云计算的发展也许会遇到波折,但肯定会向前原创 2011-10-31 21:56:43 · 2685 阅读 · 2 评论 -
对于设计模式的一点思考(杂记)
在C#后台,要用工厂方法,估计大家觉得都很正常,但对于前端Web开发呢?却未必能想起来,特别是那些对在后台拼接html字符串非常鄙视的人来说,就更不要说了.人总是很喜欢把很多事情莫名的分出三六九等,或者是陷入别人设定的一种广告定势中去,固然可能获得某种优越感,却不知道已经把自己的思维束缚.在后台通过拼接html字符串来输出各种html元素,其实也是一种工厂方法,而且在工程化的系统开发中,这样做虽然原创 2012-09-21 23:09:08 · 2864 阅读 · 0 评论 -
突然发现哥就是一个传奇
在天朝做一名程序员,确实不容易,每一个其实都是一个传奇,无所不能的金刚战士.这段时间一直都在忙着做一套管理系统,进度相当的紧张,直到最近两天才看到曙光,写久了代码,就想着放松一下,上来码码文字,调节一下.今天打了场球,回来路上突然想数数自己用过编程语言,在一番回忆之后,就有了上面的感慨---哥真的是一个传奇.下面是我学过用过的语言的编年史(由于年代久远,时序不完全正确,上榜的标准是学习持续时间不低原创 2012-09-25 22:47:50 · 5531 阅读 · 12 评论 -
REST架构风格
REST字面意思是表示性状态转移,它是一种充分利用Http协议的BS架构风格.为什么这么讲呢?我们看看Roy Thomas Fielding博士对于REST机构风格的定义.REST架构风格是一种组合架构风格: 1)REST整体架构上使用CS风格,这种风格其实也是BS架构风格的基础风格; 2)REST在服务端采用无状态架构风格,无状态(面向非连接)也是BS架构风格典型特点,传统的CS架构原创 2012-11-01 19:48:06 · 5354 阅读 · 0 评论 -
SaaS化产品的平衡
1)通用化和定制化之间的平衡;2)具体化和模板化之间的平衡;3)易用性和业务性之间的平衡;4)标准化和个性化之间的平衡;5)结构化和非结构化之间的平衡;6)固化流程和灵活流程之间的平衡;7)易用性和可控性之间的平衡;8)用户和权限的复杂度平衡;9)单企业或多企业平台之间的可分析性平衡;10)ToB管理软件中的管理和被管理之间的平衡;。。。。。。需要思考的...原创 2019-09-11 10:58:18 · 919 阅读 · 0 评论 -
系统架构师考过7年了,没赚钱
这个东西就是没考心不甘,考了好像也没什么用处,就是吹牛的时候说可以说自己是有证的程序员。当然,公司申请什么资质,补贴的时候把自己定位高级人才,好像有点底气。据说企业现在也可以给自己评高工,下次是不是可以拿这个给自己评个高工?当然,企业是赚钱的,这才是目标。大家考要趁早,不然用处真不大。...原创 2019-07-27 09:14:33 · 8049 阅读 · 12 评论 -
为什么大家喜欢用已有框架
利用现有的框架,突破框架做自己的底层确实不容易,这几天经历了不少的坑,看起来还是填平了,但未来的坑还是未知。一套完整的分布式架构框架的基本功能就基本搞完了,还是蛮有成就感。但在这个过程中,也确实感到自己搞框架还是压力非常大,能体会绝大部分的程序员都不敢自己重复造轮子,搞个适合自己项目的框架的原因。底层意味着责任,而用现有的框架出了问题,都可以推到框架上,压力要小很多。而自己弄框架,出了问题,不管是...原创 2019-07-06 11:52:43 · 969 阅读 · 0 评论 -
ToB或ToC
ToC强调个人自由,强调体验,是消费型。ToB强调团队协同,天生具有管理性质,属于生产型。虽然现在的产品设计中,两种产品的设计互有借鉴,但这两类产品的设计还是有非常大的区别的,基本的出发点都不同。这也是为什么腾讯总是很难做好企业服务的原因。不是人的能力和品质的问题,是思维方式的问题。目前来看,产品经理偏C的多,这也是很多ToB产品,特别是企业服务类的产品做得不好的根本原因。对于ToB产...原创 2019-07-11 09:04:18 · 3687 阅读 · 0 评论 -
前后端分离开发的利与弊
事物总是多面性的,开发也不例外。现在开发流行前后端分离,分离的好处当然很多:1)后端专注业务及逻辑,前端专注于展示和交互,前后端分离的好处就是专业分工和前端展示可以多样化。耦合度的降低增加了灵活性;2)前后端分离还是比较适合目前的应用方式(SaaS化)的。但前后端分离也有很多不利的地方:1)增加灵活性的同时也增加了复杂性;2)对业务的理解不利,前后端分离增加了系统开发的难度和工...原创 2019-06-22 07:20:08 · 4360 阅读 · 0 评论 -
H5自动适配之终极方法(耗费了几个小时的结晶)
如果你在适配H5页面时,遇到问题,不妨用下面的方法,其实编程就是积累:$(function(){ if(/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)){var params='width=750,user-scalable=no,initial-scale='+(screen.width/750)+',minimum-scale='+(s原创 2016-12-29 13:41:38 · 2069 阅读 · 0 评论 -
Spark学习(函数)
def main(args: Array[String]): Unit = { //匿名函数 () => Unit 是匿名函数类型 函数体() => println("I'm an anonymous function") val f1: () => Unit = () => println("I'm an anonymous function") //匿名函数 va原创 2016-09-07 15:10:18 · 1702 阅读 · 0 评论 -
从金山毒霸看这个社会的“底线”
言语上的巨人,行动上的小人。毒霸系已经深入劫持我的系统。360本来就是流氓,但毒霸本质上更流氓,却要立个牌坊!其实这也是我们这个社会的真实写照。原创 2016-08-19 06:50:58 · 2020 阅读 · 0 评论 -
一起学编程(2--认识世界)
人类认知这个世界的开始并不是开始于人类成为人类的时刻,应该是生命开始诞生的时候就开始了,因为我们对世界的认知中,有部分已经刻画在我们的基因里面。在这里,我并不想写认知的历史和哲学,因为一是功底不够,二是我的目标是写学编程。但由于编程本质上也是认知世界的一部分,因此,我想我应该被允许从这里开始我们的编程之旅。原创 2015-06-03 20:46:22 · 2138 阅读 · 0 评论 -
BIM手记(3) mousemove
viewer.canvas.onmousemove=function(e,a){ var theNode=viewer.impl.hitTest(e.x,e.y,false);//这个函数的作用就是获取鼠标位置的构建id(dbId) if(theNode) { //viewer.clearSelection(); viewer.toggleSelect(theNod...原创 2019-03-18 21:19:52 · 993 阅读 · 0 评论 -
分布式计算(C#)实践连载预告
这段时间比较忙,码代码码得都有点反胃了,没顾得上写博客,看在优快云赠送一张云计算门票还管3餐中午饭的份上,还是决定完成这个每月4篇的基本任务,但发现又没什么可写的,想来想去,还是把自己写的简单分布式计算模型分享出来,整成一个小连载,利用这个简单的分布式模型,其实可以实现简单的MapReduce功能.虽然比较简单,但Hadoop的原理其实也是这样的.当然,出来献丑的心理素质还是具备的.今天出来的时原创 2013-05-30 08:53:06 · 2863 阅读 · 0 评论 -
回复网友提问:云计算,大数据,数据库,数据仓库之间是什么关系
有网友问云计算,大数据,数据库,数据仓库之间是什么关系,在这里我就我的理解简单解释一下:首先简单的看一下云计算与大数据的概念.1)云计算:云计算本质上是一种计算资源集中分布和充分共享的效用计算模式,其中集中是为了计算资源的集约化管理,分布是便于扩展计算能力.集中分布式是针对云服务提供商的,充分共享是针对用户,在云计算中,虽然对于每个云用户来说都拥有一台超级计算机,但本质上,这些用户是充分共享了云服原创 2013-04-26 09:15:29 · 14041 阅读 · 6 评论 -
Java学习笔记(类的可见性)
1)类的可见性:public;友好的(无关键字);protected;private; public:公开类,在包内,包外都可见,是可见性级别最高的; 友好的:也是默认的安全级别,包外不可见,包内可见.用在内部类同protected级别相同. protected:保护级,只能用于内部类.对类及子类(包内子类,包外子类不可见)和包内其它类可见. private:私有级,只能用于内原创 2013-01-06 08:36:59 · 10067 阅读 · 2 评论 -
一起学编程(5--流程)
程序的流程可以分为3种基本流程:顺序流程,分支流程和循环流程。其它程序流程都可以由这三种基本流程复合而成。顺序流程没什么可说的,分支流程是根据判断条件的结果来执行不同的流程分支,一般语言都有的ifelse,switch等。需要注意的是switch语句中的case语法,不同的语言有不同的处理方式,很多编程语言中,这种case分支间如果没有break中断,则会一次执行的。循环流程也没什么特别之处。与程原创 2015-06-23 23:19:47 · 1916 阅读 · 0 评论 -
我对接口与抽象类的理解
1、从编程思想上来讲,抽象类首先是类,具有分类学的意义,有两层含义,一是以研究对象的整体来划分的,二是互斥性。类一定存在具体的对象才有意义。分类一般采用树型层级进行。一般情况下,上一层分类都是对下一层分类的分类。而接口表达的是一种标准,本身不具有分类学意义,但可以作为一种分类的属性。接口是从对象的局部特征或者功能来进行的,但它并不代表对象。因此类表述的是一种“是(IS)”的概念,而接口表述的是一种“具有”或者“拥有”(HAS)的概念。至于抽象的概念,严格的讲,在这个层次上,类本身就是一种抽象。但我们也可以把原创 2011-02-20 00:43:00 · 2365 阅读 · 0 评论 -
设计模式之--中介者模式
在很多情况下对象之间的交互是很复杂的,在开始设计的时候,你根本不知道它需要交互的对象是谁,是什么类型。我们知道如果要对象A与对象B之间能相互交互,A与B就会构成相互依赖,如果对象一多,这种依赖就会很复杂,况且很多时候我们都不知道需要互相交互的对象有哪些,因此,在设计的时候也没办法原创 2011-07-29 14:25:57 · 5335 阅读 · 1 评论