机器学习计划

机器学习已经影响了我们生活中的每一个地方, 了解一些机器学习知识, 便于提高竞争力, 避免被机器替代。 下面是我参考咨询了很多大牛之后搜集整理的一些学习资料, 基本都是该领域世界最顶尖的高手亲自授课,以及一些最流行的工具库, 值得学习。

more>>
bezier-curve

什么是贝塞尔曲线

最近做一个动画效果时需要将物体做曲线移动, 本来记得css3里的动画是可以指定beizer curve的, 结果用的时候发现css3的beizer curve只用来做easing timing function。简单来说就是拿来控制动画“非线性”移动,比如越来越快(ease-in), 越来越慢(ease-out),先慢后快再慢(ease-in-out)等, 让动画效果更“灵动”, 避免线性(linear)的死板。

可以看看这两个页面, 有一个直观的感受。

more>>
react系列之isMounted is an Antipattern

用了一年多的React,真是爽的不要不要的, 谁用谁知道, 一般人我不告诉他!

最近用的过程中发现console里面总是出现这样的警告

react.js:20478 Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the Small component.

虽不影响使用, 但是对于一个有代码洁癖的有追求的程序员来说, 怎么受得了呢!

react的error或者warning信息还是写得比较好的, 从上面我们可以看出原因是我们在一个unmounted的component上调用setState方法。分析业务代码, 发现是某个弹窗component需要从server加载数据, 有时候网络慢, 还没有加载出来用户就把弹窗关了, 所以对应的component变成了unmounted, 等到fetch请求成功之后, 再调用setState就warning了。

为了方便分析问题, 我把问题简化了, 同时为了用户直接能在浏览器打开看到效果, 而不用nodejs、npm、babel、webpack、react等一堆东西install半天

more>>
javascript箭头函数

javascript es6 arrow function.

more>>
利用SSH反向通道在本地调试微信公共号

微信公共号现在很火,一些简单的应用,做一个公共号比开发一款app成本要小很多,而且利用朋友圈的转发,相比app去app store里上架等着用户下载,要容易很多。

但是微信公共号的调试有点不方便,必须在微信管理后台配置一个微信能访问到(公网)的url,然后在公共号里输入内容,微信以xml格式转发给这个url,url回复之后微信再将response回复给使用公共号的微信用户。当然微信也提供了调试工具, 可以直接构造数据,方便调试各个接口。 但是依然需要一个公网的url作为接口。于是最原始的开发方式就是,修改代码,上传到server,(如果是有些静态语言还需要重启服务器),然后看是否正常work,如果不行的话,在可能错误的地方打出log,然后又是修改代码,上传server,重启。。。。。就这样,每次改一点点,你都可以泡杯咖啡了,老板就会觉得你很闲。参看为什么搞计算机工作的人总是看上去很清闲

more>>
我的第一个hexo Blog

引用阮老师的话,

喜欢写Blog的人,会经历三个阶段。

第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。
第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。
第三阶段,觉得独立博客的管理太麻烦,最好在保留控制权的前提下,让别人来管,自己只负责写文章。

自己比较懒惰,也就偶尔在OC上写点闲散的笔记,最近觉得还是应该要把自己的知识系统地梳理一下,便决定开一个独立的域名,自己记录Blog。

之前就了解Github Pages,也断断续续用MarkDown写过几篇放着,但是没有用jekyll,或者octpress等串起来,上个月再次想配置好jekyll,结果在mac下始终配置不好(怪我咯)。今天决定一定要配置好,搜集了大量资料(google “jekyll 像黑客一样”),结果意外在http://www.douban.com/group/topic/39939196/的回复中看到“用pelican吧 python的 还有hexo是nodejs的 ”。因为最近刚好在看nodejs,觉得很有兴趣,于是改为尝试hexo

more>>
Java发送邮件

需要在代码里面发邮件是很经常的事情,包括找回密码,通知用户领奖,监控报警等。

在Java里面实现比较简单,Oracle自己提供了JavaMail, 不过API比较底层,用起来不方便,可以自己封装下,也可以直接使用Apache的开源项目Commons Email。 下面的代码,可以以小马哥的名义给自己发邮件,该功能仅用于测试,请谨慎使用,产生的问题,本人概不负责。 /微笑

more>>
一个Java对象到底有多大

经常遇到一个问题,需要在内存里缓存一批数据来提高效率(避免每次都读取DB)。那问题来了,这些对象到底会占用多大内存呢,这直接决定了可以缓存多少条记录,以及上线之后是否会内存不够等问题。

来看几种解决方法。

more>>
Java Concurrency(三)——J.U.C AQS源码解读

java5之后的java.util.concurrent包是世界级并发大师Doug Lea的作品,里面主要实现了

  1. atomic包里Integer/Long对应的原子类,主要基于CAS;
  2. 一些同步子,包括Lock,CountDownLatch,Semaphore,FutureTask等,这些都是基于AbstractQueuedSynchronizer类;
  3. 关于线程执行的Executors类等;
  4. 一些并发的集合类,比如ConcurrentHashMap,ConcurrentLinkedQueue,CopyOnWriteArrayList等。

今天我们主要介绍AbstractQueuedSynchronizer这个可以说是最核心的类,没有之一。整个concurrent包里,基本都直接或间接地用到了这个类。Doug Lea的这篇论文里面讲AQS的实现。

more>>