zoukankan      html  css  js  c++  java
  • 技巧收集-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 ObjectId
    import 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)
    
  • 相关阅读:
    IDEA使用 磨刀霍霍向代码
    如何设计一个高可用系统?要考虑哪些地方?
    spring boot 集成apollo 快速指南
    实战_Spring_Cloud
    Spring Boot 入门(十二):报表导出,对比poi、jxl和esayExcel的效率
    「newbee-mall新蜂商城开源啦」1000 Star Get !仓库Star数破千!记录一下
    一个C#开发者重温Java的心路历程
    BeanUtils 如何拷贝 List?
    JVM之JVM的体系结构
    python类中的私有方法
  • 原文地址:https://www.cnblogs.com/xieqiankun/p/Tweet-M1709.html
Copyright © 2011-2022 走看看