「java大客户」大客户开发的问题
本篇文章给大家谈谈java大客户,以及大客户开发的问题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何看待oracle 收购sun 知乎
- 2、做技术与做销售哪个更好?
- 3、java储备干部是干嘛的
- 4、开发软件的软件有哪些?一般又由什么编程语言来编写?
- 5、Java Socket重要参数讲解
- 6、javaweb中根据登陆用户权限的不同,使其中一个页面一个选择框变灰或否,怎么写后台的scripts
如何看待oracle 收购sun 知乎
PS:Sun以前一直是我膜拜的伟大公司之一,也是开源社区和技术创新的领头羊。一直认为Sun被Oracle收购是开源社区的大杯具。Sun的市值曾经超过2000亿美元,就在Sun最低潮的时候,74亿美元的便宜价就被Oracle收购了。Oracle把Sun买来之后,清理掉了所有不太听话的管理精英和优秀工程师,然后请来个惠普的色狼接管原来 Sun的硬件生命线。转发此文以纪念杯具的 Sun, OpenSolaris, Kenai, Scott, James。
Java创始人詹姆斯·高斯林(James Gosling)
Oracle董事长兼CEO 埃里森近一个月三度成为媒体追逐的对象。8月12日,Oracle宣布就Google Android手机操作系统侵犯Java版权和专利一事,状告Google;8月17日,Oracle宣布放弃OpenSolaris计划;9月6日,Oracle宣布聘请前 惠普董事长兼CEO赫德为Oracle联合总裁。这三件貌似不太关联的事件,实则大有名堂。应该从Sun如何日暮西山说起。
成败皆因Oracle
同为公司创始人的埃里森和Sun董事长兼CEO麦克尼利曾经因为共同的爱好——反对微软而被称为硅谷斗士,又因为共同的生意——双方都以对方为最大客户而成为生意伙伴。然而,在网络泡沫破灭时,这对志同道合的朋友却兄弟阋墙了。
Sun靠工作站起家,后来凭借SPARC处理器和Solaris操作系统占领高端服务器市场。SPARC和Solaris性能和可靠性在业界有口皆碑,当然价格也不菲。但那时企业级市场上钱不是问题。Oracle公司的数据库产品此时与Solaris平台相得益彰。
网络泡沫破灭后,用户开始关注投资回报,钱成了最大的问题。Oracle为了保住自己的利益,做的事情就不够朋友了。
2002年6月,Oracle宣布推出数据库Oracle9i RAC。正是这款数据库把Sun逼入日薄西山的境地。这款数据库产品能运行在红帽Linux平台上,也能运行在x86架构上。更要命的是Oracle9i RAC与红帽Linux都预装在戴尔的x86架构服务器中。低成本的x86架构和Linux替代了SPARC和Solaris,而且预装使用户的麻烦大大 减少。埃里森做得更绝的是,将Oracle的整体运营迁移到x86平台,而且声明未来产品先在x86平台上开发,然后移植到SPARC平台上。Oracle的以身作 则,无异于告诉用户,Sun能干的事情,x86平台都能干,而且更便宜。
Oracle和用户双赢了,而Sun因为当时没有x86服务器,成为最大的输家。
Java带给Sun的只有声誉
为智能家电开发的Java,不想“有心栽花花不开,无心插柳柳成荫”,在家电市场毫无起色,却因其“一次编程,到处可跑”的跨平台特性,赶上了互联网的高速发展时机,在企业级市场上大放异彩。
Java对于Sun来说“华而不实”。除了带来声誉外,Java并没有直接给Sun带来与其声誉相当的回报。这倒不是Sun多么无私,实际上 Sun曾尝试过。在上世纪90年代末,Java的蓬勃发展让Sun感觉收获的季节到了,Sun成立了Java应用部门JavaSoft。不料,Sun这种 “既当运动员,又当裁判员”的做法遭到了Java应用厂商的强烈甚至过激反应。虽然当时Java社区的发展很快,但如果Sun在应用市场上分羹,会使 Java前程未卜。三思之后,Sun撤销了JavaSoft部门,退守开发Java 平台,从对企业的授权上赚些小钱。
Sun的主要经济来源是Solaris和SPARC。本质上说,Sun是一家硬件厂商。但是由于受到Oracle9i RAC的致命一击,Solaris和SPARC也朝不保夕。
2006年,接任麦克尼利的CEO施瓦茨的当务之急就是先稳住然后再去发展SPARC的用户群。“先尝后买”的免费策略无疑能招揽到客户。但对 于Sun来说,服务器白送是送不起的,只能白送Solaris。这样的做法令人匪夷所思:桌面级的Windows还卖钱,企业级的Solaris怎么白送 呢?
施瓦茨的想法是:号称史上最强的操作系统的开源,足以让关键业务应用的客户打消在Solaris安全上的顾虑,而Solaris与SPARC相 互优化得最好。因此,喜欢Solaris的用户也会喜欢SPARC,从而达到促销SPARC的目的。于是,Sun推出了Solaris的开源项目 OpenSolaris,并承诺OpenSolaris的开源代码与正在研发中的Solaris代码相同。
到了2006年底,Sun宣布将Java开源。显然,Sun寄希望于,运行Java最好的平台是Solaris,而Solaris最好的硬件平台是SPARC。只要用户对开源后的Java有信心,那他们就是SPARC的潜在客户。
然而,施瓦茨的如意算盘在去年4月Oracle以74亿美元收购Sun之后就再也拨不响了,毕竟软件厂商才知道软件的价值,谁当家谁说了算。
Oracle为何起诉Google
虽然Sun不再涉足Java应用市场,但企业使用Java仍要向Sun购买使用授权,通常这些都是小钱。Sun的最大一笔横财是2004年微软 以16亿美元一次性了结与Sun在Java上的恩恩怨怨。最抠门的要算Google了,它在其手机操作系统Android中无偿使用了Java。
虽说定位于企业级市场的Oracle对手机不屑一顾,但对于Google这样坏了规矩的带头大哥,还是必须管管的,否则,谁还会再交钱呢。但是,Oracle起诉谷 歌还应该有更深层次的原因,或者跟Oracle在开源政策上的变化直接相关。今年3月,Oracle将OpenSolaris的使用授权缩短到90天,逾期必须购买相 应的服务,接着在4月取消了OpenSolaris光盘的免费派送。到了8月17日,Oracle通过邮件称,将集中精力开发企业级Solaris,不再 对OpenSolaris进行实时更新。8月23日,负责OpenSolaris社区开发和维护的OpenSolaris管理会(OGB)成员集体辞职。 这意味着OGB把OpenSolaris的控制权交还Oracle,这正中Oracle的下怀。来自Oracle网站的消息称,负责硬件业务的全球执行副总裁John Fowle近日在视频会议上公布了Oracle + Sun产品战略及产品路线图。Fowle称,Oracle将首先致力于打造面向Oracle应用软件最开放的服务器,并为SPARC做好了长达五年的详细计划。 Oracle将继续支持运行英特尔芯片的x86机架服务器和刀片服务器。显然,SPARC重新获宠。Oracle英文网站说得更直接:Oracle提供世界上最完整、开放、 集成的商业软件和硬件系统,Oracle是唯一有能力提供完整的技术栈的供应商,栈中每层都被集成起来,像一个单一系统一样工作。换句话说,Oracle将以 SPARC为主,为客户提供一站式的完全解决方案。当Oracle万事不求人的时候,自然也就用不着OpenSolaris和Java当招牌、做幌子了,甚至可 以说,重新收回Java的控制权对Oracle更为有利。Oracle在Java上拿Google说事儿,要钱应该只是表面现象,深层次的原因是要传递出与 OpenSolaris类似的声音。而Google既非传统企业级软件厂商,又不支付授权费,自然成为Oracle在对Java有所动作前,试探Jave社区乃至IBM 等企业反应的合适对象。
赫德跟Oracle对脾气吗
别看麦克尼利与微软斗争时像一头咆哮的公牛,但他的刀子嘴都用在了盖茨身上,对员工却是豆腐心。在网络泡沫破灭后,资本市场多次对麦克尼利施加裁员压力,基本上都被他回绝,这成了麦克尼利被迫辞职的原因之一。
Sun是一个典型的技术驱动型公司,以不足IBM十分之一的员工规模维持着包括处理器、服务器、操作系统、存储、Java、数据库等在内的冗长产品线。这需要技术精英文化。
Oracle收购Sun后,硬件的市场推广成为软肋,迫切需要一个冷面成本杀手。
笔者曾经在2006年夏季在硅谷采访惠普全球分析师大会,那一年正好惠普首次超出IBM成为全球最大IT企业。赫德在主题演讲中谈论最多的是增长、成本和资本三角形,“技术”一词似乎不在赫德的口语辞典中。换句话说,赫德是靠管理和市场在规模上超越IBM的。
9月6日,惠普前任CEO辞职仅1个月就闪电般地在Oracle“再就业”,说明埃里森对赫德这个冷面杀手寄予了很高的期望,希望他能“昨日重现”,让Oracle也超越IBM。
如果埃里森把目标定为IBM,那当下惠普董事会对赫德的起诉正合埃里森之意:两家闹僵后,惠普平台上的Oracle用户保不齐会选择Oracle的软硬件解决方案,而且惠普还背上了率先撕破脸皮的名声。
如果说惠普只是在年收入上超过IBM的话,Oracle跟IBM在从服务器、存储到操作系统、数据库、应用软件等领域针锋相对的竞争还是很有技术含量的。
和不得不与惠普董事会勾心斗角相比,赫德得到在Oracle一手遮天的埃里森力挺,能全力以赴地与竞争对手周旋,但赫德还要直面企业内部的挑战,他既 要适应Oracle的企业文化,还得尊重Sun的传统。即便是赫德都适应了,Sun的技术精英也未必能适应。这不,2010年4月2日,Java之父高斯林离开了Oracle。之后2011年3月29日加盟Google。
在收购了 Sun 公司的六年后,Oracle 正在大规模的加大对违反其许可证的 Java 客户的审查力度。
越来越多的 Oracle 客户和合作伙伴被拉里·埃里森的团队约谈,称他们没有遵守 Java 的规矩。
Oracle 在 2010 年 收购了 Sun Microsystems 公司 ,知情人士透露现在它的许可证管理服务(LMS) 正在到处追缴付款。
该数据库巨头公司目前已经在全球雇佣了 20 个人专门来负责对那些违反 Java 许可证的企业进行追缴付款。
作为回应,行业合规专家组也在不断的扩充人马,招聘更多 Java 专家、扩大预算来应对和参与到 2017 年来自 LMS 的更多诉讼。这其中牵扯了太多的金钱利害关系,每个客户涉及的金额可能数万、数十万美元。
处于事件中的 Java 版本是 Java SE,有三种付费方式,从每用户 40 美元到 300 美元,或者每处理器 5000 到 15000 美元。
The Register 了解到零售行业的一个拥有 8 万台 PC 的客户已经收到了 Oracle 的通知,称其违反了 Java 许可证。Oracle 还告诉了另外一个客户其欠下了 10 万美元,但这笔欠款现在可以优惠 3 万美元。
专家们建议谨慎下载 Java SE ,已经下载的应该在 LMS 打电话过来之前对其使用进行审查并做好准备。这些大师们告诉 The Register 网站,寻求 Java 许可证帮助的客户呈上升趋势,这些客户在 2016 年下半年就已经收到了 LMS 的通知。
“Oracle 已将次当成问题着手处理,” 一个不愿意透露姓名的专家告诉 The Reg 网站。我们的消息来源显示此类信息的查询数量在过去的五个月内不断上升。
Palisade Compliance 的 CEO 和创始人 Craig Guarente 告诉我们 Oracle 的 LMS 并不管你到底是客户或者是合作伙伴。
他告诉我们说:“Oracle 把枪口对准合作伙伴,这些正在帮助 Oracle 的公司”。合作伙伴们都想知道,Oracle 怎么可以这样对待他们?
Guarente 说:“因为 Oracle 不断的推动,使得 Java 让我们和客户之间的关系越来越紧密。”
其根本的原因是大家对 Java 错误的认知,都认为 Java 是免费的!
这种错误的感知可以追溯到 Sun Microsystems 公司的时代;在 Sun 的领导下 Java 是免费的,在 Oracle 也是!但是 Sun 也曾对像 IBM 和制造蓝光播放器的厂商收取许可证费用。尽管绝大多数的使用者是不收费的。这是因为 Sun 利用 Java 来帮助其销售各种系统。
而现在 Oracle 决定让 Java 商业化的步伐迈得更快。
Java SE 是一个广泛的、包罗万象的下载,包括 Oracle 在 2014 年 2 月推出的 Java SE Advanced Desktop,以及在 2011 年 5 月推出的 Java SE Advanced 和 Java SE Suite。
Java SE 是免费的没错,但是 Java SE Advanced Desktop, Advanced 和 Suite 并非免费。例如需要为每个用户付费 300 美金以及 66 美金的服务支持费用;如果是按处理器计算的话,单个处理器需要 15000 美金以及 3300 美金的服务支持费用。Java SE 包含免费的 JDK 和 JRE,但是 Advanced Desktop, Advanced 和 Suite 以及一些额外的功能却是收费的,如 Java Mission Control 和 Flight Recorder (也叫 JRockit Mission Control 和 JRockit Flight Recorder)
此外还有用于大规模 Java 部署的 Microsoft Windows Installer Enterprise JRE Installer 。
Oracle 定义 Java SE 是免费的前提是“通用计算” —— 涉及到的设备包括桌面电脑、笔记本、智能手机和平板电脑。而 Oracle 许可证中规定作为智能系统中专业的嵌入计算机来说并非免费,Oracle 后来又补充了一些其他设备,包括移动电话、手持设备、网络交换机以及蓝光播放器等。
听起来足够简单,不是吗?但是客户在这些设备上越来越多的受到 LMS 的限制。愿意是目前没有办法将那些需要付费的 Java SE 子产品从免费的 Java SE 保护伞中剥离开来,Oracle 本身也没有提供独立的安装软件。
所以你只能成为一个 Java SE Suite 这个大杂烩的用户,尽管你只想要其中的一部分内容,然后根据 Oracle 的要求进行付费。
如果你想大规模的部署 Java SE,则需要 Microsoft Windows Installer Enterprise JRE Installer 这个工具 ,而这个工具并非免费 Java SE 的一部分。
“人们尚未意识到,” Guarente 对 The Reg 说:“他们认为 Java 是免费的,因为它是开源的,因此可以使用。这其实并不是 Java 的协议写得不清楚,而是人们对它产生了误解。”
我们那个不愿意透露姓名的合规专家同时还补充道:
如果你下载了 Java 你就获得了 Java 的所有内容,你需要确保你只装了你有权使用的那部分,同时删除没用的内容。使用了任何需要付费的特性都是商业用途。协议中的“一般用途” 是非常模糊的定义,这也是产生很多纠纷的原因。
当你作为一个组织,分发一些包含 Java 的东西给终端用户—— 而且越来越多的公司也通过分发应用让客户获得产品和服务,这些都不是“一般用途”,现在 Oracle 想从中赚钱!
为什么 Oracle 选择在收购 Sun 公司六年后才这样做呢?
我们认为这是因为 Oracle 的 LMS 是在详细了解 Java 的各个方面,并设计有针对性的审计方法。
LMS 现在已经准备好在 2017 年对 Java SE 的用户开枪了!
“我预计 Oracle 在 2017 年会增加这方面的投入,” Guarente 告诉 The Reg. “所有的趋势都显示 Oracle 的 LMS 审计团队越来越咄咄逼人,正积极努力在这方面获取更多收入。我不认为 2017 年我们能看到一个仁慈、温和的 Oracle。”
我们该怎么做?
一位不愿意透露姓名的专家警告说:“如果你下载了 Java ,你就获得了所有 Java 的东西。你需要确保你只安装了你有权的组件,那些你没用到的内容最好删除”。
“如果你已经在用 Java,请确保你真正在使用的具体组件,以及它们是如何被使用的。请在 Oracle 找到你之前先对这些问题进行验证。”
尽管 The Register 网站不断的在请求,但 Oracle 目前尚未对本文做出评论。
做技术与做销售哪个更好?
一,做销售总在外面跑,太累了,学了门编程技术,回老家找工作,买房子,娶媳妇!
我在去泰山住青旅的时候,遇到了一位年轻人,已经27岁了,做销售的时候,是在一家大型的国有企业,但是总在外面应酬,总在外面跑,烦了,于是想稳定了,在同学的介绍下,选了家济南的编程培训学校学了半年,然后回泰安老家找工作,希望离得家近点,父母年纪大了。
小伙子比较内向,不太喜欢交流,看他的时候,要么在投简历,要么在玩手游,我问他,有女朋友没?
大概戳到了小伙子的泪点,一下话多了起来,小伙子说,刚跟女朋友分手,其实都要结婚了,但是女友执意要回老家参加公务员考试,因为老家有点关系,如果考的可以,可以进当地的事业单位工作,比较稳定,而且女友的妈妈强烈要求女友回家,因为女友是她唯一的女儿。
小伙子去了女友家几次,试图说服女友的妈妈,相信他们之间是真爱,他以后会真心好好对待她女儿,也会孝顺女友的爸爸和妈妈,但是女友的妈妈斩钉截铁的说,要么他也待在她们家所在的小县城,并且要买一套商品房,要么就分!
小伙子最后很无助的撤了,带着对女友的失望,对我愤愤的说:真不明白这么多年的感情(大一就开始了,到现在好几年了),就这样说散就散了,不商量就自顾回老家了,把我当什么了?!
现在累了,就想找个安静的,稳定的工作,不再到处跑,然后攒点钱在老家付个首付,买套房子,争取30岁前结婚,就这样了,一辈子。
小伙子的经历带有普遍性,做销售需要应酬,需要到处跑,需要维护客情,需要拓展新客户,总之日常是需要在办公室外面,甚至各个城市间穿梭的,这样的日子过久了,会感到生活很沧桑,有流浪天涯的感觉,如果做销售的过程没有开发出几个大的老客户,那么销售工作的收入也是很勉强的,总之如果你不喜欢销售的生活和工作模式的化,的确很纠结,再加上不想太热闹,喜欢宅的话,就更无法适应销售的工作了。
如果你想做销售工作,首先要问自己三个问题:
a,对金钱是否有野心,是否想通过销售的能力赚大钱?
b,是否喜欢过城市间穿梭,客户间应酬的人与人之间的关系,发展人脉?
c,做销售的过程,能否具有归属感,能否有安全感,是否开心?
二,我是做平面设计的,年龄大了,感觉做技术迟早会被淘汰,所以我想做销售,据说销售越老越值钱
不会被淘汰!
这是一位通过网络认识的童鞋对我讲的关于他自己的故事,现在他也已经工作好几年了,28岁了,目前做销售汽车的工作,同时用自己攒的钱跟朋友合伙开了家玩具制造工厂,具体啥情况,还不好说,因为刚开始干。
他对我说,他们当地做木制玩具已经成了小产业,很多人在做,促进了电商的发展,然后他也想尝试下,万一成功呢,虽然很多人说创业的死亡率百分之八十。
其实当大家在讨论编程,讨论JAVA程序员,.net程序员等等未来35岁以后会被淘汰的时候,如果你去听听其他的技术岗位,比如平面设计什么的,也同样面临同样的尴尬,据圈里其他人介绍,年龄大了,老板一般都不会再续约了,老板喜欢用工作3年左右的年轻人,因为肯加班,而且出的活也基本没问题,主要是成本低,年龄大的要么主动转行去开自己的工作室广告公司啥的,要么就是混,直到被裁员。
做技术工作的优势是稳定,薪水相对可以;而被动的地方也不少:
a,年龄大了被淘汰
b,人脉圈子会很狭窄
c,人会变得比较宅,甚至比较懒
d,性格往往技术化,融入社会的时候,给人感觉不太好相处
所以比较前面两个比较有代表性的案例,我想大家在选择到底从事销售还是技术的时候,至少做到:
1,意识到选择不是短期的,而是贯穿整个职业生涯的,所以要仔细研判自己的性格,自己的追求
还有自己对财富的目标等等,做长期性的选择,理智性的选择,不要临时起意,做销售或者做技术。
2,做技术的关键是不断学习,成为行业内的专家,或者入职著名的大公司,这样在后面被裁的可能性会
大大降低,至少会大大延迟,因为大公司都比较重视人才,不像中小微企业处于成本的考量,经常出现
裁掉老员工换更年轻,成本更低的员工;同时在做技术工作的时期,人不要变懒,要提升和优化自己的知识
结构,比如把英文学好,比如学学商科,学学理财,为可能的被裁员做好足够的准备,其实即便不被企业
裁员,我想我们每个人也需要给自己设定多少岁的时候,尽量实现财务自由,有了财务自由,才能真正的
享受人生,享受生活。
3,做销售的同学,要不断优化自己的销售策略,和工作方法,如果工作5年以上还是没找到老的大客户依靠,还像新手一样四处跑,四处找新客户,至少说明自己销售能力方面成长太慢,客情维护方面能力欠佳,因此销售的同学要积攒自己的销售核心竞争力,争取尽快围住一些中大型的客户,这样就会有稳定的大额销售收入了,自然在公司企业老板那里可以收到不少尊重和奖金,日子也会逐渐过的轻松和惬意。
总之作为一名草根想要逆袭,不让自己时刻落在最底层挣扎,至少心态要积极,然后要聪明的提高自己的核心能力,同时兼顾其他能力的配套提高,不能做偏才,至少自己要有专业技能,情商,财商,人脉都要及格,然后其中一项比较突出,自然会获得周围同事朋友,老板的赏识认可,就不怕没有出人头地的一天。
java储备干部是干嘛的
啥单位啊,还有“干部”这说法?
储备当然是表示你现在可能还不适合立即去单独负责处理程序上的开发和纠错。在实践中熟练了之后再调到那些岗位吧。
要是做外包的公司可能也会这么称呼,它们要维护较大规模的开发人员队伍,平时每个月可能都会有一两人辞职就要及时补充,哪怕没多少经验的也要储备让他们新手平时做些简单的任务练习一下,这样公司规模大的话给客户的印象就是实力比较足,这等于是打广告,有些大客户在委托一个外包合同之前可能会去软件外包服务的公司去考查一下对方实力来评估一下人家是不是有能力在指定的时间内完成合同,毕竟当我们要按时完成时这其中的可能有些事情不是钱的问题,要评估对方的能力,如果对方没有能力按时完成,扣它们违约金也没办法挽回公司的损失的。
开发软件的软件有哪些?一般又由什么编程语言来编写?
java开发工具
1、MyEclipse(MyEclipse Enterprise Workbench)
MyEclipse应用开发平台是J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。MyEclipse应用开发平台结构上实现Eclipse单个功能部件的模块化,并可以有选择性的对单独的模块进行扩展和升级。
2、Eclipse
Eclipse 是目前功能比较强大的JAVA IDE(JAVA编程软件),是一个集成工具的开放平台,而这些工具主要是一些开源工具软件。在一个开源模式下运作,并遵照共同的公共条款,Eclipse 平台为工具软件开发者提供工具开发的灵活性和控制自己软件的技术。
3、NetBeans
NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。Sun Java Studio是Sun公司最新发布的商用全功能Java IDE,支持Solaris、Linux和Windows平台,适于创建和部署2层Java Web应用和n层J2EE应用的企业开发人员使用。
.Net软件开发工具
1、Microsoft Visual Studio
Visual Studio 是一套完整的开发工具,用于生成 ASP NET Web 应用程序、XML Web services、桌面应用程序和移动应用程序。Visual Basic、Visual C# 和 Visual C++ 都使用相同的集成开发环境 (IDE),这样就能够进行工具共享,并能够轻松地创建混合语言解决方案。关于常用的软件开发工具。
常见的软件开发语言:JAVA、.Net、C/C++/C#、JSP、ASP、PHP等等多种语言。其中PHP、Java和.NET已经成为了未来五年内程序员必须具备的技能,这三种语言都在Web开发领域占有一席之地。PHP是Web的脚本语言;Java功能强大,适合企业级编程语言;C#融合了几种语言的优点。
Java Socket重要参数讲解
Java Socket的api可能很多人会用 但是Java Socket的参数可能很多人都不知道用来干嘛的 甚至都不知道有这些参数
backlog
用于ServerSocket 配置ServerSocket的最大客户端等待队列 等待队列的意思 先看下面代码
public class Main { public static void main(String[] args) throws Exception { int port = int backlog = ServerSocket serverSocket = new ServerSocket(port backlog) Socket clientSock = serverSocket accept() System out println( revcive from + clientSock getPort()) while (true) { byte buf[] = new byte[ ] int len = clientSock getInputStream() read(buf) System out println(new String(buf len)) }这段测试代码在第一次处理一个客户端时 就不会处理第二个客户端 所以除了第一个客户端 其他客户端就是等待队列了 所以这个服务器最多可以同时连接 个客户端 其中 个等待队列 大家可以telnet localhost 测试下
这个参数设置为 表示无限制 默认是 个最大等待队列 如果设置无限制 那么你要小心了 如果你服务器无法处理那么多连接 那么当很多客户端连到你的服务器时 每一个TCP连接都会占用服务器的内存 最后会让服务器崩溃的
另外 就算你设置了backlog为 如果你的代码中是一直Socket clientSock = serverSocket accept() 假设我们的机器最多可以同时处理 个请求 总共有 个线程在运行 然后你把在 个线程的线程池处理clientSock 不能处理的clientSock就排队 最后clientSock越来越多 也意味着TCP连接越来越多 也意味着我们的服务器的内存使用越来越高(客户端连接进程 肯定会发送数据过来 数据会保存到服务器端的TCP接收缓存区) 最后服务器就宕机了 所以如果你不能处理那么多请求 请不要循环无限制地调用serverSocket accept() 否则backlog也无法生效 如果真的请求过多 只会让你的服务器宕机(相信很多人都是这么写 要注意点)
TcpNoDelay
禁用纳格算法 将数据立即发送出去 纳格算法是以减少封包传送量来增进TCP/IP网络的效能 当我们调用下面代码 如
Socket socket = new Socket() nnect(new InetSocketAddress(host )) InputStream in = socket getInputStream() OutputStream out = socket getOutputStream() String head = hello String body = world\r\n out write(head getBytes()) out write(body getBytes()) 我们发送了hello 当hello没有收到ack确认(TCP是可靠连接 发送的每一个数据都要收到对方的一个ack确认 否则就要重发)的时候 根据纳格算法 world不会立马发送 会等待 要么等到ack确认(最多等 ms对方会发过来的) 要么等到TCP缓冲区内容=MSS 很明显这里没有机会 我们写了world后再也没有写数据了 所以只能等到hello的ack我们才会发送world 除非我们禁用纳格算法 数据就会立即发送了
SoLinger
当我们调用socket close()返回时 socket已经write的数据未必已经发送到对方了 例如
Socket socket = new Socket() nnect(new InetSocketAddress(host )) InputStream in = socket getInputStream() OutputStream out = socket getOutputStream() String head = hello String body = world\r\n out write(head getBytes()) out write(body getBytes()) socket close()
这里调用了socket close()返回时 hello和world未必已经成功发送到对方了 如果我们设置了linger而不小于 如
bool on = true int linger = ……
socket setSoLinger(boolean on int linger)
……
socket close() 那么close会等到发送的数据已经确认了才返回 但是如果对方宕机 超时 那么会根据linger设定的时间返回
UrgentData和OOBInline
TCP的紧急指针 一般都不建议使用 而且不同的TCP/IP实现 也不同 一般说如果你有紧急数据宁愿再建立一个新的TCP/IP连接发送数据 让对方紧急处理
所以这两个参数 你们可以忽略吧 想知道更多的 自己查下资料
SoTimeout
设置socket调用InputStream读数据的超时时间 以毫秒为单位 如果超过这个时候 会抛出 SocketTimeoutException
KeepAlive
keepalive不是说TCP的常连接 当我们作为服务端 一个客户端连接上来 如果设置了keeplive为true 当对方没有发送任何数据过来 超过一个时间(看系统内核参数配置) 那么我们这边会发送一个ack探测包发到对方 探测双方的TCP/IP连接是否有效(对方可能断点 断网) 在Linux好像这个时间是 秒 如果不设置 那么客户端宕机时 服务器永远也不知道客户端宕机了 仍然保存这个失效的连接
SendBufferSize和ReceiveBufferSize
TCP发送缓存区和接收缓存区 默认是 一般情况下足够了 而且就算你增加了发送缓存区 对方没有增加它对应的接收缓冲 那么在TCP三握手时 最后确定的最大发送窗口还是双方最小的那个缓冲区 就算你无视 发了更多的数据 那么多出来的数据也会被丢弃 除非双方都协商好
lishixinzhi/Article/program/Java/hx/201311/26575
javaweb中根据登陆用户权限的不同,使其中一个页面一个选择框变灰或否,怎么写后台的scripts
对于这种权限鼓励,最好不要使用客户端脚本来做,这回存在安全隐患
java大客户的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于大客户开发的问题、java大客户的信息别忘了在本站进行查找喔。