月度归档:2019年08月

jFileServer examples

用户使用 (Token 授权)
上传: POST: /file/upload
bucket={xxx}
token={xxx}
path={xxx} // 可选项,不输入则自动生成路径

访问: GET: /file/get?path={xxx}&token={xxx}&download=0&downname={xxx}
download: 为可选项,设为2时以内联文档打开(一般用于预览),设为1时以资源下载方式处理,不设置或为0时则是以浏览器默认方式处理
downname: 为可选项,download = 1 时,文件下载的名称,不设置则以默认路径名
fsatoken: 可选项,会话授权访问标识,从cookie获取

===============================================

控制使用 (Basic Auth 授权)

POST: /control/delete
path={xxx}
POST: /control/upload
bucket={xxx}
path={xxx} // 可选项,不输入则自动生成路径
GET: /control/getaccesstoken?path={xxx},{xxx},{xxx},{xxx}&fsatoken={xxx}&ttl={xxx}
GET: /control/getuploadtoken?bucket={xxx},{xxx},{xxx},{xxx}
ttl: 可选项,授权超时时间,默认由服务配置定义
fsatoken: 可选项,会话授权标识, fsatoken存储于客户cookie, 同一fsatoken的token授权允许多次访问,随会话失效而失效

================================================

路径构成:
物理存储路径 + 桶名 + 存储路径(必需以 /为开始)
/file/ + mybucket + /2017/00/11.jpg
/file/ + mybucket + /af/ce/head.jpg

存储路径:

/file/mybucket/2017/00/11.jpg
/file/mybucket/af/ce/head.jpg

访问地址:
私桶下载
http://file.example.com/a/{bucket}{path}?token={xxx}&download=1
私桶访问
http://file.example.com/a/{bucket}{path}?token={xxx}
公桶下载
http://file.example.com/a/{bucket}{path}?download=1
公桶访问
http://file.example.com/a/{bucket}{path}

================================================

授权
默认情况下,均为token授权,通过配置桶授权可允许设置为开放访问,级别到 桶
默认公开桶为 p (public的简写)

.

为什么redis集群的最大槽数是16384个?

在redis节点发送心跳包时需要把所有的槽放到这个心跳包里,以便让节点知道当前集群信息,16384=16k,在发送心跳包时使用char进行bitmap压缩后是2k(2 * 8 (8 bit) * 1024(1k) = 2K),也就是说使用2k的空间创建了16k的槽数。

虽然使用CRC16算法最多可以分配65535(2^16-1)个槽位,65535=65k,压缩后就是8k(8 * 8 (8 bit) * 1024(1k) = 8K),也就是说需要需要8k的心跳包,作者认为这样做不太值得;并且一般情况下一个redis集群不会有超过1000个master节点,所以16k的槽位是个比较合适的选择。

.

C# DateTime 日期格式化

在C#中DateTime是一个包含日期、时间的类型,此类型通过ToString()转换为字符串时,可根据传入给Tostring()的参数转换为多种字符串格式。

目录

1. 分类

2. 制式类型

3. 自定义格式类型 

1. 分类

DateTime调用ToString()传入的参数可分为制式和自定义两种:

1) 制式:系统自带的,转入特定的单个字符就可转换为系统已设定好的格式。

2) 自定义:自由组合日期代码(y、M、d、h、m、s、f)来展示丰富的日期格式。

2. 制式类型

说明:转入特定的单个字符就可转换为系统已设定好的格式。

2.1 格式来源

在Windows系统中的区域和语言(位置:控制面板 → 区域和语言)选项中可设置日期和时间的格式。

可设置的分类有:短日期、长日期、短时间、长时间等。

调用ToString()进行转换时,许多转换方式都是通过上面的4个分类进行组合。

2.2 符号对照表

2.2.1 环境

.net版本:4.0

系统版本:Win7

格式信息

2.2.2 对照表

符号 语法 示例(2016-05-09 13:09:55:2350) 格式说明
y DateTime.Now.ToString() 2016/5/9 13:09:55 短日期 长时间
d DateTime.Now.ToString("d") 2016/5/9 短日期
D DateTime.Now.ToString("D") 2016年5月9日 长日期
f DateTime.Now.ToString("f") 2016年5月9日 13:09 长日期 短时间
F DateTime.Now.ToString("F") 2016年5月9日 13:09:55 长日期 长时间
g DateTime.Now.ToString("g") 2016/5/9 13:09 短日期 短时间
G DateTime.Now.ToString("G")  2016/5/9 13:09:55 短日期 长时间
t DateTime.Now.ToString("t") 13:09 短时间
T DateTime.Now.ToString("T") 13:09:55 长时间
u DateTime.Now.ToString("u") 2016-05-09 13:09:55Z  
U DateTime.Now.ToString("U") 2016年5月9日 5:09:55 本初子午线的长日期和长时间
m DateTime.Now.ToString("m") 5月9日  
M DateTime.Now.ToString("M") 5月9日  
r DateTime.Now.ToString("r") Mon, 09 May 2016 13:09:55 GMT  
R DateTime.Now.ToString("R") Mon, 09 May 2016 13:09:55 GMT  
y DateTime.Now.ToString("y") 2016年5月  
Y DateTime.Now.ToString("Y") 2016年5月  
o DateTime.Now.ToString("o") 2016-05-09T13:09:55.2350000  
O DateTime.Now.ToString("O") 2016-05-09T13:09:55.2350000         
s DateTime.Now.ToString("s") 2016-05-09T13:09:55  

2.3 示例图

2.4 win2003版本 

在Win2003默认中的无字符、d、g、G格式中会用'-'符号替代'/'符号(短日期格式为:yyyy-m-d)。

3. 自定义格式类型

开发人员可通过英文字符(y、M、d、h、m、s、f) 分别代替(年、月、日、时、分、秒、毫秒)来自由组合日期时间格式。

3.1 符号对照表

.net版本:4.0

系统版本:Win7

符号 说明
语法 示例(2016-05-09 13:09:55:2350)
yy年份后两位DateTime.Now.ToString("yy")DateTime.Now.ToString("yy"); // => 16
yyyy4位年份DateTime.Now.ToString("yyyy")DateTime.Now.ToString("yyyy"); // => 2016
MM两位月份;单数月份前面用0填充DateTime.Now.ToString("MM")DateTime.Now.ToString("MM"); // => 05
dd日数DateTime.Now.ToString("dd")DateTime.Now.ToString("dd"); // => 09
ddd周几DateTime.Now.ToString("ddd")DateTime.Now.ToString("ddd"); // => 周一
dddd星期几DateTime.Now.ToString("dddd")DateTime.Now.ToString("dddd"); // => 星期一
hh12小时制的小时数DateTime.Now.ToString("hh") DateTime.Now.ToString("hh"); // => 01
HH24小时制的小时数DateTime.Now.ToString("HH")DateTime.Now.ToString("HH"); // => 13
mm分钟数DateTime.Now.ToString("mm")DateTime.Now.ToString("mm"); // => 09
ss秒数DateTime.Now.ToString("ss")DateTime.Now.ToString("ss"); // => 55
ff毫秒数前2位DateTime.Now.ToString("ff")DateTime.Now.ToString("ff"); // => 23
fff毫秒数前3位DateTime.Now.ToString("fff")DateTime.Now.ToString("fff"); // => 235
ffff毫秒数前4位DateTime.Now.ToString("ffff")DateTime.Now.ToString("ffff"); // => 2350
分隔符
可使用分隔符来分隔年月日时分秒。 包含的值可为:-、/、:等非关键字符 DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); // => 2016-05-09 13:09:55:2350 DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff"); // => 2016/05/09 13:09:55:2350 DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff dddd"); // => 2016/05/09 13:09:55:2350 星期一

3.2 示例图

.

.

windows 定时清理指定目录文件bat

eg:

删除E:\original目录下(包括子目录)所有以.png为后缀的、最后修改时间为7天前的文件

指令:

 forfiles /p E:\original /s /m *.png -d -7 /c "cmd /c del /q /f @path"

解释:

/p - 指定的路径
/s - 包括子目录
/m - 查找的文件名,支持通配符*。
/d - 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前

/c - 运行的命令行 表示为每个文件执行的命令。命令字符串应该
用双引号括起来。

                    默认命令是 "cmd /c echo @file"。下列变量
                    可以用在命令字符串中:
                    @file    - 返回文件名。
                    @fname   - 返回不带扩展名的文件名。
                    @ext     - 只返回文件的扩展。
                    @path    - 返回文件的完整路径。
                    @relpath - 返回文件的相对路径。
                    @isdir   - 如果文件类型是目录,返回 "TRUE";
                               如果是文件,返回 "FALSE"。
                    @fsize   - 以字节为单位返回文件大小。
                    @fdate   - 返回文件上一次修改的日期。
                    @ftime   - 返回文件上一次修改的时间。

版权声明:本文为CSDN博主「pokefade」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_19983129/article/details/73127547

mysql中的utf8mb4、utf8mb4_unicode_ci、utf8mb4_general_ci

1.utf8与utf8mb4(utf8 most bytes 4)

  • MySQL 5.5.3之后增加了utfmb4字符编码
  • 支持BMP(Basic Multilingual Plane,基本多文种平面)和补充字符
  • 最多使用四个字节存储字符

utf8mb4是utf8的超集并完全兼容utf8,能够用四个字节存储更多的字符。

标准的UTF-8字符集编码是可以使用1-4个字节去编码21位字符,这几乎包含了世界上所有能看见的语言。
MySQL里面实现的utf8最长使用3个字符,包含了大多数字符但并不是所有。例如emoji和一些不常用的汉字,如“墅”,这些需要四个字节才能编码的就不支持。

2.字符集、连接字符集、排序字符集

utf8mb4对应的排序字符集有utf8mb4_unicode_ci、utf8mb4_general_ci.

utf8mb4_unicode_ci和utf8mb4_general_ci的对比:

  • 准确性:
    • utf8mb4_unicode_ci是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序
    • utf8mb4_general_ci没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。
    • 但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。
  • 性能
    • utf8mb4_general_ci在比较和排序的时候更快
    • utf8mb4_unicode_ci在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。
    • 但是在绝大多数情况下发,不会发生此类复杂比较。相比选择哪一种collation,使用者更应该关心字符集与排序规则在db里需要统一。

作者:AmyZYX
出处:http://www.cnblogs.com/amyzhu/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

================================================================

UTF-8是使用1~4个字节,一种变长的编码格式,字符编码。mb4即 most bytes 4,使用4个字节来表示完整的UTF-8。

mysql的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。

总结:MySQL的utf8是utfmb3,只有三个字节,节省空间但不能表达全部的UTF-8。所以推荐使用utf8mb4。

utf8mb4_bin:将字符串每个字符用二进制数据编译存储,区分大小写,而且可以存二进制的内容。

utf8mb4_general_ci:ci即case insensitive,不区分大小写。没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。

utf8mb4_unicode_ci:是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。

utf8mb4_general_ci是一个遗留的 校对规则,不支持扩展,它仅能够在字符之间进行逐个比较。utf8_general_ci校对规则进行的比较速度很快,但是与使用 utf8mb4_unicode_ci的校对规则相比,比较正确性较差。

总结:general_ci 更快,unicode_ci 更准确。但相比现在的CPU来说,它远远不足以成为考虑性能的因素,索引涉及、SQL设计才是。使用者更应该关心字符集与排序规则在db里需要统一。

版权声明:本文为CSDN博主「yzh_1346983557」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yzh_1346983557/article/details/89643071

===================================================================

.