乘风破浪 [问题点数:50分]

Bbs1
本版专家分:0
结帖率 0%
愿浮萍乘风破浪
或许是今年的贺岁档电影全部遭遇“滑铁卢”的缘故,在这种情况下,电影《<em>乘风破浪</em>》或许会成为拯救整个贺一个岁档的奇迹。同往常一样,我依然选择一个人去看电影,而庆幸的是韩寒真的没有让我们失望。虽然前期在微博上经常看到韩寒在为这部电影做宣传,但我一直想知道它会一种什么样的方式来讲述这个故事,我隐隐约约觉得徐太浪(邓超饰)、徐正太(彭于晏饰)、小花(赵丽颖饰)三个人之间的关系非同寻常,我甚至臆想这是一部俗套的
乘风破浪会有时,直挂云帆济沧海。
2016-07-17,20:11最近决定开始记录博客,今天好好的梳理一下。其实很久以前就明白,如果能将自己在学习工作中遇到的问题、出现的想法和经历的心态变化都记录下来,肯定是大有益处的,但总是因为各种各种的原因而中断了。最近工作学习生活之类的总算稳定了一点,不用再各种奔波,也能够沉下心来重新反思总结自己每天的状态,如果能够一直坚持下去肯定是最好的。断断续续的也用过很多笔记软件之类的,有道云笔记、为知
Win 10系统:乘风破浪,走遍中国
Win 10系统:<em>乘风破浪</em>,走遍中国9月24日,在习主席访美期间,微软在西雅图与国内多个大型企业(集团)密集签订“合作协议”,共同推动Win 10系统在中国的普及与应用,惠及中国人民大众。现在的实际情况是,习主席访美成功,确立了中美之间的“新型大国关系”,“合作共赢”的主旋律,深入人心。由此,我们发展软件业的思路应当跟上客观形势的发展,”接纳“微软,深化合作,不再搞“零和博弈”(即“你死我活”的争斗
第12期《乘风破浪》2月刊
1. 《ASP.NET MVC-轻松理解Routing(路由)》——任杰 推荐理由:你是否了解ASP.NET MVC中如何处理用户请求,是否认识Global.asax文件,我们又该如何设置启动页,本文将带你一探究竟。   2.《软件测试——程序员“素质”提升的法宝》——宋喆 推荐理由:你了解测试么?测试对你来说有什么特殊意义么?每一个程序员都应该经历一次完整的测试,才能领
博客推广三大法,让你的博客乘风破浪
博客推广三大法,让你的博客<em>乘风破浪</em>.扩大博客知名度
第12期 《乘风破浪正远航》 9月刊
1.    天空不留痕迹,鸟儿却已飞过——年度总结——李硕        1.  天空不留痕迹,鸟儿却已飞过——年度总结——李硕   推荐理由: 兴趣是我们最好的老师,一点一滴的积累,明媚与忧伤,冒险与倔强,终将成就最好的我们。     2. 【ASP.net】浏览器和服务器的交互—— 王璐   推荐理由: 从web应用程序开发周期,到浏览器与服务器交互,图的
2017乘风破浪,量化护航 ——京东量化&中信证券线下交流会
2017年6月30日下午13:30—18:00,京东金融量化平台与中信证券联合举办的《量化市场的处境·前景与策略布局》主题交流会在北京中信大厦顺利召开。京东量化平台、中信证券嘉宾以及来自京东量化平台的10位量化策略榜的优秀选手悉数到场,共同参与了本次线下讨论交流。                 股市跌宕起伏、经济数据疲软、汇市暗潮涌动。      
奥维奥:新零售下,家具家居该如何乘风破浪
二十年前,以“提供优质的销售通道和技术服务”为核心的经营模式,红星美凯龙和居然之家,将一二线知名家居品牌聚集在一起,让消费者和装企进行一站式采购,最后以零售价成交。 十年前,来自瑞典的家具零售巨头宜家进入中国,“全球采购模式以及开放式体验”的经营模式又为家居零售开启新的大门。 而现在的新零售时代,中国的家居行业面临着巨大的结构性变化,消费趋势的转变、商业模式的创新、市场的洗牌、资本的合纵连横,都让...
“各凭态度,乘风破浪”—网易发布会,世界对我不一样!
“各凭态度,<em>乘风破浪</em>”—网易发布会,世界对我不一样! 最早接触网易是中国大学mooc,这确实是线上教育很出名的,自那之后便慢慢解了网易,包括网易云课堂,网易公开课,网易云音乐等,这些都是网易的区块链,但这条链是非常长的,几乎覆盖了每个领域,都今天,我才感觉到,网易真的是在一步一步进步,对我的感触也挺大的,毕竟我对丁磊也是很佩服的,希望这次的发布会,也会对网易产生很大的影响。
乘风破浪会有时,直挂云帆济沧海 展望2019
新年已过,总结2018,展望2019. 干了不少年的开发了,可是不是想上高考那种的深入,那种真的知其然,知其所以然的深入学习的。惰性导致这几年的不思进取,仔细想想。 俗话说人无远虑必有近忧 回顾: 1.不算是换公司,毕竟是原公司的合作方,三方协议,直接来到了新的公司。 2.iOS技术已经达到了一个瓶颈,整天忙于业务,没有精力搞一些有兴趣的开源和底层来研究(除了特殊的几个必须要研究)。 ...
问aningstar(乘风破浪终有时)的一个关于ACTIVEX的问题
问一个问题,如何才能根据ActiveX的.h知道这个控件的属性呢?rn比如REALPLAYER的这个OCX,就知道rn virtual HRESULT STDMETHODCALLTYPE set_Controls(BSTR Controls/*[in]*/) = 0;rn // [105] Returns/Sets the visibility of labels in the Information Panel of the control.rn了,怎么能知道它的Controls里有ImageWindow呢?谢谢!
微信小程序催生新的创业机会 阿拉丁为首批乘风破浪
每一波技术浪潮总能催生出一批新生力量。微信小程序的问世,有人曾说它是“移动互联网最后一波红利”,其所蕴含的巨大创业机会,正吸引着众多有着敏锐商业嗅觉力的创业者、企业家投入其中,以最佳时机获取头波红利。阿拉丁创始人&CEO史文禄就是其中的一位。
许又声:希望澳门同胞在国家改革开放的新一轮大潮中乘风破浪大展宏图
中新社澳门1月25日电 (记者 杨喆)国务院侨务办公室主任许又声25日出席“四海同春”大型春节晚会澳门演出时致辞指出,希望澳门同胞能够紧紧依靠祖国,抓住历史机遇,充分发挥爱国爱澳、包容共济、务实进取的优良传统,在国家改革开放的新一轮大潮中<em>乘风破浪</em>,大展宏图。许又声指出,20年前,中国政府恢复对澳门行使主权,在外漂泊了一百多年的游子终于回到祖国母亲的怀抱。自此,澳门踏上了同内地优势互补、共同发展的宽...
第12期《动则乘风破浪,静则随遇而安》5月刊
1. FastDFS相关教程—— 李硕推荐理由:本专栏是安装使用FastDFS有关的实用教程,以及适用场景。在生产环境中按照FastDFS,不能仅仅保证能正常运行,还要考虑磁盘资源、安全性等实际问题。2.【spring】ioc原理——李晓洁推荐理由:spring是我们需要掌握的一个非常重要的内容,最近总结了一些关于spring的基础,希望能和大家多多交流。3.  BootStrap之X-edita...
用代码调出电脑所有的WiFi及密码
运行cmd 直接运行以下代码并enter for /f "skip=10 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @for /f "tokens=1-2 delims=:" %k in ('netsh wlan show profiles %j key ^= clear ^|findstr /i "关键内容"') d
hihocoder 完全背包
小Ho现在手上有M张奖券,而奖品区有N种奖品,分别标号为1到N,其中第i种奖品需要need(i)张奖券进行兑换,并且可以兑换无数次,为了使得辛苦得到的奖券不白白浪费,小Ho给每件奖品都评了分,其中第i件奖品的评分值为value(i),表示他对这件奖品的喜好值。现在他想知道,凭借他手上的这些奖券,可以换到哪些奖品,使得这些奖品的喜好值之和能够最大。#include #includ
他日江湖再见
过去的事过去的人,近日常常想起,那种滋味,是怀念吧,那段青春故事。 现在的事现在的人,近日常常触及,那种感觉,是不舍吧,这段成长经历。 昨天晚上武术队第一次大型聚餐,大一的训练落下帷幕,下次再见,便是大二的人了,也便不再是被带的的那一个。我们都将成长,成长为自己眼中的别人。有些慌张吧,还没来得及强大,便要站出来些,再站出来些,便要伸手像学长学...
list的常见使用方法
list的常见的使用方法 list因为是链表模板,所以不用多想会比其他的stl复杂一些,在总结的时候也几度崩溃,因为很多操作在其他stl可以直接使用的操作在list里面都会报错,我尽量会用比较易懂的代码进行实现。 list是双链表类模板,常规操作是遍历、查找、增加、删除等,文章主要根据这四个进行说明。 遍历 这里的遍历需要用到迭代器,之前说过比较麻烦,但是真的还是比较简单,也不觉得麻烦了。 首先...
长风破浪会有时,直挂云帆济沧海
今天是2017年12月20,又到了快要考研的时候,突然很失落,很伤心,最近诸事不顺,想起了一句诗,行路难,行路难,多歧路,今安在,长风破浪会有时,直挂云帆济沧海,我能做的是什么,只不过是无谓的叹息,这些东西早已成为定局,无法改变,我能做的就是做好我自己的工作,其他的都没有用,在这里还非常希望刘霞芳能考上,完成我的心愿,也不枉费她两年的辛苦,20日已经到了离23号也不远了吧,恍惚之间快两年了,真的很
GPIO按键控制接口
GPIO接口的实例,实现方案,<em>乘风破浪</em>会有时
多线程测试(wxWidgets)
你想了解C++的多线程吗?这份资料将成为你的助手,帮助你<em>乘风破浪</em>。
科研—画图&图片处理1
一般步骤: 1、找图片 百度搜索,比如搜索“摄像机” 关键词: 1)摄像机 图标 2)摄像机 小图标 2)摄像机 矢量图标 3)摄像机 矢量素材 4)摄像机 素描 发现可以在图片相关网站查找图片 1、昵图 2、志乐园 3、千图网 4、素材中国 5、站酷 6、图行天下 7、爱图网 8、懒人图库 9、汇图 Note:比如在昵图网中搜索小车 2、找到图片处理 3、图片
caioj1048: 宽搜3(巧妙取量)
【闲话】 折磨了我一天的一题qaq刚刚去问了杜老师qaq帮我仔细一点点看了代码 最后被自己蠢哭....没有考虑倒0次的时候..以及!!!!不能把主函数的ans直接用bfs(s)替换掉 因为else里面的是重新算的 如果非要这样的话在else里面要重新初始化f数组 考虑边界啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
实战破解WIFI(带视频)
这是一个详细的破解WIFI教程,将帮助想学习破解WIFI的同学。安全。
caioj1042:递归12(平分石头)
【闲话】仿佛遇到了瓶颈的一题 想不明白 瘫倒 题目描述 【同时可用背包做】      给你N颗石头,给出N(0   输入 输出 样例输入 5 1012345 样例输出 10 【代码1】ac#include #include using namespace std; int n,m,a[220],v[220],ans; void dfs(int k,int
WiFi-ESP8266入门开发(二)-连接WiFi网络
对于ESP8266开源技术感兴趣的可以加群,我们一起探索交流学习,群号:579932824。群名:ESP8266开源技术交流群。 这一章将通过编程实验的方式来认识ESP8266的功能,并体验快速而便捷的开发流程。   这一段程序将使得ESP8266连接指定名称和密码的Wifi热点,主要流程如下: 程序流程: 连接NodeMCU板子到USB接口,打开Arduino IDE编辑器界面,选择好...
(一)PHP四种定界符
PHP文件执行原理:客户端向服务器发送一个请求,如果请求的是HTML页面,服务器直接将HTML页面发送到客户端给浏览器解析,如果请求的是PHP页面,则服务器会运行PHP文件,然后生成标准的HTML,将生成的HTML页面发送到客户端。 1、标准风格: 2、短标记风格:(默认不开启,需在php.ini文件中修改short_open_tags = On 才会启用,重启服务器
wifi无线密码破解字典包
wifi无线密码破解字典包,很好很强大,分享给有需要的人
正则表达式学习的个人小结
正则表达式是对字符串的一种操作,运用到JS中可以帮助我们去寻找符合要求的字符串(表单验证)。 http://regexper.com (这个网站可以把正则表达式输入进去然后用图形显示出来,因为是国外的网站,国内登入可能比较慢,甚至进不去,但是可以把把这个东西从git下载到本地,然后在本地http://localhost:8080端口打开,具体操作可以参考其他博客) 其实我觉得正则表达式的学习...
IT公司前端年度工作总结报告
年度前端公司工作总结报告,将技术与业务相结合,通过技术改善业务模式,通过业务推动技术革新,将以技术为基石,业务为方舟,<em>乘风破浪</em>,逆水直上! 其他 严格按照公司规定的方案进行规律的工作,认真对待任务和需求,不拖延,不划水,不懒惰。加强和各部门同事们的沟通与合作,对技术型演讲要保持积极、严谨的态度,力争保持先进和完备,时刻对新技术保持同步,时刻对自身做技术提升准备。
IIS7部署DJANGO项目的简单记录
1、2008先安装好PYTHON2.7以及项目相关的PYTHON模块 2、再安装wfastcgi 3、拷贝PYTHON安装目录下的Lib\site-packages\wfastcgi-3.0.0-py2.7.egg\wfastcgi.py至与项目的manage.py文件同一个目录 4、建立IIS站点,主目录即为DJANGO工程的根目录,即包含manage.py文件的那个目录 5、IIS管理...
caioj1038:递归8(分解数)
【闲话】 qwqqq激动死老师没讲然后自己没写出了 看视频之后写了几遍代码然后把自己原来写的改对了 开心qwq(虽然只是个s表示不同而已orz 妈耶递归的顺序什么的太神奇
顺序表实现集合运算
采用顺序表结构编程实现:两个集合的运算:交集 并集 差集#include #include #include #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define OK 1 #define OVERFLOW -2 #define ERROR 0 using namespace std; typedef struct {
读《腾讯传》有感
之前一直想了解下腾讯的发家史,以作平时的谈资。2017年上半年偶然在机场书店看到了《腾讯传》,于是便顺手买下。直到2017年7月,读完了一把《腾讯传》。想写几点体会,要不然读完一本书,就如同喝了一碗鸡汤,感觉很美味,其实P营养没有。吴晓波老师还是不错的,能把内容组织的如此全面和有条理,以至于读书的这段时间内,让我不自觉的情景代入,以自己替换小马哥以感受创业的感觉。 首先,设身处地的感受一下创业的
华为防火墙技术漫谈
2013年9月,华为在首届企业网络大会上发布下一代防火墙USG6600,标志着华为防火墙又进入一个新的历史发展阶段。 2013年12月,在Forrester Research发布的最新关于网络隔离网关报告中,华为下一代防火墙作为唯一的中国厂商,在安全隔离网关特性上的全面性和质量方面,以95%以上的超高满足度获得了优秀的评价。 时光倒回至2001年,华为发布第一款防火墙插卡,白驹过隙,转眼已经十二年。十二年来,互联网经历着不可预测的高速发展阶段,而华为防火墙以及安全系列产品正在这发展的浪潮中<em>乘风破浪</em>,逐步成长和壮大,以至今天仍然在不断超越。
高可用架构·中国初创故事(第3期).pdf
这是一个最好的时代,也是一个最坏的时代。互联网为中国社会注入了无数机会,各行各业都涌现出了大量运用自己智慧勇敢创新的创业者。然而在这种繁荣的大环境中,也处处充满荆棘和曲折,创业者们在这片看似广阔,实却错综复杂的海域中都看到了什么?本期内容汇总了极牛“猿创说”微信公众号中的精选内容,通过采访初创公司会会、趣火星、拉拉公园、福佑卡车、快法务、大食品、嫁拍、挑食火锅、最右的创始人,我们不仅看到了<em>乘风破浪</em>的创业者们,也看到了世相百态,一个充满了财富和野心的中国社会缩影。
ShopEx网上商店系统服务器安装包 V4.7.1
一款免费的独立网店系统,适合中小企业和个人方便快捷构建个性化的网上商店。 相比其他商城系统,ShopEx有如下与众不同的特点: 1.完全免费:ShopEx网上商店系统终身完全免费。 2.稳定性:每天都在接受上万用户共同使用的考验。 3.增值附加软件:ShopEx助理和ShopEx小信使两种客户端辅助软件。 4.强势战略合作伙伴:支付宝、PayPal贝宝、DISCUZ!等等。 5.在线支付:内置国内外在线支付网关36家(仍在不断增加中)。 6.技术开放:系统前台完全开放源代码,大大增强系统二次开发的能力。 7.个性化:前台页面可以随意的更改,19套免费模版。 8.综合打包服务:域名、空间、系统,ShopEx<em>乘风破浪</em>整套解决方案。 9.贴心客服与技术支持:商业用户绿色通道、在线客服、论坛、文档支持。 10.无缝衔接:能够高度整合ERP、CRM等第三方系统。 11.快速上手:用户进入系统之后能在5分钟内上手。
微服务架构与实践
前言   一直以来,系统的架构设计就是 IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效地构建。系统架构设计描述了在应用系统内部,如何根据业务、技术、组织、灵活性、可扩展性以及可维护性等多种因素,将应用系统划分成不同的部分,并使这些部分之间相互分工、相互协作,从而为用户提供某种特定的价值。多年来,我们一直在技术的浪潮中<em>乘风破浪</em>,扬帆奋进,寻找更优秀的系统架构设计方式来构建系统。   由来   随着 RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务架构逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案呢?在微服务架构的实施过程中存在着怎样的困难和挑战呢?   在过去两年多的时间里,笔者一直在探索和实践,并助力国外某房地产互联网门户,将其复杂的业务支撑系统逐渐演进为基于微服务架构的系统。   这期间也经历了从微服务的理论认识,到小范围实践、迭代,再到多个基于微服务构建的项目已经成功上线的过程。在感受微服务为开发实践、测试策略、部署、运维等带来改变的同时,也切身体会到使用微服务架构,对系统灵活性、可伸缩性方面的提升,以及对团队应对变化能力的提升。
Spring 核心技术与产品理念剖析
IT 技术发展太快了,就像浪潮一样一波接着一波,朝你迎面扑来,稍不留神就会被巨浪卷至海底而不得翻身。我们必须要学会抓住那些不变的本质或规律,只有这样才能屹立潮头而不倒,<em>乘风破浪</em>,做这个巨变时代的弄潮儿
菜鸟成长之路:Java程序员职场全攻略.吴亚峰(详细书签) PDF 下载 高清 完整版
《菜鸟成长之路—Java程序员职场全攻略》以包罗万象的IT这个大江湖为背景,将Java职场中从入门前的学校菜鸟到成长为技术大牛的过程展现给读者,内容饱满但又不失趣味性。在本书中既有入职前的行业探秘、误区排除,也有入职后的口诀传授和江湖新锐兵器介绍。不仅与读者朋友们探讨了Java江湖中做事的学问,还探讨了一些职场中做人的道理,可以说本书是Java开发人员的职场宝典。 《菜鸟成长之路—Java程序员职场全攻略》适合于尚在学校对前途感到迷茫的大学生,同时也是初入职场的菜鸟的不可多得的修炼指南。对于那些已经在IT江湖闯荡数年的老鸟,本书也提供了很多新的思路与策略。 前言   每当坐在自己的工作室里看着书架上林林总总的书籍,使用着高性能的工作站进行开发时,我都会回忆起1998年自己刚刚从事Java编程时的探索和艰辛。回想当初,仅仅有一台主频133MHz的电脑,就敢在上面进行企业级开发,就敢在上面跑Oracle。由于缺乏有效的技术指导,同时难以像现在这样获得丰富的技术资料,那时候的学习和开发都是很痛苦的。有时连续熬夜很多天也无法将一个小小的程序调通,开发过程中常常伴随着沮丧和郁闷。   而现在的情况已经大不一样了,目前市面上的IT技术书籍可谓是铺天盖地,广大读者不必担心无书可读,而是该担心如何选本好书了。但是纵观浩瀚书海,几乎无不例外地将技术讲解作为重点,这样就忽视了一些更值得关注的问题。   ·从懵懂学生该如何过渡到一名成功的开发人员?   ·如何在血雨腥风的求职大战中脱颖而出?   ·在职场中只要技术过硬就可以吃遍天下吗?   ·是学招式重要,还是练内功重要?   ·掌握了什么技能,才真正算是高手?   目前市面上能够回答以上这些问题的书籍可谓寥寥无几。不得不承认,对于许多未入门的Java菜鸟和已在Java江湖闯荡的开发人员来说,目前最缺少的不是技术书籍,而是职业生涯的规划指南及项目开发思想与经验的分享。   多年的Java开发经历对我自己来说是一笔宝贵的财富,现在有幸将这些闪光的宝贝写进书中。希望那些曾经启发和指导过自己的不论是技术还是非技术上的点点滴滴,也能够和广大读者朋友产生一些共鸣,更好地帮助大家在Java的海洋里<em>乘风破浪</em>。或许海子的那句诗最能表达本书的写作意图:“那幸福的闪电告诉我的,我将告诉每一个人。”   本书中有两位主人公:职场新手蔡佳娃和业内高人牛开复。而本书也主要以蔡佳娃的成长历程为主线,通过向读者讲述笨手笨脚的蔡佳娃如何在师兄牛开复的帮助下一步一步成长为独当一面的开发人员。把从菜鸟到大牛这个过程像电影般立体地展示给读者,这其实就是我自己的成长经历。   因为力求将Java开发人员从菜鸟到大牛成长过程中的方方面面都呈现出来,本书在内容的组织上花费了较长时间。本书分为上下两篇,上篇中主要讲述了如何从Java职场的门外汉成功杀入这个英雄辈出的江湖并在其中安身立命、功成名就。其中既有对职场现状的揭秘及行业误区的排除,也有着求职游戏中的详细攻略指南,同时也介绍了在职场这个复杂环境中做人和做事的学问。这虽然都是些技术之外的知识,但是却在很大程度上决定了一名开发人员在自己的“职途”上能走多远。   本书的下篇则主要将自己从事Java开发十余年来积累的心得体会分门别类地进行了介绍。有一些是在开发工作中必须精通和掌握的知识,有一些则是从多年编程实践中总结出的“必杀技”,还有一些是在工作中必须杜绝的错误做法。但愿这些技术积累能够帮助读者朋友们在工作中实现鲤鱼跃龙门式的提升,同时也希望那些曾让自己迷茫和困惑的地方,不再成为广大读者朋友前进道路上的绊脚石。   IT行业是个瞬息万变、发展极快的行业,各种新技术层出不穷,跟不上技术车轮的转动就会在前进的道路上与他人渐行渐远,最终彻底消失在大家的视线中。因此本书中有一章专门介绍当前Java技术中的最新行情,对其或复杂或高深的原理做了简约而完整的介绍,并相应地附以经典示例。读者朋友们可以了解当前江湖中的新锐兵器,并据此确定自己努力的方向。   编写的过程中,为了让不同水平的读者都能看懂,本书尽量做到讲解通俗,把一些高高在上的技术思想及原理翻译成菜鸟也能看懂的语言,这的确不是一项轻松的工作。在语言的斟酌上,也花费了较多的精力,这是为了让读者朋友不会在阅读的时候感到boring。读者若能从本书生动却不乏深刻的语言中感受到学习的乐趣和享受之处,便是对本书的莫大鼓励了。   这本书虽然主要探讨的是从事Java开发的心得体会,但是一些程序的示例还是要有的。为了不让本书落入一般技术书籍的俗套,在举例的时候尽量保证其简约和经典。因为本书最主要的目的不是让读者朋友们学会表面的技术,而是让大家领悟其中的思想。学习招式在次,提升内力才是最主要的。   由于时间所限,本书在编写的时候难免会有一些不足和疏漏之处,同时由于没有随书光盘,为了方便读者索要书中示例的源代码以及更好地进行交流,现将笔者邮箱地址公布如下:javase6_guide@yahoo.cn,有问题的读者可以通过该邮箱联系到笔者。   最后,经过几个月见缝插针式的奋战,本书终于要交稿了。回顾写书的这几个月,不禁为自己能最终完成这个耗时费力的“大制作”而感到欣慰。同时也为自己能将从事Java开发多年积累的宝贵经验以及编程感悟分享给正在开发阵线上埋头苦干的广大Java人而感到高兴。   贾岛的《剑客》一诗有言:“十年磨一剑,霜刃未曾试,今日把示君,谁有不平事?”,从1998年首次接触Java算起,到现在大概也是十年有余。希望用十年的知识和经验磨出的利剑能够帮助广大读者朋友在实际工作中披荆斩棘、奋勇杀敌。 作译者 吴亚峰 毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位,1998年开始从事 Java开发,有十多年的Java开发经验与培训经验,主要的研究方向是Java EE。现在为Java EE独立软件开发工程师,同时兼任Sun授权Java培训中心认证教师,为数十家著名企业培训了上千名软件开发人员,曾编写过《精通NetBeans——Java桌面、Web与企业级程序开发详解》、《Java SE 6.0 编程指南》、《30天学通Java项目案例开发》及《30天学通Java Web项目案例开发》等畅销技术书籍。 目录 《菜鸟成长之路—Java程序员职场全攻略》 封面 封底 书名 版权 前言 目录 上篇 我与江湖 第1章 初窥门径——行业揭秘 1.1 IT精英在中国的生存现状 1.1.1 外行人眼中的IT人 1.1.2 IT行情分布 1.1.3 IT语言平台 1.1.4 你说我容易吗 1.1.5 我挨踢我骄傲 1.2 当今主流公司的企业文化 1.2.1 欧美企业的特色文化 1.2.2 日韩企业的工作模式 1.2.3 中资企业的传统特色 1.2.4 两种不同的软件外包方式 1.2.5 加入什么样的公司 1.3 散兵游勇还是团队作战 1.3.1 哪样多一些 1.3.2 团队和单兵 1.3.3 不要停止思考 1.4 这条路大家都是怎么走的 1.4.1 职位和待遇是怎么升的 1.4.2 有干不动的时候吗 1.4.3 走的人多了,还会有路吗 1.5 大公司,小公司 1.5.1 大公司爱专才 1.5.2 小公司爱多面手 1.6 本章小结 第2章 雾里看花——职场误区 2.1 到底差不差钱 2.1.1 大家都是个什么身价 2.1.2 给自己估个好价 2.1.3 先挣的是资本,后挣的是钱 2.2 谁给我解决户口问题 2.2.1 讲讲户口的故事 2.2.2 各地户口政策面面观 2.2.3 别怕,咱有暂住证呢 2.2.4 户口问题小结 2.3 我们不是爱加班 2.3.1 常态加班是为何 2.3.2 你为什么加班 2.3.3 让自己不再加班 2.4 莫学狗熊掰棒子 2.4.1 做过的这辈子永远都不会忘吗 2.4.2 为自己维护一个小仓库 2.4.3 多写开发心得 2.5 本章小结 第3章 下山之路——有备无患 3.1 从学生升级到开发人员 3.1.1 学校给了你什么 3.1.2 咱们还缺啥 3.1.3 经验,还是经验 3.2 为自己定下目标 3.2.1 目标的意义 3.2.2 树立目标的学问 3.2.3 让自己知道今天该干什么 3.3 IT认证的问题 3.3.1 认证那点事 3.3.2 现在的认证 3.3.3 该不该考个证 3.4 本章小结 第4章 必须通关的游戏——求职之旅 4.1 简历靓起来 4.1.1 简历不是这样写的 4.1.2 写出出色的简历 4.1.3 如果是机器筛选简历 4.1.4 如何在简历中追逐潮流 4.1.5 简历小结 4.2 笔试,混可不行 4.2.1 初识笔试 4.2.2 牛刀初试 4.2.3 笔试小结 4.3 面试——最难的BOSS 4.3.1 面试面什么 4.3.2 支招面试 4.3.3 面试演习 4.3.4 面试小结 4.4 试用期——这才是最后一关 4.4.1 试用期考查什么 4.4.2 多做什么,少做什么 4.4.3 试用期小结 4.5 本章小结 第5章 步入江湖——做事的学问 5.1 身为菜鸟 5.1.1 打碎牙齿往肚里咽 5.1.2 菜鸟不应该自卑 5.1.3 一叶障目,不见泰山 5.1.4 易则易知,简则易从 5.2 锐意进取,菜鸟无敌 5.2.1 既是初生牛犊,就别怕虎 5.2.2 勤于学习,落后就要挨打 5.2.3 菜鸟应该懂得的几件事 5.3 知足常乐,健康心态 5.3.1 总有你达不到的高度 5.3.2 职场爬山论 5.3.3 做最好的自己 5.4 菜鸟何以菜,大牛何以牛 5.4.1 代码量的问题 5.4.2 敢于往上走一步 5.4.3 升天不成,掉下来也是个半仙 5.5 酒香也怕巷子深 5.5.1 找到你的优势 5.5.2 学会竞争 5.5.3 发展才是硬道理 5.6 本章小结 第6章 立足江湖——做人的学问 6.1 新环境有新态度 6.1.1 开发人员和厨师 6.1.2 做人是为了做事 6.2 同事——战友和对手 6.2.1 竞争与合作中的做人智慧 6.2.2 做一个好同事 6.3 上级,不是校长或家长 6.3.1 是员工,不是学生 6.3.2 上级讨厌的员工 6.3.3 怎样与上级处理好关系 6.4 新人和下属,曾经的你 6.4.1 准备工作 6.4.2 学着做个好领导 6.4.3 被夹在自己的上级和下级之间怎么办 6.5 客户,领导内行的外行上帝 6.5.1 如何招待上帝 6.5.2 不要这样对待上帝 6.5.3 如何对付不可能完成的任务 6.6 学着处理和MM的关系 6.6.1 这个行业的男女比例 6.6.2 如何面对异性员工 6.7 本章小节 第7章 百尺竿头,更进一步 7.1 技术不是万能的 7.1.1 为何IT是个服务业 7.1.2 业务流程要清楚 7.1.3 专业领域的知识要了解 7.1.4 软件系统的操作方式 7.2 书是人类进步的阶梯 7.2.1 还要不要读书学习 7.2.2 选本好书不容易 7.3 解决问题的方法 7.3.1 正招和歪招 7.3.2 优先使用正招 7.3.3 正招不够,歪招也可以上 7.4 软件产品的目标 7.4.1 实现功能是底线 7.4.2 提升性能带来质的飞跃 7.5 多多参加技术大会和沙龙 7.5.1 何为技术大会 7.5.2 我们为什么去技术大会 7.5.3 技术大会PK 7.5.4 技术沙龙 7.6 以史为鉴,可学古今 7.6.1 PC发展的4个王朝 7.6.2 后互联网时代的到来 7.6.3 我们如何抓住时代的机遇 7.6.4 移动互联网改变着我们的生活 7.6.5 移动互联网有助于企业管理 7.7 本章小结 第8章 江湖多歧路 8.1 “学院”派和“企业”派 8.1.1 何为“学院”派 8.1.2 “企业”派的实干 8.1.3 一起来做“企业”派 8.2 关于“剑宗”和“气宗”的讨论 8.2.1 何为“剑宗” 8.2.2 何为“气宗” 8.2.3 奇技淫巧不如提升修为 8.3 有自己的平台才是王道 8.3.1 关于框架的纯“拿来主义” 8.3.2 项目的分割 8.4 “大而全”还是“精而深” 8.4.1 “大而全”和“精而深”矛盾吗 8.4.2 “大而全”托出“精而深” 8.5 本章小结 下篇 笑傲江湖 第9章 天下功夫出少林 9.1 Java EE开发人员必知必会 9.1.1 坚实的基础——核心Java 9.1.2 只会Java可不行——大牛的百宝囊 9.2 Java ME开发人员必知必会 9.2.1 了解不同平台对Java ME的支持 9.2.2 游戏开发的基础知识 9.2.3 网络编程知识 9.3 Android开发人员必知必会 9.3.1 初识Android 9.3.2 Android开发的基础知识 9.3.3 Android带来的全新开发体验 9.4 移动终端开发的机遇与挑战 9.4.1 多分辨率挑战 9.4.2 电池续航能力的挑战 9.4.3 独特的操控方式 9.4.4 3G、Android对开发人员的挑战和机遇 9.5 当下流行EE框架揭秘 9.5.1 Struts和WebWork那点事 9.5.2 Tapestry框架 9.5.3 Spring——不可多得的好框架 9.5.4 Hibernate——从关系世界到对象世界 9.6 大型项目青睐的技术与平台 9.6.1 JSF框架 9.6.2 EJB 3.0业务层技术 9.6.3 JPA持久层技术 9.6.4 常见应用服务器简介 9.6.5 Java企业平台的荣耀之路 9.7 如何学好框架 9.7.1 全面了解各项功能 9.7.2 彻底研究工作机理 9.8 本章小结 第10章 几种自废武功的做法 10.1 相信谬论 10.1.1 说出来别不信——链表和数组的速度问题 10.1.2 Java真的比C/C++慢吗 10.2 迷信工具,缺乏纯代码能力 10.2.1 迷信ORM 10.2.2 神化IDE 10.3 浅尝辄止,孤陋寡闻 10.3.1 finally的忽视 10.3.2 PreparedStatement的误解 10.3.3 管理数据库连接不知连接池 10.4 忽视内存管理 10.4.1 对象的3种引用 10.4.2 “小肥猪”问题 10.5 看了就不要再犯的错误 10.5.1 “+”惹的祸 10.5.2 魔法数字 10.5.3 代码复制师的渺茫前途 10.5.4 老寿星变量 10.6 本章小结 第11章 没有必杀技,怎么敢出来混 11.1 精通SQL 11.1.1 掀起SQL的盖头来 11.1.2 强大的SQL 11.1.3 SQL优化问题 11.1.4 SQL注入攻击 11.1.5 当下主流的数据库产品 11.2 拿下正则式 11.2.1 细说正则式 11.2.2 正则式在Java中的运用 11.2.3 正则式在JavaScript中的运用 11.3 不会用Ant的开发人员不是好Developer 11.3.1 Why Ant 11.3.2 Ant初体验 11.4 浅谈设计模式 11.4.1 设计模式的重要性 11.4.2 MVC设计模式 11.4.3 单例模式 11.4.4 最终守护者模式 11.5 多核之痒 11.5.1 趋势——由单核走向多核 11.5.2 揭开多核的面纱 11.5.3 多线程的特点 11.5.4 开启多线程——发挥最大性能 11.6 本章小结 第12章 新锐兵器谱 12.1 面向服务的体系架构(SOA) 12.1.1 对面的SOA看过来 12.1.2 零距离接触Web Service开发 12.1.3 博采众长之集大成者——CXF 12.1.4 英雄不问岁数——Axis 12.1.5 走近ESB——企业服务总线 12.2 富客户端应用(RIA) 12.2.1 从平淡到酷炫——RIA与AJAX 12.2.2 酷炫背后的基石——核心JavaScript 12.2.3 AJAX的开发利器——Dojo 12.2.4 AJAX的最酷代表作——GoogleMap 12.2.5 Web 2.0时代的异军突起——Mashup 12.2.6 RIA殿堂的技术新贵——JavaFX 12.2.7 数字图像处理 12.3 搜索引擎技术 12.3.1 Lucene开源项目 12.3.2 Nutch框架 12.4 3D应用开发概览 12.4.1 进入3D酷炫世界 12.4.2 3D开发基础知识 12.4.3 OpenGL ES 2.0来袭 12.4.4 OpenGL ES 1.0与2.0的区别 12.5 高性能计算新贵——CUDA 12.5.1 GPU的发展史 12.5.2 传统GPGPU的开发 12.5.3 初识CUDA 12.5.4 进阶CUDA 12.6 本章小结 第13章 武学奥义 13.1 单元测试的利器——JUnit 13.1.1 JUnit简介 13.1.2 单枪匹马,赤膊上阵——JUnit的单独使用 13.1.3 岂曰无衣,与子同袍——JUnit和Ant的联合 13.1.4 得道者多助——JUnit在Eclipse和NetBeans中的使用 13.2 版本管理 13.2.1 版本不可一日不控 13.2.2 沙场秋点兵之版本控制系统 13.2.3 版本控制系统与IDE的协作 13.3 UML建模语言 13.3.1 UML就这么回事 13.3.2 UML之实战IDE 13.4 大型服务器操作系统 13.4.1 UNIX平台 13.4.2 Linux平台 13.4.3 Windows Server平台 13.5 集群与负载均衡 13.5.1 集群 13.5.2 幂等操作 13.5.3 我们的程序运行在哪 13.6 虚拟化与云计算 13.6.1 举杯邀明月,对影成三人——虚拟化 13.6.2 云中谁寄锦书来——云计算 13.7 算法不可不研修 13.7.1 自动机——去掉if、switch 13.7.2 水仙花数优化问题 13.7.3 村村通公路问题——最小生成树 13.7.4 向量数学 13.7 本章小结 第14章 杂项 14.1 专业英语不能不熟练 14.1.1 向高新技术看齐 14.1.2 等到中文版的时候 14.1.3 做一个大牛的需要 14.2 维护大脑这个数据库 14.2.1 书到用时方恨少 14.2.2 让积累成为一种习惯 14.2.3 搜索引擎的使用 14.3 IT人也要不务正业 14.3.1 不懂数学岂不是很糟糕 14.3.2 谁说物理是白学了 14.3.3 一起来不务正业吧 14.4 读学术论文 14.4.1 别怕我,我是好人 14.4.2 醍醐灌顶,如坐春风 14.5 本章小结
Java虚拟机并发编程.[美]Venkat Subramaniam(带详细书签).pdf
快速和廉价的多核硬件驱动着高性能应用的需求,通过充分利用Java平台,你可以把这些优势展现得淋漓尽致。本书是第一本展示现代Java JDK的并发模型、软件事务内存(STM)和基于actor的并发模型三种并发风格的书籍,通过学习本书,你可以为应用程序比较和选择最佳的方案。你将学到这些模型各自的优点,何时以及如何使用它们,以及它们各自的局限性是什么。 本书分为5部分:第一部分:并发策略,阐释了影响并发性的因素、如何实现有效的并发、并发的设计方法等;第二部分:现代Java / JDK并发,讨论了现代Java API的线程安全和效率以及如何处理已有应用程序中的现实问题和重构遗留代码时的原则;第三部分:软件事务内存,深入讨论了STM并就如何在各种主要的JVM语言里使用STM给出了指导意见;第四部分:基于actor的并发,介绍了基于actor模式消除并发问题以及如何在自己的首选语言中使用actor模式;第五部分:尾声,回顾了本书讨论的解决方案并总结了成功使用并发的实用要点。本书介绍了在学习Java并发编程的技巧,可以让你从害怕并发编程到熟练掌握并享受并发编程。你可以使用Java或者你选择的JVM语言(Clojure、JRuby、Groovy或Scala)收获多核硬件不断增长的能量。 图书特色 这是一部优秀的著作!Venkat巧妙地带领我们经历了当今JVM开发人员在多线程编程时所面临的许多设计和实现决策。这本书通过通俗易懂的语言和丰富的例子(使用了当前多种开源工具和JVM语言)使得这个复杂的主题更加一目了然。 —— Albert Scherer 福莱特高等教育集团有限公司电子商务技术部经理 如果JVM是你的首选平台,那么这绝对是你必读的一本书。购买并阅读,然后让你所有的团队成员人手一本。你将顺利找到一条优秀并发问题解决方案之路。 —— Raju Gandhi Integrallis软件有限责任公司高级顾问 这本书非常透彻地阐释了一个极其重要的主题。 —— Chris Richardson CloudFoundry.com创始人 当前计算机领域对新的并发模型和JVM上新语言的兴趣和应用正在逐年递增。Venkat的这本书把二者绑在一起,向一线的开发人员展示了如何构建应用程序,并尽可能地利用现有的库,即使它们是使用不同的语言构建的。 —— Alex Miller Revelytix公司高级工程师 Venkat将引领你进入并发的世界。在开始STM和角色的精彩冒险之旅之前,他教授了Java JDK内置的现代并发工具。我真诚地相信,这本书注定是目前已有的最重要的并发编程书籍之一。Venkat再次做到了这一点! —— Matt Stine AutoZone公司技术架构师 当前并发是一个热门话题,Venkat将带你领略JVM上有效的并发编程技巧和技术。更重要的是,通过比较和对比五种不同的JVM语言中并发编程的方法,你将会开拓视野。 —— Scott Leberknight Near Infinity公司首席架构师 作者简介 Venkat Subramaniam  资深Java技术专家、并发编程专家和敏捷技术专家,拥有超过20年的软件开发经验,在Java领域(整个Java平台)、敏捷开发领域有非常深入的研究,并进行了大量实践。他是Agile Developer公司创始人,在美洲、欧洲和亚洲等多个国家和地区开展培训和指导工作,已经帮助数以千计的软件开发人员成功地在其软件项目中运用敏捷方法。 他经常受邀在大型国际软件会议和用户组活动中发表技术演讲,深受欢迎。他著作颇丰,先后独自撰写了《.NET Gotchas》、《Programming Groovy》、《Programming Scala》等经典著作,尤为值得一提的是,他与人合著的《Practices of an Agile Developer》一书获得了2007年的Jolt生产力大奖。 译者简介 薛笛 资深软件开发工程师,精通分布式系统开发和Java相关技术,对JVM有深入的研究。目前就职于腾讯公司,担任高级开发工程师,负责手机QQ、手机Qzone等应用的后台开发。热衷于技术分享,在《程序员》杂志和IBM Developers Work上发表过多篇技术文章,CSDN博客专家。 图书前言 除了咖啡因,我想没有什么能比写出一段执行速度飞快的代码更能令程序员们兴奋了。然而我们如何才能满足这种对计算速度的渴求呢?诚然,摩尔定律可以帮我们解决部分问题,但多核处理器才代表了未来真正的发展方向。为了能够充分发挥多核处理器的优势,我们每个程序员都应该熟悉并掌握并发编程的技能。 在一个并发程序中,两个或多个动作一般会同时发生。例如,一个并发程序可能需要一边下载多份文件、另一边还要执行一些计算任务以及数据库更新操作。在Java中,我们通常会使用线程来实现并发程序。虽然Java虚拟机在其设计之初就已经在语言层面支持了多线程,但并发编程的方法仍然在不断地进化和完善当中,而这正是我们在本书想要与你分享的内容。 并发编程的难点在于,我们既希望享受并发编程带来的好处,同时又不能让同步问题引火烧身。在JVM上的语言中,启动多个线程是很容易的,但它们彼此之间的执行顺序却是不可预知的。所以很快我们就将投身到一场为了协调线程并使其可以一致地处理数据而进行的战斗中去。 假设我们想要从A点出发快速抵达B点,根据旅行时间有多重要、有哪些可选的交通工具、预算是多少等因素,我们可以选择步行、坐巴士、自驾、坐和谐号或坐飞机飞过去。类似,为了提高Java代码的执行速度,我们同样也有很多选择。在JVM平台上,我们用得最多的一般是下面这三种并发模型: 称为“同步并受罪”的模型 软件事务内存(Software Transactional Memory,STM)模型 基于角色(actor-based)的并发模型 之所以将大家所熟知的JDK同步模型说成是“同步并受罪”,是因为如果我们忘记对共享可变状态进行同步或在错误的层级对其进行同步,所得到的结果将是不可预测的。如果足够幸运的话,我们还能在开发过程中捕获该问题;而如果我们没注意到这些问题,产品发布之后就会暴露出各种古怪且难以定位和重现的问题。而届时我们也无法从这些天杀的代码里找到任何编译错误、警告乃至任何简单的线索。 那些没有对共享可变状态的同步访问进行有效管理的程序本质上都是有问题的,但Java编译器却对此无动于衷。用纯Java对可变性进行编程就仿佛在和整天挑你毛病的丈母娘一起工作那样难受。相信你应该已经体会到这种痛苦了。 当我们撰写并发程序的时候,有如下三种方法可以帮助我们有效避免遇到并发所带来的问题: 在合适的地方进行正确的同步。 不共享状态。 不改变状态。 在使用现代JDK的并发API的时候,我们不得不花费大量精力来保证在合适的层级进行准确的同步。而STM则可以对用户隐藏同步操作并极大地减少出错几率。另一方面,基于角色的模型可以帮助我们避免使用共享状态,而避开共享状态正是我们赢得这场并发战役的秘密武器。 在本书中,我们将采用示例驱动的方法来学习上述三种模型以及如何利用这三种模型来更好地实现并发。 本书的目标读者 本书主要面向那些有一定经验的、正在使用诸如Java、Clojure、Groovy、JRuby和Scala这几种语言并且有兴趣进一步学习如何在JVM上管理和利用并发能力的Java程序员。 如果你是Java新手,那么本书将不会对你学习Java的基础功能有任何帮助。市面上有很多介绍Java编程基础的优秀教程可供选择,你可以先从这些书开始学起。 如果你已经在JVM平台上积累了相当的编程经验,但发觉还需要一些有助于进一步深入了解并发编程的资料,那么本书就是为你准备的。 如果你只对Java和JDK提供的解决方案,即Java线程和并发库感兴趣,那么我推荐你阅读两本非常优秀的专著,即Brian Goetz的《Java Concurrency in Practice》[Goe06]和Doug Lea的《Concurrent Programming in Java》[Lea00]。这两本书在Java内存模型以及如何确保线程安全和一致性方面提供了非常丰富的信息。 本书旨在教会你如何使用JDK提供的方案来解决某些实际的并发问题,当然其中也会包含一些额外的技巧和方法。此外,你还将学到一些有助于更方便地实现隔离可变性的第三方Java库的知识。最后,你还将学到一些通过消除显式锁来降低复杂性和出错概率的类库等方面的内容。 本书意在帮助你学习一些目前已经比较成熟的工具和方法,以便你可以更方便地从中找出最适合解决你当前所面临的并发问题的方案。 本书的主要内容 本书将帮助你学习三种不同的并发解决方案,即现代Java JDK并发模型、软件事务内存(STM)和基于角色的并发模型。 本书主要分为5部分,即并发策略、现代Java/JDK并发模型、软件事务内存、基于角色的并发模型和后记。 在第1章中,我们将讨论是什么使得并发编程如此有用以及并发编程为何如此难以掌握。除此之外,该章还将对上面提到的三种并发模型进行简单介绍。 在深入研究上述三种并发解决方案之前,我们将在第2章先介绍一些影响程序并发性和加速效果的关键因素,并讨论如何实现有效并发的相关策略。 正如将在第3章中讨论的那样,我们采用的设计方法将产生两种截然不同的效果,即要么使我们在并发的海洋里<em>乘风破浪</em>尽情遨游,要么会让我们淹没其中连个水花都看不见。 自Java引入以来,其并发API的演进和增强一直非常迅速。所以第4章我们将讨论如何利用现代Java API来解决线程安全和并发性能问题。 鉴于我们十分渴望避免使用共享可变状态,所以在第5章我们将探讨一些解决现存应用程序实际问题的方法以及一些在重构历史遗留代码时所需要注意的问题。 第6章我们将深入探讨STM,并学习如何使用STM来解决应用程序(特别那些读多写少的应用程序)中绝大部分的并发问题。 第7章我们将学习如何在几个不同的JVM语言中使用STM。 第8章我们将学习到,如果我们依托隔离可变性进行设计,那么基于角色的模型就能够帮助我们彻底解决所有并发问题。 同样,如果你对几种不同的JVM语言都有兴趣,那么你将会在第9章学到如何在你偏爱的语言中使用基于角色的模型。 最后,我们将在第10章回顾本书前面所讨论过的所有解决方案并将其总结为一些简明扼要的知识点来帮助你更好地理解和实践。 并发还是并行 在业界,这两个术语其实并没有很明显差别,不同的人对于二者区别的阐述也都是各执一词(请不要就此问题并发地对他人提问……抑或我应该说不要并行提问)。 我们姑且把二者概念上的争论放到一边,先考虑一些更实际的问题。假设我们有一个运行在单核CPU机器上的多线程应用程序,在公司升级硬件的时候把该程序重新部署到了一台多核CPU的机器上。但其实无论底层硬件的部署方式如何变化,我们的代码本质上还是运行在一个独立的JVM进程上的,所以我们在开发过程中所要考虑问题也都基本相同,即如何创建和管理线程?如何保证数据完整性?如何处理锁和同步?以及我们创建的线程是否在合适的时间跨越内存栅栏?…… 所以不管我们称之为并发也好还是并行也罢,能够真正解决问题才是保证程序正确、高效运行的关键。而这正是本书所关注的重点。 多语言程序员如何使用并发功能 Java这个词在今天已经代表一个平台多过一门编程语言,而带有丰富类库的JVM已经逐渐演变成一个非常强大的平台。但与此同时,Java语言却显得愈发老态龙钟。近些年来,在JVM平台上忽然涌现出了一批有趣且强大的语言,如Clojure、JRuby、Grovvy和Scala。 在这些现代JVM语言中,部分语言如Clojure、JRuby和Groovy都是动态类型的,而其他如Clojure和Scala则深受函数式编程的影响。但这些语言都有一个共同的特点,那就是语法简洁且表达能力强。虽然学习这些语言的语法、范式或区别有一定的门槛,但学成之后我们可以用比Java更少的代码来实现相同的功能。更令人兴奋的是,我们可以将这些JVM语言的代码与Java代码混用,这样我们就成了名副其实的多语言程序员,请参阅附录2中Neal Ford有关“多语言程序员”的论述。 在本书中,我们将学习如何使用java.util.concurrent API,以及如何通过Akka和GPars来使用STM和基于角色的模型。此外,我们还将学习如何在Clojure、Java、JRuby、Groovy和Scala中进行并发编程。如果你已经或打算使用其中任何一种语言,那么本书将会为你介绍在使用这些语言进行并发编程时所需要注意的各种相关事项。 示例和性能测评 虽然本书的大部分示例都是用Java实现的,但是你也会看到很多用Clojure、Groovy、JRuby和Scala实现的示例代码。在这些示例当中,我已尽量消除各语言之间的语法差异并尽可能避开语言专属的习惯用法,其目的主要是让大多数习惯使用Java的程序员更容易阅读和理解用其他语言实现的代码示例。 下面是本书所使用的语言和类库的版本汇总: Akka 1.1.3(http://akka.io/downloads) Clojure 1.2.1(http://clojure.org/downloads) Groovy 1.8(http://groovy.codehaus.org/Download) GPars 0.12(http://gpars.codehaus.org) Java SE 1.6(http://www.java.com/en/download) JRuby 1.6.2(http://jruby.org/download) Scala 2.9.0.1(http://www.scala-lang.org/downloads) 在对不同版本的示例代码的性能进行比较的时候,我会确保比较测试都在相同机器上完成。对于其中大部分示例,我采用的运行环境是搭载2.8GHz英特尔双核处理器、4GB内存并预装了Mac OS X 10.6.6和Java 1.6 update 24的MacBook Pro。而其他部分示例我用的则是搭载8核Sunfire 2.33GHz处理器、8GB内存和预装64位Windows XP和Java 1.6的电脑。 除非另有说明,否则所有示例都是运行在服务器模式下的“Java HotSpot64-Bit Server VM”JVM上。 所有示例全都可以在上面提到过的Mac和Windows机器上编译通过。 在代码示例的清单中,由于篇幅所限,我并没有列出import语句(以及package语句)。当你打算亲自运行代码示例的时候,如果你不确定某个类属于哪个package的话请别担心,因为我已经将完整的代码放到了网站上,你可以通过本书的网站http://pragprog.com/titles/vspcom下载全部示例的源代码。 致谢 有很多人为我完成本书的写作提供了巨大的帮助。这些年来,如果没有那些我所了解和敬重的伟大思想与我的个人思考之间的碰撞所激发出来的灵感,那么本书可能仍然只是我脑海当中的一个念头而已。 首先我想感谢那些阅读了本书草稿并提供宝贵意见的审稿人,是他们使这本书变得更好。但是你在本书中所发现的任何错误则完全都是我的过失。 感谢Brian Goetz(@Brian Goetz)、Alex Miller(@puredanger)和Jonas Bonér(@jboner)几位审稿人,他们所提出的精辟评论使我受益匪浅。本书几乎每一页都被Al cherer(@al_scherer)和Scott Leberknight(@sleberknight)用鹰眼进行了彻底的检查和修订。非常感谢这些先生们。 这里我要特别感谢Raju Gandhi(@looselytyped)、Ramamurthy Gopalakrishnan、Paul King(@paulk_asert)、Kurt Landrus(@koctya)、Ted Neward(@tedneward)、Chris Richardson(@crichardson)、Andreas Rueger、Nathaniel Schutta(@ntschutta)、Ken Sipe (@kensipe)以及Matt Stine(@mstine),感谢他们花费大量宝贵时间帮我校对并给予我鼓励。感谢来自Halloway(@stuarthalloway)的中肯评论,我已经根据他的一些建议对本书进行了改进。 我在各类NFJS会议上所进行的关于并发问题的演讲构成了本书的基本框架内容。所以在此感谢NFJS(@nofluff)主管Jay Zimmerman给我在会议上进行演讲的机会,同时还要感谢与会的各位演讲嘉宾和参与者朋友们,与他们的交流和讨论使我深受启发。 在此要特别要感谢Dave Briccetti(@dcbriccetti)、Frederik De Bleser(@enigmeta)、Andrei Dolganov、Rabea Gransberger、Alex Gout、Simon Sparks、Brian Tarbox、Michael Uren、Dale Visser和Tasos Zervos,以及那些花时间阅读本书beta版并在本书论坛中给予反馈的程序员。此外,Rabea Gransberger那些见解深刻的评论、勘误以及观察评论使我受益匪浅。 感谢那些我在本书所用到的以及在JVM上进行并发应用程序开发所依赖的那些语言和类库的开发者和参与者。 撰写本书的一个额外收获是使我越来越了解审阅本书第1版初稿的策划编辑Steve Peter。他的幽默以及对细节的关注对本书的制作过程起到了极大的帮助。谢谢Steve。很荣幸与本书的责任编辑Brian P. Hogan(@bphogan)共同合作。他上手很快,给了我很多鼓励,同时还在许多需要改进的领域提出了很多建设性的意见和建议。谢谢Brian。 我要感谢整个Pragmatic Bookshelf团队一路以来的辛苦付出和给予我的鼓励。感谢Kim Wimpsett、Susannah Pfalzer(@spfalzer)、Andy Hunt(@pragmaticandy)和Dave Thomas(@pragdave)的帮助和指导,是他们使得成书过程变得如此有趣。 如果没有我妻子的支持,所有这一切都不可能完成,谢谢Kavitha,感谢她为我付出的耐心与牺牲。此外,我从儿子karthik和Krupa那里也得到了很多鼓励,谢谢小伙子们,感谢他们总是好奇地问我是否已经把书写完了。最后,希望正在阅读本书的程序员能够将本书所学的知识更好地应用到未来工作中。谢谢! 上架指导 封底文字 这是一部优秀的著作!Venkat巧妙地带领我们经历了当今JVM开发人员在多线程编程时所面临的许多设计和实现决策。这本书通过通俗易懂的风格和丰富的例子(使用了当前多种开源工具和JVM语言)使得这个复杂的主题更加平易近人。 ——Albert Scherer 福莱特高等教育集团有限公司电子商务技术部经理 如果JVM是你的首选平台,那么这绝对是一本你必读的书。购买并阅读,然后为你所有的团队成员购买一本。你将顺利踏上找到一条优秀并发问题解决方案之路。 ——Raju Gandhi Integrallis软件有限责任公司高级顾问 这本书非常透彻地阐释了一个极其重要的话题。 ——Chris Richardson CloudFoundry.com创始人 当前计算机领域对新的并发模型和JVM上新语言的兴趣和应用正在逐年递增。Venkat的这本书把二者绑在一起,向一线的开发人员展示了如何构建应用程序,并尽可能地利用现有的库,即使它们是使用不同的语言构建的。 ——Alex Miller Revelytix公司高级工程师 Venkat将引导你进入关于并发的世界。在开始STM和角色的精彩冒险之旅之前,他教授了在Java JDK里直接提供的现代并发工具。我真诚地相信,这本书注定是目前已有的最重要的并发编程书籍之一。Venkat再次做到了这一点! ——Matt Stine AutoZone公司技术架构师 当前并发是一个热门话题,Venkat将带领你领略了JVM上有效的并发编程技巧和技术。更重要的是,通过比较和对比五种不同的JVM语言中并发编程的方法,你将会得到更宽广的视野。 ——Scott Leberknight Near Infinity公司首席架构师 译者序 对于Java并发编程领域而言,JDK5的发布绝对具有里程碑式的意义。由该领域大师级人物Doug Lea亲自操刀的新并发API以及重新实现的并发容器使得开发人员摆脱synchronized、notify()、wait()这些原始的同步原语,为并发应用的开发提供了巨大的便利和性能提升,使Java并发编程前进到新的阶段。时过境迁,这几年来,虽然没有再出现类似于新并发API这样惊世骇俗的产品,但随着Java平台的不断演进,尤其在JVM开放了对动态语言的支持之后,一些新的语言及其背后所蕴含的设计方法和编程模型也被引入JVM,而这些新的设计方法和编程模型也深刻地影响着JVM并发编程领域的发展。 但是,出于对新语言的学习门槛、稳定性、性能、系统切换和维护成本等方面的顾虑,互联网企业,尤其是国内的大多数企业对这些新语言、新技术都持比较保守的态度,所以在国内我们很难接触到由这些新语言所引领的JVM并发编程的最新成果。当我们打开满是灰尘的并发编程工具箱,发现里面还是2007年起就一直在用的并发API,虽然用多了也感觉很顺手,但这些真的已经足够了吗? 本书为我们推开了一扇通往并发编程新领域的大门。作者以演讲般娓娓道来的方式告诉我们,其实我们一直都被共享可变性设计的缺陷折磨着却不自知。而我们仿佛是《黑客帝国》电影里生活的人们一样,在服下那粒可以看透真相的小药丸之前,总以为世界就应该是自己所熟悉的样子。再回到JVM并发编程领域,正是由于新的并发API太过成功,以致很多人已经形成了以新并发API为基础、以共享可变性设计为核心的固有套路和思维定式,认为这种方式所带来的饥饿、死锁、竞争条件等问题是并发编程固有的复杂性,从而隐忍和压抑着心中为解决这些问题而遭受的痛苦。从这个角度来说,作者很像《黑客帝国》中引领救世主Neo走出Matrix虚幻世界的导师墨菲斯,而本书就是那粒小药丸,吃了之后就可以看到JVM并发编程领域中不一样的风光,同时会感叹:哇哦,原来还有这么多新玩法! 相对于其他讲述并发编程的书籍,本书的亮点在于: 理论叙述深入浅出。由于作者是一位出色的演讲者,所以本书的理论部分也大量运用了例证、类比等叙述手段,使得原本枯燥、生涩的理论叙述变得生动鲜活,从而更易于读者理解和接受。 实践内容极具实用性。本书的内容涵盖了当前流行且成熟的多种JVM并发编程解决方案,包括Java7 Fork-Join API、STM、基于角色的模型,并且在每叙述完一种新模型之后都会有独立的一章专门用于展示前章所述模型在Clojure、Groovy、Java、JRuby和Scala中的用法和注意事项,有助于使用不同语言的读者都能找到相应的解决方案。虽然Java才是本书绝大多数国内读者的工作语言,但是上述几种语言对于本书所述的并发模型的支持方面可谓各胜擅长,有很多在Java中实现起来语法很繁琐的模型在其他语言中可能几行代码就可以完成。所以,了解一下其他语言简洁优雅的实现方式,也不失为开阔眼界的好素材,以后再有类似需求的时候也可以多一种选择。 这里我要感谢本书的策划编辑杨福川,是他让我有机会参与本书的翻译工作,他的认可和鼓励为我完成本书的翻译提供了强大的助力。我还要感谢本书的责任编辑,他严谨、细致的专业态度让我受益匪浅。最后,我要感谢我的老婆璐璐,译书的这段时间里,我经常在电脑前敲键盘而无暇陪伴,感谢老婆的理解与支持。 本书所讲述的内容并不艰涩,领域也属我比较擅长的范畴,但想要将这位爱举例子的作者那很口语化、有点絮叨并且语法不那么严谨的英文转换成流畅且符合国人阅读习惯的文字着实不易。所以,虽然我很希望能够在人生第一部译作中力求完美,呈现给大家一部“很好读”的书,但终因时间和精力有限,译稿可能存在一些疏漏和翻译生硬之处,恳请各位读者批评指正。 图书目录 译者序 前言 第1章 并发的威力与风险 1 1.1 线程:程序的执行流程 1 1.2 并发的威力 1 1.3 并发的风险 4 1.4 小结 9 第一部分 并发策略 第2章 分工原则 11 2.1 从顺序到并发 11 2.2 在IO密集型应用程序中使用并发技术 13 2.3 并发方法对IO密集型应用程序的加速效果 19 2.4 在计算密集型应用程序中使用并发技术 20 2.5 并发方法对于计算密集型应用程序的加速效果 25 2.6 有效的并发策略 26 2.7 小结 27 第3章 设计方法 28 3.1 处理状态 28 3.2 探寻设计选项 29 3.3 共享可变性设计 29 3.4 隔离可变性设计 30 3.5 纯粹不可变性设计 30 3.6 持久的/不可变的数据结构 31 3.7 选择一种设计方法 34 3.8 小结 34 第二部分 现代Java/JDK并发模型 第4章 可扩展性和线程安全 37 4.1 用ExecutorService管理线程 37 4.2 使线程协作 38 4.3 数据交换 47 4.4 Java 7 Fork-Join API 49 4.5 可扩展集合类 51 4.6 Lock和Synchronized 54 4.7 小结 58 第5章 驯服共享可变性 59 5.1 共享可变性 != Public 59 5.2 定位并发问题 59 5.3 保持不变式 61 5.4 管理好资源 62 5.5 保证可见性 64 5.6 增强并发性 65 5.7 保证原子性 67 5.8 小结 70 第三部分 软件事务内存 第6章 软件事务内存导论 71 6.1 同步与并发水火不容 71 6.2 对象模型的缺陷 72 6.3 将实体与状态分离 73 6.4 软件事务内存 74 6.5 STM中的事务 77 6.6 用STM实现并发 77 6.7 用Akka/Multiverse STM实现并发 82 6.8 创建事务 84 6.9 创建嵌套事务 90 6.10 配置Akka事务 97 6.11 阻塞事务—有意识地等待 100 6.12 提交和回滚事件 103 6.13 集合与事务 106 6.14 处理写偏斜异常 110 6.15 STM的局限性 112 6.16 小结 116 第7章 在Clojure、Groovy、Java、JRuby和Scala中使用STM 117 7.1 Clojure STM 117 7.2 Groovy集成 118 7.3 Java集成 122 7.4 JRuby集成 124 7.5 Scala中的可选方案 130 7.6 小结 133 第四部分 基于角色的并发模型 第8章 讨喜的隔离可变性 135 8.1 用角色实现隔离可变性 136 8.2 角色的特性 137 8.3 创建角色 138 8.4 收发消息 144 8.5 同时使用多个角色 148 8.6 多角色协作 152 8.7 使用类型化角色 159 8.8 类型化角色和murmurs 163 8.9 混合使用角色和STM 169 8.10 使用transactor 169 8.11 调和类型化角色 176 8.12 远程角色 182 8.13 基于角色模型的局限性 184 8.14 小结 184 第9章 在Groovy、Java、JRuby和Scala中使用角色 186 9.1 在Groovy中使用GPars提供的角色实现 186 9.2 在Java中使用Akka提供的角色实现 199 9.3 在JRuby中使用Akka提供的Actor实现 199 9.4 在Scala中使用角色 202 9.5 小结 202 第五部分 后记 第10章 并发编程之禅 205 10.1 慎重选择 205 10.2 并发:程序员指南 206 10.3 并发:架构师指南 207 10.4 明智地进行选择 208 附录1 Clojure agent 210 附录2 一些网络资源 214 参考文献 216
网狐棋牌源码2008版下载
网狐二次开发 棋牌游戏平台 棋牌游戏开发商 棋牌游戏源码 VS2008版源码花了大半年时间弄的 修正了好多好多BUG 可以直接拿来运营 相关下载链接:[url=//download.csdn.net/download/wdnynmp/4637409?utm_source=bbsseo]//download.csdn.net/download/wdnynmp/4637409?utm_source=bbsseo[/url]
EJB3,Spring,Struts2整合下载
EJB3,Spring,Struts2整合 相关下载链接:[url=//download.csdn.net/download/zhangxing5858/2341622?utm_source=bbsseo]//download.csdn.net/download/zhangxing5858/2341622?utm_source=bbsseo[/url]
hp LJ1020 full下载
hp_LJ1020_Full_Solution 相关下载链接:[url=//download.csdn.net/download/huangswift/5039779?utm_source=bbsseo]//download.csdn.net/download/huangswift/5039779?utm_source=bbsseo[/url]
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件
我们是很有底线的