为什么json 不能使用 int64类型

json 简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。 JSON支持两种数据结构存在: 对象(object):一个对象包含一系列非排序的名称/值对(pair),一个对象以{开始,并以}结束。每个名称/值对之间使用 : 分割。 数组 (array):一个数组是一个值(value)的集合,一个数组以 [ 开始,并以]结束。数组成员之间使用 , 分割。 具体的格式如下: [value1, value2, value3] 名称/值(pair):名称和值之间使用 : 隔开,格式如下: {name:value} 名称必须是字符串类型; 值(value)必须是可以是字符串(string),数值(number),对象(object),有序列表(array),或者 false, null, true 的其中一种。 JSON的格式描述可以参考RFC 4627。 为什么JSON不支持 int64 类型? 通过上面的介绍有两个关键点: JSON 是基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集 JSON 支持number 类型 Javascript的数字存储使用了IEEE 754中规定的双精度浮点数数据类型,而这一数据类型能够安全存储 -(2^53-1) 到 2^53-1 之间的数值(包含边界值)。JSON 是Javascript 的一个子集,所以它也遵守这个规则。 ...

2019-06-03 · 1 min · 191 words

SQLAlchemy in 空列表问题分析

SQLAlchemy in 空列表问题 问题场景 有model Account,SQLAlchemy 查询语句如下: query = Account.query.filter(Account.id.in_(account_ids)).order_by(Account.date_created.desc()) 这里 account_ids 如果为空,执行查询会有如下警告: /usr/local/lib/python2.7/site-packages/sqlalchemy/sql/default_comparator.py:35: SAWarning: The IN-predicate on "account.id" was invoked with an empty sequence. This results in a contradiction, which nonetheless can be expensive to evaluate. Consider alternative strategies for improved performance. return o[0](self, self.expr, op, *(other + o[1:]), **kwargs) 这里的意思是使用一个空的列表会花费较长的时间,需要优化以提高性能。 为什么会有这个提示呢?一个空列表为什么会影响性能呢? 首先打印 query 可得到如下 sql 语句: SELECT * // 字段使用 “*” 代替 FROM account WHERE account.id != account.id ORDER BY account.date_created DESC 会发现生成的语句中过滤条件是 WHERE account.id != account.id,使用 PostgreSQL Explain ANALYZE 命令, ...

2018-10-04 · 3 min · 542 words

newrelic python agent 源码分析-1

Newrelic 是APM(Application Performance Management)(应用性能管理/监控)解决方案提供商。项目中,通常用它来追踪应用的性能。最近看了一下 newrelic-python-agent 源码,这是查看源码过程中的一些记录。 目录结构 newrelic 目录结构如下: newrelic ├── admin # 常用命令 ├── api # 探针 ├── bootstrap ├── common ├── core ├── extras │ └── framework_django │ └── templatetags ├── hooks # 数据库 web 各个库的一些探针 │ ├── framework_tornado │ ├── framework_tornado_r3 │ └── framework_tornado_r4 ├── network ├── packages │ ├── requests │ │ └── packages │ │ ├── chardet │ │ └── urllib3 │ │ ├── packages │ │ │ └── ssl_match_hostname │ │ └── util │ └── wrapt └── samplers 命令 使用 newrelic-admin help 可以列出所有命令: ...

2018-05-16 · 3 min · 509 words

使用腾讯云配置小程序Python开发环境

最近做小程序服务器的配置,这一篇是服务器配置的记录,方便以后安装配置。 购买服务器 之所以选腾讯云的原因很简单,那就是便宜,选用成都区,最低配置每月只需29¥。 在 腾讯云 官网注册登录就可以直接购买服务器了。 服务器系统我选择的是 ubuntu。 服务器配置 启动服务后使用新用户(此步骤不是必须)。 新建用户 首先确认使用的是 root 用户登录如果不是使用以下命令切换 sudo su 使用 adduser 命令创建用户 adduser username # username替换为你自己的用户名 接下来的步骤会让你输入密码和个人信息,自己设置就好。 使用usermod 命令将新建的用户添加到 sudo 组。 usermod -aG sudo username 关闭ssh密码登录使用密钥登录 安装openssh 因为是新系统,先执行一下 apt-get update sudo apt-get update sudo apt-get install openssh-server 启动ssh服务 可以通过sudo su命令来临时切换到root权限(不是所有的账号都可以切换到root权限,只有在/etc/sudoers文件中符合规则的用户能切换root身份) sudo su /etc/init.d/ssh start 使用密钥登录 服务器端生成密钥对: cd /home/gs # 打开新建的用户目录 mkdir .ssh cd .ssh ssh-keygen -b 2048 -t rsa ssh-keygen的基本用法: -b后面是指定加密后的字符串长度 -t后面是指定加密算法,常用的加密算法有rsa,dsa等 默认生成的文件如下: id_rsa.pub # 公钥文件 id_rsa # 私钥文件 新建 authorized_keys 文件 将本地机器的 id_rsa.pub 文件内容复制到 authorized_keys 文件 ...

2017-10-21 · 3 min · 471 words