刚开始写博客不足之处望大家多多指点,少一些质疑多一些帮助,我们就能成为朋友。

上一篇:《.NET程序员我是如何通过一个产品在2年内买车买房》有很多同为程序员的小伙伴们给我留言,从整体的留言中我能看到有很多迷茫的小伙伴活在上班拿工资的夹缝中,首先能挣到外快固然是好,如没有挣到还是努力把自己的事做好,成功并非都是顺理成章而是偶然,能通过从事技术这份工作抓住机会才是你职场中应该学的,比如:你的每一任老板都是一个商机,他是怎么做的你也可以这样做,为什么不能,应该是执行力不够,上一篇我也讲到过我通过自媒体平台连续每天发文长达2-3个月,其中这个过程就是一个漫长而又头疼的事,首先每天的文章该怎么写就单单这一件事都足以让你放弃100次。

 本文大纲:

  • 1.我热衷技术但我更倾向于技术变现
  • 2.代码可以copy发现商机的方式也可以copy
  • 3.具体执行细节
  • 4.我的第二款产品现在正在这样做,不信你搜搜看

1.我热衷技术但我更倾向于技术变现

要想技术变现就必须广而告之,你做的再好没人知道,卖不出去也是一堆废代码,因为没有价值(钱),这里并非否认技术没价值,而是要让技术变的更有价值,让自己更有动力去学习技术,然后通过技术变现,通过技术在遇到实际情况的时候去解决,让问题去驱动学习,而不是学而不用,最后沦落成为纸上谈兵。

以下是我在解决投票系统慢、卡上面关于数据库的一些优化,有可能你并没有遇到过该问题,但是我遇到了并且总结成经验告诉你,这就叫经验分享,我把他整理成测试案例使你更能看明白。

一:引擎的选择

  • 为自己创造问题环境并去解决。如需要测试MySql表大数据量情况下如何优化,首先第一步你会说我这里没有这么多数据如何去优化,我可以告诉你如何快速生成百万千万数据量的最简单方法。
  • insert into `user`(phone,`name`,headimg,sex,addtime) select phone,`name`,headimg,sex,now() from `user`

    以上sql语句是快速复制插入表数据,意思是从user表中查询数据并插入到user表中(也可以是另外一张表如user2)。如数据表中起始只有1条数据的话,那么执行17次13万多数据、19次52多万数据、20次100多万数据、21次200多万数据、22次400多万数据,每执行一次就在上一次基础上翻倍。以上sql语句是最简单不过的一条语句,不用写(来给自己增加能让你放弃创造问题环境难度的语句)什么循环之类的语句,你只用按鼠标左键执行个10几次即可。

  • select substring(MD5(RAND()),1,20);#随机生成20位字符串
    select CEIL(RAND()*100000000000);#随机生成最多11位数字
  • 以上查询小技巧奉上,可能你会用到
  • 其中数据库表引擎是:MyISAM 和 InnoDB 查询对比,user(MyISAM引擎)和user3(InnoDB引擎)表数据都是400多万,且数据都是一模一样
  • 1.使用count(*)方式查询差距对比
    
    #引擎是:InnoDB
    select count(*) from `user3`;
    平均查询时间:1.6秒 ~ 1.8秒 #引擎是:MyISAM
    select count(*) from `user`;
    平均查询时间:0.000秒 ~ 0.001秒
    2.使用count(*) 和 count(id)方式查询差距对比
    
    #引擎是:InnoDB
    select COUNT(*) from `user3`;
    select COUNT(id) from `user3`;
    #其中count(*)的方式要快于count(id)差不多0.1秒 ~ 0.5秒 #引擎是:MyISAM
    select COUNT(*) from `user`;
    select COUNT(id) from `user`;
    #其中count(*)和count(id)差距在0.000秒 ~ 0.001秒
    3.使用like方式查询差距对比
    #引擎是:InnoDB
    select * from `user3` WHERE `name` like 'b981%';
    #平均查询时间:2.8秒 ~ 3.068秒 #引擎是:MyISAM
    select * from `user` WHERE `name` like 'b981%';
    #平均查询时间:0.959秒
    4.使用带分页方式查询差距对比
    
    #引擎是:InnoDB
    select * from `user3` WHERE `name` like 'b981%' limit 1,10;
    #平均查询时间:0.5秒 #引擎是:MyISAM
    select * from `user` WHERE `name` like 'b981%' limit 1,10;
    #平均查询时间:0.1秒

    以下是InnoDB和MyISAM引擎的使用场景说明

  • InnoDB存储(默认引擎):对事务要求高,保存的数据都是重要数据,可以考虑使用InnoDB引擎,比如订单表,账号表

  • MyISAM存储:如表对事务要求不高,同时以查询和添加为主,可以考虑使用MyISAM引擎

二:数据表分区

知识点说明:投票系统使用的HASH方式进行分区的,使用HASH方式好处:当插入数据时,根据id把数据平均散到各个分区上,由于文件小,效率高,更新操作变得更快。

其他更多的分区可以查看http://tool.oschina.net/uploads/apidocs/mysql-5.1-zh/partitioning.html#partitioning-types

1.创建带有分区的表,最后一句代码就是创建HASH分区:PARTITION BY HASH (id) PARTITIONS 10
CREATE TABLE `user4` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`phone` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY HASH (id) PARTITIONS 10;

重点:要使用分区表必须要在创建表的时候就设置好

问题:但是表最开始没有创建分区该怎么办?第一步:将表结构代码导出,在最后加上分区代码PARTITION BY HASH (id) PARTITIONS 10,创建一个新临时表。第二步:使用查询并插入的语句进行同步数据到新表,同步完成将临时表表名改成正式表名,将原来表删除或者换一个新名字。当你在插入数据的时候就自动给你进行了分区。分区表建立好之后下面我们就进行查询分析对比。

将数据同步到分区表(user4)

insert into `user4`(phone,`name`,headimg,sex,addtime) select phone,`name`,headimg,sex,now() from `user`
#执行插入时间只有12.526秒,如果未分区插入需要30多秒

1.使用count(*)方式查询差距对比,加了HASH分区直接秒杀前两者
#引擎是:InnoDB
select count(*) from `user3`;
#平均查询时间:1.6秒 ~ 1.8秒 #引擎是:MyISAM
select count(*) from `user`;
#平均查询时间:0.000秒 ~ 0.001秒 #引擎是:MyISAM+HASH分区
select COUNT(*) from `user4`
#平均查询时间:0.000秒
2.使用count(*) 和 count(id)方式查询差距对比,加了HASH分区直接秒杀前两者
#引擎是:MyISAM+HASH分区
select COUNT(*) from `user4`;
select COUNT(id) from `user4`;
#平均查询时间:0.000秒

3.使用like方式查询差距对比,没有加HASH分区的表要快加了HASH分区表那么一丢丢,你知道为什么吗,留言回复?
#引擎是:MyISAM
select * from `user` WHERE `name` like 'b981%';
#平均查询时间:0.827秒 #引擎是:MyISAM+HASH分区
select * from `user4` WHERE `name` like 'b981%';
#平均查询时间:0.976秒

以上两个知识点解决了投票系统很大一部分慢卡的问题,其实也没有什么高大上,还是那一句话:适合自己的才是最好的。当系统更流畅客户用的更顺心你向他要点钱都是分分钟的事。

2.代码可以copy发现商机的方式也可以copy

首先你要弄清楚你所做的产品卖点在哪里?如何找到卖点(商机)?

方式一:我是通过做定制开发,找我开发同一个产品的人多,就代表这个事有价值。

方式二:你所任职的公司在做什么事,你们公司所做的这款产品就是卖点(这里不说大厂如BAT),把公司这款产品翻版一份min版本调整价格,通过在网上发软文(你完全可以去网上找,上一篇文章也说过怎么找),起码至少2-3个月的软文努力才有效果,如果没有这个毅力那么最开始就不要想着去翻版。

方式三:例如:微擎的应用商店、猪八戒的排名前几的服务商点进去看他们什么产品卖的好,这些都是商机,挑选一个在你能力范围内的产品进行翻版。

3.具体执行细节

  • 通过以上方式找准商机然后就开始开发产品
  • 建立产品宣传的官网让你的产品更正式,官网主要用于宣传产品的卖点和介绍产品的使用。
  • 搜集友商的软文进行修改,主要修改成自己的产品信息,然后每天定时发送
  • 每天将新闻发布到:官网、搜狐自媒体平台(推荐)、豆瓣、简书、贴吧
  • 每天在友商软文下进行软留言(带有自己产品的关键字)
  • 如有客户找上门要有一套说法,每次将客户单独拉入一个群聊,群内最好除了客户之外要有2人(你+售前也可以自己多个号),你想想只有2个人的不叫群聊那叫尬聊
  • 准备好合同,如入住了平台,平台方则担任担保。

4.我的第二款产品现在正在这样做,不信你搜搜看

你可以试着搜一搜:玩具租赁,就第一页里面的内容(除了头部百度的广告外)你都点进去要么是我的产品宣传官网,要么是友商的软文(底下肯定有我的产品留言)。

.NET和PHP程序员如何通过技术快速变现的更多相关文章

  1. PHP程序员如何突破技术瓶颈

    身边有几个做PHP开发的朋友,也接触到不少的PHP工程师,他们常疑虑自己将来在技术上的成长与发展,我常给他们一些建议,希望他们能破突自己,有更好的发展. 先明确我所指的PHP工程题,是指毕业工作后,主 ...

  2. “五年经验”年薪50W分享Java程序员掌握什么技术才不会被淘汰

    在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase.Hadoop.MQ.Netty.SpringCloud等等 . 一些独角兽公司以 ...

  3. 高级程序员与CTO技术总监首席架构师

    一.高级程序员 如果你是一个刚刚创业的公司,公司没有专职产品经理和项目经理,你就是公司的产品经理,你如果对你现在的开发员能力不满,那么你只需要的是一个高级程序员. 你定义功能.你做计划推进和管理,他可 ...

  4. HR:“最喜欢阿里出来的程序员了,技术又好又耐艹!” 我:???

    面试造火箭,进厂拧螺丝?真的是这样吗? 缘起 估计不少同学都是被标题吸引进来的.事先声明,这句话不是我虚构的,而是我实实在在从同事的口中听到的,而且还不止一次. 当时的场景就是很正常的交谈,别人也并没 ...

  5. javac选项以递归方式编译给定目录下的所有Java文件 - IT屋-程序员软件开发技术分享社区

    http://www.it1352.com/539276.html #Linux $ find -name“* .java”> sources.txt $ javac @ sources.txt ...

  6. 程序猿尤其是.NET程序员所需要注意的网站资源

    我觉得一个程序员 需要 对 技术 和 行业 两方面同时具有极大热情和注意力才能让自己在一个新的台阶. 有些程序员就是对技术有着极大的热情但是行业完全不注意,这样我感觉只能成为一个专家,并不能让自己真正 ...

  7. 数据分析:.Net程序员该如何选择?

    上文我介绍了用.Net实现的拉勾爬虫,可全站采集,其中.Net和C#(不区分)的数据爬取开始的早,全国主要城市都有一定数量的分布,加上有了近期其他相似技术类别的数据进行横向比较,可以得到比较合理的推测 ...

  8. php大力力 [033节] 随便看看:PHP程序员学习C++

    php大力力 [033节] 随便看看:PHP程序员学习C++ 2014 兄弟连高洛峰 PHP教程14.1.7 在PHP脚本中操作MySQL数据库4 观看 - 56.com http://www.med ...

  9. 程序员书单_HTML篇

    JavaScript权威指南(第六版) http://download.csdn.net/detail/shenzhq1980/9137733 改善JavaScript程序的188个建议 http:/ ...

随机推荐

  1. android学习笔记--Scanner

    private static List<String> getxxxx(Context ctx) { try { Scanner sc = new Scanner( ctx.openFil ...

  2. 【Android Studio安装部署系列】四十二、Android Studio使用Eclipse中的keystore为App签名

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 从eclipse迁移到AndroidStudio,要用原Eclipse的签名文件,这样才能保证转到AndroidStudio后更新的 ...

  3. Locust性能测试学习总结

    Locust学习总结分享 简介: Locust是一个用于可扩展的,分布式的,性能测试的,开源的,用Python编写框架/工具,它非常容易使用,也非常好学.它的主要思想就是模拟一群用户将访问你的网站.每 ...

  4. C#委托、事件、线程

    这是几个简单的例子,但是实际的开发中委托还还只在反射时用到过,事件的话只自己做了一次,并且还是特意去用的 ,实际上可以不用.线程的话,因为需要,所以用的会多点,这里主要是WS上的线程. 委托 在前面的 ...

  5. Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取

    很多网页的信息都是通过异步加载的,本文就举例讨论下此类网页的抓取. <工作细胞>最近比较火,bilibili 上目前的短评已经有17000多条. 先看分析下页面 右边 li 标签中的就是短 ...

  6. 面向对象之七大基本原则(javaScript)

    1. 前言 2. 单一职责 3. 开闭原则 4. 里氏替换 5. 依赖倒置 6. 接口隔离 7. 迪米特法则 8. 组合聚合复用原则 9. 总结 1. 前言 面向对象编程有自己的特性与原则,如果对于面 ...

  7. Flutter 即学即用系列博客——03 在旧有项目引入 Flutter

    前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...

  8. foreach(Element elem in selections.Elements)无法实现

    因为版本问题 原:foreach(Element elem in selections.Elements){ } 现: ElementSet selections = new ElementSet() ...

  9. JS添加或删除HTML dom元素的方法实例分析

    本文实例讲述了JS代码添加或删除HTML dom元素的方法.分享给大家供大家参考,具体如下: 创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一 ...

  10. vue element-ui 文件上传

    <el-upload class="upload-demo" action="" :before-remove="beforeRemove&qu ...