错误代码如下:
[TencentCloudSDKException] code:ClientNetworkError message:HTTPSConnectionPool(host='tts.tencentcloudapi.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1007)'))) requestId:None
源码如下(SecretId","SecretKey"换成账号申请的具体密钥):
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.tts.v20190823 import tts_client, models
try:
# 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
# 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
# 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
cred = credential.Credential("SecretId", "SecretKey")
# 实例化一个http选项,可选的,没有特殊需求可以跳过
httpProfile = HttpProfile()
httpProfile.endpoint = "tts.tencentcloudapi.com"
# 实例化一个client选项,可选的,没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化要请求产品的client对象,clientProfile是可选的
client = tts_client.TtsClient(cred, "ap-beijing", clientProfile)
# 实例化一个请求对象,每个接口都会对应一个request对象
req = models.TextToVoiceRequest()
params = {
"Text": "我爱你,我伟大的祖国",
"SessionId": "qawsedrf12345678"
}
req.from_json_string(json.dumps(params))
# 返回的resp是一个TextToVoiceResponse的实例,与请求对象对应
resp = client.TextToVoice(req)
# 输出json格式的字符串回包
print(resp.to_json_string())
except TencentCloudSDKException as err:
print(err)
唯一真正的区别是一个同步块可以选择它同步的对象。一个同步方法只能使用'this'(或相应的类实例用于同步类方法)。例如,这些在语义上是等同的:
synchronized void foo() {
...
}
void foo() {
synchronized (this) {
...
}
}
后者更灵活,因为它可以竞争任何对象的关联锁,通常是成员变量。它也更精细,因为您可以在块之前和之后执行并发代码,但仍然在方法中。当然,通过将并发代码重构为单独的非同步方法,您可以轻松地使用同步方法。使用任何一个让代码更易理解的地方。
使用同步方法的块没有明显的优势。
也许唯一一个(但我不称之为优势)是你不需要包含对象的引用this。
方法:
public synchronized void method() { // blocks "this" from here....
...
...
...
} // to here
块:
public void method() {
synchronized( this ) { // blocks "this" from here ....
....
....
....
} // to here...
}