免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无风之谷
打印 上一主题 下一主题

专家座谈——Web开发中你所遇到的性能问题(大奖) [复制链接]

论坛徽章:
0
51 [报告]
发表于 2011-09-16 19:49 |只看该作者
占个座,等待下一话题。

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
52 [报告]
发表于 2011-09-16 22:34 |只看该作者
1,初学者怎么入门Web开发?
答:初学者入门web开发:
   1)首先学习html语法,我当年也是拿着w3cschool的chm里的例子一个个手动照抄,在IE上查看效果,
        学习完html后,这样对于web开发有一定的认识,web开发就不会觉得神秘,下面的学习就比较好学了。
   2) 学习一门web语言,这个根据自己以前的基础来,会java的话选择jsp,若是没有基础的话,我推荐用php,学习用动态语言做开发时,学习完基本语法后,最重要的是学会第一个访问数据库,查询并输出html代码的例子。
   3) 学会如何访问数据库并展示后,需要经常使用熟练了,就可以在web上增加一些js和css.


2,你选哪种Web开发技术,JEE、PHP、.Net、RoR、Django......?,依据是什么?
答:我选择php,因为php容易学,语法灵活。,lamp这样的架构使用得最多,有广泛的群众基础,有众多的教程和解决问题的办法。
3,如果你是一名Web开发者,请把你在Web开发中遇到的性能问题跟大家做个分享。
答:我在web开发中遇到的性能问题有:在做IP定位时,做个更新整理IP库,需要上传一个文本文件,用程序把文件解析,检查文件中的包含的国家,省,市,运营商是否匹配。导入完成后,需要在数据库里把IP段进行拆分,让IP段不出现重叠部分,然后把相邻的两个地理位置相同的IP段,进行合并。
     最后实现后发现导入30万条数据,耗时1个半小时。
    通过分段检查发现,导入数据库,和拆分合并时间耗时最长。
   后来修改算法,把文本文件先导入数据库,再做检查合法性,这样比先检查后,逐条写入快很多。
   IP段拆分合并功能,原来是把数据重数据库中取出,然后在程序里进行处理,而优化后是写存储过程直接用SQL语句进行处理。
   最后优化后耗时30分钟。

论坛徽章:
0
53 [报告]
发表于 2011-09-16 23:47 |只看该作者
python号称是跨平台的,但是同样的类库连接sqlserver,在linux上一切OK,在windows上就需要重新修 ...
tomac_cu 发表于 2011-09-16 00:45


我觉得这是对跨平台的误解,python和php在语言层面是跨平台的,这点C和C++也不例外,
然而,我们写的程序还会用到很多库,这些库就未必跨平台了,举几个具体的例子,

php的strptime,手册说“Note: This function is not implemented on Windows platforms.”
php的strftime,手册说“...will not work on Windows, some Linux distributions, and a few other operating systems.”
如果用到这种函数,可能也会有莫名其妙的跨平台问题,还有一些库,压根儿就完全不支持windows,
例如php的PCNTL系列函数,Semaphore系列函数,inotify系列函数,...................

python源文件保存为utf8,print输出的字符串,在linux下(一般终端都是utf8编码)正常,
但是到windows下,就“不行”了,在gbk终端编码的linux下,也会出现“乱码”,
这类跨平台问题其实不是语言的错,是使用者没有使用正确的方式做事情。

系统可能locale不同,可能字节序不同,库的行为又有可能依赖这些参数,
我们写程序的时候,不能依赖默认行为,尤其是默认依赖平台的默认行为。

几乎每个语言都有类似的“跨平台”问题,甚至是html,css,js也会面临兼容性,
这就需要语言的使用者熟悉自己所用的每一个部件,必要时甚至要做一些dirty的hack。

论坛徽章:
0
54 [报告]
发表于 2011-09-17 00:24 |只看该作者
回复  eyeyin


    记得N年前看过一篇文章,说的是php执行效率的问题,文章就提到,php的效率其实是很高的 ...
chenyx 发表于 2011-09-15 21:49



    经验之谈啊,一般框架是不会成为性能瓶颈的,每秒处理能力超过带宽了,
一个很慢的框架,只要不产生db访问,纯url路由和模板渲染,上1000/s不是问题,
按每个页面10KB算,已经有10MB/s了,需要机房的百兆带宽跑满才能显现瓶颈。
因此产生的瓶颈,可以加带宽,堆机器,建缓存,很容易就能扩容,最不好办的就是数据存储,
数据一海量,ACID和CAP够专业的dba喝上好几壶,这也是互联网架构上很核心的问题,
除了db,用户产生的海量小文件,也非常头痛,成本,性能,可靠性,三者是互相矛盾的。

论坛徽章:
10
CU大牛徽章
日期:2013-09-18 15:20:48程序设计版块每日发帖之星
日期:2016-07-21 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:01技术图书徽章
日期:2014-10-14 16:00:43天蝎座
日期:2013-09-27 17:41:29CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58每日论坛发贴之星
日期:2016-07-21 06:20:00
55 [报告]
发表于 2011-09-17 01:03 |只看该作者
我觉得这是对跨平台的误解,python和php在语言层面是跨平台的,这点C和C++也不例外,
然而,我们写的程 ...
Orpherus 发表于 2011-09-16 23:47


---------------------------------------------------------------------------------------------------
python和php在语言层面是跨平台的,这点C和C++也不例外,
---------------------------------------------------------------------------------------------------
这里有一些你所不了解的细节:python 连接 sqlserver 时,虽然是同样名称的库pymssql,但由于mssql的不开放性,所以windows上的连接版本较低,那么在linux上基于正常的yum apt-get等方式都安装的版本就会比较新。导致最终在安装时不出问题,在运行期出问题。而这样的细节在python上有很多。

仅仅是从语言自身上进行比较,python的不同版本也有不同的语法差异,这样的东西真的很令人头痛。比如self的问题。
相较而言,PHP则好多了,至少在php站点上的手册很完备。而python则让人摸不到头脑。


---------------------------------------------------------------------------------------------------
python源文件保存为utf8,print输出的字符串,在linux下(一般终端都是utf8编码)正常,
但是到windows下,就“不行”了,在gbk终端编码的linux下,也会出现“乱码”,
这类跨平台问题其实不是语言的错,是使用者没有使用正确的方式做事情。
---------------------------------------------------------------------------------------------------
这也不是语言的错,那也不是语言的错,最后只能怪使用者不好,这样的逻辑是不是有点强辞夺理?学用python反而是有罪的?这么说可能有点钻牛角尖
至少我觉得让真正的初学者,从python这种对使用者要求较高的语言开始,一定不是好建议。


---------------------------------------------------------------------------------------------------
系统可能locale不同,可能字节序不同,库的行为又有可能依赖这些参数,
我们写程序的时候,不能依赖默认行为,尤其是默认依赖平台的默认行为。
---------------------------------------------------------------------------------------------------
想要写出考虑到方方面面的程序,真的是很难的,需要专家家的才能操控。


---------------------------------------------------------------------------------------------------
几乎每个语言都有类似的“跨平台”问题,甚至是html,css,js也会面临兼容性,
这就需要语言的使用者熟悉自己所用的每一个部件,必要时甚至要做一些dirty的hack。
---------------------------------------------------------------------------------------------------
推荐一个跨平台问题比较少的语言给初学者,才是一个比较严谨的学术态度
让初学者更少经历挫折,更容易进入软件开发这个行业。
因些我还是建议有C基础的初学者,使用PHP,因为手册更完整,更容易获得成功。

论坛徽章:
0
56 [报告]
发表于 2011-09-17 03:24 |只看该作者
回复 55# tomac_cu


    我也认为php是最容易入门的web开发语言,但是这几个理由,我觉得比较牵强。

1. python的mssql库,linux发行包打包的版本比windows版本高,带来了问题。

这种事情换成神马语言都无能为力,64位php和32位php的整数范围不同,扩展也不通用,
“不小心”装错版本,一样会带来隐患,负责任的开发者,会尽力确保版本和编译参数一致。

用过linux的都深有体会,有arch这样激进的,也有debian stable和rhel这样比较保守的,
同一个发行版的不同版本之间差别大,同时期的不同发行版之间差别也很大,
即使系统版本完全相同,也可能由于使用了ppa这样的仓库导致版本有别。
在没有apt和yum的时代,手动解决依赖关系是多么恶劣的事情。


2 python不同版本之间有差别.

2.x和3.x的差别确实巨大,可以看成是php5跟4的区别,或者php6跟5的区别,
但是2.x还是特性还是比较稳定的,尤其是2.5发布之后,不向下兼容的情况很少,
php5.x在发展的过程中,也有一些不兼容的变化,这都不是什么问题。


3. php手册更完整.

这个不知道是跟谁比,起码python手册不输于php,而且chm和pdf可选。
说py被功夫网盾掉,不易下载,或者说中文资源不如php多,倒还说得过去。


我觉得,流行的语言和框架,都有自己的优缺点,否则早就只剩一种了。
php容易入门大家都有数的,没必要用比较牵强的理由去诋毁同类语言。


vim vs emacs, linux vs windows, gnome vs kde,  
php vs python vs ruby vs perl, mysql vs postgresql,
.net vs Java, firefox vs opera, pc vs mac
............................................................................
争论似乎从未停止过,最后常收敛于人身攻击,
我先检讨下自己,不该引起争论,楼下请保持淡定。

论坛徽章:
0
57 [报告]
发表于 2011-09-17 11:35 |只看该作者
鼓励楼上几楼的这样讨论,有内涵的。

论坛徽章:
10
CU大牛徽章
日期:2013-09-18 15:20:48程序设计版块每日发帖之星
日期:2016-07-21 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:01技术图书徽章
日期:2014-10-14 16:00:43天蝎座
日期:2013-09-27 17:41:29CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58每日论坛发贴之星
日期:2016-07-21 06:20:00
58 [报告]
发表于 2011-09-18 00:59 |只看该作者
回复  tomac_cu


    我也认为php是最容易入门的web开发语言,但是这几个理由,我觉得比较牵强。

Orpherus 发表于 2011-09-17 03:24



    驳论总是容易的。
   你也说说为什么PHP比PYTHON更容易入门?

论坛徽章:
10
CU大牛徽章
日期:2013-09-18 15:20:48程序设计版块每日发帖之星
日期:2016-07-21 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:01技术图书徽章
日期:2014-10-14 16:00:43天蝎座
日期:2013-09-27 17:41:29CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58每日论坛发贴之星
日期:2016-07-21 06:20:00
59 [报告]
发表于 2011-09-18 01:08 |只看该作者
回复  tomac_cu


    我也认为php是最容易入门的web开发语言,但是这几个理由,我觉得比较牵强。

1 ...
Orpherus 发表于 2011-09-17 03:24


======================================================
这种事情换成神马语言都无能为力,64位php和32位php的整数范围不同,扩展也不通用,
“不小心”装错版本,一样会带来隐患,负责任的开发者,会尽力确保版本和编译参数一致。
======================================================
之前讨论是对初学者,比如象我这样的初学者。看了满世界的PYTHON的好处
自己用起来这么艰辛,你想想我这样的初学者是什么的感想。



======================================================
2.x和3.x的差别确实巨大,可以看成是php5跟4的区别,或者php6跟5的区别,
但是2.x还是特性还是比较稳定的,尤其是2.5发布之后,不向下兼容的情况很少,
php5.x在发展的过程中,也有一些不兼容的变化,这都不是什么问题。
======================================================
因为我是初学者,在初学乍用时,哪能知道python会有这么多的纠结。
我学PYTHON是因为 SDR ,用 gnu-radio 时,装这个LINUX发行版,就能编译通过。
装那个发行版就编译通不过。装这个发行版的低版本能过,装高版本的就不能过。
为了编译gr装了不少于十次的linux,最后一深,知道了就是self变成关键词了。
我是初学者呀,为了用软件还要深入学习PYTHON呀

=====================================================
这个不知道是跟谁比,起码python手册不输于php,而且chm和pdf可选。
说py被功夫网盾掉,不易下载,或者说中文资源不如php多,倒还说得过去。
=====================================================
谁用谁知道

论坛徽章:
0
60 [报告]
发表于 2011-09-18 11:30 |只看该作者
对初学者而言,php比python更容易学的N个理由.

1. php内置了相当丰富的库,不用像python那样先import后用。
2. php源文件不用声明编码,python源文件出现中文就必须要编码声明。
3. python没有$_GET,$_POST等东西,取表单字段还要wsgi库解析,每个库用法还都不太一样。
4. py3和py2之间的选择,一定比php5和php6之间的选择更纠结,尤其是2010年之后。
5. 把缩进作为语法结构的一部分,让学过其它主流语言的人非常的不习惯。
6. mutable/imutable, decode/encode, str/bytes,初学很容易糊涂。
7. 部署方法不下10种,php常见的部署方法只有3种,而且用的人都不少。
8. python变量能跨请求,使用不当会有内存泄漏,php不容易有这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP