派金SDK接入文档

news2024/12/23 6:19:36

一、接入SDK
1、将sdk文件手动导入到目标项目中,如下图所示:
请添加图片描述
2、该SDK需接入其他三方广告,通过pod的方式接入,在Profile中加入如下代码:

  pod 'GDTMobSDK',     '~> 4.14.40'
  pod 'BaiduMobAdSDK', '~> 5.313'
  pod 'KSAdSDK',       '~> 3.3.51.1'

3、该SDK所依赖的②中的三方库的版本号与您项目中本身存在的库的版本号不一致,请您适配或联系SDK开发者适配。
4、该SDK不是必须依赖②中的三方库,如您不需要某个广告商的资源,也请您联系开发者开发。

二、代码接入
1、初始化

// 导入项目头文件
#import <MTAd/MTAd.h>
// 初始化方式,token 是指运营方提供的与接入方bundle id 绑定了的token
[MTAdApi initXWAdWithToken:@"token"];
// 获取当前sdk 版本号
NSLog(@"=========%@",[MTAdApi MT_version]);

2、服务端竞价相关数据

// 上报内容的key-value内容如下
typedef NS_ENUM(NSUInteger, BidPriceKey) {
    /** 代表竞胜方 价格的key */
    KEY_WIN_EXPECT_COST_PRICE   = 1,
    /** 代表竞胜的时候 失败放的最大价格的 key */
    KEY_HIGHEST_LOSS_PRICE      = 2,
    /** 代表是 竞胜败 方 时候的 竞价原因    它的 valut 值 可以是: 0、其他,1、竞争力不足,2、无广告返回,3、未参与竞价) */
    KEY_FAILED_REASON           = 3,
    /** 代表 竞败方 广告厂商  它的值可以是  (0、其他渠道,1、广点通,2、百青藤,3、穿山甲,4、快手,5、京准通,10、Π金引擎) */
    KEY_ADN_TYPE                = 4,
    /** 竞胜败⽅渠道名称 */
    KEY_ADN_NAME                = 5,
    
    /**
       * 竞胜之后调用, 需要在调用广告 show 之前调用
       *
       * @param params - 必填,其中
       *               键 KEY_EXPECT_COST_PRICE 对应值为竞胜出价(单位:分),类型为Int,选填;
       *               键 KEY_HIGHEST_LOSS_PRICE 对应值为最大竞败方出价(单位:分),类型为Int,选填。
       */
};

//获取竞价信息后,将会得到一个model 信息如下
@interface PRXServerBidingModel : NSObject

/** 京胜 token */
@property (nonatomic,copy) NSString * token;

/** 京胜 价格 */
@property (nonatomic,copy) NSString * price;

/** 京胜 上报url */
@property (nonatomic,copy) NSString * nurl;

/** 竞败 上报url */
@property (nonatomic,copy) NSString * lurl;

/**  错误码 */
@property (nonatomic,copy) NSString * errorCode;


@end

3、开屏广告接入方式

// 初始化 开屏广告对象
[[MTSplashObject alloc] initWithPlacementId:@"广告位id"];
//遵守 开屏广告对象的代理 代理详情参见 <MTSplashObjectDelegate>
xxx.delegate = self;
// 获取竞价信息  --- 适用服务端竞价
[xxx getBidingInfoResult];
// 获取竞价信息后,媒体方会收到 如下代理(请提前签订delegate)
- (void)mt_splashbidEnd:(MTSplashObject *)splashAd info:(PRXServerBidingModel *)info{
    NSLog(@"2开屏广告竞价成功----->%s,error = %@ -- info-%@",__func__,splashAd,info);
}
//服务端竞价 加载广告方式
[xxx bidLoadAd];
//普通模式 加载广告方式
[xxx loadAd];
/**
 *  开屏广告素材加载成功
 */
- (void)mt_splashAdDidLoad:(MTSplashObject * __nullable)splashAd{    
    NSLog(@"2开屏广告素材加载成功----->%s,error = %@",__func__,splashAd);
}

/**
 *  开屏广告展示失败
 */
- (void)mt_splashAdFailToPresent:(MTSplashObject * __nullable)splashAd withError:(NSError *)error{
    NSLog(@"3开屏广告展示失败----->%s,error = %@",__func__,error);
}

//在广告加载成功之后 才可以展示广告
//支持 开屏广告底部 自定义视图
//支持 开屏广告 自定义跳过按钮
[xxx showAdInWindow:windoww withBottomView:nil skipView:nil];
// 由该sdk提供的广告资源得到竞价结果后请您调用如下代码上报
/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法


/**
 *  应用进入后台时回调
 *  详解: 当点击下载应用时会调用系统程序打开,应用切换到后台
 */
- (void)mt_splashAdApplicationWillEnterBackground:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"4应用进入后台时回调----->%s",__func__);

}

/**
 *  开屏广告曝光回调
 */
- (void)mt_splashAdExposured:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"5开屏广告曝光回调----->%s",__func__);

}

/**
 *  开屏广告点击回调
 */
- (void)mt_splashAdClicked:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"6开屏广告点击回调----->%s",__func__);

}

/**
 *  开屏广告将要关闭回调
 */
- (void)mt_splashAdWillClosed:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"7开屏广告将要关闭回调----->%s",__func__);

}

/**
 *  开屏广告关闭回调
 */
- (void)mt_splashAdClosed:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"8开屏广告关闭回调----->%s",__func__);
}

- (void)mt_splashAdClickSkip:(MTSplashObject *)splashAd
{
    NSLog(@"9点击了跳过按钮");
}

/**
 *  开屏广告点击以后即将弹出全屏广告页
 */
- (void)mt_splashAdWillPresentFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"10开屏广告点击以后即将弹出全屏广告页----->%s",__func__);

}

/**
 *  开屏广告点击以后弹出全屏广告页
 */
- (void)mt_splashAdDidPresentFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"11开屏广告点击以后弹出全屏广告页----->%s",__func__);

}

/**
 *  点击以后全屏广告页将要关闭
 */
- (void)mt_splashAdWillDismissFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"12点击以后全屏广告页将要关闭----->%s",__func__);

}

/**
 *  点击以后全屏广告页已经关闭
 */
- (void)mt_splashAdDidDismissFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"13点击以后全屏广告页已经关闭----->%s",__func__);

}

/**
 * 开屏广告剩余时间回调
 */
- (void)mt_splashAdLifeTime:(NSUInteger)time splashAd:(MTSplashObject * _Nullable)splashAd
{
    NSLog(@"14开屏广告剩余时间回调----->%s",__func__);

}

4、激励视频 接入方式

// 激励视频初始化
xxx = [[MTRewardVideoAd alloc] initWithPlacementId:@"广告位"];
// 签代理   遵守代理 <MTRewardVideoAdDelegate>
xxx.delegate = self;
//服务端竞价 --- 获取竞价信息
[xxx getBidingInfoResult];

//收到竞价信息后 
- (void)mt_rewardVideoBidEnd:(MTRewardVideoAd *)rewardedVideoAd info:(PRXServerBidingModel *)info{
    self.statusLabel.text = @"竞价成功";
}
//服务端竞价方式 -- 加载广告
[xxx bidLoadAd];
//普通模式下 --- 加载广告
[xxx loadAd];


/**
 广告数据加载成功回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidLoad:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告数据加载成功";
}

/**
 视频广告各种错误信息回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 @param error 具体错误信息
 */
- (void)mt_rewardVideoAd:(MTRewardVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error
{
    NSLog(@"%s",__FUNCTION__);
      if (error.code == 4014) {
          NSLog(@"请拉取到广告后再调用展示接口");
          self.statusLabel.text = @"请拉取到广告后再调用展示接口";
      } else if (error.code == 4016) {
          NSLog(@"应用方向与广告位支持方向不一致");
          self.statusLabel.text = @"应用方向与广告位支持方向不一致";
      } else if (error.code == 5012) {
          NSLog(@"广告已过期");
          self.statusLabel.text = @"广告已过期";
      } else if (error.code == 4015) {
          NSLog(@"广告已经播放过,请重新拉取");
          self.statusLabel.text = @"广告已经播放过,请重新拉取";
      } else if (error.code == 5002) {
          NSLog(@"视频下载失败");
          self.statusLabel.text = @"视频下载失败";
      } else if (error.code == 5003) {
          NSLog(@"视频播放失败");
          self.statusLabel.text = @"视频播放失败";
      } else if (error.code == 5004) {
          NSLog(@"没有合适的广告");
          self.statusLabel.text = @"没有合适的广告";
      } else if (error.code == 5013) {
          NSLog(@"请求太频繁,请稍后再试");
          self.statusLabel.text = @"请求太频繁,请稍后再试";
      } else if (error.code == 3002) {
          NSLog(@"网络连接超时");
          self.statusLabel.text = @"网络连接超时";
      }
      NSLog(@"ERROR: %@", error);
}
// 视频加载成功后,展示激励视频, 注意 controller 不能为空
[xxx showAdFromRootViewController:controller];

由sdk竞价成功或失败 上报方法

/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法

/**
 视频播放页即将展示回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdWillVisible:(MTRewardVideoAd *)rewardedVideoAd
{
    
}

/**
 视频广告曝光回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidExposed:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告已曝光";

}

/**
 视频播放页关闭回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidClose:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告已关闭";

}

/**
 视频广告信息点击回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidClicked:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告已点击";
}

/**
 视频广告播放达到激励条件回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidRewardEffective:(MTRewardVideoAd *)rewardedVideoAd
{
    NSLog(@"播放达到激励条件");

}

/**
 视频广告视频播放完成

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidPlayFinish:(MTRewardVideoAd *)rewardedVideoAd
{
    NSLog(@"视频播放结束");
    self.statusLabel.text = @"视频播放结束";


}

5、插屏广告 接入方式

// 插屏广告对象初始化方式
xxx = [[MTInterstitialAd alloc] initWithPlacementId:@"代码位"];
// 遵守代理 <MTInterstitialAdDelegate>
xxx.delegate = self;
//服务端竞价 获取竞价信息
[xxx getBidingInfoResult];

//获取竞价信息 得到的数据 回调信息
- (void)mt_unifiedInterstitialBidEnd:(MTInterstitialAd *)splashAd info:(PRXServerBidingModel *)info {
    self.statusLabel.text = @"竞价数据请求成功";
}
//服务端竞价方式 -- 加载广告
[xxx bidLoadAd];
//普通模式下 --- 加载广告
[xxx loadAd]

// 加载结果的回调
/**
 *  广告预加载成功回调
 *  详解:当接收服务器返回的广告数据成功且预加载后调用该函数
 */
- (void)mt_unifiedInterstitialSuccessToLoadAd:(MTInterstitialAd *)unifiedInterstitial{
    self.statusLabel.text = @"广告数据请求成功";
}

/**
 *  广告预加载失败回调
 *  详解:当接收服务器返回的广告数据失败后调用该函数
 */
- (void)mt_unifiedInterstitialFailToLoadAd:(MTInterstitialAd *)interstitialAd error:(NSError *)error
{
    self.statusLabel.text = @"广告数据加载失败";
}
// 广告加载成功后  展示开屏  controller 不能为空
[xxx presentAdFromRootViewController:controller];

竞价结果汇报方法

/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理回调方法

/**
 *  广告预加载成功回调
 *  详解:当接收服务器返回的广告数据成功且预加载后调用该函数
 */
- (void)mt_unifiedInterstitialSuccessToLoadAd:(MTInterstitialAd *)unifiedInterstitial{
    self.statusLabel.text = @"广告数据请求成功";
    NSLog(@"%s,%@",__func__,self);
}

/**
 *  广告预加载失败回调
 *  详解:当接收服务器返回的广告数据失败后调用该函数
 */
- (void)mt_unifiedInterstitialFailToLoadAd:(MTInterstitialAd *)interstitialAd error:(NSError *)error
{
    self.statusLabel.text = @"广告数据加载失败";
    NSLog(@"%s,%@",__func__,self);
    NSLog(@"error==%@",error.description);


}

/**
 *  插屏广告将要展示回调
 *  详解: 插屏广告即将展示回调该函数
 */
- (void)mt_unifiedInterstitialWillPresentScreen:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  插屏广告视图展示成功回调
 *  详解: 插屏广告展示成功回调该函数
 */
- (void)mt_unifiedInterstitialDidPresentScreen:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  插屏广告展示结束回调
 *  详解: 插屏广告展示结束回调该函数
 */
- (void)mt_unifiedInterstitialDidDismissScreen:(MTInterstitialAd *)interstitialAd
{
    self.statusLabel.text = @"插屏广告展示结束回调";
    NSLog(@"%s,%@",__func__,self);
}

/**
 *  详解:当点击应用下载或者广告调用系统程序打开时调用
 */
- (void)mt_interstitialApplicationWillEnterBackground:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);
    
}

/**
 *  插屏广告曝光回调
 */
- (void)mt_interstitialWillExposure:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}


/**
 *  插屏广告点击回调
 */

- (void)mt_unifiedInterstitialClicked:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);
    self.statusLabel.text = @"插屏广告点击回调";

}

/**
 *  点击插屏广告以后即将弹出全屏广告页
 */
- (void)mt_unifiedInterstitialAdWillPresentFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  点击插屏广告以后弹出全屏广告页
 */
- (void)mt_unifiedInterstitialAdDidPresentFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  全屏广告页将要关闭
 */
- (void)mt_unifiedInterstitialAdWillDismissFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  全屏广告页被关闭
 */
- (void)mt_unifiedInterstitialAdDidDismissFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);
    self.statusLabel.text = @"全屏广告页被关闭";

}
/**
 *  当点击下载应用时会调用系统程序打开其它App或者Appstore时回调
 */
- (void)mt_unifiedInterstitialWillLeaveApplication:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 *  插屏广告曝光回调
 */
- (void)mt_unifiedInterstitialWillExposure:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
    self.statusLabel.text = @"插屏广告曝光回调";

}

/**
 * 插屏视频广告 player 播放状态更新回调
 */
- (void)mt_unifiedInterstitialAd:(MTInterstitialAd *)unifiedInterstitial playerStatusChanged:(MTMediaPlayerStatus)status{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 WillPresent 回调
 */
- (void)mt_unifiedInterstitialAdViewWillPresentVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 DidPresent 回调
 */
- (void)mt_unifiedInterstitialAdViewDidPresentVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 WillDismiss 回调
 */
- (void)mt_unifiedInterstitialAdViewWillDismissVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 DidDismiss 回调
 */
- (void)mt_unifiedInterstitialAdViewDidDismissVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

6、信息流广告接入方式

// 信息流对象初始化方式 -- 服务端竞价方式必须使用这种方式初始化
xxx = [[MTUnifiedNativeAd alloc] initWithPlacementId:@"广告位"];
    [self.unifiedNativeAd getBidingInfoResultWithCount:1];
// 信息流代理 遵守 <MTUnifiedNativeAdDelegate,MTUnifiedNativeAdViewDelegate,MTMediaViewDelegate>
xxx.delegate = self;
// 获取竞价信息  -- 传入期待的信息流数量
[xxx getBidingInfoResultWithCount:1];

- (void)mt_unifiedNativeBid:(MTUnifiedNativeAd *)object bidInfo:(PRXServerBidingModel *)info {
    NSLog(@"信息流竞价成功");
}
// 正常模式下,加载广告方式
[self.unifiedNativeAd loadAdWithAdCount:1];
//服务端竞价方式, 加载广告
[xxx bidLoadAd];


// 得到加载成功后 广告资源,或者 失败后的信息
- (void)mt_unifiedNativeAdLoaded:(NSArray<MTUnifiedNativeAdObject *> *)unifiedNativeAdDataObjects error:(NSError *)error
{
    if (unifiedNativeAdDataObjects.count > 0) {   
    }
    NSLog(@"error = %@",error);
}
// 由该sdk提供的广告资源得到竞价结果后请您调用如下代码上报
/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法

/**
 广告曝光回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdViewWillExpose:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW曝光回调");
    

}


/**
 广告点击回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdViewDidClick:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW点击回调");

}


/**
 广告详情页关闭回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdDetailViewClosed:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW广告详情页关闭回调");

}


/**
 当点击应用下载或者广告调用系统程序打开时调用
 
 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdViewApplicationWillEnterBackground:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW");

}


/**
 广告详情页面即将展示回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdDetailViewWillPresentScreen:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW广告详情页面即将展示回调");

}


/**
 视频广告播放状态更改回调

 @param unifiedNativeAdView 实例
 @param status 视频广告播放状态
 @param userInfo 视频广告信息
 */
- (void)mt_unifiedNativeAdView:(MTUnifiedNativeAdView *)unifiedNativeAdView playerStatusChanged:(MTMediaPlayerStatus)status userInfo:(NSDictionary *)userInfo
{
    NSLog(@"");
    NSLog(@"视频广告状态变更");
      switch (status) {
          case MTMediaPlayerStatusError:
              NSLog(@"视频播放出错");
              //开发者可以在这里添加逻辑
          default:
              break;
      }

}

- (void)mt_mediaViewDidTapped:(MTMediaView *)mediaView{
    NSLog(@"mt_mediaViewDidTapped");
}

/**
 播放完成回调

 @param mediaView 播放器实例
 */
- (void)mt_mediaViewDidPlayFinished:(MTMediaView *)mediaView{
    NSLog(@"mt_mediaViewDidPlayFinished");
}

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

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

相关文章

pytorch中常用的损失函数

1 损失函数的作用 损失函数是模型训练的基础&#xff0c;并且在大多数机器学习项目中&#xff0c;如果没有损失函数&#xff0c;就无法驱动模型做出正确的预测。 通俗地说&#xff0c;损失函数是一种数学函数或表达式&#xff0c;用于衡量模型在某些数据集上的表现。损失函数在…

数模之线性规划

线性规划 优化类问题&#xff1a;有限的资源&#xff0c;最大的收益 例子: 华强去水果摊找茬&#xff0c;水果摊上共3个瓜&#xff0c;华强总共有40点体力值,每劈一个瓜能带来40点挑衅值,每挑一个瓜问“你这瓜保熟吗”能带来30点挑衅值,劈瓜消耗20点体力值&#xff0c;问话消耗…

Linux awk命令

除了使用 sed 命令&#xff0c;Linux 系统中还有一个功能更加强大的文本数据处理工具&#xff0c;就是 awk。 曾有人推测 awk 命令的名字来源于 awkward 这个单词。其实不然&#xff0c;此命令的设计者有 3 位&#xff0c;他们的姓分别是 Aho、Weingberger 和 Kernighan&#x…

7+差异分析+WGCNA+PPI网络,学会了不吃亏

今天给同学们分享一篇生信文章“Integrated PPI- and WGCNA-Retrieval of Hub Gene Signatures Shared Between Barretts Esophagus and Esophageal Adenocarcinoma”&#xff0c;这篇文章发表在Front Pharmacol期刊上&#xff0c;影响因子为5.6。 结果解读&#xff1a; 选定研…

【解决方案】vue 项目 npm run dev 时报错:‘cross-env‘ 不是内部或外部命令,也不是可运行的程序

报错 cross-env 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! estate1.0.0 dev: cross-env webpack-dev-server --inline --progress --config build/webpack.dev.conf.js npm ERR! Exit status 1 np…

什么是final修饰 使用final修饰类、方法、变量的区别?

简介: 变量成为常量&#xff0c;不允许修改 当final修饰类时&#xff0c;该类变为最终类&#xff08;或称为不可继承的类&#xff09;。不能从最终类派生子类。这样做的目的是为了防止其他类修改或扩展最终类的行为。当final修饰方法时&#xff0c;该方法成为最终方法&#xf…

Qt QtCreator调试Qt源码配置

目录 前言1、编译debug版Qt2、QtCreator配置3、调试测试4、总结 前言 本篇主要介绍了在麒麟V10系统下&#xff0c;如何编译debug版qt&#xff0c;并通过配置QtCreator实现调试Qt源码的目的。通过调试源码&#xff0c;我们可以对Qt框架的运行机制进一步深入了解&#xff0c;同时…

计算摄像技术03 - 数字感光器件

一些计算摄像技术知识内容的整理&#xff1a;感光器件的发展过程、数字感光器件结构、数字感光器件的指标。 目录 一、感光器件的发展过程 二、数字感光器件结构 &#xff08;1&#xff09;CCD结构 ① 微透镜 ② 滤光片 ③ 感光层 电荷传输模式 &#xff08;2&#xff09;CMOS结…

代码随想录算法训练营第16天|104. 二叉树的最大深度111.二叉树的最小深度222.完全二叉树的节点个数

JAVA代码编写 104. 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; …

API接口自动化测试

本节介绍&#xff0c;使用python实现接口自动化实现。 思路&#xff1a;讲接口数据存放在excel文档中&#xff0c;读取excel数据&#xff0c;将每一行数据存放在一个个列表当中。然后获取URL,header,请求体等数据&#xff0c;进行请求发送。 结构如下 excel文档内容如下&#x…

【vue会员管理系统】篇五之系统首页布局和导航跳转

一、效果图 1.首页 2.会员管理&#xff0c;跳转&#xff0c;跳其他页面也是如此&#xff0c;该页的详细设计会在后面的章节完善 二、代码 新增文件 components下新增文件 view下新增文件&#xff1a; 1.componets下新建layout.vue 放入以下代码&#xff1a; <template…

计算机组成原理之指令

引言 关于riscv操作数 32个寄存器 | X0~X31|快速定位数据。在riscv中&#xff0c;只对寄存器中的数据执行算术运算 2^61个存储字 | 只能被数据传输指令访问。riscv体系采用的是字节寻址。 一个寄存器是8bytes&#xff0c;64位&#xff08;double word&#xff09; 每次取的…

Python高级语法----深入asyncio:构建异步应用

文章目录 异步I/O操作示例:异步网络请求异步任务管理示例:并发执行多个任务使用异步队列示例:生产者-消费者模式在现代软件开发中,异步编程已经成为提高应用性能和响应性的关键技术之一。Python的asyncio库为编写单线程并发代码提供了强大的支持。本文将深入探讨asyncio的三…

Hadoop原理,HDFS架构,MapReduce原理

Hadoop原理&#xff0c;HDFS架构&#xff0c;MapReduce原理 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c…

C++ vector 动态数组的指定元素删除

文本旨在对 C 的容器 vector 进行肤浅的分析。 文章目录 Ⅰ、vector 的指定元素删除代码结果与分析 Ⅱ、vector 在新增元素后再删除指定元素代码结果与分析 Ⅲ、vector 在特定条件下新增元素代码结果与分析 参考文献 Ⅰ、vector 的指定元素删除 代码 #include <iostream&g…

另辟蹊径者 PoseiSwap:背靠潜力叙事,构建 DeFi 理想国

前不久&#xff0c;灰度在与 SEC 就关于 ETF 受理的诉讼案件中&#xff0c;以灰度胜诉告终。灰度的胜利&#xff0c;也被加密行业看做是加密 ETF 在北美地区阶段性的胜利&#xff0c; 该事件也带动了加密市场的新一轮复苏。 此前&#xff0c;Nason Smart Money 曾对加密市场在 …

深度学习 opencv python 公式识别(图像识别 机器视觉) 计算机竞赛

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

Spring Cloud LoadBalancer基础知识

LoadBalancer 概念常见的负载均衡策略使用随机选择的负载均衡策略创建随机选择负载均衡器配置 Nacos 权重负载均衡器创建 Nacos 负载均衡器配置 自定义负载均衡器(根据IP哈希策略选择)创建自定义负载均衡器封装自定义负载均衡器配置 缓存 概念 LoadBalancer(负载均衡器)是一种…

【Linux】文件重定向以及一切皆文件

文章目录 前言一、重定向二、系统调用dup2三、重定向的使用四、一切皆文件 前言 Linux进程默认情况下会有3个缺省打开的文件描述符&#xff0c;分别是标准输入0&#xff0c; 标准输出1&#xff0c; 标准错误2&#xff0c; 0,1,2对应的物理设备一般是&#xff1a;键盘&#xff…

2007-2022年上市公司工业机器人渗透度数据

2007-2022年上市公司工业机器人渗透度数据 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;股票代码、年份、工业机器人渗透度 3、计算方式&#xff1a;首先&#xff0c;计算行业层面的工业机器人渗透度指标&#xff1b;其次&#xff0c;构建企业层面的工业机器人渗透度…