印象中工作以来还从来没搞过一次 OAuth2 的接入- -,似乎只停留在愉快的使用阶段.比如现在很多网站都接了 wx 二维码扫码登录或者微博登录.所以一直只是享受着这样的便利,却没有机会自己来搞一搞把里面的技术细节打通. 首先找到 阮一峰老师的一篇古老的文章介绍了一下 OAuth 协议. 归根到底 OAuth 要做的事情就是在没有完整用户用户密码的情况下,通过用户授权访问第三方原本提供给用户的服务. 比如我要去上知乎,但是我不想注册一个知乎的账号,通过 OAuth 我可以通过微博的账号去访问知乎…
1.内核修改 涉及到的内核文件包括driver/char/tty_ioctl.c和arch/xx/include/asm/termbits.h 在linux内核中,struct ktermios结构的c_cflags共有5个位用来标注波特率,其中位CBAUDEX表明使用的是POSIX标准波特率还是扩展波特率,POSIX规定了16个标准波特率,为B0,B50,B75,B110,B134,B150,B200,B300,B600,B1200,B1800,B2400,B4800,B9600,B19200…
OAuth 2.0 允许第三方应用程序访问受限的HTTP资源的授权协议,像平常大家使用Github.Google账号来登陆其他系统时使用的就是 OAuth 2.0 授权框架,下图就是使用Github账号登陆Coding系统的授权页面图: 类似使用 OAuth 2.0 授权的还有很多,本文将介绍 OAuth 2.0 相关的概念如:角色.授权类型等知识,以下是我整理一张 OAuth 2.0 授权的脑头,希望对大家了解 OAuth 2.0 授权协议有帮助. 文章将以脑图中的内容展开 OAuth 2.0…
不吐不快 因为项目需求开始接触OAuth2.0授权协议.断断续续接触了有两周左右的时间.不得不吐槽的,依然是自己的学习习惯问题,总是着急想了解一切,习惯性地钻牛角尖去理解小的细节,而不是从宏观上去掌握,或者说先用起来(少年,一辈子辣么长,你这么着急合适吗?).好在前人们已经做好了很好的demo,我自己照着抄一抄也就理解了大概如何用,依旧手残党,依旧敲不出好代码.忏悔… WHAT? 项目之中实际使用OAuth2.0实现是用的Spring Security OAuth2.0,一套基于Spring S…
工业现场经常会碰到通过485或者232采集各类仪表数据,但是很多早期的仪表和设备不支持标准modbus协议,而是采用自定义的协议,这些协议数据由plc或者dcs系统来实现采集,不仅费时麻烦,而且不方便,针对该问题,我们提供各种非标的232或者485协议转modbus rtu协议的定制. 比如说现场流量计协议,国内有很多厂家,各个厂家早期有多种不同的协议版本.天信,蓝天,中环天仪等流量计 协议转modbus. 电表协议,也有厂家自定义协议.威胜电表协议,美格电表协议转modbus 等等其他协议,…
最近把玩了一下485,期间也接触了dmx512通信协议,该协议主要用于各种舞台灯光的控制当中,进而实现各种光效以及色彩变化.根据标准的512协议,其物理连接与传统上的RS485是完全一致的,并没有什么差别,差别只是在协议上的不同,工业上应用的主要是modbus协议,而这里是用512通信协议.             DMX512数据协议是美国舞台灯光协会(USITT)于1990年发布的一种灯光控制器与灯具设备进行数据传输的标准.它包括电气特性,数据协议,数据格式等方面的内容.512协议规定使用的…
SELECT WE.WIP_ENTITY_NAME,            MSI.SEGMENT1,            MSI.DESCRIPTION,            WDJ.CLASS_CODE,            msi2.segment1,            WDJ.START_QUANTITY,            WDJ.SCHEDULED_START_DATEFROM   WIP.WIP_ENTITIES                            …
SELECT WE.WIP_ENTITY_NAME,           MSI.SEGMENT1,           MSI.DESCRIPTION,           WDJ.CLASS_CODE,           msi2.segment1,           WDJ.START_QUANTITY,           WDJ.SCHEDULED_START_DATE       FROM   WIP.WIP_ENTITIES                           …
SELECT WE.WIP_ENTITY_NAME, MSI.SEGMENT1, MSI.DESCRIPTION, WDJ.CLASS_CODE, WDJ.START_QUANTITY, WDJ.SCHEDULED_START_DATE FROM    wip.WIP_ENTITIES              WE, wip.WIP_DISCRETE_JOBS  WDJ, INV.MTL_SYSTEM_ITEMS_B MSI WHERE WE.WIP_ENTITY_ID = WDJ.WIP_E…
SELECT WE.WIP_ENTITY_NAME, MSI.SEGMENT1, MSI.DESCRIPTION, WDJ.CLASS_CODE, WDJ.START_QUANTITY, WDJ.SCHEDULED_START_DATE FROM    WIP.WIP_ENTITIES WE, WIP.WIP_DISCRETE_JOBS WDJ, INV.MTL_SYSTEM_ITEMS_B MSI WHERE WE.WIP_ENTITY_ID=WDJ.WIP_ENTITY_ID AND MSI…