<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    I want to fly higher
    programming Explorer
    posts - 114,comments - 263,trackbacks - 0

    Java基礎技術體系

    • Java7,Java8,Java9
      • coin/invokedynamic/g1/nio2/fork-join/
      • Lambda/interface-static-default/function/stream/Nashorn/time
      • Jigsaw/jshell(REPL)/JMH benchmark/進程api/jsonapi/
    • OpenJDK
      • 源代碼-最好的代碼參考
    • Java內存模型/并發/多線程
      • 內存模型
        • 計算機系統#緩存一致性
          • 每個處理器有自己的高速緩存,他們又共享同一主內存;當多個處理器都涉及同一塊主內存區域時,將可能導致各自的緩存數據不一致,那同步到主內存時以誰的緩存數據為準呢
        • 在特定的操作協議下,對特定的內存或者高速緩存進行讀寫訪問的過程抽象
        • 指令重排序
        • Java內存模型-主內存與工作內存(每條線程有自己的工作內存)
          • 線程的工作內存中保存了被該線程使用到的變量的主內存副本拷貝
          • 線程對變量的所有操作都必須在工作內存中進行,而不能直接讀寫主內存的變量
          • 不同的線程之間之間也無法直接訪問對方工作內存的變量
          • 線程間變量的傳遞均需要通過主內存來完成
          • lock/unlock/read/load/use/assign/store/write-每一種操作都是原子的,不可再分的(注意double/long)
        • volatile
          • 保證可見性
          • 禁止指令重排序優化-內存屏障
        • 先行發生原則
      • 工作竊取算法(Fork/Join)
      • 原子性、可見性、有序性(如果在本線程內觀察,所有操作都是有序的;如果在一個線程中觀察另一個線程,所有操作都是無序的)

    工作竊取(work-stealing)算法是指某個線程從其他隊列里竊取任務來執行。
    那么為什么需要使用工作竊取算法呢?假如我們需要做一個比較大的任務,我們可以把這個任務分割為若干互不依賴的子任務,為了減少線程間的競爭,于是把這些子任務分別放到不同的隊列里,并為每個隊列創建一個單獨的線程來執行隊列里的任務,線程和隊列一一對應,比如A線程負責處理A隊列里的任務。但是有的線程會先把自己隊列里的任務干完,而其他線程對應的隊列里還有任務等待處理。干完活的線程與其等著,不如去幫其他線程干活,于是它就去其他線程的隊列里竊取一個任務來執行。而在這時它們會訪問同一個隊列,所以為了減少竊取任務線程和被竊取任務線程之間的競爭,通常會使用雙端隊列,被竊取任務線程永遠從雙端隊列的頭部拿任務執行,而竊取任務的線程永遠從雙端隊列的尾部拿任務執行。工作竊取算法的優點是充分利用線程進行并行計算,并減少了線程間的競爭,其缺點是在某些情況下還是存在競爭,比如雙端隊列里只有一個任務時。并且消耗了更多的系統資源,比如創建多個線程和多個雙端隊列。
    

    • JVM
      • 內存區域
      • gc
      • 工具
      • 調優
    • Class/Bytecode/Classloader
      • hotswap
      • 加載、驗證、準備、解析、初始化
      • agent/instrumentation
        • agentmain-jvm啟動后可以通過代理做一些事情
        • Instrumentation#redefineClasses,可以重定義class->而非之前實例替換->動態改變JVM已加載的類(這個很強大)
        • 可通過agentmain獲得Instrumentation,然后利用Instrumentation去redefineClasses
    • 多語言編程
      • invokedynamic/java.lang.invoke

    架構

    • 分布式服務器架構
      • 應用和數據服分離/使用緩存/應用服務器集群/數據庫讀寫分離/反向代理-CDN/分布式文件系統-分布式數據庫系統/NoSql-搜索引擎/業務拆分/分布式服務/
      • 分層
        • 橫向:應用層、服務層、數據層
        • 縱向:將不同的功能和服務分割,模塊化
      • 分布式
        • 將不同的模塊部署在不同的機器上,通過遠程調用協同工作
      • 集群
        • 將多臺服務器部署相同應用構成一個集群,通過負載均衡設備共同對外提供服務
      • 緩存
        • 本地緩存/分布式緩存/CDN/反向代理
      • 異步
      • 冗余
      • 自動化
      • 架構要素
        • 性能、可用性、伸縮性、擴展性、安全
          • 響應時間、并發數、吞吐量、SystemLoad、對象數與線程數、內存使用、cpu使用、io、性能測試、負載測試、壓力測試、穩定性測試
    • mmo游戲服務器架構
      • 分線/分場景
      • 動態的增加或者減少gs
      • 網關可動態的增加或者減少
    • 無縫地圖
      • NODE專注場景,OBJ專注玩家對象,GATE專注網絡
      • 動態負載均衡
      • 很多無縫動態負載均衡的服務端宣稱自己支持無限的人數,但不意味著 MMORPG游戲的人數上限真的可以無限擴充,因為這樣的體系會受制于網絡帶寬和客戶端性能。帶寬決定了同一個區域最大廣播上限,而客戶端性能決定了同一個屏幕到底可以繪制多少個角色

    模式

    • 架構模式
      • 背景-問題-解決方案
      • Layers模式-分層-網絡協議
      • Pipes and Filters-處理數據流
      • Blackboard-一系列獨立的程序攜手合作,致力于處理同一個數據結構
      • Microkernel
      • Broker
      • MVC/PAC
      • Reflection
      • Whole-Part/Master-Slave/Proxy/Command Processor/View Handler/Forwarder-Receiver/Client-Dispatcher-Server/publisher-subscriber/
      • CounterPointer
      • 抽象、封裝、信息隱藏、模塊化、分離關注點、耦合與內聚、充分-完整-簡單、策略與實現分離、接口與實現分離、單個引用點、分而治之
      • 并發:Reactor/Proactor/Acceptor-Connector/Aysnchronous Completion Token/Active Object/Thread-Speific Storage
      • 資源管理:Loopup/Lazy Acquisition/Caching/Pooling/Resouce Lifecycle Manager/
    • 設計模式
      • 23
    • 面向對象設計原則
      • solid
      • 抽象、解耦、開閉

    網絡編程/并發編程

    • bio/nio/nio2
    • netty
    • select/poll/epoll/kqueue/iocp/reactor/proactor
    • java.util.concurrent

    調優

    • cpu、內存、io
    • jvm調優
    • 內存泄露、死循環

    Mysql/NoSql

    • redis
    • mongodb
    • mongodb是一個真正的數據庫而,redis更接近于memcache
    • mongodb是文檔型的非關系型數據庫,其優勢在于查詢功能比較強大,能存儲海量數據
    • nosql也分類型的;redis、memcached這樣的KeyValue天然適合做緩存,相互替代比較容易,優缺點彼此爭論不一;mongo屬于文檔型,介于nosql與關系型數據庫之間,相比其他nosql,具有強大的查詢語句,在一定程度上可以用來存儲海量、需要多條件查詢同時又不需要關系型數據庫特性的“文檔”,反正我用他來存日志

    Linux

    • shell
    • vim
    • grep
    • 分析日志文件/啟動-關閉腳本
    • top、ps、netstat

    開源框架

    • Netty/Disruptor/Vert.x/Kafka/RocketMq/Nginx

    Node.js/Go

    • Go-Goroutine
    • Node.js-事件驅動、非阻塞式I/O

    前沿技術

    • 微服務
    posted on 2016-11-04 11:58 landon 閱讀(2974) 評論(0)  編輯  收藏 所屬分類: ProgramGameServerServerFramework
    主站蜘蛛池模板: 成人精品视频99在线观看免费| 中文字幕无码视频手机免费看| 黄色视屏在线免费播放| 羞羞视频免费观看| 亚洲一区二区三区在线播放| 4399影视免费观看高清直播| 国产亚洲综合一区二区三区| 亚洲va中文字幕无码久久不卡 | 美女露隐私全部免费直播| 亚洲一区二区三区AV无码| 黄页网站在线观看免费高清| 一级毛片免费播放男男| 亚洲专区中文字幕| 久久久亚洲精品蜜桃臀| 成年女人免费视频播放77777| 波霸在线精品视频免费观看| 在线亚洲高清揄拍自拍一品区| 亚洲无人区一区二区三区| 免费人成视频在线| 热re99久久6国产精品免费| 污网站在线观看免费| 亚洲一级免费视频| 亚洲欧洲国产精品香蕉网| 国产裸模视频免费区无码| 国产成人精品久久免费动漫| 男女一进一出抽搐免费视频 | 亚洲精品乱码久久久久久蜜桃图片| 综合亚洲伊人午夜网 | 国产成人精品日本亚洲语音| 久久夜色精品国产噜噜亚洲AV| 亚洲高清成人一区二区三区| 免费看韩国黄a片在线观看| 色欲A∨无码蜜臀AV免费播 | 无码人妻丰满熟妇区免费| 黄网站色视频免费观看45分钟| 亚洲av永久综合在线观看尤物| 亚洲AV人人澡人人爽人人夜夜| 狠狠亚洲婷婷综合色香五月排名 | 亚洲午夜精品一级在线播放放| 精品久久久久久久免费人妻| 久热中文字幕在线精品免费|