原创 NIO的幾種模型

Reactor單線程模型: 單個線程完成所有事情包括接收客戶端的TCP連接請求,讀取和寫入套接字數據等。 對於一些小容量應用場景,可以使用單線程模型。但是對於高負載、大併發的應用卻不合適,主要原因如下: 一個NIO線程同時處理

原创 MySql之INSERT INTO…ON DUPLICATE KEY UPDATE詳解

在我們的日常開發中,經常會遇到過這樣的情景:查看某條記錄是否存在,不存在的話創建一條新記錄,存在的話更新某些字段。 你會採用怎麼樣的處理方式呢? $result = mysql_query('select * from xxx

原创 Api GateWay

當你決定將應用作爲一組微服務時,需要決定應用客戶端如何與微服務交互。在單體式程序中,通常只有一組冗餘的或者負載均衡的服務提供點。在微服務 架構中,每一個微服務暴露一組細粒度的服務提供點。在本篇文章中,我們來看它如何影響客戶端到服務

原创 Mysql併發時經典常見的死鎖原因及解決方法

mysql都有什麼鎖 MySQL有三種鎖的級別:頁級、表級、行級。 表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。 行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併

原创 輕鬆理解MYSQL MVCC 實現機制

MVCC簡介 什麼是MVCC MVCC是一種多版本併發控制機制。 MVCC是爲了解決什麼問題? 大多數的MYSQL事務型存儲引擎,如,InnoDB,Falcon以及PBXT都不使用一種簡單的行鎖機制.事實上,他們都和MVCC–多

原创 HTTP1.0 HTTP 1.1 HTTP 2.0主要區別

HTTP1.0 HTTP 1.1主要區別 長連接 HTTP 1.0需要使用keep-alive參數來告知服務器端要建立一個長連接,而HTTP1.1默認支持長連接。 HTTP是基於TCP/IP協議的,創建一個TCP連接是需要經過三次

原创 爲什麼NIO比BIO效率高

NIO比BIO效率高,主要原因是什麼呢? 網上大多給出了兩者的區別,可是具體效率高在哪裏呢。 首先我們看一下各自的特點 BIO: socketServer的accept方法是阻塞的。 當有連接請求時,socketServer

原创 BIO與NIO、AIO的區別

IO的方式通常分爲幾種,同步阻塞的BIO、同步非阻塞的NIO、異步非阻塞的AIO。 BIO 在JDK1.4出來之前,我們建立網絡連接的時候採用BIO模式,需要先在服務端啓動一個ServerSocket,然後在客戶端啓動Socket

原创 Oracle與MySQl對比

併發性 併發性是oltp數據庫最重要的特性,但併發涉及到資源的獲取、共享與鎖定。 mysql:以表級鎖爲主,對資源鎖定的粒度很大,如果一個session對一個表加鎖時間過長,會讓其他session無法更新此表中的數據。 雖然In

原创 Tcp建立連接爲什麼需要三次握手

前言 衆所周知tcp傳輸層協議在建立連接的時候需要三次才能建立起一個真正的可靠連接,可是爲什麼是三次呢,不可以是兩次,四次等等呢,可以自己思考一番,帶着疑問可以看下文。 三次握手 在《計算機網絡》一書中其中有提到, 三次握手

原创 Nginx部署指南

安裝 從Nginx官網下載頁面(http://nginx.org/en/download.html)下載Nginx最新版本(目前是1.5.13版本)安裝包; 解壓後複製到部署目錄。 啓動和停止Nginx Nginx目前只支持命

原创 Mysql的日期存儲字段類型的選擇

在實際開發項目中發現數據庫中得日期項目,有的用datetime,有的用timestamp,有的甚至用int,這之間都有什麼區別呢?什麼場合適用什麼樣的設置呢? 首先看一下各自的特點: int 4個字節存儲,INT的長度是4個字節

原创 Lambda 表達式有何用處?

作者:Sevenvidia 來源:https://www.zhihu.com/question/20125256/answer/324121308 什麼是Lambda? 我們知道,對於一個Java變量,我們可以賦給其一個

原创 nginx代理websocket

配置如下: upstream websocket { server 10.10.10.203:8889; } server { listen 8888; server_na

原创 docker logstash

下載docker鏡像 docker pull docker.elastic.co/logstash/logstash:6.6.2 創建文件夾 (用於容器文件的掛載) mkdir /opt/sns/logstash/config