当前位置: 首页 > 编程日记 > 正文

mybatis-plus对datetime返回去掉.0_华为AI认证-TensorFlow2.0编程基础

2b5b278bca0d79ccf67fc9ef1cd346e0.png

参考《HCIA-AI2.0培训教材》《HCIA-AI2.0实验手册》

认证要求:

  1. 了解TensorFlow2.0是什么以及其特点
  2. 掌握TensorFlow2.0基础和高阶操作方法
  3. 熟悉TensorFlow2.0中的Keras API

简介:

TensorFlow是目前最为流行的深度学习框架,是人工智能领域的第一主要工具。从发布至今,共经历了0.1,1.0,2.0三个版本,认证考试要求掌握的是最新的2.0版本。

TensorFlow1.X中创建Tensor后,不能直接返回结果,只是创建计算图graph,需要在之后使用session会话机制才能运行,这种风格更像是一种硬件编程语言VHDL。

另外,TensorFlow1.X调试困难,API混乱,入门不易,使用更难,很多研究人员转向了PyTorch,但是比如在移动端的部署还是非常头疼。

TensorFlow2.0最大的特性就是去掉了graph和session机制,变得像Python和PyTorch一样,所见即所得。计算图、会话、变量管理与共享、Define-and-Run这些概念将一去不返了。

TensorFlow2.0包括了TensorFlow核心库,JavaScript,Lite,Extend。构成了一个完整的TensorFlow生态系统。

Why TensorFlow?

TensorFlow成为当下最流行的框架主要因为以下几个优势:

  • 支持GPU加速
  • 支持自动求导
  • 丰富的深度学习API

GPU可以对矩阵的加减乘除做并行加速:

import tensorflow as tf
import timeit
with tf.device('/cpu:0'):cpu_a = tf.random.normal([10000,1000])cpu_b = tf.random.normal([1000,2000])print(cpu_a.device,cpu_b.device)def cpu_run():with tf.device('/cpu:0'):c = tf.matmul(cpu_a,cpu_b)return cwith tf.device('/gpu:0'):gpu_a = tf.random.normal([10000,1000])gpu_b = tf.random.normal([1000,2000])print(gpu_a.device,gpu_b.device)def gpu_run():with tf.device('/gpu:0'):d = tf.matmul(gpu_a,gpu_b)return d# warm up
cpu_time = timeit.timeit(cpu_run,number=10)
gpu_time = timeit.timeit(gpu_run,number=10)print('warm up: ',cpu_time,gpu_time)# run time
cpu_time = timeit.timeit(cpu_run,number=10)
gpu_time = timeit.timeit(gpu_run,number=10)print('run time: ',cpu_time,gpu_time)

8c6c291081d6ad3be0e04f56d4abd7ee.png
i7-9700 v.s. RTX 2070 S

自动求导tf.Gradient(Tape):

import tensorflow as tfa = tf.constant(1.)
b = tf.constant(2.)
c = tf.constant(4.)with tf.GradientTape() as tape:tape.watch([a,b,c])y = a**2 + b*c + c[da,db,dc] = tape.gradient(y,[a,b,c])print(da)
print(db)
print(dc)

f75794d3c99aa23817dfc2af30c7dbfe.png
da=2*a=2,db=c=4,dc=b+1=3

TensorFlow提供大量的深度学习API:

ab63588e0822058188a5e83b1670c343.png

Tensorflow2.0 GPU环境搭建(linux平台下)

Nvidia显卡驱动:需要在Nvidia官网https://www.nvidia.com/Download/index.aspx?lang=en-us查询显卡对应的驱动包,下载。下面提供了一个适合RTX 20XX系列的安装包的百度云链接。链接:https://pan.baidu.com/s/1b1daIaMaz7-oy28sMLjysA 密码:4jeg

下载后进入tty3命令行模式,关闭lightdm,禁用nouveau显卡驱动,并安装Nividia显卡驱动程序,最后重启lightdm回到图形界面。

执行nvidia-smi,验证是否安装成功。

71923cb2669d5e3482c9b79cd25f69f6.png

CUDA10.0:下面是CUDA10.0的百度云下载链接。链接:https://pan.baidu.com/s/1L8OyM28D3UZi_IVPaceILA 密码:8e9t

注意在~/.bashrc配置环境变量,否则tensorflow会找不到.so文件。

执行nvcc -V,验证是否安装成功。

fdb27e9294f7ff640814b8eacf36d0d9.png

cudnn:用于神经网络运算加速。百度云链接:https://pan.baidu.com/s/1bAc8jrRUBeSIA1QQGTuHNg 密码:jc31

miniconda3:使用conda管理python环境,下载地址

Tsinghua Open Source Mirror​mirrors.ustc.edu.cn
217d032ea0920a094f07bb0d7d008cc8.png

安装后创建tensorflow2.0实验环境:

conda create -n tf2.0 python=3.6
conda activate tf2.0
pip install ( -i 清华或豆瓣源) tensorflow_gpu == 2.0.0

验证GPU加速可用:

import tensorflow as tf
print(tf.test.is_gpu_available()) # 输出True则成功

67caefed14b0a20d3668d474609c8a6f.png

TensorFlow2.0基础操作

1.常见的数据类型载体

  • list:灵活,可以随意插入、添加和编辑,内存的管理不是很连续,对高维数据的读取和写入效率很低
  • np.array:专门用来解决同类型数据运算的一个载体,很方便高效完成数据吞吐和计算。但没有很好的GPU支持,也不能支持自动求导
  • tf.Tensor:和np.array地位相似。为了方便使用NumPy的开发者能够更便利的转到TensorFlow,一些API命名也很相似。功能上更偏重于神经网络计算。TensorFlow中,标量、向量、矩阵、多维数组都被叫做tensor。

2.TensorFlow2.0中的数据类型

  • int:tf.constant(1,dtype=tf.int32)
  • float:tf.constant(1.,dtype=tf.float32)
  • double:tf.constant(1.,dtype=tf.double) = tf.constant(1.,dtype=tf.float64),double是float64的别名
  • bool:tf.constant([True,False])
  • string:tf.constant('hello world')

3.查看数据所在设备-device

with tf.device('cpu'):a = tf.constant(1)with tf.device('gpu'):b = tf.range(4)print(a.device)
print(b.device)

77abfbaa3b84d2c82aafde1bb6003b26.png

如果需要在设备间相互转移,则a.gpu();b.cpu()即可 。

4.查看数据维度

  • a.ndim #返回数据维度 ,注意若用tf.rank(a),则会返回一个标量的tensor
  • a.shape #返回数据shape

这里和numpy是一样的。另外,注意维度和形状的区别,比如shape=(batchsize,h,w,3),它的维度是4,相当于ndim = len(shape)

5.判断是否是tensor

4008ca1b358be9510cab12ce82eefaf8.png
  • tf.is_tensor(a)
  • isinstance(a,tf.Tensor)

6.数据类型查看与转化

  • 用a.dtype属性查看数据类型
  • tf.cast(a,dtype=XX)做类型转化 ,cast是投,投射的意思。
  • a.numpy()可以直接将Tensor转成np.ndarray
a = tf.constant(1)
print(a.dtype)
a = tf.cast(a,dtype=tf.float32)
print(a.dtype)

16d5f834745686a22446c2e8052019ce.png

7.用Variable包装Tensor

Variable包装后的变量就具有了可求导的特性,是专门为nn参数设计的属性。

a = tf.range(5)
b = tf.Variable(a)
print(b.name)
print(isinstance(b,tf.Tensor))
print(isinstance(b,tf.Variable))
print(tf.is_tensor(b))

051a83d7d9a2dc8868912652af88bae7.png

我原来看过一个比方,说Tensor就是赤裸裸的钱,但Variable是支付宝,它不仅装着你的钱,还记录你的钱的流通和去向等信息,可以管理你的钱。

8.创建Tensor

和NumPy及其相似,可参考

傅分析:Python の NumPy​zhuanlan.zhihu.com
f1ec25831aeb0f4bc58d3d4c1fb3b6c2.png
  • tf.convert_to_tensor(python_list or numpy_array )
  • tf.zeros(shape) / tf.ones(shape) 同numpy
  • tf.fill(shape,value) 千万注意在numpy里叫full
  • tf.random.normal(shape[,mean,stddev]) 正态
  • tf.random.uniform(shape[,minval,maxval]) 均匀
  • tf.random.shuffle(a) 随机打乱
import numpy as np
a = tf.convert_to_tensor([1,1])
print(a)
b = tf.convert_to_tensor(np.ones((2,)))
print(b)
c = tf.ones((2,))
print(c)
d = tf.fill((2,),1)
print(d)

abc792248f27514dca25b26e0889a894.png

另外,和numpy的random.shuffle()一样,这里也是对axis=0做随机打乱

08cc7c08c207a0712dbddf585d36dcf0.png

9.索引与切片

索引方式与NumPy完全相同,不赘述。

切片:

  • [start:end:step] / [::step]
  • [::-1]是倒序切片的技巧
  • ...是任意长的:序列,可以有效规避[::,::,::,0]这种冗长的表达,替换为[...,0]
  • tf.gather可以指定索引的轴,并指定顺序
a = tf.random.normal((4,5,5,3))
b = a[...,0:2]
print(b.shape)  # (4, 5, 5, 2)
c = tf.gather(a,axis=3,indices=[0,1])
print(c.shape)  # (4, 5, 5, 2)

10.维度变换

view的概念:

  • [b,28,28] 原始
  • [b,28*28] √
  • [b,2,14*28] √
  • [b,28,28,1] √

一堆数据存在那,怎么理解数据的shape就是view,但是不能改变数据的存储位置。比如[n,h,w,3]的数据,每个像素点的rgb像素都连续存储,你通过view,想view到[n,3,h,w],即想通过view来让三通道分离,那是万万不可能的,你可以reshape它为[n,3,h,w]但不能达到你要的分离通道的效果,因为数据的存储位置是不变的。若你要改变数据的存储位置,那就不是维度变换的概念了,维度变换就是变化视角,变化view。

a = tf.random.normal((4,5,5,3))
b = tf.reshape(a,(4,-1,3)) # -1 会自动计算
print(b.shape) # (4,25,3)

注意,numpy中可以a.reshape(shape),但Tensor没有这个属性,只能tf.reshape()

11.维度转置

刚才说的那个改变数据存储位置的三通道分离的操作,要通过转置实现。

a = tf.random.normal((4,5,5,3))
b = tf.transpose(a,perm=[0,3,1,2])
print(b.shape) # (4,3,5,5)

转置会改变数据存储真实的位置关系,会比较慢。

12.维度增减

  • 扩张维度用tf.expend_dims(a,axis),注意是dims不是dim ,另外axis只能是single value,即不能一次扩展多维。
  • a:[classes,students,courses]->[4,35,8]可以描述成4个班级,每个班35个学生,每个学生有8门课。增加学校的维度:[1,4,35,8]
# expand dim
a = tf.random.normal((4,35,8))
b = tf.expand_dims(a,axis=0)
print(b.shape)
c = tf.expand_dims(a,axis=-1) # 等同于axis=3
print(c.shape)

99077e7d65520621f51bea022a2bb361.png
  • 压缩维度用tf.squeeze(a,axis),如果不声明axis,那么将压缩所有数值为1的维度。
a = tf.zeros((1,2,1,3))
b = tf.squeeze(a,axis=2)
print(b.shape)
c = tf.squeeze(a)
print(c.shape)

46143b2bd70e22d0eab9909d8538f937.png

13.broadcasting(广播)

  • Broadcasting:本质是张量维度扩张的一个手段,指对某个维度上重复n次但没有真正的复制一个数据。
  • (4,32,32,3) + (3,)可以对shape为(3,)的Tensor进行广播,(3,)->(1,1,1,3)->(4,32,32,3)。
  • 这样比再定义一个同等shape的Tensor大大节省了内存。
  • 系统会自动判断是否可以进行广播。

14.数学运算

  • +,-,*,/
  • **,pow,square
  • //,%
  • exp,log(注意tf.exp(),tf.math.log())
  • @,matmul (矩阵乘法)

TensorFlow2.0高阶操作

1.张量合并

  • tf.concat((a,b,...),axis)用于多个张量的拼接
  • 待拼接的轴对应的维度数值可以不等,但其他维度形状需一致
  • 不会产生新的维度,只会在原来维度的数值上有所改变
a = tf.ones((2,3))
b = tf.zeros((1,3))
c= tf.concat((a,b),axis=0)
print(c)

715b19745354852a51aaf1b9c4b7b747.png
  • tf.stack((a,b,...),axis)用于多个张量的堆叠
  • 带堆叠张量的所有维度数值必须相等
  • 根据指定的axis,产生新的一个维度
a = tf.ones((2,3))
b = tf.zeros((2,3))
c= tf.stack((a,b),axis=0)
print(c)

0bfaf00d7e2e11d8a95a640a9a72698b.png
a = tf.ones((2,3))
b = tf.zeros((2,3))
c= tf.stack((a,b),axis=-1)
print(c)

a450d526712e34af17ee2b598f51c187.png

2.张量分割

  • tf.unstack(a,axis)是stack的逆操作
  • 在指定的axis上,把原张量拆开
  • 原张量在axis上值为多少,就需要有多少个新变量去承接
abc = tf.ones((3,3))
a,b,c = tf.unstack(abc,axis=0)
print(a)
print(b)
print(c)

01e3c9996e1e3c887056a879bb0d6b9b.png
  • tf.split(a,axis,num_or_size_splits) 是unstack基础上更灵活的分法
  • unstack会把指定axis上全部拆开,但split可以指定拆分的个数或方式
a = tf.ones((4,3))
a1,a2 = tf.split(a,axis=0,num_or_size_splits=2)
print(a1.shape,a2.shape) # (2,3) (2,3)
a1,a2,a3 = tf.split(a,axis=0,num_or_size_splits=[1,2,1])
print(a1.shape,a2.shape,a3.shape) # (1,3) (2,3) (1,3)

3.数据统计

  • tf.reduce_min() tf.reduce_max() tf.reduce_mean()若不指定axis,则完成整个张量的求值,指定axis,则返回每个axis上的求解值。
  • tf.argmax() tf.argmin()分别返回最大最小值所在位置,默认的axis=0,和上面reduce_xxx不一样。
  • tf.equal()返回两个张量的比较结果,每个位置上都会有一个True or False。
  • tf.unique()会去除一维张量中重复的元素 ,第一个返回值是去重后的张量,第二个返回值是对应索引。
a = tf.ones((2,2))
b = tf.ones((2,2))
c = tf.equal(a,b)
print(f'c:{c}') # shape is (2,2)
c = tf.reshape(c,(-1,)) # 必须reshape成(4,)
unique,idx = tf.unique(c) # tf.unique只接受一维张量
print(f'unique:{unique}')
print(f'idx:{idx}')

ab9778d5818f07ddad9ece99dc7f5f60.png

equal和unique配合使用,可以判断两个多维张量是否全等。

4.张量排序

  • tf.sort() tf.argsort()分别完成对某个维度的排序和获取排序后的索引位置。
a = tf.random.shuffle(tf.range(5))
print(f'a:{a}')
a_sort = tf.sort(a,direction="DESCENDING") # 降序排列
print(f'a_sort:{a_sort}')
a_argsort = tf.argsort(a,direction="DESCENDING")
print(f'a_argsort:{a_argsort}')

ea2067bb95e509f0754cde9c9c648850.png
  • tf.math.top_k()可查看最大的k个元素的值或索引
a = tf.random.uniform((3,3),maxval=10,dtype=tf.int32)
print(f'a:n{a}')
res = tf.math.top_k(a,2)
print(f'values:n{res.values}')
print(f'indices:n{res.indices}')

aa2c714654feda0eb4ab7aee9fc965df.png

5.张量填充

tf.pad()

对一批图像a = (n,h,w,c),只有h和w需要padding,tf.pad(a,[[0,0],[2,2],[2,2],[0,0]]) 即可填充两行两列0项到图像。

a = tf.random.normal((8,32,32,3))
b = tf.pad(a,[[0,0],[2,2],[2,2],[0,0]])
print(b.shape) # (8,36,36,3)

6.张量复制

tf.tile()

指定张量沿着各轴复制多少次,比如a.shape=(2,2),要求a沿0轴复制2次,1轴复制3次,则:

a = tf.ones((2,2))
b = tf.tile(a,(2,3)) # 元组里的每个数值对应该轴复制次数
print(b)

fcf0f75eee76fd1463fba92c8c22f609.png

7.随机种子

tf.random.set_seed()

相关文章:

dev c++ 调试时候发生软件崩溃解决办法

dev c 调试时候发生软件崩溃解决办法 安装好dev cpp,准备调试的时候发现软件崩溃,这种情况很好解决。只要在工具菜单中点开编译选项,找到代码生成/优化一栏,将链接器的“产生调试信息”选项改为yes,即可

运行hadoop fs -ls 命令显示本地目录问题

2019独角兽企业重金招聘Python工程师标准>>> 运行hadoop fs -ls 命令显示本地目录问题 问题原因:是因为在hadoop配置文件中没有指定HDFS的默认路径 解决办法:有两个办法 1、使用HDFS全路径访问 hadoop fs -ls hdfs://192.168.1.1:9000/ 2…

李宏毅机器学习笔记(二)-------Why we need learn Machine Learning?

视频: 李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibilihttps://www.bilibili.com/video/av10590361/?p2 真是一个逗波: AI训练师: 为AI选择合适的model和损失函数。然后达到最好的功能

mixamo网站FBX模型带骨骼绑定动作库

mixamo网站FBX模型带骨骼绑定动作库,unity游戏各职业人物动画,兼容3dmax maya c4d iclone blender等主流3D软件 mixamo游戏3D模型带骨骼绑定FBX动作库 大小解压后:17.2G 素材获取:mixamo网站FBX模型带骨骼绑定动作库-云桥网

java modbus通讯协议_物联通讯协议一(Modbus)

1、Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。2、Modbus是一种串…

hibernate3

hibernate3 &#xff08;整合到spring中的core核心配置中的hibernate3&#xff09; <!-- 基于hibernate的Session工厂 --><bean id"sessionFactory"class"org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><!…

伦理困境:人工智能浪潮与“AI威胁论”之争

首先&#xff0c;何为伦理&#xff1f; 2018年1月份的《科学与社会》报刊中有如下阐述&#xff1a; 伦理一词&#xff0c;英文为ethics&#xff0c;一词源自于希腊文的“ethos”&#xff0c;其意义与拉丁文“mores”差不多&#xff0c;表示风俗、习惯的意思。西方的伦理学发展流…

在 ASP.NET 网页中不经过回发而实现客户端回调

一、使用回调函数的好处 在 ASP.NET 网页的默认模型中&#xff0c;用户会与页交互&#xff0c;单击按钮或执行导致回发的一些其他操作。此时将重新创建页及其控件&#xff0c;并在服务器上运行页代码&#xff0c;且新版本的页被呈现到浏览器。但是&#xff0c;在有些情况下&…

李宏毅机器学习笔记(三)——Regression: output a scalar amp;amp; Gradient Descent

视频来源&#xff1a; 李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av10590361/?p3机器学习的目的就是找到最优函数&#xff0c;而回归的目的就是我们要找的函数的输出是一个数值。例如下面的例子&#xff0c;不管是输入怎样的…

完整的虚幻引擎超级课程:从初学者到专家

通过这个循序渐进的课程&#xff0c;学习如何像专业人士一样开发游戏和设计&#xff01; 你会学到什么 如何使用虚幻引擎及其元素 电子游戏力学原理 平衡计分卡几何原理 蓝图脚本的原则 如何设计、开发和编写你的关卡来复制你最喜欢的游戏 流派:电子学习| MP4 |视频:h264&…

atitit.userService 用户系统设计 v5 q330

atitit.userService 用户系统设计 v5 q330 1. 新特性1 2. Admin login1 3. 用户注册登录2 3.1. <!-- 会员注册使用 --> 商家注册2 3.2. <!-- 会员登录使用 -->3 3.3. <!-- 会员退出登录 -->3 3.4. <!-- 进入会员首页 -->3 3.5. <!-- 进入会员信…

python打包为exe文件_Pyinstaller(python打包为exe文件)

需求分析&#xff1a; python脚本如果在没有安装python的机器上不能运行&#xff0c;所以将脚本打包成exe文件&#xff0c;降低脚本对环境的依赖性&#xff0c;同时运行更加迅速。 当然打包的脚本似乎不是在所有的win平台下都能使用&#xff0c;win7有一部分不能使用&#xff0…

从风投看中国IT行业的发展

创业相关电视剧中经常会出现一个词“风投”&#xff0c;例如主角创业艰辛&#xff0c;得到了风投的帮助&#xff0c;从而走向了人生巅峰。而“风投”并不是一家企业&#xff0c;它是由无数风险投资公司一同组成的行业&#xff0c;今天就带大家了解一下风投与中国IT行业的紧密联…

c++ 字母排序

char a[123] {Z, s, p, l, j, r, q, v, n, m, C, F, D, B, A, 2, 0, Z, };for (int i 0; i < strlen(a); i){//字母排序for (int j i 1; j < strlen(a); j){if (a[j] < a[i]){char pTem a[j];a[j] a[i];a[i] pTem;}}}printf("%s\n", a); 版权声明&a…

李宏毅笔记机器学习(四)——Regression——Demo

视频来源&#xff1a; 李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av10590361/?p4 重点&#xff1a; &#xff08;1&#xff09;调节lr&#xff08;learning rate步长&#xff09;&#xff0c;lr参数的调节。迭代次数为1000次…

Blender 3.0机器人硬面建模材质渲染全流程学习课程

学习在Blender中建模硬表面机器人角色 你会学到什么 Blender 3.0建模工具 Blender 3.0硬面人物造型 机器人角色的UV展开 如何在Blender中渲染 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;…

python抓包工具_「docker实战篇」python的docker爬虫技术-fiddler抓包软件详细配置(七)...

挑选常用的功能给各位老铁介绍下。 fiddler第一次进入fiddlerfiddler会请求fiddler的官网&#xff0c;检查更新操作布局分布 工具栏File -capture traffic开启爬虫File -new Viewer新建立一个窗口File - save保存all session&#xff0c;request方式&#xff0c;reponse的方式z…

loadrunner支持https协议的操作方法-经验总结

问题&#xff1a;用户portal支持https协议&#xff0c;用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下&#xff1a; login() { lr_think_time(10); web_url("verifycode.jsp", "URLhttps://192.168.211.246:56661/portal/common/jsp/ver…

初试linux编译(ubuntu+vim)+玩转智能蛇

一.初试linux编译&#xff08;ubuntuvim&#xff09; 步骤&#xff1a; ①下载vmware15ubuntu桌面版映像 ②安装ubuntu ③下载vimgcc 在ubuntu终端输入&#xff1a; sudo apt-get install vim-gtk sudo apt-get install gcc④安装完毕后进行编译测试 1&#xff09;新建hellow…

shell学习之路:流程控制(if)

1.单分支if条件语句 1 if [ 条件判断式 ];then 2 程序 3 fi 4 或者 5 if [ 条件判断式 ] 6 then 7 程序 8 fi 注意事项: 1.if语句使用fi结尾&#xff0c;和一般语言使用大括号结尾不同 2.[ 条件判断式 ]就是使用test命令判断&#xff0c;所以中括号和条件判断式…

李宏毅机器学习笔记(五)-----Where does the error come from

视频来源&#xff1a; 李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av10590361/?p5 function set model error来源&#xff1a; &#xff08;1&#xff09;baise &#xff08;2&#xff09;variance问题一&#xff1a; 怎么…

Blender三维建筑场景动画制作学习教程

一起在Blender中创建一个三维低多边形场景动画 你会学到什么 这门课程是为那些喜欢在工作流程中成长的艺术家设计的 初学者 想学会让自己的资产活起来的艺术家。 希望扩展其技能集的游戏开发人员。 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#x…

springcloud 组件_SpringCloud组件mica 2.0.5发布,添加对sentinel、undertow指标收集

一、mica&#xff08;云母&#xff09;mica 由如梦技术内部的 lutool&#xff08;撸秃&#xff09; 演变而来。lutool 诞生于 2017 年&#xff0c;受 jhipster 启发逐步形成一个微服务的核心集。因 lutool 名称与功能不太符合&#xff0c;故在2019年开源时将其改名为 mica&…

access order by 判断是否除数为0

order by IIF(dz>0,yj/dz,0) desc转载于:https://www.cnblogs.com/slyzly/p/5379482.html

vm无网络解决方法

编辑-虚拟网络编辑器-还原默认

十五天精通WCF——第八天 对“绑定”的最后一点理解

转眼已经中断10几天没有写博客了&#xff0c;也不是工作太忙&#xff0c;正好碰到了端午节&#xff0c;然后最近看天津台的爱情保卫战入迷了。。。太好看了&#xff0c;一直都是回味无穷。。。而且 涂磊老师话说的真是tmd的经典&#xff0c;然后就这样耽搁了&#xff0c;好了&a…

2018年目标

2018年又一个新的开始2018年的学习目标&#xff1a; &#xff08;1&#xff09;每天学习算法和Python。尝试用Python写出不同的算法 &#xff08;2&#xff09;每天完成一篇CSDN专栏大数据相关 &#xff08;3&#xff09;每天进步一点点的打卡完成 &#xff08;4&#xff09;集…

GameMaker Studio从头开始学习设计和开发3款游戏

从头开始学习设计和开发3款游戏(无需经验) 你会学到什么 如何塑造令人敬畏的角色 如何使用GameMakerStudio 2 视频游戏编程 基本二维动画 如何查找和修复bug 如何给你的游戏编故事 从哪里获得游戏资产(免费) 如何添加声音效果 如何发展你的游戏理念 游戏设计力学 如何制作有趣…

商淘多b2b2c商城系统怎么在个人电脑上安装_社交电商系统开发是否有价值?

​电商平台已经呈现出平稳发展之势&#xff0c;再加上近年来星期的社交&#xff0c;让社交电商平台蓬勃发展&#xff0c;不仅是小平台&#xff0c;京东、唯品会、小米等纷纷有了自己的社交电商平台&#xff0c;说明了社交电商是发展的大趋势&#xff0c;开发社交电商系统也是创…

AngularJS中的按需加载ocLazyLoad

欢迎大家讨论与指导 : &#xff09; 初学者&#xff0c;有不足的地方希望各位指出 一、前言 ocLoayLoad是AngularJS的模块按需加载器。一般在小型项目里&#xff0c;首次加载页面就下载好所有的资源没有什么大问题。但是当我们的网站渐渐庞大起来&#xff0c;这样子的加载策略让…