联想端游联运SDK接入指南

news2024/12/23 23:05:19

1. 接入流程

本文档主要介绍了 联想PC游戏SDK接入流程、联想游戏提供的功能、接入注意事项等。

1.1. 接入方式

1. 联想游戏SDK2.1版本支持“账号+防沉迷+支付”接入方式;

a. 联想提供账号注册、登录等能力

b. 联想提供防沉迷服务

c. 联想提供游戏内支付

1.2. 对接流程

1. cp的游戏接入主要流程包括:

a. 联系联想运营,提供游戏和公司信息,获取cpid、游戏id、登录key(用于登录和防沉迷校验)、支付key(仅用于支付)

b. 签订合同

c. 接入联想游戏SDK

d. 提包测试、提供物料、上线运营等;

1.3. SDK下载地址

链接: https://lecloud.lenovo.com/share/37a7r4fRuzjNta1EE

提取码:ep4b

2. 接入说明

2.1. 登陆接入

2.1.1. 登录物料准备

设计图准备

CP需提供以下物料至联想游戏运营

1. 游戏背景图,尺寸350*400

2. 游戏LOGO,尺寸106*48

3. 游戏官网地址

登录原型如下:

备案号准备

CP需要向国家新闻出版署申请备案号,并且在版署防沉迷后台与联想游戏防沉迷备案信息绑定。联想游戏防沉迷备案信息:

公司名称:北京神奇工场科技有限公司

统一社会信用代码:91110108318338204D

2.1.2. 登录流程说明

a) 集成联想网游 SDK,登录取得token

b) 将获取到的 token 传递到游戏服务器

c) 通过【获取用户信息接口】验证 token的有效性,同时获取用户的唯一 ID

2.2. 支付接入

2.2.1. 支付模式说明

联想SDK支持两种支付接入,可任选其中一种进行接入,两者的区别如下:

模式一:接入支付h5

联想游戏SDK仅提供支付H5页面,CP需要将支付相关参数拼接至支付url地址后,并自行开发页面容器展示该url。

模式二:直接调起SDK

联想游戏SDK提供支付页面,CP仅需要将相关参数上传,调用联想游戏SDK。

2.2.2. 模式一接入说明

2.2.2.1. 支付流程说明

2.2.2.2. 准备页面容器

1. 联想PC游戏SDK提供游戏内支付页面,支持用户直接在游戏内支付。使用该支付页时,游戏CP需要提供:

a. 页面容器:提供526px*398px的页面容器,在游戏内拉起web页;

b. 窗口标题栏:由游戏提供,下图为建议标准样式,接入资料zip包中附带标准素材;

2.2.2.3. 拼接参数至支付页url

接口说明

cp方拉起联想支付页URL时需要携带以下参数:(所有参数都需要进行urlEncode编码)

请求参数
urlhttps://hd.lenovomm.com/front-wdsdk/pay/index.html
接口协议HTTP[S] GET
请求参数参数名参数类型是否必填说明
partnerCPIDstring*是由联想运营提供
notifyUrl异步通知地址string*是CP方提供
outTradeNo订单号string双方对账使用,如未传订单号,会生成唯一订单号,后续对账以联想订单号为准。
appId游戏idint*是由联想运营提供(gameId)
totalFee指定金额int最小为1元,精确到小数点后2位。不传则用户可自定义充值金额
subject商品名称string*是商品的名称,例:月卡、元宝、钻石等(需要URL编码)
account用户账号string*是用户账号,需要脱敏
extraCommonParam透传参数json格式jsoncp业务透传参数
server区服名称string*是区服名称(需要URL编码)
role角色名称string*是角色名称(需要URL编码)
bizid游戏备案号string*是游戏备案号
tgt用户登录成功时返回的TGTstring*是用户唯一标识
sign使用支付参数生成的验签字符串string*是参考7.1.4签名备注
sign_type签名类型string*是签名类型固定值RSA2

2.2.3. 模式二接入说明

2.2.3.1. 支付流程说明

2.2.3.2. 传参说明

cp方拉起联想SDK时需要传递以下参数:

请求参数参数名参数类型是否必填说明
notifyUrl异步通知地址string*是CP方提供
outTradeNo订单号string双方对账使用,如未传订单号,会生成唯一订单号,后续对账以联想订单号为准。
totalFee指定金额int最小为1元,精确到小数点后2位。不传则用户可自定义充值金额
subject商品名称string*是商品的名称,例:月卡、元宝、钻石等
extraCommonParam透传参数json格式jsoncp业务透传参数
server区服名称string区服名称
role角色名称string角色名称

2.3. 防沉迷

2.3.1. 防沉迷流程说明

1. 联想PC游戏SDK提供防沉迷的接入能力,其中用户登陆时的实名校验、实名认证、未成年游戏限制均已包含在登陆的流程内,无需CP接入和二次开发。用户支付时的实名校验和消费限制包含在支付的流程内,无需CP接入和二次开发。

2. 但针对游戏内未成年用户时长超出国家游戏时长规定的场景,游戏SDK不提供直接踢出游戏的能力,而是提供一个【用户防沉迷接口】,可查询用户在当前时间是否可玩游戏,CP需要通过调用接口轮询用户在当前时间是否可玩游戏,若不可玩游戏,需要将用户踢出。

3. 联想端游SDK API介绍

3.1. 登陆的调用方式

1. 端游SDK以dll形式提供,名称为PCGameSDK.dll,可使用动态或静态加载方式使用该dll。ludp.dll为PCGameSDK.dll提供功能支持,并配有相关导入库和头文件PCGameSDK.lib,PCGameSdk.h。

2. PCGameSDK.dll使用说明:

a) 接口使用说明:

i. PCGameSDK.dll,ludp.dll需放在调用该dll的exe同级目录下。

ii. 调用LGSDKInit,该接口用来设置回调,用于接收SDK返回的数据。参数为LGSDKCallBack callback,其中

typedef bool(*LGSDKCallBack)(wchar_t* in_param);

接口返回说明 :

错误码说明
true成功
false失败

iii. 调用LGSDKLogin,该接口用来弹出登录窗口。传入参数为json字符串,如下:

 调起登录器参数:

参数说明
cpid联想游戏运营分配
appid游戏id,联想游戏运营分配
bizid游戏备案码,CP向国家新闻出版署申请
Key联想游戏运营分配

登陆成功后回传参数:

参数说明
TGT发起支付时携带,作为用户标识
Token用户token,结合Realm查询联想用户id作为用户唯一标识
Age用户年龄,防沉迷时携带

 接口返回说明 :

错误码说明
0成功
10初始化接口未调用
20登录窗已存在
30参数错误

b) 接口调用时机:

CP启动时应首先调用LGSDKInit,LGSDKLogin接口,弹出登录框,登录成功以后,再走CP 后续流程。

c) 接口调用示例代码:

std::wstring strParam = 
L"{\"appid\":\"此处替换成appid\",
\"cpid\":\"此处替换成cpid\",
\"bizid\":\"此处替换成bizid\",
\"key\":\"此处替换成key \"}";
int nSize = strParam.size();
bool bRet = LGSDKInit(SDKCallBackFunAsync);
wchar_t *pwszBuffer = new wchar_t[nSize + 1];
ZeroMemory(pwszBuffer, nSize + 1);
tcscpy_s(pwszBuffer, nSize + 1, strParam.c_str());
int statusCode = LGSDKLogin(pwszBuffer);
delete[] pwszBuffer;
pwszBuffer = nullptr;
return 0;

其中回调函数可以接收到SDK返回的数据,数据格式为json。

bool CTest::SDKCallBackFunAsync(wchar_t* in_param)
{
 if (in_param == nullptr)
  return false;
 ::MessageBox(NULL, in_param, L"提示信息", MB_OK);
 return true;
}

3.2. 支付的调用方式

1.支付接口定义:

extern "C"  PCGAME_SDK_API int LGSDKPay(wchar_t* in_param);

入参:json格式 具体key值定义结构参考 2.2.3.2

返回说明:0- 成功 , 30-参数错误

2使用说明:用户登录成功后才能调用该接口  

3接口调用示例:

std::wstring strPayContent = L"{\"notifyUrl\":\"https://api.game.com\",  \
\"subject\" : \"1元礼包",\"totalFee\" : 1}";
int nRet = LGSDKPay((wchar_t*)strPayContent.c_str());                              

4. 服务端API介绍

4.1. 服务端获取用户信息接口

1. 请求地址https://auth.lenovomm.com/game-ms-id-auth-core/api/a ccount/identify

2. 请求类型:POST

3. Content-type: application/json

4. 参数(json字符串)

名称字段是否必填说明
标识realmY固定值,传pcgame.lenovomm.com
tokenlpsustY
当前时间戳毫秒值timestampY
随机字符串nonceY
游戏idappIdY
签名signY请看7.1.4签名备注
签名类型sign_typeY默认值RSA2

5. 返回值格式

{

 "code": 10000,    //10000表示正常,非10000表示业务异常

 "data": {},    //返回的数据

 "message": "string"  //错误提示信息

}

6. http状态码:

200-成功

400-缺少参数

401-签名错误

500-业务异常

4.2. 服务端支付通知接口

接口说明

用于通知用户支付状态。

请求参数

url游戏方接收支付通知URL (即下单时传递的notifyUrl参数)
接口协议HTTP[S] (POST)
请求参数参数名参数类型是否必填说明
sign签名string*是支付通知回调签名,参加下方签名规则
outTradeNo商户网站唯一订单号string*是商户系统内部订单号,同一商户下唯一
subject商品名称string*是商品的名称,例:月卡、元宝、钻石等
body商品描述string对一笔交易的具体描述信息
tradeNo支付宝、微信交易号string该交易在支付宝、微信系统中的交易流水号
tradeStatus交易状态string支付状态,TRADE_SUCCESS ——交易成功,其他值为失败状态
totalFee交易金额number该笔订单的资金总额,单位为元,精确到小数点后两位。
extraCommonParam公用回传参数string*是用于商户回传参数,该值不能包含“=”、“&”等特殊字符。如果用户请求时传递了该参数,则支付通知接口会回传该参数。

通知接口返回

1.  HTTP状态码为200,表明调用成功。其他状态为失败。

2.  接口返回“success”,则代表交易成功,返回其他值则代表通知失败。

3.  针对通知失败的订单,会定时发起重试请求。

支付签名规则

1.  参数排序

所有请求参数剔除sign以及值为空的参数,按照参数字母升序排

2.参数拼接

将排序后的参数与其对应值,按照参数=参数值的格式,并用“&”字符将其拼接成串,在最后追加上支付key。

3. 对拼接后字符串做MD5并转小写。

4. 支付key

支付接口中所用的key与登录接口的key不同,请注意区分

支付签名示例

支付key :2ppfQCHMWid1

明文字符串:outTradeNo=465215151893&partner=208810156864&subject=game &totalFee=102ppfQCHMWid1

加密字符串:1bbdebc58f85e8b6f83797109ce76d89

4.3. 服务端用户防沉迷接口

调用方法:

1. 请求路径https://vb.lenovomm.com/game-ms-user-identify-core/api/underagegamepreventaddiction

2. 请求类型:POST

3. Content-type: application/json

4. Header参数

名称字段是否必填说明
标识realmY固定值,传pcgame.lenovomm.com(不参与签名)
lpsusttokenY(不参与签名)

5. body参数(json字符串)

名称字段是否必填说明
当前时间戳毫秒值timestampY
随机字符串nonceY
游戏idappIdY
签名signY请看7.1.4备注
签名类型sign_typeY默认值RSA2
年龄ageY

6. 返回值格式

{

 "code": 10000, //10000表示正常,非10000表示业务异常

 "data": {

   "preventAddictionMsg": "限制登录提示信息",

   "preventAddictionType": 1-不限制登录,2限制登录

 },

 "message": "Success"

}

7. http状态码:

200-成功

400-缺少参数

401-签名错误

500-业务异常

5. SDK版本更新日志

5.1. V2.1.0内容变更

变更项接入说明
1、登录页置顶展示,且满足登录窗口拖动游戏登录页置顶在windows页面最顶层
2、获取用户信息接口新增返回年龄返回参数新增年龄字段
3、收银台支付封装,可直接调起联想SDK完成支付流程V2.1.0新增内容,V2.0.0可满足支付的情况下,无需更新

6. 接入注意事项

登录key和支付key不同,请区分使用

7. 其他说明

7.1. 安装包提供

1. 安装包需要同时提供2种形式:

a. 整包:需要将所需资源全部打包到一个安装程序中,安装过程无需下载额外资源;

b. 下载器:提供游戏下载器,安装时通过下载器下载游戏资源;

7.2. 游戏的更新

1. 更新资源小于1G的版本更新在游戏内完成,无需向联想游戏提供游戏更新包;

2. 更新资源大于1G的版本更新时,除游戏内更新外,还需要重新向联想游戏提供安装包,并提供版本更新说明;

3. 下载器如有更新,需要重新提供安装包;

7.3. 游戏数据

1. 游戏方需要提供游戏数据,包含:游戏安装完成数、游戏激活数、游戏卸载数、用户游戏局数分布、用户购买道具信息分布;

2. 建议以后台形式提供;

7.4. 签名备注

开发者需要自行实现签名,签名过程如下:

1.筛选并排序

获取所有请求参数,不包括字节类型参数,如文件,字节流,不包括请求路径中占位符的值,剔除sign字段,剔除值为空的参数,并按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。

2.拼接

将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来,此时生成的字符串为待签名字符串。

3.签名

使用各自语言对应的SHA256WithRSA(对应sign_type为RSA2)或SHA1WithRSA(对应sign_type为RSA)签名函数利用开发者私钥对待签名字符串进行签名,并进行Base64编码。

4.拼接参数

将生成的签名赋值给sign参数,拼接到请求参数中,再将每个参数做urlencode(utf-8编码)后发起请求即可。 注: 请求类型为:application/x-www-form-urlencoded才需要编码,application/json 不用编码

示例:

一、签名准备

1. 原始内容: 【classifyCode=PC&v=&sign_type=RSA2&appId=20201028】

2. 签名私钥: 【MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQClcxcmpvWF8l0rjHtqmqCGXnzqnADYh3yirMlOVW+F8A+BboJfrOiyddwjLnNhwa02bSLu8jKdJ5QDLTKLvgQdQsEQviO9h22nu6ouFEfBT4rbxlc83B3vT1FZaT00DAHlATKDCARbjrQ0EEr57bkWX2SSKFEEOBCA06KwituJk/fGi6oNAD+e/KMxfPgdjzM2fwul2YxV1zHCSc/Xc7EBjjY/0tk/+/TehIBoE0zEpyzUXLVKt71i8qw0ygiRFO1Q3NTKT+Ht4ouK34827QvMpTQ/I0MGbdAtjZDLY6SNi1EoHp3X9xdr1kvP8XAggTiHG5lmL3EK62vTcbsA9KjzAgMBAAECggEBAJCNNH3tw3frICILVEz4miWr6kHkWQzVmzxZ8GvDU3PXIQT5s2i6HnjFZrdKPz76w0ZZJftUmooZ6US5OX9EXj3ec+YX6gwOhezVlsM5rtOjlnOcH94phvHt/+o5e2K81u7pE+PNnlkMHj+auJcSbvKwF6NnHBmujiSwQ2UxfMv+lwaazrTu/FFPFCMGtYkxeqC9Iwe9qJAQURCgE4lgzMuM2rUZqAPhZ298+c/lbovNWtV9tGb8jdiKprpUDuvYnJ4JHkUq5+V7WCtESzBUZVrXv0wkie2RJkN/OsirtwYFk+0MjX1sH4ciJFhY9atPfD1dZYBhhZezAQQuOU4ja1kCgYEA0Ia0Zo9z1GnWQbSyrdYwj9CgSm/fiZSU1nhVqmMJp3GWb9R42nMRcNk9Op4spreENCK1r55BZzmCMs4KIj9oiJz0ckczUgWoRHFUDwd5qWoMdCWlnJuQeFabd6bPxZRmXShIhIy1NQbk2lzIq4bpWKgEQ2TKSDaQ8S2JZj3q890CgYEAyx3M0pndOrpqyKYaJIJKsb+jX4NUSmFTzlWtASGKNG2MQeWwAHKkWi2GEv2g2w/XijNUL4FCkGwCT0o4v1HXRrs5LWRXislFHMDHAIdwrSWM5bouPesXDe67tC5hTmu8UhGsUfemB086uUgkqwZv23x0m9ZvHcfogN3FQS6faw8CgYBl6qB7S/uhwsSsQoPeAMSlVaMyHnGTzaHdHN1JtLQAObz8FU2n/vt0O0j4wFw0c5dS3/AK0H9I00u2Rwue53zQ4F19CR2lJgyyvu0Fl3K4AZPqpIfH/iRjHHlJxqbf+4L4Xvrqhdb+/sqViyms4/hik2PaCIXxO3Il3kq8RODzpQKBgQDCizlqIcs+e9zZcBasD0thsm7VheFPGKd/gpog8jIAg0iKuWd5FlUKtn2rZNgT2bmVehJRKdpKn9kafrmZrdamvZ5HNsuOd7bFknNIs3EdtlCcnFW8IpbDVnzcWGwFA7WtWZYWMEAK0j0px8qvMIwkyrCZrqpg+N9dxowvIWu5ywKBgGbULkj4HIuMOhCb68R1OLf2n8VloeuTnX0mHJWqvN2pFt2K8lm2ZWX4GpC09QZXw/1C0VM1syKsNbUe/2sprF0FYzbRrdvPk2yjvJbus5XhnPL5CW9zOUyu+KIHwsOOAVoNn37j3sZnQ3unS+it4Mpno+LbblCffGO/Czg68BX2】

二、生成待签名字符串:

1. 剔除参数名(和参数值)前后的空格: (正常业务下,参数值前后不应含有空格) 【classifyCode=PC&v=&sign_type=RSA2&appId=20201028】 删除空字段【v】

2. 剔除空值参数: 【classifyCode=PC&sign_type=RSA2&appId=20201028】

3. 排序: 【appId=20201028&classifyCode=PC&sign_type=RSA2】

三、生成签名: 【DZw/dCtCgRkvszdCRKekzKDe2m+J8pZxh4eCk1DNOXE7SKq4TE6pm/z7N49LaSauEpXyX4MJR5VZSRUeu8avO3K4ma6MGcDMKg2lWD7MLwoA9O0Q7QXVlY04ytwlXw9GVya8oL+Dyka0CspTSPJUZtKf5oJRK03XMRyWJw6+ERJuMb2HptgknNPYhsm7B2SqCyDRaVUa69h9NxIxhm17ora3RNbSkThnbkaFtxAXSol7GGWHHng23uekv8MJSalwFSZS4tuPhc4EMIAigC57+pdntgGlzmHj9AfnQ1FODV9bk0cJYDaK7eYUxUZx2T/OfKtzawKoM+qLHTw27fB/1g==】

7.5. SDK兼容性说明

SDK仅支持Win10以上操作系统

原文地址:https://open.lenovomm.com/developer/doc?id=1689213143070081026

联想开放平台地址:联想开放平台

联想开发者专属QQ客服(工作日9:30-18:00):联想开发平台首页右侧悬浮的在线客服聊天入口可直接会话,无需添加好友。也可搜索官方客服QQ号2881414004。

联想应用商店微信公众号:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1695848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用LoRA进行高效微调:基本原理

Using LoRA for efficient fine-tuning: Fundamental principles — ROCm Blogs (amd.com) [2106.09685] LoRA: Low-Rank Adaptation of Large Language Models (arxiv.org) Parametrizations Tutorial — PyTorch Tutorials 2.3.0cu121 documentation 大型语言模型&#xf…

Boyer-Moore投票算法

摩尔投票法,又称为博耶-摩尔多数投票算法,是一种用于在一组数据中寻找多数元素(出现次数超过一半的元素)的算法。该算法的效率非常高,时间复杂度为O(n),空间复杂度为O(1),适合处理大数据量的情况。 步骤 首先定义两个…

JSONP原理及应用实例

JSONP是什么 JSONP&#xff08;JSON with Padding&#xff09;是一种跨域数据请求技术&#xff0c;它允许网页在不受同源策略限制的情况下从其他域中请求数据。JSONP的原理是利用 <script> 标签的跨域特性&#xff0c;通过 <script> 标签&#xff0c;指向包含 JSO…

通过继承React.Component创建React组件-5

在React中&#xff0c;V16版本之前有三种方式创建组件&#xff08;createClass() 被删除了)&#xff0c;之后只有两种方式创建组件。这两种方式的组件创建方式效果基本相同&#xff0c;但还是有一些区别&#xff0c;这两种方法在体如下&#xff1a; 本节先了解下用extnds Reac…

vue+elemntui 加减表单框功能样式

<el-form ref"form" :model"form" :rules"rules" label-width"80px"><el-form-item label"配置时间" prop"currentAllocationDate"><div v-for"(item,key) in timeList"><el-date…

ROCm上来自Transformers的双向编码器表示(BERT)

14.8. 来自Transformers的双向编码器表示&#xff08;BERT&#xff09; — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import torch from torch import nn from d2l import torch as d2l#save def get_tokens_and_segments(tokens_a, tokens_bNone):""&qu…

Cortex-M3的SysTick 定时器

目录 概述 1 SysTick 定时器 1.1 SysTick 定时器功能介绍 1.2 SysTick 定时器功能实现 1.3 SysTick在系统中的作用 2 SysTick应用的实例 2.1 建立异常服务例程 2.2 使能异常 2.3 闹钟功能 2.4 重定位向量表 2.5 消灭二次触发 3 SysTick在FreeRTOS中的应用 3.1 STM…

(完全解决)Python字典dict如何由键key索引转化为点.dot索引

文章目录 背景解决方案基础版升级版 背景 For example, instead of writing mydict[‘val’], I’d like to write mydict.val. 解决方案 基础版 I’ve always kept this around in a util file. You can use it as a mixin on your own classes too. class dotdict(dict)…

如何进行异地多地兼容组网设置?

跨地区工作、远程办公和异地合作已成为常态。由于网络限制和安全性要求&#xff0c;远程连接仍然是一个具有挑战性的问题。为了解决这一难题&#xff0c;各行各业都在寻找一种能在异地多地兼容的组网设置方案。本文将着重介绍基于【天联】的组网解决方案&#xff0c;探讨其操作…

SpringBoot——整合Thymeleaf模板

目录 模板引擎 新建一个SpringBoot项目 pom.xml application.properties Book BookController bookList.html ​编辑 项目总结 模板引擎 模板引擎是为了用户界面与业务数据分离而产生的&#xff0c;可以生成特定格式的页面在Java中&#xff0c;主要的模板引擎有JSP&…

如何评价刘强东说“业绩不好的人不是我兄弟”

在近日的一次京东管理层会议上&#xff0c;创始人刘强东以不容置疑的口吻表明了对公司文化的坚定态度&#xff1a;“凡是长期业绩不好&#xff0c;从来不拼搏的人&#xff0c;不是我的兄弟。”这句话不仅是对那些工作表现不佳的员工的直接警告&#xff0c;也透露出京东在追求业…

C++语法|多重继承详解(一)|理解虚基类和虚继承

系列汇总讲解&#xff0c;请移步&#xff1a; C语法&#xff5c;虚函数与多态详细讲解系列&#xff08;包含多重继承内容&#xff09; 虚基类是多重继承知识上的铺垫。 首先我们需要明确抽象类和虚基类的区别&#xff1a; 抽象类&#xff1a;有纯虚函数的类 虚基类是什么呢&a…

阿里云的域名购买和备案(一)

前言 本篇文章主要讲阿里云的域名购买和备案。 大家好&#xff0c;我是小荣&#xff0c;我又开始做自己的产品迷途dev了。这里详细记录一下域名购买的流程和备案流程。视频教学 购买流程 1.阿里云官网搜索域名注册 2.搜索你想注册的域名 3.将想要注册的域名加入域名清单 4.点…

[Linux]网络原理与配置

一.NAT模式网路配置 虚拟系统的IP地址处于随机网段&#xff0c;同时在母机上会额外有一个与虚拟IP地址网段相同的IP地址&#xff0c;可以实现母机与虚拟机的通信。虚拟系统的IP地址可以通过主机实际的IP地址作为代理IP&#xff0c;与外部系统进行通信。 优点&#xff1a;不造…

2024.05.25学习记录

1、面经复习&#xff1a; JS异步进阶、vue-react-diff、vue-router模式、requestldleCallback、React Fiber 2、代码随想录刷题、动态规划 3、组件库使用storybook

【C++】牛客——JZ38 字符串的排列

✨题目链接&#xff1a; JZ38 字符串的排列 ✨题目描述 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数…

结合时间复杂度浅谈二分法的好处(将持续更新,绝对值你一个收藏)

前言 笔者虽然刷的算法题不多,但是笔者也敢说,二分法真的是一种很优越的算法,使用上限极高的那种,正因如此,笔者才想浅谈一下二分法. 封面是我很喜欢的一个游戏角色,不知道有没有老gal玩家知道! 什么是二分法? 枚举查找即顺序查找&#xff0c;实现原理是逐个比较数组 a[0:…

【C++】详解二叉搜索树

目录 树概述 二叉搜索树概述 概念 特性 元素操作 插入 删除 模拟实现 框架 查找 插入 删除 树概述 树——在计算机中是一种很常见的数据结构。 树是一种很强大的数据结构&#xff0c;数据库&#xff0c;linux操作系统管理和windows操作系统管理所有文件的结构就是…

【基础详解】快速入门入门 SQLite数据可

简介 SQLite 是一个开源的嵌入式关系数据库&#xff0c;实现了自给自足的、无服务器的、配置无需的、事务性的 SQL 数据库引擎。它是一个零配置的数据库&#xff0c;这意味着与其他数据库系统不同&#xff0c;比如 MySQL、PostgreSQL 等&#xff0c;SQLite 不需要在系统中设置…

golang中的字节序 binary BigEndian 大端 , LittleEndian 小端 理解与write写入注意事项

在golang的binary包中有2个字节系的变量定义BigEndian和LittleEndian 这个东西是go里面很有特点的玩意&#xff0c;我们在java, php等语言中是基本看不到&#xff0c;因为大部分的语言默认使用的是BigEndian 大端模式&#xff0c; 而go语言里面是你自己可选的。 这个字节系大小…