Sheet 1
Knowledge
  web
    HTML
      HTML5
        audio
        video
        drag and drop
        more input type
        more elements
          section
          article
          footer
          header
        localstorage
        websocket
        canvas
    CSS3
      transition
      trnansaction
      border-radius
      rgba
      flex
      box-shadow
      svg
    CORS
      Nginx proxy
      Server add headers
    CDN
      Reduce request amount
      Reduce server network traffic
      Speed up load
    JWT Token
      expire
    Websocket
      Pusher
      Socket.IO
  Devops
    AWS
      EC2
      EC2 container
      Cloudfront
      S3
      RDS
    CI
      Jenkins
      Gitlab CI
      Travis
    Docker
      Rancher
      Kubernetes
        Pod
        Node
        Service
          ClusterIP (default)
          NodePort （ access by port）
          LoadBalancer (external ip)
          ExternalName dns
        Deployment
        Replica Set
        Service rolling update
      Solve the environment issue. it works on my machine.
    Everything is code
    CD
      Capistrano
      Ansible
      Puppet
    IP
      Private IP Addresses
        10.0.0.0 – 10.255.255.255
        172.16.0.0 – 172.31.255.255
        192.168.0.0 – 192.168.255.255
    HA
      LB - haproxy
      Keepalived -- vrrp
        Nginx + Keepalived
      Heartbeat
  Java
    Java GC
      GC types
        Serial GC
        Parallel GC
        CMS GC
        G1 GC
      Object type
        Young generation - minor GC
        Old generation - full GC
      System.gc()
    JVM
      Method Area
        Class name, Constant, static Constant, Class object
      Heap
        Object instance, array
          young generation
          Old generation
      VM stack
        local variable
        dynamic links
        operation stacks
      Native method stack
      program counter
    Spring
      Spring boot
        Rest controller
        Jpa template
        Spring scheduler
        Annotation bean
      Spring cloud
        Consol
        Zuul
        Cloud config
        Spring cloud zookeeper( discovery and configuration)
      Spring ecurity
    ORM
      Hibernate
        validation
      JPA
        Sprint jpa tempalte
      Mybatis
    Build
      Gradle
      Maven
        XML
    Swagger
  Ruby
    Ruby on Rails
      ORM
        Active record
        Mongoid
      Websocket
      Assets pipeline
      Rails console
    Sintra
    Background jobs
      Resque
        Single threaded process
      Delayed Job
        Single process
      Sidekiq
        Redis and multiple threaded process
    Test
      Unit Test
        Mini Test
        RSpec
      Browser Test
        Capybara
        Cucumber
      Mock
        Mocha
    Auth
      OmniAuth
      Devise
    Web Server
      Thin
      Unicorn
      Puma
      Passenger
      Pow
    Language
      yield
      lambda
      respond_to
      send
      block {} do end
        Block is not object
        use yield pass block
      Proc
        Proc is object
        greeting = Proc.new { puts "hello, world" } greeting.call
      Module
        Can't be new
        include
        can't extend
    Code analysis
      Rubocop
    GC
      Minor GC
      Major GC
      GC.stat
  JavaScript
    ES 6/ES 2015
      Arrow function
      Class
      Template String
      Destructing
      Default + Rest + Spread parameters
      Let/ Const
      Modules
      Map / Set
      Promise
      Enhanced Object Literals
    Node.js
      Npm
      Yarn
      Express
    This
      Refers who calls
    Closure
    Frameworks
      Ionic
      Angular
      Vue.js
        Dump component
        Server
      Backbone
      React.js
      Flux/ Redux
        State
        Store
          Reducer
        Action
        Dispatch
    Use promise to avoid nested callbacks.
  Agile
    Retrospective
    Interation meething
    Showcase
    Code review
    Pair programing
  Application
    Search
      ElasticSearch
        Logstash
        Kibana
    APM
      Newrelic
      Pinpoint
    Monitor
      Bosun
      Prometheus
    API
      Restful /Representational State Transfer
        Easy to cache
        every url represent a resource
        methods
          GET
          POST
          PUT
          DELETE
      GraphQL
        Can define fields you want
    Log and Error
      Sentry
  Database
    Relation
      Mysql
      Postgres
      Microsoft SQL Server
      Oracle
      Sqlite
    NoSql
      Monodb
      Redis
      Hbase
      Cassendra
    SQL
  Message Queue
    Rabbitmq
    activeMQ
    Redis
  Linux
    Ssh
    Iptable
    Cron job
    ps aux
    tail
    nohup
    df -h
    free
  Software Design
HTML5
Designed to be usable by all Open Web developers, this reference page links to numerous resources about HTML5 technologies, classified into several groups based on their function.
Semantics: allowing you to describe more precisely what your content is.
Connectivity: allowing you to communicate with the server in new and innovative ways.
Offline and storage: allowing webpages to store data on the client-side locally and operate offline more efficiently.
Multimedia: making video and audio first-class citizens in the Open Web.
2D/3D graphics and effects: allowing a much more diverse range of presentation options.
Performance and integration: providing greater speed optimization and better usage of computer hardware.
Device access: allowing for the usage of various input and output devices.
Styling: letting authors write more sophisticated themes.
Java GC
HotSpot 目前有三种可用的回收器: Serial GC, Parallel GC 和 Concurrent Mark-Sweep(CMS GC)，回收类型分为mirror GC 和 major GC(也叫做Full GC)，minor GC针对young generation，major GC针对 old generation。
尽量避免 full gc, it takes longer time. (minor gc, majar gc)
GC 是清理堆内存，
JVM:
system.gc()
https://github.com/lukehoban/es6features#enhanced-object-literals
Closures are functions that refer to independent (free) variables (variables that are used locally, but defined in an enclosing scope). In other words, these functions 'remember' the environment in which they were created.
function makeFunc() {
var name = 'Mozilla';
function displayName() {
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
myFunc();
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
组件应尽可能无状态化
这也被称为 Smart Component 和 Dumb Component 之间的选择，组件库开发应尽可能做成 Dumb Component。这一点和传统的 jQuery 类普遍使用命令式语法做组件开发有很大不同。如写一个 Dialog，jQuery 组件一般会提供 dialog.show(), dialog.hide() 方法。但 Redux 要求显示或隐藏应该被当作一个 props，由外部传入来控制。Redux 比 Flux 更严格要求 Store 作为数据来源的惟一性，所以之前能用的组件现在发现直接不能用了。