精华内容
下载资源
问答
  • 在很复杂的业务场景下,排序的规则会比较复杂,单一的降序,升序无法满足日常需求。不过 ES 中提供了给文档加权重的方式来排序,还是挺好用的。 首先初始化三条测试数据,方便查看效果: { id: 1, title: "Java...

    背景

    读者提问:ES 的权重排序有没有示列,参考参考?

    刚好之前也稍微接触过,于是写了这篇文章,可以简单参考下。

    在很多复杂的业务场景下,排序的规则会比较复杂,单一的降序,升序无法满足日常需求。不过 ES 中提供了给文档加权重的方式来排序,还是挺好用的。

    首先初始化三条测试数据,方便查看效果:

    {
    	id: 1,
    	title: "Java怎么学",
    	type: 3,
    	userId: 1,
    	tags: [
    		"java"
    	],
    	textContent: "我要学Java",
    	status: 1,
    	heat: 80
    }
    {
    	id: 2,
    	title: "Java怎么学",
    	type: 2,
    	userId: 1,
    	tags: [
    		"java"
    	],
    	textContent: "我要学Java",
    	status: 1,
    	heat: 99
    }
    {
    	id: 3,
    	title: "Java怎么学",
    	type: 1,
    	userId: 1,
    	tags: [
    		"java"
    	],
    	textContent: "我要学Java",
    	status: 1,
    	heat: 100
    }
    

    type:1 为翻译,2 为转载,3 为原创

    需求是查询 userId=1 的所有文章,按照热度降序排序,但是原创类型的文章要显示在前面,优先级高于热度。

    如果我们简单的按照热度排序的话,那么顺序肯定是 id 为 3(热度:100),2(热度:99),1(热度:80)这样排列的。

    但是原创类型的要在前面,那么结果应该是 1(热度:80,类型:原创),3(热度:100,类型:翻译),2(热度:99,类型:转载)。

    排序条件肯定是以热度来进行的,这个是肯定的。唯一需要处理的就是怎么将原创类型的排在前面,如果只考虑实现,方式还是有很多种的。

    比如:原创类型的热度值可以调的比较高,但是呢,热度值要重新弄一个字段,只用于排序,给用户展示的还是之前的热度值,这样排序就简单了,还是根据热度排就可以实现效果。

    weightFactorFunction

    在 ES 搜索结果中_score 这个字段相信大家并不陌生,这是 ES 给出的评分,我们可以根据评分来排序,然后将原创类型的评分提高就可以实现想要的效果。

    直接看 Java 代码吧,通过 FunctionScoreQueryBuilder 来构建查询。

    @Test
    public void testSort() {
        FunctionScoreQueryBuilder.FilterFunctionBuilder[] filterFunctionBuilders = new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{
                new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.termQuery("type", 3), ScoreFunctionBuilders.weightFactorFunction(100)),
                new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.termQuery("type", 2), ScoreFunctionBuilders.weightFactorFunction(1)),
                new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.matchQuery("type", 1), ScoreFunctionBuilders.weightFactorFunction(1))
        };
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        boolQuery.must(QueryBuilders.termQuery("userId", 1));
        FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery(boolQuery, filterFunctionBuilders);
        searchSourceBuilder.query(functionScoreQueryBuilder)
                .sort("_score", SortOrder.DESC)
                .sort("heat", SortOrder.DESC);
        SearchRequest searchRequest = new SearchRequest(elasticSearchIndexConfig.getArticleSearchIndexName());
        searchRequest.types(EsConstant.DEFAULT_TYPE);
        searchRequest.source(searchSourceBuilder);
    
        List<ArticleDocument> searchResults = kittyRestHighLevelClient.search(searchRequest, ArticleDocument.class);
        searchResults.forEach(doc -> {
            System.out.println(doc.getId() + "\t" + doc.getType() + "\t" + doc.getHeat());
        });
    }
    

    通过 ScoreFunctionBuilders.weightFactorFunction 为文章类型设置对应的权重,原创文章权重为 100,其他的都为 1,这样原创文章的得分就高于其他类型的文章。

    在排序的时候优先得分排序,然后热度排序。就可以得到我们想要的结果了。

    scriptFunction

    除了使用 weightFactorFunction 来设置权重,另外介绍一种灵活度更高,适用于更复杂的排序场景的方式 scriptFunction。

    scriptFunction 允许我们通过脚本的方式来实现权重,直接看代码:

    @Test
    public void testSort() {
        String scoreScript = "if (doc['type'].value == 3) {" +
                "   return 100;" +
                "} else {" +
                "   return 1;" +
                "}";
        FunctionScoreQueryBuilder.FilterFunctionBuilder[] filterFunctionBuilders = new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{
                new FunctionScoreQueryBuilder.FilterFunctionBuilder(QueryBuilders.matchAllQuery(), ScoreFunctionBuilders.scriptFunction(new Script(scoreScript)))
        };
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        boolQuery.must(QueryBuilders.termQuery("userId", 1));
        FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery(boolQuery, filterFunctionBuilders);
        searchSourceBuilder.query(functionScoreQueryBuilder)
                .sort("_score", SortOrder.DESC)
                .sort("heat", SortOrder.DESC);
        SearchRequest searchRequest = new SearchRequest(elasticSearchIndexConfig.getArticleSearchIndexName());
        searchRequest.types(EsConstant.DEFAULT_TYPE);
        searchRequest.source(searchSourceBuilder);
    
        List<ArticleDocument> searchResults = kittyRestHighLevelClient.search(searchRequest, ArticleDocument.class);
        searchResults.forEach(doc -> {
            System.out.println(doc.getId() + "\t" + doc.getType() + "\t" + doc.getHeat());
        });
    }
    

    scoreScript 就是控制权重的脚本,也就是一段代码(脚本默认是 groovy),是不是方便的多。

    关于作者:尹吉欢,简单的技术爱好者,《Spring Cloud 微服务-全栈技术与案例解析》, 《Spring Cloud 微服务 入门 实战与进阶》作者, 公众号猿天地发起人。

    我整理了一份很全的学习资料,感兴趣的可以微信搜索「猿天地」,回复关键字 「学习资料」获取我整理好了的 Spring Cloud,Spring Cloud Alibaba,Sharding-JDBC 分库分表,任务调度框架 XXL-JOB,MongoDB,爬虫等相关资料。

    展开全文
  • 2、放弃 Notepad++,事实证明,还有 5 款更牛逼……3、公司这套架构统一处理 try...catch 这么香,求求你不要再满屏写了,再发现扣绩效!4、Spring 中经典的 9 种设计模式!收藏了5、高仿小米商城项目,爱了! 来源...

    往期热门文章:

    1、能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮,真TMD香!2、放弃 Notepad++,事实证明,还有 5 款更牛逼……3、公司这套架构统一处理 try...catch 这么香,求求你不要再满屏写了,再发现扣绩效!4、Spring 中经典的 9 种设计模式!收藏了5、高仿小米商城项目,爱了!
    

    来源:blog.csdn.net/qq_38380025

    满满的都是干货  所有插件都是在 ctrl+alt+s 里的plugins 里进行搜索安装。

    1、CodeGlance 代码迷你缩放图插件

    2、 Codota

    代码提示工具,扫描你的代码后,根据你的敲击完美提示。

    Codota基于数百万个开源Java程序和您的上下文来完成代码行,从而帮助您以更少的错误更快地进行编码。

    安装:

    3、Material Theme UI

    那就顺便推荐一下这个吧,超多的主题插件,各种颜色,各种模式,感兴趣的可以试一下,图我就不截了。

    4、Alibaba Java Coding Guidelines

    阿里巴巴的编码规约检查插件,检查你的编码习惯,让你更规范。

    都是在plugins里搜索,我就不截图了。

    5、 Alibaba Cloud Toolkit

    快速部署到服务器,超级牛逼 超级推荐。

    6、GenerateAllSetter

    快速生成get set。

    7、idea zookeezper

    管理zookeeper的idea插件本代码是根据https://github.com/linux-china/zookeeper-intellij修改过来的,解决了一些npe异常。

    可以图形化的查看zk 节点信息了,非常简单。

    8、JRebel 热加载插件,也是超级牛逼,就是收费。

    JRebel是一种生产力工具,允许开发人员立即重新加载代码更改。它跳过了Java开发中常见的重建,重新启动和重新部署周期。JRebel使开发人员可以在相同的时间内完成更多工作,并在编码时保持顺畅。JRebel支持大多数现实世界的企业Java堆栈,并且易于安装到现有的开发环境中。

    9、Json Parser json串格式化工具,不用打开浏览器了

    厌倦了打开浏览器来格式化和验证JSON?为什么不安装JSON Parser并在具有脱机支持的IDE内进行呢?JSON Parser是用于验证和格式化JSON字符串的轻量级插件。安装并传播:)

    10、Lombok 这个太牛逼了,应该大家都在用吧

    只需加上注解 什么get set  什么toString 等等方法都不需要写。

    11、JUnitGenerator

    自动生成测试代码。

    12、MyBatis Log Plugin  神级

    根据执行sql 替换掉 ? 显示完整 sql, 直接复制粘贴到数据库,就可以执行。

    13、MyBatisCodeHelperPro  超级牛逼神级

    支持mapper互跳,方法自动生成,代码自动生成。

    只输入了一个fin  的各种提示就处理了,当你选择一个回车的时候 mapper.xml 也就给你生成了。

    还可以根据数据库表自动生成xml、mapper service  和个增删改查代码,可一建生成所有表  真的超级牛逼啊。

    14、RESTfultoolkit 根据url 查找controller

    一套 RESTful 服务开发辅助工具集。

    1. 根据 URL 直接跳转到对应的方法定义 ( Ctrl \ or Ctrl Alt N );

    2. 提供了一个 Services tree 的显示窗口;

    3. 一个简单的 http 请求工具;

    4. 在请求方法上添加了有用功能:复制生成 URL;复制方法参数...

    5. 其他功能:

    • java 类上添加 Convert to JSON 功能,格式化 json 数据 ( Windows: Ctrl + Enter; Mac: Command + Enter )。

    • 支持 Spring 体系 (Spring MVC / Spring Boot 1.x,2.x)

    • 支持 JAX-RS

    • 支持 Java 和 Kotlin 语言。


    15、Translation 翻译插件 灰常牛逼

    翻译中文,给接口起名字就不用费劲啦!

    最近热文阅读:
    
    1、能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮,真TMD香!
    2、放弃 Notepad++,事实证明,还有 5 款更牛逼……
    3、公司这套架构统一处理 try...catch 这么香,求求你不要再满屏写了,再发现扣绩效!
    4、Spring 中经典的 9 种设计模式!收藏了
    5、高仿小米商城项目,爱了!
    6、为什么有些公司不让用 Lombok ?
    7、厉害了,为了干掉 HTTP ,Spring 团队开源了 nohttp 项目!
    8、别瞎学了,这几门语言要被淘汰了!
    9、一个基于 Spring Boot 的项目骨架,非常舒服!
    10、Redis 低成本、高可用设计,牛逼!
    
    关注公众号,你想要的Java都在这里
    
    展开全文
  • 这么多技术我该怎么学

    千次阅读 2010-03-27 13:06:00
    这么多技术我该怎么学杨中科老师 现在 IT 新技术日新月异。就常用编程语言而言,有 c/c++、汇编、java,c#、Python 等;操作系统平台有 unix/linux,windows 系列;开发工具有 VC、VisualStudio2008、Eclipse、...


    一、这多东西啥时候能学完?


    这么多技术我该怎么学

    杨中科老师
     

    现在 IT 新技术日新月异。就常用编程语言而言,有 c/c++、汇编、java,c#、Python 等;
    操作系统平台有 unix/linux,windows 系列;开发工具有 VC、VisualStudio2008、Eclipse、
    NetBeans 等;每个大平台下,还有很多的的方向:如网络、数据库、脚本、HTML、动态网
    站、 游戏开发等; 有人还在学Dreamweaver 做网页、 Flash 做动画、 Photoshop 做美工、 3DMax
    做三维动画…………是的, 我们什么都想学。 恨不得把所有的知识统统都塞到肚子里去。看
    到什么,想学什么!

    今天看这 VC 的书,明天又看 Java,后天又看 C#,东搞西搞!看到别人做网页。自己
    兴趣了来了。好,学html 语言,我也做网页,听说做网页要会“网页三剑客”,所以又想学
    Dreamweaver、Flash。后来开始知道有 JSP、PHP、ASP .NET做动态网站这玩意儿。也想去
    学,学学学……

    这是几乎所有在校大学生的通病。 但是, 这不是坏事, 甚至可以说是好事。 说明了你“求
    知欲”高!总比那些,生活没有激情,整天知道泡妞、上网、打游戏、混日子的强。

    但是如果你今天想学这个, 明天又想学那个。 这样你就能永远徘徊在技术的门外。 很多
    人都有过或者正在经历这样的苦闷日子: 总觉得有“太多东西”要学了, 然而人的精力是有
    限的,总有永远学不完的感觉,所以心理特别急,整天惶惶不可终日,不知道先要学哪个,
    一会儿拿起这本书,一会拿起那本书,折腾了几个月,突然发现自己什么都没有学到……

    每一个大方向如果没有上几年的学习, 很难能学习出什么来。 但程序设计的最根本的东
    西是相同的。所以我们学习要抓根本。俗话说:通一理,融百里。

    学程序设计就像习武一样, 如果内功学的好, 其他功夫就很容易上手。 君不见 《倚天屠
    龙记》中的张无忌练了“九阳神功”8 年,练“乾坤大挪移”只需 12 个时辰吗?

    习武之人, 谁不想在“江湖”上扬名立万, 谁不想成为万人敬仰的大侠?大侠之所以能
    成为“大侠”,当然有他们的看家本领。狄云的“神照神功”,金世遗的正邪融合的“乔北冥
    内功心法”,张无忌的“九阳神功”,段誉的“六脉神剑”,令狐冲的“独孤九剑”,哇,太多
    了...
    古人历经千辛万苦才能找到这些“武功秘籍”。我们现在这些后辈,比起古人来说:简
    直太幸运了。去书店,各种各样的心功心法,剑法,拳法,应有尽有,看得你眼花缭乱...
    你选什么呢?今天练“六脉神剑”几式,明天去学“降龙十八掌”几招,后天又去
    练“发暗器”,这样何时才有个尽头呢?你说,你什么武功都会,但是“形似而神不似”,不
    得要领, 不够火候。 一上擂台, 就被别人一掌打趴了。 试问哪个软件公司敢要一个号称任何
    编程语言都会,而是每种语言只能写出个“hello world!”的程序员,你不被人家扫地出门
    才怪。

     

     

    二、学**还是学**更有前途?
     

    IT 学生解惑真经
     

    看了上面的话,有的同学已经开始烦了,“知道了知道了,不止一个像你这样的所谓的
    ‘老前辈’跟我说过‘学什么都一样,思想才是最重要’的大道理,可是你们站着说话不嫌
    腰疼呀,现实是有很多技术需要学,比如做Web 开发就有 JSP、PHP、ASP .NET等好多方
    向, 我总得选一个吧! 到底学哪个有前途呢?我必须要选择一个有前途的, 选错了就麻烦了。 ”

    其实像“学**还是学**更有前途”的话没意义,因为“选择 JSP 还是选择 PHP”的前
    途的差别不像“选择英语还是选择日语”的前途差别那样大,不存在“选错方向”的问题,
    因为都是相通的, 你也不能保证你毕业以后搞的就是你学的那个方向, 更不能保证你靠你学
    的这点东西就能吃一辈子。比如我上大学的时候一直在钻研是Delphi 语言,可是毕业校园
    招聘的时候我照样在 Java 职位的考试取得了第一名,而且工作以后经过简单的学习就掌握
    了 Java 语言,并且后来还写了三本关于Java 语言的书;再如我毕业后两年多的时间一直在
    用 Java 开发,后来公司要做一套基于.NET 的产品,我只用了一个礼拜熟悉了.NET 体系以
    及 C#的语法,然后就开始进行开发。

    不过就像上边说的“做 Web开发就有 JSP、PHP、ASP .NET等好多方向,我总得选一
    个吧! ”这个问题是非常实际的,因为只有先学一个才能深入这个方向,把这个方向学通了
    才能想以后“一通百通”。因此我的建议就是学校教过什么语言,你就继续深入学习这么语
    言,而不要去问“这么语言有没有前途”这样的傻问题。尽量不要去学一门所谓“有前途”
    的新语言, 因为你去学一门新语言就要把很多精力耗费在语言、 语法本身, 而耽误了编程的
    实战, 而以一个已经学过的语言来学习的话, 起码语法本身不用再去学、 开发工具本身不用
    再去熟悉,只要研究怎么使用这门语言开发有用的程序就 ok 了。比如大部分同学都学过 C
    语言(有的学校直接开了C++的课,但是 C++的面向过程编程部分还是 C 语言) ,所以咱们
    就开了 《C 语言也能干大事》 的课程, 让同学们把精力放到学以致用上, 而不是学“有前途”
    的新语言上,这也是这个思想的一个体现。

    举几个例子。咱们如鹏网的《计算机专业职业发展测评系统》是我用PHP 开发的,但
    是在这之前我从来没写过 PHP 程序,但是我以前写过 JSP、ASP 的程序,因为写网站程序
    的原理都是相通的,只是语法不同而已,因此我只用了几个小时的时间熟悉了开发PHP 用
    的工具并且快速浏览了一下 PHP 的语法,然后用半天时间就开发出了这个测评系统。想像
    一下一个整天在今天学 JSP,明天学ASP,后天学PHP,大后天仰天长叹“到底学哪个有前
    途”的人能用半天时间学会一门新语言吗?

    我大学时有一个同学,他看我当时Delphi 学的比较好,写了很多程序,他就说他也想
    学软件开发, 让我教他Delphi, 可是我们专业前一个学期已经开了PowerBuilder 的课, 因此
    当时我就建议他还是继续深入学习PowerBuilder, 用PowerBuilder 写又实用价值的东西,而
    不是像上课那样写 HelloWorld的程序。当时 Delphi 还是如日中天的流行的编程语言,而
    PowerBuilder 则市场占有率比较小,他就说不想继续学PowerBuilder,因为 PowerBuilder 没
    前途,我就给他讲了“一通百通,从自己最熟悉的入手”这个道理,然后他就踏实的深入研
    究 PowerBuilder 起来,到了毕业的时候他已经能用PowerBuilder 写非常复杂的程序而且还
    学习了用 PowerBuilder 写 Web程序。毕业后没多久就应公司的要求用Delphi 写程序,他只
    用了不到一周的时间学习了 Delphi, 然后就写出了一个符合公司要求的系统, 当时他就给我

    IT 学生解惑真经

    打电话向我报喜。前一阵子我听说他已经开始指导一些新员工用Java 开发一个中型规模的
    企业级系统了。可以说他的成功就得益于“一通百通,从自己最熟悉的入手”这个原则。
    总结一下,不要管“哪门语言好就业、有前途”,因为那些“好就业、有前途”都是纸老虎。
    尽量不要学新语言, 从自己最熟悉的语言入手, 深入研究, 出山后你就是被用人单位争抢的
    红人。

    三、企业里都需要什么方面的才能?

    这个要视用人单位的要求而定了。 你现在还没有毕业, 也不知道未来要面对什么样的岗
    位。 因此建议大家在上学期间不要偏科, 所以的课程都要好好学, 学好专业课, 培养自己的
    “内功心法”,然后进入一个大公司,那么大公司自然会为你安排一个人才培养计划,在工
    作的环境中学习就更有目的性。

    山西大学 张瑞(C/C++学生) :
    真心的感谢这里的每一位老师, 在这里可以学到贴近职场和应用的许多知识, 这些都是在象
    牙塔里学不到的。 不过我们也应该珍惜在校园的这些自由的日子, 可以有充裕的时间学习基
    础理论知识,没有那么大的经济和心理压力。
    认真的做好自己每个阶段该做的事情, 戒骄戒躁, 踏踏实实的一步一步往前走。 我觉得这就
    是很多过来人都在告诉我们的道理。

    四川大学 李川(Net 学生) :
    ...狂顶。 。 。
    老师说得太好了。 。 。
    我身边就有不少像老师说的那样的同学。弄得我也心里有点小慌。还好我定力好。坚持C#
    不动摇。现在更是坚定了我学习C#的决心。
    一定要推荐同学们都看看这个文章。
    太谢谢老师了。
    HOHO~~~

    吉首大学 邓嘉(C/C++学生) :
    谢谢了,这个问题在我心中好久了。
    我本来的想法是: 先花一些时间, 了解几门语言, 然后在其中找到自己打算深入的一门。再
    一门通,百门通。
    现在看来,还是老老实实地看我地C 吧~~~~!

    大连海事大学 文星(Java 学生) :
    说出了大学生的通病,我大四了深有体会,希望看到这篇文章的同学们,能专一了哈哈

    北京理工大学 苏建学(Java 学生) :
    很有感触,因为我自己就是那种什么都想学,但是什么都深入不了的那种人。我曾经看过
    C++、Java、C#的书,里面的基本语法感觉只要半天就能熟悉了,但是要想深入学习感觉就
    找不到方向了。 所以到现在为止也没能学好任何一门语言, 看来我真的该静下心来好好研究
    一门语言了!

     

    展开全文
  • 这么多技术我该怎么学(杨中科老师)

    千次阅读 2012-05-05 15:59:07
    之前一直被这个问题困扰,跟W聊过很次。每次都问的他一直说“别再跟我说话。”因为我的困惑会把他也带入迷惘中。 他后来说“一定要淡定,坚持。”然后推荐我这篇,他哥们推荐他的文章。解决问题的方法渐渐明朗,...

    之前一直被这个问题困扰,跟W聊过很多次。每次都问的他一直说“别再跟我说话。”因为我的困惑会把他也带入迷惘中。

    他后来说“一定要淡定,坚持。”然后推荐我这篇,他哥们推荐他的文章。解决问题的方法渐渐明朗,就是行动与坚持。

    感谢W及与他一起进步的哥们儿们。这篇文章,一定要留起来。见证我的成长!

    附文章:

    一、这多东西啥时候能学完?

     

    现在IT新技术日新月异。就常用编程语言而言,有c/c++、汇编、java,c#、Python等;操作系统平台有unix/linux,windows系列;开发工具有VC、VisualStudio2008、Eclipse、NetBeans等;每个大平台下,还有很多的的方向:如网络、数据库、脚本、HTML、动态网站、游戏开发等;有人还在学Dreamweaver做网页、Flash做动画、Photoshop做美工、3DMax做三维动画…………是的,我们什么都想学。恨不得把所有的知识统统都塞到肚子里去。看到什么,想学什么!

     

    今天看这VC的书,明天又看Java,后天又看C#,东搞西搞!看到别人做网页。自己兴趣了来了。好,学html语言,我也做网页,听说做网页要会“网页三剑客”,所以又想学Dreamweaver、Flash。后来开始知道有JSP、PHP、ASP.NET做动态网站这玩意儿。也想去学,学学学……

     

    这是几乎所有在校大学生的通病。但是,这不是坏事,甚至可以说是好事。说明了你“求知欲”高!总比那些,生活没有激情,整天知道泡妞、上网、打游戏、混日子的强。

     

    但是如果你今天想学这个,明天又想学那个。这样你就能永远徘徊在技术的门外。很多人都有过或者正在经历这样的苦闷日子:总觉得有“太多东西”要学了,然而人的精力是有限的,总有永远学不完的感觉,所以心理特别急,整天惶惶不可终日,不知道先要学哪个,一会儿拿起这本书,一会拿起那本书,折腾了几个月,突然发现自己什么都没有学到……

     

    每一个大方向如果没有上几年的学习,很难能学习出什么来。但程序设计的最根本的东西是相同的。所以我们学习要抓根本。俗话说:通一理,融百里。

     

    学程序设计就像习武一样,如果内功学的好,其他功夫就很容易上手。君不见《倚天屠龙记》中的张无忌练了“九阳神功”8年,练“乾坤大挪移”只需12个时辰吗?

     

    习武之人,谁不想在“江湖”上扬名立万,谁不想成为万人敬仰的大侠?大侠之所以能成为“大侠”,当然有他们的看家本领。狄云的“神照神功”,金世遗的正邪融合的“乔北冥内功心法”,张无忌的“九阳神功”,段誉的“六脉神剑”,令狐冲的“独孤九剑”,哇,太多了...

    古人历经千辛万苦才能找到这些“武功秘籍”。我们现在这些后辈,比起古人来说:简直太幸运了。去书店,各种各样的心功心法,剑法,拳法,应有尽有,看得你眼花缭乱...

           你选什么呢?今天练“六脉神剑”几式,明天去学“降龙十八掌”几招,后天又去练“发暗器”,这样何时才有个尽头呢?你说,你什么武功都会,但是“形似而神不似”,不得要领,不够火候。一上擂台,就被别人一掌打趴了。试问哪个软件公司敢要一个号称任何编程语言都会,而是每种语言只能写出个“hello world!”的程序员,你不被人家扫地出门才怪。

     

    二、学**还是学**更有前途?

     

    看了上面的话,有的同学已经开始烦了,“知道了知道了,不止一个像你这样的所谓的‘老前辈’跟我说过‘学什么都一样,思想才是最重要’的大道理,可是你们站着说话不嫌腰疼呀,现实是有很多技术需要学,比如做Web开发就有JSP、PHP、ASP.NET等好多方向,我总得选一个吧!到底学哪个有前途呢?我必须要选择一个有前途的,选错了就麻烦了。”

     

    其实像“学**还是学**更有前途”的话没意义,因为“选择JSP还是选择PHP”的前途的差别不像“选择英语还是选择日语”的前途差别那样大,不存在“选错方向”的问题,因为都是相通的,你也不能保证你毕业以后搞的就是你学的那个方向,更不能保证你靠你学的这点东西就能吃一辈子。比如我上大学的时候一直在钻研是Delphi语言,可是毕业校园招聘的时候我照样在Java职位的考试取得了第一名,而且工作以后经过简单的学习就掌握了Java语言,并且后来还写了三本关于Java语言的书;再如我毕业后两年多的时间一直在用Java开发,后来公司要做一套基于.NET的产品,我只用了一个礼拜熟悉了.NET体系以及C#的语法,然后就开始进行开发。

     

    不过就像上边说的“做Web开发就有JSP、PHP、ASP.NET等好多方向,我总得选一个吧!”这个问题是非常实际的,因为只有先学一个才能深入这个方向,把这个方向学通了才能想以后“一通百通”。因此我的建议就是学校教过什么语言,你就继续深入学习这么语言,而不要去问“这么语言有没有前途”这样的傻问题。尽量不要去学一门所谓“有前途”的新语言,因为你去学一门新语言就要把很多精力耗费在语言、语法本身,而耽误了编程的实战,而以一个已经学过的语言来学习的话,起码语法本身不用再去学、开发工具本身不用再去熟悉,只要研究怎么使用这门语言开发有用的程序就ok了。比如大部分同学都学过C语言(有的学校直接开了C++的课,但是C++的面向过程编程部分还是C语言),所以咱们就开了《C语言也能干大事》的课程,让同学们把精力放到学以致用上,而不是学“有前途”的新语言上,这也是这个思想的一个体现。

     

    举几个例子。咱们如鹏网的《计算机专业职业发展测评系统》是我用PHP开发的,但是在这之前我从来没写过PHP程序,但是我以前写过JSP、ASP的程序,因为写网站程序的原理都是相通的,只是语法不同而已,因此我只用了几个小时的时间熟悉了开发PHP用的工具并且快速浏览了一下PHP的语法,然后用半天时间就开发出了这个测评系统。想像一下一个整天在今天学JSP,明天学ASP,后天学PHP,大后天仰天长叹“到底学哪个有前途”的人能用半天时间学会一门新语言吗?

     

    我大学时有一个同学,他看我当时Delphi学的比较好,写了很多程序,他就说他也想学软件开发,让我教他Delphi,可是我们专业前一个学期已经开了PowerBuilder的课,因此当时我就建议他还是继续深入学习PowerBuilder,用PowerBuilder写又实用价值的东西,而不是像上课那样写HelloWorld的程序。当时Delphi还是如日中天的流行的编程语言,而PowerBuilder则市场占有率比较小,他就说不想继续学PowerBuilder,因为PowerBuilder没前途,我就给他讲了“一通百通,从自己最熟悉的入手”这个道理,然后他就踏实的深入研究PowerBuilder起来,到了毕业的时候他已经能用PowerBuilder写非常复杂的程序而且还学习了用PowerBuilder写Web程序。毕业后没多久就应公司的要求用Delphi写程序,他只用了不到一周的时间学习了Delphi,然后就写出了一个符合公司要求的系统,当时他就给我打电话向我报喜。前一阵子我听说他已经开始指导一些新员工用Java开发一个中型规模的企业级系统了。可以说他的成功就得益于“一通百通,从自己最熟悉的入手”这个原则。

    总结一下,不要管“哪门语言好就业、有前途”,因为那些“好就业、有前途”都是纸老虎。尽量不要学新语言,从自己最熟悉的语言入手,深入研究,出山后你就是被用人单位争抢的红人。

     

    三、企业里都需要什么方面的才能?

     

    这个要视用人单位的要求而定了。你现在还没有毕业,也不知道未来要面对什么样的岗位。因此建议大家在上学期间不要偏科,所以的课程都要好好学,学好专业课,培养自己的“内功心法”,然后进入一个大公司,那么大公司自然会为你安排一个人才培养计划,在工作的环境中学习就更有目的性。

     

    山西大学 张瑞(C/C++学生) :

    真心的感谢这里的每一位老师,在这里可以学到贴近职场和应用的许多知识,这些都是在象牙塔里学不到的。不过我们也应该珍惜在校园的这些自由的日子,可以有充裕的时间学习基础理论知识,没有那么大的经济和心理压力。

    认真的做好自己每个阶段该做的事情,戒骄戒躁,踏踏实实的一步一步往前走。我觉得这就是很多过来人都在告诉我们的道理。


    展开全文
  • 最常见的是微信公众帐号认证需要500个粉丝,刚注册的公众帐号哪里会有这么多粉丝,于是,各种刷粉的生意就诞生了! 有需求就会有市场。 有时候把营销的过程简单的称之为买人,广告主花钱做了广告。能让...
  • 我的C盘之前因为分系统盘的时候分小了特别小,导致C盘空间非常紧张,到什么程度也就1-200M 剩余空间,微软天天给我更新系统发现漏洞。...就这样挤一挤发现一点再发现一点, 8个G这么轻松清理出来了。
  • ,雷学委认为线程这一块很重要啊,很小白写很代码,总停留在CRUD或写方法倒腾数据,根本提升不了! 这里学委准备了一个短视频: 下面学委继续鞋厂流水线进行讲解。 来,我们一起又看看,大型鞋厂生
  • 路HDMI编码转RTMP平台推流直播导播方案 今天我要给大家带来一个路HDMI转RTMP平台推流直播的方案,咱也不说这个方案是最优,但性能和稳定性却是响当当的好,该设备采用华为海思Hi3531D芯片,数据手册(Data...
  • Android分辨率适配框架(1)— 核心基础

    万次阅读 多人点赞 2016-10-14 16:35:22
    在Android项目开发中,软件工程师都会面临一个问题:如何适配不同分辨率的设备? 许多人采用的是这样的方式:利用不同的dimens和drawable资源适配不同分辨率的设备。这么做当然没错,可是它也同时带来一些弊端......
  • 随着b站的越做越强,出现了越来越的仿照b站的视频站点。然而这些视频站仿照的最多的只有一点!那就是弹幕,现在也越来越的人喜欢上了弹幕,甚至有人常说,‘正经人谁看视频啊,我是来看弹幕的????’,下面看下它...
  • 说到高薪职业,想必很职场朋友都会想到程序员,程序员的工资究竟有高呢?其实现在网络发展的这么快,工资也很透明了,都说程序员这份工作是既能赚钱又有工作保障的金饭碗,这份高薪职业真的是让很多人都为之心动...
  • 把问题转化为一个或个单目标分类问题,或是回归问题。2)算法适应。修改学习算法使得能直接处理multilabel的数据。问题转化方法 dubbed PTx法。包括PT1 对有标签的数据随机选取一个标签 PT2 直接把标签数大于1...
  • 线程设计模式

    千次阅读 2012-04-09 20:42:49
    线程设计模式: 1.Single Threaded Execution Pattern  [同一时刻只允许一个线程操作]    比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。  总结:在个线程同时要访问的方法上...
  • 在Unity中使用个相机 - 及其重要性

    千次阅读 2019-08-09 15:57:58
    根据我的观察,很Unity 用户统并没有掌握该如何在一个单一场景中使用个Unity的摄像机,他们对这个概念缺乏一些了解。 “如果我只是想从一个角度看这个场景,为什么我需要使用个摄像机?”这个问题初听上去很有...
  • 如何挣更钱呢?提高你的编程艺术!

    千次阅读 多人点赞 2019-01-21 21:00:00
    如何挣更钱呢?和领导喝几杯酒,恐怕行不通。行得通的只有一条路——提高编程艺术! 现在有两名程序员,王三和他哥王二,他们要实现相同功能的程序。王三的代码冗长、复杂难懂、性能低下;王二的代码逻辑清晰、...
  • 制作USB系统启动盘

    千次阅读 2018-05-02 09:43:50
    制作USB系统启动盘【背景】 现在的操作系统更新越来越频繁了,...【想法】 把U盘格式化为可启动的盘,这个网上介绍的比较,什么量产、HP U盘格式化工具,我觉得都不太好用,这个最好用,哈!~~ 如下:MultiBootIS
  • Asp.Net Mvc 使用WebUploader 图片上传

    千次阅读 2016-07-26 23:33:01
     最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是一次只能传一张。由于现在 项目用的是MVC...去网上一搜索,这么多。在众多的插件中我被百度的WebUploader吸
  • 这是笔者历时三周左右总结的所有java线程中的知识点,只要是线程的问题这里都可以看到,笔者使用通俗易懂的语言介绍了各个场景,以及他们实现的原理,希望对路过的你有所帮助。
  • idea分布式模块开发

    千次阅读 2018-06-04 16:20:14
    maven,IDEA模块项目,啊,快要疯了,好吧,又是一个笔记好吧,根据记忆一步一步试吧,实在不行,继续折腾;我这里用的是mac版的IDEA,不过和windows版的弄法是一样的,只是有一些按键的位置不同而已(后来发现好像...
  • 漫谈程序员系列:看看你离优秀有

    万次阅读 多人点赞 2014-10-21 08:56:33
    想到哪里喷哪里,不会掩饰,我打星际争霸时最喜欢的是口水虫,编上个七八队,喔,喷的那个叫壮观,瞬间平地变湖泊……现在社会上有些资源被某些谋取私利的官、商占据了,所以产生了很问题。就比方说驾校,为什么...
  • ListView下拉刷新及上拉更两种状态

    千次阅读 2013-06-17 16:03:34
     很应用都会用到ListView,当然如果是iOS就会用UITableViewController,这两个控件在不同的OS上,功能是一样的,只是有些细微的不同(iOS的UITableViewController支持静态与动态两种),不过,大多数应用都用的是...
  • 韩都衣舍的老板就制定了这么一个规则,他给每个小组(3个人)10万期初资金,小组拿这些钱去进货然后开始卖,假如这个小组这次的销售额是20万,那么他们下次就有20* 0.7=14万块钱去进货,老板拿走20* 0.3=6万块钱的抽...
  • 这周我终于见识了传说中的测试的威力1.工作总结 上周把UI画好,这周周一调接口,填充... 好吧我手一抖打了个0,但是对于伪处女座的我10个也很啊! 我怀着”我倒要看看你是什么gui“的心情打开了wiki。结果第一个b
  • 国产ERP和国外差距到底有

    万次阅读 热门讨论 2009-08-31 13:27:00
    应用在各行各业的每个角落,要把这么多应用都移植到新平台上,所需时间与人力不敢想象。但是 SAP 又不得不这么做。   这就产生了一个尴尬的事情。 SAP 力推 NetWeaver ,但是 NetWeaver 上又没有多少可用的...
  • 在tableview上展示张图片,在加载的过程中,图片过多时,加载几张图片就崩溃了。内存溢出 为什么会出现这种情况 这个原因其实很明显,SDWebImage产生的图片缓存过多,造成APP内存溢出,崩溃了。 查了一些资料...
  • 你改了这么多!好歹改一下包名啊! 再看他们官方发的一条微博。 再多说一句……我笨……这个浏览器我用不来…… 崇才和sunshine合作这个我知道以后我就去翻了他们微博…找到了那个anhui48(我就想到了大AKB...
  • Android之解决太大太图片造成的oom

    千次阅读 2015-03-23 10:10:12
    在最近做的工程中发现加载的图片太或图片过大时经常出现OOM问题,找网上资料也提供了很方法,但自己感觉有点乱,特此,今天在不同型号的三款安卓手机上做了测试,因为有效果也有结果,今天小马就做个详细的总结...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,059
精华内容 11,623
关键字:

哇这么多