号外

背景图

近因为换工作的原因,我的博客和Github没有像之前那样频繁的更新了。一方面原因是投递简历和准备面试,由于之前的基础没有很扎实,需要把平时的知识点都整理一遍。这个时间段持续了20多天的样子,因为今年的互联网市场遇冷,简历反馈率都不是很好。

​ 我一共投递了菜鸟网络,天猫超市,有赞,大搜车和涂鸦智能等公司,都收到了面试邀请。菜鸟网络和涂鸦智能投递的职位方向都是我比较感兴趣的IOT,有赞投递的是风控和大搜车的新零售职位,后两个都是我之前的没有接触过的领域。最后由于各方面的考虑(没面试成功和对工作以及生活的平衡),我选择了之前没有接触过的大搜车新零售领域的职位。

​ 但是今天我想说的并不是面试经历,而是我标题所描述的工作中发生的有趣的事。因为新入职一个公司,需要对工作流程和项目代码进行熟悉,同时还需要对新零售这个领域和行业需要进行了解和认识。所以拿到产品分配给我的需求,我大部分的时间都是花在了需求整理和询问同事上了,真正花在写业务需求上的时间是很少的。

阅读全文 »

前言

声明:

1、DO(业务实体对象),DTO(数据传输对象)。

在一个成熟的工程中,尤其是现在的分布式系统中,应用与应用之间,还有单独的应用细分模块之后,DO 一般不会让外部依赖,这时候需要在提供对外接口的模块里放 DTO 用于对象传输,也即是 DO 对象对内,DTO对象对外,DTO 可以根据业务需要变更,并不需要映射 DO 的全部属性。

  • 在我们对外暴露的Dubbo接口,一般这样定义接口类
1
2
3
4
5
6
7
8
/**
* 获取营销信息
*
* @param hallId 场馆编号
* @param modelCode 车型代码
* @return
*/
BrandMarketInfoDTO getBrandMarketInfo(String hallId, String modelCode);
  • 在和数据持久层映射实现的接口中,一般我们会这么写
1
2
3
4
5
6
7
8
/**
* 获取水牌营销信息
*
* @param hallId
* @param modelCode
* @return
*/
HallCarManageDO getBoardMarketInfo(@Param("hallId") String hallId, @Param("modelCode") String modelCode);

但是我们HallCarManageDO和BrandMarketInfoDTO中的属性和属性类型不是相等的。这种 对象与对象之间的互相转换,就需要有一个专门用来解决转换问题的工具,毕竟每一个字段都 get/set 会很麻烦。

阅读全文 »

预期游玩地点:

万平口景区(日照金色沙滩,婚纱摄影基地)

巧克力渔家(平价海鲜)

日照灯塔广场

  1. 🌚熬夜前往日照(相当辛苦)

车票

阅读全文 »

thingsboard官网: https://thingsboard.io/

thingsboard GitHub: https://github.com/thingsboard/thingsboard

thingsboard提供的体验地址: http://demo.thingsboard.io/

BY Thingsboard team

以下内容是在原文基础上演绎的译文。除非另行注明,页面上所有内容采用知识共享-署名(CC BY 2.5 AU)协议共享。

原文地址: ThingsBoard API参考:HTTP设备API


HTTP

协议介绍

HTTP是可用于IoT应用程序的通用网络协议。您可以在此处找到有关HTTP的更多信息。HTTP协议是基于TCP的,并使用请求 - 响应模型。当然它的缺点也极为明显,HTTP对于嵌入式设备来说太重了,也不灵活。

协议特点

http

  1. 支持客户/服务器模式。
  2. 简单快速: 客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、PUT、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因此通信速度很快。
  3. 灵活: HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  4. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  5. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
阅读全文 »

本章主要内容:

  • 使用JavaScript Set数据结构跟踪多个窗口
  • 促进主进程和多个渲染器进程之间的通信
  • 使用Node APIs检查应用程序运行在那个平台上

现在,当Fire Sale启动时,它为UI创建一个窗口。当该窗口关闭时,应用程序退出。虽然这种行为完全可以接受,但我们通常希望能够打开多个独立的窗口。在本章中,我们将Fire Sale从一个单窗口应用程序转换为一个支持多个窗口的应用程序。在此过程中,我们将探索新的Electron APIs以及一些最近添加的JavaScript。我们还将探讨在将一个主进程配置为与一个渲染器进程通信,并对其进行重构以管理可变数量的渲染器进程时出现的问题的解决方案。本章末尾的完整代码可以在http://tinyurl.com/y4z9oj69。 然而我们从第4章-使用本机文件对话框和帮助进程间通讯的分支开始。

图5.1 在第四章中,我们建立了主进程和一个渲染进程之间的通信。

图5.2 在本章中,我们将更新Fire Sale以支持多个窗口并促进他们之间的沟通。

我们首先实例化一个Set数据结构,该结构于2015年添加到JavaScript中,跟踪用户的所有窗口。接下来,我们创建一个函数来管理单个窗口的生命周期。在这之后,我们修改在第4章中创建的函数,以提示用户选择一个文件并打开它以指向正确的窗口。此外,我们还将处理一些常见的突发情况和沿途出现的其他问题,比如互相遮挡的窗口。

阅读全文 »