代码协议相关

请参考http://www.cnblogs.com/Wayou/p/how_to_choose_a_license.html

一般用MIT

 

协议

描述

要求

允许

禁止

Apache

一个较宽松且简明地指出了专利授权的协议。

  • 协议和版权信息
  • 声明变更
  • 商用
  • 分发
  • 修改
  • 专利授权
  • 私用
  • 附加协议
  • 责任承担(禁止让作者承担责任,可以理解为免责
  • 商标使用

GPL

此协议是应用最为广泛的开源协议,拥有较强的版权自由( copyleft )要求。衍生代码的分发需开源并且也要遵守此协议。此协议有许多变种,不同变种的要求略有不同。

  • 公开源码
  • 协议和版权信息
  • 声明变更
  • 商用
  • 分发
  • 修改
  • 专利授权
  • 私用
  • 责任承担
  • 附加协议

MIT

宽松简单且精要的一个协议。在适当标明来源及免责的情况下,它允许你对代码进行任何形式的使用。

  • 协议和版权信息
  • 商用
  • 分发
  • 修改
  • 私用
  • 附加协议
  • 责任承担

Artistic

Perl社区尤为钟爱此协议。要求更改后的软件不能影响原软件的使用。

  • 协议和版权信息
  • 声明变更
  • 商用
  • 分发
  • 修改
  • 私用
  • 附加协议
  • 责任承担
  • 商标使用

BSD

较为宽松的协议,包含两个变种BSD 2-Clause 和BSD 3-Clause,两者都与MIT协议只存在细微差异。

  • 协议和版权信息
  • 商用
  • 分发
  • 修改
  • 私用
  • 附加协议
  • 责任承担

Eclipse

对商用非常友好的一种协议,可以用于软件的商业授权。包含对专利的优雅授权,并且也可以对相关代码应用商业协议。

  • 公开源码
  • 协议和版权信息
  • 商用
  • 分发
  • 修改
  • 专利授权
  • 私用
  • 附加协议
  • 责任承担

LGPL

主要用于一些代码库。衍生代码可以以此协议发布(言下之意你可以用其他协议),但与此协议相关的代码必需遵循此协议。

  • 公开源码
  • 库引用
  • 协议和版权信息
  • 商用
  • 分发
  • 修改
  • 专利授权
  • 私用
  • 附加协议
  • 责任承担

Mozilla

Mozilla Public License(MPL 2.0)是由Mozilla基金创建维护的。此协议旨在较为宽松的BSD协议和更加互惠的GPL协议中寻找一个折衷点。

  • 公开源码
  • 协议和版权信息
  • 商用
  • 分发
  • 修改
  • 专利授权
  • 私用
  • 附加协议
  • 责任承担
  • 商标使用

No license

你保留所有权利,不允许他人分发,复制或者创造衍生物。当你将代码发表在一些网站上时需要遵守该网站的协议,此协议可能包含了一些对你劳动成果的授权许可。比如你将代码发布到GitHub,那么你就必需同意别人可以查看和Fork你的代码。

  • 协议和版权信息
  • 商用
  • 私用
  • 分发
  • 修改
  • 附加协议

Public domain dedication

在许多国家,默认版权归作者自动拥有,所以Unlicense协议提供了一种通用的模板,此协议表明你放弃版权,将劳动成果无私贡献出来。你将丧失对作品的全部权利,包括在MIT/X11中定义的无担保权利。

N/A

  • 商用
  • 分发
  • 修改
  • 私用
  • 责任承担

转载于:https://www.cnblogs.com/benchan2015/p/5012107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
61850协议是一种用于通信和控制的标准化协议,主要用于电力系统自动化领域。以下是一些相关代码程序: 1. 61850-9-2采样值传输协议的解析程序 ```C++ #include <stdint.h> #define SAMPLES_PER_SEC 10 struct SampledValueHeader { uint16_t confRev; uint16_t dataSet; uint8_t sampledValues[256]; }; void parseSampledValue(const uint8_t* data, size_t len, SampledValueHeader* header) { // Parse header header->confRev = (data[0] << 8) | data[1]; header->dataSet = (data[2] << 8) | data[3]; // Parse sampled values const uint8_t* valuesData = data + sizeof(SampledValueHeader); size_t valuesLen = len - sizeof(SampledValueHeader); for (size_t i = 0; i < valuesLen; i += 2) { header->sampledValues[i / 2] = (valuesData[i] << 8) | valuesData[i + 1]; } } ``` 2. 61850-8-1报文传输协议的编解码程序 ```C++ #include <stdint.h> #include <string.h> #define MAX_APDU_SIZE 1024 enum ApduType { CONFIRMED_REQUEST = 0x00, CONFIRMED_RESPONSE = 0x01, UNCONFIRMED = 0x02, REQUEST = 0x03, RESPONSE = 0x04, ERROR = 0x05 }; struct ApduHeader { uint32_t len; uint8_t type; uint8_t service; uint16_t invokeId; uint32_t errorCode; }; size_t encodeApdu(const ApduHeader* header, const uint8_t* data, size_t dataLen, uint8_t* buf, size_t bufSize) { if (bufSize < sizeof(ApduHeader) + dataLen) { return 0; } memcpy(buf, header, sizeof(ApduHeader)); memcpy(buf + sizeof(ApduHeader), data, dataLen); header->len = sizeof(ApduHeader) + dataLen; return header->len; } size_t decodeApdu(const uint8_t* buf, size_t bufSize, ApduHeader* header, uint8_t** data) { if (bufSize < sizeof(ApduHeader)) { return 0; } memcpy(header, buf, sizeof(ApduHeader)); if (header->len > MAX_APDU_SIZE) { return 0; } if (header->len > sizeof(ApduHeader)) { *data = new uint8_t[header->len - sizeof(ApduHeader)]; memcpy(*data, buf + sizeof(ApduHeader), header->len - sizeof(ApduHeader)); } else { *data = nullptr; } return header->len; } ``` 以上代码仅供参考,实际应用中需要根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值