是五月呀!


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于
是五月呀!

IDEA插件开发(七)mybatis插件之mapper解析与converter

发表于 2018-10-18 | 分类于 idea , java | 字数统计: 4,121(字) | 阅读时长: 18(分)

从今天开始一步一步练习mybatis插件开发。

第一步是解析mapper文件,可以实现xml中按照id属性查找resultMap或者sql片段,鼠标点击跳转。

Dom操作Xml的基本只是可以参考之前的文章:IDEA插件开发(二)DOM操作XML文件

本文直接以mybatis的mapper文件解析为例,说明Dom操作的常用写法。

阅读全文 »
是五月呀!

对称加密与AES算法

发表于 2018-10-16 | 分类于 算法 , 密码学 | 字数统计: 1,963(字) | 阅读时长: 9(分)

对称加密

加密和解密使用同一个密钥的方式成为共享密钥加密(Common key crypto system),也被成为对称密钥加密。
以共享的方式加密时必须将密钥也发送给对方。

阅读全文 »
是五月呀!

非对称加密与RSA算法

发表于 2018-10-16 | 分类于 算法 , 密码学 | 字数统计: 1,896(字) | 阅读时长: 7(分)

非对称加密

公开密钥加密使用一对非对称的密钥。一把叫做 私有密钥(private key),另一把叫做 公开密钥(public key)。
顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。
使用公开密钥机密方式,发送密文的一方使用对方的公开密钥进行机密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。

阅读全文 »
是五月呀!

IDEA插件开发(六)依赖Dependencies

发表于 2018-10-12 | 分类于 idea , java | 字数统计: 280(字) | 阅读时长: 1(分)

你的插件可能会依赖其他插件,内置的、第三方的或者你自己的。为了引入这些依赖,需要执行如下步骤:

  • 如果插件时内置的,那么启动沙箱环境,在里面安装插件。
  • 在 IntelliJ Platform SDK 中添加插件的jar包。打开 Project Structure 对话框,选择使用的SDK,点击加号选择要添加的插件jar包。如果是内置插件,那么插件jar包在主安装目录下的plugins/<pluginname>或者plugins/<pluginname>/lib目录下。如果是非内置插件,那么插件jar包在Sandbox Home指定的目录下的config/plugins/<pluginname>或者config/plugins/<pluginname>/lib内。
  • 添加<depends>标签到plugin.xml中,将插件的ID作为标签值。如果不知道插件的ID,可以到指定插件的plugin.xml中查看。
阅读全文 »
是五月呀!

IDEA插件开发(五)Service

发表于 2018-10-12 | 分类于 idea , java | 字数统计: 159(字) | 阅读时长: 1(分)

IDEA平台提供service的概念。一个Service组件是单例的,使用ServiceManager的getService方法获取。
Service可以是一个类,也可以是一个接口,但如果是接口,必须有实现类。

阅读全文 »
是五月呀!

IDEA插件开发(四)配置持久化

发表于 2018-10-11 | 分类于 idea , java | 字数统计: 955(字) | 阅读时长: 5(分)

很多插件都需要提供用户配置参数的入口,这里以free-mybatis-plugin插件为例,我们想要用户配置方法匹配模版,例如dao层中insert,add等关键字开头的方法在mapper中生成insert语句。

阅读全文 »
是五月呀!

IDEA插件开发(三)扩展点

发表于 2018-10-11 | 分类于 idea , java | 字数统计: 363(字) | 阅读时长: 2(分)

IDEA提供扩展点的概念,这样我们可以跟其他插件或者IDEA本身交互,例如对IDEA功能进行扩展。

阅读全文 »
是五月呀!

IDEA插件开发(二)DOM操作XML文件

发表于 2018-10-10 | 分类于 idea , java | 字数统计: 412(字) | 阅读时长: 2(分)

传统XML读写操作的弊端

假如我们有一个xml文件如下:

1
2
3
4
5
6
<root>
<foo>
<bar>42</bar>
<bar>239</bar>
</foo>
</root>

我们想读取第二个bar元素的值239,我们可能会直接这样写:

1
2
file.getDocument().getRootTag().findFirstSubTag("foo").
findSubTags("bar")[1].getValue().getTrimmedText()

但这样是很危险的,因为任何一个元素都可能产生空指针。所以需要这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
XmlFile file = ...;
final XmlDocument document = file.getDocument();
if (document != null) {
final XmlTag rootTag = document.getRootTag();
if (rootTag != null) {
final XmlTag foo = rootTag.findFirstSubTag("foo");
if (foo != null) {
final XmlTag[] bars = foo.findSubTags("bar");
if (bars.length > 1) {
String s = bars[1].getValue().getTrimmedText();
// do something
}
}
}
}

这样的写法看起来很臃肿,有一种更好的方案是使用DOM。

阅读全文 »
是五月呀!

IDEA插件开发(一)环境搭建与第一个工程

发表于 2018-10-09 | 分类于 idea , java | 字数统计: 950(字) | 阅读时长: 4(分)

环境搭建

官方推荐使用社区版IDEA开发插件,因为方便调试核心代码。

You may use IntelliJ IDEA Ultimate as an alternative, but debugging the core code will only work with the Community Edition.

我下载的版本是

1
2
IntelliJ IDEA 2018.2.4 (Community Edition)
Build #IC-182.4505.22, built on September 18, 2018

那么在IntelliJ IDEA Community Edition 下载对应版本的源码,解压后为intellij-community-182.4505。

阅读全文 »
是五月呀!

lambda表达式

发表于 2018-09-29 | 分类于 java | 字数统计: 4,337(字) | 阅读时长: 17(分)

什么是λ表达式

λ表达式本质上是一个匿名方法。让我们来看下面这个例子:

1
2
3
public int add(int x, int y) {
return x + y;
}

转成λ表达式后是这个样子:

1
(int x, int y) -> x + y;

参数类型也可以省略,Java编译器会根据上下文推断出来:

1
2
//返回两数之和
(x, y) -> x + y;

或者

1
2
//显式指明返回值
(x, y) -> { return x + y; }

可见λ表达式有三部分组成:参数列表,箭头(->),以及一个表达式或语句块。
下面这个例子里的λ表达式没有参数,也没有返回值(相当于一个方法接受0个参数,返回void,其实就是Runnable里run方法的一个实现):

1
() -> { System.out.println("Hello Lambda!"); }

如果只有一个参数且可以被Java推断出类型,那么参数列表的括号也可以省略:

1
c -> { return c.size(); }

阅读全文 »
1…345…7
五月y

五月y

Hello 五月y!

67 日志
24 分类
20 标签
RSS
GitHub weibo zhihu
© 2017 - 2018 五月y
由 Hexo 强力驱动
主题 - NexT.Mist