首页 文章 精选 留言 我的

精选列表

搜索[职场成长],共7786篇文章
优秀的个人博客,低调大师

调查发现可靠性是职场人士选择 Mac 的首要原因

Jamf是一家帮助企业管理苹果产品企业集成的公司,它表明Mac的可靠性是员工更喜欢在工作场所使用Mac的首要原因。 2018年,总部位于威斯康星州的Jamf公司对他们客户进行了一项调查,结果表明企业IT员工非常喜欢Mac。 该调查显示,当参与者可以选择允许他们在工作中使用的设备类型时,72%的人选择了Mac。在2019年,Jamf调查最终用户,找出他们为何一直选择Mac以及他们选择的经历。该调查由由Jamf与Apple合作外包给第三方市场研究公司Vanson Bourne进行。 调查结果显示,Mac用户在商业领域经历了高水平的满意度,生产力和协作。该调查涉及广泛的部门,包括信息技术,人力资源,营销,工程,销售,业务发展等。截至2018年底,Jamf管理的Mac数量比2017年底增加了48%。 根据调查,在大多数部门中,选择Mac的首要原因通常是用户对苹果产品的偏爱。引用的第二大原因是最终用户只是觉得Mac比其他电脑更可靠。最终用户还经常表示,Mac可以充分利用他们有效完成工作所需的应用程序和资源。 其他原因包括整体易用性,用户界面和设计的偏好,以及与已拥有的苹果设备无缝连接能力。97%的受访用户声称提高了工作效率,95%的人表示增加了创造力,94%的人认为Mac使他们更加自给自足,91%的人认为Mac增加了协作。 当被问及如果没有Mac他们是否无法有效地完成工作时,79%的人同意这种说法。人力资源和信息技术工作者尤其如此。可靠性也是工作场所工作者偏好Mac的一个关键原因。 40%的受访者表示在过去12个月内他们的Mac没有任何问题,70%的受访者报告了两个或更少的问题。之前使用PC工作的用户中有74%表示他们现在遇到的问题更少。 来自:cnBeta

优秀的个人博客,低调大师

一个 Blink 小白的成长之路

写在前面 写过blink sql的同学应该都有体会,明明写的时候就很顺滑,小手一抖,洋洋洒洒三百行代码,一气呵成。结果跑的时候,吞吐量就是上不去。导致数据延迟高,消息严重积压,被业务方疯狂吐槽。这时候,老鸟就会告诉你,同学,该优化优化你的代码了,再丢过来一个链接,然后留下一脸懵逼的你。笔者就是这么过来的,希望本文能帮助到跟我有过同样困惑,现在还一筹莫展的同学。 背景故事 先说一下相关背景吧,笔者作为一个刚入职阿里的小白,还处在水土不服的阶段,就被临危受命,改造数据大屏。为什么说临危受命呢,首先是此时距双十一仅剩一个月,再者,去年的双十一,这个大屏刚过零点就出现问题,数据一动不动,几个小时后开始恢复,但仍然延迟严重。此前,笔者仅有的实时计算开发经验是storm,用的是stream API,对于blink这种sql式的API完全没接触过。接到这个需求的时候,脑子里是懵的,灵魂三问来了,我是谁?我即将经历什么?我会死得有多惨?不是“此时此刻,非我莫属”的价值观唤醒了我,是老大的一句话,在阿里,不是先让老板给你资源,你再证明你自己,而是你先证明你自己,再用结果赢得资源,一席话如醍醐灌顶。然后就开始了一段有趣的故事~ 压测血案 要找性能问题出在哪儿,最好的方法就是压测。这里默认大家都对节点反压有一定的了解,不了解的请先移步典型的节点反压案例及解法。 一开始是跟着大部队进行压测的,压测的结果是不通过!!!一起参加压测的有三十多个项目组,就我被点名。双十一演练的初夜,就这样伤心地流走了(╯°□°)╯︵ ┻━┻。西湖的水,全是我的泪啊。不过痛定思痛,我也是通过这次压测终于定位到了瓶颈在哪里。 瓶颈初现 数据倾斜在做单量统计的时候,很多时候都是按商家维度,行业维度在做aggregate,按商家维度,不可避免会出现热点问题。 hbase写瓶颈当时我在调大source分片数,并且也无脑调大了各个算子的资源之后,发现输出RPS还是上不去,sink节点也出现了消息积压。当时就判断,hbase有写瓶颈,这个我是无能为力了。后来的事实证明我错了,hbase的确有写瓶颈,但原因是我们写的姿势不对。至于该换什么姿势,请继续看下去。 神挡杀神 先来分析一下我们的数据结构(核心字段)biz_date, order_code, seller_id, seller_layer, order_status, industry_id 我们group by的典型场景有 CREATE VIEW order_day_view AS SELECT industry_id, seller_layer, biz_date, count(distinct order_code) AS salesCount FROM order_view GROUP BY industry_id,seller_id,seller_layer,biz_date ; 总结下来就是,按卖家维度,行业维度什么的,都非常容易出现数据倾斜。 数据倾斜其实有很多解法,这里我不展开讨论,只讲我们这个案例的解法。倾斜的原因,无非就是group by的字段出现了热点,大量的消息都集中在了该字段少数几个取值上。通常的解法是,在消息中选择具备唯一性,或者预估会分布比较均匀的字段。如果这个字段是整型的,可以直接取模(模数一般是节点的并发数),如果是字符串,可以先进行哈希计算,再取模,得到一个分片地址(本文取名为bucket_id)。在接下来的所有aggregate算子中,都要把他作为group by的key之一。 在我们这个案例中,我们选择了order_code这个具备唯一性的字段。首先在源头把分片地址算出来,加到消息里面,代码如下: SELECT o.biz_date, o.order_code, o.seller_id, o.seller_layer, o.order_status, o.industry_id, o.bucket_id FROM (select *,MOD(hash_code(order_code), 32) AS bucket_id from order_stream) o 然后把这个bucket_id层层传递下去,在每一个需要group by的地方都在后面带上bucket_id,例如: CREATE VIEW order_day_view AS SELECT industry_id, seller_layer, biz_date, count(distinct order_code) AS salesCount, bucket_id FROM order_view GROUP BY industry_id,seller_id,seller_layer,biz_date,bucket_id ; 事实上,我一开始想到的是用下面tips里的方法,结果就杵进垃圾堆里了,性能问题是解了,但是计算出来的数据都翻倍了,明显是错的。至于我是怎么发现这个问题,并分析其原因,再换了解法,又是另一段故事了。可以提前预告一下,是踩了blink撤回计算的坑,后面会再出一个专题来讲述这个故事哒~ 这里还想再延伸一下,讲讲我的学习方法。如果读者中有跟我一样的小白,可能会奇怪,同样是小白,为何你这么秀,一上来就搞压测,还能准确地分析出性能的瓶颈在哪里。其实有两方面的原因,一方面是我有过storm的开发经验,对实时计算中会遇到的坑还是有一定的认识;另一方面,是我没说出来的多少个日日夜夜苦逼学习充电的故事。我的学习习惯是喜欢追根溯源,就找了很多介绍flink基本概念,发展历史,以及跟流式和批处理计算框架横向对比的各类博客。而且带着kpi去学习和什么包袱都没有去学习,心态和学习效率是不一样的。前者虽然效率更高,但是是以损害身心健康为代价的,因为学习过程中不可避免的会产生急躁情绪,然后就会不可避免的加班,熬夜,咖啡,再然后他们的好朋友,黑眼圈,豆豆,感冒就全来了。后者虽然轻松,但是什么包袱都没有,反而会产生懈怠,没有压力就没有动力,这是人的天性,拗不过的。这就是矛盾的点,所以在阿里,经常提到“既要也要还要”,其实宣扬的是一种学会平衡的价值观。至于怎么平衡,嘻嘻,天知地知我知。对,只能自己去领悟怎么平衡,别人教不会的。 概念有了一定的认知,下面就开始实践了。整个实践的过程,其实就是在不断的试错。我是一开始连反压的概念都不知道的,一直在无脑的调大CU,调大内存,调高并发数,调整每两个节点之间的并发数比例。寄希望于这样能解决问题,结果当然是无论我怎么调,吞吐量都是都风雨不动安如山。现在想想还是太年轻呀,如果这样简单的做法能解决问题,那那个前辈就绝对不会搞砸了,还轮的到我今天来解决。后来也是在无尽的绝望中想通了,不能再这么无脑了,我要找其他法子。想到的就是在代码层面动刀子,当然试错的基本路线没有动摇,前面也提到过,我一开始是想到的“加盐”,也是在试错。 学习方式决定了我做什么事,都不可能一次成功。甚至有很多情况,我明知道这样做是错的,但我就是想弄明白为什么行不通,而故意去踩这个坑。不过也正是因为试了很多错,踩了很多坑,才挖出了更多的有价值的知识点,扩大了知识的边界。 此时无声胜有声,送上几句名言,与诸君共勉塞翁失马,焉知非福。---淮南子·人间训一切过往,皆为序章。---阿里巴巴·行癫学习就像跑步一样,每一步都算数。---百阿·南秋 tips: 如果在消息本身中找不到分布均匀的字段,可以考虑给每一条消息加上一个时间戳,直接使用系统函数获取当前时间,然后再对时间戳进行哈希取模计算,得到分片地址。相当于强行在时间维度上对消息进行打散,这种做法也被形象的称为“加盐”。 佛挡杀佛 上一段看下来,似乎只解决了数据倾斜的问题。之前还提到有一个hbase写瓶颈问题,这个该如何解呢? 还是接着上面的思路继续走下去,当我们把bucket_id一路传递下去,到了sink任务的时候,假设我们要按商家维度来统计单量,但是别忘了,我们统计的结果还按订单号来分片了的,所以为了得到最终的统计值,还需要把所有分片下的值再sum一下才行,这大概也是大多数人能想到的常规做法。而且我们现有的hbase rowKey设计,也是每个维度的统计数据对应一个rowKey的,为了兼容现有的设计,必须在写hbase之前sum一下。 但是笔者当时突发奇想,偏偏要反其道而行之,我就不sum,对于rowKey,我也给它分个片,就是在原来rowKey的基础上,后面再追加一个bucket_id。就相当于原来写到一个rowKey上的数据,现在把他们分散写到64个分片上了。具体实现代码如下: INSERT INTO hbase_result_sink SELECT CONCAT(businessRowkey, '|', bucket_id) AS businessRowkey, cast(uopAcceptCount as DECIMAL) from hashBucket_view 这样一来,API也必须改造了,读的时候采用scan模式,把所有分片都读出来,然后求和,相当于把sum的工作转移到API端了。这样做的好处在于,一方面可以转移一部分计算压力,另一方面,因为rowKey只有一个,而我们写rowKey的任务(即sink节点)并发数可能有多个,Java开发者应该都深有体会,多线程并发对一个变量进行累加的时候,是需要加锁和释放锁的,会有性能损耗,可以猜测,hbase的写瓶颈就在于此。后来的事实也证明,这种做法将输出RPS提升了不止一个两个档次。 赶考当天 人事已尽,接下来就是关二爷的事了( ̄∇ ̄)。双十一零点倒计时结束,大屏数字开始飙升起来,随之一起的,还有我的肾上腺素。再看看数据曲线,延迟正常,流量峰值达日常的10倍。其实结果完全是在预期之内的,因为从最后一次的压测表现来看,100W的输入峰值(日常的333倍),5W的输出峰值(日常的400倍),都能稳稳的扛下来。出于数(懒)据(癌)安(晚)全(期)的角度考虑,很多大屏和数据曲线的截图就不放出来了。 其实现在回过头再看,此时的内心是平静如水的。不是大获全胜后的傲娇,也不是退隐山林的怯懦。只是看待问题的心态变了。没有翻不过的山,没有迈不过的坎。遇事不急躁,走好当下的每一步就好,也不必思考是对是错,因为每一步都算数,最后总能到达终点。 浮生后记 笔者写文章习惯带一些有故事趣味性的章节在里面,因为我觉得纯讲技术,即使是技术人看起来也会相当乏味,再者纯讲技术的前提是作者具备真正透进骨髓去讲述的功底,笔者自认为还相差甚远,只能加点鱼目来混珠了。换个角度来看,纯技术性的文章,观赏性和权威性更强,每一句都是精华,这种咀嚼后的知识虽有营养饱满,但是不是那么容易消化,消化后能吸收多少,还有待确认。所以我力求展示我的咀嚼过程,更多是面向跟我一样的小白用户,如果觉得冗长,请各位读者姥爷见谅~ 本文作者:王科,花名伏难,先后经历国内三大电商平台,苏宁,京东,阿里,电商大战深度参与者。现任职阿里巴巴供应链事业部,从事业务平台化改造、实时计算相关工作。信奉技术自由平等,希望通过简单形象的语言,打破上层建筑构建的知识壁垒,让天下没有难做的技术。

优秀的个人博客,低调大师

IBM 与 VMWare 达成长期合作

网易科技讯 2月23日消息,据路透社报道,IBM周一表示已与VMWare就云服务领域的合作达成一份长期协议。基于该协议,企业将可快速利用VMWare的虚拟化 产品部署IBM云数据中心,同时企业将数据中心转移至云端的操作也将大幅简化。IBM此举意在进一步吸引VMWare的旗下客户。 虚拟化能够让一台服务器运行多个操作系统,是一种更加高效和廉价的计算解决方案。“如果你不能拥抱这些新技术,你将无法继续生存。”IBM首席技术官Jim Comfort表示,“这项技术正在改变各行各业。” 此外,IBM还公布了一项将简化开发者使用苹果新编程语言Swift进行工具开发的计划。公司表示,此举可以让传统开发环境下的企业顺利迁移至Swift,从而可以为苹果的设备进行软件开发和办公。 ====================================分割线================================文章转载自 开源中国社区[http://www.oschina.net]

优秀的个人博客,低调大师

小猿日记(6) - 技术方案成长

口水记 今天参加了团队内一个新功能的技术评审,虽然自己不参与开发&设计,不过去蹭蹭经验也是挺好的,关于一些需求/设计提下自己的建议。 从需求评审一直跟到了技术评审。 由于时间比较紧急,属于倒推项目,虽说后面增加了几个后端开发,但是懂的都懂。 他们各自负责一部分功能的开发,技术方案出的也是比较急的,且最近的几个周六都需要加班。 相较于正常的开发这次功能,这次的项目整体时间,压缩了30%左右吧。 在技术评审的时候就体现了一些出来。 首先说说明显的不足吧,然后再说说改进 不足: 由于时间问题,技术评审明显缺少了一些设计,想哪写哪,直接写的接口,技术评审完全变成了接口评审 开发人员分工协调问题,相同功能,两个人重复过了,在会上才确认人 开发对于需求不思考目的,不关心后续的一个发展,该功能上线便万事大吉 第一点 首先针对第一点的问题,虽然时间很紧,但是必要的一些方案还是不可少的。 简单的描述,就是下面几点: 功能的UML图 系统整体架构 数据库设计 核心功能的流程图 是否使用了团队之前未使用到的新技术(发现在很多团队并没有这点的一个说明,这点其实挺重要的,特别是对于一些倒推项目,很容易导致延期) 上面几点是基于整个团队来思考的,文档中应该要有的。 而且在技术方案中,应该是需要过的。这次的技术评审,只有一个开发,我看到了一个UML图,至于整体的架构,那是完全没有,功能的流程图,也是没有,数据库设计,更是没有说明。 对于这样的技术方案,其实应该是要打回的。这次的一个技术评审,完全开成了接口评审。 后端和前端过了过接口,然后就完了。。。 第二点 其次第二点,相同功能,多个人同时做了技术方案。 原因我分析一下:应该是这次的功能跨了小组。 很明显就是前期没有进行一个后端开发的内部协调,这是技术经理的一个失职。 多人合作,分工要明确,提前协调好,确定技术经理/项目经理,需要有一个整体把控的人 第三点 第三点,其实很多开发都有,不思考为什么我们要做这个需求,这个功能在团队/公司层面看来,需要达到一个什么目的或者说是预期结果,值不值得(这也是为什么,很多开发不敢去怼产品,在我看来,很多情况下应该怼产品,怼需求,这说明你去思考了,你不只是站在一个开发的角度去思考需求的实现了)。 后续这个功能要怎么发展,按照现在的一个技术方案,能不能支撑后续的一个数据量/并发。这些其实在技术方案中都是应该去思考的一件事情。 正常来说,一个新功能的架构和设计,应该要支撑至少2-3年。这个是需要数据来评估的,普通开发可能不在意,但是作为一个技术经理,是应该去考虑的事情。 需求评审 今天还另外参加了一个需求评审,这次是我需要参加开发了,虽说手上并行着项目开发,但是没办法。 不过这个需求中有几个功能被怼回去了(对于自己怼不回去的,直接反馈到上级说明情况,不要一直和产品经理扯些没用的,一般来说,扯不过),为什么要怼。花费大力气开发一个无法达到效果的功能,对于团队来说,就是在浪费资源。 (注意,这里的怼并不是破口乱骂,而是用正当的理由去说服产品。我和公司的产品,私下关系还是不错的。但是要分清楚不能因为私下关系好,就偷偷接需求哈,这是两码事) 现在产品正在改那几个需求功能了。 小结 今天感触还是挺多的 主要还是技术评审,以及和产品之间的互怼。 今天记了挺多了,总结就两句话。 技术评审不是接口评审,该有的技术方案都应该在技术评审中体现出来,技术评审要达到的效果是能够让没做过这个需求的人,看完技术方案,可以很快的明白技术架构,功能流程以及数据库设计; 参加需求评审,多思考需求的目的,预期,解决什么问题。 不正经语录 怼产品,怼需求,说明你对需求有了自己的思考,而不是对产品经理有意见 评价技术方案怎么样,就看团队新人看到这个技术方案,能多快接手这个功能,需不需要开小灶 倒推项目,加人是没问题的,加时间就不要想了 声明 本文故事纯属遐想,如有雷同,我是原创。 欢迎转载。 转载请务必注明以下信息。 原作者:谙忆 原文地址:https://copyfuture.com/blogs-details/20200521194057394736l4log7y6utwj 公众号 更多精彩内容、活动、程序猿的小故事,欢迎扫码关注公众号

优秀的个人博客,低调大师

DockerCon SF 18 Day Two 速记 – 社区、成长、创新

DockerCon第二天,主会场没有技术发布更多是业务的分享。开场演讲的是畅销书《Vaporized》的作者Robert Tercek,介绍了他对软件定义的社会的观察和思考,传统企业只有通过数字化转型,才能在现在的商业环境保持竞争力。 Docker/Kubernetes 技术社区的蓬勃进展,重点介绍几个方向: Docker自身的核心组件的持续迭代 Containerd 作为CNCF的容器运行时,得到了Moby/Kubernetes社区的支持。其提供了良好的role/responsibility切分,使得上层应用可以方便、高效地地操作镜像、容器。Demo中Michael演示了如何使用Containerd容器构建一个数据管道,从Youtube下载视频并进行音频转码的过程,整个流程没有用户空间的数据拷贝。 关于在Kubernetes中使用Con

优秀的个人博客,低调大师

Java项目经验——程序员成长的钥匙

Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1、掌握项目开发的基本步骤 2、具备极强的面向对象的分析与设计技巧 3、掌握用例驱动、以架构为核心的主流开发方法 没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考!你必须学会假如你是架构师,你该如何思考!你必须掌握针对某个特定问题领域的分析方法! 关于基础tb知识: 你可以看看这些名词或知识点,看是否能说出个一二三四来。 JavaSE —-基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while —-面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、field、method、new、可见性(访问控制)、attribute、property、package、import、static variable、class variable、instance variable、heap、method area、stack、GC(垃圾回收)、override、overload、对象转型(casting)、多态、this、super —-异常处理:理解编译期错误和运行期错误的区别、Exception、RuntimeException、checked exception、unchecked exception、try、catch、finally、throw new XXXException、throws XXXException、异常处理的基本原则 —-数组与集合:数组的定义和使用方法、Collection、List、Set、Map、ArrayList、HashSet、HashMap、Iterator、equals、hashCode、Comparable、Comparator —-常用类:String、intern、常量池、StringBuffer、java.util.Date、SimpleDateFormat、Regex(正则表达式) —-反射机制:Class、Method、Field、invoke、newInstance、BeanUtils(apache-commons)、PropertyUtils(apache-commons) —-输入输出流:InputStream、OutputStream、Reader、Writer、Adapter设计模式与原始流类、Decorator设计模式与包装流类、对象序列化和反序列化 —-多线程:Thread、Runnable、sleep、wait、notify、synchronized、lock Servlet和JSP —-HttpServlet、doGet、doPost、HttpServletRequest、HttpServletResponse、request.getParameter()、request.setAttribute()、request.getAttribute()、request.getSession()、ServletContext、Filter、web.xml、tomcat、forward与redirect、http协议的无状态性、cookie、JSP Scope Object、、 HTML与JavaScript —-你需要能够理解常见的网页标签、理解在网页中引入JavaScript的方法、以及JavaScript的基本语法与使用方法 以上,就是你进一步学习Java所必备的基本知识。特别是一些个专业术语和名词,看到这些名词,如果你像看到亲爹一样亲切,那么说明你对Java的基础知识就很熟悉了。 接下来是SSH: 对于初学者来说,这三大框架被赋予了太多神秘的色彩,似乎它们是重中之重的知识!但是对于拥有多年java开发经验的专业技术人员来说,对于那些Java牛人来说,却对这三大框架不太感冒!难道它们不重要吗? 现在很多企业都在用这三大框架,所以很多企业也把掌握这三大框架作为招聘的必备条件。不可否认的是,也有很多大型企业没有用这三大框架,这些企业经过多年发展,自身已经有一定的技术积累,也形成了自己独特的技术框架体系。这三大框架既可以说很重要,也可以说不重要。 说重要的原因在于:这三大框架对JavaEE开发中所存在的普遍的问题,提供了优美的解决方案,它们蕴含了这个行业中最NB的开发人员的努力和想法,所以,学习这三大框架,你就可以窥探到这些处于技术巅峰的牛人们究竟对一个问题是怎么想的,通过一种什么样的设计思路去解决问题的。所以,对于你来说,你没有太多项目开发的经验,经验是什么?经验就是你知道可能会遇到哪些问题,针对哪个问题可以有哪些解决方法,在某个情景下,哪种解决方法是较好的,哪种方法不太好等等!如果你没做过什么项目,你根本就不会去意识到你可能会遇到哪些问题,而这些问题往往又是非常关键的!解决得不好,会影响到你的程序的稳定性、可扩展性等等!三大框架就给初学者提供了了解你以后可能会遇到哪些问题,以及针对这些问题的解决方案! 当你了解了这三大框架为什么是重要的,那么你也就能理解,为什么这三大框架也可以说是不重要的。如果你曾经开发过很多项目,你碰到了各种各样的问题,凭着你的技术功底,逐个击破了这些问题,在这些人眼里,三大框架(是不是还有N个框架?呵呵)都是浮云! 你属于哪一种人呢?如果你没有太多项目开发经验,那么三大框架对于你来说就是非常重要的!而且,由此你也知道了该怎么去学这三大框架。对于三大框架的学习而言,着力点在于给你展示问题,并触发你自己主动的思考,我们鼓励你提出自己的想法,也许你的想法很白痴,但那毕竟是你自己的想法,如果你不知道牛人的想法,那你怎么知道自己的想法是很白痴的呢?在这种思想的碰撞过程中,你就会逐渐提高自己!所以,三大框架学完之后,你不应该只是看到一大堆配置文件,你不应该只是看到了一些Action,一些Service,一些映射文件,你不应该只知道session.save/update/delete,你不应该只是知道struts2中有一堆interceptor,你不应该只是看到一堆jar包…… 如果你只是知道拷贝一堆jar包,定义一系列配置文件之后,SSH三大框架就能够运行起来了,也可以给你干活了,那么,很悲哀的是,你仍然没有掌握三大框架的精粹!请你回答以下问题: Struts2: 为什么每次请求都要创建一个Action对象? ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问题? 为什么在web.xml中配置的StrutsPrepareAndExecuteFilter要过滤所有的请求? 请你给我谈谈ValueStack? Struts2是如何实现MVC设计模式的? Spring: 你为什么要用Spring? 请你聊一聊IOC/DI?java大神技术交流学习 什么是声明式的事务管理?为什么要使用声明式的事务管理?Spring如何实现声明式的事务管理? 把spring和hibernate集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的方法,即主要执行查询任务的方法定义为read-only? Hibernate: 请你谈谈你对OR映射的理解? 很多人说Hibernate不适合大项目,性能有问题,你是如何理解的? Hibernate为什么一定要定义一个数据库标识? 为什么Hibernate建议你的实体类实现hashCode和equals方法? 谈谈你对Hibernate实体类中的数据库标识与数据库主键之间关系的认识? 谈谈你对Hibernate关联映射与数据库外键之间关系的认识? 调用session.save()方法,hibernate一定会发出insert语句吗?谈谈你的理解 调用session.update()方法,hibernate一定会发出update语句吗?谈谈你的理解 请你聊一下以下名词、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size 配置了lazy=”true”一定会实现懒加载吗? 请你谈谈Hibernate中的“N+1”问题 请你谈谈Hibernate有哪些最佳实践? 以上并非SSH中全部重点的问题,但它们能考察你能否灵活运用SSH框架!如果你能深刻理解这些问题,再配以合适的实战项目训练,你也会逐渐成为牛人! 最后是项目开发能力: 不管你是学Java还是别的技术,你的根本目的在于给客户创造价值!否则,你下大力气学习的东西,随着技术的进步和更新,很快就会过时!所以,技术的核心在于用技术创造有价值的成果!也就是说,客户需要什么,你就要用技术把客户需要的东西给他造出来!一个公司之所以要用各种福利条件极力挽留你,是因为你能够给公司带来极高的利益!那么,你有什么可以给公司利用的呢?公司最看重你的哪方面的能力呢? 做项目需要的能力很多,其中最核心最基础的就是建模能力(现在最主流的就是面向对象建模!)。什么是建模能力呢? 我给大家一个面试题: 一个保险公司的保险卡管理模块:销售人员领取保险卡信息(保险卡数量、卡号、领取日期),然后直接销售给客户,销售完毕后,将保险卡信息录入保险公司系统内部(销售人员信息、购买人信息、购买的保险卡数量、卡号等),客户登录保险公司网站激活保险卡,需要填写(保险卡卡号、激活密码、被保险人信息、受益人信息) 要求就是:如果这个模块交给你来做,你要怎么做?你要解决哪些问题?你可否画个图,给我描述一下你的想法是什么吗? 这只是一个面试题而已,因为只有简单几句话,所以我把它放到这里,让大家感受一下所谓建模要解决什么问题。而业务领域的问题实在是太多了!也许一个几十上百页的需求文档才能把某个业务领域的问题描述清楚,而你的职责就是要把它们实现出来! 某个公司要开发一个考勤管理系统,要求与现有的人力资源系统对接,你是主要的技术负责人,那么,你要做哪些工作呢? 某ERP项目要实现一个排班管理模块java大神技术交流学习,交给你去完成,你如何去完成呢? 不要抱怨项目经理给你的信息太少(只有几句话),不要抱怨客户没有描述清楚他们的需求……你的价值就在于理顺所有的问题 tb ,用各种手段获得你想要的信息,按照一定的思路汇总,并在特定的时间里逐个解决它! 你应该意识到学Java不是一个坦克大战、一个网络飞车、一个CMS、一个DRP、一个OA那么简单,你不要沉迷于那些技术细节(虽然也是有必要的,但不要转牛角尖),不要满足于实现了CRUD式的项目需求(虽然这是基础中的基础),在你的前方,永远有一个目标在那里,需要你去努力追赶! 今后你将面对更加繁杂的需求,你学习项目的唯一目的,就是:学习如何将需求转化为实现,如何对需求进行分析,如何建立概念模型,如何理顺各种概念之间的关系,如何进行设计,如何选择合适的技术来实现你的设计方案,如何对你的实现进行测试,如何解决你所遇到的形形色色的问题(性能、需求变更等)。当你真正到公司里面从事了几年开发之后,你就会同意我的说法! 利用Java找工作,需要的就是项目经验,项目经验就是理解项目开发的基本过程,理解项目的分析方法,理解项目的设计思路,理解项目的实现技巧,理解项目的测试方法,理解项目中各种问题的解决方案!!! 所以,你该清楚你的目标了! 工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加群744677563,里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册