当前位置:K88软件开发文章中心编程语言C/C++C/C++01 → 文章内容

C/C++开发人员需要的技能

减小字体 增大字体 作者:阿烈的博客  来源:Bcoder资源网  发布时间:2018-12-30 5:00:37

t) :
randint = random.randint(minValue, maxValue)
v = format(randint, bit)
while v in s :
randint = random.randint(minValue, maxValue)
v = format(randint, bit)
return v

#生成所有随机数
def randAll(minValue, maxValue, number , bit):
i = 0
rand_list = []
while i < number :
i += 1
v = rand(minValue, maxValue , bit)
s.add(v)
rand_list.append(v)
return rand_list
#从文件中读取随机数
def readRandFile(rand_file):
f = open(rand_file)
lines = f.readlines()
for line in lines :
line=line.rstrip()
s.add(line)

#将随机数保存到文件中
def writeRandToFile(list):
fw = open("out",'w')
for v in list :
fw.write(str(v)+'\n');
if __name__ == '__main__':
lenArgc = len(sys.argv)
if lenArgc >=5 :
minValue = int(sys.argv[1])
maxValue = int(sys.argv[2])
number = int(sys.argv[3])
bit = int(sys.argv[4])
if lenArgc > 5 :
rand_file = sys.argv[5]
readRandFile(rand_file) #从文件中读取随机数

#生成随机数
rand_list = randAll(minValue, maxValue, number , bit)
writeRandToFile(rand_list)
else :
print "参数不正确!"
 

(2) 读取execl(hui99的操作定义)生成Selenium脚本
execl的数据列有以下,

用脚本去读取execl文件,获取相关数据信息,生成selenium脚本文件并执行。 不生成selenium脚本文件,生成sql文件也行,但并非每个人都能直接操作数据库的。

(3) mp3 tag操作

电脑下了n多mp3文件,你怎么读取mp3里的tag信息,里面的很多标签都乱七八糟的,如何去修改呢?一个一个文件属性去修改? python里有非常简单的类库。

(4) 文件重命名

你下载了数G的电视剧/动画片,文件名又乱又长,怎么办?

我确实遇到过这种事情。

柯南都500多集,海贼王400多集、棋魂、灌篮高手等,美剧都六七季,一季20集。你就别想手动修改了,会死人的。

用脚本语言一下了就可以搞定,linux shell也可以轻松制定。

美好生活就是如此的简单。

2.3. 集成开发环境IDE [不细谈]
2.4. 构建工具
使用自动构建工具的理由:

(1) 在非图形化界面下构建程序;
(2) 构建过程繁琐而且步骤固定,自动构建工具比交互式的手动构建省事省心;
(3) 多人分别为同一个项目工作,需要有统一和一致的构建环境,比如类库依赖。
ant/maven在几年前还不错,到了现在(2015年)已经略显沉重。我这里推荐gradle。我从13年就开始用gradle,上手简单,值得拥有。

2.5. 开发最佳实践(具体内容可参考我3月份写的”应用开发部署实践.doc”)
2.5.1. url怎样才是友好的?
阿烈:为什么我会提到url的问题?

产品运营天天跟你闹:URL太长了,URL参数太多了,URL太乱了,这样搜索引擎搜不到我们的产品啊?你要怎么办?

2.5.2. 调用第三方接口应该注意什么?


2.5.3. 图片处理(压缩,水印等)
阿烈:为什么hui99的图片处理这么烂?

压缩的效果太差了!


2.5.4. 测试、设计模式等等
3. 数据库技术[不细谈]
能有dba级别肯定牛,但这种人可能会比较少。

但也至少熟练应用mysql(或其它关系数据库), 知道SQL优化。

4. 其它??(上面提到的都不是本文所讲内容的关键)
我们从一个网站从小到大引起的架构变迁,来看待这个问题!

这里以豆瓣为例。具体内容请点击豆瓣网技术架构变迁。

4.1. 网站架构变迁路线
4.1.1. 单机模式
这一阶段没有太大的访问量,甚至只有一台服务器就搞定了所有的访问。压力不高。 应用服务器和数据库放在同一台机子上,前端可能还会架设web服务器(IIS/apache/nginx等),实现动静分离。


4.1.2. 数据库分离
压力增大,出现瓶颈,开始分离数据库。

4.1.3. 数据库主从复制与读写分离
网站初具规模,DB压力大增,单独的一台DB已经满足不了现在的访问量,开始考虑读写分离的Master-slave库,使用三个及以上的服务器。

访问量继续增加,增加到了DB的压力在Master的机器上非常的明显了,Master开始出现吃不消的情况,出现写耗尽。主从也已经不能满足要求,需要进一步解决负载问题,此时要引入Mysql Proxy程序,进行中间层代理,实现负载均衡,易于扩展。

注:读写分离采用的方法是写数据库时在一个数据库上写入,而要读取时则从多个其他的数据库中读取,通常将用于写入的库称为master库,用于读取的库为slave库。读写分离适用于读多写少,并允许一定延时的业务中。

4.1.4. 架设应用服务器集群
随着访问数的增长,单台应用服务器已经不能响应如此多的请求,必须要架设应用服务器集群了。

4.1.5. 数据库分库分表
在系统发展的初期,通常会将各种不同的数据库放在同一个数据库中,随着业务的多元化及业务的水平伸缩,数据库的连接数会成为稀缺和资源,对于这种情况分库是个不错的选择。

分库通常按照业务领域将原来存储在同一个数据库的数据拆分到多个数据库中。例如ebay就按照其业务领域分为商品、用户、评价、交易等数据库,每个数据库只用于处理相关业务的数据,因此可用的数据库连接数会得到很大提升。

分表意味着我们可以将同一数据表中的记录通过特定的算法进行分离,分别保存在不同的数据库表中,从而可以部署在不同的数据库服务器上。

4.1.6. NoSQL?其它?
4.2. 架构变迁带来的问题
(1) 你如何知道系统的瓶颈在哪?
大家也看得出来,访问量的不断增大导致了架构的不断变迁。访问量的增大导致了系统出现瓶颈,而不能满足用户的请求了。

通常瓶颈的表象是资源消耗过多、外部处理系统的性能不足,或者资源消耗不多,但程序的响应速度却仍达不到要求(建行团有一次秒杀时遇到到这种问题)。

资源主要消耗在CPU、文件IO、网络IO以及内存方面,机器有资源是有限的,当某资源消耗过多时,通常会造成系统的响应速度慢。

你怎么知道系统出现了瓶颈了呢?出现的瓶颈在哪里呢?

(2) 你如何架设这些服务器?
(3) 你如何监控这些服务器?
你不监控,你就不知道系统的瓶颈在哪,性能优化、架构变迁也就无从谈起!

而且网络状况复杂,难以保证7×24小时100%的在线,你当然不希望自己网站或者服务器由于各种原因而不能访问。

故障的原因主要:

网站被挂马。网站一旦有漏

上一页  [1] [2] [3]  下一页


C/C++开发人员需要的技能