主机接口

zllSocCmd.h(ZLL的Socket主机接口)

此模块包含ZLL的Socket主机接口API。其包含的函数方法在zllSocCmd.c中实现

ZLL Soc Types

定义了描述设备的数据结构以及CC253x传送来消息时主机应用程序注册的回调函数

// Endpoint information record entry端点信息记录条目

typedef struct      描述设备的数据结构

{

uint8_t IEEEAddr[8];           IEEE地址

uint16_t nwkAddr;   // Network address  网络地址

uint8_t endpoint;   // Endpoint identifier  端点标识符

uint16_t profileID; // Profile identifier      配置文件标识符

uint16_t deviceID;  // Device identifier    设备ID

uint8_t version;    // Version

char* deviceName;  设备名称

uint8_t status;      状态(以供将来使用)

} epInfo_t

主机应用程序注册的回调函数如下:

typedef uint8_t (*zllSocTlIndicationCb_t)(epInfo_t *epInfo);

typedef uint8_t (*zllNewDevIndicationCb_t)(epInfo_t *epInfo);

typedef uint8_t (*zllSocZclGetStateCb_t)(uint8_t state, uint16_t nwkAddr, uint8_t endpoint);

typedef uint8_t (*zllSocZclGetLevelCb_t)(uint8_t level, uint16_t nwkAddr, uint8_t endpoint);

typedef uint8_t (*zllSocZclGetHueCb_t)(uint8_t hue, uint16_t nwkAddr, uint8_t endpoint);

typedef uint8_t (*zllSocZclGetSatCb_t)(uint8_t sat, uint16_t nwkAddr, uint8_t endpoint);

typedef struct

{

zllSocTlIndicationCb_t            pfnTlIndicationCb;

// TouchLink Indication callback触摸指示回调(用于ZLL控制的桥梁,而不是关于HA照明网关)

zllNewDevIndicationCb_t          pfnNewDevIndicationCb;

// New device Indication callback    新设备指示回调

zllSocZclGetStateCb_t           pfnZclGetStateCb;

// ZCL response callback for get State  状态响应回调

zllSocZclGetLevelCb_t           pfnZclGetLevelCb;

// ZCL response callback for get Level  亮度响应回调

zllSocZclGetHueCb_t             pfnZclGetHueCb;

// ZCL response callback for get Hue   色调响应回调

zllSocZclGetSatCb_t             pfnZclGetSatCb;

// ZCL response callback for get Sat    饱和度响应回调

} zllSocCallbacks_t;

#define Z_EXTADDR_LEN 8

ZCL消息寻址模式

typedef enum

{

afAddrNotPresent = 0,

afAddrGroup      = 1,   组播地址

afAddr16Bit      = 2,

afAddr64Bit      = 3,

afAddrBroadcast  = 15

} afAddrMode_t;

/********************************************************************/

ZLL Soc API

configuration API's

int32_t zllSocOpen( char *devicePath );

功能:打开到CC253x的串口

参数:devicePath - path to the UART device  到设备的路径,(端口号)

返回:serialPortFd   打开成功则返回串口文件描述符

void zllSocRegisterCallbacks( zllSocCallbacks_t zllSocCallbacks);

功能:回调注册函数

参数:回调函数指针

void zllSocClose( void );

功能:关闭到CC253x的串口

void zllSocProcessRpc (void);   //read and process the RPC from the ZLL controller

当有来自于CC253x的数据时,必须调用消息处理函数进行来数据读取和解析。

ZLL API's

void zllSocTouchLink(void); 发送 touchLink 命令到CC253x.

void zllSocResetToFn(void);

发送恢复出厂(factory new)设置命令给CC253x.

Linux 网关文档中给出的注释为:Resets the Gateway to its Factory New state.

void zllSocSendResetToFn(void);

Send the reset to factory new command to a ZLL device

Linux 网关文档中给出的注释为Reserved for use with ZLL Controller

void zllSocOpenNwk(void);   Send the open network command to a ZLL device

Opens the network for 60s for new devices to join//.打开网络60秒让新设备加进来

ZCL Set API's

void zllSocSetState(uint8_t state, uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:发送on/off 命令给一个 ZLL light

参数   state - 0: Off, 1: On.

dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.被控制灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocSetLevel(uint8_t level, uint16_t time, uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:Send the level command to a ZLL light.发送亮度命令给一个ZLL灯

参数:level - 0-128 = 0-100%

dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.被控制灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocSetHue(uint8_t hue, uint16_t time, uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:Send the hue command to a ZLL light. 发送“色调”命令到一个ZLL灯

参数:hue - 0-128 represent the 360Deg hue color wheel : 0=red, 42=blue, 85=green

dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.被控制灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocSetSat(uint8_t sat, uint16_t time, uint16_t dstAddr, uint8_t  endpoint, uint8_t addrMode);

功能:Send the satuartion command to a ZLL light.发送饱和度命令到一个ZLL灯

参数:sat - 0-128 : 0=white, 128: fully saturated color

dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.被控制灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocSetHueSat(uint8_t hue, uint8_t sat, uint16_t time, uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:Send the hue and satuartion command to a ZLL light.发送“色调”和“饱和度”命令到一个ZLL灯

参数:hue - 0-128 represent the 360Deg hue color wheel : 0=red, 42=blue, 85=green

sat - 0-128 : 0=white, 128: fully saturated color

dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.被控制灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocAddGroup(uint16_t groupId, uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

* @brief   Add Group.

*

* @param   groupId - Group ID of the Scene.

* @param   dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.

* @param   endpoint - endpoint of the Light.

* @param   addrMode - Unicast or Group cast.

void zllSocStoreScene(uint16_t groupId, uint8_t sceneId, uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

@brief   Store Scene.

* @param   groupId - Group ID of the Scene.

* @param   sceneId - Scene ID of the Scene.

* @param   dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.

* @param   endpoint - endpoint of the Light.

* @param   addrMode - Unicast or Group cast.

void zllSocRecallScene(uint16_t groupId, uint8_t sceneId, uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

@brief   Recall Scene.

*

* @param   groupId - Group ID of the Scene.

* @param   sceneId - Scene ID of the Scene.

* @param   dstAddr - Nwk Addr or Group ID of the Light(s) to be controled.

* @param   endpoint - endpoint of the Light.

* @param   addrMode - Unicast or Group cast.

void zllSocBind(uint16_t srcNwkAddr, uint8_t srcEndpoint, uint8_t srcIEEE[8], uint8_t dstEndpoint, uint8_t dstIEEE[8], uint16_t clusterID);

ZCL Get API's

void zllSocGetState(uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:Send the get state command to a ZLL light.发送“获取状态”命令到a ZLL light

参数:dstAddr - Nwk Addr or Group ID of the Light(s) to be sent the command.要接收命令的灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocGetLevel(uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:Send the get level command to a ZLL light.发送“获取亮度”命令到a ZLL light

参数:dstAddr - Nwk Addr or Group ID of the Light(s) to be sent the command.要接收命令的灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocGetHue(uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:Send the get hue command to a ZLL light.发送“获取色调”命令到a ZLL light

参数:dstAddr - Nwk Addr or Group ID of the Light(s) to be sent the command.要接收命令的灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

void zllSocGetSat(uint16_t dstAddr, uint8_t endpoint, uint8_t addrMode);

功能:Send the get saturation command to a ZLL light发送“获取饱和度”命令到a ZLL light

参数:dstAddr - Nwk Addr or Group ID of the Light(s) to be sent the command.要接收命令的灯的网络地址或组ID

endpoint - endpoint of the Light.    端点ID

addrMode - Unicast or Group cast.   单播或组播

一些有用的宏定义及数据类型重定义

hal_types.h

Types  (数据类型重新定义)

typedef signed   char   int8;

typedef unsigned char   uint8;

typedef signed   short  int16;

typedef unsigned short  uint16;

typedef signed   int   int32;

typedef unsigned int   uint32;

typedef unsigned char   bool;

typedef uint16        halDataAlign_t;

Standard Defines

#ifndef TRUE

#define TRUE 1

#endif

#ifndef FALSE

#define FALSE 0

#endif

#ifndef NULL

#define NULL 0

#endif

hal_defs.h

This file contains useful macros and data types 此文件包含有用的宏和数据类型

Macros(宏)

#ifndef BV          //这是将某位置位的宏

#define BV(n)      (1 << (n))  00000001往左移移N位,如左移3位得00001000

#endif

#ifndef BF

#define BF(x,b,s)  (((x) & (b)) >> (s))   x和b位与运算再右移s位

#endif

#ifndef MIN                   取较小值

#define MIN(n,m)   (((n) < (m)) ? (n) : (m))

#endif

#ifndef MAX                  取较大值

#define MAX(n,m)   (((n) < (m)) ? (m) : (n))

#endif

#ifndef ABS           取绝对值

#define ABS(n)     (((n) < 0) ? -(n) : (n))

#endif

#define BREAK_UINT32( var, ByteNum ) \

(uint8_t)((uint32_t)(((var) >>((ByteNum) * 8)) & 0x00FF))

/* takes a byte out of a uint32_t : var - uint32_t,  ByteNum - byte to take out (0 - 3) */

将一个32位无符号整数var的第ByteNum个字节取出来

#define BUILD_UINT32(Byte0, Byte1, Byte2, Byte3) \

((uint32_t)((uint32_t)((Byte0) & 0x00FF) \

+ ((uint32_t)((Byte1) & 0x00FF) << 8) \

+ ((uint32_t)((Byte2) & 0x00FF) << 16) \

+ ((uint32_t)((Byte3) & 0x00FF) << 24)))

//将四个字节组合成一个32位无符号整数,Byte3为高位字节

#define BUILD_UINT16(loByte, hiByte) \

((uint16_t)(((loByte) & 0x00FF) + (((hiByte) & 0x00FF) << 8)))

//将两个字节组合成一个16位无符号整数,hiByte为高位字节

#define HI_UINT16(a) (((a) >> 8) & 0xFF)  //提取16为无符号整数的高8位

#define LO_UINT16(a) ((a) & 0xFF)      //提取16为无符号整数的低8位

#define BUILD_UINT8(hiByte, loByte) \

((uint8_t)(((loByte) & 0x0F) + (((hiByte) & 0x0F) << 4)))

//将hiByte, loByte组合成一个8位无符号整数,hiByte在高位

#define HI_UINT8(a) (((a) >> 4) & 0x0F)   //提取8为无符号整数a的高4位

#define LO_UINT8(a) ((a) & 0x0F)         //提86为无符号整数的a的低4位

#ifndef GET_BIT

#define GET_BIT(DISCS, IDX)  (((DISCS)[((IDX) / 8)] & BV((IDX) % 8)) ? TRUE : FALSE)

#endif

#ifndef SET_BIT

#define SET_BIT(DISCS, IDX)  (((DISCS)[((IDX) / 8)] |= BV((IDX) % 8)))

#endif

#ifndef CLR_BIT

#define CLR_BIT(DISCS, IDX)  (((DISCS)[((IDX) / 8)] &= (BV((IDX) % 8) ^ 0xFF)))

#endif

#define st(x)      do { x } while (__LINE__ == -1)

// __LINE__ 是个宏,它代表当前代码在源文件的行号,它是大于0的,所以__LINE__ == -1 等同于0

这个宏供其他宏使用以形成一个完全有效的C语句。*如果没有,if / else条件语句可能意外的行为,    无关键作用,无需特别注意

*该宏用于定义不同的编译器/汇编ASM NOP指令

#ifdef ccs

#define ASM_NOP    asm(" NOP")

#elif defined rvmdk

#define ASM_NOP   __nop()

#else

#define ASM_NOP    asm("NOP")

#endif

远程过程调用

socket_server.h

Description:    Socket Remote Procedure Call Interface - sample device application.

套接字远程过程调用接口 - 示例设备应用程序。

TYPEDEFS  类型定义

typedef void (*socketServerCb_t)( int clientFd );

参数:客户端文件描述符

INCLUDES 库文件

#include "hal_types.h"

CONSTANTS  常数

#define MAX_CLIENTS 50

定义的函数方法

int32 socketSeverInit( uint32 port );

功能:initialises the server.   初始化服务

参数:port         端口号

返回:return  Status    为0时成功

* serverSocketConfig - initialises the server.

*/

int32 serverSocketConfig(socketServerCb_t rxCb, socketServerCb_t connectCb);

/*

* getClientFds -  get clients fd's.

*/

void socketSeverGetClientFds(int *fds, int maxFds);

/*

* getClientFds - get clients fd's.

*/

uint32 socketSeverGetNumClients(void);

/*

* socketSeverPoll - services the Socket events.

*/

void socketSeverPoll(int clinetFd, int revent);

/*

* socketSeverSendAllclients - Send a buffer to all clients.

*/

int32 socketSeverSendAllclients(uint8* buf, uint32 len);

/*

* socketSeverSend - Send a buffer to a clients.

*/

int32 socketSeverSend(uint8* buf, uint32 len, int32 fdClient);

/*

* socketSeverClose - Closes the client connections.

*/

void socketSeverClose(void);

interface_srpcserver.h

define the outgoing RPCS command ID's

从网关发送的命令

#define RPCS_NEW_ZLL_DEVICE     0x0001

#define RPCS_DEV_ANNCE                   0x0002

#define RPCS_SIMPLE_DESC          0x0003

#define RPCS_TEMP_READING       0x0004

#define RPCS_POWER_READING      0x0005

#define RPCS_PING               0x0006

#define RPCS_GET_DEV_STATE_RSP  0x0007

#define RPCS_GET_DEV_LEVEL_RSP  0x0008

#define RPCS_GET_DEV_HUE_RSP    0x0009

#define RPCS_GET_DEV_SAT_RSP    0x000a

#define RPCS_ADD_GROUP_RSP      0x000b

#define RPCS_GET_GROUP_RSP      0x000c

#define RPCS_ADD_SCENE_RSP      0x000d

#define RPCS_GET_SCENE_RSP      0x000e

define incoming RPCS command ID's

发送给网关的命令

#define RPCS_CLOSE              0x80;

#define RPCS_GET_DEVICES        0x81;

#define RPCS_SET_DEV_STATE      0x82;

#define RPCS_SET_DEV_LEVEL      0x83;

#define RPCS_SET_DEV_COLOR      0x84;

#define RPCS_GET_DEV_STATE      0x85;

#define RPCS_GET_DEV_LEVEL      0x86;

#define RPCS_GET_DEV_HUE        0x87;

#define RPCS_GET_DEV_SAT        0x88;

#define RPCS_BIND_DEVICES       0x89;

#define RPCS_GET_THERM_READING  0x8a;

#define RPCS_GET_POWER_READING  0x8b;

#define RPCS_DISCOVER_DEVICES   0x8c;

#define RPCS_SEND_ZCL           0x8d;

#define RPCS_GET_GROUPS         0x8e;

#define RPCS_ADD_GROUP          0x8f;

#define RPCS_GET_SCENES         0x90;

#define RPCS_STORE_SCENE        0x91;

#define RPCS_RECALL_SCENE       0x92;

#define RPCS_IDENTIFY_DEVICE    0x93;

#define RPCS_CHANGE_DEVICE_NAME 0x94;

#define RPCS_REMOVE_DEVICE      0x95;

#define SRPC_FUNC_ID 0

#define SRPC_MSG_LEN 1

#define SRPC_TCP_PORT 0x2be3

#define CLOSE_AUTH_NUM 0x2536

定义的结构体

typedef struct

{

union

{

uint16_t      shortAddr;

uint8_t       extAddr[Z_EXTADDR_LEN];

} addr;

afAddrMode_t  addrMode;

uint8_t endPoint;

uint16_t  panId;  // used for the INTER_PAN feature

} afAddrType_t;

RPSC ZLL Interface function

void SRPC_Init(void);

功能:initialises the RPC interface and waits for a client to connect.

初始化远程过程调用接口并等待一个客户端来连接

uint8_t RSPC_SendEpInfo(epInfo_t *epInfo);

功能:This function exposes an interface to allow an upper layer to start send an ep indo to all devices.此函数提供一个了接口,允许上层开始将一个设备的信息发送给所有设备。

参数:epInfo_t *epInfo   pointer to the epInfo to be sent

void RPCS_ZLL_CallBack_getStateRsp(uint8_t state, uint16_t srcAddr, uint8_t endpoint, uint32_t clientFd)

功能:Sends the get State Rsp to the client that sent a get state

void RPCS_ZLL_CallBack_getLevelRsp(uint8_t level, uint16_t srcAddr, uint8_t endpoint, uint32_t clientFd);

功能:Sends the get Level Rsp to the client that sent a get level

void RPCS_ZLL_CallBack_getHueRsp(uint8_t hue, uint16_t srcAddr, uint8_t endpoint, uint32_t clientFd);

功能:Sends the get Hue Rsp to the client that sent a get hue

void RPCS_ZLL_CallBack_getSatRsp(uint8_t sat, uint16_t srcAddr, uint8_t endpoint, uint32_t clientFd);

功能:Sends the get Sat Rsp to the client that sent a get sat

下面两个函数在程序中并未实现

void RPCS_ZLL_CallBack_getTempRsp(uint16_t temp, uint16_t srcAddr, uint8_t endpoint, uint32_t clientFd);

void RPCS_ZLL_CallBack_getPowerRsp(uint32_t power, uint16_t srcAddr, uint8_t endpoint, uint32_t clientFd);

终端节点处理

interface_devicelist.h

device states

#define DEVLIST_STATE_NOT_ACTIVE    0   //设备未激活

#define DEVLIST_STATE_ACTIVE        1  //设备已激活

定义的函数方法

void devListAddDevice( epInfo_t *epInfo);

功能:创建一个设备并添加一个记录到列表

参数:epInfo_t *epInfo  描述设备信息的结构体,在zllSocCmd.h中已定义

void devListRemoveDevice( uint16_t nwkAddr, uint8_t endpoint );

功能:从列表中删除一个设备记录

参数:uint16_t nwkAddr,    要移除设备的网络地址

uint8_t endpoint      要移除设备的端点ID

uint32_t devListNumDevices( void );

功能:获取列表中的设备数

epInfo_t* devListGetNextDev( uint16_t nwkAddr, uint8_t endpoint );

功能:返回列表中的下一个设备信息

参数:uint16_t nwkAddr,    if 0xFFFF it will return head of the list

   uint8_t endpoint    

返回:epInfo, return next epInfo from nwkAddr and ep supplied or NULL if at end of the list 返回参数表示的设备的下一个设备,如果参数表示的设备位于列表的结尾则返回空值

void devListChangeDeviceName( uint16_t devNwkAddr, uint8_t devEndpoint, char *deviceNameStr);

功能:改变设备名称

参数:uint16_t devNwkAddr  uint8_t devEndpoint  char *deviceNameStr(设备名称)

void devListRestorDevices( void );

功能:restore device list from file.      从文件中恢复设备列表(devicelistfile.dat)

interface_grouplist.h

定义的结构体

typedef struct

{

uint16_t groupId;     组ID

char *groupNameStr;  组名称字符串

}groupListItem_t;

定义的函数方法

uint16_t groupListAddGroup( char *groupNameStr );

功能:创建一个“组”并添加一个记录到列表

参数:char *groupNameStr 组名称字符串

返回:groupId    组ID

void groupListAddDeviceToGroup( char *groupNameStr, uint16_t nwkAddr );

功能:添加一个设备到一个组

参数:char *groupNameStr   组名称

uint16_t nwkAddr    网络地址

groupListItem_t* groupListGetNextGroup( char *groupNameStr );

功能:返回列表中的下一个组

参数:char *groupNameStr  if NULL it will return head of the list

返回:groupListItem_t, return next group from groupNameStr supplied or NULL if at end of the list 

void groupListRestorGroups( void );

功能:从grouplistfile.dat文件恢复组列表

interface_scenelist.h

定义的结构体

typedef struct

{

uint16_t groupId;  组ID

uint8_t sceneId;   场景ID

char *sceneNameStr; 场景名称字符串

}sceneListItem_t;

定义的函数方法

uint8_t sceneListAddScene( char *sceneNameStr, uint16_t groupId );

功能:创建一个“场景”并添加一个记录到列表

参数:char *sceneNameStr,   场景名称字符串

uint16_t groupId      组ID

返回:sceneId      场景ID

uint8_t sceneListGetSceneId( char *sceneNameStr, uint16_t groupId );

功能:获取“场景”ID

参数:char *sceneNameStr,   场景

uint16_t groupId      组ID

返回:sceneId       返回场景ID

sceneListItem_t* sceneListGetNextScene( char *sceneNameStr, uint16_t groupId );

功能:返回列表中下一个场景信息

参数:char *sceneNameStr,   if NULL it will return head of the list

uint16_t groupId       group that the scene is apart of, ignored if sceneStr is NULL.

void sceneListRestorScenes( void );

功能:从scenelistfile.dat文件恢复场景列表

附件列表

ZLL网关程序分析的更多相关文章

  1. APM程序分析-AC_WPNav.cpp

    APM程序分析 主程序在ArduCopter.cpp的loop()函数. /// advance_wp_target_along_track - move target location along ...

  2. 对Java数组中去除重复项程序分析

    我作为一个Java菜鸟,只会用简单的办法来处理这个问题.如果有大神看到,请略过,感激不尽! 所以首先先分析这道题目:数组中重复的数据进行删除,并且要让数组里的数据按原来的顺序排列,中间不能留空. 既然 ...

  3. (IOS)BaiduFM 程序分析

    本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源app BaiduFM的研究心得. 项目地址:https://github.com/belm/BaiduFM-Swift 一.项 ...

  4. Linux程序分析工具:ldd和nm

    ldd和nm是Linux下两个非常实用的程序分析工具.其中,ldd是用来分析程序运行时需要依赖的动态链接库的工具,nm是用来查看指定程序中的符号表信息的工具. 1 ldd 格式:ldd [option ...

  5. 二进制程序分析工具Pin在Windows系统中的安装和使用方法

    这篇日志其实很弱智,也是因为换了新电脑,实验环境不全(当然,做这个实验我是在虚拟机里,因为接下来想拿些恶意代码的数据),所以这里记录一下在Windows下怎么安装和使用Pin这个程序分析领域最常用的工 ...

  6. C#程序分析

    一.程序及问题 阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出 ...

  7. linux程序分析工具

    ldd和nm是Linux下两个非常实用的程序分析工具.ldd是用来分析程序运行时需要依赖的动态链接库的工具,nm是用来查看指定程序中的符号表信息的工具,objdump用来查看源代码与汇编代码,-d只查 ...

  8. Codeforces 718A Efim and Strange Grade 程序分析

    Codeforces 718A Efim and Strange Grade 程序分析 jerry的程序 using namespace std; typedef long long ll; stri ...

  9. 代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

    package com.loaderman.Coding; /* 判断101-200之间有多少个素数(质数),并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能 ...

随机推荐

  1. PageImpl是不是有问题?

    pageable.getOffset() + content.size() : total这个API 感觉没有实现该有的功能!!!

  2. Qt 子窗体嵌入父窗体

    1.创建个子窗体QDialog.在子窗体构造函数添加 Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { u ...

  3. javascript中元素的scrollLeft和scrollTop属性说明

    再说意义之前,前说一下这两个属性的适用范围: 注意:这两个属性只能用于元素设置了overflow的css样式中.否者这两个属性没有任何意义.且overflow的值不能为visible,但可以为hidd ...

  4. DB2用一张表更新其他表的数据

    表结构: CREATE TABLE ATEST  (ID    INTEGER,   NAME  VARCHAR(256),   CODE  INTEGER,   NAME2 VARCHAR(256) ...

  5. 【剑指offer】题目20 顺时针打印矩阵

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1   2   3  4 5   6   7  8 9  10 11 12 13 14 15 16 则依次打印出 ...

  6. os.walk()

    os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. walk()方法语法格式如下: os.walk(top[, topdown=True[, onerror=None[ ...

  7. <context-param>与<init-param>

    <context-param>的作用: web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件w ...

  8. JDBC题库

    一.    填空题 JDBC    ,是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问.它由一组用Java语言编写的类和接口组成. JDBC API:供程序员调用的接口与类,集 ...

  9. July 8th, Week 28th Friday, 2016

    Care and diligence bring luck. 谨慎和勤奋带来好运气. Just as we have said before, diligence is the mother of g ...

  10. MongoDB配置文件YAML-based选项全解

    配置文件部分 MongoDB引入一个YAML-based格式的配置文件.2.4版本以前的仍然兼容. 我的mongodb配置文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...