首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >百度人脸识别API Java调用

百度人脸识别API Java调用

作者头像
小帅丶
发布于 2018-02-08 02:46:23
发布于 2018-02-08 02:46:23
4.4K00
代码可运行
举报
文章被收录于专栏:XAIXAI
运行总次数:0
代码可运行

工具类下载http://pan.baidu.com/s/1jIuo0N8

小Demo查询。

1.官网文档必须看

http://ai.baidu.com/docs

2.在管理中心创建应用及查看相关参数 AppID APIKey SecretKey都需要保存起来

3.搬砖测试

项目需要的lib包,基本下载官网的SDK就都会包含。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xs.demo.common;
//相关的必要参数可以保存到常量
public class APIConstants {
	//百度人脸识别应用id
	public static final String APPID = "管理中心获得";
	//百度人脸识别应用apikey
	public static final String API_KEY = "管理中心获得";
	//百度人脸识别应用sercetkey
	public static final String SERCET_KEY = "管理中心获得";
	//百度人脸识别token 有效期一个月
	public static final String TOKEN = "为了测试,将生成的key先存一下";
}

4.获取AccessToken

官网文档说明http://ai.baidu.com/docs#Beginner-Auth

向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

  • grant_type: 必须参数,固定为“client_credentials”;
  • client_id: 必须参数,应用的API Key;
  • client_secret: 必须参数,应用的Secret Key;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//获取AccessToken 有效期一个月
public class AITest {
	public static void main(String[] args) throws Exception {;
		String access_token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials" +
				"&client_id="+APIContants.API_KEY
			   +"&client_secret="+ APIContants.SERCET_KEY;
		HttpResponse response = HttpUtils.doPostBD(access_token_url,new HashMap<String, String>(),new HashMap<String, String>());
		System.out.println(EntityUtils.toString(response.getEntity()));
		
	}
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//返回的JSON数据。只需要access_token即可
{"access_token":"24.39b6fc97e87058ed6edb92ad68782c29.2592000.1492651482.11111-11111","session_key":"9mzdCP1XKXZ5yipkl7ubftudl2reGQybIG25NqWi9vqeSFFjxigLFl+WpfDW0PyUt7EP\/Uyn74r31lj3d4kVr4xkbkSk","scope":"public vis-faceverify_faceverify vis-faceattribute_faceattribute wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian wangrantest_test wangrantest_test1 bnstest_test1 bnstest_test2 ApsMisTest_Test\u6743\u9650 vis-classify_flower","refresh_token":"25.3c8370eaeb8af4f8367a38b6dbefcef9.315360000.1805419482.11111-11111","session_secret":"ff06850552b385cff19de958e435e6a4","expires_in":2592000}

5.HttpUtils工具类代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xs.demo.util;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
/**
 * httpClient工具类
 * @author 小帅帅丶
 * @date  2017-3-21上午09:28:21
 */
public class HttpUtils {
/**
 * request
 * 该方法使用时候注意image的base64编码内容要urlencode一下 
 * 在测试身份证识别的时候,发现中文返回是unicode编码。可以将方法改为返回JSONOBJECT就可以解决。
 * @author 小帅帅丶
 * @date  2017-3-21上午09:28:21
 */
public static String request(String httpUrl, String httpArg) {
	    BufferedReader reader = null;
	    String result = null;
	    StringBuffer sbf = new StringBuffer();

	    try {
	        URL url = new URL(httpUrl);
	        HttpURLConnection connection = (HttpURLConnection) url
	                .openConnection();
	        connection.setRequestMethod("POST");
	        connection.setRequestProperty("Content-Type",
	                        "application/x-www-form-urlencoded");
	        connection.setDoOutput(true);
	        connection.getOutputStream().write(httpArg.getBytes("UTF-8"));
	        connection.connect();
	        InputStream is = connection.getInputStream();
	        reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
	        String strRead = null;
	        while ((strRead = reader.readLine()) != null) {
	            sbf.append(strRead);
	            sbf.append("\r\n");
	        }
	        reader.close();
	        result = sbf.toString();
	    } catch (Exception e) {
	        e.printStackTrace();
	    }
	    return result;
	}
	/**
	 * 
	 * @Title doPostBD
	 * @param url 接口地址
	 * @param method 请求方式
	 * @param headers 
	 * @param bodys
	 * @return response
	 * @throws Exception
	 * @author 小帅帅丶
	 * @date 2017-3-20
	 *
	 */
	public static HttpResponse doPostBD(String url, 
			Map<String, String> headers, 
			Map<String, String> bodys)
            throws Exception {    	
    	HttpClient httpClient = wrapClient(url);
    	HttpPost request = new HttpPost(url);
        for (Map.Entry<String, String> e : headers.entrySet()) {
        	request.addHeader(e.getKey(), e.getValue());
        }
        if (bodys != null) {
            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
            for (String key : bodys.keySet()) {
                nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
            }
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
            formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
            request.setEntity(formEntity);
        }

        return httpClient.execute(request);
    }
	private static HttpClient wrapClient(String host) {
		HttpClient httpClient = new DefaultHttpClient();
		if (host.startsWith("https://")) {
			sslClient(httpClient);
		}
		return httpClient;
	}
	private static void sslClient(HttpClient httpClient) {
        try {
            SSLContext ctx = SSLContext.getInstance("TLS");
            X509TrustManager tm = new X509TrustManager() {
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(X509Certificate[] xcs, String str) {
                	
                }
                public void checkServerTrusted(X509Certificate[] xcs, String str) {
                	
                }
            };
            ctx.init(null, new TrustManager[] { tm }, null);
            SSLSocketFactory ssf = new SSLSocketFactory(ctx);
            ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            ClientConnectionManager ccm = httpClient.getConnectionManager();
            SchemeRegistry registry = ccm.getSchemeRegistry();
            registry.register(new Scheme("https", 443, ssf));
        } catch (KeyManagementException ex) {
            throw new RuntimeException(ex);
        } catch (NoSuchAlgorithmException ex) {
        	throw new RuntimeException(ex);
        }
    }
}

6.检测人脸美丑及年龄

http://ai.baidu.com/docs#FACE官网文档

请求参数

是否必选

类型

说明

image

string

base64编码后的图片数据,图片大小不超过2M。

max_face_num

uint32

最多处理人脸数目,默认值1

face_fields

string

包括age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities信息,逗号分隔,默认只返回人脸框、概率和旋转角度。

  • URL参数:

参数

access_token

通过API Key和Secret Key获取的access_token,参考“Access Token获取”

  • Header如下:

参数

Content-Type

application/x-www-form-urlencoded

  • Body中数据如下:

参数

image

图像base64编码

max_face_num

非必填,默认1

face_fields

非必填

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xs.demo.test;

import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;

import com.xs.demo.common.APIConstants;
import com.xs.demo.util.HttpUtils;
import com.xs.demo.util.Image4Base64;

//人脸识别 百度一张如花的图片
public class Test {
	public static void main(String[] args) {
		/****************/
		String Filepath = "F:/ruhua.jpg";
		String image = Image4Base64.GetImageStr(Filepath);
		String url = "https://aip.baidubce.com/rest/2.0/face/v1/detect?access_token="+APIConstants.TOKEN;
		Map<String, String> headers = new HashMap<String, String>();
		Map<String, String> bodys = new HashMap<String, String>();
		headers.put("Content-Type", "application/x-www-form-urlencoded");
		bodys.put("image", image);
		bodys.put("face_fields", "age,beauty,expression,gender,glasses,race,qualities");
		try {
			HttpResponse response = HttpUtils.doPostBD(url,headers,bodys);
			System.out.println(EntityUtils.toString(response.getEntity()));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

7.返回JSON字符串内容

age 年龄  (目前官网还是没有说明年龄的误差范围)

beauty 美丑分数 0-100 越大值越美(之前官网写的是0-1在我发现错误时,提交官网,官网及时做了修改)

如花识别年龄38  美丑评分21  表示不太合理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "result": [{
    "expression": 0,
    "face_probability": 1,
    "glasses": 0,
    "location": {
      "height": 155,
      "width": 136,
      "left": 103,
      "top": 49
    },
    "beauty": 21.201513290405,
    "race": "yellow",
    "expression_probablity": 0.77510279417038,
    "rotation_angle": 9,
    "yaw": 2.6519072055817,
    "roll": 10.0813331604,
    "qualities": {
      "completeness": 0,
      "occlusion": {
        "left_eye": 0,
        "chin": 0,
        "mouth": 0,
        "right_cheek": 0,
        "left_cheek": 0,
        "nose": 0,
        "right_eye": 0
      },
      "blur": 0,
      "type": {
        "cartoon": 0.0060238856822252,
        "human": 0.99397611618042
      },
      "illumination": 0
    },
    "gender_probability": 0.93728905916214,
    "age": 37.866649627686,
    "gender": "male",
    "glasses_probability": 0.99999260902405,
    "race_probability": 0.99436098337173,
    "pitch": -17.080112457275
  }],
  "result_num": 1,
  "log_id": 2045651588
}

8.SDK调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 基于百度SDK提供的方法进行调用
 * @author 小帅帅丶
 * @date  2017-3-20下午06:00:05
 */
public class Sample {
	public static void main(String[] args) {
		//初始化一个FaceClient
		AipFace face = new AipFace(APIConstants.APPID,APIConstants.API_KEY,APIConstants.SERCET_KEY);
		//可选:设置网络连接参数
		face.setConnectionTimeoutInMillis(60000);
		face.setSocketTimeoutInMillis(60000);
		//调用API
		HashMap map = new HashMap();
		//
		map.put("face_fields", "age,beauty,expression,gender,glasses,race,qualities");
		String path = "F:/ruhua.jpg";
		AipRequest aipRequest = new AipRequest();
		aipRequest.setBody(map);
		JSONObject result = face.detect(Image4Base64.GetImageStrByte(path),map);
		System.out.println(result.toString(2));
	}
}

以上就是百度人脸识别API的调用测试流程及demo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
.NET平台系列26:在 Windows 上安装 .NET Core/.NET5/.NET6
  本文介绍如何在 Windows 上安装 .NET。 .NET 由运行时和 SDK 组成。 运行时用于运行 .NET 应用,应用可能包含也可能不包含它。 SDK 用于创建 .NET 应用和库。 .NET 运行时始终随 SDK 一起安装。当前最新版本的 .NET 是 5.0。点击此处,下载.NET Core/.NET。
张传宁IT讲堂
2021/06/21
3.8K0
.NET平台系列26:在 Windows 上安装 .NET Core/.NET5/.NET6
.NET SDK 概述
.NET SDK 是一组库和工具,允许开发人员创建 .NET 应用程序和库。它包含以下用于构建和运行应用程序的组件: .NET CLI。 .NET 库和运行时。 该dotnet 驱动程序。 获取 .NET SDK 与任何工具一样,第一件事是将工具安装到您的机器上。根据您的场景,您可以使用以下方法之一安装 SDK: 使用本机安装程序。 使用安装 shell 脚本。 本机安装程序主要用于开发人员的机器。SDK 使用每个受支持平台的本机安装机制进行分发,例如 Ubuntu 上的 DEB 包或 Windows 上的 MSI 包。这些安装程序根据需要安装和设置环境,以便用户在安装后立即使用 SDK。但是,它们还需要机器的管理权限。您可以在.NET 下载页面上找到要安装的 SDK 。 另一方面,安装脚本不需要管理权限。但是,它们也不会在机器上安装任何先决条件;您需要手动安装所有先决条件。这些脚本主要用于设置构建服务器或当您希望在没有管理员权限的情况下安装工具时(请注意上面的先决条件警告)。您可以在安装脚本参考文章中找到更多信息。如果您对如何在 CI 构建服务器上设置 SDK 感兴趣,请参阅在持续集成 (CI) 中使用 .NET SDK 和工具一文。 默认情况下,SDK 以“并行”(SxS) 方式安装,这意味着多个版本可以在任何给定时间在一台机器上共存。选择要使用的 .NET 版本一文中更详细地解释了在运行 CLI 命令时如何选择版本。
呆呆
2022/01/04
1.2K0
.NET SDK 遥测
.NET SDK 包含遥测功能,可在 .NET CLI 崩溃时收集使用情况数据和异常信息。 .NET CLI 附带 .NET SDK,是一组用于生成、测试和发布 .NET 应用的谓词。 请务必让 .NET 团队了解到工具使用情况,以便我们对其做出改进。 有关故障的信息可帮助团队解决问题并修复 bug。 收集的数据根据 Creative Commons Attribution 许可证以汇总形式发布。 范围 dotnet 具有两个功能:运行应用程序和执行 CLI 命令。 按以下格式使用 dotnet 来启动应用程序时,不会收集遥测数据: dotnet [path-to-app].dll 使用任何 .NET CLI 命令时,都会收集遥测数据,如: dotnet build dotnet pack dotnet run 如何选择退出 .NET SDK 遥测功能默认处于启用状态。 要选择退出遥测功能,请将 DOTNET_CLI_TELEMETRY_OPTOUT 环境变量设置为 1 或 true。 如果安装成功,.NET SDK 安装程序也会发送一个遥测条目。 若要选择退出,请在安装 .NET SDK 之前设置 DOTNET_CLI_TELEMETRY_OPTOUT 环境变量。 重要 要在启动安装程序后选择退出,请执行以下操作:关闭安装程序,设置环境变量,然后使用该值集再次运行安装程序。 公开 首次运行其中一个 .NET CLI 命令(如 dotnet build)时,.NET SDK 显示以下类似文本。 文本可能会因运行的 SDK 版本而略有不同。 此“首次运行”体验是 Microsoft 通知用户有关数据收集信息的方式。 Telemetry --------- The .NET tools collect usage data in order to help us improve your experience. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell. Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry 若要禁用此消息和 .NET 欢迎消息,请将 DOTNET_NOLOGO 环境变量设置为 true。 请注意,此变量在遥测选择退出时不起作用。 数据点 遥测功能不收集用户名或电子邮件地址等个人数据。 也不会扫描代码,更不会提取项目级敏感数据,如名称、存储库或作者。 数据通过 Azure Monitor 技术安全地发送到 Microsoft 服务器,提供对保留数据的受限访问权限,并在严格的安全控制下从安全的 Azure 存储系统发布。 保护你的隐私对我们很重要。 如果你怀疑遥测在收集敏感数据,或认为处理数据的方式不安全或不恰当,请在 dotnet/sdk 存储库中记录问题或发送电子邮件至 dotnet@microsoft.com 以供我们展开调查。 遥测功能收集以下数据: SDK 版本 数据 全部 调用时间戳。 全部 调用的命令(例如,“build”),从 2.1 开始进行哈希处理。 全部 用于确定地理位置的三个八进制数 IP 地址。 全部 操作系统和版本。 全部 运行 SDK 的运行时 ID (RID)。 全部 .NET SDK 版本。 全部 遥测配置文件:一个可选值,仅在用户显式选择加入时可用,并在 Microsoft 内部使用。 >=2.0 命令参数和选项:收集若干参数和选项(非任意字符串)。 请参阅收集的选项。 从 2.1.300 后进行哈希处理。 >=2.0 SDK 是否在容器中运行。 >=2.0 目标框架(来自 TargetFramework 事件),从 2.1 开始进行哈希处理。 >=2.0 经过哈希处理的媒体访问控制 (MAC) 地址 (SHA256)。 >=2.0 经过哈希处理的当前工作目录。 >=2.0 安装成功报告,包含进行了哈希处理的安装程序 exe 文件名。 >=2.1.300 内核版本。 >=2.1.300 Libc 发行/版本。 >=3.0.100 是否已重定向输出(true 或 false)。 >=3.0.100 CLI/SDK 故障时的异常类型及其堆栈跟踪(发送的堆栈跟踪中仅包含 CLI/SDK 代码)。 有关详细信息,请参阅收集的 .NET CLI/SDK 故障异常遥测。 >=5.0.100 用于生成的经过哈希处理的 TargetFr
呆呆
2022/01/05
1K0
.NET平台系列28:在 macOS 上安装 .NET Core/.NET5/.NET6
  在本文中,你将了解如何在 macOS 上安装 .NET。 .NET 由运行时和 SDK 组成。 运行时用于运行 .NET 应用,应用可能包含也可能不包含它。 SDK 用于创建 .NET 应用和库。 .NET 运行时始终随 SDK 一起安装。最新版本的 .NET 是 5.0。点击此处,下载.NET Core/.NET。
张传宁IT讲堂
2021/06/21
6.1K0
.NET平台系列28:在 macOS 上安装 .NET Core/.NET5/.NET6
dotnet-install 脚本参考
名称 dotnet-install.ps1| dotnet-install.sh- 用于安装 .NET SDK 和共享运行时的脚本。 概要 视窗: 电源外壳 复制 dotnet-install.ps1 [-Architecture <ARCHITECTURE>] [-AzureFeed] [-Channel <CHANNEL>] [-DryRun] [-FeedCredential] [-InstallDir <DIRECTORY>] [-JSonFile <JSONFILE>]
呆呆
2022/01/05
1.8K0
推介7个CI / CD(持续集成和持续部署)工具
越来越多的工程团队正在采用敏捷开发,推动更短,更快的发布周期。代码库增长和创建新生产构建的频率导致持续集成和持续部署/交付工具的兴起。
Java架构师历程
2018/09/26
26.6K0
推介7个CI / CD(持续集成和持续部署)工具
超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS
网上有很多安装gitlab的方法,这里推荐使用docker安装,真的超级超级方便。 这里有一篇文章 docker安装配置gitlab详细过程 https://www.cnblogs.com/zuxing/articles/9329152.html 这里就不细说了。毕竟重点不是说怎么安装gitlab哈哈哈。
饭勺oO
2023/10/18
8170
超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS
六款不容错过的开源持续集成工具
持续集成是敏捷软件开发工作当中的一大组成部分。从一轮冲刺到下一轮冲刺,技术团队在“不断前进”的同时持续推出各类增量化功能。不过当开发人员高度专注于添加功能的同时,代码错误有时候也会不期而至、并导致软件无法正常使用。为了阻止此类错误被集成至软件配置管理(简称SCM)方案当中,持续集成服务器则扮演守门人的角色,帮助我们对代码质量进行把关。即使糟糕代码已经被集成到SCM当中,持续集成服务器仍然能够快速告诉我们是哪里出了问题。在今天的文章中,我们就将共同了解六款开源持续集成服务器工具,相信它们能帮助大家在自己的
静一
2018/03/23
1.1K0
六款不容错过的开源持续集成工具
如何在Ubuntu 16.04上使用Concourse CI设置持续集成管道
Concourse CI是一个现代的,可扩展的集成系统,旨在通过可组合的声明性语法自动测试管道。
GeekZ
2018/08/10
4.8K0
Ubuntu上如何使用GitLab CI搭建持续集成Pipeline
GitLab Community Edition是一个自托管的Git存储库提供程序,具有帮助项目管理和软件开发的附加功能。GitLab提供的最有价值的功能之一是内置的持续集成和交付工具GitLab CI。
爆栈工程师
2018/08/13
4.4K0
Ubuntu上如何使用GitLab CI搭建持续集成Pipeline
Gitlab CI 搭建持续集成环境
在软件工程里,持续集成(Continuous Integration, CI)是指这样的一种实践:在一天里多次将所有开发人员的代码合并到一个共享的主干里,每次合并都会触发持续集成服务器进行自动构建,这个过程包括了编译、单元测试、集成测试、质量分析等步骤,结果只有两个:成功或者失败。如果得到失败的结果,说明有人提交了不合格的代码,这就能及时发现问题。
YP小站
2020/06/04
2.9K0
Gitlab CI 搭建持续集成环境
21 个好用的持续集成工具,总有一款适合你
市场上持续集成工具众多,找到一个合适的工具并非易事,下面介绍了 21 个比较受欢迎的 CI 工具,并附上了下载链接。
DevOps时代
2019/05/17
3.1K0
Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目).
GuZhenYin
2020/08/11
7940
Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
.NET 简介
.NET 是一个免费的开源开发平台,用于构建多种应用,例如: Web 应用程序、Web API 和微服务 云中的无服务器功能 云原生应用 移动应用 桌面应用程序 视窗 WPF Windows 窗体 通用 Windows 平台 (UWP) 游戏 物联网 (IoT) 机器学习 控制台应用程序 视窗服务 使用类库在不同的应用程序和应用程序类型之间共享功能。 使用 .NET,无论您正在构建哪种类型的应用程序,您的代码和项目文件的外观和感觉都相同。您可以使用每个应用程序访问相同的运行时、API 和语言功能。 跨平台 您可以为许多操作系统创建 .NET 应用程序,包括: 视窗 苹果系统 Linux 安卓 IOS 操作系统 手表操作系统 支持的处理器架构包括: x64 x86 ARM32 ARM64 .NET 允许您使用特定于平台的功能,例如操作系统 API。示例是 Windows 上的 Windows 窗体和 WPF,以及从 Xamarin 到每个移动平台的本机绑定。 有关更多信息,请参阅支持的操作系统生命周期策略和.NET RID 目录。 开源 .NET 是开源的,使用MIT 和 Apache 2 许可证。.NET 是.NET 基金会的一个项目。 有关更多信息,请参阅GitHub.com 上的项目存储库列表。 支持 Microsoft 在 Windows、macOS 和 Linux 上支持 .NET。它会在每个月的第二个星期二定期更新以确保安全性和质量。 Microsoft 的 .NET 二进制发行版在 Azure 中由 Microsoft 维护的服务器上构建和测试,并遵循 Microsoft 工程和安全实践。 Red Hat在 Red Hat Enterprise Linux (RHEL) 上支持 .NET。Red Hat 和 Microsoft 合作确保 .NET Core 在 RHEL 上运行良好。 Tizen 支持Tizen 平台上的.NET。 有关详细信息,请参阅.NET Core 和 .NET 5 的版本和支持。 工具和生产力 .NET 为您提供了多种语言、集成开发环境 (IDE) 和其他工具的选择。 编程语言 .NET 支持三种编程语言: C# C#(发音为“See Sharp”)是一种现代的、面向对象的、类型安全的编程语言。C# 起源于 C 语言家族,C、C++、Java 和 JavaScript 程序员很快就会熟悉 C#。 F# F# 语言支持函数式、面向对象和命令式编程模型。 视觉基础 在 .NET 语言中,Visual Basic 的语法是最接近普通人类语言的,这使得它更容易学习。与微软正在积极开发新功能的 C# 和 F# 不同,Visual Basic 语言是稳定的。Web 应用不支持 Visual Basic,但 Web API 支持它。 以下是 .NET 语言支持的一些功能: 类型安全 类型推断 - C#、F#、Visual Basic 通用类型 代表 拉姆达 活动 例外 属性 异步代码 并行编程 代码分析器 集成开发环境 .NET 的集成开发环境包括: 视觉工作室 仅在 Windows 上运行。具有广泛的内置功能,旨在与 .NET 一起使用。社区版对学生、开源贡献者和个人免费。 视觉工作室代码 在 Windows、macOS 和 Linux 上运行。免费和开源。扩展可用于使用 .NET 语言。 适用于 Mac 的 Visual Studio 仅在 macOS 上运行。用于为 iOS、Android 和 Web 开发 .NET 应用程序和游戏。 GitHub 代码空间 在线 Visual Studio Code 环境,目前处于测试阶段。 SDK 和运行时 在.NET SDK是一套库和工具的开发和运行.NET应用程序的。 当你下载.NET,您可以选择SDK或运行时,如.NET运行时或ASP.NET核心运行时。在要准备运行 .NET 应用程序的计算机上安装运行时。在要用于开发的机器上安装 SDK。当您下载 SDK 时,您会自动获得运行时。 SDK 下载包括以下组件: 在.NET CLI。可用于本地开发和持续集成脚本的命令行工具。 该dotnet 驱动程序。运行依赖于框架的应用程序的 CLI 命令。 在罗斯林和F#编程语言编译器。 该MSBuild的生成引擎。 在.NET运行库。提供类型系统、程序集加载、垃圾收集器、本地互操作和其他基本服务。 运行时库。提供原始数据类型和基本实用程序。 ASP.NET Core 运行时。为连接互联网的应用程序提供基本服务,例如 Web 应用程序、IoT 应用程序和移动后端。 桌面运行时。为 Windows 桌面应用程序提供基本服务,包括 Windows 窗体和 WPF。 运行时下载包括以下组件: (可选)
呆呆
2022/01/04
2.3K0
2020年10种最佳持续集成工具
技术正呈指数级增长,并且要参与其中,组织别无选择,只能采用技术。谈论“技术”基本上意味着创建“更快,更方便”和“定性”的解决方案。为了跟上高要求的技术动态,不仅人力资源需要与这个行业的同时发展相适应,而且迫切需要高度标准化的流程以提供一流的结果。那时就出现了DevOps的需求。从计划到交付,引入DevOps的想法是通过持续交付和持续集成之间的开发和自动化系统协作来保持质量。为了简化起见,必须有一种便捷的方法来处理复杂的情况,而不会拖延并按时交付。因此,持续集成工具的引入使开发人员可以更轻松地简化开发流程。
DevOps云学堂
2020/03/24
8K0
CI持续集成介绍
互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称CI)。 一、概念 持续集成(Continuous Integratio
若与
2018/04/25
1K0
CI持续集成介绍
Web持续集成工作实践
摘要 如果团队开发成员经常集成他们的工作,每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建来验证,从而尽快地发现集成错误。那么这个过程可以大大减少集成的问题,让团
IT大咖说
2018/04/03
1.2K0
Web持续集成工作实践
持续集成(译)
持续集成是一种软件开发实践,团队成员经常集成他们的工作,通常每个人至少每天集成 - 导致每天进行多次集成。每个集成都通过自动构建(包括测试)进行验证,以尽快检测集成错误。许多团队发现这种方法可以显着减少集成问题,并允许团队更快地开发有凝聚力的软件。本文是对持续集成的快速概述,总结了该技术及其当前使用情况。
测试加
2022/12/05
9890
C# 一分钟浅谈:自动化部署与持续集成
在现代软件开发中,自动化部署和持续集成(Continuous Integration, CI)已经成为提高开发效率、减少错误、加快产品迭代速度的重要手段。本文将从基础概念出发,逐步深入探讨自动化部署与持续集成在C#项目中的应用,包括常见的问题、易错点以及如何避免这些问题。
Jimaks
2024/11/03
3240
基于Jenkins Pipeline的ASP.NET Core持续集成实践
最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署,因此这里总结一下。
Edison Zhou
2019/04/21
1.7K0
相关推荐
.NET平台系列26:在 Windows 上安装 .NET Core/.NET5/.NET6
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档