0%

本章属于持续学习、长期更修。

HashSet

特性

  • HashSet不允许重复数据。
  • HashSet不允许null,因为null也是可以重复的。
  • HashSet不保证数据的插入顺序。
  • HashSet不是线程安全的,如果想使用线程的安全的HashSet可以通过Collections.synchronizedSet 来获取线程安全的HashSet。也可以使用CopyOnWriteArraySet。但是性能会有很大的损失。
  • HashSet迭代器方法是快速失败的。因此,在创建迭代器之后对集合进行任何结构修改都会抛出ConcurrentModificationException。
  • HashSet支持泛型,这是在运行时避免ClassCastException的推荐方法。
  • HashSet使用HashMap存储元素,因此对象应该提供hashCode()和equals()方法的良好实现,以避免不必要的结果。

源码分析

刚去杭州面试的第二家公司,做笔试的时候的时候遇到的。最近几天在整理以前的笔记发现了。简单记录下。

互换两个变量的值

1
2
3
int a=10;
int b=12;
// 通过两个变量之间的运算输出结果 a = 12 b = 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Test
public void swapTest1(){
int a=10;
int b=12;
a=a^b; //a=1010^b=1100;
b=a^b; //a=0110^b=1100;
a=a^b; //a=0110^b=1010;
//a=1100=12;b=1010;
System.out.println(a);
System.out.println(b);
}

@Test
public void swapTest2(){
int a = 10;
int b = 12;
a = a + b; // 22 = 10 + 12
b = a - b; // 10 = 22 - 12
a = a - b; // 12 = 22 - 10
System.out.println(a);
System.out.println(b);
}

2018年在公司负责了一段时间老项目改造升级工作。因此记录下折腾的过程。

  • Spring boot 最近挺火的,之前的工作并没有机会去实战。但是即使不使用Spring boot 也是可以做零配置的。

约定大于配置

  • servlet3.*的规范已经支持不使用web.xml了。
  • annotation的配置方式在Spring其实也存在很久了。
阅读全文 »

最近开始用mac来开发。记录下环境安装过程方便以后快速恢复熟悉的开发环境。

这里提前修改一下控制台前缀

1
2
3
4
5
[dev mc]$ sudo vim /etc/bashrc
#修改以下内容
PS1='\h:\W \u\$ '
#修改成
PS1='[dev \u]$ '

好用的工具

  • pages 同事推荐的软件暂时用来写周报。
  • brew 这是一个神器,和linux 上的yum 类似的工具。
  • sublime text 我之前在windows上都是使用notepad++。上App Store上没找到,该用这个了。

pages

  • 直接在app store安装就好了

brew

  • 安装过程使用终端安装。
1
2
#  这里并没有换行,复制的时候请注意。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 基本操作方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 更新
brew update
# 安装软件
brew install xxx(软件名)

#常见命令整理如下,以下命令都可带上 cask 参数:

brew search name:联网搜索软件是否存在 brew 中
brew install name:安装软件
brew upgrade name:更新软件
brew uninstall name:卸载软件
brew reinstall name:重新安装软件
brew info name:查看软件安装地址
brew cleanup:清理缓存等
brew doctor:查看建议,例如升级等

mvnd

maven-mvnd,可以读作 Maven Daemon,译作 Maven 守护版,旨在为 Maven 提供更快的构建速度,灵感借鉴了 Gradle 和 Takari(Maven 生命周期优化器)。

1
2
3
4
5
6
# Windows
choco install mvndaemon
# Linux
sdk install mvnd
# macOS
brew install mvndaemon/homebrew-mvnd/mvnd

mycli

python编写的mysql客户单工具

1
brew install mycli
阅读全文 »

本章内容阐述个人理解,以及使用方法。若有不正确的内容欢迎斧正。睡觉之前赶快记录下来免得有忘记了。

什么是Log?

  • 日志记录的是什么?市面上流行的软件基本都有日志记录功能,作为开发人员的好帮手。日志可以有效的记录程序运行的状态以及运行的异常,比如说操作系统蓝屏了、手机死机了、软件卡死、程序崩溃、写了BUG等等都会有对应的日志留下。

如何利用log?

  • 笔者是一个Java开发人员,本章内容代码部分已Java代码用例。大家都知道日志非常重要,但是经验不足的开发人员往往忽视了这个重要的手段,比如在控制台输出日志,所有输出信息都集中在一起。排除问题非常困难,一旦出现了线上异常信息首先要看的就是日志信息。所以有必要就日志手段多了解下。

我是如何操作的?

  • 最在开发一个客户端应用,并不是GUI那种程序。功能不多但是日志信息却很多,循环监控数据,所以运行期产生的日志也有点多,开发的时候毕竟简单调试还能接受,运行起来日志过于集中眼睛疼,为了方便调试以及排除问题,考虑先将日志经拆分。不同业务或者类型使用不同的log文件来记录。
阅读全文 »

本章是整理知识内容,为强化知识长期更新。

以下部分超链接需要科学上网。

ModBus

modbus是一种通讯协议,是Modicon公司1979年为使用可编程逻辑控制器(PLC)通讯而发表。Modbus是工业领域通讯协议的业界标准之一,目前也我国国家标准工业通讯协议中的重要成员之一。

介绍

  • Modbus采用主从(Master-Salve)通信模式,仅有主设备(Master)能对传输进行初始化,从设备(Slave)根据主设备的请求进行应答。 __在主从关系中,通信总是成对发生。一个设备必须发起请求,然后等待响应 - 并且发起设备(主设备)负责发起每次交互。 通常,主设备是人机界面(HMI)或监控和数据采集(SCADA)系统,从设备是传感器、可编程逻辑控制器(PLC)或可编程自动化控制器(PAC)。 这些请求和响应的内容以及发送这些消息的网络层由协议的不同层来定义__。

    • 在串行链路的主从通信中,Modbus主设备可以连接一个或N(最大为247)个从设备,主从设备之间的通信包括单播模式和广播模式。
    • 在广播模式中,Modbus主设备可同时向多个从设备发送请求(设备地址0用于广播模式),从设备对广播请求不进行响应。
    • 在单播模式中,主设备发送请求至某个特定的从设备(每个Modbus从设备具有唯一地址),请求的消息帧中会包含功能代码和数据,比如功能代码“01”用来读取离散量线圈的状态。从设备接到请求后,进行应答并把消息反馈主设备。
    • __主设备不发送数据,从数据是不会自己发出数据的;即必须是主设备发出查询请求才能建立通讯。 __
  • 消息帧校验方式

    • ASCII消息帧:LRC(纵向冗长检测)
    • CRCi消息帧:CRC(循环冗长检测)
  • ModBus是OSI模型第七层上即__应用层__报文传输协议。

  • ModBus支持多工业设备、包括PLCDSC变频器、智能仪表等都在应用。

  • ModBus支持多种电气接口,如RS-232RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线。

  • ModBus协议完全免费;帧格式简单,紧凑。

  • ModBus对线缆的要求、长度、波特率,终端电阻,接地,连接器,通信状态的LED指示,都有电气标准。

  • ModBus数据可以分为两大类,分别为Coil和Register,每一种数据,根据读写方式的不同,又可细分为两种(只读,读写)。

    • Coli是位(bit)变量。
    • Register是整型(word ,即 16 - bit )。
Primary tabels Object Type Type Of comments
Discretes Input 离线输入量 Single bit 只读 IO系统提供这种类型的数据
Coils 线圈 Single bit 只写 通用应用程序改变这种类型的数据
Input Registers 输入寄存器 16-bit word 只读 IO系统提供这种类型的数据
Holding Registers 保持寄存器 16-bit word 只写 通用应用程序改变这种类型的数据
阅读全文 »