自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (6)
  • 收藏
  • 关注

原创 跟着JHipster学做项目 (11) stream和Optional的使用

JHipster在java代码中大量运用stream和Optional,使得代码简洁,运行效率高,下面总结了一些用例,基本涵盖了我们项目日常遇见的需求。在数据库中查询用户,如果存在,利用数据库查询结果计算并返回,若不存在抛出异常(或返回其它结果)。public UserDetails loadUserByUsername(final String login) { return userRepository.findOneByLogin(lowercaseLogin)

2020-09-17 23:31:54 359

原创 Js中如何获取当月的一号和最后一天

【代码】Js中如何获取当月的一号和最后一天。

2023-09-25 22:34:29 169

原创 跟着JHipster学做项目 (18) 国际化i18n实现

跟着JHipster学做项目 (18) 国际化i18n实现

2022-04-22 13:59:03 524

原创 跟着JHipster学做项目 (17) Spring Boot处理分页和排序

JHipster利用了Spring Boot的Pageable分页机制,前端排序是针对数据库数据,而非当前页面数据,充分满足了实际需求。下面分前端和后端两部分分别介绍一下它的实现方式。前端利用两个辅助函数,向后端传递了分页参数:当前页page,每页条目size,排序属性prop,direction。本文以mongoDB为例。sort函数中接收了排序属性和排序方向,同序情况下以id降序。 public sort(): any { const result = [this.propOrd

2022-01-21 18:13:02 1254

原创 快速复现利用Log4j漏洞启动windows计算器

了解关于漏洞的描述,可以参考Vulnerability Affecting Multiple Log4j Versions Permits RCE Exploit根据文章描述,首先下载JDK1.8u102,不能高于这个版本。通过如下pom.xml建立一个maven项目<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

2021-12-17 22:28:02 4048

原创 四张图秒懂JavaScript的ES6箭头函数用法

通过图1,图2对比:usestrict;可以把默默的undefined转化为显示的exception (顺带了解'use strict')通过图2,图3对比:正常函数都有自己的默认的this,所以在回调函数里用that取代了this,这样可以获取回调函数外层函数的属性值。通过图3,图4对比:=>形式是ES6最新用法,自动获取外层函数的this,而不是函数自身的this.省略了var that = this的变量定义。...

2021-12-15 21:28:37 495

原创 读懂四幅图,让你厘清JavaScript变量定义

javascript 变量定义

2021-12-15 16:10:45 924

原创 跟着JHipster学做项目 (16) Spring Boot在JWT添加userId

Spring boot默认User没有包含userId信息,在通过SecurityUtils获取userId会很不方便,下面介绍一个简便的方式可以在获取当前用户信息时,能够包含userId。JHipster是通过一个实现UserDetailService的接口DomainUserDetailsService类,来对登录信息进行认证。但是在类UserJWTController中,认证的方法如下:Authentication authentication = authenticationManag

2021-10-25 20:49:34 693

原创 跟着JHipster学做项目 (15) npm 全局安装不同版本package

在使用JHipster生成代码的过程里,借鉴代码的功能实现方式是一个不错的学习方法,最近JHipster做了一个版本较大的升级,由于Marketplace中的很多blueprint只支持低版本的JHipster,为了生成blueprint代码需要在系统中同时安装一个低版本的JHipster,这时候全局安装的话会和高版本的发生冲突,我们需要对npm进行设置,让低版本的JHipster安装在另一个目录。一个简便易行的方法是把默认的.npmrc文件改变为一个软链接文件,然后通过改变软链接所指向不同的.npmr

2021-08-29 09:43:33 296

原创 应用jasypt-spring-boot后引起性能问题解决方案

In thejasypt-spring-boot/src/main/java/com/ulisesbocchio/jasyptspringboot/caching/RefreshScopeRefreshedEventListener.java, it tries to find the two classes, consuming all the time and fail finally.If spring cloud is not applied for your project, you can.

2021-08-28 15:30:09 355

原创 阿敦软件技术框架-跟着JHipster学做项目专栏

跟着JHipster学做项目(1)- MockMvc用法技巧跟着JHipster学做项目(2) - 使用Swagger2生成API文档 (上)生成swagger的asciidoc文件跟着JHipster学做项目(3) - Maven的使用技巧(上)分离jar和依赖跟着JHipster学做项目(3) - Maven的使用技巧(下)去掉因lifecycle引起的红叉跟着JHipster学做项目 (4)审计功能跟着JHipster学做项目 (5) 异常处理(上)Spring Boot后端跟

2021-08-24 17:59:52 438

原创 跟着JHipster学做项目 (14) 账户激活与密码重置

在JHipster项目中,用户使用邮箱进行注册,注册成功后将发送账户激活链接到邮箱,用户点击链接后,激活成功。AccountResource类代码: /** * {@code POST /register} : register the user. * * @param managedUserVM the managed user View Model. * @throws InvalidPasswordException {@code 400 (B

2021-07-04 23:36:23 333

原创 Java时间常用处理方法

获取24小时之前的时间Instant.ofEpochMilli(Instant.now().toEpochMilli() - 1000 * 3600 * 24)根据字符串获取LocalDateTime,例如:"2018-11-25T13:07:53.243Z"LocalDateTime date = LocalDateTime.ofInstant(Instant.parse(dateString), ZoneId.of("UTC"));Cheers,Good Luck!...

2021-03-27 18:11:04 161

原创 Spring boot + Vue 文档下载

前端Vue代码:downloadDocument (row) { let vm = this this.$ajax.post('/api/downloadDocument', row, {responseType: 'blob'}) .then(function (res) { if (!res.data) { return } let url = window.URL.crea

2021-03-12 13:07:48 90

原创 使用geany进行python学习小白教程(Windows版)

对于Python编程学习,通常会推荐Python编程 - 从入门到实践,可以在微信读书上找到此书,并且在浏览器中(微信读书)可以阅读。书中强烈推荐使用工具geany进行python文件编辑,运行。鉴于一般会使用windows操作系统进行学习,本文着重介绍在windows中如何配置geany.首先安装python,记得在最后将python放入path环境变量(默认就可以),假设安装在 c:\Python38,以下配置均以此为例,你需要根据自己实际安装目录相应去配置。在学习或者编程中需要使用pip安

2020-12-07 22:56:26 4874 1

原创 使用eclipse导入DataSphereStudio项目小白教程

DataSphereStudio作为一个parent项目,下面包含了18个modules,这里根据编译整体的DSS的文档介绍在eclipse中如何导入项目,然后在eclipse中进行maven编译。在导入项目之前,由于项目包含了scala代码,首先要安装scala IDE插件,help -> eclipse market中搜索scala,如图安装在克隆项目以后,File -> import,选定DataSphereStudio文件夹,导入项目,导入项目后,parent项目以及18个m

2020-11-30 22:02:50 608

原创 跟着JHipster学做项目(2) - 使用Swagger2生成API文档 (下)生成中文html5, PDF文件

上篇已经通过引入springfox-staticdocs成功生成了swagger的asciidoc文件,用浏览器来查看asciidoc文档需要安装插件,通常我们会进一步把asciidoc文件转化为html5, 或者PDF文档。主要的功能由asciidoctor-maven-plugin插件完成:<!-- Run the generated asciidoc through Asciidoctor to generate other documentation

2020-10-16 20:10:40 378

原创 跟着JHipster学做项目 (13) 控制Vue前端在完成加载数据后展现页面

对于用Vue开发的前端页面,通常采用Ajax进行数据通讯,页面的控件往往存储在本地。我们直观的感觉是页面组件出现后,数据再显示在组件上,如果网络有延迟,数据滞后显示会更加明显。更严重的情况是上次缓存的数据会出现在页面,对用户造成困扰。下面就讲述一下JHipster的两种方式实现数据加载完成后,再展现页面。利用beforeRouteEnter,代码如下: beforeRouteEnter(to, from, next) { next(vm => { vm.initAu

2020-09-26 23:14:22 424

原创 跟着JHipster学做项目 (12) 分页处理(下)前端进行分页及排序查询

JHipster的前端分页组件由两部分组成:分页信息组件,分页加载组件。<div v-show="users && users.length > 0"> <div class="row justify-content-center"> <jhi-item-count :page="page" :total="queryCount" :itemsPerPage="itemsPerPage"&g

2020-09-23 18:14:07 349

原创 跟着JHipster学做项目 (12) 分页处理(上)后端利用Pageable进行分页查询

JHipster的后端分页处理最大的特点是保持DTO类不受分页信息污染,不必包含分页相关属性,如页数,总数,排序等。Controller类如下: @GetMapping("/users") public ResponseEntity<List<UserDTO>> getAllUsers(Pageable pageable) { final Page<UserDTO> page = userService.getAllManagedU

2020-09-23 13:11:07 749

原创 跟着JHipster学做项目 (10) 缓存的应用

JHipster对于缓存的应用有两个层级,一种是对于DTO的缓存,另外是Hibernate第二级缓存。本文着重介绍第一种,对于DTO层的缓存。在应用程序中往往需要对登录用户信息进行多次查询,比如验证用户的状态等等,将用户DTO放进缓存,会大大减少对数据库的访问。JHipster支持五种缓存实现: Ehcache, Caffeine, Hazelcast, Infinispan and Memcached。以Ehcache为例,首先引入依赖 <dependency> <

2020-09-11 22:16:04 560

原创 跟着JHipster学做项目 (9) 处理用户登录超期

JHipster登录有Remember Me选项,配置项中不勾选session可以保持24小时,勾选则为10天。下面讲述一下JHipster对于登录超期的处理方法,这里登陆超期是指JWT的超期。对于超期有两种情况,一种是对账户进行操作,另一种是非账户操作。前端代码如下: intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { re

2020-09-11 21:12:20 303

原创 eclipse快捷键Ctrl + Alt + ↓失灵问题

很诡异的问题,后来发现是与网易云音乐快捷键冲突,它用来升降音量,真是服气了。网易云音乐的开发团队中没人用过eclipse吗?

2020-08-10 10:16:30 313 1

原创 跟着JHipster学做项目 (8) 前后端分离项目刷新页面避免出现 white label

前后端分离项目最常见问题就是前端的router和后端的controller path之间的矛盾,这个矛盾在刷新页面时显露出来。通常页面跳转是交给前端router来控制,但是当页面刷新时,前端router的路径请求直接传递给后端,此时后端一定无法处理,因此转到white label报错页面。之前Vue项目部署在Spring Boot出现页面空白问题的解决方案中提到将error page指向Vue的index.html页面,这个方案缺点很明显,NOT_FOUND请求将跳转至index.html, 而不是提供

2020-06-26 01:41:00 693

原创 跟着JHipster学做项目 (7) swagger-ui展现

前面讲过使用Swagger2生成API文档,这里是关于直接在浏览器中展示API,并且可以在线测试API。着重从三个方面来概括一下swagger-ui展现:Spring Boot端如何启动swagger, 使后端可以接收/v2/api-docs和/swagger-resources请求,并返回相应的response(swagger.json, {url, name}).swagger-ui的前端代码生成Spring Boot后端和Vue前端如何处理请求的权限JHipster通过引入jhipst

2020-06-20 23:44:52 1520

原创 跟着JHipster学做项目 (6) 安全访问控制(下)JWT的Vue前端应用

JHipster前端对JWT处理主要包括两个方面:请求后端授权后对token进行解析。 从localStorage或者sessionStorage中获取token并放入请求报文。JHipster没有采用Spring Boot默认的formData以及/login, 而是json报文,/authenticate,代码如下: public doLogin(): void { const data = { username: this.login, password: this.passw

2020-06-04 21:04:56 407

原创 跟着JHipster学做项目 (6) 安全访问控制(上)JWT的Spring Boot应用

通过配置可以生成JHipster运用JWT进行访问控制的一套代码,主要是通过JWTFilter过滤器,并把它置于UsernamePasswordAuthenticationFilter前端对用户进行Authentication(认证)和Authorization(授权)控制,此外对于认证或者授权失败是采用前文提到的异常处理。这里需要引入的依赖如下:<dependency> <groupId>org.springframework.boot</groupId&g

2020-06-04 14:27:07 1258

原创 跟着JHipster学做项目 (5) 异常处理(下)Vue前端

JHipster前端处理异常主要包括三个方面,异常获取,异常显示,以及异常信息国际化。异常获取JHipster通常放在组件类中实现,比如register.component.tsthis.registerService() .processRegistration(this.registerAccount) .then(() => { this.success = true; }) .catch(error

2020-05-25 16:40:08 758

原创 跟着JHipster学做项目 (5) 异常处理(上)Spring Boot后端

JHipster处理异常的核心模块是zalando,zalando包含两种方式:Spring boot<dependency> <groupId>org.zalando</groupId> <artifactId>problem-spring-web-starter</artifactId> <version>${problem-spring-web.version}</version>&

2020-05-25 16:09:56 1443

原创 跟着JHipster学做项目 (4)审计功能

JHipster的基础应用里实现了对用户登录的审计功能,该功能可以控制用户密码输入错误次数的限定。此外,通过扩展模块实现了实体审计功能。实体的审计功能分两个方面:在对实体进行创建或者修改时,自动添加用户和更改日期等信息。 在对实体进行创建或者修改时,系统自动记录每次更改的内容,相当于对实体实现版本记录功能。下面来分别看一下JHipster的具体实现方式。用户登录审计功能:创建自定义repository来实现AuditEventRepository,如下所示:@Repository

2020-05-09 16:19:48 1031 1

原创 跟着JHipster学做项目(3) - Maven的使用技巧(下)去掉因lifecycle引起的红叉

当我们在项目中引入swagger或者asciidoc等插件时,通常定义在generate-sources阶段执行,当使用eclipse时,pom.xml就会出现一个红叉,以swagger2markup-maven-project-template项目为例,克隆这个项目在本地,将项目引入到eclipse,这个问题虽然不影响项目的编译以及运行,但是这个红叉不仅会引起视觉的不适,也实际会影响我们...

2020-05-02 23:03:52 428

原创 跟着JHipster学做项目(3) - Maven的使用技巧(上)分离jar和依赖

常见的spring boot打包方式分两种, war和fat jar, 这里主要针对fat jar在部署中遇到的jar包过大问题,jar包过大导致在每次升级时需要很长时间上传jar包,尤其是网速受限时,问题尤其突出,那么主要思想是将不常变化的依赖包单独部署到lib文件,每次只上传常变的项目代码。第一步,利用maven-jar-plugin代替原有生成fat jar的插件spring-boot-...

2020-05-02 22:37:56 493

原创 跟着JHipster学做项目(2) - 使用Swagger2生成API文档 (上)生成swagger的asciidoc文件

JHipster的提示和技巧页面中第一个技巧就是:Create a static Swagger API documentation 虽然篇头已经提示我们要去看swagger2markup最新模块,不要理会下面的内容,但是看着下面仅仅三步便可以生成API文档还是会想先按照提示尝试一下,于是利用maven引入springfox-staticdocs<dependency>...

2020-05-01 21:58:01 1064

原创 跟着JHipster学做项目(1)- MockMvc用法技巧

如何找到项目target路径?1利用Maven的pom.xml文件给出属性 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</...

2020-04-30 16:12:39 515 1

原创 Vue项目模块管理

一般会用到Node.js来进行模块管理,常见三种安装方式:npm i -g 包名 :全局安装,一般用于需要使用命令行,由于全局安装路径已在path中,所以可以直接执行命令例如: vue, jhipster, bowernpm i 包名 本地安装 需要打包并部署的模块,出现在dependencies例如:axios, babel-runtime, bootstrap, jquery...

2020-04-15 22:29:08 293

原创 利用Maven高效管理项目解决方案

我们通过查询可以了解Maven的基本用法,包括如何编译,打包,以及安装,或者生成文档等等,但是当一个团队共同使用同一个Maven的profile文件时,由于每个人的电脑安装软件,保存资源的路径不同,或者个人电脑与服务器环境不同,就会带来一系列问题:1 对项目进行打包部署时需要更改pom.xml,以便编译器选择服务器对应的resource文件。如果忘记更改,则造成打包错误。2 因为每个人的p...

2020-04-11 20:56:22 179

原创 vue + spring boot项目的favicon解决方案

对于Spring boot通常我们会采用maven方式统一将前后台代码打包在一起进行部署,往往页面的favicon是默认的绿叶图标,下面讲一下如何自定义favicon.在Vue的项目代码中build文件夹,修改文件webpack.prod.conf.jsnew HtmlWebpackPlugin({ filename: process.env.NODE_ENV === 'te...

2020-04-03 12:14:19 351

原创 windowns系统npm默认配置文件

node msi的安装方式一般会在%HOMEPATH%(使用set命令查看具体路径) 下生成一个.npmrc文件,这个文件包含了所有npm config ls -l中显示的属性信息,另外也可以通过命令npm config edit直接打开该文件进行编辑。默认的prefix值为nodejs/node_modules, 所以-g安装的包都会在这个目录下。...

2019-11-14 23:42:59 726

原创 Spring boot 多环境变量配置

这里主要介绍Spring boot配合maven实现多环境变量配置,java开发工具使用eclipse,其它如gradle,或者只用其它IDE,基本原理差不多。常见多环境的产生有两个方面:1 开发环境和生产环境2 不同用户的开发环境下面以dev和prod为例,并且有两个用户user1和user2在统一默认的application.properties文件中给出变量:spri...

2019-09-10 08:39:26 1845 1

原创 MongoDB的shell小工具-通过关联值更新collection

现实情景说明:teacher和student是两张表,通过teacherId关联,一对多的关系,为方便显示信息,希望在student表中添加教师姓名,实现方式如下:首先在student表中增加一列然后创建student表的游标,通过游标中teacherId在teacher表中查找teacherName,对游标更新并保存。db.student.update({}, {$set: {...

2019-08-09 11:51:06 195

等线字体用于PDF生成

在asciidoctorj-pdf-1.5.0-alpha.15.jar\gems\asciidoctor-pdf-1.5.0.alpha.15\data\fonts这个路径下加入中文字符集,例如: Deng.ttf,Dengb.ttf, Dengl.ttf,在这里可以下载字符集。

2020-10-16

普通spring boot jar包部署为windows service

普通spring boot jar包部署为windows service,其中只要执行spring-boot-daemon-sample.exe install/uninstall

2018-03-03

spring微服务fat jar部署为windows service工具包

spring微服务fat jar部署为windows service工具包,包含prorun.exe文件和对应的bat执行文件,其中只要执行bat文件服务就可以部署。

2018-03-03

spring in action_4 spring实战jar包补充

除了28个列于gradle.properties,另外三个是在测试中缺失的,所有jar文件打包为zip文件供方便下载。 下载链接: http://download.csdn.net/download/java_augur/10106263 chapter 10,11,12 分别要补充一些jar包,尤其是12,jar包的版本非常重要,经过测试一下jar包可以测试通过。运行chapter12测试用例时需要安装并启动Mongo DB

2017-11-08

Java-J2EE Job Interview

java面试宝典,内容涵盖及其广泛,从java的基础知识,到j2ee的框架知识,以及tomcat,hibernate等面试问题,还有面试应该注意的事项等等,掌握这些知识就没有进不去的公司。

2012-01-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除