Wudashan Blog

Java开发工程师

公司编程竞赛之最长路径问题

从深度优先搜索算法到贪心算法,再到模拟退火算法

算法源码地址:https://github.com/wudashan/longest-path-problem 前言 最近产品线举办了一个软件编程大赛,题目非常的有趣,就是在一个9 × 9的格子里,你要和另一个敌人PK,在PK的过程中,你可以吃格子里的果实来提升攻击力。每次可以往正上、正下、正左、正右、左上、左下、右上、右下八个方向走。每次要么连续吃果实要么连续走空白区域,且不能...

Java遍历Map的三种方法及性能对比

哪一种才是正确高效的遍历Map的姿势?

本篇博客基于java1.8.0_111版本。 前言 在Java中,一共有3种遍历Map的方式,那么它们之前有什么差异,哪个性能最好?就让我们一探究竟吧! 遍历方法 方法一 forEach 使用Java 5提供的for-each,可以实现循环遍历Map。对于for-each需要注意,如果遍历一个null列表或集合,则会抛出NullPointerException异常。 ...

Spring Batch批处理框架介绍

一款轻量的、全面的批处理框架,用于开发强大的批处理应用程序。

本篇博客基于Spring Batch的3.0.8版本。 前言 在大型的企业应用中,或多或少都会存在大量的任务需要处理,如邮件批量通知所有将要过期的会员等等。而在批量处理任务的过程中,又需要注意很多细节,如任务异常、性能瓶颈等等。那么,使用一款优秀的框架总比我们自己重复地造轮子要好得多一些。 我所在的物联网云平台部门就有这么一个需求,需要实现批量下发命令给百万设备。为了防止枯燥乏...

Californium开源框架之源码分析(八)

element包,网络通信基本定义。

项目源码地址:https://github.com/eclipse/californium element包 element根目录下,定义了网络层通信的基本类。 根目录 CorrelationContext接口 一个提供上下文信息的接口,用于在发送和接收报文时存储特定的信息。该接口声明了get(String key)方法,返回String值。 MapBasedCorr...

Californium开源框架之源码分析(七)

core包,一些封装好的供开发者使用的类。

项目源码地址:https://github.com/eclipse/californium core包 core根目录下,封装好了一些供开发者使用的类。 根目录 CaliforniumFormatter类 该类继承了java.util.logging.Formatter类,并重写了format()方法。对日志输出进行了格式化处理,默认给每条日志添加线程id、日志级别、类...

Californium开源框架之源码分析(六)

network模块(下),网络传输核心模块。

项目源码地址:https://github.com/eclipse/californium network包 network包目录下,是框架中网络传输的核心模块。 stack包 该模块为CoAP协议栈,模块一共有以下类: Layer接口 该接口表示抽象的协议层,负责处理CoAP消息。当处理完后,会将消息往上层或下层传递,由它们继续处理。使用的是设计模式中的职责链模...

Californium开源框架之源码分析(五)

network模块(上),网络传输核心模块。

项目源码地址:https://github.com/eclipse/californium network包 network包目录下,是框架中网络传输的核心模块。 config包 该目录下一共有4个类。 NetworkConfig类 该类表示框架的服务端、端点和连接器的配置参数。比如CoAP协议的端口号、ACK超时时间、去重策略等等。 我们可以通过Network...

Californium开源框架之源码分析(四)

server模块,服务端和资源。

项目源码地址:https://github.com/eclipse/californium server包 server包目录下,描述的是服务端和内嵌的资源。 根目录 ServerInterface接口 该接口描述了一个服务端需要提供什么功能:CoAP资源的运行环境。 资源是以N叉树的数据结构表示的,服务端只持有根节点。一个服务端可以绑定多个Endpoint,只要ip...

Californium开源框架之源码分析(三)

observe模块,CoAP协议特点之资源订阅。

项目源码地址:https://github.com/eclipse/californium 引言 物联网时代,为了在设备监控的数据发生变化时平台能第一时间获取到,频繁地定时地向设备获取其数据是不现实的。一是会消耗设备的电量、二是会浪费不必要的带宽。其解决方案是:平台作为一个客户端向设备(服务端)的数据发起一个订阅请求,在设备数据发生变化时主动推送给平台。交互图如下: o...

Californium开源框架之源码分析(二)

coap模块,协议中的常量定义与消息模型。

项目源码地址:https://github.com/eclipse/californium coap包 coap包目录下,主要是CoAP协议中定义的常量和消息基本模型。 CoAP类 该类定义了CoAP报文的一些常量,以及按协议要求定义了报文中各字段的格式。包括: 消息类型:CON,NON,ACK,RST 请求码:GET,POST,PUT,DELETE 响应...