python列表中文乱码的解决方法
一、现象
当列表中存在中文时,输出列表将会产生乱码:
>>> stus = ["小明", "小李", "小花"]
>>> print stus
["xd0xa1xc3xf7", "xd0xa1xc0xee", "xd0xa1xbbxa8"]
当列表中存在中文时,输出列表将会产生乱码:
>>> stus = ["小明", "小李", "小花"]
>>> print stus
["xd0xa1xc3xf7", "xd0xa1xc0xee", "xd0xa1xbbxa8"]
可以设置start
和end
在指定下标范围内查找,默认为None
表示从字符串的开头到结尾。
s = "HelloWorld"
print s.find("Hello") //0
print s.find("Hello", 1) //-1
print s.find("hello") //-1
python中的字符串和int类型互转可以说是所有语言里面最简单的了,直接用str
和int
方法即可:
nNum = 9999999
print str(nNum)
strNum = "99999999"
print int(strNum)
很简单就能实现转换,而且也无需考虑数据大小越界的问题:
bigNum = "999999999999999999999999999999999999999999999999999999999999"
print int(bigNum) + 1 # 1000000000000000000000000000000000000000000000000000000000000
为了安全起见,一般公司的服务器都会设置只允许内网主机远程登录,先登录到一台公网主机,然后再从这个主机通过ssh命令登录到内网。然后这样的话,安全性提高了,但是对开发者来说,登录就麻烦了,因为每次登录都要多个步骤,而一般情况下跳板机可能还不止一个。。。这样登录起来有点蛋疼!
其实最开始一直都是手动一个一个登录,直到有一天从老大那里看到了这么牛逼的操作。。。
前面已经完成了一个完美的多并发CS模型,但美中不足的是没有解决粘包问题。
在网络传输中,数据都是通过数据流来传输的,也就是以比特来传输。传输的过程中我们可能会遇到各种各样的问题导致数据传输异常,最常见的就是网络发送时延。网络时延会导致服务端此时收到的数据的时间有偏差,然后就导致数据接收数据的时间不一致。
上一篇实现了一个server和client通信,完成了小写转大写的功能,但是是一个单任务式的响应:客户端发送连接接收响应,程序结束;服务端则接收数据响应数据也结束!就实际需要而言,并没有很大的用处,所以现在我们就给客户端和服务端添加上并发功能。
逻辑其实很简单,就是利用golang的gorutine,一旦来新的连接,就开启一个gorutine去处理,然后响应,直到客户端关闭连接。
上一篇介绍了基本的函数和结构类型,这里就可以开始写服务端和客户端通信小程序了。
如果服务端使用Listen
来监听,那么可以不用ResolveTCPAddr
函数。
现在我们就来写一个server和client,实现功能:client发送数据到server,server将数据转成大写后返回。
工作的原因接触到socket,要使用socket实现一个长连接。之前只在C/C++上用过socket,而且在学校的时候也只是简单的做聊天室小程序,并没有涉及到长连接。突然用到工作项目上,心里还是有点悬的,毕竟网上的资料也不是很多。这里就一步一步记录下学习的过程、遇到的问题以及最重要的——解决问题的方法。
golang中的socket需要用到net包,里面封装好了很多常用的函数方法以及元素类型。而且无需像C一样要经历socket,bind,listen,accept等等流程,只需要简单的几步流程就能完成,非常方便。
"语言设置
set langmenu=zh_CN.UTF-8
"设置行号
set nu
"设置语法高亮
syntax enable
syntax on
"设置配色方案
colorscheme desert
"高亮显示匹配的括号
set showmatch
"设置缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set cindent
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
" c++ public缩进配置
set cinoptions=g0
"设置自动补全
filetype plugin indent on "打开文件类型检测
set completeopt=longest,menu "关掉智能补全时的预览窗口
"设置默认shell
set shell=bash
"设置VIM记录的历史数
set history=400
"设置当文件被外部改变的时侯自动读入文件
if exists("&autoread")
set autoread
endif
"设置ambiwidth
set ambiwidth=double
" 删除键无法使用
set backspace=indent,eol,start
"设置文件类型
set ffs=unix,dos,mac
"设置增量搜索模式
set incsearch
"设置静音模式
set noerrorbells
set novisualbell
set t_vb=
"不要备份文件
set nobackup
au BufReadPost * if line("''\"") > 0|if line("''\"") <= line("$")|exe("norm ''\"")|else|exe "norm $"|endif|endif