上周体验了 Mac 上排名第一的虚拟机软件 Parallels Desktop + 190x 的 Win 10,主观感觉能达到独立运行流畅度的 90%。Mac 250GB 的 SSD 显然不舍得存储一个虚拟机文件。于是展开了一场血雨腥风的迁移活动…
继续阅读“一次 Ubuntu 系统迁移的故障分析”
OAuth2.0 开放平台认证授权开发套件 Authmore-Framework 1.0 发布
简介 | Intro
基于 OAuth2.0 协议的开放平台认证授权开发套件, 包含授权服务和开放平台 Docker 镜像,基于 Spring Boot Starter 的资源服务工具包和客户端(第三方应用)工具包
优点 | Advantages
- 简洁:专注核心功能 —— 社会化网络下的跨应用认证授权,基于 Spring Boot Starter 的工具包,为开发者提供最简洁的配置。
- 快速:Authmore 提供了客户端和资源服务端 SDK 及认证中心 Docker 镜像,一键部署,开箱即用。
- 高效:基于 React.js 和 Ant Design 的认证中心管理系统,帮助开发者随时随地地管理应用,使数据操作透明化。
使用 Mitmdump 与 Python 脚本进行密码嗅探
很久没有写文章了,一是没空,二是几乎忘了还有这回事。这篇应该是年前的最后一发吧!那么今天就来聊一聊我最近关于网络抓包的一些实践(其实我对网络安全领域知之甚少)。当然,大家最熟知的工具可能是 Wireshark,它的功能十分强大。不过它大概不支持热插拔脚本,也就没办法实现完全自有掌控的抓包。于是不就之后,Mitmproxy 这货进入了我的视线,用它可以方便的添加自定义抓取逻辑的 Python 脚本,可以说非常容易扩展,完美的解决了我的需求。这也是写完 Keykee 之后,再一次将这一傻式编程语言应用到生产实践中。
突然想起了自己入行这两年的一个感悟:
程序员有时候应该感谢给自己提需求的人。
keykee 2.0 发布, 一个记录你键盘使用情况的软件
这是一个记录键盘的使用情况的软件,可以精确统计每个按键,按键24小时统计,按键频次趋势分析,记录你的每一次敲击。软件使用 Python 编写,客户端使用了 Ant Design 。
仓库地址: https://gitee.com/zbl1996/keykee
继续阅读“keykee 2.0 发布, 一个记录你键盘使用情况的软件”
FTP 的主动模式和被动模式
FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,它使用两个端口,一个 ‘数据’ 端口和一个 ‘命令’ 端口(也称为控制端口)。 通常情况下,端口 21 用作命令端口,端口 20 用作数据端口。 然而,我偶然间发现,数据端口有时候并不是在端口 20 上时,这就要谈到 FTP 的被动模式了。
继续阅读“FTP 的主动模式和被动模式”
软件版本代号中英文缩写(GA/RC/RELEASE等)的含义
平时我们见到的软件,特别是面向开发者的软件或者开源框架等,都会以一个英文缩写来标识当前版本的级别,所以我们应当根据使用软件的具体需求场景来对这些版本进行选择。
继续阅读“软件版本代号中英文缩写(GA/RC/RELEASE等)的含义”
设计模式学习笔记(19)访问者
本文实例代码:https://github.com/JamesZBL/java_design_patterns
在访问者(Visitor)模式中,客户通过一个访问者类,将对于一个数据结构的不同元素的访问方法封装起来,这样,对一类元素的访问方法可以通过在访问者中修改逻辑而实现,这种类型的设计模式属于行为型模式。
如果对一个数据结构的访问欲获得的结果,需要该结构内部属性经过一系列计算才能得到,那么一般情况下,我们会将计算过程写到数据结构中,用一个统一的接口约束数据结构的计算方法,保证都能获得一致的结构。但是如果有新的计算功能需求,就要对数据结构类进行修改,显然,这不符合开闭原则。所以我们可以将对不同数据结构中的属性的计算方法抽象到一个访问者类中。这样,当需要修改算法的时候只需修改访问者中的具体逻辑就可以了,一定程度上将数据结构和算法分离开来了。
继续阅读“设计模式学习笔记(19)访问者”
设计模式学习笔记(18)模板方法
本文实例代码:https://github.com/JamesZBL/java_design_patterns
模板方法(Template Method) 模式是行为型模式的一种,通常的实现途径是定义一个模板抽象类,将需要具体实现的方法定义为抽象方法,由模板类的子类来重载实现。
所谓模板,就是事先定义好的,为了实现某个功能而专门定义的框架,它对其中的每个组成部分进行了规范。现实生活中,有许多和模板方法相似的例子,比如到银行办理业务要填写各种表格,表格的内容都是事先定义好的,客户只需按要求如实填写,经过工作人员的处理后就能办理相关的业务。这里的表格就是一种模板,需要用户填写的内容就是模板中的方法,业务的实现由用户填写的内容决定。
使用模板的好处是可以规范功能实现的整体模式,使功能的进一步实现变得很容易,所有模板的实现类都会按照模板的约束来实现具体的功能。
继续阅读“设计模式学习笔记(18)模板方法”
设计模式学习笔记(17)策略
本文实例代码:https://github.com/JamesZBL/java_design_patterns
在策略(Strategy Pattern)模式中,一个类的行为或某个接口的实现方法可以在运行时进行更换,通常这种类型的设计模式属于行为型模式。
在策略模式中,我们通常的做法是创建一个对象来封装各种策略,创建一个上下文对象,策略对象作为上下文对象的子对象被调用,通过策略对象的改变就可以实现上下文对象在不同策略下的具体功能。现实生活中就有策略模式的例子,比如用不同的方式出行,乘坐不同的交通工具就是应用了不同的策略。
继续阅读“设计模式学习笔记(17)策略”
设计模式学习笔记(16)状态
本文实例代码:https://github.com/JamesZBL/java_design_patterns
状态模式(State)最明显的特点是可以使类的行为根据不同的状态变化而变化,很明显,这是一种行为型模式。通常用一个上下文对象将某个类的对象进行一层包裹,将该类在不同状态下的具体行为分别交给不同状态的上下文类来实现。该模式的完美的将类的行为和它的状态进行了解耦,如果某个类增添一种状态,只需要增加新的状态类就可以了。
继续阅读“设计模式学习笔记(16)状态”