原创 GDAL-影像按照波段進行切片(c#)

public void SplitImagery(string pFilePath) { Dataset pDataset = Gdal.Open(pFilePath, Acc

原创 我們在調用EventLoop.execute()方法時究竟做了一些什麼工作

我們在研究註冊過程中的源碼可以看到這樣的一段代碼 eventLoop.execute(new Runnable() { @Override

原创 Neety中的AttributeKey

我們在討論Netty的服務器啓動程序的bind()方法源碼時,看到有這樣的一段代碼: final Map<AttributeKey<?>, Object> attrs = attrs0(); synchron

原创 Netty中ByteBuf的回收機制ReferenceCounted

Netty中ByteBuf採用引用計數的方式進行資源的回收,當ByteBuf中的引用計數值爲0時,Netty則不允許應用程序採用任何的方式對這個資源進行訪問。它通過實現ReferenceCounted維護引用計數。package io.n

原创 Netty中關於引用計數的retain()/release()方法原子特性的關鍵compareAndSet

我們知道,實現了ReferenceCounted接口的類的對象都會在引用計數的作用下進行顯式的回收。當引用計數爲0時,這個對象就不能再被訪問了。而這個接口提供了兩個方法給我們來操作引用計數。 retain()release()而這個操作是

原创 Netty中的EventExecutorChooserFactory

我們在研究Netty對channel的註冊實現時 ChannelFuture regFuture = config().group().register(channel);其中config()方法返回ServerBootstrapConf

原创 AOF策略譯文

############################## APPEND ONLY MODE ############################### # By default Redis asynchronously dump

原创 我們在接收一個新的連接請求之後是如何生成一個新的socketchannel並註冊讀寫事件的呢

我們知道,在NioEventLoop當中,我們會循環處理得到的selectedKeys,調用的方法 private void processSelectedKey(SelectionKey k, AbstractNioChannel ch

原创 關於JDK中的ByteBuffer與Netty中的ByteBuf的對比

JDK中ByteBuffer的缺點只是用一個標誌位position來進行讀寫標記,讀寫操作要使用flip方法進行切換,不太友好。因爲ByteBuffer中的實際存儲數據的數組是使用final修飾符修飾的,所以不可以 在原來buffer的基

原创 Netty中的ChannelPipeline及其實現

下面是ChannelPipeline的java doc文檔的部分介紹/** * A list of {@link ChannelHandler}s which handles or intercepts inbound events a

原创 Netty在註冊完之後的bind方法所產生的作用

我們在分析完initAndRegister方法之後,隨後就進入了bind端口號的操作了。 abstract void init(Channel channel) throws Exception; private stat

原创 獲取圖層所在的圖層組

/// <summary> /// 遞歸返回圖層所在的圖層組 /// </summary> /// <param name="pGroupLayer"></param>

原创 爲FeatureClass的特定屬性賦值

public static void AssignFieldValue(IFeatureClass pFeatureClass, int[] fields, List<object>[] values)

原创 爲FeatureClass添加字段

/// <summary> /// 在爲shp文件添加字段時,需要注意字段長度不能過10 /// </summary> /// <param name="pFeatureC

原创 設置圖層組中圖層的顯隱

/// <summary> /// 設置圖層組的顯隱 /// </summary> /// <param name="pLayer"></param> //