月度归档:2020年05月

BigDecimal 加减乘除计算

BigDecimal有多种构造函数,常用的有2种。建议使用String构造方式,不建议使用double构造方式。

// 强制使用String的构造函数,double也有可能计算不太准确
// 原则是使用BigDecimal并且一定要用String来构造。
public BigDecimal(String val);
public BigDecimal(double val);

方法

  • add() 加法
  • subtract() 减法
  • multiply() 乘法
  • divide() 除法
  • abs() 绝对值

舍入

new BigDecimal("12.34").setScale(0, BigDecimal.ROUND_HALF_UP);
  • ROUND_UP 始终对非零舍弃部分前面的数字加1
  • ROUND_DOWN 从不对舍弃部分前面的数字加1,即截短
  • ROUND_CEILING 如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;如果为负,则舍入行为与 ROUND_DOWN 相同
  • ROUND_FLOOR 如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;如果为负,则舍入行为与 ROUND_UP 相同
  • ROUND_HALF_UP 四舍五入
  • ROUND_HALF_DOWN 五舍六入
  • ROUND_HALF_EVEN “银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。如果前一位为奇数,则入位,否则舍去

更多来源:https://www.jianshu.com/p/683b2406342f

ubuntu 安装 wireshark 抓包工具

安装方法:

sudo apt-add-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark

安装过程中需要设置,选择“是”。如果错过了或选错了,就安装好之后,运行下面命令行,出现上述页面选择“是”即可。

sudo dpkg-reconfigure wireshark-common

出于安全方面的考虑,普通用户不能够打开网卡设备进行抓包,Wireshark不建议用户通过sudo在root权限下运行,应当设置当前用户权限:

sudo vim /etc/group

wireshark:x: 后面输入当前登录的用户名,保存。

重启系统。

linux 下用 socat 模拟串口调试

$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
2020/05/01 12:08:12 socat[8341] N PTY is /dev/pts/2
2020/05/01 12:08:12 socat[8341] N PTY is /dev/pts/3
2020/05/01 12:08:12 socat[8341] N starting data transfer loop with FDs [5,5] and [7,7]

-d -d 前面两个连续的 -d -d 代表调试信息的输出级别

启一个终端,运行:

echo "test string" > /dev/pts/3

再启一个终端 ,运行:

cat < /dev/pts/2

可以看到向 pts3 发送的数据,由 pts2 接收到了。开发调试的程序连接到 pts2 就可以实现数据接收了。