最近因为在做视频处理,所以和解码芯片打交道很多,根据DM642的例程总了一些应该配置的东西.

注:以下的配置均是指AV信号输入,PAL制式输出的条件

(一)关于SAA7115(基于TI的驱动)

结构体定义如下:(vportcap.h)

typedef struct {

Int cmode;
Int fldOp;
Int scale;
Int resmpl;
Int bpk10Bit;
Int hCtRst;
Int vCtRst;
Int fldDect;
Int extCtl;
Int fldInv; Uint16 fldXStrt1;
Uint16 fldYStrt1;
Uint16 fldXStrt2;
Uint16 fldYStrt2;
Uint16 fldXStop1;
Uint16 fldYStop1;
Uint16 fldXStop2;
Uint16 fldYStop2;
Uint16 thrld; Int numFrmBufs;
Int alignment;
Int mergeFlds;
Int segId;
Int edmaPri;
Int irqId;
}VPORTCAP_Params;

现在对其中一些关键信息进行注释:

Cmode为vport数据输入格式的选择,如下所示:

VPORT_MODE_BT656_8BIT
VPORT_MODE_BT656_10BIT
VPORT_MODE_RAW_8BIT
VPORT_MODE_RAW_10BIT
VPORT_MODE_YC_8BIT
VPORT_MODE_YC_10BIT
VPORT_MODE_RAW_16BIT
VPORT_MODE_RAW_20BIT

Int fldOp:帧和场的操作模式,在vport.h中定义,参考选择如下:

VPORT_FLDOP_FLD1

VPORT_FLDOP_FLD2

VPORT_FLDOP_FRAME

VPORT_FLDOP_PROGRESSIVE

Scaleresample的设置(具体操作见spru629 66页):

Intbpk10Bit;

10bit数据打包成64bit数据包的方式,包括:

VPORTCAP_BPK_10BIT_ZERO_EXTENDED

VPORTCAP_BPK_10BIT_SIGN_EXTENDED

VPORTCAP_BPK_10BIT_DENSE

HOUNT=0,VOUNT=1

Xstart~Xstop定义图像的宽度

Ystart~Ystop定义图像的高度

以上4个参数决定了捕获的图像帧的窗口中的位置

Uint16thrld;

指示FIFO的门限值,当捕获的数据达到门限值则出发DMA操作

IntextCtl;

IntvCtRst;

Exc和vCtrst定义了图象捕获中垂直计数器的复位点

InthCtRst;

Exc和hCtrst定义了水平采样计数器的复位点:

当EXC=0,VRST=0:VCOUNT在场消隐开始时复位

当EXC=0,VRST=1:VCOUNT在有效行开始时复位

当EXC=0,HRST=0:HCOUNT在EAV代码结束时复位

当EXC=0,HRST=1:HCOUNT在SAV代码结束时复位

当EXC=1,VRST=0,HRST=0时,VCOUNT和HCOUNT都是在VCTL0控制信号的上升沿进行复位;VRST=1,HRST=1时,VCOUNT和HCOUNT都是VCTL0控制信号的下降沿复位

Int fldDect;场检测使能定义

FID:FID=0,指场一的开始;FID=1指示场2的开始;使用FID输入判断场的方法适合Y/C图像数据流;

 //////////////////////////////////////////////////////////

 (saa7115.h)
typedef struct {
SAA7115_ModeinMode;
SAA7115_ModeoutMode;
SAA7115_AnalogFormataFmt; BoolenableBT656Sync;
BoolenableIPortOutput; I2C_Handle hI2C; Int hSize;
Int vSize;
Bool interlaced;
} SAA7115_ConfParams; SAA7115_ConfParamsEVMDM642_vCapParamsSAA7115 = {
SAA7115_MODE_NTSC720,
SAA7115_MODE_USER,
SAA7115_AFMT_COMPOSITE,
TRUE,
TRUE,
INV,
LIN
E_SZ,
NUM_LINES*,
TRUE,
};

SAA7115_Mode的inMode和outMode可以是下面结构体定义的其中之一;

typedef enumSAA7115_Mode{

SAA7115_MODE_NTSC640,
SAA7115_MODE_NTSC720,
SAA7115_MODE_PAL720,
SAA7115_MODE_PAL768,
SAA7115_MODE_CIF,
SAA7115_MODE_QCIF,
SAA7115_MODE_SQCIF,
SAA7115_MODE_SIF
SAA7115_MODE_USER
}SAA7115_Mode;

SAA7115_AnalogFormat aFmt;(saa7115.h)指定编码器的模拟输出模式

typedef enumSAA7115_AnalogFormat {

SAA7115_AFMT_SVIDEO,
SAA7115_AFMT_COMPOSITE
}SAA7115_AnalogFormat;

Bool enableBT656Sync;把ITU-RBT.656中定义的SAV/EAV代码插入到输出图像数据流

BoolenableIPortOutput; 选择图像数据的输出端口为I-PORT还是X-PORT

Int hSize; &Int vSize; 分别定义图像的水平宽度和垂直高度

Bool interlaced;指定用户定义的图像采用interlaced(隔行扫描)模式或者progressive(逐行扫描)模式

在TI的例程里有一个结构体,里面有对7115需要配置的项目

//(evmdm642_vcapparamsPAL.c)

SAA7115_ConfParamsEVMDM642_vCapParamsSAA7115 = {
SAA7115_MODE_PAL720,
SAA7115_MODE_PAL720,
SAA7115_AFMT_COMPOSITE,
TRUE,
TRUE,
INV, };

这个结构体的原形在头文件saa7115.h中定义

typedef struct {

   SAA7115_Mode inMode;
SAA7115_Mode outMode;
SAA7115_AnalogFormat aFmt;
BoolenableBT656Sync;
BoolenableIPortOutput;
I2C_Handle hI2C; InthSize;
IntvSize;
Boolinterlaced; }SAA7115_ConfParams;

(1)inMode定义为视频输出格式(在saa7115.h中定义)

typedef enum SAA7115_Mode{

   SAA7115_MODE_NTSC640,
SAA7115_MODE_NTSC720,
SAA7115_MODE_PAL720,
SAA7115_MODE_PAL768,
SAA7115_MODE_CIF,
SAA7115_MODE_QCIF,
SAA7115_MODE_SQCIF,
SAA7115_MODE_SIF,
SAA7115_MODE_USER }SAA7115_Mode;

(2)outMode定义为输出视频格式,值同上

(3) aFmt 定义为视频输出设备的模拟信号格式(值在saa7105.h)中定义

typedef enumSAA7115_AnalogFormat {

   SAA7115_AFMT_SVIDEO,
SAA7115_AFMT_COMPOSITE }SAA7115_AnalogFormat;

(4)enableBT656Sync定义为在输出视频数据流中允许插入ITU-RBT.656定义的SAV/EAV码

(5)enableIPortOutput:用I-PORT口代替X-PORT口输出视频流

(6)hI2CDM642的I2C控制器的句柄

当inMode =SAA7115_MODE_USER时,下面的参数可选

(7)hSize 用户定义图画水平大小

(8)vSize用户自定义图画垂直大小

(9)interlaced定义用户图像是隔行扫描还是逐行扫描模式

由上面我们可以看出,一般在PAL制式采集视频时,需要配置的东西主要是:

输入输出模式、是否有同步信号、使能数据输出口

(二).EVMDM642_vDisParamsSAA7105配置

(evmdm642_vdisparamsPAL.c)

VPORTDIS_ParamsEVMDM642_vDisParamsChan = {

VPORT_MODE_BT656_8BIT,

VPORT_FLDOP_FRAME,

VPORT_SCALING_DISABLE,

VPORT_RESMPL_DISABLE,

VPORTDIS_DEFVAL_ENABLE,

VPORTDIS_BPK_10BIT_NORMAL,

VPORTDIS_VCTL1_HSYNC,

VPORTDIS_VCTL2_VSYNC,

VPORTDIS_VCTL3_FLD,

VPORTDIS_EXC_DISABLE,

864,

625,

0,

0,

LINE_SZ,

NUM_LINES,

0,

0,

LINE_SZ,

NUM_LINES,

720,

862,

720,

624,

720,

23,

360,

311,

360,

336,

720,

1,

360,

313,

752,

782,

752,

1,

752,

3,

320,

313,

320,

316,

16,

235,

16,

240,

0x10,

0x80,

0x80,

VPORTDIS_RGBX_DISABLE,

0,

(LINE_SZ>>3),

3,

128,

VPORT_FLDS_MERGED,

NULL,

EDMA_OPT_PRI_HIGH,

8

};

Display1

EVMDM642_vDisParamsChan 参数说明

1.dmode:

当前值:VPORT_MODE_BT656_8BIT,

作用:co-sited luma andchroma data multiplexed into a single data stream

因当前位数为8bit,VDOUT9~ VDOUT2脚输出8位数据

图1:BT.656 Output Sequence

图2:模式选择

2.fldOp:field and frame operation mode.

当前值:VPORT_FLDOP_FRAME

类似于如下

3. Scale: horizontal 2xscaling enable。

当前值:VPORT_SCALING_DISABLE,不允许缩放。

4.defValEn:

default value output enable.Enable output of default value in the non-blanking period outsidethe image window。

在非空白时段图像输出是否指定为默认值,默认值配置见下面9段。

当前值:VPORTDIS_DEFVAL_ENABLE

5. Resmpl:

VPORT_RESMPL_DISABLE

chroma horizontal 4:2:0 to4:2:2 re-sampling disable.

6.bpk10Bit:

VPORTDIS_BPK_10BIT_NORMAL,

Fifo填充模式,普通模式,一字填充2个10bit

7.vctl1Config: vctl2Config:vctl3Config:vctl1~vctl3引脚的输出选择

其中vctl1:vctl2都有以下四种选择;

VPORTDIS_VCTL2_VSYNC

VPORTDIS_VCTL2_VBLNK

VPORTDIS_VCTL2_CSYNC

VPORTDIS_VCTL2_FLD

vctl3有以下2种选择

VPORTDIS_VCTL3_CBLNK

VPORTDIS_VCTL3_FLD

在此程序中:VPORTDIS_VCTL1_HSYNC,

Vctl

1脚选择输出为水平同步信号

VPORTDIS_VCTL2_VSYNC,

Vctl2脚输出选择为垂直同步信号

VPORTDIS_VCTL3_FLD,

Vctl3脚输出选择为场信号,标志当前场序号(field1或field 2)

8.帧及图像等相关数据,已在下图中标识

9.指定Y,CB,CR分量的默认值:

Y为0x10,

CB 0x80,

CR 0x80,

10. rgbX 仅在rawmode连续输出24/30-bit RGB模式中使用,是否执行3/4 fifo解包。本程序与其无关。指定为VPORTDIS_RGBX_DISABLE。

11.incPix:仅在raw mode中使用。

12.thrld:当fifo中数据达到此值,将触发edma事件。此处为360/8=45双字。

13. numFrmBufs

给driver分配的buffer个数,本程序为3个。

14. Alignment:

Buffer的字对齐,此处为128字节对齐,即buffer的开始地址为128的倍数。

15,mergeFlds:指定场1和场2 buffer是否在存储器中分开存放。

VPORT_FLDS_MERGED,此处不分开放置。

16.SegId:指定driver将buffer分配到的位置,初始值为null,后在初始化函数thrDisplayInit中指定为EXTERNALHEAP,由dsp/bios中mem模块分配可知EXTERNALHEAP是外部存储器中的堆。

17.edma传输的优先级,可指定为高或低。指定为高EDMA_OPT_PRI_HIGH。

18.edma 中断号id,为8,默认值。

SAA7105_ConfParamsEVMDM642_vDisParamsSAA7105 = {

SAA7105_AFMT_SVIDEO,

SAA7105_MODE_NTSC720,

SAA7105_IFMT_YCBCR422_INTERLACED,

TRUE,

FALSE,

INV

};

SAA7105_AFMT_SVIDEO,模拟输出的格式

可选格式有:

typedef enumSAA7105_AnalogFormat {

SAA7105_AFMT_SVIDEO =0,

SAA7105_AFMT_RGB =1,

SAA7105_AFMT_YPBPR =1,

SAA7105_AFMT_COMPOSITE =2

}SAA7105_AnalogFormat;

SAA7105_MODE_NTSC720,视屏模式,可选模式有

typedef enum

{

SAA7105_MODE_NTSC720,

SAA7105_MODE_PAL720,

SAA7105_MODE_QVGA,

SAA7105_MODE_VGA,

SAA7105_MODE_SVGA,

SAA7105_MODE_XGA,

SAA7105_MODE_HD480P60F,

SAA7105_MODE_HD720P24F,

SAA7105_MODE_HD720P60F,

SAA7105_MODE_HD1080I30F

}SAA7105_Mode;

SAA7105_IFMT_YCBCR422_INTERLACED,7105的输入格式,为ycbcr422格式。可选格式有

typedef enumSAA7105_InputFormat {

SAA7105_IFMT_RGB24_YCBCR444,

SAA7105_IFMT_RGB555,

SAA7105_IFMT_RGB565,

SAA7105_IFMT_YCBCR422_NONEINTERLACED,

SAA7105_IFMT_YCBCR422_INTERLACED

}SAA7105_InputFormat;

20.TRUE:指定7105为从模式

21.FALSE:是否使用SAV/EAV code使能内置的同步

INV暂时不指定。在初始化函数中指定。

Display2

1. 初始化工作:

EVMDM642_vDisParamsChan.segId = EXTERNALHEAP;

EVMDM642_vDisParamsSAA7105.hI2C =EVMDM642_I2C_hI2C;

指定将用来分配视频帧缓冲区的存储段ID设置为EXTERNALHEAP。

I2c句柄指定为EVMDM642_I2C_hI2C。

disChan =FVID_create("/VP2DISPLAY", IOM_OUTPUT,

&status,(Ptr)&EVMDM642_vDisParamsChan, NULL);

建立FVID通道并初始化该通道;FVID即是GIO的一种封装,FVID通道即GIO通道。详见附录。

若成功建立,该函数返回fvid通道句柄,若不成功,返回NULL。

参数意义:

"/VP2DISPLAY":字符串表示device driver的名字,该device driver在DSP/BIOS中定义。

IOM_OUTPUT指定设备的打开模式为输出。

status:该参量是application送给mini-driver的一个状态指针,由mini-driver来返回状态的;

EVMDM642_vDisParamsChan:是用来初始化FVID channel的具体参数,是用结构体的形式打包,并将指向该结构体的指针传送给mini-driver来进行处理,结构体中参数的具体含义已在display文档中介绍过。

NULL:为FVID_Attrs结构参数,为空,表FVID_alloc,FVID_free,FVID_exchangecalls为非block形式,无论成功与否,立刻返回,详见附录。

FVID_control(disChan,VPORT_CMD_EDC_BASE+EDC_CONFIG,(Ptr)&EVMDM642_vDisParamsSAA7105)

应用程序发送一个控制命令给mini-driver,将由mini-driver做相应的响应,在这里将完成对saa7105寄存器的初始化;dischan为指定的fvid通道,由上FVID_create函数返回。VPORT_CMD_EDC_BASE+EDC_CONFIG为相应cmd命令,EVMDM642_vDisParamsSAA7105为一结构体,包含的是配置SAA7105的具体参数信息,该结构体成员已在display文档中介绍,此不再重叙。这里将该结构体的指针传送给mini-driver,mini-driver将通过i2c总线用其配置7105;该函数将导致mdcontrol函数的调用。

(三)Fvid对gio的封装

从fvid.h中我们可以清晰的看出fvid即为gio的一种扩展封装。

#define FVID_alloc(gioChan,bufp) \

GIO_submit(gioChan,FVID_ALLOC, bufp, NULL, NULL)

……………………………………………

.Fvid的属性结构

typedef struct FVID_Attrs{

Uns timeout;

} FVID_Attrs;

Fvid的属性,指定fvid函数(即相当于gio相关函数)等待时间。若函数不能立即返回将会导致进程被挂起。若果指定为非0, FVID_alloc, FVID_free and FVID_exchange只能在 DSP/BIOS task(TSK)使用。因swi和hwi不可能因此挂起。

Fvid信息

typedef struct FVID_Frame{

QUE_ElemqueElement;

union {

FVID_Iframe iFrm;

FVID_Pframe pFrm;

FVID_RawIFrameriFrm;

FVID_RawPFramerpFrm;

} frame;

} FVID_Frame;

typedef structFVID_Iframe{

Char* y1;

Char* cb1;

Char* cr1;

Char* y2;

Char* cb2;

Char* cr2;

}FVID_Iframe;

typedef struct FVID_Pframe{

Char* y;

Char* cb;

Char* cr;

} FVID_Pframe;

typedef structFVID_RawIFrame{

Char* buf1;

Char* buf2;

} FVID_RawIFrame;

typedef structFVID_RawPFrame{

Char* buf;

} FVID_RawPFrame;

QUE_Elem为该gio使用的队列,第二个成员为一指向缓冲区的指针。为联合体,即实例化结构对象第二个成员为指向该种联合体成员之一。该程序为iframe。

.Classdriver/mini-driver模型结构

在类/微型驱动模型中,类驱动通常用于完成多线程I/O请求的序列化功能和同步功能,同时对设备实例进行管理。在包括视频系统I/O和异步I/O的典型实时系统中,只有少数的类驱动需要表示出外部设备的类型。

类驱动通过每个外部设备独有的微型驱动对设备进行操作。微型驱动通过控制外设的寄存器、内存和中断资源对外部设备实现控制。微型驱动程序必须将特定的外部设备有效地表示给类驱动。例如:视频显示设备存在一些不同的帧存,应用软件会根据不同的I/O操作进行帧存的分配,此时微型驱动必须映射视频显存,使得类驱动可以对不连续的内存(分别存放RGB或YUV分量)设计特定的I/O请求。

类/微型驱动模型允许发送由开发者定义数据结构的I/O请求包给微型驱动来控制外部设备,此分层结构使设备驱动的复用能力得到加强,并且丰富了发送给微型驱动的I/0请求包的结构。

上层的应用程序不直接控制微型驱动,而是使用一个或一个以上的类驱动对其进行控制。每一个类驱动在应用程序代码中表现为一个API[3]函数并且通过微型驱动的接口IOM与微型驱动进行通信。类驱动使用DSP/BIOS中的API函数实现诸如同步等的系统服务。

类驱动通过标准的微型驱动接口调用微型驱动控制硬件设备。到目前为止DSP/BIOS共定义了三种类驱动:流输入输出管理模块(SIO)、管道管理模块(PIP)和通用输入输出模块(GIO)。在PIP和SIO类驱动中,调用的API函数已经存在于DSP/BIOS的PIP和SIO模块中。这些API函数需将参数传给相应的适配模块(adapter),才能与微型驱动交换数据。而在GIO类驱动中,调用的API函数则直接与微型驱动通信(需在CCS2.2以上)。

每一个微型驱动都为类驱动和DSP/BIOS设备驱动管理提供了标准接口。微型驱动采用芯片支持库管理外围设备的寄存器、内存和中断资源。

GIO模块

GIO模块在提供必要的同步读/写API函数及其扩展函数的同时,将代码和使用数据缓存的大小尽量简化。应用程序可以调用GIO的API函数直接与微型驱动的IOM交换数据,这些API函数使得GIO成为了类驱动。

当调用GIO_create创建一个外部设备的通道实例时,GIO在通道实例中增加了状态和I/O请求状态结构、IOM数据包(IOM_Packets)及一个GIO数据对象。GIO创建的通道实例的数据结构如下:

typedef stmctGIO_Obj{

IOM_Fxns*fxns;/* 函数表指针*/

Uns mode;/* 创建模式 */

Unstimeout;/* 超时时间 */

IOM_PacketsyncPacket;/* 同步时使用的IOM_Packet*/

QUE_ObjfreeList;/* 异步I/O队列*/

PtrsyncObj;/* 同步对象地址 */

PtrmdChan;/* 通道实例地址 */

}GIO_Obj,*GIO_Handle;

函数表指针是应用程序和微型驱动函数表(fxns)的接口;创建模式包括:输入(IOM_INPUT)、输出(IOM_OUTPUT)和双向(IOM_NOUT);IOM Packet在类驱动和微型驱动间的异步操作时使用;同步对象地址指向特定通道的同步信号;通道实例地址指向微型驱动创建的通道实例。

类/微型驱动模型中的微型驱动直接控制外部设备。只要微型驱动创建了规定的函数,应用程序就可以方便地通过DIO适配模块、PIO适配模块或(和)GIO类驱动调用。这些规定的函数包括:通道绑定函数(md—BindDev)、通道创建/删除函数(mdCreateChan/md—DeleteChan)、I/O请求发送函数(mdSubmitChan)、中断服务函数(ISRs)和设备控制函数(mdControlChan)。这些规定的函数将放入微型驱动的函数接口表(IOM_Fxns)中的相应位置,供应用程序通过适配模块或GIO类驱动调用。函数接口表的结构如下:

typedef structIOM_Fxns

{

IOM_TmdBindDevmdBindDev;

IOM—TmdUnBindDevmdUnBindDev;

IOM—TmdControlChanmdControlChan;

IOM_TmdCreateChanmdCreateChan;

IOM_TmdDeleteChanmdDeleteChan;

IOM_TmdSubmitChanmdSubmitChan;

}IOM_Fxns;

在设备初始化使dsp/bios将调用用户自定义设备初始化程序后调用mdbinddev函数。Mdcontrolchan为回应sio_strl,pio_ctrl,gio_ctrl函数时调用,若class drive

r超时,则一个cmd为iom_chan_timedout的命令将发给mdcontrolchan函数。

同理mdsubmitchan回应sio_submit,pio_submit,gio_submit。。。。。。

关于解码芯片SAA7115及7105的配置 ,FVID与微驱动的更多相关文章

  1. SpringCloud微服务实战——搭建企业级开发框架(九):使用Nacos发现、配置和管理微服务

    Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台,Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置 ...

  2. redisTemplate的spring配置以及lua脚本驱动

    最近在使用spring-data-redis的redisTemplate,所以写篇使用记录吧. 1.不用多说,使用maven引入相关依赖,因为项目已经引入其他的 <dependency> ...

  3. mac上一键配置和安装adb驱动或者环境

    最近才使用的mac,老实说mac上要配置adb的环境不那么复杂,但是还是会让一些心不细或者动手能力不强的同学望而却步.那么到底有没有一个一键完成mac上adb和fastboot环境搭配的软件或者脚本呢 ...

  4. 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介

    作者 : 韩曙亮 转载请出名出处 : http://blog.csdn.net/shulianghan/article/details/38636827 一. Linux 内核简介 1. 内核功能简介 ...

  5. debian下配置网络 安装无线网卡驱动 Broadcom BCMXX系列

    解决方案来自于debian官网  https://wiki.debian.org/wl 1.加入源 deb http://http.debian.net/debian/ wheezy main c ...

  6. ubuntu16.04 Detectron目标检测库配置(包含GPU驱动,Cuda,Caffee2等配置梳理)

    Detectron概述 Detectron是Facebook FAIR开源了的一个目标检测(Object Detection)平台. 用一幅图简单说明下Object Detection.如Mask R ...

  7. Spring Cloud学习笔记【十】配置中心(消息驱动刷新配置)

    上一篇中讲到,如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用 Webhook 的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案 ...

  8. RabbitMQ安装配置和基于EasyNetQ驱动的基础使用

    一.RabbitMQ基本概念和原理 1.AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计. 2.Ra ...

  9. Web应用数据库配置参数读取方法之一

    jsp页面: <% //从配置中获取数据库驱动 String driver=application.getInitParameter("driver"); //从数据库中得到 ...

随机推荐

  1. VC6 Release下,生成pdb文件

    1.Generate debug必须选上,否则没有调试信息 2.把优化disable,否则容易产生代码地址偏移: 3.用program database产生PDB文件: 4.将dll, exe, pd ...

  2. uploadify上传附件 点击保存无效 切F12就可以正常保存

    感谢 这篇文章    https://blog.csdn.net/koala25/article/details/70230046 uploadify上传附件 点击保存无效 切F12就可以正常保存了, ...

  3. OA系统和ERP系统的区别

    一.OA和ERP的区别 1.含义不同: OA指Office Automation,中文简称自动办公系统,帮助企业内部管理沟通的工具,比如新闻公告.内部沟通.考勤.办公.员工请假.审批流程等. ERP指 ...

  4. 【颓废篇】人生苦短, 我用python(二)

    当时产生学习python的欲望便是在看dalao们写脚本的时候… 虽然dalao们好像用的是js来着.. 不过现在好像很多爬虫也可以用python写啊… 所以学python没什么不妥. 而且csdn整 ...

  5. [转]Hessian——轻量级远程调用方案

    Hessian是caucho公司开发的一种基于二进制RPC协议(Remote Procedure Call protocol)的轻量级远程调用框架.具有多种语言的实现,但用的最多的当然是Java实现 ...

  6. 系列文章:云原生Kubernetes日志落地方案

    在Logging这块做了几年,最近1年来越来越多的同学来咨询如何为Kubernetes构建一个日志系统或者是来求助在这过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是想把我们这些年积累的经验以 ...

  7. MyEclipse如何使用debug模式

    知道如何打断点,如何进入debug与debug模式的视图,还有工具栏的使用和快捷键的使用 https://blog.csdn.net/menglanyingfei/article/details/55 ...

  8. &卡特兰数学习笔记

    一.关于卡特兰数 卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 20801 ...

  9. SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么

    从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...

  10. Docker系列(十):Kubernetes集群入门

    kubenetes安装 官网:https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/getting-started- guide ...