自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)

原创 Spring boot admin 日志

前言以前写过Spring Boot Admin的使用教程,还配置了各种路径参数。最近有留言说client的log怎么查看,其实log这个没写是因为,不能满足性能与管理的需要,ELK技术很成熟,搜索也是,备份管理都有现成的,但是估计有些小公司不需要这样的技术,只需要可以快速查看的日志入口就可以了。下面来试试。1. SBA log示例此次使用consul + admin + client1. 1 consul启动由于我的电脑是macos,只需要./consul agent -dev即可,wi

2020-10-28 21:56:14 69 2

原创 Integer的parseInt与value of的原理

前言笔者一直使用Integer的转换,包括Long,枚举等,从来没有注意它是怎么实现的,最近有个业务组转换报错了,想看看是如何实现的。据笔者猜测:ASCII码转换?这是常用的计量,什么大写变小写都是这样实现的。下面看看如何实现的吧1. demo构建public class StringParseInt { public static void main(String[] args) { String str = "-1234"; int i = Inte

2020-09-28 22:22:15 49

原创 linux创建文件默认权限umask

linux文件初始权限前言linux权限介绍创建文件与目录初始权限应用写文件权限总结前言linux系统是绝大部分后端服务器运行的系统,但是笔者一直没有关注过,linux下用户创建目录的权限。一般都是root操作,然后没有权限就授予权限chmod +或者chown -R。今天遇到一个奇怪的问题咨询,说tomcat运行写的文件,其他用户不能读取。linux权限介绍linux的权限分为r(4) 读w(2) 写x(1) 执行linux权限表示有2种方式,一种字母一种数字。所以授权可以是chmod

2020-08-24 21:24:29 243

原创 zookeeper 3.5 AdminServer

zookeeper 3.5前言AdminServer配置AdminServer集群配置总结前言笔者很久没有使用zookeeper,一直稳定运行着3.4版本的zookeeper。并且业务也在流行去zk化,zk的ZAB协议决定了不能无限扩容,选主复制恢复决定了这是一个中心化的思想。但是笔者在升级到3.5的时候居然,不能启动,说Unable to start AdminServer。什么时候多了这玩意,干啥的呢?AdminServer笔者看日志发现是8080端口冲突,笔者查询了官方文档,说这是一个jett

2020-08-12 21:34:18 417

原创 intellij idea git 合并部分提交Cherry-Pick

intellij idea git 合并部分提交前言democherry-pick 摘樱桃总结前言笔者经常一边做设计一边写代码,然而一个项目经常多个人并行开发,就会有很多分支,经常需要代码合并,这个时候就需要多个分支之间合并,并且只能合并部分提交的部分内容。此时就需要cherry-pick的功能。目前而言一般代码管理就是Git管理,私仓gitlab,当然也可以是GitHub。demo笔者使用github为例,新建一个git-demo project。提交到git仓库,并使用master创建分支mas

2020-08-03 22:05:47 248

原创 intellij idea gradle入门

intellij gradle前言二级目录总结前言本来一直使用maven编译项目,笔者从2013年就开始使用了,但是maven的xml配置复杂,经常需要写很长的xml文件才能实现效果,加上最近Spring Boot官方切换到gradle管理项目,笔者也试着跑一个gradle项目。二级目录总结...

2020-07-22 22:32:01 110

原创 maven的optional与provided的区别,deploy小技巧

optional与provided前言scope providedoptional总结前言笔者在写框架jar的时候,发现一些依赖不需要在jar里面被带着引用,比如tomcat,如果使用完整的tomcat独立应用,Spring boot web就需要移除依赖。而且笔者经常需要排除其他框架jar写的很不规范的jar,经常是引入了jar本身需要依赖的其他jar,然而提供需要其他jar提供能力或者只需要引用一部分,这就是provided与optional。scope provideddemo,以spring

2020-07-20 22:04:12 196

原创 comparator和comparable的使用

comparator和comparable前言comparablecomparable democomparable源码分析comparatorcomparator demoComparator源码分析总结前言最近笔者被问到对象排序的时候,要求是传入不同的规则,排序不一样,类似一个按不同的条件排序的功能,笔者想到了comparator,其实comparable也是可以的,只是不太符合这个功能而已,通过comparator的切换即可实现。comparablecomparable democompar

2020-07-07 22:05:53 78

原创 docker(2) Dockerfile编写运行tomcat9

Dockerfile前言dockerfileDockerfile时区设置RUN指令前言上一章介绍了docker的背景,并执行了一个docker镜像,运行了容器,但是容器的镜像是如何实现的呢,简单介绍一下dockerfile。基于tomcat的war发布为例,其他jar部署同理,只是启动的方式差别。为了多使用dockerfile命令,使用ubuntu标准镜像为基镜像。dockerfile系统镜像以及容器运行的微系统基本上都是root,所以一般不存在权限问题。DockerfileFROM ubunt

2020-06-29 22:23:50 122

原创 docker (1) 入门介绍

docker入门前言1. docker engine1.1. docker1.2. 对比虚拟机1.3. docker 安装2. docker镜像2.1. 本地镜像列表2.2. 拉取镜像3. docker镜像执行总结前言最近BOSS让我实现容器化部署方案,特的简单的调研了一下,目前市面上主流的方案就是docker了。所以部署成熟方案就是docker了,毕竟阿里云,AWS等都在用,结合现有业务,实现全部容器化部署还是不太现实,也不需要,保证大部分业务实现即可,减轻运维的压力????。docker其实是云化

2020-06-14 21:03:39 107

原创 Java 单元测试(3)mock进阶 - 静态、final、私有方法mock

mock进阶前言1. powerMock1.1. powerMock官方文档1.2. powerMock demo模拟2. JMockito前言上一章讲了Spring-boot的starter test使用mock的方式mockito。但是mockito由于实现方式的原因(动态代理)不能支持静态、final、私有方法的mock。其实还有一种叫native方法,只是一般自己写native方法的地方不多,可能Android系统在这方面使用较多,比如游戏。查询了一些资料与笔者的以往经历,主要使用的有power

2020-05-27 22:49:43 1101 2

原创 Java 单元测试(2)mock

单元测试mock前言1. mock1.1 什么情况需要mock1.2 mock的分类1.3 有哪些mock2. mockito2.1 mock引入2.2 demo模拟2.3 mock2.4 InjectMocks2.5 spy2.6 打桩2.6.1 方法打桩2.6.2 异常打桩2.6.3 参数、返回值打桩verify灵魂powermock前言上一章讲解了 Java单元测试 标准模式。但实际情况是,往往我们工作中很多时候需要依赖第三方服务或者中间件才能执行单元测试,这时就需要一个关键工具mock。1.

2020-05-16 22:26:07 249

原创 Java 单元测试(1)合格的单元测试方式

前言 最近需要做单元测试代码覆盖率,虽然并不能反映代码的质量;但是在写单元测试的时候,发现对代码的规范上有质的提升。比如:判空处理,比如多分支处理等。单元测试其实是初级程序员的必备技能,只是很多时候忽略了。而在Java的编程中一般单元测试指Junit测试与testng测试。1. Junit 测试demoJunit测试其实已经根深蒂固,常用的版本是Junit4,最新的版本J...

2020-05-07 22:19:00 155 1

原创 Spring Boot Filter 顺序源码分析

前言 笔者写的spring boot项目的filter,使用@WebFilter不能自定义顺序,使用Bean注入又不能定义拦截路径。一定要定义FilterRegistrationBean的Bean才能同时生效,本章从源码的角度分析为什么。1. 使用ServletComponentScan启动分析在SpringBoot启动后,会扫描jar的包可以看到扫描了Se...

2020-04-13 23:13:39 145

原创 Spring Boot Filter 双返回值的问题源码分析

前言 笔者的项目出现双返回值的问题,然而返回String的返回值时却十分正常,引起了笔者的好奇心。这章源码分析一下,主要从filter的过滤计数、双返回值的执行过程、一次性filter的用法分析。1. filter执行过程 先简单说一下,每次执行请求,Tomcat等容器会创建责任链,filter的执行时,框架会计数,每个filter做一次dofilter操作,...

2020-03-30 22:22:07 197

原创 Spring Boot Filter 顺序与双返回值的问题

前言 最近做项目,以前有filter,需要移植到spring boot(filter是servlet时代的产物,不是Spring的)上去,发现一些坑。filter设置次序没用,以前web.xml文件配置的,另外还有多次dofilter的问题,导致某些情况下,返回2份数据。比如下面的{"name":"tom","age":18}{"name":"tom","age":18}...

2020-03-16 22:07:51 131

原创 Spring Boot Admin client配置 context-path与base-path 后 Spring Boot Admin 监控不到Spring Cloud信息

前言 上一章说了Spring Boot Admin(SBA)的client端自定义management.server.servlet.context-path、management.endpoints.web.base-path来解决一个Tomcat多个实例的问题。但是这个配置eureka instance是SBA Admin端通过eureka server获取的配置不能识别的,SB...

2020-02-14 23:25:05 383 1

原创 Spring boot admin 2.2.1 (二) 管理单应用多实例、权限与邮件通知

前言 上一章说了spring boot admin管理spring boot应用,但是没有权限认证,邮件通知,什么情况一个应用多实例(不推荐这种做法),就技术而言一个应用多个boot实例是会冲突的,需要配置解决冲突。1. Securing Spring Boot Admin Server在spring boot admin server端加入pom依赖 ...

2020-02-14 09:34:47 225

原创 Spring Boot Admin 2.2.1 (一) 使用

前言 最近做项目,需要对现有的spring boot项目做一个类似console界面,管理与监控boot应用,干脆就直接在spring boot admin定制了。先了解spring boot admin吧。对于spring boot admin,每个应用都是客户端,通过 HTTP 或者使用 Eureka 等注册中心注册到 admin server 中,前端展示。定制化一般而言,主...

2020-02-11 23:54:04 1276 5

原创 windows与linux端口占用解决方式

前言 最近做项目,发现机器上的8081端口居然被占了,后来发现居然是公司的软件搞的鬼。坑了一小段时间,下面讲讲windows与linux下端口占用排查方式。1. windows相信大部分公司配置是windows电脑,windows的bat或者cmd命令迥然于linux,笔者以前2014年还玩过bat脚本呢,现在忘光了。回归正途,1.1 第一步找出占用端口(以笔者虚拟机13...

2020-01-15 23:31:25 128

原创 MySQL大字段存储优化与压缩存储

前言 最近在做一个分布式任务调度系统,支持万级的JOB调度,支持任务编排,涉及到公司的核心业务。在做系统时出现MySQL存储某个字段很大的问题,超过text的长度,导致查询更新性能低下。1. demo模拟MySQL数据库,可以看到有个text字段,然而在开发时以前存储了json字符串,大小居然超过2M,必须使用mediumtext才能存储,而且经常更新json的部分字段,M...

2020-01-13 21:16:54 1684 2

原创 macos mysql 安装并创建数据库

前言 最近做项目需要优化MySQL表,就在mac本地安装了MySQL,没想到还遇到了不少问题。总结一下1. 下载安装这是咋的,下载位置如此隐秘。 选择,MySQL在5.7.17之后,官方推出了HA模式安装很简单双击dmg,一路next过程会设置root密码,看来8.0.18怕没有初始密码被攻破,类似以前的MongoDB比特币勒索事件2. 自...

2020-01-09 21:55:29 182

原创 mac os catalina 挂载NTFS磁盘,支持读写

前言 最近在家的环境切为macos,接了一个原来用的机械硬盘,悲剧的是ntfs格式,只能读取不能写入。我就不明白macos是类unix系统挂载的磁盘为啥不能写入呢,查了资料才知道版权问题????,既然如此,那我们手动挂载不就可以读写了。1. 查看我的磁盘使用终端命令diskutil list笔者很容易就知道了自己的机械磁盘文件命名(来源于Unix一切皆文件的思想)还有...

2020-01-05 20:24:24 8206 5

原创 mac os Catalina 设置ll 终端背景色 vim颜色

前言 最近用上了mac Catalina,开发程序还停留在linux的终端界面,有点不方便,为了方便开发,需要手工做一些设置1. 终端字体大小,背景色与字体颜色终端-->偏好设置1.1 增加ll别名,增加文本与目录软连接颜色用户目录下,执行vim .bash_profile#ll la l alias ll='ls -alF'alias ...

2019-12-16 21:31:50 637

原创 Java结束线程

前言 最近年底,项目紧很少写博客了,现在说说最近碰到的问题,笔者在做分布式JOB系统的时候,遇到一个比较棘手的问题:停止正在运行的线程。1. 线程的生命周期线程停止即Terminated状态是伴随run方法的结束而生,也就是run完成后由Thread类来决定线程停止了,销毁资源释放空间。关于线程可以看我的另一篇文章:线程的实现,调度和生命周期,纯粹理论。2. 手...

2019-12-02 21:41:41 75

原创 fastjson set方法的属性依赖,转对象的部分属性为空

前言 最近做项目,发现fastjson在parseObject的过程中,出现部分属性丢失,然而json字符串确是存在属性值的,然后试了gson,发现正常,但是jackson某些情况下也存在问题。下面分析1. demo<dependencies> <dependency> <groupId>com....

2019-11-03 21:55:52 701

原创 ArrayList与HashMap遍历删除元素,HashMap与ArrayList的clone体修改之间影响

前言 最近做项目,需要克隆map与list,并在克隆的map或者list中进行增删改操作,发现引用对象在map或者list是浅克隆,即克隆引用或者指针。1. demoPerson类省略package com.feng.clone;import java.util.HashMap;import java.util.Map;public class MapClo...

2019-10-24 22:26:51 105

原创 InheritableThreadLocal父线程传递子线程线程安全

前言 最近做项目,需要全链路跟踪,有各种比较成熟的方案,MDC/NDC log方式;zipkin之类的框架。究其根源是ThreadLocal与InheritableThreadLocal。下面看看两者的区别。1. threadLocal demopublic class ThreadLocalDemo { static ThreadLocal<String...

2019-10-05 17:55:48 327 4

原创 rocketmq API顺序消息的使用

前言 在使用rocketmq的时候如果要保证严格的顺序,那么就需要将消息发送到rocketmq的一个消息队列中,由于一个消息队列只能在一个broker上,可能处出现短暂的不可用性(当节点的一个master发生主备切换时)。1. producer demo使用rocketmq实现的SelectMessageQueueByHashpackage com.feng.rock...

2019-09-22 20:45:40 230

原创 Java SPI改造支持按需查找实例化实现类

前言 上一章分析了Java SPI机制的原理,是通过遍历查找实现类,并实例化对象。实际工作却需要按需查找并实例化对象。我自己写了一个简单的demo,仅在官方的API做少量修改即可。1. demo源码package com.feng.spi.demo.loader;import java.io.BufferedReader;import java.io.IOExcep...

2019-09-22 10:52:22 132

原创 JAVA SPI实现机制与原理分析

前言 最近要做业务接口,需要在多个模块根据需要调用不同的实现,立马就想到了SPI机制,但是Java自带的SPI又不能满足要求,使用dubbo的SPI就能达到目的,但这样就需要强依赖dubbo的jar,就想自己定制一个简单的实现,首先看看java的SPI如何实现。1. demopublic interface SPInterface { void hello();...

2019-09-19 22:56:48 140

原创 Java动态加载jar

前言 最近做项目,有需求需要运行过程动态加载jar,然后执行后加载别的jar,来达到实现不同的动态能力,下面实现了2种方式,各有各的优势。1. beanpackage com.feng.collections;public class Cat { private String name; private String type; publ...

2019-09-17 21:52:49 122

原创 rocketmq API MQPullConsumerScheduleService及pull load balance原理分析

前言 前面我们实现了rocketmq的pull模式,其实官方是有实现封装的,就是MQPullConsumerScheduleService。1. demopackage com.feng.rocketmq.base;import org.apache.rocketmq.client.consumer.*;import org.apache.rocketmq.clie...

2019-09-04 22:51:52 579

原创 Spring MVC 的web.xml文件配置解析

前言 最近准备定制化以前的老框架,spring mvc,使一些很老旧的框架升级到Spring MVC,并兼容目前的框架的能力。公司的框架就不讲了,基于spring web定制的,但不是spring mvc,事关公司的隐私,虽然也没什么技术含量,这里重点说说Spring MVC的web.xml的配置。1. spring mvc的web.xml的核心配置spring mvc的w...

2019-08-25 21:36:08 113

原创 rocketmq API 生产者与消费者,springboot集成RocketMQ

前言 rocketmq在Linux上搭建好了,现在说说rocketmq的默认producer与consumer方式。1. rocketmq设计我画了一张架构图rocketmq的每条队列是顺序的,跟kafka的partition很相似;rocketmq默认通过随机正整数+1取模方式来选取队列的。rocketmq通过MessageQueueSelector保证消息的顺序...

2019-08-25 16:32:39 942

原创 ubuntu 18.04 安装与卸载desk桌面,wmware克隆,设置静态ip

前言 由于笔者是用Ubuntu做服务器,desk 的UI很吃CPU和内存,资源最大化利用,卸载之。1. 卸载笔者的教程来源于Ubuntu官方的论坛,并自己实践成功后,给出卸载掉gnome-shell主程序$sudo apt-get remove gnome-shell卸载掉gnome$sudo apt-get remove gnome卸载不需要的...

2019-08-24 15:19:03 430

原创 SecureCRT无法连接VMWare Ubuntu虚拟机问题解决办法

前言 因为boss派发了任务,搭建rocketmq集群。本地只有windows,本来将系统做成Ubuntu了,然而软件实在不够用,又用回windows了,下载了vmware虚拟机,在虚拟机上安装了3个Ubuntu子系统,然而各种坑继续解决,第一是主机SecureCRT连接。1. 虚拟网卡设置vmware虚拟机的Ubuntu安装好后,需要安装ifconfig的程序包sud...

2019-08-24 14:55:24 244

原创 rocketmq 单机环境搭建

前言 最近做项目,boss要求将kafka切换为rocket mq,玩了一下rocketmq的动态切换。发现rocketmq能力还挺强大的,首先Windows下搭建一套环境。1. 下载mq 访问apache的官网下载rocketmq,目前最新版本是4.5.1,下载bin版本。当然也可以下载source版本自己编译。下载完后,解压缩从lib的jar...

2019-08-19 22:09:29 240

原创 Spring Boot server.port配置原理

前言 我们经常配置server.port=xxx,但其实这是一个比较复杂的过程才生效的,这次讲讲生效的过程。1. autoConfigure本质来源于自动配置org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfigurationTomcatServletWe...

2019-07-27 14:33:24 5018

原创 Spring Boot 静态资源不重启刷新,自定义配置

前言 经常做Spring Boot开发,有很多时候不需要前后端分离,比如后管系统。开发的时候每次修改页面就需要重启,极度不方便。其实Spring Boot设计是不需要重启的,只是我们没注意用法而已。1. demopom & main<dependencies> <dependency> <g...

2019-07-27 13:58:59 4625

空空如也

空空如也

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