Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

ADS-B数据解析方法

发表于 2023-06-09 | 更新于 2025-04-26

广播式自动相关监视(英语:Automatic dependent surveillance – broadcast,缩写ADS–B)是一种飞机监视技术,飞机通过卫星导航系统确定其位置,并进行定期广播,使其可被追踪。空中交通管制地面站可以接收这些信息并作为二次雷达的一个替代品,从而不需要从地面发送问询信号。其他飞机也可接收这些信息以提供姿态感知和进行自主规避。

ADS-B地面接收设备系统结构

请参考ADS-B数据报文采集与解析系统的设计与实现。

ADS-B数据解析

请参考以下链接:

  • ADS-B数据格式解析
  • Cat021 报文解析
  • asterix
  • jASTERIX
  • EUROCONTROL Specification for Surveillance Data Exchange ASTERIX

Virtual Radar Server

Virtual Radar Server 是一个运行本地 Web 服务器的开源 .NET 应用程序。

参考链接

  1. ADS-B数据格式解析,by 陈晓伟.
  2. Cat021 报文解析,by 刘佳华.
  3. 接口和解析软件——ADS-B数据解析软件,by 北京通航电科.
  4. 广播式自动相关监视,by wikipedia.
  5. ADS-B数据报文采集与解析系统的设计与实现,by 索国伟,王金锁,郭荣华,赵 盼.
  6. asterix,by CroatiaControlLtd.
  7. jASTERIX,by hpuhr
  8. EUROCONTROL Specification for Surveillance Data Exchange ASTERIX,by eurocontrol.

Wireshark分析私有网络协议的方法

发表于 2023-06-06 | 更新于 2023-10-20

协议分析

使用WireShark分析私有网络协议的难度很高,具体方法可以参考以下链接:

  • 一次私有协议的流量分析
  • 私有协议的解密游戏:从秘文到明文

WireShark使用方法

请参考wireshark抓包新手使用教程。

协议分析插件开发

请参考以下链接:

  • Wireshark录取自定义报文的方法
  • 实战编写 wireshark 插件解析私有协议
  • Wireshark C 插件开发之插件框架
  • wireshark插件开发 - 自定义协议

注意事项:

  • 一个端口只能绑定一个协议解析器,不管改端口下有多少中报文格式
  • 解析树的TreeItem添加协议字段时,应使用TvbRange数据类型,否则对应hex数据无法高亮显示,示例如下:
1
2
3
4
local t = tree:add( proto_foo, buf() )
t:add_le( proto_foo.fields.bytes, buf(0,4) )
# 实现日期字段的显示
t:add_le( proto_foo.fields.string, buf(0,8), datetime)

数据包回放

wireshark以pcap格式保存抓取的流量。pcap的具体格式请参考Wireshark文件pcap的格式详细解析有实例(Global Header、Packet Header)

可使用tcpreplay、scap、xcap、netassisnt等工具回放pcap文件。

参考链接

  1. wireshark抓包新手使用教程,by Beng Dou.
  2. 一次私有协议的流量分析,by 聚铭网络.
  3. 私有协议的解密游戏:从秘文到明文,by Smoke0901.
  4. Wireshark文件pcap的格式详细解析有实例(Global Header、Packet Header),by Hollake.
  5. 实战编写 wireshark 插件解析私有协议,by 信安之路.
  6. Wireshark C 插件开发之插件框架,by 大川搬砖.
  7. Tcpreplay安装和使用,by lanyou1900.
  8. tcpreplay 快速入门使用,by CAPTIAN船长.
  9. pcap回放——tcpreplay,by zhuxian2009.
  10. Pcap,by wikipedia.
  11. 两款造包工具,科来和xcap,by 周中山.
  12. 报文回放工具:xcap的使用方法,by 荭知.
  13. wireshark插件开发 - 自定义协议,by m0w3n.
  14. Wireshark录取自定义报文的方法,by 卓_然.
  15. Adding Information To The Dissection Tree,by wireshark.

如何看待绩效考核

发表于 2023-06-06

陈浩大神关于绩效考核的观点我很认同,可惜大神已仙逝,无缘一见。以下是他的主要观点:

1)制定目标和绩效,目的不是用来考核人的,而用来改善提高组织和人员业绩和效率的。

2)人是复杂的,人是有状态波动的,任何时候都不应该轻易否定人,绩效考核应该考核的是事情,而不是人。

背景知识

OKR – Objectives, Key Result
KPI – Key Performance Indicator

重要观点

绩效分应该打给项目,打给产品,打给部门,打给代码,而不是打给人。

OKR 三大特性:0)由员工提出,1)以目标为导向。2)全员共享。

KPI 最大的问题就是用 OKR 里的 Key Results 拿来当目标,从而导致员工只知道要做什么,不知道为什么,不知道为什么,不能理解目标,工作也就成了实实在在的应付!

KPI本身是一种被动的、后置的考察,在工作完成之后考察员工的行为是否符合标准。因此,员工对于公司的目标漠不关心,只关心自己的KPI,因为这才是自己的最大的利益,为了达到KPI,有的员工开始不思考,并使用一些简单粗暴的玩法,其实这样既害了公司,也害了自己。自己的成长和进步也因为强大的 KPI 而抛在了脑后。

当然,KPI 绩效考核一般来说,不一定会毁掉公司的,相反,对于喜欢使用蛮力的劳动密集型的公司来说,可能还有所帮助,然而,KPI毁掉的一定是团队的文化和团队的挑战精神,以及创新和对事业的热情,甚至会让其中的人失去应有的正常的判断力(分不清充分和必要条件,分不清很多事的因果关系)。

参考链接

  1. 我看绩效考核,by 陈浩.

Vue.js封装echarts的方法

发表于 2023-04-15

在Vuejs项目中封装echarts的主要目的是简化echart的使用难度,使之不再需要编写复杂的options,只需传递需要绘制的数据即可。

请参考vue项目中封装echarts的比较优雅的方式。

参考链接

  1. vue项目中封装echarts的比较优雅的方式,by liyoro.

C#之NuGet打包和离线安装

发表于 2023-04-08 | 更新于 2023-10-26

最近研究一个C#开源项目,发现在离线的情况下无法顺利编译链接,其原因是缺乏NuGet安装的程序集。因此研究一下NuGet打包和离线安装的方法。

NuGet简介

NuGet是一个自由开源软件包管理系统。用于Microsoft开发平台。以前称NuPack。 2010年首次发布。已经进化为一个庞大的工具与服务生态系统。

下载Nuget程序包

  1. 进入Nuget官网:https://www.nuget.org/,

  2. 搜索框里搜索需要的安装包,例如MaterialDesignThemes,一个主题包,点击自己所需的安装包。

NuGet离线安装软件包

参考链接

  1. C# NuGet打包和离线安装,by mob604756fda125.
  2. NuGet是什么?理解与使用(上),by 6号咸鱼.
  3. Visual Studio NuGet离线安装包,by 苏守坤.

Java之SSH框架学习笔记

发表于 2023-04-03 | 更新于 2023-04-04

最近处理的几个项目都是用Java语言编写的,学习一下。

Web.xml配置文件

Listener

为web应用程序定义监听器,监听器用来监听各种事件,比如:application和session事件,所有的监听器按照相同的方式定义,功能取决去它们各自实现的接口,常用的Web事件接口有如下几个:

  • ServletContextListener:用于监听Web应用的启动和关闭;
  • ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变;
  • ServletRequestListener:用于监听用户的请求;
  • ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变;
  • HttpSessionListener:用于监听用户session的开始和结束;
  • HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变。

主要用于监听Web应用事件,其中有两个比较重要的WEB应用事件:应用的启动和停止(starting up or shutting down)和Session的创建和失效(created or destroyed)。

Filter

Filter可认为是Servle的一种“加强版”,主要用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链。使用Filter的完整流程是:Filter对用户请求进行预处理,接着将请求HttpServletRequest交给Servlet进行处理并生成响应,最后Filter再对服务器响应HttpServletResponse进行后处理。Filter与Servlet具有完全相同的生命周期,且Filter也可以通过来配置初始化参数,获取Filter的初始化参数则使用FilterConfig的getInitParameter()。

换种说法,Servlet里有request和response两个对象,Filter能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response,Filter其实是一个Servlet链。

以下是Filter的一些常见应用场合:

  • 认证Filter
  • 日志和审核Filter
  • 图片转换Filter
  • 数据压缩Filter
  • 密码Filter
  • 令牌Filter
  • 触发资源访问事件的Filter
  • XSLT Filter
  • 媒体类型链Filter

Servlet

Servlet通常称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户的请求。Servlet是个特殊的java类,继承于HttpServlet。客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。

Bean

JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。

Web.xml加载顺序

总的来说,web.xml的加载顺序是:->->->。其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载。

对于某类元素而言,与它们出现的顺序是有关的。以为例,web.xml中当然可以定义多个,与相关的一个元素是,注意,对于拥有相同的和元素而言,必须出现在之后,否则当解析到时,它所对应的还未定义。web容器启动初始化每个时,按照出现的顺序来初始化的,当请求资源匹配多个时,拦截资源是按照元素出现的顺序来依次调用doFilter()方法的。同类似,此处不再赘述。

Servlet里有request和response两个对象,Filter能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response,Filter其实是一个Servlet链。

Struct2

请参考Struct2 基础介绍 。

Struct2工作流程

图1 Struct2工作流程

Spring

请参考Spring MVC 解析之 DispatcherServlet。

Spring工作流程

图2 Spring工作流程

参考链接

  1. web.xml 配置文件 超详细说明!!! ,by 吴川华仔.
  2. web.xml文件中加载顺序的优先级 ,by laolu0837.
  3. Spring 、SpringMVC 、Struts2之间的区别,by 刘二雄.
  4. Struct2 基础介绍 ,by shiyuan310.
  5. 深入Struts2的过滤器FilterDispatcher–中文乱码及字符编码过滤器,by 关键步就几步.
  6. Spring整合Struts2步骤及完整实例,by Star_Ship.
  7. Spring和struts2整合详解,by Damon.
  8. spring整合struts2过程详解,by 西西嘛呦.
  9. Spring MVC 解析之 DispatcherServlet,by 摆码王子.
  10. 一文读懂SpringMVC工作流程,by Wizey.
  11. servlet的url-pattern匹配规则详细描述,by 51kata.
  12. Listener,Filter,Servlet执行顺序和生命周期,by laolu0837.
  13. springmvc 的参数绑定,springmvc和 struts2的区别,by 双斜杠少年.
  14. 如何集成Struts和Spring,by gxhsnowflower.
  15. Struts2和Spring集成,by yiibai.
  16. Spring 和 Struts 集成,by 王如霜.

Vue2项目配置flow类型检查

发表于 2023-03-24

Flow 是 JavaScript 代码的静态类型检查器。它做了很多工作来提高你的工作效率。使您编码更快、更智能、更自信,并且规模更大。

Flow 通过静态类型注解检查你的代码是否有错误。这些 类型允许您告诉 Flow 您希望您的代码如何工作,Flow 将确保它确实以这种方式工作。

Vue2的源代码就使用了Flow进行静态类型检查。下面介绍在Vue2项目中安装配置使用Flow的方法。

安装步骤

  • Babel是一个支持 Flow 的 JavaScript 代码编译器。Babel 将获取您的 Flow 代码并删除所有类型注释。
1
npm install --save-dev @babel/core @babel/cli @babel/preset-flow

接下来,您需要在项目的根目录下创建一个文件,即.babelrc, 并将”@babel/preset-flow”配置在您的”presets”.

1
{ "presets": ["@babel/preset-flow"] }
  • flow可以直接通过npm或者yarn安装。
1
npm install --save-dev flow-bin

安装完成后在package.json中加入下面的脚本:

1
2
3
"scripts": {
"flow":"flow check"
}

使用方法

配置flow

首先生成flow配置文件.flowconfig:

1
.\node_modules\.bin\flow init

使用flow

新建一个文件index.js:

1
2
// @flow 
let a:number = '3';

// @flow或者 /* @flow */告诉flow检查这个文件
输入npm run flow 执行类型检查

注:在vue单文件组件使用flow需要额外配置

注:项目路径不能存在中文

请参考vue2.0项目配置flow类型检查。

参考链接

  1. vue2.0项目配置flow类型检查,by ltinyho.
  2. Flow静态类型检查及在Vue项目中的使用,by 美团点评点餐.
  3. .flowconfig,by flow.org.
  4. flow高级配置,by zhenyong.
  5. flow从零开始—-安装和配置,by advance100.
  6. npm发布以@开头命名的public包!!!,by ty41232X32.

Threejs学习笔记

发表于 2023-03-23 | 更新于 2023-03-29

Three.js是一个跨浏览器的 JavaScript 库和应用程序编程接口(API),用于使用WebGL在Web 浏览器中创建和显示动画3D 计算机图形。

Three.js 允许使用JavaScript语言创建图形处理单元(GPU) 加速的 3D 动画作为网站的一部分,而无需依赖专有浏览器插件。

Three.js入门教程

请参考一篇文章了解 threejs 在 vue 项目中的基本使用。

three.js 动画系统

参考链接

  1. 轨道控制器(OrbitControls),by threejs.
  2. 一篇文章了解 threejs 在 vue 项目中的基本使用,by wjw1014.
  3. 用封装好的threejs库快速生成全景-Panolens.js,by 乘风转舵.
  4. 关于梳理封装Threejs工具类这档事,by FlyTeng_1874.
  5. Three.js - 监听window 的 resize 事件,使浏览器窗口变动自适应,by 已注销.
  6. How to trigger an event when element is resized in Vue.js?,by stackoverflow.
  7. Resize Observer API,by mozilla.
  8. Three.js Animation in Canvas doesn’t resize properly in Vue Application,by stackoverflow.
  9. three.js 动画系统,by discoverthreejs.

js创建对象的方法汇总

发表于 2023-03-20

以下是几种创建js对象的方法。

Object构造函数创建

使用对象字面量表示法来创建对象

使用工厂模式创建对象

使用构造函数创建对象

原型创建对象模式

组合使用构造函数模式和原型模式

参考链接

  1. JS创建对象的几种方法,by fishfan.
  2. Javascript定义类(class)的三种方法,by 阮一峰.
  3. JavaScript Class类详解,by 前端农民晨曦.
  4. 理解JS的prototype,by 登来.

追求理解的教学设计读书笔记

发表于 2023-03-18 | 更新于 2023-07-09

《追求理解的教学设计方法》一书采用逆向设计方法,认为教学设计应分为如下三个阶段:

阶段1–预期成果

所确定的目标

教学设计目标,该设计将达到什么目标?

理解

学生将理解…

  • 大概念是什么?
  • 期望他们获得的特定理解是什么?
  • 可预见的误解是什么?

基本问题

  • 什么样的启发性问题能够促进探究、理解和学习迁移?

学生将会知道…

  • 作为本单元的学习结果,学生将会获得哪些关键知识和技能?
  • 习得这些知识和技能后,他们最终能够做什么?

学生将能够做到…

阶段2–评估证据

表现性任务

  • 学生通过哪些真实的表现性任务证明自己达到了预期的理解目标?
  • 通过什么标准评判理解成效?

其他证据

  • 学生通过哪些其他证据(例如:小测验、考试、问答题、观察、作业、日志)证明自己达到了预期成果?
  • 学生如何反馈和自评自己的学习?

阶段3–学习计划

设计关键的教学和学习活动。哪些学习体验和教学能够使学生达到预期的结果,以WHERETO分类学习活动。

  • W=帮助学生知道此单元的方向和预期成果?帮助教师知道学生从哪开始先前知识和兴趣?
  • H=把我学生情况和保持学生兴趣?
  • E=武装学生,帮助他们体验主要观点和探索问题?
  • R=提供机会去反思和修改他们的理解及学习表现?
  • E=允许学生评价他们的学习表现及含义?
  • T=对于学生不同的需要、兴趣和能力做到量体裁衣个性化?
  • O=组织教学使其最大程度地提升学生地学习动机与持续参与地热情,提升学习效果?

参考链接

  1. 追求理解的教学设计(第二版),by 格兰特·威金斯 杰伊·麦克泰格.
  2. Understanding by Design,by Ryan S. Bowen.
上一页1…91011…52下一页

Jack Huang

519 日志
66 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse