相对于 Hello World 版的插件, 我们可以学习一个 API 的用法. 在接下来的博文中将创建一个翻译插件, 相对于 Hello World 版的插件,我们可以学习一个 API 的用法. 在写之前, 先补充一下上一篇博文中存在的问题. 使用 Gradle 开发 Intellij IDEA Plugin 的问题当我们使用 Intellij 自带的 Intellij Platform Plugin 创建插件项目后, 我们可以通过 Intellij 以图形化界面创建 Action, Module Component 等,就像这样: OK 之后, 就会自动创建一个 GenerateActionByGui 继承 AnAction 的类, 并且在 plugin.xml 中自动写入插件的配置: 12345<actions> <action id="plugin.demo" class="com.code.demo.GenerateActionByGui" text="demo" descripti ...
IDEA Plugin 开发记录 hello world 篇. 为什么没有 Intellij 插件开发入门, 因为网上已经有很多入门的教程了, 随便一搜, 大部分都是 Hello World 入门教程, 这里再写就没有意义了,接下来的几篇都将围绕自己开发的几个插件, 将用到的没有用到的都写出来, 一是做一个记录, 二是希望能帮助那些想开发自己的插件的老铁. 前期主要是为插件开发做准备, 搜索了很多 Intellij 插件开发的博文, 如果搜到的不满意, 可以尝试以 “Android Stutio 插件开发” 关键字进行搜索, 毕竟Android Stutio 是根据 Intellij IDEA 进行二次开发的. 这里现将看到的有价值的博文地址分享一些, 谢谢他们的分享. 街头客 - 简书一共 9 篇插件开发的博文, 非常好. 使用 Gradle 开发 Intellij 插件官方使用 Intellij 的 Intellij Platform Plugin 来创建插件项目, 用惯了 Maven, 没用项目管理工具, 感觉一下子回到了解放前, 这里不用 Maven 而用Gradle, ...
AI:人工智能
未读基于 Zookeeper 实现的一个配置中心 现在架构存在的问题 配置分散比如修改日志配置需要修改 xxx-api, xxx-webgis, …, xxx-server. 只有 dev, test, pro本地开发时需要修改 dubbo.server.version, 提交时忘记改回来造成服务调用出错. 配置类太多, 且有重复的配置类, 不好管理 非开发环境下应用配置在 war 包中,关键配置明文显示 修改配置后, 需要重新打包部署 关键配置随时可修改, 一不小心就会造成生产事故 **为了统一管理配置 **.现将配置从 pom 中迁入到 xxx-common-config, 使用 maven filter 实现根据不同环境从 ${env}.yyyyy.properties 获取配置替换 application.properties配置 (@占位符替换)使用 <context:property-placeholder/> 配合 @Value("${}") 实现自动注入配置到配置类.新增 local 环境用于本地开发 但是仍然解 ...
Redis 的几种集成方式 缓存服务组件 依赖于: jedis spring-data-redis spring-session-data-redis redis 集群使用的是 ShardedJedisPool, redis 3.x 后自带集群负载 jar 中重要的类 JedisConnectionFactory用于获取 jedis 实例, 从而操作 redis ShardedJedisPool用于连接 redis 集群 cache 重要的类 RedisDataSource使用 JedisConnectionFactory 从 ShardedJedisPool 连接池中获取 jedis RedisClientTemplate依赖 RedisDataSource 操作 redis 的具体模板方法 RedisCacheServiceImpl对 RedisClientTemplate 再次封装 JedisPool(非切片链接池) 和 ShardedJedisPool(切片链接池) 有什么区别JedisPool 连一台 Redis, ShardedJedisPool ...
RESTEasy RESTEasy 是 JBoss 的一个开源项目,提供各种框架帮助你构建 RESTful Web Services 和 RESTful Java 应用程序。它是 JAX-RS 规范的一个完整实现并通过 JCP 认证。作为一个 JBOSS 的项目,它当然能和 JBOSS 应用服务器很好地集成在一起。但是,它也能在任何运行 JDK5 或以上版本的 Servlet 容器中运行。RESTEasy 还提供一个 RESTEasy JAX-RS 客户端调用框架。能够很方便与 EJB、Seam、Guice、Spring 和 Spring MVC 集成使用。支持在客户端与服务器端自动实现 GZIP 解压缩。 RESTEasy 项目是 JAX-RS 的一个实现,集成的一些亮点: 不需要配置文件,只要把 JARs 文件放到类路径里面,添加 @Path 标注就可以了。 完全的把 RESTEeasy 配置作为 Seam 组件来看待。 HTTP 请求由 Seam 来提供,不需要一个额外的 Servlet。 Resources 和 providers 可以作为 Seam com ...
logback 使用,自定义输出格式说到 log4j,基本人人都知道,但是 logback,估计用的人不多,其实这两个都是 sl4j 的实现,而且是一个作者写的。 logback 比 log4j 更加好用,而且效率更高。 如何配置 logback。 12345<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version></dependency> 配置文件:logback.xml 123456789101112131415161718192021222324252627282930313233343536373839<?xml version="1.0" encoding="UTF-8" ?><configuration scan="tr ...
1. 介绍scan命令的作用和keys *的作用类似,主要用于查找 redis 中的键,但是在正式的生产环境中一般不会直接使用keys *这个命令,因为他会返回所有的键,如果键的数量很多会导致查询时间很长,进而导致服务器阻塞,所以需要 scan 来进行更细致的查找 scan总共有这几种命令:scan、sscan、hscan、zscan,分别用于迭代数据库中的:数据库中所有键、集合键、哈希键、有序集合键,命令具体结构如下: 1234scan cursor [MATCH pattern] [COUNT count] [TYPE type]sscan key cursor [MATCH pattern] [COUNT count]hscan key cursor [MATCH pattern] [COUNT count]zscan key cursor [MATCH pattern] [COUNT count] 2. scanscan cursor [MATCH pattern] [COUNT count] [TYPE type],cursor 表示游标,指查询开始的位置,coun ...
每天一个 Linux 命令scp 加密的方式在本地主机和远程主机之间复制文件 用于在 Linux 下进行远程拷贝文件的命令, 和它类似的命令有 cp, 不过 cp 只是在本机进行拷贝不能跨服务器, 而且 scp 传输是加密的. 可能会稍微影响一下速度.当你服务器硬盘变为只读 read only system 时, 用 scp 可以帮你把文件移出来. 另外, scp 还非常不占资源, 不会提高多少系统负荷, 在这一点上, rsync就远远不及它了. 虽然 rsync 比 scp 会快一点, 但当小文件众多的情况下, rsync 会导致硬盘 I/O 非常高, 而 scp 基本不影响系统正常使用. 12345678910111213-1: 使用 ssh 协议版本 1;-2: 使用 ssh 协议版本 2;-4: 使用 ipv4;-6: 使用 ipv6;-B: 以批处理模式运行;-C: 使用压缩;-F: 指定 ssh 配置文件;-l: 指定宽带限制;-o: 指定使用的 ssh 选项;-P: 指定远程主机的端口号;-p: 保留文件的最后修改时间, 最后访问时间和权限模式;-q: ...
新时代码农
未读每天一个 Linux 命令less 命令 less 命令 的作用与 more 十分相似, 都可以用来浏览文字档案的内容, 不同的是 less 命令允许用户向前或向后浏览文件, 而 more 命令只能向前浏览. 用less 命令显示文件时, 用 PageUp 键向上翻页, 用 PageDown 键向下翻页. 要退出 less 程序, 应按 Q 键. 12345678-e: 文件内容显示完毕后, 自动退出;-f: 强制显示文件;-g: 不加亮显示搜索到的所有关键词, 仅显示当前显示的关键字, 以提高显示速度;-l: 搜索时忽略大小写的差异;-N: 每一行行首显示行号;-s: 将连续多个空行压缩成一行显示;-S: 在单行显示较长的内容, 而不换行显示;-x< 数字 >: 将 TAB 字符显示为指定个数的空格字符. 抽象工厂模式练习Sunny 软件公司欲推出一款新的手机游戏软件, 该软件能够支持 Symbian、Android 和 Windows Mobile 等多个智能手机操作系统平台, 针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制 (OperationC ...
新时代码农
未读每天一个 Linux 命令more 命令 more 命令是一个基于 vi 编辑器文本过滤器, 它以全屏幕的方式按页显示文本文件的内容, 支持 vi 中的关键字定位操作. 123456按 空格 键: 显示文本的下一屏内容.按 回车 键: 只显示文本的下一行内容./: 接着输入一个模式, 可以在文本中寻找下一个相匹配的模式.按 h 键: 显示帮助屏, 该屏上有相关的帮助信息.按 b 键: 显示上一屏内容.按 q 键: 退出 rnore 命令 1234567-< 数字 >: 指定每屏显示的行数;-d: 显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;-c: 不进行滚屏操作. 每次刷新这个屏幕;-s: 将多个空行压缩成一行显示;-u: 禁止下划线;+< 数字 >: 从指定数字的行开始显示. 1234# 显示文件 file 的内容, 但在显示之前先清屏, 并且在屏幕的最下方显示完核的百分比.more -dc file# 显 ...
每天一个 Linux 命令cat cat 命令连接文件并打印到标准输出设备上, cat 经常用来显示文件的内容, 类似于下的 type 命令. 123456-n 或 -number: 有 1 开始对所有输出的行数编号;-b 或 --number-nonblank: 和 -n 相似, 只不过对于空白行不编号;-s 或 --squeeze-blank: 当遇到有连续两行以上的空白行, 就代换为一行的空白行;-A: 显示不可打印字符, 行尾显示“$”;-e: 等价于"-vE"选项;-t: 等价于"-vT"选项; 123cat file1 # 显示 文件 file1 中的内容cat file1 file2 # 同时显示 file1 和 file2 的内容cat file1 file2 > file # 将文件 file1 和 file2 合并和放入 file 中 回顾 简单工厂模式优点: 将创建和使用分离, 遵循单一原则 引入配置文件, 遵循开闭原则 使用别名代替复杂的类名, 简化代码 缺点: 如果要添加新的产品类时, 必须修改 ...
单一职责原则 (Single Responsibility Principle, SRP)定义: 一个类只负责一个功能领域中相应职责 (对一个类而言, 应该只有一个引起它变化的原因) 作用:实现高内聚, 低耦合 案例:客户信息图形统计模块 违背单一职责原则如果修改数据库连接方式或者修改图标显示方式都需要修改这个类;不能重用数据库连接的代码 重构 代码实现: 12345678910111213141516171819202122232425class CustomerDataChart { private CustomerDao customerDao; public void createChart(){ System.out.println("创建图表"); } public void displayChart(){ System.out.println("显示图表"); }}class CustomerDao ...
新时代码农
未读每天一个 Linux 命令ls 命令 12345678910111213141516171819202122-a: 显示所有档案及目录(ls 内定将档案名或目录名称为“.”的视为影藏, 不会列出);-A: 显示除影藏文件“.”和“..”以外的所有文件列表;-C: 多列显示输出结果. 这是默认选项;-l: 与“-C”选项功能相反, 所有输出信息用单列格式输出, 不输出为多列;-F: 在每个输出项后追加文件的类型标识符, 具体含义: “*”表示具有可执行权限的普通文件, “/”表示目录, “@”表示符号链接, “|”表示命令管道 FIFO, “=”表示 sockets 套接字. 当文件为普通文件时, 不输出任何标识符;-b: 将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;-c: 与“-lt”选项连用时, 按照文件状态时间排序输出目录内容, 排序的依据是文件的索引节点中的 ctime 字段. 与“-l”选项连用时, 则排序的一句是文件的状态改变时间;-d: 仅显示目录名, 而不显示目录下的内容列表. 显示符号链接文件本身, 而不显示其所指向的目录列表;-f: 此参数的效果 ...
验证查询查询语句可以变得非常复杂,特别是与不同的分析器和字段映射相结合后,就会有些难度。validate API 可以验证一条查询语句是否合法。 12345678GET /gb/tweet/_validate/query{ "query": { "tweet" : { "match" : "really powerful" } }} 以上请求的返回值告诉我们这条语句是非法的: 12345678{ "valid": false, "_shards": { "total": 1, "successful": 1, "failed": 0 }} 理解错误信息想知道语句非法的具体错误信息,需要加上 explain 参数: 12345678G ...