博客 / 列表

flydean - netty系列之:channel和channelGroup

簡介 channel是netty中數據傳輸和數據處理的渠道,也是netty程序中不可或缺的一環。在netty中channel是一個接口,針對不同的數據類型或者協議channel會有具體的不同實現。 雖然channel很重要,但是在代碼中確實很神秘,基本上我們很少能夠看到直接使用channel的情況,那麼事實真的如此嗎?和channel相關的ChannelGroup又有什麼作用呢?一起來看看吧。 神

channel , netty , JAVA , nio

flydean - netty系列之:好馬配好鞍,為channel選擇配套的selector

簡介 我們知道netty的基礎是channel和在channel之上的selector,當然作為一個nio框架,channel和selector不僅僅是netty的基礎,也是所有nio實現的基礎。 同樣的,我們知道netty很多種不同的協議,這些協議都是在channel上進行通訊的,那麼對於不同的協議來説,使用的channel和selector會有所不同嗎? 帶着這個疑問,我們一起來深入探究一下吧

channel , selector , netty , JAVA

flydean - dart系列之:你的地盤你做主,使用Extension對類進行擴展

簡介 一般情況要擴展一個類,需要繼承這個類,這是在大多數java或者其他面嚮對象語言中要做的事情。 但是有些時候擴展類並不是特別好用,首先在有些語言中,有些類是禁止被擴展的。即使可以被擴展,但是擴展之後的類是一個新的類,而不是原來的父類,所以在使用的過程中可能會出現一些類型轉換的問題。 那麼在dart中是怎麼解決這個問題的呢? dart中extension的使用 dart在2.7之後,引入了ext

dart , 擴展 , flutter

flydean - dart系列之:創建Library package

簡介 在dart系統中,有pubspec.yaml文件的應用就可以被成為一個package。而Libray package是一類特殊的package,這種包可以被其他的項目所依賴. 也就是通常所説的庫。 如果你也想你寫的dart程序可以上傳到pub.dev上,或者提供給別人使用,則來看看這篇文章吧。 Library package的結構 先看下library package的結構: app3 ├─

dart , package.json , flutter

flydean - linux系列之: 你知道查看文件空間的兩種方法嗎?

簡介 linux系統中查看文件空間大小應該是一個非常常見的命令了,今天給大家介紹linux系統中查看文件空間的兩種方法和在使用中可能會遇到的奇怪問題. 為什麼會有兩種方法呢? 因為我們可以使用du命令來看空間的佔用情況,也可以使用df來查看空間的剩餘情況,就像一個硬幣的正反兩面,怎麼用着舒服怎麼來. 話不多説,開始我們今天精彩的內容吧. du命令 查看空間大小最直接的命令就是du了, 這個命令的全

linux編程 , linux運維 , Linux

flydean - netty系列之:分離websocket處理器

簡介 在上一篇文章中,我們使用了netty構建了可以處理websocket協議的服務器,在這個服務器中,我們構建了特製的handler用來處理HTTP或者websocket請求。 在一個handler中處理兩種不同的請求,對於某些有代碼潔癖的人可能忍受不了。那麼,有沒有可能將普通的HTTP請求和websocket請求使用不同的handler來進行處理呢?答案是肯定的。 netty的消息處理 我們知

websocket , netty , JAVA , 響應式

flydean - HTTP系列之:HTTP中的cookies

簡介 如果小夥伴最近有訪問國外的一些標準網站的話,可能經常會彈出一個對話框,説是本網站為了更好的體驗和跟蹤,需要訪問你的cookies,問你同意不同意,對於這種比較文明的做法,我一般是點同意的。 但是轉頭一想,為什麼訪問國內的網站從來沒有彈出過這個提示呢?這是一個值得深思的問題,或許當你看完這篇文章之後,就有了答案。 cookies的作用 那麼cookies有什麼作用呢?HTTP cookies就

HTTP , cookies , 網絡傳輸協議

flydean - netty系列之:Event、Handler和Pipeline

簡介 上一節我們講解了netty中的Channel,知道了channel是事件處理器和外部聯通的橋樑。今天本文將會詳細講解netty的剩下幾個非常總要的部分Event、Handler和PipeLine。 ChannelPipeline pipeLine是連接Channel和handler的橋樑,它實際上是一個filter的實現,用於控制其中handler的處理方式。 當一個channel被創建的時

eventloop , event , netty , JAVA

flydean - netty系列之:netty初探

簡介 我們常用瀏覽器來訪問web頁面得到相關的信息,通常來説使用的都是HTTP或者HTTPS協議,這些協議的本質上都是IO,客户端的請求就是In,服務器的返回就是Out。但是在目前的協議框架中,並不能完全滿足我們所有的需求。比如使用HTTP下載大文件,可能需要長連接等待等。 我們也知道IO方式有多種多樣的,包括同步IO,異步IO,阻塞IO和非阻塞IO等。不同的IO方式其性能也是不同的,而ne

netty , JAVA , reactivex , 響應式 , nio

flydean - 架構之:REST和HATEOAS

簡介 我們知道REST是一種架構方式,它只是指定了六種需要遵循的基本原則,但是它指定的原則都比較寬泛,我們需要一種更加具象的約束條件來指導我們的編碼。這就是HATEOAS。 HATEOAS簡介 REST的英文全稱是REpresentational State Transfer,表示的是狀態的轉移。而HATEOAS的全稱是Hypertext As The Engine Of Application

rest , 架構設計 , 架構 , 架構模式

flydean - 開發小技巧之:unicode的排序和正則匹配

簡介 我們知道計算機最先興起是在國外,出於當時計算機性能的考慮和外國常用字符的考慮,最開始計算機使用的是ASCII,ASCII編碼能夠表示的字符畢竟是有限的,隨着計算機的發展和全世界範圍的流行,需要更多的能夠表示世界各地字符的編碼方式,這種編碼方式就是unicode。 當然在unicode出現之前,各個國家或者地區根據本國的字符需求都制定過本國的編碼標準,當然這些編碼標準都是本地化的,不適用於全世

排序 , 正則表達式 , unicode

flydean - ES9的新特性:異步遍歷Async iteration

簡介 在ES6中,引入了同步iteration的概念,隨着ES8中的Async操作符的引用,是不是可以在一異步操作中進行遍歷操作呢? 今天要給大家講一講ES9中的異步遍歷的新特性Async iteration。 異步遍歷 在講解異步遍歷之前,我們先回想一下ES6中的同步遍歷。 根據ES6的定義,iteration主要由三部分組成: Iterable 先看下Iterable的定義: inter

es8 , ecmascript-6 , es7 , es10 , Javascript

flydean - ECMAScript 2018(ES9)新特性簡介

簡介 ES9是ECMA協會在2018年6月發行的一個版本,因為是ECMAScript的第九個版本,所以也稱為ES9. 今天我們講解一下ES9的新特性。 ES9引入了3大特性和2個小的特性,我們接下來一一講解。 異步遍歷 在ES6中,引入了同步iteration的概念,隨着ES8中的Async操作符的引用,在ES9中引入了異步遍歷的新特性Async iteration。 具體的內容可以參考我之前的文

es8 , ecmascript-6 , es7 , es10 , ecmascript

flydean - ECMAScript 2016(ES7)新特性簡介

簡介 自從ES6(ECMAScript 2015)在2015年發佈以來,ECMAScript以每年一個版本的速度持續向前發展。到現在已經是ECMAScript 2020了。 每個版本都有一些新的特性,今天本文將會講解ES7中帶來的新特性。 TC39和ECMAScript 先講一下ECMA的歷史,ECMA在於1960年4月27日成立的製造商協會,其目的是統一標準,方便在不同的製造商之間移植。於是這個

ecmascript-6 , es7 , ecmascript , Javascript

flydean - javascript中的模塊系統

簡介 在很久以前,js只是簡單的作為瀏覽器的交互操作而存在,一般都是非常短小的腳本,所以都是獨立存在的。 但是隨着現代瀏覽器的發展,特別是nodejs的出現,js可以做的事情變得越來越多也越來越複雜。於是我們就需要模塊系統來組織不同用途的腳本,進行邏輯的區分和引用。 今天將會給大家介紹一下js中的模塊系統。 CommonJS和Nodejs CommonJS是由Mozilla公司在2009年1月份提

node.js , 模塊化 , javascript專題系列 , Javascript

flydean - 深入理解nodejs的HTTP處理流程

簡介 我們已經知道如何使用nodejs搭建一個HTTP服務,今天我們會詳細的介紹nodejs中的HTTP處理流程,從而對nodejs的HTTP進行深入的理解。 使用nodejs創建HTTP服務 使用nodejs創建HTTP服務很簡單,nodejs提供了專門的HTTP模塊,我們可以使用其中的createServer方法來輕鬆創建HTTP服務: const http = require('http')

node.js , nodejs源碼學習 , HTTP , 異步編程 , nodejs-express

flydean - 不要在nodejs中阻塞event loop

簡介 我們知道event loop是nodejs中事件處理的基礎,event loop中主要運行的初始化和callback事件。除了event loop之外,nodejs中還有Worker Pool用來處理一些耗時的操作,比如I/O操作。 nodejs高效運行的秘訣就是使用異步IO從而可以使用少量的線程來處理大量的客户端請求。 而同時,因為使用了少量的線程,所以我們在編寫nodejs程序的時候,一

eventloop , node.js , 事件監聽 , 事件 , event

flydean - 在nodejs中創建child process

簡介 nodejs的main event loop是單線程的,nodejs本身也維護着Worker Pool用來處理一些耗時的操作,我們還可以通過使用nodejs提供的worker_threads來手動創建新的線程來執行自己的任務。 本文將會介紹一種新的執行nodejs任務的方式,child process。 child process lib/child_process.js提供了child_p

node.js , event , 多線程 , 併發編程

flydean - 使用nodejs和express搭建http web服務

簡介 nodejs作為一個優秀的異步IO框架,其本身就是用來作為http web服務器使用的,nodejs中的http模塊,提供了很多非常有用的http相關的功能。 雖然nodejs已經帶有http的處理模塊,但是對於現代web應用程序來説,這或許還不太夠,於是我們有了express框架,來對nodejs的內容進行擴展。 今天我們將會介紹一下使用nodejs和express來開發web應用程序的區

express , node.js , HTTP , web服務器

flydean - nodejs事件和事件循環詳解

簡介 上篇文章我們簡單的介紹了nodejs中的事件event和事件循環event loop。本文本文將會更進一步,繼續講解nodejs中的event,並探討一下setTimeout,setImmediate和process.nextTick的區別。 nodejs中的事件循環 雖然nodejs是單線程的,但是nodejs可以將操作委託給系統內核,系統內核在後台處理這些任務,當任務完成之後,通知nod

node.js , 事件綁定 , 事件監聽 , 事件 , 異步編程

flydean - wildfly 21的配置文件和資源管理

簡介 在上一篇文章我們介紹了wildfly 21的基本使用和管理界面。今天我們將會詳細講解一下wildfly的配置文件和資源管理。 wildfly的配置文件 不管是在standalone還是在domain模式下,有兩個配置文件是非常重要的,他們是standalone.xml和domain.xml。 其他的standalone-*.xml可以參考standalone.xml來配置 我們看下stand

部署 , 服務器 , 配置管理 , web服務器

flydean - 在wildfly 21中搭建cluster集羣

簡介 wildfly是一個非常強大的工具,我們可以輕鬆的使用wildfly部署應用程序,更為強大的是,wildfly可以很方便的部署cluster應用。 今天我們通過一個例子來講解下wildfly如何構建cluster應用。 下載軟件和相關組件 假如我們有兩個host,一個稱為master,一個稱為slave,我們需要在兩個機子上面安裝wildfly,構建成domain模式。然後需要在Domain

集羣管理系統 , 服務器 , 集羣 , web服務器 , cluster

flydean - wildfly 21的domain配置

簡介 wildfly可以使用Standalone模式或者domain模式啓動,standalone模式就很簡單了,可以看做是一個單獨的服務器。今天我們將會詳細講解一下domain模式。 wildfly模式簡介 wildfly可以在兩種模式下面工作,他們是standalone和managed domain。 standalone模式表示的是一個獨立的服務器,它們可以通過使用standalone.sh

wildfly , 配置文件 , 配置管理 , web服務器

flydean - nodejs事件和事件循環簡介

簡介 熟悉javascript的朋友應該都使用過事件,比如鼠標的移動,鼠標的點擊,鍵盤的輸入等等。我們在javascript中監聽這些事件,從而觸發相應的處理。 同樣的nodejs中也有事件,並且還有一個專門的events模塊來進行專門的處理。 同時事件和事件循環也是nodejs構建異步IO的非常重要的概念。 今天我們來詳細瞭解一下。 事件 nodejs為事件提供了一個專門的模塊:lib/even

node.js , 事件驅動 , 事件監聽 , 事件 , 異步編程