近来,serverless这个词出现次数愈加频繁,各云厂商也纷纷推出相关的产品和工具,最近也尝试在公
司项目上使用severless去解决一些问题,这里讲讲我的体验.
阿里云FC
阿里云的severless产品,从对已有框架的支持上说,FC的体验非常好,go,java,js,python的各种框架基本都支持,也通过社区/官方提供了完善的demo和模板(serverless devs,工具, demo,模板)
近来,serverless这个词出现次数愈加频繁,各云厂商也纷纷推出相关的产品和工具,最近也尝试在公
司项目上使用severless去解决一些问题,这里讲讲我的体验.
阿里云的severless产品,从对已有框架的支持上说,FC的体验非常好,go,java,js,python的各种框架基本都支持,也通过社区/官方提供了完善的demo和模板(serverless devs,工具, demo,模板)
一次线上报表导出的功能异常无法使用,看监控日志,服务器内存有段时间占用高
除内存异常,其他组件都没发现问题,怀疑OOM导致服务挂了,查询服务运行时间,发现确实是重启了.
1 | # 查看程序pid |
分析异常api的功能主要是excel的读写(用的excelize这个库),便用prof测试下内存占用,这里在测试用例读取一个几万行的excel文件(.xlsx),使用go的工具pprof记录内存占用
从.xlsx文件与.csv文件读取对比看,excelize与xlsx读取xlsx文件,比使用encoding/csv包读取csv文件更占内存,相差在2至3倍,前者平均需要4,5GB内存,后者仅占1.7GB左右.
综上,没有特殊需求,简单的表格文件保存可以优先选择csv
以下测试使用同样内容的文件,8w行,csv:30.1MB,xlsx:18.7MB
multipart 用于在http中高效上传文件
“multipart” or “form-encoded data” is a MIME type which contains multiple files.
‘application/x-www-form-urlencoded’(在multipart之前用于文件上传的方式)需要在文件上传前encoding,multipart不需要
stream each part separately(多个文件,对每个文件支持单独流式传输)
1 | POST /cgi-bin/qtest HTTP/1.1 |
在分析一个sql执行计划
1 | explain |
在返回值的extra中看到一个陌生的字眼”Backward index scan”,下面探索下这是个啥
1 | Extra: Using index condition; Backward index scan |
Table 8.1 EXPLAIN Output Columns
Column | JSON Name | Meaning |
---|---|---|
id | select_id | The SELECT identifier |
select_type | None | The SELECT type |
table | table_name | The table for the output row |
partitions | partitions | The matching partitions |
type | access_type | The join type |
possible_keys | possible_keys | The possible indexes to choose |
key | key | The index actually chosen |
key_len | key_length | The length of the chosen key |
ref | ref | The columns compared to the index |
rows | rows | Estimate of rows to be examined |
filtered | filtered | Percentage of rows filtered by table condition |
Extra | None | Additional information |
常见的线性变换平移、缩放、旋转、投影
通常用4x4矩阵表示3D空间中的变换,如平移、旋转、缩放等。
对于一个3D空间中的点A(x, y, z),我们可以使用一个4x1列向量表示它,如下所示:
1 | x |
其中最后一个元素为1,这是为了让矩阵乘法能够正确地进行。
要对这个点进行平移变换,我们可以创建一个如下所示的4x4矩阵:
1 | 1 0 0 tx |
其中(tx, ty, tz)表示平移向量。然后,我们可以将该点与矩阵相乘来进行变换,如下所示:
1 | x' = x + tx |
缩放矩阵
1 | sx 0 0 0 |
缩放后点A为A’
1 | x' = x*sx |
当配置文件中有中文时,springboot服务读取nacos配置启动报错:
1 | ERROR 9740 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : parse data from Nacos error,dataId:xxxxxxxxxxxxxx.yaml,data:server: |
Maven维护了一个中央仓库repo1.maven.org,
所有第三方库将jar包以及相关信息上传至中央仓库,Maven就可以从中央仓库把所需依赖下载到本地.
被下载过的jar包会被Maven自动缓存在本地目录(用户主目录的.m2目录,~/.m2),
除了第一次编译时因为下载需要时间会比较慢,后续过程有本地缓存则不会重复下载相同的jar包
在用户主目录下进入.m2目录,创建一个settings.xml配置文件
1 | <settings> |