• 前言
  • 集成jar包
    • 微信

      • 微信接入指南
      • 在app级别的buildgradle中添加如下依赖
    • QQ
      • QQ接入指南
      • 导入qq_simplejar包即可
    • 新浪微博
      • 新浪微博接入指南
      • 导入weiboSDKCore_314jar包
      • 导入so文件见下图
      • 在在app级别的buildgradle中添加资源设置
  • 配置清单文件及回调Activity编码
    • 微信

      • 文件名称必须是wxapi两个回调Activity必须是WXEntryActivity和WXPayEntryActivity
    • QQ
    • 新浪微博
      • 新浪微博的回调Activity要实现IWeiboHandlerResponse接口来完成微博分享的回调
  • 分享工具类封装
  • 辅助工具方法
    • 微信分享的图片不能超过32kb需要进行图片压缩知道满足条件才可调起微信
  • 调用分享工具
  • 总结

前言

时别两个月,处理好学校的事情,我又回来了。今天给大家带来当下流行平台的分享集成,分别是微信好友、微信朋友圈、QQ好友、QQ空间以及新浪微博的分享集成。

集成jar包

微信

微信接入指南

在app级别的build.gradle中添加如下依赖:

compile ‘com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’

QQ

QQ接入指南

导入qq_simple.jar包即可

新浪微博

新浪微博接入指南

1.导入weiboSDKCore_3.1.4.jar包

2.导入so文件,见下图

3.在在app级别的build.gradle中添加资源设置

//这里要特别注意,不同文件夹下面的so文件都要报上一级目录包含进来sourceSets {main {// jniLibs.srcDirs = ['libs/share/weiboso']jniLibs.srcDirs('libs/share/weiboso','libs')//可变参数,可以加任意个so文件父目录,否则会抛异常}}

配置清单文件及回调Activity编码

微信

文件名称必须是wxapi,两个回调Activity必须是WXEntryActivity和WXPayEntryActivity

 <!-- 微信通用Activity --><activity
            android:name=".wxapi.WXEntryActivity"android:exported="true"android:launchMode="singleTop"/><!-- 微信支付 --><activity
            android:name=".wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="wx0e42a8f6cc530cd0"/></intent-filter></activity><!-- end -->

QQ

 <!-- QQ --><activity
            android:name="com.tencent.tauth.AuthActivity"android:launchMode="singleTask"android:noHistory="true"><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><category android:name="android.intent.category.BROWSABLE"/><data android:scheme="1105809896"/></intent-filter></activity><activity
            android:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

新浪微博

新浪微博的回调Activity要实现IWeiboHandler.Response接口,来完成微博分享的回调

package com.sinosoft.nanniwan.share;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;import com.sina.weibo.sdk.api.share.BaseResponse;
import com.sina.weibo.sdk.api.share.IWeiboHandler;
import com.sina.weibo.sdk.api.share.IWeiboShareAPI;
import com.sina.weibo.sdk.auth.WeiboAuthListener;
import com.sina.weibo.sdk.constant.WBConstants;
import com.sina.weibo.sdk.exception.WeiboException;
import com.sinosoft.nanniwan.base.BaseApplication;
import com.sinosoft.nanniwan.base.BaseAuthorityActivity;
import com.sinosoft.nanniwan.utils.Toaster;/*** 创建日期:2017/6/23 8:46* 微博回调基类* @author yzz*/
public abstract class WeiBoShareBaseActivity extends Activity implements IWeiboHandler.Response {protected IWeiboShareAPI mWeiboShareAPI;protected boolean isFirst = true;@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);if (mWeiboShareAPI == null) return;mWeiboShareAPI.handleWeiboResponse(intent, this); //当前应用唤起微博分享后,返回当前应用}/*** 解决微博点击取消保存草稿无法正常接收到回调的bug*/@Overrideprotected void onResume() {super.onResume();if (mWeiboShareAPI == null) return;if (!isFirst) {boolean isResp = mWeiboShareAPI.handleWeiboResponse(getIntent(), this);if (!isResp) {finish();}}isFirst = false;}@Overridepublic void onResponse(BaseResponse baseResponse) {switch (baseResponse.errCode) {case WBConstants.ErrorCode.ERR_OK:Toaster.show(getApplicationContext(), "分享成功", Toast.LENGTH_SHORT);finish();break;case WBConstants.ErrorCode.ERR_CANCEL:Toaster.show(getApplicationContext(), "已取消", Toast.LENGTH_SHORT);finish();break;case WBConstants.ErrorCode.ERR_FAIL:Toaster.show(getApplicationContext(), "分享失败", Toast.LENGTH_SHORT);finish();break;default:finish();break;}}
}
/*** 创建日期:2017/6/23 8:46* 微博回调实现类* @author yzz*/
public class WeiBoShareActivity extends WeiBoShareBaseActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_wei_bo_share);if (getIntent() == null) return;ShareUtils.Helper helper = getIntent().getParcelableExtra("helper");if (helper == null) {finish();return;}//创建微博API接口类对象mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, helper.getWeiboAPPID());mWeiboShareAPI.registerApp();ShareUtils utils = new ShareUtils(helper);mWeiboShareAPI.sendRequest(this, utils.shareWB(this));}
}

分享工具类封装

package com.sinosoft.nanniwan.share;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;import com.sina.weibo.sdk.api.ImageObject;
import com.sina.weibo.sdk.api.TextObject;
import com.sina.weibo.sdk.api.WeiboMultiMessage;
import com.sina.weibo.sdk.api.share.IWeiboShareAPI;
import com.sina.weibo.sdk.api.share.SendMultiMessageToWeiboRequest;
import com.sina.weibo.sdk.api.share.WeiboShareSDK;
import com.sinosoft.nanniwan.R;
import com.sinosoft.nanniwan.base.BaseApplication;
import com.sinosoft.nanniwan.utils.Toaster;
import com.sinosoft.nanniwan.widget.MyPopWindow;
import com.tencent.connect.share.QQShare;
import com.tencent.connect.share.QzoneShare;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;import java.util.ArrayList;/*** 创建日期:2017/6/22 14:49** @author yzz*/
public class ShareUtils implements View.OnClickListener {private ViewGroup mGroup;private MyPopWindow mShareWindow;private Helper helper;private IWXAPI iwxapi;private Activity context;public ShareUtils(Helper helper) {this.helper = helper;}public void showShare(Activity context) {this.context = context;if (mShareWindow == null) mShareWindow = new MyPopWindow(context);if (mGroup == null)mGroup = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.share_item, null);shareClick();mShareWindow.addView(mGroup);}public SendMultiMessageToWeiboRequest shareWB(Activity context) {return weiBo(context);}/*** 分享的点击事件*/private void shareClick() {View link = mGroup.findViewById(R.id.link);View wx = mGroup.findViewById(R.id.wx);View wxmoments = mGroup.findViewById(R.id.wxmoments);View qq = mGroup.findViewById(R.id.qq);View qqzoon = mGroup.findViewById(R.id.qqzoon);View weibo = mGroup.findViewById(R.id.weibo);View cacel = mGroup.findViewById(R.id.cancel);View cancleV = mGroup.findViewById(R.id.cancel_v);link.setOnClickListener(this);wx.setOnClickListener(this);wxmoments.setOnClickListener(this);qq.setOnClickListener(this);qqzoon.setOnClickListener(this);weibo.setOnClickListener(this);cacel.setOnClickListener(this);cancleV.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.link:copLink();break;case R.id.wx:shareWx(true);break;case R.id.wxmoments:shareWx(false);break;case R.id.qq:QQ();break;case R.id.qqzoon:QQZoon();break;case R.id.weibo:if (Util.checkIsinstalled(BaseApplication.getBaseApplication(),"com.sina.weibo")) {Intent intent = new Intent(context, WeiBoShareActivity.class);intent.putExtra("helper", helper);context.startActivity(intent);}else {Toaster.show(BaseApplication.getBaseApplication(),"检测到您手机未安新浪微博程序");}break;case R.id.cancel:case R.id.cancel_v:mShareWindow.removeView();break;}}/*** 复制链接*/public void copLink() {}/*** @param isFriend 是否是分享到好友*/private void shareWx(final boolean isFriend) {//检查是否安装了微信if (!Util.checkIsinstalled(BaseApplication.getBaseApplication(),"com.tencent.mm")){Toaster.show(BaseApplication.getBaseApplication(),"检测到您手机未安装微信程序");return;}WXWebpageObject webpageObject = new WXWebpageObject();webpageObject.webpageUrl = helper.webUrl;WXMediaMessage wxMediaMessage = new WXMediaMessage(webpageObject);wxMediaMessage.title = helper.webtitle;wxMediaMessage.description = helper.webDescrible;wxMediaMessage.thumbData = Util.compressImage(BitmapFactory.decodeResource(context.getResources(),helper.imgId));SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = Helper.buildTransaction("webpage");req.message = wxMediaMessage;req.scene = isFriend ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;// 调用api接口发送数据到微信if (iwxapi == null) iwxapi = WXAPIFactory.createWXAPI(context, helper.WxAPPID);iwxapi.sendReq(req);}/*** ##QQ好友* QQShare.SHARE_TO_QQ_KEY_TYPE 必填  Int 分享的类型。图文分享(普通分享)填Tencent.SHARE_TO_QQ_TYPE_DEFAULT* QQShare.PARAM_TARGET_URL 必填  String  这条分享消息被好友点击后的跳转URL。* QQShare.PARAM_TITLE  必填  String  分享的标题, 最长30个字符。* QQShare.PARAM_SUMMARY    可选  String  分享的消息摘要,最长40个字。* QQShare.SHARE_TO_QQ_IMAGE_URL    可选  String  分享图片的URL或者本地路径* QQShare.SHARE_TO_QQ_APP_NAME 可选  String  手Q客户端顶部,替换“返回”按钮文字,如果为空,用返回代替* QQShare.SHARE_TO_QQ_EXT_INT  可选  Int 分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):* QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,分享时自动打开分享到QZone的对话框。* QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,分享时隐藏分享到QZone按钮*/private void QQ() {final Bundle params = new Bundle();Tencent mTencent = Tencent.createInstance(helper.QQAPPID, context);params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);params.putString(QQShare.SHARE_TO_QQ_TITLE, helper.webtitle);params.putString(QQShare.SHARE_TO_QQ_SUMMARY, helper.webDescrible);params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, helper.webUrl);params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, helper.imgURL);params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "南泥湾");mTencent.shareToQQ(context, params, new IUiListener() {@Overridepublic void onComplete(Object o) {}@Overridepublic void onError(UiError uiError) {}@Overridepublic void onCancel() {}});}/*** ##QQ空间* QzoneShare.SHARE_TO_QQ_KEY_TYPE  选填  Int SHARE_TO_QZONE_TYPE_IMAGE_TEXT(图文)* QzoneShare.SHARE_TO_QQ_TITLE 必填  Int 分享的标题,最多200个字符。* QzoneShare.SHARE_TO_QQ_SUMMARY   选填  String  分享的摘要,最多600字符。* QzoneShare.SHARE_TO_QQ_TARGET_URL    必填  String  需要跳转的链接,URL字符串。* QzoneShare.SHARE_TO_QQ_IMAGE_URL 选填  String  分享的图片, 以ArrayList<String>的类型传入,以便支持多张图片(注:图片最多支持9张图片,多余的图片会被丢弃)。*/private void QQZoon() {//分享类型Tencent mTencent = Tencent.createInstance(helper.QQAPPID, context);final Bundle params = new Bundle();params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);params.putString(QzoneShare.SHARE_TO_QQ_TITLE, helper.webtitle);//必填params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, helper.webDescrible);//选填params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, helper.webUrl);//必填params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, helper.imgs);mTencent.shareToQzone(context, params, new IUiListener() {@Overridepublic void onComplete(Object o) {}@Overridepublic void onError(UiError uiError) {}@Overridepublic void onCancel() {}});}/*** 微博分享(这里的上下文不一样)WeiBoShareActivity*/private SendMultiMessageToWeiboRequest weiBo(Activity context) {if (helper == null || helper.weiboAPPID == null || helper.webtitle == null) return null;// 1. 初始化微博的分享消息WeiboMultiMessage weiboMessage = new WeiboMultiMessage();weiboMessage.textObject = getTextObj();weiboMessage.imageObject = getImageObj(context);// 2. 初始化从第三方到微博的消息请求SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();// 用transaction唯一标识一个请求request.transaction = String.valueOf(System.currentTimeMillis());request.multiMessage = weiboMessage;return request;}/*** 创建文本消息对象。** @return 文本消息对象。*/private TextObject getTextObj() {TextObject textObject = new TextObject();textObject.text = helper.webDescrible;textObject.title = helper.webtitle;textObject.actionUrl = helper.webUrl;return textObject;}/*** 创建图片消息对象。** @return 图片消息对象。*/private ImageObject getImageObj(Context context) {ImageObject imageObject = new ImageObject();Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),helper.imgId);imageObject.setImageObject(bitmap);return imageObject;}/*** 数据承载类*/public static class Helper implements Parcelable {private String webUrl;private String webtitle;private String webDescrible;private int imgId;private String WxAPPID;private String QQAPPID;//QQZoon需要private ArrayList<String> imgs;private String imgURL;private String weiboAPPID;public Helper() {}public String getWebUrl() {return webUrl;}public String getWebtitle() {return webtitle;}public String getWebDescrible() {return webDescrible;}public int getImgId() {return imgId;}public String getWxAPPID() {return WxAPPID;}public String getQQAPPID() {return QQAPPID;}public ArrayList<String> getImgs() {return imgs;}public String getImgURL() {return imgURL;}public String getWeiboAPPID() {return weiboAPPID;}protected Helper(Parcel in) {webUrl = in.readString();webtitle = in.readString();webDescrible = in.readString();imgId = in.readInt();WxAPPID = in.readString();QQAPPID = in.readString();imgs = in.createStringArrayList();imgURL = in.readString();weiboAPPID = in.readString();}public static final Creator<Helper> CREATOR = new Creator<Helper>() {@Overridepublic Helper createFromParcel(Parcel in) {Helper helper = new Helper();helper.webUrl = in.readString();helper.webtitle = in.readString();helper.webDescrible = in.readString();helper.imgId = in.readInt();helper.WxAPPID = in.readString();helper.QQAPPID = in.readString();helper.imgs = in.createStringArrayList();helper.imgURL = in.readString();helper.weiboAPPID = in.readString();return helper;}@Overridepublic Helper[] newArray(int size) {return new Helper[size];}};//微信转化需要private static String buildTransaction(final String type) {return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();}public Helper webUrl(final String webUrl) {this.webUrl = webUrl;return this;}public Helper webtitle(final String webtitle) {this.webtitle = webtitle;return this;}public Helper webDescrible(final String webDescrible) {this.webDescrible = webDescrible;return this;}public Helper imgId(final  int imgId) {this.imgId = imgId;return this;}public Helper WxAPPID(final String WxAPPID) {this.WxAPPID = WxAPPID;return this;}public Helper QQAPPID(final String QQAPPID) {this.QQAPPID = QQAPPID;return this;}public Helper imgs(final ArrayList<String> imgs) {this.imgs = imgs;return this;}public Helper imgURL(final String imgURL) {this.imgURL = imgURL;return this;}public Helper weiboAPPID(final String weiboAPPID) {this.weiboAPPID = weiboAPPID;return this;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(webUrl);dest.writeString(webtitle);dest.writeString(webDescrible);dest.writeInt(imgId);dest.writeString(WxAPPID);dest.writeString(QQAPPID);dest.writeStringList(imgs);dest.writeString(imgURL);dest.writeString(weiboAPPID);}}@Overridepublic String toString() {return "ShareUtils{" +"mGroup=" + mGroup +", mShareWindow=" + mShareWindow +", helper=" + helper +", iwxapi=" + iwxapi +", context=" + context +'}';}
}

辅助工具方法

微信分享的图片不能超过32kb,需要进行图片压缩,知道满足条件才可调起微信

 /*** 质量压缩方法** @param image* @return*/public static byte[] compressImage(Bitmap image) {ByteArrayOutputStream baos = new ByteArrayOutputStream();image.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中int options = 90;while (baos.toByteArray().length / 1024 > 32) { // 循环判断如果压缩后图片是否大于100kb,大于继续压缩baos.reset(); // 重置baos即清空baosimage.compress(Bitmap.CompressFormat.JPEG, options, baos);// 这里压缩options%,把压缩后的数据存放到baos中options -= 5;// 每次都减少5}byte[] bytes = baos.toByteArray();try {baos.close();} catch (IOException e) {e.printStackTrace();}return bytes;}

调用分享工具

shareutils = new ShareUtils(new ShareUtils.Helper().WxAPPID(Config.W_APPKEY).webDescrible("应用测试描述").webtitle("应用测试标题").webUrl(shareUrl).QQAPPID(Config.QQ_APPID).imgURL(shareUrl).imgId(R.drawable.app_icon).weiboAPPID(Config.WB_APPID).imgs(list)) {@Overridepublic void copLink() {//复制链接}};

总结

需要注意的是在导入so文件的时候要注意,要写到文件上级目录,系统才能去调用so文件,否则抛异常,jniLibs.srcDirs(String.calss…str)是可变参数,所以很方便,我们可以将不同的so文件分开进行配置。只要注意到这点就基本上没啥问题了。由于项目的特殊性,无法提供源码,上述基本上已经帖出了相关代码,谢谢。

Android平台快速集成当下流行平台分享相关推荐

  1. Android Studio快速集成讯飞SDK实现文字朗读功能

    今天,我们来学习一下怎么在Android Studio快速集成讯飞SDK实现文字朗读功能,先看一下效果图: 第一步 :了解TTS语音服务 TTS的全称为Text To Speech,即"从文 ...

  2. 推荐一款快速集成 4399 原创平台的 SDK 插件

    这是一款神奇的插件. 这是一款能快速帮你集成 4399 原创平台的 SDK 插件. 这是一款插件小王子许彦峰新年归来.倾情奉献.全套开源并已上线 Cocos Store 的鼎力钜作. SDK 文档地址 ...

  3. Android使用ShareSDK集成第三方登录和分享(v3.1.2)

    一.产品概述 ShareSDK是一种社会化分享组件,为iOS.Android.WP8 的APP提供社会化功能,集成了一些常用的类库和接口,缩短开发者的开发时间,还有社会化统计分析管理后台. 二.集成方 ...

  4. android表情输入键盘,GitHub - UKfire/Emotion: 帮你的Android应用快速集成表情键盘

    ##Emotion 帮你快速集成Android表情键盘,让你的应用不止文字,让表情跳动起来 ##It looks Cool ##Usage Download ZIP,然后解压,将emoji包添加到自己 ...

  5. Android app快速集成Mob shareSDK分享到微信和QQ

    Android app集成Mob shareSDK分享到微信和QQ 在线安装方法介绍 注意需要用到的appKey和appSecret 请自行到http://www.mob.com官网申请,这里不介绍申 ...

  6. Unity平台 | 快速集成华为AGC云数据库服务

    1.环境与应用信息 版本名称 集成环境 测试设备 agconnect-database:1.2.3.301 Unity 2019.4.17f1c1 荣耀magic2 OPPO Reno2 AGC地址: ...

  7. Android开发之集成Twitter登陆以及分享,文后有源码。

    目录 1.APP build 2.sdk初始化 3.按钮样式(布局文件) 3.1官方按钮登陆 3.2自定义按钮登陆 4.Twitter分享 5.源码传送:点我点我点我 1.APP build //推特 ...

  8. Android友盟集成QQ、微信、微博等第三方登录与分享

    前言 最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的.为了统一使用友盟的全家桶,所以三方分享和登录也就选择了友盟.这里记录一下完整的集成与使用流程 ...

  9. 周末去哪儿架构师跟你聊:大数据平台快速解决方案

    内容来源:2017年5月13日,周末去哪儿架构师李锡铭在"Java开发者大会 | Java之美[上海站]"进行<大数据平台快速解决方案中>演讲分享.IT大咖说作为独家视 ...

  10. android快速集成微信分享支付

    前言 最近公司的项目中有又又又又微信分享和支付的功能,每次我都会重新集成,为了方便以后的开发,以及方便各位同仁的开发,整合了这次开发的一些点滴,方便亲们快速集成微信分享和支付. 参考文档 –1.微信官 ...

最新文章

  1. Scrum敏捷开发看板工具分享
  2. SAP直接踢人下线 SM04
  3. sql 左联接 全联接_通过了解自我联接将您SQL技能提升到一个新的水平
  4. spring boot配置tomcat部署
  5. python编程学习_使用EduBlocks轻松学习Python编程
  6. MySQL越高版本越快吗_MySQL性能优化的最佳20+条经验
  7. MFC不能用UpdateData的解决方法
  8. python多态实例_Python多态实例详解
  9. 叙述计算机的主要应用领域并各举实例说明,大学计算机基础练习习题集.doc
  10. C++ Toolkit zz
  11. Archlinux 的灵魂──PKGBUILD、AUR 和 ABS
  12. 今日发现一个挺好的软件,控制音量 App音量控制(App Volume Control)v2.17 安卓版
  13. 计算机软件系统配置,电脑配置修改_电脑配置修改软件
  14. 【论文笔记】Explainable Reasoning over Knowledge Graphs for Recommendation
  15. 从头开始搭建kubernetes集群+istio服务网格(3)—— 搭建istio
  16. 正点原子 linux 开发板学习 uboot 篇 一
  17. C语言实现解析gps坐标(在一串字符串中找到北纬和东经的值)
  18. linux取消线程的原理,linux线程的取消(终止)方法
  19. Quest 3d中Lua script中常用方法2
  20. NLP之文本分词综述

热门文章

  1. 收集最火的开源项目——PHP 篇
  2. 【JAVA自学笔记 DAY01】Java基础入门
  3. yarn add 添加依赖的各种类型(指定版本安装、git中安装、tgz包安装、文件夹安装)
  4. 狂神说SpringCloud学习笔记
  5. 钟道隆逆向英语学习法—学习SpeciaI English的三个阶段
  6. 7月的尾巴,你是XXX
  7. 第1章 PyTorch和神经网:1.1 PyTorch和神经网络
  8. 鲸飞酒店云PMS v3.0.22
  9. sns_sensor_instance_api
  10. 四种渠道打造网站高质量原创内容