190623 Python File使用姿势

文件操作,主要借助open函数来实现,定义如下

1
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

对应的参数说明

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型

其中mode采用的参数和c语言的差不多

  • w 写,文件不存在时,创建
  • wb 二进制写
  • r
  • rb 二进制读
  • a 追加写
  • ab 追加写二进制
  • w+ 这个+表示支持读写

190621-Gitalk配置与排坑全程实战

基于gittalk搭建个人站点的评论的完整记录,特别是遇到的一些鬼畜的问题,如Error not found, 404问题,Validation Failed(422)校验失败问题等,为大家避免采坑提供一些参考

190620 Python Input读取数据

raw_input函数读取输入数据

1
2
3
4
>>> str = input("请输入:")
请输入:yhh
>>> print(str)
yhh

190618-JDK的一次排序采坑记录

列表排序,我们可以说是用的比较多了,写起来也很溜,继承Comparable接口,实现compareTo方法,然后直接使用java.util.List#sort即可

虽说如此简单,今天却是一脚踩进去,花了不少时间才爬出来,下面复盘一下这个现场

190617-python 网络请求之certificate verify failed问题处理

在使用python的request库进行网络访问时,当url是一个https的链接,居然没法正常玩耍,直接提示

1
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051)>

190715 Python 内置函数之getattr

返回一个对象属性值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> class A:
... a = 1
... b = 2
...
>>> a = A()
>>> getattr(a, 'a')
1
>>> a.a
1
# 获取一个不存在的属性值
>>> getattr(a, 'c')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'c'
# 如果不存在,则返回默认值
>>> getattr(a, 'c', 3)
3

请注意:如果获取属性不存在,且没有设置默认值时,会抛异常

190605-记录BigDecimal转int四舍五入的姿势

从db中查了一个BigDecimal数据,希望按照四舍五入的方式进行取整,发现直接使用 intValue 不太对,特此记录一下正确姿势

1
new BigDecimal(4.51).setScale(0, RoundingMode.HALF_EVEN).intValue()

190603-Python 集合的基本操作

在数学中,集合的一些常见操作,比如交集,并集,差集等在python的集合这个数据结构中,能否完美支持呢?

190603 Python 集合内置函数

集合内置的函数介绍

  • add: 添加
  • clear: 清空
  • copy: 拷贝
  • remove/discard: 删除

190529-Java之HashMap迭代删除使用方法小结

map的迭代删除,和我们常见的list,set不太一样,不能直接获取Iteraotr对象,提供的删除方法也是单个的,根据key进行删除,如果我们有个需求,将map中满足某些条件的元素删除掉,要怎么做呢?

190525-Python之命令行参数解析getopt使用说明

请求参数解析属于比较常见和基础的操作技能了,如果希望我们的脚本可以在启动时,传入一些参数,来实现不同的环境指定,条件判断等,可以怎么处理呢?

本篇将介绍在python中,如何优雅的使用getopt,来解析我们的命令行参数

190524-Python之pip导出与安装项目依赖包

使用pip进行python的包管理,记录下常见的两个,安装与导出项目依赖包

1
2
3
4
5
6
7
8
# 安装依赖
pip install pymysql

# 导出依赖
pip freeze 1> requirements.txt

# 安装项目所有依赖
pip install -r requirements.txt

190523-Python之json无法序列化部分类型数据问题解决方案

直接使用python的json库,实现对象和json串的互转,一般使用姿势也很简单,然而今天在使用的时候,需要序列化的对象中有datetime类型的对象,结果就抛出了异常TypeError: Object of type datetime is not JSON serializable

1
2
3
4
5
6
7
import json
result = {"hello": "你好", "name": "一灰灰blog"}
str_json = json.dumps(result)
print(str_json)

j_res = json.loads(str_json)
print(j_res)

190521-JDK之List遍历删除的几种使用姿势

在实际的业务开发中,容器的遍历可以说是非常非常常见的场景了,遍历删除呢,用的机会也不会少,但你真的会用么

190515-老哥你真的知道ArrayList#sublist的正确用法么

我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列表升序,要求长度小于20,可以怎么做?

这个还不简单,几行代码就可以了

1
2
3
4
5
6
7
8
public List<Integer> trimList(List<Integer> list, int add) {
list.add(add);
list.sort(null);
if (list.size() > 20) {
list = list.subList(0, 20);
}
return list;
}

190514-查看java进程jvm参数

java应用启动之后,有办法查看jvm参数么?

可以通过jps -v来实现

1
jsp -lv

如阿里的java进程输出如下

1
2
28996 com.aliyun.tianji.cloudmonitor.Application -Djava.compiler=none -XX:-UseGCOverheadLimit -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:+UseSerialGC -Djava.io.tmpdir=../../tmp -Xms16m -Xmx32m -Djava.library.path=../lib:../../lib -Dwrapper.key=drcJnFxDcXCZH8of -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.disable_console_input=TRUE -Dwrapper.pid=28989 -Dwrapper.version=3.5.27 -Dwrapper.native_library=wrapper -Dwrapper.arch=x86 -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1
2358 sun.tools.jps.Jps -Denv.class.path=.:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:/usr/java/jdk1.8.0_131/jre/lib -Dapplication.home=/usr/java/jdk1.8.0_131 -Xms8m

190509-InfluxDb之时间戳显示为日期格式

直接使用influx-cli查询数据时,时间戳格式不太友好,记录下显示日期的方式

连接时添加参数

1
influx -precision rfc3339

连接后设置参数

1
2
3
4
5
# 进入控制台
influx

# 设置参数
precision rfc3339
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×