使用场景
假设我们有一个数据库连接管理类:
A programmer who likes to pursue the essence
我们的前端数据采集系统是用的树莓派,上面跑着基于Debian的Linux操作系统,用的是EXT4的文件系统格式。之前发现采集到的日志文件末尾偶尔会出现大量的^@,经过一番调研后发现是由于系统突然断电导致的。然后再经过一番google,说是由于文件的metadata修改后变大,但是实际数据由于断电没有写入硬盘,所以会用null符号(^@)来填充。然后想了很多办法来修复这种断电后产生的异常数据(之前因为解决操作系统卡死的问题给我们的盒子加了自动重启线,每隔3天就会自动重启),一直都没有很好的解决,直到听极客时间的Linux操作讲到文件系统的journal mode,再经过一番查找,终于理解了这个问题原理,也找到了解决办法。
JAVA异常类列举了Java中部分的异常类,其中最常见的当属NullPointerException了,程序员必须小心提防,所幸Java 8中引入了Optional类这个语法糖来更好的处理这个异常。
Java常见异常类UML图如下:
每次USB插入时,linux创建的设备文件可能不一样,有时候是/dev/sdb1有时候是/dev/sdc1,可以用fdisk -l命令查看。所以需要为usb建立label不管设备文件是哪个,都有一个固定的label的连接指向它。 先用udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)查看U盘信息,再在/etc/udev/rules.d/下面新建一个文件如:11-usb-serial.rules,写入:
1 |
|
MyBatis主要利用数据源(Data Source)来管理数据库连接,分为:UNPOOLED、POOLED和JNDI,现在主要看下POOLED也就是连接池方式,它的配置如下:
单例模式被认为是最简单的设计模式,属于创建型(设计模式又被分为:创建型、结构型和行为型),经常被用到,下面以我在实际项目中用到的一个单例模式为例,看下如何利用经典的两次判空方法令其高效、安全得工作在多线程环境(见代码中注释)。
文件传输协议(File Transfer Protocol),是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。采用两个TCP连接来传输文件:
有两个python进程A和B复用同一个logger创建模块,往同一个文件里写日志,用的是TimedRotatingFileHandler,并且每天午夜进行文件rollover,保留15天的文件
转眼间,工作已经5年半了。从传统的高端制造业跨国公司转行加入工业互联网行业初创团队也已经一年半了,负责设备数据收集、传输、存储、计算平台的设计与搭建,以及平台上算法的实现。一直在利用碎片时间通过极客时间、公众号、技术博客等方式进行学习,虽然收获颇丰,并已经将一部分知识实践到了我的平台设计中,但还是感觉学到的知识过于零散,有很多由于目前团队人数、业务量、业务性质的原因没有机会实践,所以希望利用技术博客+代码实践的输出方式,形成自己的知识图谱,加深对知识点及彼此之间联系的理解。同时也希望可以在这个社区里面认识更多志同道合的朋友,一起学习讨论。虽然开始的有些晚,but better late than never!先来梳理一下我所掌握并希望不断精进的技术栈吧: