<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[愷风（Wei）的专栏]]></title><description><![CDATA[使用工具、了解工具、创造工具……]]></description><link>https://blog.youkuaiyun.com/flowingflying</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; flowingflying]]></copyright><item><title><![CDATA[RSA算法和证明]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/102979198</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/102979198</guid><author>flowingflying</author><pubDate>Fri, 08 Nov 2019 20:00:15 +0800</pubDate><description><![CDATA[1977 年由罗纳德·李维斯特（Ron Rivest）、阿迪·萨莫尔（Adi Shamir）和伦纳德·阿德曼 （Leonard Adleman）一起提出，因此名为 RSA 算法。

RSA 算法中公私钥的产生

1
			随机选择两个不相等的质数 p 和 q
			p = 11, q = 29
		2
			计算 p 和 q 的乘积 n（明文小于 n）
			n = p× q = 11 * 29 ...]]></description><category></category></item><item><title><![CDATA[中台的“酒”瓶]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/101695782</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/101695782</guid><author>flowingflying</author><pubDate>Sat, 19 Oct 2019 12:11:32 +0800</pubDate><description><![CDATA[酒瓶和水

中台的概念在今年突然很火，持续地火。产品不蹭一下中台的热点，自己都觉得不好意思。于是乎，看到了高矮肥瘦的各式各样的瓶子，都说是中台的酒瓶，里面有新瓶装旧酒的，更多的是装些果汁，矿泉水，不少的直接装自来水，甚至只装空气。只要不打开看，放在架子上，装扮得五光十色，十分喜庆。

需求是第一导向

中台是个概念，是个名词，尚无权威定义，本文也不打算讨论何为中台。下定义的人多了，但被认可要靠权威...]]></description><category></category></item><item><title><![CDATA[【杂谈】国密2 vs 国密4，关公战秦琼]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/102585528</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/102585528</guid><author>flowingflying</author><pubDate>Wed, 16 Oct 2019 14:57:06 +0800</pubDate><description><![CDATA[项目最近有人反映过来，说那谁谁谁说现在不要用国密2，过时了，要用国密4，反正就是看不上国密2之类云云。

国密1、国密2、国密3、国密4，当中的1，2，3，4并不是安全等级，可能只是个先后顺序。


	国密1是对称加密算法，类比我们常用的AEC。
	
	
	国密2采用的是椭圆曲线，可以用于签名，协商密钥。很多证书的签名就是采用ECDSA，互联网上常用的协商密钥机制位RAS，椭圆算法的ECDH于此类...]]></description><category></category></item><item><title><![CDATA[【杂谈】对代码的一些建议：从单模块到多模块]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/90267818</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/90267818</guid><author>flowingflying</author><pubDate>Thu, 16 May 2019 17:21:08 +0800</pubDate><description><![CDATA[对于产品，一般来讲，从单模块，到负载均衡的多模块，最后到有服务治理的规模化集群（例如微服务），逐步发展和演进。本文并不打算涉及框架或者架构，也不讲什么大道理，仅从代码编写的角度，看看开发人员需要注意什么。

单模块开发的一些注意事项

单模块并不是指单体方式，根据功能进行模块划分，每个模块在生产环境中是单模块运行（主备方式）。单模块阶段开发人员仍是有要求，在我的实践中，从code review看，...]]></description><category></category></item><item><title><![CDATA[【杂谈】学习一直在路上]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/89435661</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/89435661</guid><author>flowingflying</author><pubDate>Sun, 21 Apr 2019 17:17:23 +0800</pubDate><description><![CDATA[博客已经有一段时间没有更新。江湖依旧在，心态有些懈怠，需要收拾心情，我要好好看风景。

工作近来相对轻松，也就有了更多学习的时间。虽然博客停更了一段时间，但是在我自己的mediawiki上仍在耕耘，只是大多是付费课程的笔记，放在网上就不厚道，不亦乐乎之后，博客也就暂时放下。

推荐一下极客时间，都是一些资深的大牛，讲的东西系统、清晰，很多前沿技术，发展很快，版本迭代快，没有什么经典书籍，需要频繁在...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一四二）Spring security准备（3）初窥]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/82865058</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/82865058</guid><author>flowingflying</author><pubDate>Thu, 27 Sep 2018 11:45:34 +0800</pubDate><description><![CDATA[了解Spring Security的基本知识

完全J2EE的web container也能提供完整的安全框架，但tomcat不是。Spring Security可以使用JDBC，或者我们的服务或仓库来认证用户，也提供了内置的对微软Active Derectory，Jasig的CAS（Central Authentication Service），JAAS（Java Authentication ...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一四一）Spring security准备（2）授权]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/82865026</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/82865026</guid><author>flowingflying</author><pubDate>Thu, 27 Sep 2018 11:44:15 +0800</pubDate><description><![CDATA[访问的范围和权限属于授权。

Principals和Identities

就Java而言，很方便利用java.security.Principal。Principal至少会包含已被认证的用户identity，例如用户名，还可能有其他信息。此外还可以保护用户的授权信息，这些信息的表述应采用常量，例如枚举或者有限的字符串，否者过多的授权会对内存有影响，进而影响性能。

Roles，Groups，Ac...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一四十）Spring security准备（1）认证]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/82864932</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/82864932</guid><author>flowingflying</author><pubDate>Thu, 27 Sep 2018 11:39:54 +0800</pubDate><description><![CDATA[匿名认证

匿名认证有多种方式：

不是通过你的ID进行认证，例如通过HTTP的session ID，实际是认证你曾经访问。
	作为其他认证缺失的情况：，例如可以匿名登录论坛进行浏览。当让如果要做更多的事情，通常需要进行身份认证。
密码认证

密码认证古来有之。有密码和反密码，例如空降兵密码为flash，地面部队为thunder，避免抢先问密码，导致密码泄漏。这有点类似https在使用前，用户先检...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三九）篇外之数据库的ACID和JPA（3）隔离性]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/82864508</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/82864508</guid><author>flowingflying</author><pubDate>Thu, 27 Sep 2018 11:24:56 +0800</pubDate><description><![CDATA[SQL中的Isolation

实验SQL语句案例：


-- SELECT @@session.tx_isolation; 查看当前的isolation
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-- SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- SE...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三八）篇外之数据库的ACID和JPA（2）JPA]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/82864413</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/82864413</guid><author>flowingflying</author><pubDate>Thu, 27 Sep 2018 11:15:07 +0800</pubDate><description><![CDATA[在测试中，我们发现在一个JPA事务中：

Spring Data的写SQL是在最后commit前发出，这最大程度地缩短了写操作和commit之间的时间。
	对相同的ID的读，JPA只从数据库中读取一次。
	从数据库中获取entity，修改entity的数据，即使最后没有执行save，在commit之前，发送update。
下面是其中一个测试小例子：


@Transactional
public ...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三七）篇外之数据库的ACID和JPA（1）原子性]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/82863712</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/82863712</guid><author>flowingflying</author><pubDate>Thu, 27 Sep 2018 11:08:14 +0800</pubDate><description><![CDATA[ACID大家都听过，看似也了解，但是在实际的项目中，发现不是所有人都正确理解。所以想谈一下当中容易忽略或者错误理解的地方。现在的开发语言和开发工具都很丰富，如果这要一一了解，也真是耗不起，但是有些是工具，知道怎么用就行，有些是基础知识，需要掌握。ACID就是基础知识，只有真正了解，才能在代码中进行合适的选择，特别是在异常处理和并发处理。

在这个小系列中，基于下面的表格


CREATE TABL...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三六）映射（12）还谈FetchType.LAZY]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/82020781</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/82020781</guid><author>flowingflying</author><pubDate>Fri, 24 Aug 2018 16:23:03 +0800</pubDate><description><![CDATA[说明

在前面的学习中（见Java for Web学习笔记（一二七）映射（3）OneToOne），加上fetch = FetchType.LAZY的属性是集合或者Map。反映在SQL中，就是读取其他表格的信息（无论是通过join还是什么）。例如前面学习的@OneToMany、@ElementCollection。就单个表格而言，一次读取所有的列的数据，实际上在MySQL中，即使我们只是SELECT...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三五）映射（11）代码触发器]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81706922</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81706922</guid><author>flowingflying</author><pubDate>Wed, 15 Aug 2018 16:49:15 +0800</pubDate><description><![CDATA[说明

数据库是有触发器Trigger。但我们希望业务逻辑能从底层的具体数据存储抽象出来（有需要时可以更好存储机制），也就是要在应用中编写trigger，而不是依赖底层数据库来实现。

Entity内部触发器

我们随便挑选以前的某个entity，在里面加入触发器。


@Entity
public class Person {
    ... ...
    // 【触发器说明】
    //1...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三四）映射（10）@SecondaryTables]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81540503</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81540503</guid><author>flowingflying</author><pubDate>Thu, 09 Aug 2018 17:12:10 +0800</pubDate><description><![CDATA[说明

@SecondaryTables在实际中很少使用。相当于是将一个entity的基础属性（不是collection）拆分到不同表中存放。这在表格设计中是不合理的。常用于遗留数据库，以及表格列太多查出数据库供应商的限制。

和OneToOne不同，没有使用外键进行表格关联，而是两个表的主键代表同样含义。

小例子数据库表格


CREATE TABLE Employee (
  Employe...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三三）映射（9）中文输入]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81509771</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81509771</guid><author>flowingflying</author><pubDate>Wed, 08 Aug 2018 15:55:50 +0800</pubDate><description><![CDATA[这个小例子中，我们已经：

整个项目在eclipse中指定采用UTF-8
	在web.xml中对jsp的配置已经设置了&amp;lt;page-encoding&amp;gt;UTF-8&amp;lt;/page-encoding&amp;gt;
	在jsp文件中，已经给出了&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&amp;gt;
但是我们...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三二）映射（8）@ElementCollection]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81509438</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81509438</guid><author>flowingflying</author><pubDate>Wed, 08 Aug 2018 15:52:33 +0800</pubDate><description><![CDATA[说明

在前面我们学习了OneToOne、OneToMany、ManyToOne，将数据库中不同表格的关联转换为spring中不同entity的关联。但是在不少场景中，我们希望在一个entity的视图中同查看到这几个表的信息，而无需通过entity之间的关联。

在这个小例子中，我们还将学习和讨论到：

表格有Employee，Employee_Address中存放员工多个地址，Employee_...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三一）映射（7）entity的抽象和继承]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81391496</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81391496</guid><author>flowingflying</author><pubDate>Fri, 03 Aug 2018 17:25:11 +0800</pubDate><description><![CDATA[Mapped superclass

我们通过@javax.persistence.MappedSuperclass定义一个Mapped superclass，定义表格的通用属性，提供给Entity继承。它和Entity的属性映射是一样，但需注意：

entity可以重写@Column。类标记为 @AttributeOverride或@AttributeOverrides，在里面给出需要overr...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一三十）映射（6）@Version]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81358248</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81358248</guid><author>flowingflying</author><pubDate>Thu, 02 Aug 2018 14:38:05 +0800</pubDate><description><![CDATA[@Version

JPA可以将entity的某个属性（只允许一个）标记为@javax.persistence.Version。这个属性可以是整形和java.sql.Timestamp。

如果是整形，Version从0开始，每次update，每次自动+1；如果是Timestamp，就是每次更新为now()。如果数据没有实际变化，version不会变更。

小例子代码


CREATE TABLE...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一二九）映射（5）ManyToMany]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81327886</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81327886</guid><author>flowingflying</author><pubDate>Wed, 01 Aug 2018 11:37:21 +0800</pubDate><description><![CDATA[ManyToMany需要中间表格。



小例子

一本书可以有N个作者，一个作者可以有N本书。


CREATE TABLE `Book` (
  `Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `BookName` varchar(50) COLLATE utf8_unicode_ci NOT NULL
) ENG...]]></description><category></category></item><item><title><![CDATA[Java for Web学习笔记（一二八）映射（4）OneToMany和ManyToOne]]></title><link>https://blog.youkuaiyun.com/flowingflying/article/details/81302427</link><guid>https://blog.youkuaiyun.com/flowingflying/article/details/81302427</guid><author>flowingflying</author><pubDate>Tue, 31 Jul 2018 14:17:54 +0800</pubDate><description><![CDATA[OneToMany和ManyToOne是更为常见的例子。如果A和B的关系是OneToMany，则B和A的关系就是ManyToOne。



小例子

我们继续前面书的例子，增加书评表。一本书可以有多条书评，一条书评对应一本书。


CREATE TABLE Book (
  Id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Book...]]></description><category></category></item></channel></rss>