2022年6月20日

摄影感悟之“拍夕阳并不是拍夕阳”

生活在美国圣地亚哥的一大好处就是每年有300多天的晴天,而且由于地处西海岸,因此就意味着一年有300次机会可以看到美丽的夕阳。这让我一度产生了拍一本夕阳影集的冲动。本网站的首页即使拍摄的作品之一。不过随着自己不断拍摄,感觉太阳就那么一个,怎么拍都是一个结果,也就渐渐没了动力,进而荒废了。

在沉溺了三年之后,不知何为契机,我突然又有了拿起相机的冲动。重新拾起对摄影的热情真的让我感到每天都充满着想法和欲望,也同时重新激起了我学习的兴趣与动力。上个月我有个机会到一个专业摄影师朋友家吃饭,在聊天中我提出了我对夕阳摄影的问题,他非常nice地抽出了大约15分钟和我进行了探讨这个话题,并且非[……]


进一步了解
2022年5月20日

IPtables and Systemctl in Docker Container

最近在做一个产品docker化的过程中,出现了这两个问题。

一个是因为权限不足,所以不能在docker container中调用iptables命令。第二个是在调用systemctl启停services的时候出现了Failed to get D-Bus connection: Operation not permitted的错误。

原因分析

解决办法

对于iptables权限问题,在启动container时加入–cap-add=NET_ADMIN的参数,或者直接–privileged。

对于systemctl的问题,研究后推荐使用Guido Draheim写的[……]


进一步了解
2021年11月13日

买房再启动

2021/11/11 – 见房产经纪人吴兰,twinhouse,两居,1264平尺,有后院,标81.9万。首先这个房子的位置非常好,在我姐住的地区92131,离超市很近,学区非常好9/10。路边就有篮球场,向南开五分钟就是Miramar湖,离Poway的Costco也不远,离韩国超市Hmart也不远,所以位置上除了不是海边,真的是非常好。房子本身很美式的90年代房子,厅不是很大,但整体很干净很工整。院子不大但也房子的占地差不多。车库冲西,院子向东,而且院子方向是一片小树林,经纪人说这个是“小view”,基本要比没有view的房子在房价上加5万。由于院子在西面,所以午后特别适合乘凉 – 因为身后[……]


进一步了解
2021年8月26日

使用CamScanner生成PDF文档

CamScanner是个非常好用的手机扫描软件,可以生成PDF。唯一的“缺点”是收费,否则有水印。

我记得以前如果你直出PDF的话,是有水印的。但如果导出为多张图片的话,它是不会给你加水印的。这样的情况在现在不适用了。

这篇博主要主要介绍一下我是怎么拙劣地去除水印的。

不差钱的请转身。

本篇方法基于MAC操作系统。

  1. 使用软件扫描,然后导出为长照片。这时水印会加在整张照片的最底端;
  2. 将图片AirDrop到Mac上;
  3. 使用Preview打开图片,此时如果直接导出为PDF,则会把这张长照片放到一页PDF上,所以我们得分页。
  4. 如果没有其他工具的话,只[……]


进一步了解
2021年2月5日

源码学习-Integer类(四)

作者:大董

本节说一说Integer类中,几个似乎用的不多,但是很有意思的方法。这些方法体现了移位操作的巨大作用。

1.Integer.highestOneBit(int)

这个方法的作用是,接收一个int型的参数,获取小于等于i的所有数当中值最大的2的整数次幂。思路是通过移位和逻辑运算,获得整型i转化为二进制后,最左侧的1所在的位置表示的10进制数值。

例如,输入i=17,返回16;输入i=10,返回8。等等。

代码分析参考:https://blog.csdn.net/qq_43091847/article/de[……]


进一步了解
2021年2月1日

源码学习-Integer类(二)

作者:大董

上回书说到了Integer类的初始化。做一个简单的Demo如下:

输出是两个false。可见每一次的实例化都会创建一个新的对象。但是,如果直接赋值进行实例化,如下:

再运行,输出竟然是true和false!这是为何呢?

当执行了语句:

Integer i1=100

时,在JVM中进行了一个自动装箱的操作。也就是说,将一个值为100的int类型变量封装为了一个Integer对象。这其中,编译器实际上执行了以下语句:

Integer i1 = Integer.valueOf[……]


进一步了解
2021年2月1日

源码学习-Integer类(三)

作者:大董

本节来说说Integer类中的toString方法。Integer类中提供了两个toString的重载方法。它们的签名分别是:

重载一:String toString(int i)

重载二:String toString(int i, int radix)

它们实现了将一个int型的变量转化为字符串输出。不同的是,第二个方法多了一个radix参数,这个参数的有效值是一个2-36之间的int型数值。该方法的作用是将i转化为radix进制的数之后,转化为字符串输出。

先看第一个重载:

方法首先调用一个S[……]


进一步了解
2021年1月26日

源码学习-Integer类(一)

作者:大董

Integer类继承了Number类,基本作用是对一个int类型的变量进行包装,使其具有一个对象的属性,由此可以带来很多好处。

先说说Integer类的示例化。标准的实例化是这样的:

Integer a = new Integer(100);

在此过程中,编译器会调用相应的构造方法来创建Integer类的实例。打开Integer类代码可以看到,Integer类提供了两个带参数的构造方法。其中之一,接收一个int型的参数,并在方法内为一个int型的私有变量value赋了值。这个value就是Integer类所要包装的int[……]


进一步了解