腾讯云移动推送TPNS怎么样?

腾讯云移动推送TPNS怎么样?移动推送 TPNS(Tencent Push Notification Service) 为APP开发者及运营人员提供接入简单、推送稳定、快速、高抵达的 APP 通知栏及应用内消息推送服务,同时提供完善易用的推送运营平台,帮助你高效触达用户,提升运营效率,优化运营效果,促进用户活跃提升。

下面星速云给大家说说腾讯云移动推送 TPNS怎么样
什么场景下会使用移动推送 TPNS ?
1.系统通知

当APP用户相关状态或者系统功能状态变化时(如平台广播通知、用户交易提醒、电商物流通知),需要对用户进行及时告知,或者促使用户完成特定操作。

2.社交互动提醒

具有社交场景的 App 用户之间产生点赞、评论、分享等社交行为时,用户未打开APP也可以对目标用户进行消息提醒,从而促进用户多次互动,形成功能闭环,提升用户活跃度。

3.用户促活运营

用户运营中,通常需要针对不同活跃周期的用户进行分层促活运营,如对新用户推送产品引导、对流失用户召回,通过定向主动地进行消息推送,提升次日留存,*终实现活跃用户的增长。

4.活动促销提醒

APP经常需要做产品推广和营销活动,如游戏活动、618电商节、工具订阅消费等,通过对目标用户进行定向通知栏消息+应用内弹窗推送,吸引用户消费,从而提升*终营销活动转化效果。

5.内容订阅推送

内容、资讯、视频类 App 需要对读者主动推送用户关注的内容或者热点资讯,可以帮助用户快速获取*新、*热门的信息,同时提升APP打开率,增加内容消费度,提升用户活跃。

6.应用内消息中心

在应用内提供统一的消息中心模块,让用户不错过重要消息,提升运营类消息的触达率。

腾讯云移动推送tpns有什么优势?
1.高到达组合拳

Android、iOS 厂商通道一站式集成与管理,轻松托管;特有的联合进程保活能力,在线消息保证 99.9% 到达率,结合服务端消息缓存+短信等多种方式补推保障消息*高到达。

2.数据安全合规

TPNS 产品聚焦提供专业的推送服务,SDK 不采集任何隐私数据,符合工信部及 GDPR 数据隐私协议,让您不再为数据隐私安全发愁。

3.三分钟快速集成

支持 Android 自动快速集成,两行代码即可搞定,iOS 更支持国内首个无代码集成工具,轻点鼠标即可完成集成;Flutter、ReactNative 等开发框架下也可快速接入。

4.便捷高效的运营工具

便捷易用的推送运营界面,无需自行开发,即可拥有素材管理、用户提取、推送管理、数据分析的全套能力,帮助您不断提升推送运营能力,促进用户增长。

5.推送安全控制

支持消息无痕撤回、消息终止与消息覆盖,支持设定推送 IP 白名单、推送测试设备预览,更有设备限频、黑词管理等能力后续为你的推送保驾护航。

6.智能自动化运营

支持多种自动化消息推送能力,包括 A/B 实验对比快速验证推送效果,设置自动化任务,定时、按天、按周、按月自动触发推送任务,省去开发成本。

7.海量、稳定、*速的性能

支撑腾讯内外部各行业海量消息需求,经王者等亿级 APP 验证,系统可靠性99.9%,每分钟1800万推送消息,秒级到达,并通过服务 SLA 质量保证,包您放心。

8.完善的开放平台

支持数据接入、消息推送、数据统计三大类服务端 API,能轻松实现 APP 业务自动触发推送,更能灵活安全地的助您对接各类三方平台,实现授权管理,*大化 Push 触达渠道的价值。
————————————————

原文链接:https://blog.csdn.net/wx_15323880413/article/details/110262058

matplotlib多个坐标系显示图像

matplotlib多个坐标系显示图像

from pylab import mpl

设置显示中文字体
mpl.rcParams[“font.sans-serif”] = [“SimHei”]

设置正常显示符号
mpl.rcParams[“axes.unicode_minus”] = False

x = range(60)
y_beijing = [random.uniform(10, 15) for i in x]
y_shanghai = [random.uniform(15, 25) for i in x]

创建1行两列的画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)

添加x轴、y轴刻度
y_ticks = range(40)
x_ticks_labels = [“11点{}分”.format(i) for i in x]

axes[0].plot(x, y_beijing, linestyle=’-.’, color=‘r’, label=‘北京’)
axes[1].plot(x, y_shanghai, linestyle=’–’, color=‘g’, label=‘上海’)

添加x轴、y轴刻度
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_labels[::5])

axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_labels[::5])

添加网格
axes[0].grid(True, linestyle=’–’, alpha=0.7)
axes[1].grid(True, linestyle=’–’, alpha=0.7)

添加描述
axes[0].set_xlabel(“时间”)
axes[0].set_ylabel(“温度”)
axes[0].set_title(“北京一小时温度变化图”, fontsize=20)

axes[1].set_xlabel(“时间”)
axes[1].set_ylabel(“温度”)
axes[1].set_title(“上海一小时温度变化图”, fontsize=20)

显示图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)

plt.show()

阿里云服务器是什么,可以用来干嘛?

随着云计算产业链的不断延伸,虚拟化、分布式、运维管理等技术渐趋发展成熟,高大上的云计算首次走向平民化,常态化,互联网企业上云已经不再是什么高门槛的技术,引发全民上云热潮!

云服务器作为云计算的重要衍生产物,技术创新使得价格越来越亲民,从而也为更多中小企业上云提供了便利条件!

通过营销推广+政策驱动,现在很多个人或企业都开始搭建自己的云服务器,那么拥有一台云服务器究竟有什么用途呢?

下面我们来梳理云服务器实际的应用场景:
1、搭建网站
用服务器搭建网站是云服务器*常见的应用场景,比如搭建个人网站,可以用作个人内容输出或者个人展示;而搭建企业网站则是搭建企业的门户,是企业对外宣传的重要渠道之一。

*次搭建网站的用户,往往对搭建程序的运行环境非常头疼,不过现在市面上有很多集成环境可供选择,比如集成环境LNMP、LAMP等以及WDCP、宝塔面板等面板工具,非常适合新手搭建网站练手。

实在不知道怎么弄,*简单的就是租一个云平台的轻量应用服务器,直接带有基础运行环境,一键启动程序上传并进行简单绑定即可,小白上手也会弄,刚好*近腾讯云的双十一活动针对轻量应用服务器推出大量优惠政策,1核2G1M低至88元/年,活动链接可参考:

2、部署业务系统
没有数字化管理工具,企业是无法在数字化时代立足的!以前没有云服务器的适合,很多企业都是将OA、ERP、HR等系统部署在本地自建机房,而本地自建机房有一个很大的弊端,就是在晚上或者节假日的时候,这些应用都是处于无法访问的状态,进入移动互联网时代以后,很多企业都采用的是移动化办公,如果应用处于无法访问的状态将严重影响企业的办公效率。

如今有了云服务器,企业应用随时随地都可以被访问,系统连续24小时运行也不会出现问题,有条件的可以再弄一个备用服务器,以免出现突发状态,从此再也不用担心机房断电、设备老化等不稳定问题,企业办公能够更加便利!

3、云笔记
现在很多人不愿意使用互联网上的云笔记平台,*主要的原因还是担心数据私密性,所以他们会选择搭建私有云的云笔记平台。的确,选择开源工具搭建自己的私有云笔记平台是个非常安全的做法。

4、企业网盘
现在市面上,百度网盘可以说在网盘市场中一家独大,但由于百度网盘主要是针对C端,而且之前的一些负面让很多人对百度网盘失去信心,企业数据庞大急需要企业网盘云协作来开展自身业务,但由于数据安全问题,很多企业不愿意把数据存放在、开放网盘上,于是他们会选择搭建私有企业云网盘。

5、游戏私服
游戏爱好者*喜欢的就是玩搭建私服的游戏,而且现在很多游戏网站都提供已下架的较早版本的游戏代码可供下载,这对游戏爱好者来说可是一个大大的福利呀。

既然有代码,那么选择云服务器来部署是个不错的选择。对于大部分游戏来说,只需要4核8G5M的带宽配置,游戏跑起来就很顺畅了,而腾讯云*近推出的4核8G5M带宽的活动一年低至778元【限企业用户购买】,是部署游戏的*佳选择。

6、开发/测试
开发或运维人员经常需要对服务器进行开发和测试,而云服务器可以提供非常便利的测试环境,从而保障测试系统持续在线,随时随地都可以进行测试系统调试;而且,国内云服务器还可以随便切换操作系统,满足多种测试环境的要求。1核2G1M带宽就是非常理想的测试环境了,活动链接可参考:

当然,服务器还有很多其他的用途,比如搭建小程序、IM、商城网站啦,都是不错的选择呢!
————————————————

原文链接:https://blog.csdn.net/wx_15323880413/article/details/110448958

python的数据类型

python的数据类型

python的数据类型
一、基础语法
terminal 系统终端,命令行
python console python命令
# 单行注释
“”” “”” 多行注释
快捷多行注释 ctrl+/
输入:input

name = input(“请输入:”)
print(name ,”他是个厉害的人”)
变量的作用:存储数据
变量名规则:
1、字母 数字 _ 组成 不能以数字开头、
2、不要使用python的关键字
在python console可以查看所有的关键字

import keyword
keyword.kwlist
变量名规范:
见名知义
下划线连接
驼峰命名法

二、数据类型
1、标识符:在python 里面自己命名的东西叫标识符
变量名称是不是标识符? 是
函数名称、类名称、模块名、包名 均为标识符
2、数据类型
1)整型
age = 18 #数字、整数、小数
2)字符串
3)布尔类型 True False
4)列表 list a = [‘yuyan’,1]
5)元祖 tuple b = (‘yuyan’,1)
6)字典 dict c = {“name”:“xiaojing”,“age”:1}
7)集合 set

三、字符串
1、字符串数据左右两边必须加引号 ‘ ” “””
2、三引号可以多行打印
name_two = “”” hhhhhhhh
wozai
“””
如果字符串内部有双引号,那么用单引号表示字符串
如果字符串内部有单引号,那么用双引号表示字符串
name_three = “‘小美’很好看”
# TODO: 如果想要用字符串表示windows系统下面的路径
在字符串前加一个r’D:\test\’
file_path = r’D:\test\1.txt’
1、字符串的操作
1)字符串的拼接 +

name_one = ‘ bad’
name_two = ‘ bay’
nane_full = name_one +” + name_two
print(nane_fu1l)
2)字符串重复多次 *

name = “badboy”
print(name * 5)
3)获取字符串的某个字符
判断字符长度:len()
打印:print(len())

name = “你好 世界”
读取数据索引从0开始

name_one = name[0]
从右面开始从-1 开始

name_two = name[-1]
切片

a = “今天很好,是不是”
a_01 = a[start: end: step] 取左边,不取右边
print(a[0:2]) #今天
步长
获取所有print(a[:])
prin t(a[::2]) 步长为2 跳一个
步长如果为正,左边往右边。步长为负,右边往左边数
4)数据类型转换

age = “4”
money = “5”
将字符串转化为数字 int(str)
print(int(age)*int(money)) #20
age = 4
money = 5
将数字转化为字符串 str
print(str(age)*str(money)) #45
5)复制
可以通过索引复制,切片复制

str1 = “cainaio 666”
str2 = str1[0:]
2、字符串的内置函数操作
str1 = “my baby i love you ”
print(len(str1)) # 获取字符串长度
print(str1.upper()) #小写转大写
print(str1.upper().lower()) #在转为小写
str2 = “hapyy NEW Year”
print(str2.swapcase()) #大小写转化
1、查找 :用find
当查找不到find会报-1

if_snow = str1.find(“wo”)
print(if_snow) # -1
当find找到指定元素的时候,返回它的索引值,必须是连续的字符

if_snow1 = str1.find(“i”)
print(if_snow1)
2、index 和find 用法一样
不同的是 index 找不到时会报 ValueError

if_snow3 = str1.index(“wo”)
print(if_snow3)
3、替换replace 字符串一旦定义 除非重新赋值 不然不会发生变化

dl_name = “本本”
new_dl = dl_name.replace(“本”,”哈”)
print(dl_name) #本本
print(new_dl) #哈哈
new_dl2 = dl_name.replace(“本”,”哈”,1)
print(new_dl2) #哈本
4、统计 count

str3 = “我爱你 我爱你 我爱 我爱你 我爱你”
print(str3.count(“爱”)) #5
5、join 字符串拼接 正规方式 代替 +

s1 = “wo ”
s2 = “我的理想”
s3 = “hhh ”
print(“”.join([s1,s2,s3])) #wo 我的理想hhh
6、字符串分割 split

a = “hello world”
b = a.split(“w”) #以w 为界限分割
print(b) #[‘hello ‘, ‘orld ‘]
c = a.split(” “) #[‘hello’, ‘world’]
print(c) #[‘hello’, ‘world’]
a1 = “hello/world/soft/sfh”
b1 = a1.split(“/”)
print(b1) #[‘hello’, ‘world’, ‘soft’, ‘sfh’]
7、strip 用的多 去掉左右两边的指定字符

str3 = ” 我爱你 ”
print(str3.strip(‘ 你’)) # 我爱
8、判断字符串是不是正整数

a = ‘2345a678’
print(a.isdigit()) # f
四、列表的操作
1、列表 存储很多数据
列表可以存储不同数据类型的数据
字符串不可以修改
列表可以被修改,可变的数据类型
2、列表的操作
1、添加
1)、添加一个元素append

list1 = [“小米”]
#添加新的元素 , append 一次只添加一个 添加到*后
list2 = list1.append(“小红”)
#打印list1
print(list1) #结果[‘小米’, ‘小红’]
# 注意: 如果打印list2 报None
print(list2) #None
2)添加多个元素 extend
extend 添加多个元素 添加到*后

list1.extend([“小明”,”小黑”,”小白”,”小美”]) #添加的是列表所以用【】
print(list1) #结果:[‘小米’, ‘小红’, ‘小明’, ‘小黑’, ‘小白’, ‘小美’]
#注意:不可以连续使用2次append
# l1 = list1.append(“小区”).append(“很好”)
# print(list1) #报错
3)、向指定的位置添加 insert
输入索引及内容 list1.insert(索引值,内容)

list1.insert(1,”小小”)
print(list1) #[‘小米’, ‘小小’, ‘小红’, ‘小明’, ‘小黑’, ‘小白’, ‘小美’]
2、删除
1)删除指定的值 remove

list1.remove(“小小”)
print(list1) #[‘小米’, ‘小红’, ‘小明’, ‘小黑’, ‘小白’, ‘小美’]
2)删除指定的索引 pop

list1.pop(2)
print(list1) #[‘小米’, ‘小红’, ‘小黑’, ‘小白’, ‘小美’]
#pop()没有参数时默认删除*后一个
list1.pop()
print(list1) #[‘小米’, ‘小红’, ‘小黑’, ‘小白’]
a = list1.pop(1)
print(a) #小红 可以用变量接收
3)删除所有的元素 clear

list1.clear()
print(list1) #[]
4)del 不要去用

del list1
print(list1) #NameError: name ‘daolaos’ is not defined 没有定义
# del 从内存中全部清空
3、修改

list3 = [‘小米’, ‘小红’, ‘小黑’, ‘小白’]
list3[1] = [‘花花’]
print(list3) #[‘小米’, [‘花花’], ‘小黑’, ‘小白’]
4、列表的函数
1)index 获取索引

print(list3.index(“小米”)) #0
2)count 获取出现的次数

list4 = [‘小米’, ‘小红’, ‘小黑’, ‘小白’]
print(list4)
print(list4.count(‘小’)) #4
3)逆序 reverse 直接修改原来的变量

list4.reverse()
print(list4) #[‘小白’, ‘小黑’, ‘小红’, ‘小米’]
3)逆序2 重新创建一个变量 不会修改原来的变量

a = list4[::-1]
print(list4) #[‘小白’, ‘小黑’, ‘小红’, ‘小米’]
print(a) #[‘小米’, ‘小红’, ‘小黑’, ‘小白’]
4)排序 sort

list5 = [“p”,”k”,”l”,”a”]
list5.sort()
print(list5) #[‘a’, ‘k’, ‘l’, ‘p’]
数学排序

list1 = [1,3,5,6,2,8,7]
list1.sort()
print(list1)#[1, 2, 3, 5, 6, 7, 8]
list1.sort(reverse = True) #reverse:反转、逆序
print(list1) #[8, 7, 6, 5, 3, 2, 1]
五、字典Dict
1、列表 存储多个数据,想获取单个元素可读性不强

zxx_info=[zxx,17,”女”,”西游记”,”还珠格格”,”庆余年”,”彭于晏”,”宝强”]
如果要获取*喜欢的电视 获取麻烦 可读性差
字典 存储多个数据,想获取单个元素 用字典
有标记位 key : value
key :key值不可变类型 唯一 一般用字符串表示key值

字典表示:dict1[key值] 直接获取

zxx_info = {“name”:”祝”,”age”:17,”fava_tv”:”西游记”,”sex”:”女”,”most_tv”:”还珠格格”}
age = zxx_info[“age”]
print(age)
2、字典操作
获取字典的长度 len

zz_info = {“name”:”祝”,”age”:17,”fava_tv”:”西游记”,”sex”:”女”,”most_tv”:”还珠格格”}
print(len(zz_info)) #5
总结:
字典是无序的数据类型
那些有序 :list 有顺序,索引 字典没有索引

print(zz_info(2)) 报错
3、字典可变类型 可进行增删改查

1)增
添加*喜欢的明星

zz_info = {“name”:”祝”,”age”:17,”fava_tv”:”西游记”,”sex”:”女”,”most_tv”:”还珠格格”}
zz_info[“mingx”] = [“周杰伦”,”五月天”]
print(zz_info) #{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’, ‘mingx’: [‘周杰伦’, ‘五月天’]}
2)修改

zz_info[“mingx”] = “小妹”
print(zz_info) #{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’, ‘mingx’: ‘小妹’}
字典里面的单引号双引号没有区别 自动使用单引号
使用元素修改和元素添加的方式是一样的
当key值不存在是就添加,key值存在时,修改就会覆盖原来的数据
3)删除
随机删除

zz_info.popitem() #不带参数
print(zz_info) #{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’}
删除指定的key

zz_info.pop(“age”)

print(zz_info) #{‘name’: ‘祝’, ‘fava_tv’: ‘西游记’, ‘sex’: ‘女’, ‘most_tv’: ‘还珠格格’}
其他方式 清除

zz_info.clear()

print(zz_info) #{}
通过元组存储数据

zz_info.items()
print(zz_info.items())# dict_items ([(‘name’, ‘祝’), (‘fava_tv’, ‘西游记’), (‘sex’, ‘女’), (‘most_tv’, ‘还珠格格’)])
获取所有的key

print(zz_info.keys()) #dict_keys([‘name’, ‘fava_tv’, ‘sex’, ‘most_tv’])
获取所有的value

print(zz_info.values()) #dict_values([‘祝’, ‘西游记’, ‘女’, ‘还住格格’])
总结

字典: 1、无序 可变的类型
2、key 唯一不可变类型 value随意
3、增删改
4、items()以元组形式存储数据, keys()获取key ,values()获取value

六、元组 tuple
1、元组和列表
列表表示
list1 = [“小米”,“小红”,“哈哈”,“喜喜”]
元组表示

tuple1 = (“小米”,”小红”,”哈哈”,”喜喜”)
print(tuple1)
2、获取
获取某一个元素,索引 和列表一样
获取多个元素,切片,和列表一样
3、元组 可以添加修改删除?
不能 只能重新赋值,因为元组不可变
4、元组中含有列表 可以添加删除修改吗

tuple2 = (“小米”,”小红”,”哈哈”,”喜喜”,[“小花”,”宝宝”,”嘿嘿”])
tuple2[4] = [“风”,”雨”,”电”]
print(tuple2)#报错 不可以修改
5、修改元组中的列表

tuple2[4][0] = [“风”]
print(tuple2) #(‘小米’, ‘小红’, ‘哈哈’, ‘喜喜’, [[‘风’], ‘宝宝’, ‘嘿嘿’])
元组的不可变性 是相对的 不是说 里面的所有的内容完全不变
只要看修改的索引的前面是不是一个可变类型
例如:

tuple3 = (“小米”,”小红”,{‘name’: ‘祝’, ‘age’: 17, ‘fava_tv’: ‘西游记’})
#索引前是元组 肯定不可修改
tuple3[2] = ” 呵呵”
#tuple[2]是字典 可变
tuple3[2][“name”] = “呵呵”
print(tuple3) #(‘小米’, ‘小红’, {‘name’: ‘呵呵’, ‘age’: 17, ‘fava_tv’: ‘西游记’})
zx = [ “小米”,”小红”,(“哈哈”,”喜喜”)]
#zx[2]前面是列表 可变
zx[2] = “呵呵”
print(zx)# [‘小米’, ‘小红’, ‘呵呵’]
#元组不可变
zx[2][1] = “hehe”
print(zx) 报错
空元组
tuple4 = ()
print(tuple4) #是元组
注意:
1个元素的元素表示,不是一个元组,而是去掉括号后原始的数据类型
如果想表示一个元素的元组 在元素后面加一个逗号,
tuple4_1 = (2)
print(tuple4_1) # <class ‘int’>
tuple4_2 = (2,)
print(tuple4_2) #是元组
print(len(tuple4_2)) #1 长度为1
七、集合 set
set1 = {“小米”,”小红”,”哈哈”,”喜喜”}
print(set1) #{‘喜喜’, ‘小红’, ‘小米’, ‘哈哈’}
1、集合不是键值对 是无序的 不能通过索引获取
主要作用:重复的元素直接丢掉

set2 = {“小米”,”小红”,”哈哈”,”喜喜”,”小米”,”小红”,”哈哈”,”喜喜”}
print(len(set2)) #4
2、集合转换成列表

set2 = list(set([“小米”,”小红”,”哈哈”,”喜喜”,”小米”,”小红”,”哈哈”,”喜喜”]))
print(set2) #[‘喜喜’, ‘小红’, ‘小米’, ‘哈哈’]
总结:
元组: 1、一个元素的元组必须要加, 2、元组不可变和列表的可变性
集合: 主要 1、去重 2、无序

解决vue打包后刷新问题

解决vue打包后刷新问题

问题描述:

以vue打包后运行再django后端为例, 当部署再django后端口,正常访问网页没问你,从页面中跳转也没问题,但是当跳转到非入口页面后,如果此时刷新页面就会报错,说页面路由不存在;

解决办法:由于vue打包后只有一个页面文件,所以在这个页面每次访问时通过js动态获取当前url,然后从url中分割出来具体的路径,之后通过vue中的app.$router.push(path)跳转到相应的页面即可;

具体实施:

首先再vue项目中的main.js中加入一下代码:

var url = window.location.href;
url = url.split(window.location.host)[1]
console.log(“url”, url)
app.$router.push(url);

// 解释:在刷新页面后利用vue中的方法router.push(url)动态跳转到vue中的页面,
然后打包vue项目:

npm run build
django后端路由配置:

urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘app/’, include(‘app.urls’)),
url(r’^[a-zA-Z]*’, index) # 将访问的所有关于vue的路径都指向index页面
]
# 注意这里的顺序,*好把通用匹配放到*后
视图函数:

@csrf_exempt
def index(request):
return render(request, “index.html”)

腾讯云服务器带宽怎么计费?

腾讯云服务器流量计费价格1GB流量0.8元,流量价格与地域有关,地域不同流量价格也不同,一般腾讯云国内地域如北京、广州等地域流量价格是0.8元/GB,腾讯云香港节点是1元/GB,星速云来详细说下腾讯云服务器公网带宽按流量计费流量每GB收费标准:

腾讯云服务器流量计费价格
腾讯云服务器公网带宽可选按带宽计费和按使用流量计费,云服务器公网带宽按使用流量计费是指统计出云服务器公网出方向流量大小,根据每GB单价计算出流量费用,云服务器地域不用流量单价也不同,星速云以腾讯云北京地域为例,来详细说下腾讯云服务器流量计费价格:

%title插图%num

包年包月(元/Mbps/月) 按量计费(元/Mbps) 按量计费(元/GB) 共享带宽包(元/Mbps)
带宽≦2Mbps 2Mbps<带宽≦5Mbps 带宽>5Mbps 带宽≦5Mbps 带宽>5Mbps 流量价格
20 25 90 0.06 0.03 0.8 108
一般来讲,腾讯云服务器按流量计费中国大陆地域流量价格是0.8元/GB,中国香港地域流量是1元/GB,地域不同1GB价格也不同,实际请以官方文档为准:

官方文档:云服务器流量收费标准 – 腾讯云

另外,腾讯云服务器实际产生的流量是如何计算的?腾讯云只统计云服务器公网出方向流量,也就是说云服务器内网产生的流量是免费的,只有公网产生的出方向流量才计算流量,然后根据每GB流量单价计算即可。

腾讯云服务器有多种规格,如标准型S2、标准型SA2、标准型S5、标准网络优化型SN3ne、内存型、计算型及GPU异构等规格,哪怕同等CPU内存配置的云服务器,实例规格不同价格也不同;购买时长不同优惠折扣也不同;计费模式不同,价格也不同。

腾讯云服务器支持多种计费方式:预付费(包年包月)、按日配置付费(月结)、按小时配置实时付费、以及竞价型实例。

%title插图%num

计费方式

预付费(包年包月) 按日配置付费(月结) 按小时配置实时付费 竞价型实例
结算方式 预付费 后付费 实时结算 实时结算
计费单位 元/月 元/天,不足一天按一天计算 元/小时,精确到秒 元/小时,精确到秒
适用场景 拥有固定
7X24小时服务 固定7X24小时服务
或爆发业务量、临时扩展测试等 突发性业务 容错能力强
中断容忍度高的业务
升级配置 支持 支持 支持 不支持
升级带宽 支持 支持 支持 支持
随时释放 不支持 支持 支持 支持
腾讯云服务器预付费(包年包月)

预付费(包年包月)是先购买再使用的计费方式,需要一次性支付一个月、多个月或者多年的使用费用。

这种计费方式适用于提前预估设备需求量的场景,价格相较于按量计费模式更低廉,但不支持资源随时释放。

注意事项

用户在使用本计费方式购买腾讯云服务器时,系统会根据用户选购的资源硬件(包括CPU、内存、数据盘)和网络费用,对用户腾讯云账户进行对应金额扣除。用户需保证账户中预存有充足的可用余额,如果余额小于系统将扣除的金额,需要先充值后才能购买。

退款

预付费(包年包月)的腾讯云服务器产品支持5天无理由退款。

退款用户需在购买后的5天内提出退款申请,超出5天则不予受理退款,每个用户腾讯云服务器KEC限*多通过控制台退款1次,*多累积可退1台。

腾讯云服务器按配置付费

按配置付费是先使用再付款的计费方式,计费单位是天,不足一天的按一天算。

此计费方式适用于固定7X24小时服务或爆发业务量、临时扩展测试等情况,支持资源随时释放,价格比包年包月较贵一点。

腾讯云服务器按小时配置实时付费

按小时配置实时计费是一种弹性计费模式,计费时间粒度精确到秒,不需要提前支付费用,每小时整点进行一次结算。

此计费方式适用于电商抢购等设备需求量会瞬间大幅波动的场景,单价比按日配置付费更贵。

计费说明

开通按小时配置实时付费的腾讯云服务器实例时,账号里*少存在100元钱。

该计费方式会在每个整点(北京时间)进行一次结算,根据用户在上一个小时腾讯云服务器实例的实际使用时长进行扣费。计费的起点以腾讯云服务器实例创建成功的时间点为准,终点以用户发起销毁操作的时间点为准。购买时腾讯云服务器实例单价按小时呈现,结算时按实际使用秒数计价。控制台展示金额保留至小数点后两位。

如果为该计费方式的腾讯云服务器选择关机不收费模式,腾讯云服务器实例关机后将不再收取实例(CPU、内存)的费用。关于此功能的详细信息,请参考按小时配置实时付费关机不收费。如不符合关机不收费条件,关机后继续正常收费。

腾讯云服务器欠费说明

按小时配置实时结算扣费后,如账户金额不足以抵扣本小时费用,且在两小时内未充值,则两小时后用户账号下的腾讯云服务器将会停机并停止服务。

如果从停机时刻起24小时内未充值,服务器资源将被自动释放,数据也不再保留。

竞价型腾讯云服务器

腾讯云竞价实例是腾讯云服务器的一种新的售卖方式,旨在为客户提供更高性价比的计算服务,节省您的使用成本。这是一种后付费的售卖方式,您可以以按小时实时付费1~9折的价格获得与按小时实时付费完全相同性能的实例。
————————————————

原文链接:https://blog.csdn.net/wx_15323880413/article/details/110262439

python读取并显示图片

c

前言
在进行图像处理时,经常会用到读取图片并显示出来这样的操作,所以本文总结了python中读取并显示图片的3种方式,分别基于opencv、matplotlib、PIL库实现,并给出了示例代码,介绍如下。

OpenCV
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

import matplotlib.pyplot as plt # plt 用于显示图片
import cv2

#opencv的颜色通道顺序为[B,G,R],而matplotlib颜色通道顺序为[R,G,B],所以需要调换一下通道位置
img1 = cv2.imread(‘./Lena.png’)[:,:,(2,1,0)] # 读取和代码处于同一目录下的 lena.png
img2 = cv2.imread(‘./Lena.png’)[:,:,(2,1,0)]

#结果展示
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文乱码
plt.subplot(121)
#imshow()对图像进行处理,画出图像,show()进行图像显示
plt.imshow(img1)

plt.title(‘图像1’)
#不显示坐标轴
plt.axis(‘off’)

#子图2
plt.subplot(122)
plt.imshow(img2)
plt.title(‘图像2’)
plt.axis(‘off’)

# #设置子图默认的间距
plt.tight_layout()
#显示图像
plt.show()
Matplotlib
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片

img1 = mpimg.imread(‘./Lena.png’) # 读取和代码处于同一目录下的 lena.png
img2=mpimg.imread(‘./Lena.png’)

#结果展示
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文乱码
plt.subplot(121)
#imshow()对图像进行处理,画出图像,show()进行图像显示
plt.imshow(img1)

plt.title(‘图像1’)
#不显示坐标轴
plt.axis(‘off’)

#子图2
plt.subplot(122)
plt.imshow(img2)
plt.title(‘图像2’)
plt.axis(‘off’)

# #设置子图默认的间距
plt.tight_layout()
#显示图像
plt.show()
PIL
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。。。

PIL可以做很多和图像处理相关的事情:

图像归档(Image Archives)。
图像展示(Image Display)。
图像处理(Image Processing)。
import matplotlib.pyplot as plt # plt 用于显示图片
from PIL import Image

img1 = Image.open(‘./Lena.png’)
img2 = Image.open(‘./Lena.png’)

#结果展示
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 中文乱码
plt.subplot(121)
plt.imshow(img1)
plt.title(‘图像1’)
#不显示坐标轴
plt.axis(‘off’)

#子图2
plt.subplot(122)
plt.imshow(img2)
plt.title(‘图像2’)
plt.axis(‘off’)

# #设置子图默认的间距
plt.tight_layout()
#显示图像
plt.show()
运行结果

%title插图%num

IOS下微信好友和朋友圈分享实现

1、IOS分享到微信好友和微信朋友圈

*步,先检测微信客户端是否存在:

[WXApi isWXAppInstalled]; —  这个方法返回一个bool值,来验证微信客户端是否存在

第二步,跳转到微信界面(好友或者朋友圈):

//创建发送对象实例

SendMessageToWXReq *sendReq = [[SendMessageToWXReq alloc] init];

sendReq.bText = NO;//不使用文本信息

//sendReq.scene = 1;//0 = 好友列表 1 = 朋友圈 2 = 收藏

//创建分享内容对象

WXMediaMessage *urlMessage = [WXMediaMessage message];

urlMessage.title = [NSString stringWithUTF8String:“title”];//分享标题

urlMessage.description = [NSString stringWithFormat:@”%s”, “分享描述”];//分享描述

[urlMessage setThumbImage:[UIImage imageNamed:[NSString stringWithUTF8String:“1.png”]];//分享图片,使用SDK的setThumbImage方法可压缩图片大小

//创建多媒体对象

WXWebpageObject *webObj = [WXWebpageObject object];

webObj.webpageUrl = [NSString stringWithFormat:@”%s”, “www.baidu.coom”];//分享链接

 

//完成发送对象实例

urlMessage.mediaObject = webObj;

sendReq.message = urlMessage;

 

//发送分享信息

[WXApi sendReq:sendReq];

第三步:验证分享回调:

在AppController.mm文件中,实现如下方法:

– (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options NS_AVAILABLE_IOS(9_0) // no equiv. notification. return NO if the application can’t open for some reason

{

if([url.host isEqualToString:@”platformId=wechat”])

{

return [WXApi handleOpenURL:url delegate:self];

}

else

{

return true;

}

}

//上面这个方法针对IOS9以上,但是对于IOS8的系统来说, 要实现下边的方法:

– (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

if(url.host isEqualToString:@”platformId=wechat”])

{

return [WXApi handleOpenURL:url delegate:self];

}

else

{

return true;

}

}

实际上这两个方法只是方法名不一致,内容都是一样的。
然后实现微信分享的回调方法:

-(void)onResp:(BaseResp *)resp

{
if([resp isKindOfClass:[SendMessageToWXResp class]]) {

SendMessageToWXResp *sendResp = (SendMessageToWXResp *)resp;

switch (sendResp.errCode) {

case WXSuccess://分享成功

{

printf(“微信朋友圈分享成功\n”);

break;

}

case WXErrCodeUserCancel://分享取消

{

printf(“微信朋友圈分享取消\n”);

break;

}

case WXErrCodeSentFail://分享失败

{

printf(“微信朋友圈分享失败\n”);

break;

}

default://分享失败

{

break;

}

}

}

然后再进行相应的处理即可。

 

python:序列类型及方法笔记!

python:序列类型及方法笔记!

序列类型

# 所谓序列,指的是一块可以存放多个值的连续内存空间,可以通过每个值所在的编号(索引)去访问他们
1.列表 list
定义 []
可变类型
#举例说明:

list1 = [‘大盘鸡’, ‘辣子鸡’, ‘羊肉串’, ‘小白菜’, ‘辣椒炒肉’, ‘土豆丝’]

print(type(list1))
列表名.方法名()

直接根据索引查找单个值

print(list1[5])
切片 查找列表当中的一段值 [起始值:终止值:步长]
#实例说明:

print(list1[2:5]) # 左闭右开实例说明:
print(list1[:5]) # 起始值不写 从0开始
print(list1[2:]) # 终止值不写 取到末尾
print(list1[2:5:3]) # 步长
print(list1[::3]) # 步长
index(元素,起始值,终止值) 查找元素的索引值 左闭右开
#实例说明:

print(list1.index(‘小白菜’))
print(list1.index(‘小白菜’, 2, 5))
print(list1.index(‘小白菜’, 3, 5))
count(元素) 计算列表中该元素出现的次数
#实例说明:

print(list1.count(‘小白菜’))
list2 = [‘hello’, ‘hello’, ‘hello’, ‘hello’]
print(list2.count(‘hello’))

append(元素) 往列表末尾追加一个元素
#实例说明:

list1.append(‘爆炒牛肚’)
print(list1)
insert(索引,元素) 往指定索引位置插入一个元素
#实例说明:

list1.insert(0, ‘小龙虾’)
print(list1)
extend(可迭代对象) 往列表当中添加多个元素:
#实例说明:

list1.extend([‘鸡蛋’, ‘豆腐’, ‘牛奶’])
print(list1)

直接指定索引进行修改
#实例说明:

list1[8] = ‘西红柿炒鸡蛋’
print(list1)
reverse 反序
#实例说明:

list1.reverse()
print(list1)
list2 = [1, 5, 3, 8]
sotr 排序
#实例说明:

list2.sort(reverse=True)
print(list2)
删除
pop 没有参数的时候删除的是*后一个元素
#实例说明:

list1.pop()
print(list1)
pop(索引) 根据索引删除指定位置的元素
#实例说明:

list1.pop(1)
print(list1)
remove(元素) 删除指定的元素
#实例说明:

list1.remove(‘牛奶’)
print(list1)
del 不是列表独有的方法
#实例说明:

del list1[0]
print(list1)
del list1[1:4] # 切片删除多个元素
print(list1)
clear 清空整个列表
#实例说明:

list1.clear()
print(list1)
print(dir(list1))
2.元组 tuple
定义 ()
不可变类型

tuple1 = (‘九千亿少女的梦’, ‘秋名山车神’)
print(type(tuple1))
tuple2 = (1, ) # 只有一个元素的时候 需要加逗号
print(type(tuple2))

直接根据索引进行查

print(tuple1[1])
index(元素,起始值,终止值) 根据元素查找索引

print(tuple1.index(‘九千亿少女的梦’))
切片 与列表一致

print(tuple1[:])
conut(元素) 查询元素的个数

print(tuple1.count(‘九千亿少女的梦’))
元组类型转成列表类型

print(list(tuple1))
列表类型转成元组类型

print(tuple(list2))
del 删

del tuple1
print(tuple1) 已经不存在 会保存
del list1
print(list1)
3.字符串 str
定义 ‘’ “” ‘’’’’’
不可变类型

str1 = ‘黄河之水天上来,奔流到海不复回’
print(type(str1)) # 查看类型

直接根据索引查

print(str1[8])
index(元素,起始值,终止值) 查找元素的索引

print(str1.index(‘来’, 5, 8)) # 如果没找到 会报错
find(元素,起始值,终止值) 查找元素的索引

print(str1.find(‘来’, 7, 8)) # 如果没找到 返回-1
切片

print(str1[0:4])

replace(旧元素,新元素)

str2 = ‘天生我材必有用’
print(id(str2))
str3 = str2.replace(‘我’, ‘你’) # 重生
print(str2)
print(id(str2))
print(id(str3))
print(str3)

str3 = ‘hello world’
print(str3.upper()) # 变大写

str4 = ‘HELLO WORLD’
print(str4.lower()) # 变小写
strip 去掉空格

str5 = ‘ a b c ‘
print(str5.strip())
split 按照参数进行分割

str6 = ‘真正的勇士,敢于直面惨淡的人生,敢于正视淋漓的鲜血’
print(str6.split(‘,’))
print(str6.split(‘敢于’))
字符串的格式化输出

str1 = ‘人生得意须尽欢’
str2 = ‘莫使金樽空对月’
str3 = ‘天生我材必有用’
” + “直接相加

print(str1+str2+str3)
join

print(”.join([str1, str2, str3]))
print(‘ ‘.join([str1, str2, str3]))
print(‘哇塞’.join([str1, str2, str3]))
print(‘,’.join([str1, str2, str3]))
format

print(‘{} 哇哈哈哈 {}’.format(str1, str2))
print(‘{1} {0}’.format(str1, str2))
占位符 %s

name = ‘橗釉’
age = 18
print(‘大家好,我是%s, 我今年%s岁’ % (name, age))
字符串的转义 加了 \ 字符不再表示它本身的含义

print(‘hello \n python’) # \n代表换行
print(‘hello \t python’) # \t代表tab
字符串的反转义 r

print(r’hello \n python’)

Python中简单的输入输出

Python中简单的输入输出

1、输出
Python中的输出函数是print(),想将输出转化为字符串、整型或浮点型时,则可以借助str()或int()、float()等函数进行转换。

没什么好说的,放一个*简单的例子大家都能理解。

print(“Hello world!”)
———————
Output: Hello world!
2、输入
(1)单输入
①通过input()函数,可以获取用户输入的字符串,如:

input_string = input()
②若想输入数字,则需要过int()对数据类型进行转换。需要注意的是,即使你在键盘上输入了一个”3″,对于计算机而言,它依旧会认为用户输入的是字符串,因此必须进行数据类型转换。

下面给一个简单的输出用户*喜欢数字的示例程序:

favorite_num = int(input(“Please give me your favorite number: “))

print(“Your favorite number is: ” + str(favorite_num))
———————————————————————
Input: Please give me your favorite number: 3
Output: Your favorite number is: 3
在输入的时候,我们想要的是一个数字,因此需要将输入的字符串转化为数值类型;

而在输出的时候,我们想要输出一组字符串,此时需要将int类型的数字转化为字符串类型一同输出。

(2)多输入
①借助split()函数,可以根据函数中的分隔符将字符串分隔为多个切片,如下,获取用户*喜欢的数字和颜色(以逗号分隔):

favorite_num, favorite_color = input(“Please tell me your favorite number and color: “).split(“,”)

print(“Your favorite number is: ” + favorite_num)
print(“Your favorite color is: ” + favorite_color)
———————————————————————————————-
Input: Please tell me your favorite number and color: 5,blue
Output: Your favorite number is: 5
Your favorite color is: blue
②对多个数值输入,同样要注意转换数据类型。如下,对输入的两个数字进行加法运算:

a, b = map(int, input(“Numbers to add: “).split(“,”))

print(a, “+” , b, “=”, (a + b))
————————————————–
Input: Numbers to add: 2, 5
Output: 2 + 5 = 7
③此外,还可以将多个输入存入列表中,方便后续处理调用。

numbers = list(map(int, input(“Please input the numbers you want to save: “).split()))

print(“Saved numbers: ” + ” “.join(str(i) for i in numbers))
————————————————————————————–
Input: Please input the numbers you want to save: 2 5 8 7 4
Output: Saved numbers: 2 5 8 7 4

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速