工具软件
文章平均质量分 71
梦想画家
开源软件爱好者,乐于博客分享,业余时间喜欢跑步和科幻,希望与意趣相投朋友一起学习交流。
展开
-
Golang实现简单WebSocket服务
我们每天接触到各类应用,如社交、在线文档、直播等,后端都需要使用WebSocket技术提供实时通信能力。本文介绍如何使用Golang实现实时后端WebSocket服务,首先使用Gin框架搭建http服务,然后使用库实现简单后端WebSocket服务,示例实现从0到1的过程,适合初学者快速入门。原创 2023-05-18 21:29:44 · 2732 阅读 · 0 评论 -
使用GSON把数据保存为json格式文件
当然也可以存储自定义类型对象为json格式。}}}如果字段标记为transient,gson默认会忽略,json序列化和反序列化过程中不会包括该字段。因此输出中没有出现nationality字段。{"id":1}如果需要保留null字段,请继续往下浏览。本文介绍使用gson库把java不同数据类型序列化为json文件。原创 2022-11-23 17:36:04 · 2376 阅读 · 0 评论 -
API 网关与反向代理
API 已经成为成功数字产品的必备要素之一,因此正确管理API成为重要内容。本文带你了解管理API的两个常用组件:API 网关与反向代理。架构我们首先看典型的网络拓扑图。虽然API 网关与反向代理位于相同位置,但两者提供的功能有差异。下面我们分别进行解释。反向代理反向代理主要作为客户端与一个或多个后端服务之间的协调者。在微服务架构中,随着应用规模增大微服务会随之变多。必要时需要隐藏异构AP服务带来的复杂性,这时反向代理可以重写URL,客户端仅和反向代理交互,反向代理负责将请求转发到后端服务实例.原创 2021-11-26 15:19:45 · 1890 阅读 · 0 评论 -
Apache Commons Collections Bag 教程
本文带你了解 Apache Commons Collections Bag,它允许多次存储相同元素。Bag 与 Collection的差异首先,我们加入maven依赖,然后通过示例进行说明:<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4..原创 2021-09-27 10:40:54 · 468 阅读 · 0 评论 -
Java把堆栈跟踪转成字符串
在Java异常处理过程中,通常记录日志或在控制台直接显示。但有时不仅仅需要打印,还需要写至文件或数据库、甚至需要通过网络传输至日志处理中心。这样就需要把堆栈跟踪信息转成字符串,但Java默认没有提供直接的方式进行实现。利用Java 核心 API 实现首先我们使用 java 核心库进行实现。Exception 类的 方法 printStackTrace() 可以带一个参数 ,可以是 PrintStream 或PrintWriter ,因此,可以使用 StringWriter 打印堆栈信息为字符串:.原创 2021-06-29 22:17:06 · 2234 阅读 · 0 评论 -
Shell 脚本监控磁盘空间
df 命令可以展示文件系统的磁盘有效空间信息。如果不指定文件名,则当前所有挂载的文件系统有效空间信息。实现步骤使用 df 查看磁盘信息使用 grep命令 过滤文件系统,获取空间使用百分比通过Shell 脚本进行监控获取磁盘空间df -H# outputFilesystem Size Used Avail Use% Mounted onudev 2.1G 0 2.1G 0% /devtmpfs 412M 6.6M.原创 2021-06-10 17:50:18 · 5944 阅读 · 2 评论 -
使用JavaFaker生成测试数据
之前为了生成大量测试数据写了一些工具。现在发现JavaFaker非常强大,可以生成各种类型数据,包括地址、流行文化等,且支持locale国际化。本文带你学习JavaFaker,通过示例展示如何使用FakeValueService和 Faker 类,后面再介绍locale,让生成的数据属于特定地域。1. 加入依赖包maven依赖如下:<dependency> <groupId>com.github.javafaker</groupId> <.原创 2021-05-21 15:48:43 · 3882 阅读 · 1 评论 -
Apache Commons Lang 3 教程
Apache Commons Lang 3 是非常流行的库,包括很多功能齐全的工具类,可以扩展Java的能力。其中内容相当丰富,包括字符串、数组以及数值操作,反射和并发,以及几个顺序数据结构实现(pair和triple)。本文带你学习这些工具类的应用。引入依赖<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId&原创 2021-03-29 22:10:28 · 3557 阅读 · 0 评论 -
矩阵乘法Java实现
本文介绍几种方式实现矩阵相乘。矩阵概念一般语言没有提供,我们首先子句实现,同时也介绍一些现成库实现。1. 概念介绍首先通过示例介绍矩阵,首先定义第一个3x2的矩阵:我们再定义第二个2x3的矩阵:两个矩阵相乘,结果为3x4矩阵:计算公式为:第一个矩阵的列数要和第二个矩阵的行数相等,否则不能相乘。即从A矩阵的第一行开始依次和B矩阵的每列相乘,每行与列元素相乘的结果相加作为结果矩阵的一个元素。2. 矩阵乘法实现2.1 自己实现首先我们自己实现矩阵相乘,为了简单我们使用二维double类型原创 2021-02-18 15:39:02 · 6932 阅读 · 0 评论 -
Apache Maven快速入门教程
Apache Maven快速入门教程构建软件项目典型有这样几个任务组成:下载依赖,在classpath下放置额外的jar包,编译原程序至二进制代码,运行测试,打包编译代码至可部署的构件,如jar、war、zip文件,然后部署这些构件到应用服务器或仓库中。Apache Maven可以自动完成这些任务,最大化避免人为手工构建软件造成错误,并将编译和打包代码的工作与代码构建工作分离开来。本文介绍强大的构建工具maven,它用于描述、构建和管理Java软件项目,使用XML编写核心信息——————项目对象模型(P原创 2020-11-08 19:30:32 · 443 阅读 · 0 评论 -
Java生成安全随机密码
Java生成安全随机密码本文讨论在Java中使用多种方法生成安全随机密码。我们示例中约定安全密码包括10个字符,至少包括两个小写字母、两个大写字母、两个数字以及两个特殊字符。1. 使用PassayPassay是非常强大的密码策略工具库,我们可以利用其生成符合特定规则的密码,读者可以参考上篇博文。通过使用CharacterData 缺省实现,可以规划密码规则,当然也能根据需要自定义CharacterData 。public String generatePassayPassword() { P原创 2020-11-01 17:07:51 · 4460 阅读 · 0 评论 -
Passay库实现强大安全的密码策略
Passay库实现强大安全的密码策略本文讨论在Java中使用多种方法生成安全随机密码。我们示例中约定安全密码包括10个字符,至少包括两个小写字母、两个大写字母、两个数字以及两个特殊字符。1. Passay库一般大多数web应用有自己的密码策略————也就是强制用户创建难以破解的复杂密码。我们可以利用Passay库生成或检查密码,使用Passay库需要增加相应依赖:<dependency> <groupId>org.passay</groupId>原创 2020-10-31 13:15:18 · 2748 阅读 · 1 评论 -
使用Jackson处理yaml文件
使用Jackson处理yaml文件Jackson不仅可以处理json和xml,也可以处理yaml文件,本文带你使用jackson提供的ObjectMapper类读写yaml文件1. yaml文件及环境准备1.1 yaml文件规则我们先了解yaml文件常用的几个规则,非常简单:规则一:缩进yaml使用一个固定的缩进风格表示数据层结构关系,需要每个缩进级别由两个空格组成,一定不能使用tab键。规则二:冒号yaml: mykey: my_value每个冒号后面一定要有一个空格(以冒号结尾不原创 2020-09-26 17:46:47 · 9951 阅读 · 4 评论 -
介绍Bash Case 语句
介绍Bash Case 语句本文介绍bash中case语句的语法。case语句通常用于简化多种不同选择的复杂条件场景,使用case代替if使得脚本代码更易读、易维护。case语句与C语言、javasc中的switch语句类似。与C不同的是,一旦Bash中case语句匹配了一个条件并执行语句,则不再继续搜索后续匹配条件,相当于自动增加了break语句。1. case语句语法语法结构如下:case EXPRESSION in PATTERN_1) STATEMENTS ;;原创 2020-09-15 17:50:14 · 3691 阅读 · 0 评论 -
Mustache 模板教程
Mustache 模板教程本文他们学习Mustache 模板,并使用Java api动态生成HTML内容。Mustache是创建动态内的无逻辑模板引擎,如HTML,配置文件等。1. 概述Mustache属于无逻辑模板引擎,因为其不支持if-else和for语句,主要是有{{}}括起来的模板变量及包含模板数据的模型对象组成,因为双括号看起来像胡子,因此得名mustache模板支持多种语言的客...原创 2019-11-03 13:06:18 · 3903 阅读 · 0 评论 -
SQL解析器
解析SQL的三种方式:1、通过正则表达式,寻找from位置,替换select 和from之间的语句,并且考虑子查询的情况。2、利用开源的sql编译器,如 ZQL http://zql.sourceforge.net/ ) , JSQLPARSER http://jsqlparser.sourceforge.net/ ;但复杂SQL解析不行,且很长时间没有更新,不建议使用;最好的sqlparse http://www.sqlparser.com/ 但是该软件是收费的;3、使用ANTLR(http://w原创 2016-03-11 22:50:32 · 7637 阅读 · 3 评论 -
Apache Commons BeanUtils 示例教程
Apache Commons BeanUtils 示例教程Apache Commons BeanUtils 包括所有必要的java bean工具类。java bean简单定义为普通java类包括字段、set/get方法以及默认无参构造函数。java提供自身和反射能力,用于标识get/set方法并动态调用。但这个API比较难学,即使实现简单功能也需要写一些模板代码。本文介绍Apache Commo...原创 2018-12-04 22:40:39 · 2242 阅读 · 0 评论 -
Guava Table 示例教程
Guava Table 示例教程本文带你学习Guava Table 接口及其实现。Guava Table 是类似表格结构的集合,包含行、列以及相应的单元格值。行和列作为有序的键。概述如果把Guava Table和java核心类中的集合进行比较,则为行map,且每行包含列map,其中有对应的单元格值。Table表示一个特定的map,有两个key以组合的形式引用单个值。类似场景一个map的map...原创 2018-12-13 22:46:43 · 3794 阅读 · 0 评论 -
Apache Commons CSV 教程
Apache Commons CSV 教程Apache Commons CSV 库很容易实现创建和读取CSV文件。本文我们通过示例进行详细学习。maven 依赖首先增加合适的版本依赖:<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-c...原创 2018-12-20 22:08:31 · 17879 阅读 · 1 评论 -
java 对象中集合属性及复制
java 对象中集合属性及复制本文我们介绍集合属性的复制场景及多种实现方式。对象中集合属性实际应用中对象中的集合属性很常见,表达一对多的关系。如用户有多个地址,订单包括多个产品等。一般我们需要定义集合属性,并提供set、get方法。下面示例定义属性检查类,每个属性拥有多个验证规则:@NoArgsConstructorpublic class PropCheck { /** ...原创 2018-12-21 12:53:16 · 6309 阅读 · 0 评论 -
RxJava 2.0 入门教程
RxJava 2.0 入门教程RxJava 2.0 是来自NetFlix的开源java异步编程框架。和java 8 lambda表达式很接近,响应式编程的基本构建快是被观察对象(Observable)和订阅者(Subscriber)。被观察者发出信息项,订阅者消费它们。RxJava 也类似于观察者模式——但不同的是,直到明确有订阅者订阅时,被观察者才发出信息。什么是响应式编程响应式编程是个...原创 2018-12-23 20:14:09 · 347 阅读 · 0 评论 -
在Spring Boot中使用Flyway迁移数据库
在Spring Boot中使用Flyway迁移数据库第一次总不会是完美的。新系统的数据库结构满足应用,但随着应用深入,需要满足新的需求并增加新的特性。Flyway是实现对数据库结构改变实现版本控制的工具,让你很容易、可靠地迁移至新的版本。本文我们学习在Spring Boot中如何管理数据库的变化。我们新建示例应用进行说明,Spring Boot应用使用MySQL Database &amp;...原创 2019-01-31 15:10:42 · 2258 阅读 · 0 评论 -
JXls实现基于excel模板生成报表
JXls实现基于excel模板生成报表jxls是非常小巧方便生成excel报表的工具库。jxls在excel模板中使用特定标记,定义输出格式和数据布局。在很多应用中有报表功能需要生成excel。java有很多开源或商业库可以创建excel文件(如,APACHE POI, JAVA EXCEL API)。这些库在一定程度上很低级,即使需要创建简单excel文件,也需要写很多java代码。通常需要...原创 2019-01-22 19:58:23 · 6145 阅读 · 0 评论 -
介绍 Jackson ObjectMapper
介绍 Jackson ObjectMapper本文聚焦Jackson ObjectMapper类————如何序列化java对象为json以及json字符串反序列化为java对象。依赖首先增加下列依赖: compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.8'该依赖...原创 2019-02-26 18:14:16 · 11331 阅读 · 0 评论 -
Cron 表达式教程
Cron 表达式教程cron是类unix系统的一款实用工具。可以利用其实现周期性在特定日期/时间运行任务,是自动化运行重型任务的好工具,否则需要人工干预。ron作为精灵线程运行————意味着仅需要开始一次,然后在后台运行。进程利用crontab读取计划项并启动任务。随着时间推移,cron表达式被广泛采用,所以经常会在很多其他程序或库中使用。使用Crontabcron计划是简单文本文件,lin...原创 2019-07-20 09:56:28 · 1945 阅读 · 0 评论 -
Jackson实现xml序列化和反序列化
Jackson实现xml序列化和反序列化本文介绍Jackson 2.X中提供的xml序列化功能。仅介绍基本操作,不涉及复杂和自定义功能。1. XmlMapper对象XmlMapper是Jackson 2.x中提供我们实现xml序列化的主要类,因此首先需要创建其实例:XmlMapper mapper = new XmlMapper();想要maven依赖脚本为:<dependen...原创 2019-08-23 18:25:32 · 12714 阅读 · 4 评论 -
Jackson 反序列化数组类型json值
Jackson 反序列化数组类型json值本文介绍如何使用Jackson 2反序列化json数组值至Java 数组或集合。反序列化为ArrayJackson可以很容易反序列化为Java数组:@Testpublic void givenJsonArray_whenDeserializingAsArray_thenCorrect() throws JsonParseException,...原创 2019-08-31 11:56:07 · 6291 阅读 · 4 评论 -
介绍Jackson JsonNode和ObjectNode
介绍Jackson JsonNode和ObjectNodeJackson JsonNode类,完整路径为com.fasterxml.jackson.databind.JsonNode,是Jackson的json树模型(对象图模型)。Jackson能读JSON至JsonNode实例,写JsonNode到JSON。本文不涉及json序列化或反序列化,主要介绍如何从头构建JsonNode对象图,之后你...原创 2019-09-09 17:51:44 · 46321 阅读 · 3 评论 -
使用 Apache Commons JEXL 实现pojo动态验证
使用 Apache Commons JEXL 实现pojo动态验证Apache Commons JEXL是简洁的同样表达式语言,可以实现动态脚本。本文应用其实现一种需求————动态pojo验证。对象验证是实际应用中非常普遍,且有很多种方式实现。但是通过JEXL,我们可以把验证规则存在在配置文件中或数据库表中,JEXL加载并实现运行时验证pojo。下面通过示例详细说明。1、需求说明假设Per...原创 2018-11-24 12:45:53 · 1645 阅读 · 0 评论 -
java 中使用iText操作 PDF文件
java 中使用iText操作 PDF文件文本我们聚焦如何创建PDF文档,基于流行的iText和PdfBox库。我们着重利用iText示例进行说明。maven 依赖首先看下maven依赖,需要在项目中加入:<dependency> <groupId>com.itextpdf</groupId> <artifactId>itex...原创 2018-09-22 19:40:35 · 3909 阅读 · 0 评论 -
使用java正则删除重复单词
使用java正则删除重复单词正则表达式非常适合处理文本,文本我们使用正则删除重复单词,这时很常见的任务。正则匹配后续的java通过正则删除重复单词不是很复杂,但第一次写很可能出错:String regex = "\\b(\\w+)(\\s+\\1\\b)+";完整解释如下:\b: 查找单词边界 (仅匹配单词开始位置,而不是单词的中间位置);(\w+): 匹配一个...原创 2018-09-09 21:34:41 · 2778 阅读 · 0 评论 -
使用gradle编译打包java项目
本文介绍使用gradle编译打包java项目,java项目仅仅为了演示,为了使用gradle脚本创建一个可执行的jar文件,即可以使用java命令直接执行,如:java –jar jarfile.jar。详细介绍脚本中常用元素,一目了然。原创 2016-09-24 16:51:19 · 33010 阅读 · 1 评论 -
解决eclipse中不能设置tomcat8.5
我尝试在eclipse中设置tomcat8.5时,提示错误:The Apache Tomcat installation at this directory is version 8.5.0. A Tomcat 8.0 installation is expected. 简单设置并解决。原创 2016-10-10 08:19:36 · 26719 阅读 · 5 评论 -
Gradle及eclipse插件安装
Gradle及eclipse插件安装Gradle的格言:“Make the impossible possible, make the possible easy, and make the easy elegant”.1. 下载GradleGradle需要jdk7或以上版本,使用java –version命令进行测试;Gradle自带了Groovy库,所以无需再安装Groovy,已...原创 2016-09-10 22:16:44 · 5569 阅读 · 0 评论 -
eclipse调试java程序的九个技巧
最早开始用eclipse的debug的时候,只会F5 F6 F7 F8,甚至F7都不是很搞的明白是怎么用的,那时候资浅,碰不到需要复杂debug的代码,慢慢工作深入了,场景碰多了,就需要各种debug技巧来提升定位bug效率,以前找人帮忙排查问题,看他开各种窗口debug各种溜甚是羡慕嫉妒恨,慢慢久病成医自己也用溜了eclipse的一些主要的debug技巧。稍作整理分享出来。 F5678这四个基本技能就略过不说了,但是最基本的技能能解决90%问题,所以虽然略过不说 ,但是必须用的很溜,相信园友达人们这转载 2016-05-22 14:27:06 · 1030 阅读 · 0 评论 -
RStdio 常用快捷键
在R语言里面输入了一个不完整的指令以后 左下方的console pane一直有加号+,不管输入什么都是加号,只用推出重新打开Rstudio才行,后来google了下,按左上角的Esc键也可以回到命令提示符状态,顺便总结下一些常用快捷键。原创 2016-05-29 20:04:55 · 7172 阅读 · 0 评论 -
eclipse3.7 安装github插件错误解决
eclipse 版本3.7 indigo是比较经典版本,为了兼容性,喜欢在该版本上开发插件。最近安装github插件报错,错误如下:Cannot complete the install because one or more required items could not be found. Software being installed: Eclipse Git Team Pro...原创 2016-05-26 09:25:07 · 1671 阅读 · 0 评论 -
java开源验证框架OVAL应用实例
对oval验证框架进行分类,并针对常用的验证规则进行总结,从而可以抽象成模型可以定义,达到定义后自动生成,减少开发人员的工作量,同时也规范化代码结构。原创 2015-10-21 11:58:08 · 4594 阅读 · 0 评论 -
eclipse插件开发入门——使用command实现在资源管理器中定位资源
Eclipse提供了三种命令与操作的方式:动作ActionSets、弹出菜单popupmenus、命令Command,其中前两种因为耦合过于紧密,在未来版本中可能弃用,不建议使用。ActionSets方式使用的是扩展点org.eclipse.ui.actionsets;popupmenus方式使用了一个扩展点:org.eclipse.ui.popupmenus;Command方式使用了三个扩展点:org.eclipse.ui.menus; org.eclipse.ui.commands;org.原创 2015-07-21 08:09:21 · 6083 阅读 · 2 评论 -
解决eclipse启动插件时PermGen space问题
解决eclipse启动插件时PermGen space问题原创 2015-07-17 08:49:47 · 1466 阅读 · 0 评论