1meson wrapdb下载库的时候失败
2https://mesonbuild.com/Wrapdb-projects.html
3找到你要下载的库,例如sdl2.wrap放到subprojects中。
4然后下载还是失败
5下载sdl2.wrap中的tar包https://libsdl.org/release/SDL2-2.0.20.tar.gz
6然后编译还失败发现这个包下载不了patch_url = https://wrapdb.mesonbuild.com/v2/sdl2_2.0.20-2/get_patch
7更换wrap版本,第三步 手动下载这两个包放到subprojects\packagecache中编译成功
查看:https://blog.csdn.net/cwfreebird/article/details/91355730
方案一: sum case when select brand, max(case when area_name='东北' then total_price_actual else 0 end) db_price, max(case when area_name='华北' then total_price_actual else 0 end) hb_price, max(case when area_name='华东' then total_price_actual else 0 end) hd_price, max(case when area_name='华南' then total_price_actual else 0 end) hn_price, max(case when area_name='西南' then total_price_actual else 0 end) xn_price, max(case when area_name='西北' then total_price_actual else 0 end) xb_price, max(case when area_name='东北' then qty else 0 end) db_qty, max(case when area_name='华北' then qty else 0 end) hb_qty, max(case when area_name='华东' then qty else 0 end) hd_qty, max(case when area_name='华南' then qty else 0 end) hn_qty, max(case when area_name='西南' then qty else 0 end) xn_qty, max(case when area_name='西北' then qty else 0 end) xb_qty from ( select brand, area_name, sum(total_price_actual) total_price_actual, sum(qty) qty from hive_temp_vipvop.
1.gateway简介 API网关功能 协议转换,路由转发
流量聚合,对流量进行监控,日志输出
作为整个系统的前端工程,对流量进行控制,有限流的作用
作为系统的前端边界,外部流量只能通过网关才能访问系统
可以在网关层做权限的判断--安全认证
可以在网关层做缓存
负载均衡
Gateway的处理流程 客户端向 Spring Cloud Gateway 发出请求。然后在 Gateway Handler Mapping 中找到与请求相匹配的路由,将其发送到 Gateway Web Handler。Handler 再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。
重要概念 Route(路由):这是网关的基本构建块。它由一个 ID,一个目标 URl,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。
内置了 10 种 Router,使得我们可以直接配置一下就可以随心所欲的根据 Header、或者 Path、或者 Host、或者 Query 来做路由。
Predicate(断言):输入类型是一个 ServerWebExchange。我们可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。
过滤器( filter),Gateway中的Fiter 分为两种类型的Filter,分别是Gateway Filter和Global Filter。过滤器Filter 将会对请求和响应进行修改处理。可以使用它拦截和修改请求,并且对上游的响应进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例。
在go-micro中异步消息的收发是通过Broker这个组件来完成的,底层实现有RabbitMQ、Kafka、Redis等等很多种方式,这篇文章主要介绍go-micro使用RabbitMQ收发数据的方法和原理。
Broker的核心功能 Broker的核心功能是Publish和Subscribe,也就是发布和订阅。它们的定义是:
Publish(topic string, m *Message, opts ...PublishOption) error Subscribe(topic string, h Handler, opts ...SubscribeOption) (Subscriber, error) 发布 发布第一个参数是topic(主题),用于标识某类消息。
发布的数据是通过Message承载的,其包括消息头和消息体,定义如下:
type Message struct { Header map[string]string Body []byte } 消息头是map,也就是一组KV(键值对)。
消息体是字节数组,在发送和接收时需要开发者进行编码和解码的处理。
订阅 订阅的第一个参数也是topic(主题),用于过滤出要接收的消息。
订阅的数据是通过Handler处理的,Handler是一个函数,其定义如下:
type Handler func(Event) error 其中的参数Event是一个接口,需要具体的Broker来实现,其定义如下:
type Event interface { Topic() string Message() *Message Ack() error Error() error } Topic() 用于获取当前消息的topic,也是发布者发送时的topic。 Message() 用于获取消息体,也是发布者发送时的Message,其中包括Header和Body。 Ack() 用于通知Broker消息已经收到了,Broker可以删除消息了,可用来保证消息至少被消费一次。 Error() 用于获取Broker处理消息过成功的错误。 开发者订阅数据时,需要实现Handler这个函数,接收Event的实例,提取数据进行处理,根据不同的Broker,可能还需要调用Ack(),处理出现错误时,返回error。
go-micro集成RabbitMQ实战 大概了解了Broker的定义之后,再来看下如何使用go-micro收发RabbitMQ消息。
想用一张图来展示一个冲刺中每个人分配的故事点数,而且能够按照前端、后端、测试等维度聚合,所以采用了旭日图
效果如下
echarts中关于旭日图的例子:https://echarts.apache.org/examples/zh/editor.html?c=sunburst-simple
下面来介绍下具体实现过程
首先来看下旭日图的数据结构
类似这种:父节点Grandpa,它下面有2个子节点Uncle Leo和Father,Uncle Leo下有3个子节点Cousin Jack、Cousin Mary、Cousin Ben
所以后端要构造出这种格式的数据
后端数据处理 可以从jira一个故事卡的原始数据中提取出 (前端工程师 and 前端故事点)、(后端工程师 and 后端故事点)、(测试负责人 and 测试故事点)
由于每个公司的jira版本不同,上述字段在自己当前jira中对应的字段属性不尽相同,需要自己从原始数据中找到对应字段名
下面是部分重点代码
def get_sprint(self, project, sprint): 获取每个冲刺的数据,例如冲刺标题、每个人的故事点数 :param project: :param sprint: :return: try: if sprint == or sprint is None: # 不传sprint会查询所有冲刺 jql = project in ({}) AND issuetype = Story.format(project) else: jql = project in ({}) AND issuetype = Story AND Sprint in ({}).format(project, sprint) print(****************** 打印jql ******************) print(正在执行的jql=, jql) fields = summary, priority, status, creator, created, customfield_12309, customfield_12307, \ customfield_12310, customfield_12308, customfield_12400,customfield_11303, customfield_10006 issues = self.
GPU技术与动态
图形处理器(英语:graphics processing unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。
GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。GPU的生产商主要有NVIDIA和ATI。
一个光栅显示系统离不开图形处理器,图形处理器是图形系统结构的重要元件,是连接计算机和显示终端的纽带。
应该说有显示系统就有图形处理器(俗称显卡),但是早期的显卡只包含简单的存储器和帧缓冲区,它们实际上只起了一个图形的存储和传递作用,一切操作都必须由CPU来控制。这对于文本和一些简单的图形来说是足够的,但是当要处理复杂场景特别是一些真实感的三维场景,单靠这种系统是无法完成任务的。所以后来发展的显卡都有图形处理的功能。它不单单存储图形,而且能完成大部分图形功能,这样就大大减轻了CPU的负担,提高了显示能力和显示速度。随着电子技术的发展,显卡技术含量越来越高,功能越来越强,许多专业的图形卡已经具有很强的3D处理能力,而且这些3D图形卡也渐渐地走向个人计算机。一些专业显卡具有的晶体管数甚至比同时代的CPU的晶体管数还多。比如2000年加拿大ATI公司推出的 RADEON显卡芯片含有3千万颗晶体管,达到每秒15亿个象素填写率。
本文参考文献链接
https://mp.weixin.qq.com/s/ANOEtc6-0vNuJfhtO9S6Og
https://mp.weixin.qq.com/s/tLl4v_d09CMKXzpukST_oA
https://mp.weixin.qq.com/s/lmdeB70oIT_reZGN4zJUng
https://mp.weixin.qq.com/s/8_Cw6lhFC4nvQTfL_Jd81A
https://baike.baidu.com/item/%E5%9B%BE%E5%BD%A2%E5%A4%84%E7%90%86%E5%99%A8/8694767?fromtitle=gpu&fromid=105524&fr=aladdin
英伟达的这款GPU太强了!
今年 3 月 21 日 - 24 日举办的 NVIDIA GTC 2022 大会可谓是亮点十足。NVIDIA 不仅一口气更新了 60 多个 SDK 应用程序,继续加大在 Omniverse、机器人平台、自动驾驶和量子计算等领域中的布局 ,还重磅发布了基于全新 Hopper 架构的 H100 GPU!
Amusi 听说 H100 性能炸裂,应用在 AI 领域上会有数倍的性能提升。看看这一波刷屏的 Hopper 架构和首款产品 H100 GPU 究竟有多强!据了解,NVIDIA H100 将于 2022 年第三季度起开始供货,也期待能尽快上手实测一波~
图1 NVIDIA H100 GPU
首款 Hopper 架构 GPU:H100 NVIDIA 每代 GPU 的架构命名都是有出处的,今年 Hopper 架构是以计算机科学家先驱 Grace Murray Hopper 的姓氏命名(Hopper 为夫姓)。她是世界最早一批的程序员之一,也是最早的女性程序员之一,而且创造了现代第一个编译器 A-0 系统,以及第一个高级商用计算机程序语言 “COBOL” ,还被誉为 “COBOL 之母” ,据说是世界上第一个发现【bug】的人,debug 这个词也因此诞生。
问题场景 今天在装 hbase ,刚配置环境变量source 后 发现常用的命令都无法使用了
[hui@hadoop201 ~]$ ll -bash: ls: command not found [hui@hadoop201 ~]$ ls -bash: ls: command not found 问题原因 这种情况一般是在配置环境变量时手误,导致系统无法正确读取系统命令
解决方案 第一步:在命令行中输入 export PATH=/usr/bin:/usr/sbin:/bin:/sbin 这样可以保证命令行命令暂时可以使用。命令执行完之后先不要关闭终端
第二步:此时可以正常使用系统命令了,然后就直接更正错误的环境变量即可。
总结 大家在修改系统环境变量的时候一定要仔细,确认无误后在刷新环境变量。
1.网上大部分教程基本都是基于python对talib函数的使用 , 因为pandas在python编程是比java更直观,但是也免不了有人用Java实现.
SMA 是 Single Moving Average缩写, 也就是移动平均线 , 当然 , ta-lib也有几百个其它函数, 诸如macd , 基本上都是传入 数组 .很相似 .
import com.tictactec.ta.lib.Core; import com.tictactec.ta.lib.MInteger; import com.tictactec.ta.lib.RetCode; public class SimpleMovingAverageExample { /** * The total number of periods to generate data for. */ public static final int TOTAL_PERIODS = 100; //1 .数组长度100 /** * The number of periods to average together. */ public static final int PERIODS_AVERAGE = 30; //2. MA移动周期窗口,这里30代表30日均线 public static void main(String[] args) { double[] closePrice = new double[TOTAL_PERIODS]; double[] out = new double[TOTAL_PERIODS]; MInteger begin = new MInteger(); MInteger length = new MInteger(); for (int i = 0; i < closePrice.
Labels标签 当Kubernetes对系统的任何API对象如Pod和节点进行“分组”时,会对其添加Label(key=value形式的“键-值对”)用以精准地选择对应的API对象。而Selector(标签选择器)则是针对匹配对象的查询方法。注:键-值对就是key-value pair。
例如,常用的标签tier可用于区分容器的属性,如frontend、backend;或者一个release_track用于区分容器的环境,如canary、production等。
1.增加标签 //查看所有名称空间的pod的标签信息// [root@k8s-master01 ~]# kubectl get pod -–show-labels 同上[root@k8s-master01 ~]# kubectl get po -–show-labels //增加标签为app=busybox的Pod// [root@k8s-master01 ~]# kubectl label pod busybox app=busybox //查看所有名称空间的pod的标签信息// [root@k8s-master01 ~]# kubectl get pod –-show-labels 2.过滤单个或多个标签 01.#过滤标签(结果是单条) //显示拥有标签为app=busybox的Pod// [root@k8s-master01 ~]# kubectl get pod –A –l app=busybox 02.#目前只看到一个标签不明显,接下来再创建一个标签,试试过滤多个标签 // 创建busybox容器,所有人可读// ☆提示:一个集群的三个初始命名空间:default、kube-system 和 kube-public [root@k8s-master01 ~]# kubectl run busybox –-image=busybox:1.28 –n kube-public pod/basybox labeled //查询命名空间中的资源,使用-n 指定命名空间,此处为kube-public [root@k8s-master01 ~]# kubectl get pod -n kube-public //增加标签为app=busybox的Pod// [root@k8s-master01 ~]# kubectl label pod busybox app=busybox –n kube-public pod/basybox labeled //显示拥有标签为app=busybox的Pod// [root@k8s-master01 ~]# kubectl get pod –A –l app=busybox 03.
<script src=./js/TcPlayer-2.4.5.js charset=utf-8></script> <section v-if=videoShow style=position: fixed;top: 0;bottom: 0;margin: auto 0;z-index: 999999;width: 100%;height: 100%;background: rgba(0,0,0,.6)> <img src=images/close.png @click=videoShow = false style=position: absolute;right: 20px;top: 20px;z-index: 100;width: 40px;> <div id=id_TCP_video style=width:100%; height:100%;></div> </section> new TcPlayer('id_TCP_video', { mp4: http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4, live: false, autoplay : true, pausePosterEnabled : false, //poster : {style:cover, src:/assets/res/images/videostop.jpg} //default:居中并且以图片的实际分辨率进行显示;stretch:拉伸铺满播放器区域,图片可能会变形;cover:优先横向等比拉伸铺满播放器区域,图片某些部分可能无法显示在区域内 poster:{style:cover, src: ''}, width : '100%',//视频的显示宽度,请尽量使用视频分辨率宽度 height : '100%', //视频的显示高度,请尽量使用视频分辨率高度 wording: { 2032: Failed to request video, please check network, 2048: Failed to request m3u8 file, it may be a network error or cross-domain problem, 13: The live broadcast has ended, please come back later.