服务一个人的系统,和服务一亿人的系统,复杂度有着天壤之别。本文从工程师文化、组织战略、公司内部协作等角度来分析软件复杂度形成的原因,并提出了一些切实可落地的解法。 服务一个人的系统,和服务一亿人的系统,复杂度有着天壤之别。本文从工程师文化、组织战略、公司内部协作等角度来分析软件复杂度形成的原因,并提出了一些切实可落地的解法。01 何为研发效能?当我们谈研发效能的时候,我们在谈些什么?这个议题被抛出来,有人讨论,是因为存在问题,问题就在于实际的研发效率,已经远低于预期了。企业初创的时候,一个想法从形成到上线,一个人花两个小时就完成了,而当企业发展到数千人的时候,类似事情的执行,往往需要多个团
前言本文介绍架构的复杂度来源之一,高性能。高性能的复杂度主要体现在两面,一是单机实现高性能带来的复杂度,一是集群实现高性能带来的复杂度。单机的复杂度单机中最复杂的就是操作系统,操作系统中与性能有关的就是进程和线程。在早期,计算机每执行一个操作前,都需要等待用户输入指令,这显然无比低效。于是,后面有了批处理操作系统,提前将需要执行的指令和数据录入,形成一个指令清单,这就是我们常说的“任务”,再让操作系统运行。不过,CPU的执行速度是很快的,如果发生IO操作,那么CPU就会空闲。于是,为了提高CPU的利用率,出现了进程的概念,一个任务就是一个进程,进程间互不相关,不能相互访问。并且,操作系统不再将
前言本文介绍架构的复杂度来源之一,高性能。高性能的复杂度主要体现在两面,一是单机实现高性能带来的复杂度,一是集群实现高性能带来的复杂度。单机的复杂度单机中最复杂的就是操作系统,操作系统中与性能有关的就是进程和线程。在早期,计算机每执行一个操作前,都需要等待用户输入指令,这显然无比低效。于是,后面有了批处理操作系统,提前将需要执行的指令和数据录入,形成一个指令清单,这就是我们常说的“任务”,再让操作系统运行。不过,CPU的执行速度是很快的,如果发生IO操作,那么CPU就会空闲。于是,为了提高CPU的利用率,出现了进程的概念,一个任务就是一个进程,进程间互不相关,不能相互访问。并且,操作系统不再将
目录一、视图1.1视图和表1.2创建视图的方法1.3视图的限制①——定义视图时不能使用ORDERBY子句1.4视图的限制②——对视图进行更新1.5删除视图二、子查询2.1子查询和视图2.2子查询的名称2.3标量子查询2.3.1什么是标量2.3.2在WHERE子句中使用标量子查询2.4标量子查询的书写位置2.5使用标量子查询时的注意事项三、关联子查询3.1普通的子查询和关联子查询的区别3.1.1按照商品种类与平均销售单价进行比较3.1.2使用关联子查询的解决方案3.2关联子查询也是用来对集合进行切分的3.3结合条件一定要写在子查询中前几篇我们一起学习了SQL如何对表进行创建、更新和删除操作、SQ
目录一、视图1.1视图和表1.2创建视图的方法1.3视图的限制①——定义视图时不能使用ORDERBY子句1.4视图的限制②——对视图进行更新1.5删除视图二、子查询2.1子查询和视图2.2子查询的名称2.3标量子查询2.3.1什么是标量2.3.2在WHERE子句中使用标量子查询2.4标量子查询的书写位置2.5使用标量子查询时的注意事项三、关联子查询3.1普通的子查询和关联子查询的区别3.1.1按照商品种类与平均销售单价进行比较3.1.2使用关联子查询的解决方案3.2关联子查询也是用来对集合进行切分的3.3结合条件一定要写在子查询中前几篇我们一起学习了SQL如何对表进行创建、更新和删除操作、SQ
今日目标:1:能够说出什么是数据结构,什么是算法2:能说出大O时间复杂度是怎么得来的3:能够说出时间复杂度的几个分析原则并加以实际应用4:能够说出常见的几种时间复杂度O(1),O(n),O(logn),O(n*logn)5:能理解空间复杂度的分析方式1、概念虽然概念很空洞,但是概念还是需要介绍的:数据结构是指一组数据的存储结构算法就是操作数据的方法这只是抽象的定义,我们来举一个例子,你有一批货物需要运走,你是找小轿车来运还是找卡车来运?这就是数据结构的范畴,选取什么样的结构来存储;至于你货物装车的时候是把货物堆放在一起还是分开放这就是算法放到范畴了,如何放置货物更有效率更节省空间。数据结构和算
今日目标:1:能够说出什么是数据结构,什么是算法2:能说出大O时间复杂度是怎么得来的3:能够说出时间复杂度的几个分析原则并加以实际应用4:能够说出常见的几种时间复杂度O(1),O(n),O(logn),O(n*logn)5:能理解空间复杂度的分析方式1、概念虽然概念很空洞,但是概念还是需要介绍的:数据结构是指一组数据的存储结构算法就是操作数据的方法这只是抽象的定义,我们来举一个例子,你有一批货物需要运走,你是找小轿车来运还是找卡车来运?这就是数据结构的范畴,选取什么样的结构来存储;至于你货物装车的时候是把货物堆放在一起还是分开放这就是算法放到范畴了,如何放置货物更有效率更节省空间。数据结构和算
目录一、存储过程二、为什么要使用存储过程三、执行存储过程四、创建存储过程五、小结本文介绍什么是SQL存储过程,为什么要使用存储过程,如何使用存储过程,以及创建和使用存储过程的基本语法。一、存储过程迄今为止,我们使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一些复杂的操作需要多条语句才能完成,例如以下的情形。为了处理订单,必须核对以保证库存中有相应的物品。如果物品有库存,需要预定,不再出售给别的人,并且减少物品数据以反映正确的库存量。库存中没有的物品需要订购,这需要与供应商进行某种交互。关于哪些物品入库(并且可以立即发货)和哪些物品退订,需要通知相应的顾客
目录一、存储过程二、为什么要使用存储过程三、执行存储过程四、创建存储过程五、小结本文介绍什么是SQL存储过程,为什么要使用存储过程,如何使用存储过程,以及创建和使用存储过程的基本语法。一、存储过程迄今为止,我们使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一些复杂的操作需要多条语句才能完成,例如以下的情形。为了处理订单,必须核对以保证库存中有相应的物品。如果物品有库存,需要预定,不再出售给别的人,并且减少物品数据以反映正确的库存量。库存中没有的物品需要订购,这需要与供应商进行某种交互。关于哪些物品入库(并且可以立即发货)和哪些物品退订,需要通知相应的顾客
最近遇一个问题,一个程序调用另一个程序的文件,结果另一个程序的文件被占用,使用不了文件。这时候的解决方案就是把另一个程序的文件拷贝到当前程序就可以了。本文介绍用C#拷贝文件的三种方式。1、Copy 这个是C#比较常用的拷贝文件方法,是File下面的一个方法,这种适用于没有特殊要求的文件拷贝,使用方法如下:stringsourceFile=@"c:\temp\test001.txt";stringtagretFile=@"c:\temp\test003.txt";if(!Directory.Exists(@"c:\temp"))//需要判断文件夹是否存在Directory.Crea