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

上一篇:《.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. 网站被k到可以使用关键词搜索到首页优化总结

    从今年二月份,刚过完年回到公司,大约一周多过后,网站就被不知名黑客攻击,然后又因为网站标题关键词堆砌导致网站被降权,从此首页不在有我的网站的踪迹,有的只是其他页面的信息,因为刚开始接触SEO,对这一块 ...

  2. java集合常见面试题

    1. Array和ArrayList的区别,什么时候更合适用Array a)      Array是数组,可以容纳基本类型和对象,而ArrayList是集合,只能容纳对象 b)      Array是 ...

  3. AI - 深度学习之美十四章-概念摘要(1~7)

    原文链接:https://yq.aliyun.com/topic/111 本文是对原文内容中部分概念的摘取记录,可能有轻微改动,但不影响原文表达. 01 - 一入侯门"深"似海,深 ...

  4. 网络层和arp协议

    1:arp协议功能:获取mac地址 ----------------------在同一个局域网:发送端mac  接收端mac(FF:FF:FF:FF:FF:FF:FF) 源IP  目标IP  数据 - ...

  5. vue的混合mixins学习

    mixins   混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式.   混合对象可以包含任意组件选项.   当组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选 ...

  6. 当代前端应该怎么写这个hello world?

    前言 大概16年的时候我们队react进行了简单的学习:从DOM操作看Vue&React的前端组件化,顺带补齐React的demo,当时我们只是站在框架角度在学习,随着近几年前端的变化,想写个 ...

  7. SLAM+语音机器人DIY系列:(三)感知与大脑——1.ydlidar-x4激光雷达

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  8. Perl多线程(1):解释器线程的特性

    线程简介 线程(thread)是轻量级进程,和进程一样,都能独立.并行运行,也由父线程创建,并由父线程所拥有,线程也有线程ID作为线程的唯一标识符,也需要等待线程执行完毕后收集它们的退出状态(比如使用 ...

  9. c# String ,String[] 和 List<String>之间的转换

    C#对字符串进行处理时,经常需要进行String,String[]和List<String>之间的转换 本文分析一下它们的差异和转换 一. 1. String > String[] ...

  10. MVC,EF 小小封装

    1.项目中经常要用到 EF,有时候大多数的增删改查都是重复性的东西,本次封装就是为了快速开发,期间没有考虑到架构上的各种思想,就感觉到欠缺点什么东西所以这次将这些拉出来,有存在问题的话还请各位多多指导 ...