技巧收集-M1709
2017.09
在macOS中直接复制文件路径,在Finder中选中文件,按下快捷键:Command
+ Option
+ C
以KB,MB,GB方式显示文件大小
ls -lh
删除超大文本文件的特定行数
sed -e '10000,50000d' xxx.txt > new_xxx.txt //删除xxx.txt的第10000行到50000行的所有内容,并将结果保存到new_xxx.txt
切分超大文本文件
split -b 2G -d -a 2 deletelines.txt da //把超大文件切分为多个文件,每个文件2GB,前缀为da,后缀为2位数字
修改Linux当前用户密码
passwd
使用Python打开一个未知编码的文件:
with open("your_file", 'rb') as fp:
file_data = fp.read()
result = chardet.detect(file_data)
file_content = file_data.decode(encoding=result['encoding'])
2017.08
在SSH + Tmux中,如果想复制,按住Alt
或者Option
键再选择就可以复制了。
关闭requests的SSL警告
import requests
requests.packages.urllib3.disable_warnings()
在VIM中,Crtl
+ V
Ctrl
+ A
可以输出特殊符合^A
,把A改为可以得到^M
2017.07
在Python中,pymongo的find方法返回的是一个生成器,只有在迭代的时候才会执行里面的具体代码去读MongoDB。但是在Golang的Mgo包中,如果想让Find返回一个迭代器而不是直接把所有结果全部返回,就需要手动指定:
type xInfo struct {
ID int `bson:"mt_poi_id"`
Count int `bson:"count"`}
resultIter = m.handler.Find(nil).Select(bson.M{"_id": 0, "mt_poi_id": 1, "count": 1}).Iter()
var x xInfo
for resultIter.Next(&xInfo) {
fmt.Println(xInfo.Id)
fmt.Println(xInfo.Count)
}
2017.06
在Golang中,使用MySQL的事务:
// paraArray为一个channel,里面是更新所需要的参数
tx, _ := db.Begin()
for _, para := range paraArray{
tx.Exec("update.....", para)
}
tx.Commit()
由于更新MySQL会锁表,因此使用多个goroutine来更新MySQL,效果可能还不如直接在主线程中更新来的高。
在Golang中,使用goroutine太多反而会导致性能下降。
2017.05
在Python中,可以使用>
或者>=
来判断一个集合是不是另一个集合的子集。只有是子集才会返回True
2017.04
在MongoDB中,通过_id来更新数据:
from bson.objectid import ObjectIdimport pymongo
conn = pymongo.MongoClient().XX.YY
conn.update({'_id': ObjectId('adf84a8fafasf3213'), {'$set': {'name': 'aaa'}}})
在Python 3中,计算两个日期相隔了多少秒:
import datetime
start = '2017-03-21 17:21:30'
end = '2017-03-21 18:10:13'
start_datetime = datetime.datetime.strptime(start, '%Y-%m-%d %H:%M:%S')
end_datetime = datetime.datetime.strptime(end, '%Y-%m-%d %H:%M:%S')
total_seconds = (end_datetime - start_datetime).total_seconds()
Scrapy中,通过覆写items.py中,每个item的__repr__方法,可以减少打印出来的Log信息。
class XXXItem(Item):
name = Field()
age = Field()
def __repr__(self):
return '======data has been stored.======='
在VIM粘贴Python代码的时候,缩进会一不小心爆炸。为了避免这个问题,应该先在normal模式输入
:set paste
回车,再按i,再粘贴。这样Python的缩进就不会乱掉了。
Selenium的Debug级的Log有时候打得太多了,为了去掉Selenium的Debug Log又不影响其他部份的Debug Log,可以使用如下命令完成:
import logging
from selenium.webdriver.remote.remote_connection import LOGGER
LOGGER.setLevel(logging.WARNING)
- WCF后续之旅(6): 通过WCF Extension实现Context信息的传递
- 理性的相亲方法!精品课:《决策树》
- Asp.Net无刷新分页( jquery.pagination.js)
- 为什么网站需要用CDN来加速?
- Jmeter常用获取数据的几种方式
- [Silverlight 4 RC]RichTextBox概览
- WCF后续之旅(4):WCF Extension Point 概览
- Asp.Net无刷新上传并裁剪头像
- 用泛型的IEqualityComparer<T>接口去重复项
- python与office(一)
- Asp.net 后台添加CSS、JS、Meta标签(帮助类)
- 分享一下cookies操作(增、删、改、查)小经验
- [Silverlight 4 RC]WebBrowserBrush概览
- 一个例子理解C#位移
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL复制全解析 Part 8 GTID Auto-Positioning
- 红队之windows用户和组
- MySQL 复制全解析 Part10 基于GTID的MySQL复制的一些限制
- MySQL 复制全解析 Part 11 使用xtrabackup建立MySQL复制
- windows之NTLM认证
- 3A之自动白平衡(AWB)篇
- 欧拉角旋转
- matplotlib中文乱码的两种解决方案
- MySQL MHA部署 Part 3 MHA软件安装
- 自然语言处理的基本要义:向量表示法
- MySQL MHA部署 Part 4 MHA部署前准备
- 【NPM库】- 0x04 - Mock Data
- docker上部署MySQL实例
- Tomcat 高并发之道原理拆解与性能调优
- Redis运维之swap空间