macOS 系统 .DS_Store 文件详解

.DS_Store 文件

.DS_Store 是 Finder 用来存储这个文件夹的显示属性的:比如文件图标的摆放位置。

显示/隐藏 Mac 隐藏文件

  • 显示defaults write com.apple.finder AppleShowAllFiles -bool true
  • 隐藏defaults write com.apple.finder AppleShowAllFiles -bool false

删除 .DS_Store 文件

  • find /path/to/files -name ".DS_Store" -delete
  • find /path/to/files –type f –name ".DS_Store" -print –delete
  • find /path/to/files –type f –name ".DS_Store" -print0 | xargs –0 rm -rdf

史上最全的 Python 3 类型转换指南

int

支持转换为 int 类型的,仅有 floatstrbytes,其他类型均不支持。

float -> int

会去掉小数点及后面的数值,仅保留整数部分。

1
int(-12.94)     # -12

str -> int

如果字符串中有数字(0-9)和正负号(+/-)以外的字符,就会报错。

1
2
3
int('1209')     # 1209
int('-12')      # -12
int('+1008')    # 1008

bytes -> int

如果 bytes 中有数字(0-9)和正负号(+/-)以外的字符,就会报错。

1
2
3
int(b'1209')     # 1209
int(b'-12')      # -12
int(b'+1008')    # 1008

Python 3 进阶 —— print 打印和输出

在 Python 中,print 可以打印所有变量数据,包括自定义类型。

在 2.x 版本中,print 是个语句,但在 3.x 中却是个内置函数,并且拥有更丰富的功能。

参数选项

可以用 help(print) 来查看 print 函数的参数解释。

1
2
3
4
5
6
7
8
9
print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

Python 判断文件/目录是否存在

使用 os 模块

  • 判断文件是否存在

    1
    
    os.path.isfile(path)
    
  • 判断目录是否存在

    1
    
    os.path.isdir(path)
    
  • 判断路径是否存在

    1
    2
    3
    4
    5
    
    # 使用 path 模块
    os.path.exists(path)
    
    # 使用 access() 方法
    os.access(path, os.F_OK)
    

Python 3 进阶 —— 使用 PyMySQL 操作 MySQL

PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务、存储过程、批量执行等。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

安装

1
pip install PyMySQL

创建数据库连接

1
2
3
4
5
6
7
8
import pymysql

connection = pymysql.connect(host='localhost',
                             port=3306,
                             user='root',
                             password='root',
                             db='demo',
                             charset='utf8')

Python 3 入门,看这篇就够了

简介

Python 是一种高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 由 Guido van Rossum 于 1989 年底在荷兰国家数学和计算机科学研究所发明,第一个公开发行版发行于 1991 年。

特点

  • 易于学习:Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

  • 易于阅读:Python 代码定义的更清晰。

  • 易于维护:Python 的成功在于它的源代码是相当容易维护的。

  • 一个广泛的标准库:Python 的最大的优势之一是丰富的库,跨平台的,在 UNIX,Windows 和 macOS 兼容很好。

  • 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

  • 可移植:基于其开放源代码的特性,Python 已经被移植(也就是使其工作)到许多平台。

  • 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C 或 C++ 完成那部分程序,然后从你的 Python 程序中调用。

  • 数据库:Python 提供所有主要的商业数据库的接口。

  • GUI 编程:Python 支持 GUI 可以创建和移植到许多系统调用。

  • 可嵌入:你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得"脚本化"的能力。

  • 面向对象:Python 是强面向对象的语言,程序中任何内容统称为对象,包括数字、字符串、函数等。

Go 标准库 —— sync.Mutex 互斥锁

Mutex 是一个互斥锁,可以创建为其他结构体的字段;零值为解锁状态。Mutex 类型的锁和线程无关,可以由不同的线程加锁和解锁。

方法

func (*Mutex) Lock

1
func (m *Mutex) Lock()

Lock 方法锁住 m,如果 m 已经加锁,则阻塞直到 m 解锁。

func (*Mutex) Unlock

1
func (m *Mutex) Unlock()

Unlock 方法解锁 m,如果 m 未加锁会导致运行时错误。

Go 标准库 —— time 常用类型和方法

time 包提供了时间的显示和测量用的函数,日历的计算采用的是公历

本文仅整理演示常用的类型和方法,完整的可参考标准库文档

type Location

Location 代表一个(关联到某个时间点的)地点,以及该地点所在的时区

func LoadLocation

1
func LoadLocation(name string) (*Location, error)

LoadLocation 返回使用给定的名字创建的 Location

Go 采用 goroutine 和 channel 实现工作池

假设有一组任务需要异步处理且量很大,那我们需要同时开启多个 worker 以保证任务的处理速度而不会堵塞任务。其他语言,可能会需要开启多进程来完成,多进程的控制、IO 消耗等会是个需要注意的问题,而这些 Go 都能帮我们很轻易的解决。

大致的实现要点和流程:

  • 创建2个信道,messages 用于传送任务消息,result 用于接收消息处理结果
  • 创建3个 Worker 协程,用于接收和处理来自 messages 信道的任务消息,并将处理结果通过信道 result 返回
  • 通过信道 messages 发布10条任务
  • 通过信道 result 接收任务处理结果