2018年终总结暨这些年的折腾

  2018马上就要走向尾声了,在这辞旧迎新的日子里适合发表一些感慨,回顾这一年走过的路和这些年的历程,然后展望一下2019年以及往后的时光。
  
  2018年,离开呆了好多年的厦门来到深圳,节奏更快了,竞争也更大了,但是水平也可以提升很快了。一线城市有很多高手可以交流学习,但是你得想好要学什么、怎么去提问,不能问太低级的问题,高手愿意回答你问题也是需要时间的,所以要把问题准备得充分一些具体一点。还有接触新项目先去看文档,到网上找找有没相关的解决方法。希望你能去问google而不是BD,去问Stack Overflow而不是BD,这是在网上看到的一句标语,很有个性,也很好用。
  
  2018学了很多Linux运维的技能,几个命令就能让你提升很多的开发速度;2018学了全球最流行的PHP框架Laravel,还用它搭建了电商系统,包括高性能无限级分类、众筹商品管理、众筹商品下单逻辑、众筹商品结束逻辑、使用分期付款支付订单、计算分期付款逾期费、分期付款订单的退款、给商品增加属性、使用 Elasticsearch 重构商品搜索模块、分面搜索、相似商品查询(类似于亚马逊的『商品推荐』功能)、Elasticsearch 的索引迁移、秒杀商品管理、秒杀商品下单逻辑、秒杀接口性能优化、编写部署脚本、多机部署实现负载均衡等。
  
  2018参与了ERP的制作与实施,感受了它复杂的业务和缜密的逻辑,企业正是需要建立完善的系统才能做大做强走得更远!肯德基麦当劳等那些大型企业哪个没有自己一套健全的系统来支撑她们的成长?把那些流程正规化、系统化、电子化,减少时间成本/提高效率不正是资本寒冬中企业所渴求的吗?
  
  回望这些年的折腾
  
  09 - 10年 第三方博客平台
  
  那时刚从学校出来,还带着一点文艺气息,喜欢发表一点自己的思想,那段时间不定时更新了一些文章,自我感觉有些成就感,可惜后面那个网站改版下线还是怎么的,好像是博客中国,后面账号密码都忘记了。
  
  那时还接触了淘宝店铺,感觉好神奇,居然可以在业余时间通过网上卖东西赚了点小钱,虽然不多但还是很兴奋。年轻气盛想着做点更宏伟的事情就没继续经营了,如果坚持到现在至少也有皇冠了吧?
  
  10 -13年 Zencart、Magento、Wordpress、Drupal、Joomla
  
  那段时间从事外贸行业,通过Zencart、Magento自建站建商城,做好站内优化,在第三方博客、论坛等平台发布外部链接提升排名。还用Wordpress、Drupal、Joomla搭建博客站引流,然后把流量导给商城进行转化。那时候谷歌排名相对比较容易做上去,可是支付通道不是很稳定,账号被冻结,有点心灰意冷。加上一些其他因素后面就转战国内市场了。
  
  13 - 18年 Dedecms、帝国cms、ThinkPHP
  
  机缘巧合进了一家比较大型的集团,从dedecms的改造到帝国cms的深度开发,从移动网页加速器MIP改造到熊掌号搭建,从单站到CI框架多站管理系统,从Excel批量操作到ThinkPHP营销系统的开发,从不算特别酷炫的PPT到逻辑清晰的思维导图制作,从公众平台二次开发到TP后台API开发,从https部署到小程序上线,一路走来,踩了不少坑,也填了很多坑,都记录在这个博客里www.cnblogs.com/ytkah,满满当当地记录了5年3个月,总算有了一点小成就,在465228个开发者博客中排第262位,感谢各位一直以来对我不离不弃的支持,我会继续记录点点滴滴,我们一起成长,一同进步!
  
  展望2019及未来,移动互联网将继续进化,APP还是一个重要的承载体,虽然流量都被全球各大科技公司瓜分,但是守住细分领域自己一亩三分地还是很有必要的,积累用户,做好服务,变现逐步!Webapp可能作为一个衍生品得到广泛发展。它们共同的点是通过API来连接,所以写好接口才是硬道理。
  
  Python的运用。大数据经常被人谈及,数据从何而来?通过各个平台、app、网站数据的收集,分析,过滤,生成报告,这些都可以用python来处理,并且有很多成熟的库可以直接用了。那还不赶紧深入得学习?
  
  AI人工智能。最了解你的以后可能不是你自己或别人,因为机器更懂你!让AI帮你处理问题比你自己做得更好!
  
  Fighting!!!
  
  df = pd.read_csv('https://raw.githubusercontent.com/chrisalbon/war_of_the_five_kings_dataset/master/5kings_battles_v1.csv')
  
  df.head()
  
  name    year    battle_number    attacker_king    defender_king    attacker_1    attacker_2    attacker_3    attacker_4    defender_1    defender_2    defender_3    defender_4    attacker_outcome    battle_type    major_death    major_capture    attacker_size    defender_size    attacker_commander    defender_commander    summer    location    region    note
  
  0    Battle of the Golden Tooth    298    1    Joffrey/Tommen Baratheon    Robb Stark    Lannister    NaN    NaN    NaN    Tully    NaN    NaN    NaN    win    pitched battle    1.0    0.0    15000.0    4000.0    Jaime Lannister    Clement Piper, Vance    1.0    Golden Tooth    The Westerlands    NaN
  
  1    Battle at the Mummer’s Ford    298    2    Joffrey/Tommen Baratheon    Robb Stark    Lannister    NaN    NaN    NaN    Baratheon    NaN    NaN    NaN    win    ambush    1.0    0.0    NaN    120.0    Gregor Clegane    Beric Dondarrion    1.0    Mummer’s Ford    The Riverlands    NaN
  
  2    Battle of Riverrun    298    3    Joffrey/Tommen Baratheon    Robb Stark    Lannister    NaN    NaN    NaN    Tully    NaN    NaN    NaN    win    pitched battle    0.0    1.0    15000.0    10000.0    Jaime Lannister, Andros Brax    Edmure Tully, Tytos Blackwood    1.0    Riverrun    The Riverlands    NaN
  
  3    Battle of the Green Fork    298    4    Robb Stark    Joffrey/Tommen Baratheon    Stark    NaN    NaN    NaN    Lannister    NaN    NaN    NaN    loss    pitched battle    1.0    1.0    18000.0    20000.0    Roose Bolton, Wylis Manderly, Medger Cerwyn, H…    Tywin Lannister, Gregor Clegane, Kevan Lannist…    1.0    Green Fork    The Riverlands    NaN
  
  4    Battle of the Whispering Wood    298    5    Robb Stark    Joffrey/Tommen Baratheon    Stark    Tully    NaN    NaN    Lannister    NaN    NaN    NaN    win    ambush    1.0    1.0    1875.0    6000.0    Robb Stark, Brynden Tully    Jaime Lannister    1.0    Whispering Wood    The Riverlands    NaN
  
  # 创建图形
  
  plt.figure(figsize=(10,8))
  
  # 创建散点图
  
  # 298 年的攻击方大小为 x 轴
  
  plt.scatter(df['attacker_size'][df['year'] == 298],
  
  # 298 年的防守方大小为 y 轴
  
  df['defender_size'][df['year'] == 298],
  
  # 标记
  
  marker='x',
  
  # 颜色
  
  color='b',
  
  # 透明度
  
  alpha=0.7,
  
  # 大小
  
  s = 124,
  
  # 标签
  
  label='Year 298')
  
  # 299 年的攻击方大小为 x 轴
  
  plt.scatter(df['attacker_size'][df['year'] == 299],
  
  # 299 年的防守方大小为 y 轴
  
  df['defender_size'][df['year'] == 299],
  
  # 标记
  
  marker='o',
  
  # 颜色
  
  color='r',
  
  # 透明度
  
  alpha=0.7,
  
  # 大小
  
  s = 124,
  
  # 标签
  
  label='Year 299')
  
  # 300 年的攻击方大小为 x 轴
  
  plt.scatter(df['attacker_size'][df['year'] == 300],
  
  # 300 年的防守方大小为 x 轴
  
  df['defender_size'][df['year'] == 300],
  
  # 标记
  
  marker='^',
  
  # 颜色
  
  color='g',
  
  # 透明度
  
  alpha=0.7,
  
  # 大小
  
  s = 124,
  
  # 标签
  
  label='Year 300')
  
  # 标题
  
  plt.title('Battles Of The War Of The Five Kings')
  
  # y 标签
  
  plt.ylabel('Defender Size')
  
  # x 标签
  
  plt.xlabel('Attacker Size')
  
  # 图例
  
  plt.legend(loc='upper right')
  
  # 设置图形边界
  
  plt.xlim([min(df['attacker_size'])-1000, max(df['attacker_size'])+1000])
  
  plt.ylim([min(df[www.douniu157.com'defender_size'])-1000, max(df['defender_size'])+1000])
  
  MatPlotLib 中的栈式百分比条形图
  
  %matplotlib inline
  
  import pandas as pd
  
  import matplotlib.www.gouyiflb.cn pyplot as plt
  
  raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
  
  'pre_score': [4, 24, 31, 2, 3],
  
  'mid_score': [25, 94, 57, 62, 70],
  
  'post_score': [5, 43, 23, 23, 51]}
  
  df = pd.DataFrame(raw_data, columns = ['first_name', 'pre_score', 'mid_score', 'post_score'])
  
  first_name    pre_score    mid_score    post_score
  
  0    Jason    4    25    5
  
  1    Molly    24    94    43
  
  2    Tina    31    57    23
  
  3    Jake    2    62    23
  
  4    Amy    3    70    51
  
  # 创建带有一个子图的图形
  
  f, ax = plt.subplots(1, figsize=(10,5))
  
  # 将条宽设为 1
  
  bar_width = 1
  
  # 条形左边界的位置
  
  bar_l = [i for i in range(len(df['pre_score']))]
  
  # x 轴刻度的位置(条形的中心是条形标签)
  
  tick_pos = [i+(bar_width/2) for i in bar_l]
  
  # 创建每个参与者的总得分
  
  totals = [i+j+k for i,j,k in zip(df[www.taohuaqing178.com 'pre_score'], df['mid_score'], df['post_score'])]
  
  # 创建每个参与者的 pre_score 和总得分的百分比
  
  pre_rel = [i / j * 100 for  i,j in zip(df['pre_score'], totals)]
  
  # 创建每个参与者的 mid_score 和总得分的百分比
  
  mid_rel = [i / j * 100 for  i,j in zip(df['mid_score'], totals)]
  
  # 创建每个参与者的 post_score 和总得分的百分比
  
  post_rel = [i / j * 100 for  i,j in zip(df['post_score'], totals)]
  
  # 在位置 bar_1 创建条形图
  
  ax.bar(bar_l,
  
  # 使用数据 pre_rel
  
  pre_rel,
  
  # 标签
  
  label='Pre Score',
  
  # 透明度
  
  alpha=0.9,
  
  # 颜色
  
  color='#019600',
  
  # 条形宽度
  
  width=bar_width,
  
  # 边框颜色
  
  edgecolor='white'
  
  )
  
  # 在位置 bar_1 创建条形图
  
  ax.bar(bar_l,
  
  # 使用数据 mid_rel
  
  mid_rel,
  
  # 底部为 pre_rel
  
  bottom=pre_rel,
  
  # 标签
  
  label='Mid Score',
  
  # 透明度
  
  alpha=0.9,
  
  # 颜色
  
  color='#3C5F5A',
  
  # 条形宽度
  
  width=bar_width,
  
  # 边框颜色
  
  edgecolor='white'
  
  )
  
  # Create a bar chart in position bar_1
  
  ax.bar(bar_l,
  
  # 使用数据 post_rel
  
  post_rel,
  
  # 底部为 pre_rel 和 mid_rel
  
  bottom=[i+j for i,j in zip(pre_rel, mid_rel)],
  
  # 标签
  
  label='Post Score',
  
  # 透明度
  
  alpha=0.9,
  
  # 颜色
  
  color='#219AD8',
  
  # 条形宽度
  
  width=bar_width,
  
  # 边框颜色
  
  edgecolor='white'
  
  )
  
  # 将刻度设为 first_name
  
  plt.xticks(tick_pos,yongshiyule178.com df['first_name'])
  
  ax.set_ylabel("Percentage")
  
  ax.set_xlabel("")
  
  # 设置图形边界
  
  plt.xlim([min(tick_www.michenggw.com pos)-bar_width, max(tick_pos)+bar_width])
  
  plt.ylim(-10, 110)
  
  # 旋转轴标签
  
  plt.setp(plt.gca().get_xticklabels(www.dasheng178.com), rotation=45, horizontalalignment='right')
  
  # 展示绘图
  
  plt.show()

猜你喜欢

转载自blog.csdn.net/li123128/article/details/85345854