最近项目里需要往MySQL里插入emoj,把表的编码改成了utfbmb4之后发现,在mysql shell里面是可以插入emoj的,但是利用pymysql则无法插入emoj,报如下错误
1 | pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x85\\xF0\\x9F...' for column 'content' at row 1") |
现总结自己的解决方案如下
积极勤奋,主动勇敢
最近项目里需要往MySQL里插入emoj,把表的编码改成了utfbmb4之后发现,在mysql shell里面是可以插入emoj的,但是利用pymysql则无法插入emoj,报如下错误
1 | pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x85\\xF0\\x9F...' for column 'content' at row 1") |
现总结自己的解决方案如下
对应中文即形参,临时变量,在函数定义中用于接受外部传入变量。
1 | def foo(name, age): # name, age 即形参 |
对应中文即实参,在调用函数时传入的值
1 | foo('Tom', 11) # 'Tom', 11即实参 |
对应中文即属性,可以是一个类的变量(实例变量或者类变量)或者函数(成员函数)。 类的每一个实例都可以访问这些属性
1 | class Color: |
更多基础知识可参考MySQL存储过程,很棒很详细的入门文章。
SQL 语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定工程的SQL语句集,经编译后存储在数据库中,用户通过制定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
个人感觉存储过程增强了兼容性。实现相对复杂的功能(比如返回一组数据,然后遍历结果集),之前可能要用python操作mysql来实现。但是利用存储过程可以写成一组代码,使用者可以直接复制粘贴到MySQL shell或者客户端来使用。
则有
1 | N = (W − F + 2P )/S+1 |
在这里记录一下最近学习到的Python正则表达是的知识点
正则表达式是什么?
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
通俗来讲,可以把正则表达式理解为类似于一门计算机语言,不过它是用来描述符合某些规则的字符串的。
re
,只要import re
就好最简单的正则表达式就是我们想要匹配的字符串,比如
1 | >>> import re |
花了两天的时间终于用nginx+gunicorn部署好自己的microblog项目,中间遇到了大大小小的坑,在这里做一下记录。
首先要知道什么是IP地址的前缀(prefix),或者说网络部分。
在形如
a.b.c.d/x
的地址中,x个最高比特(最左边的比特)构成了IP地址的前缀。
/x
是子网掩码的一种表示方法。子网掩码就是为了表示该IP地址所在的子网。
a.b.c.d/x
这样的表示方法从属于当下因特网的地址分配策略,无类别域间路由选择(Classless Interdomain Routing, CIDR)。
在CIDR被采用之前,IP地址的网络部分被限制为长度为8, 16或24比特,这是一种成为分类编址的编址方案。具有8, 16或24比特子网地址的子网被称为A, B, C类网络。
A, B, C类网络这样的表示方式的主要问题在于,C类(/24)子网仅能容纳2^8 - 2 = 254台主机(2^8 = 256,其中两个地址预留用于特殊用途),这对于许多组织来说太小了。然而一个B类(/16)子网可支持多达65534台主机,又太大了。在分类编址方法下,比如说一个有2000台主机的组织通常被分给一个B类(/16)地址。这就导致B类地址空间的迅速损耗以及所分配的地址空间的利用率低。