分类: Uncategorized

  • 如何设计参数,防止新人掉坑里

    最近遇到2个非常真实的案例,一个参数控制2种不同的业务,虽然业务有所关联,但是严格的来讲,又属于两种不同的业务,导致花费了不少时间去梳理与配置。这让我不得不思考一下如何设计参数防止新人踩坑。真实的案例,真实的感受。

    案例一 开始时间 结束时间

    2个业务A、B都有开始时间与结束时间,业务场景一【开始时间X,结束时间Y】使用业务A,其他时间使用业务B,业务场景二【开始时间X,结束时间Y】使用业务B,其他时间使用业务A。

    如果设计参数的时候,仅设计2个参数开始时间与结束时间,还允许出现参数配置中出现开始时间大小结束时间的配置方式,的确,2个参数满足了业务配置。这块参数配置就像是人为挖了一个坑,一个简单的配置,变成了一个烧脑的配置。

    做为新人来讲,做梦也难以猜到一个配置影响2个业务,还能配置成开始时间大于结束时间,这都不符合常理。这直接导致花费了许久的时间与读代码,还耗费了技术经理的时间,这对于项目的可维护性来讲,就是毁灭性的打击。

    案例二 一个执行时间2个业务用

    2个业务A、B,一个参数配置,业务A取执行时间的小时部分,每小时执行,业务B取小时与分钟,每天执行一次。比如执行时间18:10,那业务A则每个小时的第10分钟执行,业务B则在每天的18:10分执行。

    看起来好的设计与实现,周末都在为业务排查出了什么问题。不看代码,难以想像一个参数控制了2个业务,还有这么精致的规则在里面。不踩坑都难。如果我们简单的用2个参数分别来控制业务A、B,何坑之有?

    小结

    我们并不是在一个电脑内存只有128k的时代,我们关心的不是参数能不能复用,我们关心项目的可维护性。感觉每个人写代码的思维方式真的是完全不一样,条条大路通罗马。站在可维护性的角度,坚决抵制一参多业务的编程习惯。

     

  • 2019 个人感悟感想 年终小小总结

    有的人,一帆风顺,有的人,注定要经历各种坎坷。每个人会有自己的坎,站在不同的角度,也许是自己难以越过去的,在别人眼里却是简单的事情。无所谓与不幸,真正静下心来想想,什么是自己能hold住的,什么是自己所向往的,技术的生活,有技术的好与不好。

    技术的层次

    技术也分难与易,底层与高层,思维方式大不一样。不同的思维方式,体现在产出的代码。自己在哪个层次?我们是否需要写算法?算法在工作中占多大的比重?在什么位置平衡?这些都是一致需要思考的。

    2019一直在思考这些,思考随着年龄的压力,随着时光的流逝,我们应该如何面对社会给过来的“压力”,如何调整自我的心态?不因物喜,关注自我的能力、成长、适应的环境。

    梦想

    曾经,我们想这样子,想那样子,真正步入社会之后,就会发现,梦想的距离真的很遥远。我们左右不了时代的,左右不了周期的人,也左右不了自己。在挣扎着认清之后,学会坦然去面对生活,不用强求自己达成何等目标,顺其自然。我们知道有的人会成为耀眼的颗星星,但是还是每个颗星星都要耀眼。

    当初的梦想,回过头来看看,也许只是一个笑话,当真正理解之后,也不用过于感慨,要做的事情是,在这年尾的日子里,想想明年,想想如何珍惜。任何时候都不晚,只要愿意改变自己。

    变迁

    就像80后听80后的歌曲,有一种找到感觉。新歌曲,开始天然有种抵触。历史的轮回就是这么一代一代,有如年青时,大人们觉得我们听的都是“垃圾”。这种变迁,说明,真的老了。

     

  • 中国移动福利|免费领取爱奇艺、腾讯视频、优酷Youku、芒果tv会员 中国移动官方Plus会员推广活动 视频会员任性免费领取

    “ Yuema约吗?一起学技术,一起成长!学海无涯 高人带路系列”

    程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点!
    关注公众号,进入学海无涯,高人带路模式!!视频会员再贵,有人带路,轻松搞定

    当月开通,下月生效!

    关注本公众号【Yuema约吗】回复“10086”,获取开通的短信指令

    最近发现中国移动推出了Plus会员服务,参与活动能免费领取视频会员。开通指令可以通过关注本公众号[Yuema约吗]回复“10086”获取。

    活动参与条件:

    月消费最低38元,月消费达不到38元的小伙伴可以转给符合条件的朋友!对于月消超过38元的小伙伴来说,视频会员相当于免费送!

    ​活动亮点:免费领取爱奇艺、腾讯视频、优酷Youku、芒果tv会员​

    开通效果

    【二次确认提醒】尊敬的客户您好,您即将订购北京移动PLUS会员承诺低消12个月合约方案,合约期12个月,下月生效。在合约期内每月最低消费38元,办理Plus会员(18元/月),每月折扣优惠18元!在合约期内,如您取消本合约方案,则需缴付已折扣优惠的PLUS会员价值总额(18元/月)的等额违约金。请在24小时内回复“是”确认订购,回复其他内容或不回复则不订购。会员含通信特权+积分特权+达量特权+数字生活特权+新业务特权+精选福利。【中国移动】

    尊敬的客户,您已成功办理北京移动PLUS会员承诺低消12个月合约方案,合约期12个月,下月生效,在合约期内每月最低消费38元,办理Plus会员(18元/月),每月折扣优惠18元!在合约期内,如您取消本合约方案,则需缴付已折扣优惠的PLUS会员价值总额(18元/月)的等额违约金。【中国移动】

    当月开通,下月生效!

    关注本公众号【Yuema约吗】回复“10086”,获取开通的短信指令

    Plus会员权益官方介绍

    会员规则

    产品名称:北京移动Plus会员

    产品资费:18元/月

    会员权益:

    • 1、北京移动plus会员尊享通信特权、积分特权、达量特权、数字生活、自有特权、精选福利六大类会员特权。 • 2、通信特权:会员每月可在语音、流量、短信中选取一项领取。 • 3、积分特权:根据会员上月话费账单消费金额领取积分,如上月消费不满足最低档位则当月无法领取积分,积分特权每月10日-月末可领取。当用户使用积分兑换礼品时将优先使用领取的积分,积分有效期至2019年12月31日。 • 4、达量特权:会员自三项通信权益中任选一项领取,如上月不满足最低档位则当月无法领取相应通信权益。每月10日-月末可领取。 • 5、数字生活:每月限领一款,可在腾讯视频、爱奇艺、优酷、芒果TV、喜马拉雅、作业帮等选取一款权益领取。所含权益如下:

    ¬ 爱奇艺:包含一个月会员+30GB爱奇艺定向流量,领取成功后您将收到爱奇艺下发的会员权益使用说明短信,请您使用该手机号直接登录爱奇艺网站或手机APP进行使用,享受您的会员权益;如您已经是爱奇艺会员,则会员有效期自动叠加到领取手机账号中;定向流量自领取之日起立即生效,次月最后一天失效,流量不可叠加。一个月会员=领取当月的天数,例如2月15日领取,至3月14日失效。

    ¬ 腾讯视频:包含31天会员+30GB腾讯视频定向流量,如您已经是腾讯视频会员,则会员有效期自动叠加到领取手机账号中;定向流量自领取之日起立即生效,次月最后一天失效,流量不可叠加。腾讯视频会员绑定说明如下: 【1】如您已经将领取的手机号和QQ号/微信号进行过成功绑定,您使用绑定过的QQ号/微信号(您会收到短信告知手机号绑定的具体账号)登录腾讯视频,即可享用您的会员权益。 【2】如您领取腾讯视频会员的手机号未绑定过QQ号/微信号,请登录腾讯视频APP首页后,点击“【个人中心】>【点击登录】> 【我的VIP会员】>【其他会员开通方式】>【手机号内VIP兑换】>输入充值权益的手机号与登录账号进行绑定>【当前手机号资产】领取腾讯视频会员VIP 31天”,领取后即可享用您的会员权益。 ¬ 优酷:包含31天会员+30GB优酷定向流量,领取成功后您将收到优酷下发的成功充值短信,请您尽快打开优酷app登陆账号或使用“手机快捷登陆”获取动态密码享用您的会员权益;如您已经是优酷VIP会员,则会员有效期自动叠加到领取手机账号中;定向流量自领取之日起立即生效,次月最后一天失效,流量不可叠加。 ¬ 芒果TV:包含31天会员+30GB芒果TV定向流量,领取成功后您将收到芒果TV下发的会员权益使用说明短信,请您按网站短信提示尽快登陆网站或手机APP完成注册,享用您的会员权益;如您已经是芒果TV会员,则会员有效期自动叠加到领取手机账号中;定向流量自领取之日起立即生效,次月最后一天失效,流量不可叠加。 ¬ 喜马拉雅:包含喜马拉雅的31天会员,领取成功后您将收到喜马拉雅下发的会员权益使用说明短信,请您按短信提示尽快登陆手机APP完成注册,享用您的会员权益;如您已经是喜马拉雅会员,则会员有效期自动叠加到领取手机账号中。 ¬ 网易云音乐:包含网易云音乐的31天黑胶会员,领取成功后将收到网易云音乐下发的会员权益使用说明短信,请您按短信提示登录相应APP完成注册,享用您的会员权益;如您已经是网易云音乐会员,则会员有效期自动叠加到领取手机账号中。您可登录网易云音乐APP,在账号-会员中心查看更多会员权益内容。 ¬ 作业帮:包含作业帮APP的30天会员,领取成功后将收到作业帮下发的会员权益使用说明短信,请您按短信提示登录相应APP完成注册,享用您的会员权益;如您已经是作业帮会员,则会员有效期自动叠加到领取手机账号中。 ¬ 同花顺:包含同花顺APP的30天会员,领取成功后将收到同花顺下发的会员权益使用说明短信,请您按短信提示登录相应APP完成注册,享用您的会员权益;如您已经是同花顺会员,则会员有效期自动叠加到领取手机账号中。

    • 6、自有特权:会员可领取和留言、和彩云中两项权益,业务领取后长期有效,无需重复领取。所订购Plus会员退订并到期后,领取的自有特权相应到期。

    ¬ 和留言业务是结合智能语音技术,针对被动漏接电话(无法接通,无人接听),主动拒接电话两个用户场景,为用户提供留言转接,漏电提醒和非实时信息交互的基础通信业务。 ¬ 和彩云是中国移动旗下的个人网盘,领取后下载登录和彩云APP尊享2T专属空间、8G超大文件上传、回收站有效期延长至30天、尊贵身份标识、单次转存1000个文件。

    • 7、尊享特权:全球通钻石卡、白金卡客户每月可领取10元话费,领取后立即充入会员手机账户,可用于支付通信类业务。 • 8、精选福利:每月有多种福利任你选择。 • 9、除精选福利外每项特权每自然月仅限领取一次,当月未领取的用户无法补送。 10、本业务费用只能用于主账户话费支付,赠返的话费不可抵扣该业务。更多活动详情请咨询10086

    当月开通,下月生效!

    关注本公众号【Yuema约吗】回复“10086”,获取开通的短信指令

    作者:钟代麒

    出处:http://www.jishudao.com/ 版权归作者所有,转载请注明出处

  • 程序员自制面包攻略|面包机+鸡蛋+水+植物油+白沙糖+食盐+奶粉+面粉+酵母=面包 第一次使用面包机DIY面包 攻略与经验分享

    公司发了一张300元的京东卡,买了一台278元的面包机。收到面包机的时候,有点小小的激动,从来没有做过面包啊!打开说明书,还要鸡蛋、水、植物油、白沙糖、食盐、奶粉、面粉、酵母,立即下单补足所需,开始DIY面包。
    困境
    第一次收到面包机,一头雾水,不知道怎么使用​。怎么消毒,怎么投料、搅拌条怎么安装​?
    第一次使用面包机怎么消毒做准备工作
    拿到面包机后有种不知所措,第一次使用面包机怎么消毒,琢磨不透,问客服,客服说,用油涂抹在烤箱内壁,使用烘烤模式空烤10分钟​。​想想也是,由于就照着做了。
    第一次投料与搅拌条的安装
    面包机有一个投料区域,但是看起来压根没法放下做面粉啊​。赶紧找了几个视频瞅瞅​。搅拌条是插在桶里搅拌棍上的。投料的话,原来直接放在桶里就是,那个面包机上面投料功能是​投别的东西使用的,先不管。按说明书的要求,先放液体、再做固体、再放酵母​。​搜索到的视频,比较任性,没有这种顺序讲究。不过,还是老实按说明书来。
    DIY过程
    ​放料顺序:鸡蛋、水、植物油、白沙糖、食盐、奶粉、面粉、酵母。说明书上有每种食材的ml或g要求,用面包机配置的勺子与量杯就可以完成定量的问题,不用担心搞不清“量”的问题。
    鸡蛋与水一共170ml,直接用量杯,看着刻度就好。有种做化学试验的感觉。
    白沙糖 18g
    奶粉 16g
    盐 3g
    面粉250g
    酵母3g
    配料完成之后,于下的活交给面包机​就好了。做个主食面包,需要3个小时。这个时间真的有​点长。面包机主要3道工序,搅拌、等酵母发酵、​烘烤。这3个小时,面包机搅拌一会儿,停一会儿,搅拌一会儿,停一会儿… …京东那个宝贝描述里写提工作时很安静,像婴儿睡觉似的,真正使用起来,才发现,搅拌的时候,声音还是有点大,小桌子都在微微颤抖​。
    三个小时,没有等到,睡着了,早上起来,惊喜的发现,​面包做好了。
  • JBlog 15年技术大神带小白玩开源项目 梦想从这里启航 一代技术人带新人见证技术变迁

    个人参与JBlog预期收获

    1. 从0学会玩开源
    2. 从.net转java绝佳的练习,15年技术大神带队
    3. 学会Git
    4. 学会自动构建
    5. 学会服务器管理
    6. 学会博客系统架构
    7. 免费的科学上网指导,技术资料不再有国界

    企业参与收获

    将公司团队打造成一支敏捷开发团队,构建全自动的CI系统,理顺研发流程,持续的产品研发交付能力​!​

    正文

    每个开源项目的背后,都有一群为梦想执着的人!从asp+access到.net+mssql到php+mysql到java+mysql,见证技术变迁!用过wordpress,用过blogengine,用过phpcms,用过dedecms,各式各样的建站系统!随着版本的迭代,很多产品越来越成熟,也离梦想越来越远!很多时候,功能越多,并不意味着适合自己。

    对于写博客来说, WordPress是很流行,我也是一名wordpress用户,但是一直磨灭不了自己要写一个自己的博客小系统,感觉自己写的,才能真正满足使用需求,而不是被别人所牵引。

    相信很多人都有这么一个小小梦想,就是拥有一个自己的小系统,亲手打造,能被众多“信徒”所喜爱。很多人没有亲眼见证过一个系统从无到有,从无人使用到广受欢迎的历练过程。或许JBlog是一个小白成长的不错选择。

    JBlog发起人是一位技术大佬,拥有15年工作经验,从大佬的博客上所见,在大数据搜索、游戏开发、自动构建、技术管理、CMS系统架构、网络管理等领域都有深入的研究。

    JBlog将从无到有,从一个简单的小博客逐渐壮大起来!这个过程是漫长的,值得期待了,更是小白的一次历练机会!学会从无到有,从0基础到掌握系统研发、架构、管理!

    关注大佬的公众号,参与JBlog开源项目!

    如何参与?

    JBlog是托管在Github.com上面,对于Github的使用,大佬的公众号都有讲,就不废话了,关注公众号去看吧!

    JBlog部署

    JBlog的文档在大佬的公众号里都有提到,不再赘述!

    代码贡献

    JBlog采用Github管理,代码贡献要通过大佬审核,大胆的fork,push吧!

    关注大佬的公众号:海哥聊技术

  • 用Elasticsearch打造自主站点内搜索引擎 用开源技术成就个性化搜索 带小白玩转es开源搜索 No Code Talk

     

    提到实现搜索功能,很快就想到sql的like模糊查找 ,很快就想到Lucene、Elasticsearch、solr,这些都是要实现搜索功能的关键术语。今天将分享的是采用Elasticsearch打造自主站内搜索引擎的实战经验分享。本文不是讲原理,不是分析es源代码,也不是讲es故事的,仅从应用角度,带小白运用es打造一个简易的搜索引擎。

    一、为什么要使用elasticsearch

    选elasticsearch,冲着开源免费,内置Lucene分词,在主自搜索引擎这块,es还是很有名气的。相比较于关系型数据库,elasticsearch倒排索引,能有更加高效的搜索性能。对于一般企业来讲,重复造轮子的成本太大,使用es算是一个不错的选择。

    二、自主搜索引擎的基本组成

    自主搜索引擎主要由elaticsearch安装、数据同步服务与Elastic Search High level API三大块组成。下面分别介绍这三大块。

    2.0 安装elasticsearch

    安装教程之前有专门写了一个小白序列,可以参考。

    Storm Topology : Elasticsearch & Redis 构建实时性低延时数据统计分析 呈现大数据分析效果

    2.1 数据同步服务 建立es索引

    数据同步服务,即将需要用于搜索展示的数据组装好,同步到es,这个过程是利用es建立索引的过程。服务一般以后台服务的形式定时执行。我们的做法是,针对需要查询的数据,写操作日志,包括增、删、改操作,同步服务定时检查日志,将数据同步到es上。一般是多个表组合好的业务数据,对应es上的一个索引类型。若是同步服务写得好,应该可以将同步服务做成透明的,通过配置,直接将数据对接到es,显然,我们没有造这种“面包机”,我们在mysql里有建立操作日志,专门用于es同步。同步服务会记录操作日志进度,不断同步业务数据到es.基本上,写完这个服务,基本上就完成很大一块工作了,成功的希望就在眼前。

    关注ChinaHadoop公众号,回复"Elasticsearch"可获取一份《创建index和type.txt》

    2.2 使用elasticsearch High Level API查询数据

    准备好了同步服务,有了索引数据,接下来就是使用数据了。在这里推荐使用的是elasticsearch High Level API,为什么不推荐其他api或映射框架?因为我就会这一种方式啊!算是抛砖引玉,想了解更的方式,可以关注公众号,期待下一个回合。

    你可能会见到的包引用,以java为例

    POM包

    <!-- elasticsearch.client -->      <dependency>        <groupId>org.elasticsearch.client</groupId>        <artifactId>elasticsearch-rest-high-level-client</artifactId>        <version>6.7.2</version>      </dependency>
    import org
    .elasticsearch
    .action
    .DocWriteResponse;import org
    .elasticsearch
    .action
    .delete
    .DeleteRequest;import org
    .elasticsearch
    .action
    .delete
    .DeleteResponse;import org
    .elasticsearch
    .action
    .index
    .IndexRequest;import org
    .elasticsearch
    .action
    .index
    .IndexResponse;import org
    .elasticsearch
    .action
    .search
    .SearchRequest;import org
    .elasticsearch
    .action
    .search
    .SearchResponse;import org
    .elasticsearch
    .action
    .update
    .UpdateRequest;import org
    .elasticsearch
    .action
    .update
    .UpdateResponse;import org
    .elasticsearch
    .client
    .RequestOptions;import org
    .elasticsearch
    .client
    .RestHighLevelClient;import org
    .elasticsearch
    .common
    .unit
    .TimeValue;import org
    .elasticsearch
    .common
    .xcontent
    .XContentType;import org
    .elasticsearch
    .index
    .query
    .BoolQueryBuilder;import org
    .elasticsearch
    .index
    .query
    .QueryBuilders;import org
    .elasticsearch
    .search
    .SearchHit;import org
    .elasticsearch
    .search
    .builder
    .SearchSourceBuilder;import org
    .elasticsearch
    .search
    .sort
    .FieldSortBuilder;import org
    .elasticsearch
    .search
    .sort
    .SortOrder;

    其他语言的就不帖了,可以到官方站点寻找。感觉官方还是有所保留就是。使用Elasticsearch High Level写查询,相比较于sql,会有一种强烈的不适感,应该有现成的工具可以将sql脚本转化为elasticsearch High level对应的查询代码吧,在这里简单晒一下查询代码的一点神态。

    BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();boolBuilder.must(QueryBuilders.termsQuery("title", “ChinaHadoop”));boolBuilder.must(QueryBuilders.termsQuery("content","公众号"))

    不要太惊讶,就是这么晦涩与不爽的节奏!写习惯的sql,再来写这种“奇葩”的查询代码,是不是有种“生无可恋”的感受?不用太担心,关注ChinaHadoop公众号,回复"Elasticsearch"可获取一份小白 demo,初始化High Level API Client,定位index,type,多种查询条件代码,覆盖常见查询场景,完全不用烧脑,享受ChinaHadoop干货经验,快速打造自己的搜索引擎!

    本文从应用的角度介绍了如何运用Elaticsearch搭建自主的搜索引擎解决方案,从环境安装、索引建立、同步索引数据,到使用Elastic High Level API进行数据查询,覆盖了一个简易自主搜索引擎的全生命周期,小白可参考本文实现一个自主搜索引擎,遇到问题可回复ChinaHadoop,得到指导与帮助。

    关注ChinaHadoop 走进大数据实战