看哪些书比较好?
1
Supber92 2016-01-28 16:51:11 +08:00
看代码
|
2
iburu 2016-01-28 16:52:09 +08:00
搞环境
|
3
ren2881971 2016-01-28 16:54:37 +08:00
花一天时间看完一本 java core 搞定
|
5
typcn 2016-01-28 17:48:46 +08:00
需要先加内存, 32G 起步 64G 更好
|
6
jtacm 2016-01-28 17:49:59 +08:00 1
write once, debug everywhere.
|
7
acros 2016-01-28 17:55:15 +08:00
注意自己的脾气···· 尤其是用 Eclipse···
|
8
baozijun 2016-01-28 17:55:40 +08:00
JAVA NIO,java 并发权威指南,这两本就够了....
|
9
Amit 2016-01-28 17:56:41 +08:00 1
记得大括号不要换行 :)
|
10
HunterPan 2016-01-28 18:04:52 +08:00
变量最好不要有下划线 除了静态的
|
11
macemers 2016-01-28 18:32:31 +08:00 via Android 1
为什么想不开要转……
|
12
kotokz 2016-01-28 19:01:54 +08:00
|
13
zts1993 2016-01-28 19:25:39 +08:00
C++转 Go 不好?
我才你是觉得 Java 好找工作? |
14
zts1993 2016-01-28 19:26:00 +08:00
上面打错
C++转 Go 不好? 你是觉得 Java 好找工作? |
15
wtdd 2016-01-28 20:25:04 +08:00
跟玩一样……要学会享受慢
|
16
cfans1993 2016-01-28 20:31:39 +08:00
get/set 经常是配套出现的
|
18
k9982874 2016-01-28 21:52:41 +08:00 via iPhone
不要纠结内存释放, new 完不要去 delete
|
19
mhoudg 2016-01-28 21:52:51 +08:00
理解单根继承比较重要,其他内容只要堆时间就 OK
|
20
wizardforcel 2016-01-28 22:52:21 +08:00 1
区分基类和接口。
注意类的赋值不是复制, clone 才是复制。 该 new 的时候就要 new ,不要重用一些对象,除非你知道 flyweight 怎么玩。 读写器跟 c++的习惯差不多。。。 然后是闭包,如果 c++没玩好,到了 java 里可以各种玩了。 java 没引用传值,需要的时候拿数组包装一下,学名叫 boxing 。 应该就这么多了吧。 core java 10e 出了 能啃英文的还是推荐去看看吧。 |
21
orianna 2016-01-28 23:28:49 +08:00
看上面的很多人回复,语气里感觉出很多对 java 的不屑啊,用什么语言都能用出优越感,我觉得这是不好的事情.
|
22
slixurd 2016-01-28 23:39:16 +08:00 1
@wizardforcel java 虽然没有指针,但是除了基本类型以外所有的都是传引用啊。
你这误导别人了, Java 最坑的地方就在于方法的参数没办法类似 C#用 ref 或 out 关键字来实现参数的按引用传递。 闭包更坑,作用域有问题, Java 8 的 Lambda 才解决了作用域的问题,虽然 final 还是不可避免。 Boxing 和数组没有半毛钱关系, Boxing 是基本类型和包装类型的转换。 少年你得好好学学 Java 啊。 |
23
libook 2016-01-28 23:53:22 +08:00 3
首先不建议转,原因如下:
1. Java 工程师供过于求,身价低,而 C++工程师相反; 2. Java 技术快被淘汰了,前段时间刚刚宣布彻底淘汰浏览器端 Java 应用技术,目前 Java 的用武之地只在于 Android 和国企 WEB 系统,其中 Android 的技术栈正在被 HTML5 蚕食; 3. Java 技术体系相当庞大和成熟,学习时间成本相当高,特别是你对 C++的诸多概念已经根深蒂固,转 Java 难以摆脱 C++的思维定势;吃透语言半年,领会思想一年,每个框架半年融会贯通,想成为有一定经验的 Java 工程师至少要 5 年的时间; 4. 虽然 Java 的抽象级别可以很高,做项目架构可以很清晰,但 Java 太重,执行效率太差,编译和运行环境配置过于烦琐和复杂( IDE 也帮不了你,因为这些配置都是业务的一部分),我之前给 ICNTV 做 BOSS 的时候由于用小型机堆硬件也无法让 Java 承受住那样的高并发,所以最后并发最大的部分还是用 C++写的; 5. 你身边会很难遇到优秀的 Java 工程师,大多数人都是可能连 HTTP 协议都没有学过的培训生出身,特别是往往编码习惯很不好。 如果你一定要转,作为一个两年都没有碰 Java 的人也给不了什么最新的好建议,仅供参考, Java 大牛看到也请放过我: 1. 初学不要去找 Java 与 C++的相似点,很容易被思维定势带进坑,总之鄙人不才,觉得用完 C 系再完全理解 Java 的思想挺困难的; 2. Java 完全可以达到让开发者的精力集中在业务逻辑上,可以完全不用考虑内存、协议等等底层问题上,但后期因为性能问题肯定也会不得不研究 JVM 的机制细节; 3. 要研究好每个依赖库的版本号的兼容性,引入的包多了,兼容性解决不好是无法编译通过的; 4. 要了解正在使用的各个组件在当前版本所存在的问题,包括服务器、容器等,我曾经因为一个问题纠结了 3 天,最后在 Tomcat 官方的 Changelog 中发现是 Tomcat 在特定版本存在的 BUG ,需要构造程序绕过这个 BUG ; 5. Java 有好多的框架,如果你所在的团队是求稳的话,那么恭喜你有可能要去学用得最广泛的 SSH 框架,通常是 struts(或者 Springmvc 或者 Struts2)+spring+hibernate 这样的组合,这些东西每一个拎出来都很抽象,很难理解,不过一旦你完全理解了就非常好用,毕竟抽象级别高了。 Java 历史悠久,极度成熟,想知道看什么书比较好直接去网上搜一艘就可以,相信沉淀这么多年一定是有很多精品的教材的。 |
25
orianna 2016-01-29 00:20:08 +08:00 1
@libook 目前 Java 的用武之地只在于 Android 和国企 WEB 系统?????看到这样的回复,我突然觉得 V2 也会有见识这么浅薄的人程序员,阿里这么庞大的 JAVA 系被你吃掉了吗.
|
26
libook 2016-01-29 00:23:54 +08:00 1
@orianna 个人觉得其实并不是用语言用出优越感,我非常赞同语言不分好坏,每种语言或技术都是有自己的用武之地的,我也希望大家能理解这一点,不再对语言本身的优劣进行讨论。
并不是我不推荐 Java ,而是技术的发展趋势不推荐 Java 了, Java 无疑是人类最伟大的发明之一,但是在那个时代 Java 主要是被用来解决信息技术行业从无到有的问题的,技术在推进时代的发展,当今时代人们已经不再关注从无到有的问题了,关注的更多的是利用技术来改善世界的运转方式。以前人们习惯潜心研发,历时数年开发出完整的系统来上线运营;现在人们却希望快速实现、上线自己的 Idea ,以抢占市场和尽早拿到第一手数据;以前人们需要使用昂贵的物理服务器和无止境的算法优化来应对日益增长的业务量,现在人们可以直接使用云计算思想进行开发和部署,弹性按需结算成本,对系统性能容量直接进行倍数调整;以前只是实现服务本身就是一件很厉害的事,现在实现服务只是产品的第一步,需要使用大数据等技术来主动改善产品以贴合用户需求。虽然 Java 在当今时代依然能够用于生产,但是时代已经催生出了很多更加适应当今乃至未来发展趋势的技术,极度缩短了产品从无到有的过程,极度降低了开发和部署的成本,让人们能更早地投入产品运营的工作中。 鄙人啰嗦这么多,只是想说明为什么现在在潮流之中的是 Go 、 Nodejs 等等新技术,而不是 Java 、.Net 等老技术。各位朋友们觉得在理就好,若觉得不在理也不用计较。 |
27
libook 2016-01-29 00:27:41 +08:00
@orianna 我有同学在阿里工作,他们内部已经开始向最新的技术转化了,比如 Nodejs 和 Go 还有 Docker ,之所以现在还在重度使用 Java 我相信只是历史遗留问题,毕竟无比硕大的软件系统体系不是说转就能转的,特别是他们内部之前自己造了很多轮子,都需要时间慢慢变化的。
|
28
orianna 2016-01-29 00:32:17 +08:00
@libook 你所说的潮流的判定方法是什么?你身边的人?还是?说话要有根据.不要看到有部分人用,就变成了潮流.如果非要找出一个判定方法,我只能用 TIOBE 社区的排行榜了,2015 年 12 月份榜单,一二三分别是 JAVA,C,C++,你说的 GO 排第 50.
不可否认的是,你一直在诋毁 java,虽然你又一直在否认.说 java 不好,也要说出一堆理由啊,可是你说的都是空话....表示无解 |
29
libook 2016-01-29 00:48:46 +08:00 via Android
@orianna 都说了不需要计较了嘛,我是做过项目的,所以我给出了预言,至于是否合理我们看时间的见证不就好了嘛~~我欢迎见识高远的人也来做预言,毕竟 V2 就是大家自由交流想法的地方,我相信这一点我们所有人都持相同立场哒。
|
31
coldear 2016-01-29 02:28:37 +08:00
core java for the impatient, 并发权威指南两本就够了,不行在看 effective java
|
32
woai110120130 2016-01-29 07:14:45 +08:00 via Android
@libook 说的很多 也很漂亮 确几乎每一条是错误的
|
33
ericyl 2016-01-29 07:20:46 +08:00 via Android
@libook 呵呵, Android 被 HTML5 蚕食,做过项目的。真不知道是做哪一块的。说的好像原生应用已经慢慢的没人开发一样,如果说 Google 后期把原生开发语言切换成 Go 可能还有人会信。
|
34
bobuick 2016-01-29 07:58:38 +08:00
把 java 设计模式熟读好了。 c++转 java 不是分分钟的事么,脑力都能省掉一大堆
|
35
dphdjy 2016-01-29 08:09:20 +08:00 via Android 1
@libook 虽然 js 已经可以逆天的跨平台~但是我依然在需要的地方用原生代码~效率差的不是一点点~语言本身并不具有优越性,灵活运用各种语言达成目标多好。虽然有去 java 的趋势,那也是看环境的好伐。阿里部分换 nodejs 也只是因为那部分适合 nodejs 的特性,越是复杂的系统越难用一种语言达到尽可能优越的性能。
弱弱的预测只要甲骨文不作死,即使培训班扯的再呵呵,任何语言都不会被淘汰(打酱油那种不在此类) 以及 Android 用 html5 ,请用 2.3 或 512mb 机型试试,卡的不要不要的 最后, js 太棒了~ |
37
ragnaroks 2016-01-29 08:52:00 +08:00 1
一次编译,到处调试.
|
38
wizardforcel 2016-01-29 08:58:36 +08:00 1
@slixurd 你的“没办法...实现参数的按引用传递”和我说的“ java 没有引用传值”是一个意思
请你理清一个概念。对于引用类型的对象,把栈上的引用复制一份不叫“引用传递”,还是叫值传递,只不过是“引用类型的值传递”。 Boxing 这个名词可能是我记错了,不过 java 的库在处理这种情况的时候,的确是这么处理的。不信你翻源码。 |
39
neutrino 2016-01-29 09:00:27 +08:00
xp+java 6 挺好的,希望能多撑几个十年。
|
40
wizardforcel 2016-01-29 09:00:29 +08:00
|
43
wizardforcel 2016-01-29 09:36:22 +08:00
@libook
1. 你哪只眼睛看到现在的潮流是 go ? http://stackoverflow.com/research/developer-survey-2015#tech-lang http://www.cnbeta.com/articles/462971.htm 2. node 的确很火我不反对。但是 node 开发 web 和其它语言的本质区别就是那个万恶的异步逻辑。你还没考虑楼主的接受能力和学习成本,问问楼主接受不接受吧。 |
45
kalman03 2016-01-29 09:40:52 +08:00
没看评论之前,我就知道这会变成一场语言的争斗,看了之后,果不其然,哈哈。。。。
|
46
yuchting 2016-01-29 09:43:47 +08:00
卤煮不到百字的帖子引起又一次的语言之争。是该有人出来歪楼了。
卤煮的新工作工资比原来多多少? |
47
lux182 2016-01-29 09:45:22 +08:00
任何关于 java 的问题都会引来语言之战 咩哈哈~
|
48
hienchu 2016-01-29 09:47:47 +08:00
不要把自己禁锢在语言的小黑屋里
|
49
cxshun 2016-01-29 09:50:03 +08:00
@libook Java 用武之地是国企?呵呵。我们大阿里内部基本都是 Java 的,你当是没的。京东也基本是 Java ,还有其他大大小小的公司,华为等等。
阿里在转,我都没听说,只是某些组做新业务考虑便利用新语言吧。 Go 是因为 docker 用了,所以不可避免要学一下,毕竟有可能要深入了解 docker 的。它做服务器软件是很赞的,效率高,天生多线程,但跟 Java 比,还太早了。 |
51
cxshun 2016-01-29 09:55:27 +08:00
@libook 如果你觉得 Java 不行了,试解释一下为什么 hadoop , zookeeper , spark 等还是用 Java 开发(虽然不是完全),为什么不用你说的 Go 来开发。
不要拍脑袋想啥说啥,思考后再说出来。作为一个开发人员,要有自己的思考。 Java 一大堆的框架,虽说选择多也不是好事,但成熟的框架,一些比较成熟的架构,让很多公司可以直接上手,就这一点就比很多所谓的“好”语言好太多了。 |
52
Lullaby 2016-01-29 10:03:42 +08:00
|
53
hqs123 2016-01-29 10:09:45 +08:00
c++熟练了 java 很容易上手
|
54
m8syYID5eaas8hF7 2016-01-29 10:10:36 +08:00
@libook 怀疑你到底了解不了解 java ,目前来看, java 工程师就业机会多得多,薪资也不比 C++差
|
55
chiu 2016-01-29 10:12:43 +08:00
怎么变成圣战了?
|
56
linux40 2016-01-29 10:23:47 +08:00 via Android
@wizardforcel 你直接说 java 里的引用行为类似 c++里的 reference_wrapping 不就好了。。。
|
57
Dooeolio 2016-01-29 10:28:11 +08:00
只要涉及到 Java 就必然会有人以鄙视态度对之,语言本不分高低贵贱,低级工程师用再好的语言一样写不出好代码。为什么任何关于 Java 的问题都会引来语言之战,感觉就像豆瓣用户看不起贴吧天涯一般,政治正确性罢了
|
58
libook 2016-01-29 10:35:09 +08:00
@dphdjy 非常感谢你能说一句公道话,要不然我还以为自己要被当成异端烧死了~
Nodejs 现在用 ES6 性能提高很多, Koa 的 Generator 编写方式由之前的授人诟病的异步编写逻辑变成了同步编写逻辑,而且由于原生支持了 Promise 等高级方法大大减少了第三方库的引入,压测数据显示速度和快而且非常省资源,目前我们是单核最低配阿里云来跑,多台弹性负载均衡,三台成功抗过了 Apple Stroe 的首页推广,搞过 IOS App 的人会深有体会吧~ 不好意思,我在回复中只用了“蚕食”一词一笔带过,并没有说详细,非常抱歉;我的意思不是 HTML5 把 Android 技术栈占领了,而是现在大家都在试水,而且觉得这个前景很好,现在已经有好多知名 App 开始使用 HTML5 嵌入到 Android 应用中,我们经过测试也确实发现 Cordova 在老爷机上面表现不好,但关于 Android 的老爷机的问题,也是我们 App 开发者痛苦的深渊吧,后来产品人员做数据调研,二八定律,决定狠心割舍,毕竟不是土豪厂家,毕竟支持 Android2.3 所带来的收益要远远大于兼容开发的成本,而且如果产品真的做得好用户会有决心换一台时下常规配置的设备的吧~~我们对于 IE 浏览器的决策也是这样的,本人也比较信服产品人员的这种明智的取舍决策。 我本人很不愿意去用 Go ,觉得 Go 的应用场景更偏向于服务基建,我们曾经考虑过用 Go ,在技术选型的时候充分了解到了 Go 的优势和坑,当时 Go 它还并没有准备好作为全能的 WEB 开发技术,至少对于我们的领域来说是不适合的,所以决定继续使用 Nodejs 了。 |
59
libook 2016-01-29 10:35:38 +08:00 1
@letv 非常抱歉不小心触发关于“ Java 语言的地位”的圣战,这本身毫无意义而且违背你的初衷,我不会辩驳的,毕竟每个人所处的环境不一样,我只说了我在互联网创业公司技术圈的所见所闻,如果未来 5 年的趋势确实如我所言,如果你是做互联网创业,可以参考我的说法,如果不是,请看一看 V2 里其他大牛们的建议,希望对你有帮助,也祝愿你能顺利转型。
|
60
libook 2016-01-29 10:39:52 +08:00
@dphdjy 不好意思,有笔误“毕竟支持 Android2.3 所带来的收益要远远大于兼容开发的成本”应该是“毕竟支持 Android2.3 所带来的收益要远远低于兼容开发的成本”
|
61
tempuseraccount 2016-01-29 10:49:03 +08:00
不错,加油
java 门槛低,需求大投入回报比高 C++正好完全相反 |
62
louk78 2016-01-29 11:26:54 +08:00
你精通 C++了, JAVA 就 24 小时就可以开发
|
63
letv OP |
64
Hongmin 2016-01-29 11:53:59 +08:00
@tempuseraccount 无情赞美!
|
66
wizardforcel 2016-01-29 12:31:46 +08:00
@libook
我觉得高性能和难用是一个权衡。你不要光看到它的高性能,而忽略了异步逻辑这个坑。(比起异步 io ,我觉得是 v8 的 jit 使它具有非常高的性能) h5 app 的最大问题还是不能编译成 native 的代码。性能差可以忍一忍,比起这个, apple store 那边审核都过不了。 |
67
libook 2016-01-29 12:41:34 +08:00
@wizardforcel 问题提的很好。
首先 ES6 的 Generator+Koa 彻底解决了异步逻辑这个问题,直接用同步逻辑来写就可以了,有需要的地方再做异步优化,真的方便很多。 h5 嵌入在 Apple Store 的审核问题的坑我们趟过了,暂时的解决方案是把所需要的 H5 资源都编译到包里,只要没有 H5 资源的下载就可以审核通过,目前我们嵌入 H5 的 Android 端和 IOS 端都上线一段时间了,目前工作良好,除了被我们忍痛割舍的低端机用户的性能问题。。。 |
69
okeydokey 2016-01-29 13:22:16 +08:00
@libook
图样,图森破, java 的槽点早就不是性能了 java 的用武之地是 android 和国企 web ?你大概也只接触过这些吧 阿里的 nodejs 项目恰恰都是你说的 web 前台,后台绝大部都是 java |
72
jixiangqd 2016-01-29 16:01:54 +08:00
我也是 C++,现在转 python 了 - -
|
73
pandachow 2016-01-29 16:15:12 +08:00
说真的,虽然我不写 Java , Java 也很菜,但是我知道企业界玩 Java 是很厉害的,我知道神一样的阿里中间件团队是要靠深厚的 Java 功底吃饭的,他们团队的理论和实践能力都是专家级的,他们的劳动是扛过了这么多次双 11 的考验的。。。
|
76
saximoer 2016-01-29 16:33:48 +08:00
需要注意不用那么认真写代码了(大雾。。。。。。)
|
78
jasontsai 2016-01-29 17:34:56 +08:00
@woai110120130 哈哈同感 w
|
80
springzero 2016-01-30 09:49:46 +08:00
语言都差不多,不要争了,多大的事。年轻的人们~
http://www.yinwang.org/blog-cn/2016/01/18/java/ |
81
cxshun 2016-01-30 23:58:10 +08:00
@whatisnew 我说的那些? Hadoop 那些?你去看看源码吧,看有没有 Java 代码。虽然不全是 Java ,但有部分。
|
82
tinyproxy 2016-01-31 12:44:28 +08:00 via iPad
楼上贴王垠文章来给 java 说句公道话就算了吧,这种口气跟鄙视 java 的人唯一的区别就是鄙视其他语言而已,大家都是成年人,选择什么语言不该是业务决定的么。
|