作者归档:月小升

关于 月小升

正在创业

优秀程序员的10个好习惯,你有几个

在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个条目成为你的习惯,那么你才能真正算得上是优秀程序员。 1. 学无止境。就算是你有了10年以上的程序员经历,你也得要使劲地学习,因为你在计算机这个充满一创造力的领域,每天都会有很多很多的新事物出现。你需要跟上时代的步伐。你需要去了解新的程序语言,以及了解正在发展中的程序语言,以及一些编程框架。还需要去阅读一些业内的新闻,并到一些热门的社区去参与在线的讨论,这样你才能明白和了解整个软件开发的趋势。在国内,一些著名的社区例如:CSDN,ITPUB,CHINAUINX等等,在国外,建议你经常上一上digg.com去看看各种BLOG的聚合。 2. 掌握多种语言。程序语言总是有其最适合的领域。当你面对需要解决的问题时,你需要找到一个最适合的语言来解决这些问题。比如,如果你需要性能,可能C/C++是首选,如果你需要跨平台,可能Java是首选,如果你要写一个Web上的开发程序,那么PHP,ASP,Ajax,JSP可能会是你的选择,如果你要处理一些文本并和别的应用交互,可能Perl, Python会是最好的。所以,花一些时间去探索一下其它你并熟悉的程序语言,能让你的眼界变宽,因为你被武装得更好,你思考问题也就更为全面,这对于自己和项目都会有好的帮助。 3. 理性面对不同的操作系统或技术。程序员们总是有自己心目中无可比拟的技术和操作系统,有的人喜欢Ubuntu,有的人喜欢Debian,还有的人喜欢Windows,以及FreeBSD,MacOSX或Solaris等等。只有一部分优秀的程序员明白不同操作系统的优势和长处和短处,这样,在系统选型的时候,才能做到真正的客观和公正,而不会让情绪影响到自己。同样,语言也是一样,有太多的程序员总是喜欢纠缠于语言的对比,如:Java和Perl。哪个刚刚出道的程序员没有争论去类似的话题呢?比如VC++和Delphi等等。争论这些东西只能表明自己的肤浅和浮燥。优秀的程序并不会执着于这些,而是能够理性的分析和理心地面对,从而才能客观地做出正确的选择。 4. 别把自己框在单一的开发环境中。 再一次,正如上面所述,每个程序员都有自己忠爱的工具和技术,有的喜欢老的(比如我就喜欢Vi编辑程序),而有的喜欢新的比如gedit或是Emacs等。有的喜欢使用像VC++一样的图形界面的调试器,而我更喜欢GDB命令行方面的调式器。等等等等。程序员在使用什么样的工具上的争论还少吗?到处都是啊。使用什么样的工具本来无所谓,只要你能更好更快地达到你的目的。但是有一点是优秀程序员都应该了解的——那就是应该去尝试一下别的工作环境。没有比较,你永远不知道谁好谁不好,你也永远不知道你所不知道的。 5. 使用版本管理工具管理你的代码。千万不要告诉我你不知道源码的版本管理,如果你的团队开发的源代码并没有版本管理系统,那么我要告诉你,你的软件开发还处于石器时代。赶快使用一个版式本管理工具吧。CVS 是一个看上去平淡无奇的版本工具,但它是被使用最广的版本管理系统,Subversion 是CVS的一个升级版,其正在开始接管CVS的领地。Git 又是一个不同的版本管理工具。还有Visual SourceSafe等。使用什么样的版本管理工具依赖于你的团队的大小和地理分布,你也许正在使用最有效率或最没有效率的工具来管理你的源代码。但一个优秀的程序员总是会使用一款源码版本管理工具来管理自己的代码。如果你要我推荐一个,我推荐你使用开源的git。 6. 是一个优秀的团队成员。 除非你喜欢独奏,除非你是孤胆英雄。但我想告诉你,今天,可能没有一个成熟的软件是你一个人能做的到的,你可能是你团队中最牛的大拿,但这并不意味着你就是好的团队成员。你的能力只有放到一个团队中才能施展开来。你在和你的团队成员交流中有礼貌吗?你是否经常和他们沟通,并且大家都喜欢和你在一起讨论问题?想一想一个足球队吧,你是这个队中好的成员吗?当别人看到你在场上的跑动时,当别人看到你的传球和接球和抢断时,你的团员成员能因为你的动作受到鼓舞吗? 7. 把你的工作变成文档。 这一条目当然包括了在代码中写注释,但那还仅仅不够,你还需要做得更多。有良好的注释风格的代码是一个文档的基础,他能够让你和你的团队容易的明白你的意图和想法。写下文档,并不仅仅是怕我们忘了当时的想法,而且还是一种团队的离线交流的方法,更是一种知识传递的方法。记录下你所知道的一切会是一个好的习惯。因为,我相信你不希望别人总是在你最忙的时候来打断你问问题,或是你在休假的时候接到公司的电话来询问你问题。而你自己如果老是守着自己的东西,其结果只可能是让你自己长时间地深陷在这块东西内,而你就更本不可以去做更多的事情。包括向上的晋升。你可能以为“教会徒弟能饿死师父”,但我告诉你,你的保守会让你失去更多更好的东西,请你相信我,我绝不是在这里耸人听闻。 8. 注意备份和安全。 可能你觉得这是一个“废话”,你已明白了备份的重要性。但是,我还是要在这里提出,丢失东西是我们人生中的一部份,你总是会丢东西,这点你永远无法避免。比如:你的笔记本电脑被人偷了,你的硬盘损坏了,你的电脑中病毒了,你的系统被人入侵了,甚至整个大楼被烧了,等等,等等。所以,做好备份工作是非常非常重要的事情,硬盘是不可信的,所以定期的刻录光盘或是磁带可能会是一个好的方法,网络也是不可信的,所以小心病毒和黑客,不但使用软件方面的安全策略,你更需要一个健全的管理制度。此外,尽量的让你的数据放在不同的地方,并做好定期(每日,每周,每月)的备份策略。 9. 设计要足够灵活。 可能你的需求只会要求你实现一个死的东西,但是,你作为一个优秀的程序,你应该随时在思考这个死的东西是否可以有灵活的一面,比如把一些参数变成可以配置的,把一些公用的东西形成你的函数库以便以后重用,是否提供插件方面的功能?你的模块是否要以像积木一样随意组合?如果要有修改的话,你的设计是否能够马上应付?当然,灵活的设计可能并不是要你去重新发明轮子,你应该尽可能是使用标准化的东西。所谓灵话的设计就是要让让考虑更多需求之外的东西,把需求中这一类的问题都考虑到,而不是只处理需求中所说的那一特定的东西。比如说,需要需要的屏幕分辨率是800×600,那么你的设计能否灵活于其他的分辨率?程序设计总是需要我们去处理不同的环境,以及未来的趋势。我们需要用动态的眼光去思考问题,而不是刻舟求剑。也许有一天,你今天写的程序就要移植到别的环境中去,那个时候你就能真正明白什么是灵活的设计了。 10. 不要搬起石头砸自己的脚。程序员总是有一种不好的习惯,那就是总是想赶快地完成自己手上的工作。但情况却往往事已愿违。越是想做得快,就越是容易出问题,越是想做得快,就越是容易遗漏问题,最终,程序改过来改过去,按下葫芦起了瓢,最后花费的时间和精力反而更多。欲速而不达。优秀程序员的习惯是前面多花一些时间多作一些调查,试验一下不同的解决方案,如果时间允许,一个好的习惯是,每4个小时的编程,需要一个小时的休息,然后又是4个小时的编码。当然,这因人而异,但其目的就是让你时常回头看看,让你想一想这样三个问题:1)是否这么做是对的?2)是否这么做考虑到了所有的情况?3)是否有更好的方法?想好了再说,时常回头看看走过的路,时常总结一下过去事,会对你有很大的帮助。 以上是十条优秀程序员的习惯或行为规范,希望其可以对你有所帮助。

发表在 科技精品 | 标签为 , | 一条评论

redis操作命令大全

一、key pattern 查询相应的key   (1)redis允许模糊查询key  有3个通配符 *、?、[]   (2)randomkey:返回随机key     (3)type key:返回key存储的类型   (4)exists key:判断某个key是否存在   (5)del key:删除key   (6)rename key newkey:改名   (7)renamenx key newkey:如果newkey不存在则修改成功   (8)move key 1:将key移动到1数据库   (9)ttl key:查询key的生命周期(秒)   (10)expire key 整数值:设置key的生命周期以秒为单位   (11)pexpire key 整数值:设置key的生命周期以毫秒为单位   (12)pttl key:查询key 的生命周期(毫秒)   (13)perisist key:把指定key设置为永久有效 二、字符串类型的操作   (1)set key value [ex 秒数] … 继续阅读

发表在 数据库 | 标签为 , , | 留下评论

redis使用场景

不要放冷数据 首先,对于冷数据,无论大小,都不建议放在 Redis 中。Redis 数据要全部放在内存中,资源宝贵,把冷数据放在其中实在是一种浪费,冷数据放在普通的存储比如关系数据库中就好了。 冷数据的例子 1.网站的文章 2.几万年不变的数据 放热数据 尤其是写频繁的热数据,如果量比较小,是最适合放到 Redis 中的。 热数据的例子 1.用户注册数 2.文章阅读量 3.热度排行榜 4.用户订阅量 一个游戏,用户分数存储结构     ZADD leaderboard <score> <username> 例子:一个在线游戏你会需要 1.前100名高手榜 ZREVRANGE leaderboard 0 99 2.某一个用户在游戏的实时排名 ZRANK leaderboard <username> 3.强大的计数功能 这要感谢INCRBY和其他相似命令。 INCR user: EXPIRE     user: … 继续阅读

发表在 JAVA, 数据库 | 标签为 , | 留下评论

redis可视化数据查看工具

Redis是一个超精简的基于内存的键值对数据库(key-value),一般对并发有一定要求的应用都用其储存session,乃至整个数据库。不过它公自带一个最小化的命令行式的数据库管理工具,有时侯使用起来并不方便。不过Github上面已经有了很多图形化的管理工具,而且都针对REDIS做了一些优化,如自动折叠带schema的key等。 Redis Desktop Manager 一款基于Qt5的跨平台Redis桌面管理软件 几款开源的图形化Redis客户端管理软件推荐 支持: Windows 7+, Mac OS X 10.10+, Ubuntu 14+ 特点: C++ 编写,响应迅速,性能好。但不支持数据库备份与恢复。 项目地址: https://github.com/uglide/RedisDesktopManager 软件安装包下载地址 https://redisdesktop.com/download Redis Client 几款开源的图形化Redis客户端管理软件推荐 项目简介: 使用Java编写,功能丰富,缺点是性能稍差,网络不好时,会不时断线。 项目地址: https://github.com/caoxinyu/RedisClient Redis Studio 几款开源的图形化Redis客户端管理软件推荐 项目简介: 又一个C++编写的redis管理工具,仅支持windows平台,支持xp操作系统。 项目地址: https://github.com/cinience/RedisStudio ps: 后面两款为国人开发。

发表在 JAVA | 标签为 , | 留下评论

mac 下安装redis

本来以为mac下安装redis要折腾一会,完全出乎意外。和linux下基本一样 curl -O http://download.redis.io/releases/redis-3.2.4.tar.gz tar xzf redis-3.2.4.tar.gz $ cd redis-3.2.4 $ make test $ make install 搞定 启动redis $ src/redis-server 客户端 mac启动另外一个控制台 $ src/redis-cli redis> set foo bar OK redis> get foo "bar" 有点惊喜。上几天mac下安装PHP的图形处理,折腾了 好几天 redis的密码配置

发表在 JAVA, 数据库 | 标签为 , | 留下评论

脑洞:分类如何赚钱的

   偶然看到一个网友,说自己参加了各种网络赚钱的培训大会,然后呢,自己就选择了一个方向叫分类。 我属于平时比较忙,所以没什么时间去做一些想做的事情--借口。 分类的三大入口:58,赶集,百姓 大家都认为分类信息东西便宜,我们正好可以利用大部分人的信息差来赚钱 分类信息流量最大的三大版块是“招聘”、“女找男”、“二手产品” 二手产品转让,其中电子产品占了50%, 分类信息做手机千万不要太贵,一部手机利润在100-500元左右就可以了,   如果在分类卖产品,第一大忌千万不要先上货,一定要测试可以了,在上货,这样对于我们做分类没有资金压力。 分类的快速效应   如果你很浮躁,想在3天之内就能达到日赚几百,那么做分类吧。   因为没有收入,新人很难静下心来做项目,所以我通常建议新手从分类开始。   很多人专职做分类的,日收入在2000元以上。如果你在全国做置顶推广的话,一天赚5000很轻松,这时候主要就看你的客服话术了。像我们群里有几个做分类卖小米2的,每天都能赚2000以上。   一. 什么是分类   分类是分类信息的简称,就是通过分类信息网站销售产品或服务。   主流的分类信息网站有百姓网、58同城、赶集网。   全国包括地区性的分类网站有几百家,直接百度搜索“分类信息网址大全”……   二. 做分类的准备工作   注册帐号、学会发帖、准备几个客服QQ或手机,这些最基本的东西就不细说了。   三. 选择产品   选择产品的原则就是“别人卖什么,我就卖什么”。   以深圳百姓网为例:   打开http://shenzhen.baixing.com/ ,点击“物品交易”下的“二手手机”类目      在这里我们可以看到别人都在卖什么手机,包括品牌、型号、甚至价格区间      几乎清一色的苹果和三星,如果说不赚钱,你信吗?!   四. 如何找货源   我们已经决定卖苹果手机了。那么货源从哪里来呢?   货源分为网上和线下两种:   网上的有阿里巴巴、慧聪网、淘宝,还可以以关键字搜索查找货源QQ群,代发货平台……   线下的就是当地手机城等。   批发价一般比市场价低几百元,根据手机的档次有所不同。   比如小米2,我们群里有人提供货源,价格是1300元,你可以卖1600、1800都可以,这样一单就能赚300、500元了。   不要急着进货,先发帖测试下,如果有3、5个人咨询的话,你再少量进货,这样很快就能全部卖出去。 … 继续阅读

发表在 互联网观察 | 标签为 , , | 留下评论

如何防止自己忘记密码

密码,一个心痛,一个折腾 我曾经遇到的情况 1.银行密码忘记了。我去银行,带上一堆证件 2.支付宝账户密码忘记了。花了半小时没找回 3.邮箱密码忘记了 如何避免自己的密码忘记 1.密码诗歌策略 自己来首喜欢的诗歌,比如 床前明月光,地上鞋两双。 好了,开始 不重要的账户直接 cqmygdsxls 够乱吧,不过好记 加强版 我要防止不同的网站密码相同 那么这样 比如 百度的 bdcqmygdsxls sina的 sinacqmyg sohu 的 sohucqmyg 现在国内黑客常用手段之一,获取一个id的密码后,到各大网站尝试是否能登录,所以还是要保证重要帐号密码不一样就ok了。 2.网站名字和自己生日组合 比如 百度 我的生日是1013 baidu1013 sina sina1013 加强版本 带有特殊字符会加强密码 sina!0!3 我将1换成了叹号 如果你的生日没有1 只有2 那么换成@ 就是2头上的东西 … 继续阅读

发表在 互联网观察, 吐槽 | 标签为 , , | 2 条评论

mysql 的 MyISAM和 InnoDB的区别

  一、文件存储     MyISAM   每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。   .frm文件存储表定义。   数据文件的扩展名为.MYD (MYData)。   索引文件的扩展名是.MYI (MYIndex)。   InnoDB   基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB   二、事务支持   MyISAM   MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持   InnoDB   InnoDB提供事务支持事务,外部键等高级数据库功能   三、mysql执行方式   MyISAM   如果执行大量的SELECT,MyISAM是更好的选择   InnoDB   1.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表   2.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。   3.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用   四、AUTO_INCREMENT   每表一个AUTO_INCREMEN列的内部处理。   MyISAM为INSERT和UPDATE操作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。   AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置   对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引   更好和更快的auto_increment处理   INNODB   如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。   自动增长计数器仅被存储在主内存中,而不是存在磁盘上   关于该计算器的算法实现,参考AUTO_INCREMENT列在InnoDB里如何工作 … 继续阅读

发表在 数据库 | 标签为 , , | 留下评论

CTO是什么角色

CTO(首席技术官)英文Chief Technology Officer,即企业内负责技术的最高负责人。 有时CTO和CIO(Chief Information Officer信息管理最高负责人)是同一个人(尤其在软件公司),有时CTO归于比较精通科学技术的CIO手下。 一般CTO会有以下责任:长期技术方向(战略性)、短期技术方向(战术性)、管理研究对公司经营活动和营利的影响、公司中使用的软件等等。 CTO和CIO,技术总监的差别: CTO一般在IT企业中才有,是分管技术的副总,非IT企业大都设置总工程师、技术副总这样的职位,例如在IT企业中,负责软件开发的副总也叫CTO,而技术总监则不是CTO,总监只是部门的负责人,副总是企业的负责人。 CIO是分管IT的副总,例如分管企业IT管理的副总,或者分管信息化的副总。 国外的CTO主要职责是设计公司的未来,其更多的工作应该是前瞻性的,也就是制定下一代产品的策略和进行研究工作,属于技术战略的重要执行者。 CTO 不应该只局限于技术,应该让团队成员的技术劳动体现出应有的价值,把技术和产品变成一家公司的发动机。 国内的小公司的CTO 顶着CTO的名头干着技术组长兼打杂的事情,包括但不限于招聘,裁员,拉网线,查机房,装系统,重装系统,讨论方案,推翻方案,谈合同,签合同,哄手下,骂手下,被老板哄,挨老板骂,确定进度,拖延进度,重新定进度,取悦老板,揣摩老板,写画饼邮件,写辞职邮件等工作,工作内容一般不包括编码。 其中最重要的是招聘。 招聘的伎俩 因为一个小公司想请一个有名号有能力的程序员,是拿不出任何与之匹配的物质条件的。所以在精神方面能够给一个技术人员最高的title也就是CTO了,一般这样的公司的CTO做的还是低阶码农的事,所以应该叫首席代码官儿。 CTO和总监的股份地位衡量 衡量一个O和一个总监的唯一标准是股份配比,低于3%的,叫什么O都白搭。 给 boss 一点建议,我们常常短期内高估技术的价值,长期来看低估技术的价值。 一般CTO会有以下责任: 长期技术方向(战略性) 短期技术方向(战术性) 管理研究对公司经营活动和营利的影响 技术总监的责任相对简单: 搞好技术就好了。 补充一点知识 CEO(Chief executive officer)首席执行官 类似总经理、总裁,是企业的法人代表。 COO(Chief operating officer)首席运营官 类似常务总经理 CTO(Chief technology … 继续阅读

发表在 互联网观察 | 标签为 , , | 留下评论

微信的小程序干啥用?

1.微信不是App的分发入口,但是成了App的网址导航站。 2.微信一家独大的格局越来越明显,等于通吃了中小App,对于生态系统的繁荣,是个未知数; 3.具体包含:界面、视图、内容、按钮、导航、多媒体、位置、数据、网络、重力感应 4.滴滴是最典型的小程序,微信支付也是 5.冲击了部分移动开发人员,HTML5技术人才增加了用武之地 6.短期无法撼动大APP市场。 7.小程序依赖社交传播 8.微信随时封杀你的小程序,犹如当年的服务号 9.微信做了个平台,大家来耍大刀 10.除非你有有价值的产品,否则创业依然没戏,邀请机制首先给那些有良好产品的公司。等于一次服务升级。你弱,你别来。   张小龙在朋友圈里这样解释道:小程序是一种不需要下载安装即可使用的应用,它实现了应用「触手可及」的梦想,用户扫一扫或搜一下即可打开应用。也体现了「用完即走」的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。   这次微信推出的小程序,最大的亮点在于微信提供了丰富的框架组件和API接口供开发者调用,具体包含:界面、视图、内容、按钮、导航、多媒体、位置、数据、网络、重力感应等。在这些组件和接口的帮助下,建立在微信上的小程序在运行能力和流畅度上面便可以保持和Native APP一样的体验。   做渠道运营的同学可能会清楚,过去两年里,APP推广的成本是呈翻倍增长的。有些垂类APP的CPA单价高达500元以上,对于创业者来说没有太多钱可以去砸在流量上,但流量往往是控制产品生死的命脉,每年有50%的新APP死在流量问题上。   但2016年的微信来做这件事,天时地利人和似乎都占据了,既有海量的用户,强大的用户粘性,足够长的用户使用时长,是国内目前最称得上SuperAPP的应用了。   高频场景的服务天然具备独立发展成生态的潜力,可以自成一套生态体系,比如服务领域的滴滴出行。即使是在微信、支付宝、微博中都开辟了打车入口,这些也只是增量,自家APP还是主要的阵地。   而对于低频、非刚需场景的长尾服务而言,由于需求通常较为简单,使用频次低,撑不起来一个独立APP,寄生在巨头身上是最好的选择。 微信小程序,等于开放了另一个移动的入口 至于到底未来应该首选开发APP还是开发“小应用”,现在真给不出答案。作为开发者,你需要关心的是你的用户和你的产品需要什么样的场景来完成从0到第1次,以及到100次的缠绵。如果这个过程你想明白,想透了,你也就不会有犹豫了。

发表在 互联网观察 | 标签为 , | 留下评论