2018年~2019年总结,平凡的一年去如此糟心

随想录网站管理员 发表了文章 • 0 个评论 • 134 次浏览 • 2019-01-13 01:36 • 来自相关话题

###### 时光飞逝,日月如梭,2018年已经过去了,2019年也过去了10多天了,似乎我们只是惊喜于跨年的那一刻,却不曾想起当时自己的宏图伟志,以及誓言。
###### 2018年过得很平凡,但是却十分的难受,爱情充满了猜忌和吵闹,每天做着自己不喜欢的工作,想要逃离,却负债累累,不曾有过经济支持。曾今的决定明显是错误了,然而我似乎还是一错再错下去,深陷泥潭而不能自拔。想好好的总结一下自己的过失,以及未来怎么弥补。
###### 以时间太少为借口,喜欢忙里偷闲,对待工作也不上心,做事情有头没尾,还有一个很重要的问题就是太贪,却能力不足。我记得我以前的座右铭是:当你的才华不能撑起你的梦想时,就应该静下心来学习。而我如此浮躁的处理每一件事情。
###### 2019年是一个好的开端,我开始做自己的事情了,推掉了很多的小单子,由于穷,又没有太多的时间,我学会儿了舍弃,不贪图小利,对于一些费力不讨好的事情,果断的放弃。现在在做澳洲那边的项目,希望这是一个好的开端,同时也喜欢能做起来。其实我很害怕,每个月都在担心下一个月的房贷,担心自己可能要谁在大街上。经济下行,大批的公司都出现了裁员,我甚至害怕我就是那一个,所以我为了讨好他们,加班表现自己,主动关心业务和用户反馈。其实我并不喜欢这样的事,虽然这是一份编程的工作,但是我并不喜欢,而且没有拿到自己想要的报酬。生活不易,我只能选择妥协。

###### 合伙人是一个不错的朋友,跟他一起做事情很愉快,会考虑到我的感受,似乎让我想起了柯指导,他们都是我的贵人,让我接触到了更大的世界,让我不断的思考,学习,努力的提升自己。我想感恩,可是我害怕,因为我一无所有。常言道:穷则独善其身,达者兼济天下。我内心一直是矛盾的,可是眼前的生活却不见起色。 查看全部
###### 时光飞逝,日月如梭,2018年已经过去了,2019年也过去了10多天了,似乎我们只是惊喜于跨年的那一刻,却不曾想起当时自己的宏图伟志,以及誓言。
###### 2018年过得很平凡,但是却十分的难受,爱情充满了猜忌和吵闹,每天做着自己不喜欢的工作,想要逃离,却负债累累,不曾有过经济支持。曾今的决定明显是错误了,然而我似乎还是一错再错下去,深陷泥潭而不能自拔。想好好的总结一下自己的过失,以及未来怎么弥补。
###### 以时间太少为借口,喜欢忙里偷闲,对待工作也不上心,做事情有头没尾,还有一个很重要的问题就是太贪,却能力不足。我记得我以前的座右铭是:当你的才华不能撑起你的梦想时,就应该静下心来学习。而我如此浮躁的处理每一件事情。
###### 2019年是一个好的开端,我开始做自己的事情了,推掉了很多的小单子,由于穷,又没有太多的时间,我学会儿了舍弃,不贪图小利,对于一些费力不讨好的事情,果断的放弃。现在在做澳洲那边的项目,希望这是一个好的开端,同时也喜欢能做起来。其实我很害怕,每个月都在担心下一个月的房贷,担心自己可能要谁在大街上。经济下行,大批的公司都出现了裁员,我甚至害怕我就是那一个,所以我为了讨好他们,加班表现自己,主动关心业务和用户反馈。其实我并不喜欢这样的事,虽然这是一份编程的工作,但是我并不喜欢,而且没有拿到自己想要的报酬。生活不易,我只能选择妥协。

###### 合伙人是一个不错的朋友,跟他一起做事情很愉快,会考虑到我的感受,似乎让我想起了柯指导,他们都是我的贵人,让我接触到了更大的世界,让我不断的思考,学习,努力的提升自己。我想感恩,可是我害怕,因为我一无所有。常言道:穷则独善其身,达者兼济天下。我内心一直是矛盾的,可是眼前的生活却不见起色。

解决async.cc -fPIC -DPIC -o .libs/swoole_async.o

PHP网站管理员 发表了文章 • 0 个评论 • 199 次浏览 • 2019-01-09 17:41 • 来自相关话题

async.cc  -fPIC -DPIC -o .libs/swoole_async.o
In file included from /usr/include/php/20170718/Zend/zend_types.h:27:0,
                 from /usr/include/php/20170718/Zend/zend.h:29,
                 from /usr/include/php/20170718/main/php.h:36,
                 from /mnt/swoole-src/php_swoole.h:25,
                 from /mnt/swoole-src/swoole_async.cc:17:
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_increment_function(zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:446:68: error: ‘__builtin_saddl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
                                                                    ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_decrement_function(zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:500:68: error: ‘__builtin_ssubl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
                                                                    ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_add_function(zval*, zval*, zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:554:80: error: ‘__builtin_saddl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
                                                                                ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_sub_function(zval*, zval*, zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:657:80: error: ‘__builtin_ssubl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
                                                                                ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
Makefile:350: recipe for target 'swoole_async.lo' failed
make: *** [swoole_async.lo] Error 1
 
### 解决方案
 
你的gcc或者g++版本太低升级一下版本即可
 
```bash
apt-get upgrade gcc
apt-get upgrade g++
``` 查看全部
async.cc  -fPIC -DPIC -o .libs/swoole_async.o
In file included from /usr/include/php/20170718/Zend/zend_types.h:27:0,
                 from /usr/include/php/20170718/Zend/zend.h:29,
                 from /usr/include/php/20170718/main/php.h:36,
                 from /mnt/swoole-src/php_swoole.h:25,
                 from /mnt/swoole-src/swoole_async.cc:17:
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_increment_function(zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:446:68: error: ‘__builtin_saddl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
                                                                    ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_decrement_function(zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:500:68: error: ‘__builtin_ssubl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
                                                                    ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_add_function(zval*, zval*, zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:554:80: error: ‘__builtin_saddl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
                                                                                ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/20170718/Zend/zend_operators.h: In function ‘void fast_long_sub_function(zval*, zval*, zval*)’:
/usr/include/php/20170718/Zend/zend_operators.h:657:80: error: ‘__builtin_ssubl_overflow’ was not declared in this scope
  if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
                                                                                ^
/usr/include/php/20170718/Zend/zend_portability.h:312:52: note: in definition of macro ‘UNEXPECTED’
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
Makefile:350: recipe for target 'swoole_async.lo' failed
make: *** [swoole_async.lo] Error 1
 
### 解决方案
 
你的gcc或者g++版本太低升级一下版本即可
 
```bash
apt-get upgrade gcc
apt-get upgrade g++
```

python解决唱吧歌词解密的问题?

Python网站管理员 发表了文章 • 0 个评论 • 168 次浏览 • 2018-11-22 16:14 • 来自相关话题

做唱吧歌词解密的时候选择了语言python,对于字节解码的时候用到了chr函数,但是chr函数参数限制在0 ~ 0xff(255),如果需要chr的值出现负数怎么办呢?我记得php用chr函数的时候支持负数,于是翻阅了一下php的源码,发现php做了一次按位与操作 c &= c,这样一来就不会再出现错误:

```python
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> chr(-165)
Traceback (most recent call last):
File "", line 1, in
ValueError: chr() arg not in range(256)
>>> chr(-165 & 0xff)
'['
>>>
```

python解决唱吧歌词解密的问题?

```python
# -*-- coding:utf-8 -*--
import re
import os


class ChangBaDecrypt(object):
encrypt_key = [-50, -45, 110, 105, 64, 90, 97, 119, 94, 50, 116, 71, 81, 54, -91, -68, ]

def __init__(self):
pass

def decrypt(self, content):
decrypt_content = bytearray()
for i in range(0, len(content)):
var = content[i] ^ self.encrypt_key[i % 16]
decrypt_content.append(var & 0xff)
return decrypt_content.decode('utf-8')

def decrypt_by_file(self, filename):
with open(filename, 'rb') as f:
content = f.read()
f.close()
decrypt = self.decrypt(content)
if re.match(r'\[\d+,\d+\]', decrypt):
return decrypt


changba = ChangBaDecrypt()
decrypt = changba.decrypt_by_file(os.path.join(os.path.curdir, '../tests/data/a89f8523a6724a915c6b2038c928b342.zrce'))
print(decrypt)
``` 查看全部
做唱吧歌词解密的时候选择了语言python,对于字节解码的时候用到了chr函数,但是chr函数参数限制在0 ~ 0xff(255),如果需要chr的值出现负数怎么办呢?我记得php用chr函数的时候支持负数,于是翻阅了一下php的源码,发现php做了一次按位与操作 c &= c,这样一来就不会再出现错误:

```python
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> chr(-165)
Traceback (most recent call last):
File "", line 1, in
ValueError: chr() arg not in range(256)
>>> chr(-165 & 0xff)
'['
>>>
```

python解决唱吧歌词解密的问题?

```python
# -*-- coding:utf-8 -*--
import re
import os


class ChangBaDecrypt(object):
encrypt_key = [-50, -45, 110, 105, 64, 90, 97, 119, 94, 50, 116, 71, 81, 54, -91, -68, ]

def __init__(self):
pass

def decrypt(self, content):
decrypt_content = bytearray()
for i in range(0, len(content)):
var = content[i] ^ self.encrypt_key[i % 16]
decrypt_content.append(var & 0xff)
return decrypt_content.decode('utf-8')

def decrypt_by_file(self, filename):
with open(filename, 'rb') as f:
content = f.read()
f.close()
decrypt = self.decrypt(content)
if re.match(r'\[\d+,\d+\]', decrypt):
return decrypt


changba = ChangBaDecrypt()
decrypt = changba.decrypt_by_file(os.path.join(os.path.curdir, '../tests/data/a89f8523a6724a915c6b2038c928b342.zrce'))
print(decrypt)
```

唱吧歌词解密,php/python/java/golang解密唱吧歌词

PHP网站管理员 发表了文章 • 0 个评论 • 283 次浏览 • 2018-11-21 16:32 • 来自相关话题

如何用php语言解密唱吧歌词?
特定的算法需要要找秘钥,找到了秘钥问题就解决了一半,这个算法类似于凯撒加密,有一串秘钥,轮询秘钥按位取反即可

```php 查看全部

如何用php语言解密唱吧歌词?
特定的算法需要要找秘钥,找到了秘钥问题就解决了一半,这个算法类似于凯撒加密,有一串秘钥,轮询秘钥按位取反即可

```php

$content = file_get_contents('a89f8523a6724a915c6b2038c928b342.zrce');

$decryptCode = [-50, -45, 110, 105, 64, 90, 97, 119, 94, 50, 116, 71, 81, 54, -91, -68, ];
$data = '';
for ($i = 0; $i < strlen($content); $i++) {
$data .= chr(ord($content[$i]) ^ $decryptCode[$i % 16]);
}

print_r($data);
```

```
[refrain:44203-73402]
[ar:]
[ti:]
[total:175177]
[17090,4180]<0,228,0>在<228,228,0>没<456,456,0>风<912,228,0>的<1140,380,0>地<1520,532,0>方<2052,228,0>找<2280,456,0>太<2736,1444,0>阳
[24456,5243]<0,228,0>在<228,228,0>你<456,456,0>冷<912,228,0>的<1140,456,0>地<1596,456,0>方<2052,456,0>做<2508,456,0>暖<2964,2279,0>阳
[31832,1824]<0,228,0>人<228,228,0>事<456,228,0>纷<684,1140,0>纷
[34602,2622]<0,228,0>你<228,570,0>总<798,456,0>太<1254,342,0>天<1596,1026,0>真
[38924,1595]<0,228,0>往<228,228,0>后<456,228,0>的<684,228,0>余<925,670,0>生
```

vim如何进行无格式化粘贴,苦恼:每次在vim内粘贴文本格式都会变乱

Linux网站管理员 发表了文章 • 0 个评论 • 173 次浏览 • 2018-11-21 16:06 • 来自相关话题

### 解决vim内文本粘贴格式变乱的问题?

### 解决方案
输入```:set paste```即可,然后再粘贴进去,就不会出现文本混乱的问题了。

```bash
vim docker-compose.yml

:set paste
```

### 解决vim内文本粘贴格式变乱的问题?

### 解决方案
输入```:set paste```即可,然后再粘贴进去,就不会出现文本混乱的问题了。

```bash
vim docker-compose.yml

:set paste
```

珍爱生命,远离全栈

随想录网站管理员 发表了文章 • 0 个评论 • 151 次浏览 • 2018-11-20 22:01 • 来自相关话题

#### 最近比较苦恼,一直被生活和工作困扰着,一方面生活压力大,除了日常开支还有巨额的房贷,前几个月已经压着我喘不过气来了,现在好多了,但是有个不好的现象是我松懈、怠慢了,拖延症越发严重,而且倍感疲劳,不知道为什么。也许是我想的太多,亦或是假开心。

#### 自己是一个程序员,每天和各种语言打交道。作为计算机相关工作的我,要学习的东西实在是太多了,涵盖面十分广泛,就拿几门比较常用的编程语言来说都是学不尽的,php、golang、nodejs、rust、python等等。

#### 程序员是一个吃青春饭的职业,随着年纪的增长,如果步走向管理的话,思维、逻辑上会落后很多的年轻人,但是技术在不断的更新,我们也不可能凭着经验混个“老师傅”。所以说年轻的时候多学点,往上爬是很重要的。

#### 其实还有一点比较苦恼的是女朋友貌似对我的工作没有那么的支持,多余工作来说,不加班反倒不正常,不在老板面前好好的表现,升职加薪感觉遥遥无期。对于我来说我很想喜欢的编程这份工作,但是公司并不能给我们带来编程的乐趣。也许是工作太乏味了,每天都在做增删改查的工作,自己的想法不能在项目实现,因为你的工作是要交接给下一个人的,比如测试,等于是增加了别人的负担,还有策划出的功能,你的想法就是画蛇添足,没有经过市场的调研,所以我们只能按着策划的想法来实现他们想要的,然而你只是一个码农,被压迫的码农。

#### 能力越大,责任越大。在探索全栈之路上势必困难重重,处处趟坑,毕竟人的精力是有限的。所以劝诫大家,着手自己最拿手的那方面,做精做细,成为一方面的专家,广度虽然是需要的,深度必不可少。 查看全部
#### 最近比较苦恼,一直被生活和工作困扰着,一方面生活压力大,除了日常开支还有巨额的房贷,前几个月已经压着我喘不过气来了,现在好多了,但是有个不好的现象是我松懈、怠慢了,拖延症越发严重,而且倍感疲劳,不知道为什么。也许是我想的太多,亦或是假开心。

#### 自己是一个程序员,每天和各种语言打交道。作为计算机相关工作的我,要学习的东西实在是太多了,涵盖面十分广泛,就拿几门比较常用的编程语言来说都是学不尽的,php、golang、nodejs、rust、python等等。

#### 程序员是一个吃青春饭的职业,随着年纪的增长,如果步走向管理的话,思维、逻辑上会落后很多的年轻人,但是技术在不断的更新,我们也不可能凭着经验混个“老师傅”。所以说年轻的时候多学点,往上爬是很重要的。

#### 其实还有一点比较苦恼的是女朋友貌似对我的工作没有那么的支持,多余工作来说,不加班反倒不正常,不在老板面前好好的表现,升职加薪感觉遥遥无期。对于我来说我很想喜欢的编程这份工作,但是公司并不能给我们带来编程的乐趣。也许是工作太乏味了,每天都在做增删改查的工作,自己的想法不能在项目实现,因为你的工作是要交接给下一个人的,比如测试,等于是增加了别人的负担,还有策划出的功能,你的想法就是画蛇添足,没有经过市场的调研,所以我们只能按着策划的想法来实现他们想要的,然而你只是一个码农,被压迫的码农。

#### 能力越大,责任越大。在探索全栈之路上势必困难重重,处处趟坑,毕竟人的精力是有限的。所以劝诫大家,着手自己最拿手的那方面,做精做细,成为一方面的专家,广度虽然是需要的,深度必不可少。

python解决window的进程powershell.exe占用cpu使用率过高

Python网站管理员 发表了文章 • 0 个评论 • 2925 次浏览 • 2018-11-13 18:38 • 来自相关话题

### 背景

window的进程powershell.exe占用cpu使用率过高,时常导致计算机卡顿,于是写了一个python的脚本监测这个脚本,当cpu使用到达了40%以上,直接终结这个进程。

### 依赖
这里用的库是```psutil```,这是一个跨平台的进程和系统工具,能够方便我们对cpu和内存等监测

```bash
pip install pipenv
pipenv install psutil
```

### 解决方法

脚本为循环任务,间隔为10s

```python
import psutil
import time

while True:
for proc in psutil.process_iter(attrs=['pid', 'name']):
if proc.name() == 'powershell.exe':
cpu_percent = proc.cpu_percent()
print('current cpu percent: %s' % str(cpu_percent))
if cpu_percent > 40:
proc.terminate()
print('powershell.exe has been terminate')

time.sleep(5)
``` 查看全部
### 背景

window的进程powershell.exe占用cpu使用率过高,时常导致计算机卡顿,于是写了一个python的脚本监测这个脚本,当cpu使用到达了40%以上,直接终结这个进程。

### 依赖
这里用的库是```psutil```,这是一个跨平台的进程和系统工具,能够方便我们对cpu和内存等监测

```bash
pip install pipenv
pipenv install psutil
```

### 解决方法

脚本为循环任务,间隔为10s

```python
import psutil
import time

while True:
for proc in psutil.process_iter(attrs=['pid', 'name']):
if proc.name() == 'powershell.exe':
cpu_percent = proc.cpu_percent()
print('current cpu percent: %s' % str(cpu_percent))
if cpu_percent > 40:
proc.terminate()
print('powershell.exe has been terminate')

time.sleep(5)
```

微博被封号了,翻阅这几年的微博,快乐与悲伤只有自己知道

随想录网站管理员 发表了文章 • 0 个评论 • 232 次浏览 • 2018-11-09 23:47 • 来自相关话题

##### 不知道因为什么言论微博被封号了,申述了几天毫无作效,心理不是滋味,用陈老师自己开发的微贝工具把微博给备份了下来,看到了最早发布的那几条微博,回忆起了当时年轻的自己,热血,激情,再看看现在的自己,心理更不是滋味。



##### 上学的时候压力很大,是自己不断的给自己施加压力,痛恨自己无所作为,悲叹自己的人生不应该是这样的,别出一番天地,可是在校园困顿。于是拼命地去学习,看书,3年来看了很多的书,能力也有所长进,毕业后找了一份好的工作,短暂的创业公司学习之旅,破碎了我对社会的憧憬,资本的力量太大了,公司没能熬过寒冬,我也失去了激情。



##### 尽管后面我又找了几分工作,我依旧彷徨、迷茫、依旧痛恨自己为什么能力平平,却野心勃勃。一方面被生活压迫,一方面被自己压迫,甚至喘不过气来。那又怎么样,这是自己选择的路,即使跪着也要走完这段坎坷之路。每天告诫自己要努力奋斗,熬过这段时间,可是怎么挣扎,似乎越陷越深。


##### 也许是心理不健康的原因,我可能和了解自己,或者完全不了解自己。愿生活待我温柔,依旧坚持自己的信念。 查看全部
##### 不知道因为什么言论微博被封号了,申述了几天毫无作效,心理不是滋味,用陈老师自己开发的微贝工具把微博给备份了下来,看到了最早发布的那几条微博,回忆起了当时年轻的自己,热血,激情,再看看现在的自己,心理更不是滋味。



##### 上学的时候压力很大,是自己不断的给自己施加压力,痛恨自己无所作为,悲叹自己的人生不应该是这样的,别出一番天地,可是在校园困顿。于是拼命地去学习,看书,3年来看了很多的书,能力也有所长进,毕业后找了一份好的工作,短暂的创业公司学习之旅,破碎了我对社会的憧憬,资本的力量太大了,公司没能熬过寒冬,我也失去了激情。



##### 尽管后面我又找了几分工作,我依旧彷徨、迷茫、依旧痛恨自己为什么能力平平,却野心勃勃。一方面被生活压迫,一方面被自己压迫,甚至喘不过气来。那又怎么样,这是自己选择的路,即使跪着也要走完这段坎坷之路。每天告诫自己要努力奋斗,熬过这段时间,可是怎么挣扎,似乎越陷越深。


##### 也许是心理不健康的原因,我可能和了解自己,或者完全不了解自己。愿生活待我温柔,依旧坚持自己的信念。

北京的银杏叶黄了,散落一地

随想录网站管理员 发表了文章 • 0 个评论 • 149 次浏览 • 2018-11-09 13:34 • 来自相关话题

##### 正值十一月,北京的银杏叶黄了,散落一地的黄色芭蕉扇,勾起了我对它的思念。

##### 去年6月初离开了我呆了6年的城市,我很不开心,流泪了。我来的原因是我想出人头地,这是一个年轻人奋斗的城市,而我的离去是为了爱情。我抛弃了它,去不后悔,化作思念陪伴左右。 查看全部
##### 正值十一月,北京的银杏叶黄了,散落一地的黄色芭蕉扇,勾起了我对它的思念。

##### 去年6月初离开了我呆了6年的城市,我很不开心,流泪了。我来的原因是我想出人头地,这是一个年轻人奋斗的城市,而我的离去是为了爱情。我抛弃了它,去不后悔,化作思念陪伴左右。

Python基础知识:快速了解字典的增删改查以及自定义不可变字典

Python网站管理员 发表了文章 • 0 个评论 • 276 次浏览 • 2018-11-06 10:08 • 来自相关话题

字典在很多的高级语言中是很常见的,java中的hashmap,php中的键值对的数组,python中的是dict,它是一个可变的容器模型,可以存储任意的数据结构,但是容器中的每个元素都是以键值对的形式存在的,形如key => value,python中是用冒号分隔,每个键值对用逗号分隔,所有的键值对用大括号包围起来。当然字典中还可以包含其他的字典,层级深度可以任意。有点儿像json,如果不了解python中的字典和json之间的转换可以看看这篇文章。

```python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
>>> dict['Name']
'Zara'
>>> dict['notExist']
Traceback (most recent call last):
File "", line 1, in
KeyError: 'notExist'
>>> del dict['Age']
>>> dict
{'Name': 'Zara', 'Class': 'First'}
>>> dict.clear()
>>> dict
{}
>>> if 'Age' in dict:
... print True
... else:
... print False
...
False
```

那么如何遍历一个字典的对象呢?这里有几种方法,第一种是我们直接for循环,拿到key,那么值就是字典的索引key;第二种就是字典有个方法是items,我们可以遍历这个items的返回值。千万要注意字典不是元组,是不会直接返回key,value这样的结果的。

```python
>>> for key, value in dict:
... print('%s => %s' % (key, value))
...
Traceback (most recent call last):
File "", line 1, in
ValueError: too many values to unpack
>>> for key, value in dict.items():
... print('%s => %s' % (key, value))
...
Beth => 9102
Alice => 2341
Cecil => 3258
>>> for key in dict:
... print('%s => %s' % (key, dict[key]))
...
Beth => 9102
Alice => 2341
Cecil => 3258
```

要注意一点的是如果这个key不在字典内,我们直接使用的话会出现异常KeyError,我们需要预先判断这个key是否在字典内,有两种方法,has_key(key)和key in dict来判断这个key是否在字典内,不过第二种方法更容易接受点,因为它更加的接近我们的语言。del这个key的所以会把元素从字典中直接删除,调用clear()方法可以直接把字典清空,然后就剩下一个空的字典{}。

有的时候我们需要一个不可变的字典,只能通过实例化的时候初始化这个字典,不能添加、更新、和删除。这个时候我们需要用到模块collections.MultiMapping了,集成类MultiMapping,改写它的方法,将__setitem__、__delitem__直接抛出异常,这样我们就得到了一个不可变的字典了。 查看全部
字典在很多的高级语言中是很常见的,java中的hashmap,php中的键值对的数组,python中的是dict,它是一个可变的容器模型,可以存储任意的数据结构,但是容器中的每个元素都是以键值对的形式存在的,形如key => value,python中是用冒号分隔,每个键值对用逗号分隔,所有的键值对用大括号包围起来。当然字典中还可以包含其他的字典,层级深度可以任意。有点儿像json,如果不了解python中的字典和json之间的转换可以看看这篇文章。

```python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
>>> dict['Name']
'Zara'
>>> dict['notExist']
Traceback (most recent call last):
File "", line 1, in
KeyError: 'notExist'
>>> del dict['Age']
>>> dict
{'Name': 'Zara', 'Class': 'First'}
>>> dict.clear()
>>> dict
{}
>>> if 'Age' in dict:
... print True
... else:
... print False
...
False
```

那么如何遍历一个字典的对象呢?这里有几种方法,第一种是我们直接for循环,拿到key,那么值就是字典的索引key;第二种就是字典有个方法是items,我们可以遍历这个items的返回值。千万要注意字典不是元组,是不会直接返回key,value这样的结果的。

```python
>>> for key, value in dict:
... print('%s => %s' % (key, value))
...
Traceback (most recent call last):
File "", line 1, in
ValueError: too many values to unpack
>>> for key, value in dict.items():
... print('%s => %s' % (key, value))
...
Beth => 9102
Alice => 2341
Cecil => 3258
>>> for key in dict:
... print('%s => %s' % (key, dict[key]))
...
Beth => 9102
Alice => 2341
Cecil => 3258
```

要注意一点的是如果这个key不在字典内,我们直接使用的话会出现异常KeyError,我们需要预先判断这个key是否在字典内,有两种方法,has_key(key)和key in dict来判断这个key是否在字典内,不过第二种方法更容易接受点,因为它更加的接近我们的语言。del这个key的所以会把元素从字典中直接删除,调用clear()方法可以直接把字典清空,然后就剩下一个空的字典{}。

有的时候我们需要一个不可变的字典,只能通过实例化的时候初始化这个字典,不能添加、更新、和删除。这个时候我们需要用到模块collections.MultiMapping了,集成类MultiMapping,改写它的方法,将__setitem__、__delitem__直接抛出异常,这样我们就得到了一个不可变的字典了。