快速认识SSH认证原理
一、什么是SSH?
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。
SSH 主要由三部分组成:
传输层协议 [SSH-TRANS]
提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。
用户认证协议 [SSH-USERAUTH]
用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。
连接协议 [SSH-CONNECT]
将多个加密隧道分成逻辑通道。它运行在用户认证协议上 ...
Xmind破解教程
XMind是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生。作为一款有效提升工作和生活效率的生产力工具,受到全球百千万用户的青睐。受到全球百千万用户的青睐。本文尝试利用逆向工程破解Xmind的授权,仅供参考。
1. 破解思路
XMind基于Electron开发,在XMind安装目录下的Resource文件夹中包含了一个文件app.asar,这个文件是XMind源代码文件的一个压缩包。我们只需要将其解压,修改其中的源码再重新打包即可破解XMind。
2. 破解流程
首先需要安装nodejs,网上可以找到安装教程,这里跳过。
然后使用npm安装asar。
npm install asar -g
然后在XMind的安装目录下找到Resources文件夹,文件夹下有一个app.asar文件和一个app.asar.unpacked文件夹,将它们拷贝出来。
app.asar文件就是源码包,可以使用asar工具将源码解包出来。
asar extract app.asar directory/
在解压出的源码文件中,打开common.js文件
$ find ./ -name common. ...
JavaEE「九」Spring MVC
9.1 什么是Spring MVC?
SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架
9.2 SpringMVC快速入门
9.2.1导入开发包
如果用Maven的,那导入Maven依赖即可
前6个是Spring的核心功能包【IOC】,第7个是关于web的包,第8个是SpringMVC包
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
commons-logging.jar
org.springframework.web-3.0.5.RELEASE.jar
org.spring ...
JavaEE「八」Mybatis动态sql
我们当时刚开始做的时候,是需要在Controller中判断SQL是否已经有条件了,因为SQL语句需要拼接起来....这样干的话,就非常容易出错的。
如下的代码,如果有多个条件的话,那么拼接起来很容易出错!
public String listUI() { //查询语句 String hql = "FROM Info i "; List<Object> objectList = new ArrayList<>(); //根据info是否为null来判断是否是条件查询。如果info为空,那么是查询所有。 if (info != null) { if (StringUtils.isNotBlank(info.getTitle())) { hql += "where i.title like ?"; objectList.add("%" + info.getTi ...
JavaEE「七」Mybatis映射器
我们在上面中已经简单知道了Mybatis是怎么使用的以及工作流程了,这次我们使用Mybatis来完成CRUD的操作,再次巩固Mybatis的开发步骤以及一些细节
7.1 增加学生
配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 加载类路径下的属性文件 --> <properties resource="db.properties"/> <!-- 设置一个默认的连接环境信息 --> <environments default="mysql_developer"> < ...
JavaEE「六」Mybatis快速入门
6.1 Mybatis简介
My Batis 的官方定义为: MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyB atis 避免了几乎所有的JDBC 代码和于动设置参数以及获取结果集。MyBatis 可以对配置和原生Map 使用简单的XML 或注解, 将接口和Java 的POJO ( Plain Old Java O均ect,普通的Java对象)映射成数据库中的记录。从这个官方定义可以看出,MyBatis 是基于一种SQL 到POJO 的模型,它需要我们提供SQL 、映射关系( XML 或者注解, 目前以XML 为主)和POJO 。但是对于SQL 和POJO 的映射关系, 它提供了自动映射和驼峰映射等, 使开发者的开发工作大大减少:由于没有屏蔽SQL ,这对于追求高响应和性能的互联网系统是十分重要的, 因此我们可以尽可能地通过SQL 去优化性能,也可以做少量的改变以适应灵活多变的互联网应用。与此同时, 它还能支持动态SQL ,以适应需求的变化。这样一个灵动的、高性能的持久层框架就呈现在我们面前,这些很符合当前互联网的需要。
My Batis 的配置文件包 ...
JavaEE「五」Spring事务管理
对于JDBC而言,我们肯定不会陌生,我们在初学的时候肯定写过非常非常多的JDBC模板代码!
5.1 回顾对模版代码优化过程
我们来回忆一下我们怎么对模板代码进行优化的!
首先来看一下我们原生的JDBC:需要手动去数据库的驱动从而拿到对应的连接..
try { String sql = "insert into t_dept(deptName) values('test');"; Connection con = null; Statement stmt = null; Class.forName("com.mysql.jdbc.Driver"); // 连接对象 con = DriverManager.getConnection("jdbc:mysql:///hib_demo", "root", "root"); // 执行命令对象 stmt = con.createStatement(); // 执行 stmt.execute(sql ...
JavaEE「四」Spring AOP
4.1 代理模式
代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。
为什么要用代理模式?
中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。
开闭原则:回顾上一章说的设计原则,代理模式遵循的是开闭原则的设计思想。代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修改委托类,符合代码设计的开闭原则。代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后对返回结果的处理等。代理类本身并不真正实现服务,而是同过调用委托类的相关方法,来提供特定的服务。真正的业务功能还是由委托类来实现,但是可以在业务功能执行的前后加入一些公共的服务。例如我们想给项目加入缓存、日志这些功能,我们就可以使用代理类来完成,而没必要打开已经封装好的委托类。
有哪几种代理模式?
我们有多种不同的方式来实现代理。如果按照代理创建的 ...
JavaEE「三」Spring IOC
3.1 设计原则与IOC、DI
面向对象的程序设计中有六大基本原则:
单一职责原则——SRP
一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。
开闭原则——OCP
软件实体应当对扩展开放,对修改关闭。
里式替换原则——LSP
所有引用基类的地方必须能透明地使用其子类的对象。
依赖倒置原则——DIP
高层模块不应该依赖底层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
接口隔离原则——ISP
客户端不应该依赖那些它不需要的接口。
迪米特原则——LOD
一个对象应该对其他对象有最少的了解
合成复用原则——CARP
优先使用对象组合,而不是继承来达到复用的目的。
Spring的IOC(控制反转)就是遵循了依赖倒置原则的设计思想。
2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是“哪些方面的控制被反转了呢?”,经过详细地分析和论证后,他得出了答案:“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入(Dep ...
JavaEE「二」Spring中的Bean管理
2.1 BeanFactory接口
Spring 的核心功能就是实现对 Bean 的管理,比如 Bean 的注册、注入、依赖等。而Spring容器提供了依赖注入这个特征,以实现 Spring 容器对 Bean的管理,而且使用 IoC实现了对Bean的配置与实际应用代码的隔离。其中,Core Container模块的核心概念就是BeanFactory,它是所有Spring应用的核心。因为Spring的核心模型就是Bean模型,所以需要在管理Spring Bean的基础上保证Spring应用的运行。
BeanFactory接口是Bean容器设计中基本的职责定义接口,定义了按照名称、参数、类型等几个维度获取、判断Bean实例的职能。
HierarchicalBeanFactory只是对BeanFactory进行了扩展,定义了父容器(Parent BeanFactory)及判断当前Bean的名称是否在当前Bean工厂中等。
ConfigurableBeanFactory 提供了设置父容器接口、指定类加载器的职能,并且为当前容器工厂设计Bean的定制型的解析处理器、类型处理器等,主要目的是实现对 ...