横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。

时间:2023-07-26 15:14:44

横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。

遥执乾坤(44758121)  18:21:23
mysql据说只能使用一个索引,我这里几乎所有字段都有索引。

但每个字段就算用索引,也需要扫描至少100w以上记录。

横瓜(601069289)  18:23:12

mysql支持16个索引

对1-3字段索引属于优质的数据库结构

横瓜(601069289)  18:24:56

再多了,就是数据库结构设计不合理

横瓜(601069289)  17:53:15

处理大数据,对于计算要放应用层

不要采用SQL执行计算,可以垂直分解应用业务和复杂计算

横瓜(601069289)  17:54:50

如果数据量特别大,请采用水平方式来分解应用业务和复杂计算

采用水平方式来分解应用业务和复杂计算,可处理TB级的数据量,为全世界提供信息服务

横瓜(601069289)  17:59:20

采用普通PC+固态硬盘+水平分解业务+缓存+LINUX2.4以上的版本+接入层请求分发均衡

~游濄丿群鴨(39012090) 2013-6-28 10:49:07

java 是有些东西做不了

上海-石头哥(59851444) 2013-6-28 10:49:21

 靠!

当然了

人也有些东西做不了

这些都是正常的

做驱动程序 就不适合用java

Glory(1302516908) 2013-6-28 10:50:30

唉,不说了,都是血泪,这么多年,绕不开java的队伍,都是血泪,和java队伍搭班子太累

上海-石头哥(59851444) 2013-6-28 10:50:43

你没遇到对的人

不是java的问题

最难相处也是人

~游濄丿群鴨(39012090) 2013-6-28 10:51:03

比如让c c++来做web的前端开发,会不会比较麻烦?

上海-石头哥(59851444) 2013-6-28 10:51:12



北京-普通人(409031406) 2013-6-28 10:51:26

谁会用c++,c做前端

~游濄丿群鴨(39012090) 2013-6-28 10:51:44

是的咯

北京-普通人(409031406) 2013-6-28 10:53:23

c++、c配合JAVA或者PHP啥的,都挺好的嘛,c服务端数据处理

Glory(1302516908) 2013-6-28 10:53:27

有做java的吗?

请教个问题

遥执乾坤(44758121) 2013-6-28 10:53:56

java至少用过5-6年的才能做事情。用3年以下的人,很喜欢弄一堆构架进去,啥spring, hibernate, structs。。。做企业级应用,这些都是垃圾东西。

Glory(1302516908) 2013-6-28 10:54:08

一个小狗屁项目,hibernate配置数据库,就比直接写数据库访问快?

遥执乾坤(44758121) 2013-6-28 10:54:56

大公司也不用这些东西,因为前后分离,ao dao分离,无法用他们。

然后剩下的就只有没有经验的人,天天被那帮所谓的学校老师忽悠,以为这些很牛叉。

Glory(1302516908) 2013-6-28 10:55:29

乾坤说的太对了

北京-普通人(409031406) 2013-6-28 10:56:03

不比直接写数据库快。

~游濄丿群鴨(39012090) 2013-6-28 10:56:09

hibernate 比较适合通用

空/卡皮(501968942) 2013-6-28 10:56:11

大家在批判学校的?

Glory(1302516908) 2013-6-28 10:56:14

弄一堆东西进去,来个新功能,发现无法套那堆东西,然后告诉你:java实现不了,java就这么被恶心了

~游濄丿群鴨(39012090) 2013-6-28 10:56:28

有些公司就喜欢一劳永逸。搞个hibernate就可以通用任何数据库

不用你在重新重写sql

遥执乾坤(44758121) 2013-6-28 10:57:35

问题是,正规的公司几乎都是mysql。。。 oracle那么贵,一般人根本用不起。

~游濄丿群鴨(39012090) 2013-6-28 10:58:10

就像你说的企业开发,就特别喜欢用hibernate

比如 DB2 INFORMIX

等乱起八糟的数据库都会碰到

Glory(1302516908) 2013-6-28 10:58:36

企业应用,那也可以理解了

我他妈做个自家的系统,硬件都是自己配的,别说软件了,程序员也非得弄进这一套来,这不是找骂?

~游濄丿群鴨(39012090) 2013-6-28 10:59:35

不过hibernate可以和 直接写sql 混用

遥执乾坤(44758121) 2013-6-28 10:59:40

调用别人的数据库是最痛苦的事情。。。

~游濄丿群鴨(39012090) 2013-6-28 11:00:44

我估计是 那个程序员用惯了hibernate,因为它也帮助程序员少些代码。

~游濄丿群鴨(39012090) 2013-6-28 11:00:53

甚至不用写sql

Glory(1302516908) 2013-6-28 11:02:02

这就出来问题了——部分java程序员招骂第一原因:套路化

广州-恒-java(821600682) 2013-6-28 11:02:14

公司开发一套通用的,现场部署时数据库可能是别人的,表名,字段名可能不一样,ORM这个个人感觉还是有需要的。。

上海-石头哥(59851444) 2013-6-28 11:02:36

你们一味的骂是因为不适合你们

Glory(1302516908) 2013-6-28 11:02:45

就像彪哥打架,一套热身还没打完,人家一脚踢到裤裆,你已经趴下了

上海-石头哥(59851444) 2013-6-28 11:02:51

结合自己的观点

遥执乾坤(44758121) 2013-6-28 11:03:17

框架的确不适合啥东西都是自己的。

~游濄丿群鴨(39012090) 2013-6-28 11:03:23

框架有适用范围,具体用不用。还不是老大说得算

遥执乾坤(44758121) 2013-6-28 11:03:37

但如果数据库都是别人的,那就最好用个来屏蔽差异了。

北京-普通人(409031406) 2013-6-28 11:03:38

如果觉得hibernate不好用,可以直接开发ORM,很多公司也会自己封装自己的orm。其实hibernate优势还是慢多的

满多的

上海-石头哥(59851444) 2013-6-28 11:03:44

hibernate在快速开发上还是有很强大的,也很自动,不过要完全用得游刃有余,那绝对是高手所为,我其实不建议新生用

Glory(1302516908) 2013-6-28 11:03:54

再一个就是霸王硬上弓,前一阵碰上一个学生,给我们做推荐算法,上亿的数据,非得java,结果32G的内存怎么都搞不定

北京-普通人(409031406) 2013-6-28 11:04:03

想用好hibernate还是要高手

上海-石头哥(59851444) 2013-6-28 11:04:18

如果一直使用hibernate,但本身自己sql基础不牢,其实到后期很致命

遥执乾坤(44758121) 2013-6-28 11:04:20

对。hibernate我当年用的时候,被里面的几个bug搞死了,后来只能修改hibernate源码才搞定。浪费了太多时间。

~游濄丿群鴨(39012090) 2013-6-28 11:04:47

hibernate只能完成80%的任务。

abc(951514291) 2013-6-28 11:04:57

要不就用Mybatics,JPA

~游濄丿群鴨(39012090) 2013-6-28 11:05:08

一些复杂查询,还是得sql来的直接

Glory(1302516908) 2013-6-28 11:05:19

后来直接把他踢走,换另外一个学生过来,8G内存稳定可控,一天推荐的算量还提高好几倍

遥执乾坤(44758121) 2013-6-28 11:06:05

我写了一个2个文件,一个db操作,一个多链接cache,然后就解决了80%的数据库问题。操作方式和hibernate的基础方式几乎一样。也是没有sql语句就能办事情。

北京-普通人(409031406) 2013-6-28 11:06:06

很多做JAVA的人,做内存控制,内存处理这块,是没有概念的

Glory(1302516908) 2013-6-28 11:06:28

只是内存控制没概念还好,关键是数据结构没概念

上海-石头哥(59851444) 2013-6-28 11:06:40

如果sql本身基础很牛B,那你用hibernate我觉得还是可以大大开发效率

~游濄丿群鴨(39012090) 2013-6-28 11:06:53

hibernate 有个很大的用处就是通用各种数据库呀

Glory(1302516908) 2013-6-28 11:07:13

上亿的数据,本是稀疏矩阵,他竟然敢使用两级字典做数据结构

上海-石头哥(59851444) 2013-6-28 11:07:18

后来我一直用ibatis

遥执乾坤(44758121) 2013-6-28 11:07:23

通用数据库,是我认为hibernate唯一值得用的地方。

上海-石头哥(59851444) 2013-6-28 11:07:36

是因为我也不太喜欢太多的限制

~游濄丿群鴨(39012090) 2013-6-28 11:07:45

不然仅仅是db操作和cache,很多db库都能做

上海-石头哥(59851444) 2013-6-28 11:07:51

这点似乎没啥用

谁会老换数据库

遥执乾坤(44758121) 2013-6-28 11:08:10

适合你调用别人数据库的情况。

别人的数据库天知道啥玩意。有些还是嵌入式的呢。

~游濄丿群鴨(39012090) 2013-6-28 11:08:25



上海-石头哥(59851444) 2013-6-28 11:08:51

我游走过几个公司,有银行,也有第三方支付等

发现hibernate在这些地方出场并不高

几乎没有

都是用ibatis

Glory(1302516908) 2013-6-28 11:09:44

访问量略微大一点,hibernate撑不住啊

上海-石头哥(59851444) 2013-6-28 11:10:19

关键不是这个

是生成的sql不一定可控,这也是很大一方面

~游濄丿群鴨(39012090) 2013-6-28 11:11:21

访问量大的地方得另外处理了。hibernate 不适合做互联网应用,做做后台管理还是可以的。

上海-石头哥(59851444) 2013-6-28 11:11:23

自己写sql嘛,你懂的,出来的什么 都知道

遥执乾坤(44758121) 2013-6-28 11:11:25

我写的代码和ibatis的结构很像,呵呵。就是轻量很多。

但同时也有bug的多。。。唉。

abc(951514291) 2013-6-28 11:12:00

访问量大,并发高,把hibernate的缓存用好,再结合第三方缓存框架也可以啊

上海-石头哥(59851444) 2013-6-28 11:12:03

bug多慢惭改

慢慢改

~游濄丿群鴨(39012090) 2013-6-28 11:12:54

后台统计、计算这些未必还用hibernate啊?

遥执乾坤(44758121) 2013-6-28 11:13:29

就一个接口。剩下的就是Mysql,oracle的实现了。

jace(793727599) 2013-6-28 11:14:48

你们有专职做数据分析工作的吗?

Glory(1302516908) 2013-6-28 11:14:52

有那个空改第三方框架的bug,就不能自己写?

最有意思的,java比c++队伍多一个岗位:系统架构师

遥执乾坤(44758121) 2013-6-28 11:15:46

c++也有。。。

Glory(1302516908) 2013-6-28 11:15:54

~游濄丿群鴨(39012090) 2013-6-28 11:15:59

架构师应该都有吧。

上海-石头哥(59851444) 2013-6-28 11:16:07

呵呵!

遥执乾坤(44758121) 2013-6-28 11:16:10

搜索构架师。

Glory(1302516908) 2013-6-28 11:16:14

事实上是有,但c++的队伍较少公开专门招

jace(793727599) 2013-6-28 11:16:14

类似数据科学家的角色

上海-石头哥(59851444) 2013-6-28 11:16:20

系统架构师并不是指语言的

java的也有好吧

你们把语言看得太重了

我想说 太年轻



Glory(1302516908) 2013-6-28 11:17:00

说的太对了,真正的系统架构师应该是通用的

遥执乾坤(44758121) 2013-6-28 11:17:04

构架师只有大规模项目才需要。

上海-石头哥(59851444) 2013-6-28 11:17:07

我们公司的就是

Glory(1302516908) 2013-6-28 11:17:14

但java通常有个专门岗位:jva系统架构师,

上海-石头哥(59851444) 2013-6-28 11:17:18

虽然不见得比我牛B

呵呵!

那是错误的认识

Glory(1302516908) 2013-6-28 11:18:00

很多公司专门招java系统架构师的

上海-石头哥(59851444) 2013-6-28 11:18:02

我们公司的架构师常常问我一些问题的

Glory(1302516908) 2013-6-28 11:18:24

条件就是熟悉各类java框架

加速度(272551280) 2013-6-28 11:18:24

solr 查询 返回时 剔除了html的内容 怎么改成不剔除呢?

上海-石头哥(59851444) 2013-6-28 11:18:26

强调的是系统及架构

加速度(272551280) 2013-6-28 11:19:16

solr 查询 返回时 剔除了html的内容 怎么改成不剔除呢?

有哪位同学 研究过这个?

Glory(1302516908) 2013-6-28 11:20:23

我们土比,偶尔用用solr,都是自己转码

~游濄丿群鴨(39012090) 2013-6-28 11:20:44

呵呵 熟悉主流框架,就能从这些成熟的产品吸取经验嘛

遥执乾坤(44758121) 2013-6-28 11:31:04

有运维人员想找工作不?

哥不要开发,开发找个在校大学生就能搞定了。需要的是运维,因为运维没有几年经验,啥都不会。

~游濄丿群鴨(39012090) 2013-6-28 11:32:27

开发这么不值钱了。。。

遥执乾坤(44758121) 2013-6-28 11:33:13

,核心开发有人了啊,外围开发自然找几个实习生足够了。

北京-***(506650296) 2013-6-28 11:34:15

恩,学生可塑性高,听话

jace(793727599) 2013-6-28 11:56:19

只要有钱有人有咨询,想不嬴都不行

jace(793727599) 2013-6-28 12:02:03

有钱意味能用最稳定最先进的架构,有人意味着分工明确,每个领域都各司其职,有专业的工程师,有咨询意味着可以跟IBM、Oracle、teradata、intel等合作,搞一些规范成熟的方案。

jace(793727599) 2013-6-28 12:03:03

类似于拍电影,有导演有剧本有主角。

jace(793727599) 2013-6-28 12:09:01

所以窝在大公司里可以学到很多东西

Glory(1302516908) 2013-6-28 12:10:51

头一次听说,窝在大公司里可以学到很多东西

jace(793727599) 2013-6-28 12:11:40

反正我学到挺多的

Glory(1302516908) 2013-6-28 12:13:11

上边的人可以学到很多东西

而且有足够的钱来回折腾

十一月的肖邦(1041901964) 2013-6-28 12:13:35

大公司学得多吗

表示想去大公司

Glory(1302516908) 2013-6-28 12:14:12

像阿里的技术高层,大概把所有的高性能方案都学习探索过

空/卡皮(501968942) 2013-6-28 12:15:10

进不去啊

Glory(1302516908) 2013-6-28 12:16:23

我当年去华为,操成天就那点屌东西,整个三级部门就那点屌东西

要学东西,大概得混到三级部门经理以上的级别了

遥执乾坤(44758121) 2013-6-28 12:19:17

去互联网公司吧,的确可以学到很多东西,只要你愿意。

空/卡皮(501968942) 2013-6-28 12:23:33

哦哦

初学者 进也难啊

Glory(1302516908) 2013-6-28 12:23:56

有没有阿里的?过两年现在的公司成不了,争取去阿里了

遥执乾坤(44758121) 2013-6-28 12:24:23

阿里不要大于30岁的人。

空/卡皮(501968942) 2013-6-28 12:24:37

为什么

遥执乾坤(44758121) 2013-6-28 12:24:45

没有前途了啊。

Glory(1302516908) 2013-6-28 12:24:49

扯啊,阿里动不动开年薪五六十万,都是30多岁的人

南京-听风(190661155) 2013-6-28 13:30:18

怎么可能不要30岁以上的人,阿里需要的反而大多数是30岁以上经验丰富的

十一月的肖邦(1041901964) 2013-6-28 13:36:41

action怎样获取前台select 的值

阳光(413055687) 2013-6-28 14:04:43

request.getParameter("")就可以,或者Action里变量  名称跟select名字一样,有getXXX,setXXX方法也行

北京-普通人(409031406) 2013-6-28 16:51:27

有遇到这样的情况么,在window下,用jdbc去跑100个mysql查询需要600毫秒,在linux需要1500毫秒

遥执乾坤(44758121) 2013-6-28 16:54:51

mysql下,跑一个简单的select范围查询,有索引的情况下,花费了2分钟,大家又遇到过么?

上海-石头哥(59851444)  17:00:12

把sql贴出来看看吧

说不定可以看出什么 端倪

100个才600ms

还有什么可以说的啊

2分钟的看一睛

遥执乾坤(44758121)  17:03:24

select AvgDownloadSpeed,UploadTaskTime,peerid,TaskDefinitionID from taskexecmain where UploadTaskTime>='2013-06-18 00:00:00 000' and UploadTaskTime<'2013-06-19 00:00:00 000' and TaskDefinitionID in ('7194','7195','7196',) and totalDownLoadTime>'1.4E-45' and totalDownLoadTime<'200.0' and (errorcode is null OR errorcode = '0') limit 0,5000, time:226613167540,ok:true

time:226613167540 纳秒,其实就是226秒。

上海-石头哥(59851444)  17:05:22

我的妈呀

7194 ~ 7489

上海-石头哥(59851444)  17:05:55

这是连起来的啊

上海-石头哥(59851444)  17:07:30

and (errorcode is null OR errorcode = '0')

把这个 is null

换成其它方式试试

去掉这个能快多少

遥执乾坤(44758121)  17:11:01

实际的in有1k多个值,这里拷贝不下。

上海-石头哥(59851444)  17:13:04

in里边的数据是string不是int的吗

还有你数据字段用是的string是吗

遥执乾坤(44758121)  17:14:24

in里面是int,但这些int不能保证连续。

京-一夏<wpx378802619@qq.com>  17:14:33

in换成exists试试

上海-石头哥(59851444)  17:14:40

那你把引号去掉

遥执乾坤(44758121)  17:14:46

不是一样么?

引号这种就算转化也会很快才对啊。

北京-普通人(409031406)  17:24:36

mysql在你本地,还是其他机器上

遥执乾坤(44758121)  17:24:50

都是本机跑的。

北京-普通人(409031406)  17:25:18

那本机跑。应该挺快递

Glory(1302516908)  17:25:24

我们现在倒腾数据都用shell,发现shell真他妈强大

mysql里只剩下最后简单查看的数据,几乎不用mysql做任何略微复杂的运算了

北京-普通人(409031406)  17:27:38

shell确实很强大

awk 对数据处理很强大

遥执乾坤(44758121)  17:28:35

awk处理文本数据,已经足够了。

南京-听风(190661155)  17:28:35

我也听说了,能举个应用场景吗

举个应用的例子

北京-普通人(409031406)  17:29:56

对文本数据处理,确实完全够了

Glory(1302516908)  17:31:15

非实时系统就有这个好处,早晨8点上班前把数据准备好就OK

北京-普通人(409031406)  17:31:41

一般用于做分析,做计算用

Glory(1302516908)  17:31:51

再大的数据都不存在大数据问题了

北京-普通人(409031406)  17:31:54

恩。大数据公司估计用的多

Glory(1302516908)  17:33:58

好像群里有些兄弟去年去云基地,云基地都做什么啊?

南京-听风(190661155)  17:34:20

哪个云基地?

云基地现在多如牛毛

北京-普通人(409031406)  17:35:34

云基地?在那里

云基地搞云计算?

Glory(1302516908)  17:36:07

北京北边什么云基地,去年群里不是好几个人去吗?

北京-醉(253215039)  17:40:59

@乾坤:

上面那个sql所在表什么量级?

遥执乾坤(44758121)  17:46:54

1100w

北京-醉(253215039)  17:49:17

应该是做全表扫瞄了

遥执乾坤(44758121)  17:50:18

没有,全部扫描估计30分钟都搞不定,有好几十个G呢。

北京-醉(253215039)  17:50:42

这么大的表啊?

北京-醉(253215039)  17:51:45

一条纪录有5k?

遥执乾坤(44758121)  17:52:15

没有5k,但也有上K。

横瓜(601069289)  17:53:15

计算要放应用层

不要采用SQL执行计算

北京-醉(253215039)  17:53:53

高版本mysql应该会自动优化

Glory(1302516908)  17:54:06

先加个where TaskDefinitionID > <的条件,大概能快很多

横瓜(601069289)  17:54:21

可以采用垂直分解应用业务和复杂计算

遥执乾坤(44758121)  17:54:41

TaskDefinitionID 有十万多个。

横瓜(601069289)  17:54:50

如果数据量特别大,请采用水平方式来分解应用业务和复杂计算

采用水平方式来分解应用业务和复杂计算

可处理TB级的数据量,为全世界提供信息服务

北京-醉(253215039)  17:55:30

如果是int型,查询时加了引号,未必能用到索引。

遥执乾坤(44758121)  17:55:45

mysql好像只能用一个索引。

北京-醉(253215039)  17:55:56

另外得把is null去掉吧,这东西肯定不命中索引

横瓜(601069289)  17:56:12

必要时,可以支持1秒/10万次-100万次的请求

北京-醉(253215039)  17:56:31

可以有多个,但你这么大的表,也不能多建。

横瓜(601069289)  17:56:46

如果优化到非常完美的情况下,可以支持1秒/10万次-100万次的请求

北京-醉(253215039)  17:56:54

这么大数据,索引也很耗资源

横瓜(601069289)  17:57:05

等于100个GOOGLE的请求水平

北京-普通人(409031406)  17:58:21

1秒/10万次到100万次的请求,应该要看cpu和数据量吧

Glory(1302516908)  17:59:11

那些值都是连续的,肯定是大小比较嘛,怎么会用in?

横瓜(601069289)  17:59:20

采用普通PC+固态硬盘+水平分解业务+缓存+LINUX2.4以上的版本+接入层请求分发均衡

北京-醉(253215039)  17:59:22

1秒10万次请求,真实的qps也就1000左右把,允许有100ms的网络延迟