微信公众号
相信大家对微信公众号都不陌生,本文就从开发者角度,简单说说目前微信公众号的状况。
Simplicity is prerequisite for reliability.
MyBatis 有一个非常棒的工具叫 MyBatis Generator,是一个代码生成器。能根据数据库里面的表生成:
现在 Java Web 开发中比较热门的框架组合就是 SSM(Spring + SpringMVC + MyBatis)了。使用框架的好处不言而喻,节约了我们的开发时间,框架强制使用公共的约定,团队配合更密切。
使用框架便利的同时,需要学习其中的思想。对提高我们的编程思想很有帮助。可以先实践,再思想,实践出真知!
先解释一些名词和基本概念,后续代码演示
原子是世界上的最小单位,具有不可分割性。
通俗的解释:
CUP 是一条一条指令执行,假设“读”、“写”是两条指令,如果在多线程并发中使用“读写”,那么可能会出现问题。
原子性则是一条指令完成“读写”操作。
Spring 框架非常好用,但是会有大量的 XML 配置文件以及复杂的 Bean 依赖关系。而 Spring Boot 就是为此诞生的!
Spring Boot 则采用了“约定优先配置” (convention over configuration)的思想来摆脱 Spring 框架中各类繁复纷杂的配置。
Spring Boot 使开发独立的,产品级别的基于 Spring 的应用变得非常简单,你只需 “just run” 。 我们为 Spring 平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数 Spring Boot 应用需要很少的 Spring 配置。
- 可以把“加密”和“解密”理解为某种【互逆的】数学运算。就好比“加法和减法”互为逆运算、“乘法和除法”互为逆运算。
- “加密”的过程,就是把“明文”变成“密文”的过程;反之,“解密”的过程,就是把“密文”变为“明文”。在这两个过程中,都需要一个关键的东东——叫做“密钥”——来参与数学运算
对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。实务上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系
比如带密码 zip 的压缩包,每次都是同一个密码,加密和解密都是用一个秘密,那么这样的情况可以理解成对称加密。
常见的对称加密算法有 DES、3DES、AES、Blowfish、IDEA、RC5、RC6、Base64
对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。
1 | <!--加密解密 jar--> |
1 | package com.doity.encodeanddecode; |
1 | 原始字符串:Hi,I'm ARNO |
公开密钥加密(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。
RSA、ElGamal、背包算法、Rabin(RSA的特例)、迪菲-赫尔曼密钥交换协议中的公钥加密算法、椭圆曲线加密算法(英语:Elliptic Curve Cryptography, ECC)。
与对称密钥加密相比,优点在于无需共享的通用密钥,解密的私钥不发往任何用户。即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,所截获的公钥是没有任何用处的。
加密时用一个密钥、解密时用另外一个密钥。
1 | package com.doity.encodeanddecode; |
1 | 创建共钥成功! |
密码分析:接货密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程。
主动攻击:攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。(对密文具有破坏作用)
被动攻击:对一个保密系统采取截获密文并对其进行分析和攻击(对密文没有破坏作用)
密码体制:由明文空间、密文空间、密钥空间、加密算法和解密算法 5 部分构成。
密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全的服务。
密码系统:指用于加密、解密的系统
柯克霍夫原则:数据的安全基础密钥而不是算法的保密。及系统的安全取决于密钥,对密钥保密,对算法公开。——现代密码学设计的基本原则。