自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 子资源完整性SRI简介

子资源完整性 Subresource Integrity 简称 SRI 是一种安全机制。是允许浏览器检查其获得的资源(例如从 CDN 获得的)是否被篡改的一项安全特性。它通过验证获取文件的哈希值是否和你提供的哈希值一样来判断资源是否被篡改。

2023-05-11 21:02:46 955 1

原创 在生产环境关闭swagger

在服务中引入了swagger文档,但在生产环境需要屏蔽;否定请求可以看到所有api;

2023-05-10 23:21:24 5662

原创 Java异常栈没有打印

这是HotSpot VM专门针对异常做的一个优化,称为fast throw,当一些异常在代码里某个特定位置被抛出很多次的话,HotSpot Server Compiler(C2)会用fast throw来优化这个抛出异常的地方,直接抛出一个事先分配好的、类型匹配的对象,这个对象的message和stack trace都被清空。这个优化的目的是,抛出这个异常非常快,不用额外分配内存,也不用爬栈。但是问题是找异常stack trace需要翻到最前面几次抛异常的地方,排查问题的时候需要注意。

2023-05-09 19:35:35 784

原创 consul配置修改刷新触发的java.util.ConcurrentModificationException异常

项目中用到consul作为配置中心,在修改consul配置时,偶尔会发现服务报出集合类修改异常java.util.ConcurrentModificationException,抽时间仔细探究了原因。

2023-05-04 21:02:07 215

原创 前端库升级小记

借助今年特殊五一假期的空闲,把一个chrome插件小项目升级了下组件。主要包括vue2到3,webpack到vite,echart4到5,bootstrap4到5

2022-05-04 14:35:37 1435

原创 Spring Boot 使用外部配置

软件对配置的使用,从启动参数、本地配置文件、数据库配置,到外部独立的配置中心。一步一步朝着开放和灵活在迈进。使用配置中心,软件启动运行的参数都抽离到单独的分布式配置服务中心。Spring Boot在一开始就提供了对配置扩展的支持,非常简单就扩展就适应了。

2022-05-01 15:00:20 887

原创 前后端字典类枚举使用方案

在web开发中,常常涉及到一些字典类的信息编号存储和展示。由于规则比较单一,常常会抽象和封装为一个公共的方法和组件。为了保证前后端的定义统一,且考虑到易于维护和扩展。一般都采用后端定义和维护枚举常量,暴露接口给前端,前端可以进行一定封装。后端也会采用一些方式保证容易使用和增改字典类数据。

2022-01-23 12:42:07 2941

原创 Mybatis plus简介

Mybatis使用的时候感觉写Mapper、配置XML、书写SQL还是会觉得重复、繁琐。即便有了代码生成器和Example样板代码方法,还是感觉维护麻烦,特别是有字段增删的时候。这个时候Mybatis plus组件的增强性功能就体现出优势了。

2022-01-15 18:52:46 799

原创 RSA非对称加密简介

RSA非对称加解密算法在实际开发中广泛使用,简单就目前前后端加解密常用方式小结一下。

2021-12-25 13:06:42 3141

原创 使用SpEL来实现一个简单流程处理引擎

背景是有一些简单的审批流程处理,不想用到工作流那么重的组件。但是,全凭if else 修改很费体力,也容易出错。需求是可以预见的在下一期或者下下期会调整审批流程。利用表达式语言来实现一个简单的流程选择。这个思路感觉比较通用,可以很方便扩展其他的类似的场景应用。

2021-12-19 15:57:22 1204

原创 MapStruct使用小结

前言实体bean转化往往是不可避免的,从传统使用反射技术的的BeanUtil的copyProperties到Object mapping,基本止步于使用Annontion Processer实现的动态编译生成字节码。因为其是编译期自动生成的set/get调用代码,运行期的性能接近手写赋值(性能对比可以参见文章:Java对象属性拷贝组件——对象映射器Object mapping)。其次使用注解的方式声明对象转化和拷贝比较简洁,就像lombok一样避免了大量的手工重复代码的编写。这里要介绍的是mapstru

2021-11-21 11:09:41 1754

原创 线上日志量较大问题分析

服务器上磁盘告警,发现应用写的日志较多,由于需要保留近30天日志,希望能缩小体积。分析发现了两个问题:1、同时使用了文件日志和控制台输出;2、控制台的日志做了切分,但是体积每天在变大;控制台输出(重定向到nohup*文件)未关闭,因为部署脚本需要检查特定输出 “started successfully ” 来判定服务是否启动成功。这个可以修改日志配置,减少对控制台的输出。因为主要是使用FileAppender记录日志。为了在平时开发时,使用控制台输出日志,可以利用logback对spring的扩展

2020-07-26 18:09:39 846

原创 用js写一个zookeeper简易web控制台

使用node.js下的zookeeper客户端访问组件库,写一个 web的控制台,非常简单。比起java的ZooInspector,还有其他一些node下的zk的web控制台,有哪些优势?轻量,部署依赖少,可以单机,可以扔在服务器上多用户访问;依赖少,早起一些node下的zk的控制台,使用了node-zookeeper,这是是一个包装c实现库;这里使用了node-zookeeper-client库,这是一个纯js的zk客户端组件库,更为轻量。使用express搭建web服务环境安装,库安装略过;app

2020-07-24 22:39:38 562

原创 不使用Webpack的Vue传统前端使用方式(二)

上次简单展示了如何不使用webpack构建传统式前端工程。适合简单项目和学习研究。这次继续,简单完成一个ajax交互例子。可能ajax这个词比较久远了,实际就是使用浏览器的XmlHttpRequest组件完成HTTP请求,这个组件是微软最先提供的,在IE独大的年代还是很具有创新性。做到了不刷新网页的情况下交互数据,进行页面的局部内容数据更新。放到现在,这已经是个很常规的基础组件了,结合MVVM框架,构建完善的用户体验良好的前端应用。好,上正文,为了方便学习交流,我把代码放到github上了,vue-de

2020-05-10 18:11:46 2080 2

原创 不使用Webpack的Vue传统前端使用方式(一)

本文展示使用传统的前端开发方式使用vuejs,不使用webpack的如何使用vuejs开发前端工程。一方面可以对比两者的差异,一方面学习一种新的思路(或者是老路)。在做一个小型的前端工程时,可以考虑这种轻量化的方案。本示例使用了boostrap、jquery、vue、vue-router组件,创建了一个SPA单页示例。先闲扯几句。最近vuejs 3.0 开始beta,相信不久(也不好说是多久)就...

2020-05-01 13:48:34 5476 2

原创 Docker安装Redis

首先,确保安装好docker的桌面版客户端,配置好了国内镜像。拉取redis镜像,默认是tag为latest的镜像。docker pull redis启动一个实例:docker run -itd --name redis-test -p 6379:6379 redis这里启动了一个名称为redis-test的实例,并且把redis服务的默认端口映射到本地的6379端口,这样在本地可以...

2020-04-16 20:25:03 313

原创 安装Docker桌面版

安装Docker Desktop目前的Docker桌面版(Docker Desktop)是方便桌面系统使用docker容器的工具,支持Mac和Windows,如果是Linux直接就装Docker Engine了。需要注意的是,Docker的桌面版一直在升级,对Mac的系统和硬件有所要求:Docker Desktop - macOS must be version 10.13 or newe...

2020-04-15 20:41:00 2418

原创 mac下使用rz和sz与服务器上传下载文件

本文是整理如何在mac下安装和配置rz、sz工具,经跳板机访问服务器上传下载文件。公司设置了跳板机,jumpserver,无法直连服务器,没法直接用scp上传下载文件。怎么办?同事告诉有个rz、sz的工具。才知道还有Zmodem、Xmodem、Ymodem这样的古老协议。我开始觉得很神秘,为什么用终端连上服务器,在终端界面里敲一个命令能弹出窗口,选择文件上传。其实linux服务上目前是安装了r...

2020-04-11 19:35:51 3632

原创 实现一个类似RequestMapping的分发服务

在编写非web的的服务处理程序时,需要根据某个字段值作分发,这样便于分离不同的服务类和方法,也便于以后增加和扩展服务处理逻辑。有了Spring的容器,最简单的方式是一个服务一个类,用相同的接口,然后用字段映射到beanName。但是有时候需要分发的服务变多,而且重用逻辑也不好分得太散。这时需要类似Spring MVC的分发映射到处理方法的方式。这样灵活性很高,扩展性也好,编写扩展服务起来也方便。...

2020-04-05 16:58:13 267

原创 Springboot中log4j2使用小结

说起Java中的日志组件,jcl(Jakarta Commons Logging)、jul(Java Util Logging)、log4j、slf4j、logback、log4j2这些耳熟能详组件。不得不提到一个人,那就是Ceki Gülcü这位大神,是log4j、slf4j、logback的作者。他冷酷无情的几乎包揽了整个Java的日志组件,努力改进日志记录器组件,连sun官方的日志组件方案j...

2020-03-29 00:27:26 244

原创 Spring AOP使用注意点

Spring中的AOP面向切面编程结合IOC容器,是编程的灵活性大大提高。结合支持通配符和注解等等一系列方便切入的特性,真香!我这里分享几个需要注意的地方,以及以我的经验总结几条原则。Spring AOP简介Spring AOP 基于动态代理,为以下两种:基于接口,使用JDK Dynamic Proxy非接口,使用CGLIB自动生成子类实现代理AOP作为一种编程模型,还有着很多实现。...

2020-03-22 16:37:07 2431

原创 程序员需要注意的健康风险

以下是程序员的常见病症:眼睛干涩手肘关节颈椎腰椎间盘消化胃肠道秃顶脂肪肝

2020-03-14 18:24:11 551 3

原创 Flink与Spring Boot的集成

flink 1.10.0spring boot 2.2.2.RELEASE这方面的资料很少,网上有的方法不完整。基本思路是把spring容器的初始化放在sink的open方法中执行。要么只使用spring framework组件,甚至使用xml这样的方式配置bean(使用ClassPathXmlApplicationContext );要么直接在open中启动了SpringApplica...

2020-03-14 17:12:33 24573 9

原创 搭建Spring Boot Admin

Spring Boot Admin非Spring官方出品(以下简称SBA),用于管理和监控SpringBoot应用程序。深度与Spring Boot的集成,展示应用的Spring Boot的配置参数,并可以动态调整。 SBA的官方文档比较详细了。网上的文档也很多,本文的主要是填坑记录。对安全方面的我觉得至少得有个最简单的登录验证,这需要集成spring security,官网文档里写的很详细。...

2020-03-14 16:33:34 317 2

原创 mac os中连接docker网络

docker desktop 的版本是2.2.0.3(42716)mac os 的版本是macOS Catalina10.15.3当你满心欢喜的安装完docker desktop,准备来感受一下docker的全新软件分发方式带给你便捷体验时。你发现除了使用交互式命令登录到容器,似乎想ssh访问容器都不行,你只能:$docker exec -it <container_id> /b...

2020-03-09 09:48:28 3891

原创 Java对象属性拷贝组件——对象映射器Object mapping

技术的更新很快,曾经几何时,还在纠结数据库连接池是c3p0还是dbcp,反复测试哪个更快。再到后来BoeCP、Druid出市,Druid占据了配置里好长时间。现如今,HikariCP秒杀了一切。这其中是一直在孜孜不倦追求的性能和效率。Java的Bean对象属性拷贝的是个很小的功能点,一直以来都是BeanUtil的copyProperties,无论是用的commmons-utils还是spring...

2020-03-07 10:47:14 738

原创 Springboot 2.x中使用Actuator返回406Not Acceptable

使用Spring Boot Actuator时,如果你使用fastjosn作为HttpMessageConverter。访问web端,报Could not find acceptable representation,返回406 Not Acceptable。需要添加支持的 mediaType:application/vnd.spring-boot.actuator.v3+json注意:这...

2020-03-06 15:47:51 2603 6

原创 Spring Boot 指定外部启动配置文件

默认的打包spring boot项目会把配置文件打到jar包中,有时候在测试时需要想修改某些配置项。这时除了可以用启动参数覆盖配置项以外,还可以指定外部的配置文件覆盖已有配置文件。在需要修改较多配置参数的时候会很方便。使用spring boot默认的配置文件路径默认的查找路径如下:file:./config/file:./classpath:/config/classpath:/...

2019-12-27 23:38:34 17422 1

原创 Antlr4的使用简介

有很多生成解析器/编译器的工具,帮你来实现自定义的语言(DSL)。yacc Yet Another Compiler Compilerjacc just another compiler compiler fro Java,ANTLR ANother Tool for Language Recognition下面主要介绍的是Antlr。Antlr的作者是 Terence Parr ,...

2019-09-29 19:09:45 13103 1

原创 升级eclipse后代码提示不可用

升级了一下eclipse (2018-12 (4.10.0)),发现代码提示功能没法用了,用快捷键也触发不了。状态栏提示是No completions available.Preferences > Java > Editor > Content Assist > Advanced“Select the proposal kinds contained in the ...

2019-09-28 23:21:52 199

原创 表达式语言

表达式语言实际是编程语言的一个小子集,支持四则运算、逻辑运算、函数等等。用于执行表达式程序即为表达式引擎。一般通过引擎解释执行,在程序运行期,可以修改和执行表达式字符串,非常灵活。当然有些引擎为提供执行性能也可以对表达式做编译执行。关于表达式语言和引擎,用到的地方一般不会用的太复杂。比如Struts2和MyBatis的中使用OGNL表达式做动态配置。字符串模板语言使用的比较广泛,Velocity...

2019-09-26 22:06:08 473

原创 Maven多模块的项目笔记

建立parent工程属性节点在properties,在这一节点下,定义变量。有一些工程相关的变量:<properties> <java_source_version>1.8</java_source_version> <java_target_version>1.8</java_target_version> <f...

2019-09-08 15:44:07 237

原创 html页面用js引入js的方式

最原始的是用script便签:<script type="text/javascript" src="http://xxx.xx/xxx.js"></script>1. 使用js打印这个便签:<script type="text/javascript"> document.write('<script src="http://xxx.xx...

2019-05-16 13:11:16 11478

原创 Vue中简单使用Swiper

Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。中文版文档见Swiper中文网在应用到Vue的工程中时,有Vue-Awesome-Swiper可用,但是也发现一些问题,最后自己简单封装一下Swiper绕过。先看原始版直接在Vue中使用:<!DOCTYPE html><html lang="zh-CN" > &lt...

2019-05-09 23:38:03 2027

原创 升级vue工程小版本

vue的版本迭代非常快,一直让人追赶的节奏(今年要发vue 3.0)。在使用了vue-cli一段时间后,发现了vue-cli包括cli-server的更新频率非常快,经常修复bug。于是乎也想更细一下相关的组件,但是发现vue upgrade这个命令似乎还不能正常工作,见 feat: implement vue upgrade #2428。手动再用vue create 一个新的工程比较了下pa...

2019-05-05 09:22:29 1386

原创 前端页面html5的动画技术

前端动画技术概述目前的用于html5的动画技术:DOM元素的位置、颜色、透明度、可见度等等属性变换 CSS3 中有部分属性定义DOM元素的一些变换,主要是 Animation(动画),Transform(转换), Transition(过渡) SVG 矢量绘图技术,本身也属于DOM元素 Canvas 更底层的绘图技术 如果追忆历史的话,以前独霸web天下的Flash技术,还有...

2019-04-28 09:48:00 939

原创 用pnpm取代npm进行包管理

npm是Node.js内置的包管理工具。但是因对日益膨胀的包之间的依赖关系,有点跟不上发展。虽然npm 3开始采用了扁平的依赖关系树来处理包的依赖。面临项目中动不动就上千的包依赖,每次安装包就得好等一会,而且大量浪费磁盘空间。虽然yarn着手解决于npm一些不足,主要是解决安装包版本的不确定性,使用本地缓存。这在npm的后续版本中也进行了改进,使用了增加lock文件来确定安装包的版本。...

2019-04-26 16:20:16 10328

原创 矢量图标库Font Awesome的SVG新版本图标库5.x

Bootstrap已经到4.3.x,随之常用的图标组件Font Awesome也发布5.8版本。其4.7是4.x系列最后一个版本,从5.x开始,开始从font转向SVG的绘制矢量图标。这几乎是未来的方向,SVG开始越来越多的应用了。Font Awesome v4.7旧版比较大的变化是有了收费的pro版本和免费的free版本。有四组图标集,Solid和Brands是免费的,Regul...

2019-04-25 15:11:01 5036

原创 js字符串replace方法

js中的replace方法str.replace(regexp/substr, text/function)第一个参数是查询条件,可以是字符串或正则表达式。第二个参数是替换规则,可以是字符串或者一个字符串的函数,用于替换查询条件匹配到的字符串。其中,正则表达式中的特殊标记符:字符 说明 $1、$2、...、$99 第1到99个子表达式相匹配的文本 $&am...

2019-04-24 10:40:12 1459

原创 vue的v-for中key必须指定

关于vue的这个v-for中必须要指定key的警告,有点牵强了,虽然对于渲染性能有着影响,但是这样非得强制你写一个,有点太强迫了,如果循环中的元素有唯一值比如id这样的属性皆大欢喜,没有的话呢?

2019-04-23 10:44:29 1799

eclipse tomcat plugin V321

那个官方下载地址不好找; 这个是for eclipse 3.X的,支持tomcat6; 顺便给出官方地址:http://www.eclipsetotale.com/tomcatPlugin.html

2009-04-30

空空如也

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

TA关注的人

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