自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(118)
  • 资源 (2)
  • 收藏
  • 关注

原创 服务端埋点系统设计

一、介绍所谓“埋点”,是数据采集领域(尤其是用户行为数据采集领域)的术语。指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。 埋点的技术实质,是先监听软件应用运行过程中的事件,当需要关注的事件发生时进行判断和捕获。本博只是简单演示如何实现埋点采集信息,至于后续信息如何使用,不关注,常见的,有MQ处理、Spark&Hbase,等处理方式。二、实现过程大致思路:采集...

2020-04-07 18:27:03 3555 1

原创 Spring Cloud(二):服务注册与发现Eureka

1、介绍对于微服务的治理而言,其核心就是服务的注册和发现。在SpringCloud 中提供了多种服务注册与发现组件:Eureka,Consul,Zookeeper。官方推荐使用Eureka。 说明:Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重...

2018-06-25 22:50:50 16815 2

原创 恢复MAC保存丢失的word文档

mac环境下保存word异常,如何找到文件

2022-06-27 14:20:42 1997 1

原创 设计模式之管道模式

管道模式(Pipeline Pattern) 是责任链模式的常用变体之一

2022-05-09 22:26:25 1453

原创 设计模式之责任链模式

职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。

2022-05-07 16:18:38 353

原创 Mysql数据库保存时间timestamp,相差13小时

Mysql数据库保存时间timestamp,竟然相差13小时

2022-05-06 11:39:45 2083 1

原创 设计模式之策略模式

简介策略模式定义了一系列算法,并将每个算法封装起来,从而使得它们可以相互替换。策略模式的使用的算法对客户端是无感知。场景需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口。策略模式的决定权在用户,系统本身提供不同算法的实现。策略模式多用在决策系统中,外部用户只需要决定用哪个算法即可。运用背景审核系统接收业务系统提交的审核数据,根据入参里面的审核类型字段,决定是进行初审、复审、终审具体某一个操作。审核类型枚举类@Getterpublic enum AuditTypeEnum

2022-05-05 11:08:08 393

原创 记一次SimpleDateFormat时间格式定义引发的线上问题

SimpleDateFormat 的一个小小的时间格式问题,竟然导致生产bug。

2022-05-01 15:03:45 694

原创 服务限流实战

一、服务为什么限流 <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" acceptCount="100" /> 二、服务限流怎么做三、限流典型算法四、防止重放技术方案实现五、令牌桶算法技术方案实现...

2021-10-20 18:10:35 413

原创 推荐一款导出神器EasyExcel

前言数据导出excel,一般有jxl,poi,在这两者中,poi性能更优。今天推荐一款性能更优,更强大的工具EasyExcel,提供了各种便捷的API,以及定制化功能。可以EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。(官方说明)实例分别定义两个接口,一个使用Apache POI的方式进行导出,另一个使用EasyExcel组件导出;数据样本分别是百量级别、千量级别、万量级别,从而观察两者组装数据的时间,导出exc

2021-08-18 16:44:40 380

原创 记一次述职答辩总结

一、 述职前的准备1、 材料的准备材料的收集整理自上次晋升(或者入职公司)后所参与的项目。如果是参与的项目比较多,可以精简2-3个项目。但是其中,必须包括一个主导的项目。对于主导项目至少展开2-3页PPT,涉及到项目的背景、流程、架构技术、绩效成果、项目难点(包括解决方案)。对于其他项目,业绩的输出,也需要体现在PPT中,可以一页PPT,但是不能不写,否则评委以为你就干了一个项目。(务必)统计项目中一些常见的指标,比如:提升了多少效率、达到了多少指标。如果涉及到项目的改造/

2021-05-31 11:33:05 792

原创 玩转SpEL

一、概述Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”。是一个支持查询,并在运行时操纵一个对象图功能、是一门强大的表达式语言。SpEL是单独模块,只依赖于core模块,可以被独立使用、运行。二、作用一、基本表达式字面量表达式、关系,逻辑与算数运算表达式、字符串连接及截取表达式、三目运算、正则表达式、括号优先级表达式;二、类相关表达式:类类型表达式、类实例化、instanceof表达式、变量定义及引用、赋值表达式、自定义..

2020-12-29 17:30:23 890

原创 Easy Rules 配置文件外置-Mysql

一、场景前一篇,介绍了Easy Rules作为Java一款轻量级的规则引擎,使得研发更加注重于纯业务开发,提高开发效率。这一篇,主要是围绕,规则配置数据,外置于数据库Mysql的实现。二、思路1、Mysql存储新建表t_biz_rule、t_biz_rule_compose分别存储规则定义、规则组合定义2、构建RulesMysql中的Rule、RuleCompose转换成RuleDefinition对象定义Rules注册工具类Helper,为每个RuleCompose注册3、定

2020-12-25 14:46:49 3434 12

原创 Java规则引擎easy rules

场景简单点描述,easy rules就是为了干掉if…else…语句。Easy Rules可以把业务逻辑抽象出来,使得业务开发更加顺畅、维护迭代更加快捷,代码更加清晰;有点策略模式的味道。功能轻量级框架,基于API方式支持基于POJO和注解方式开发支持创建组合规则支持使用表达式语言(MVEL/SpEL)名词描述name:规则名称,唯一性description:说明描述priority:优先级Facts:事实Conditions:条件Actions:执行动作案例背景定义

2020-12-21 20:28:49 4628 3

原创 基于spring-security快速实现图形验证码、token验证

验证码(图形、短信、邮箱)、token机制对于系统的安全性已经是老生常谈;本文将结合spring-security快速实现Google图形验证码、token的安全性校验。技术储备1、UserDetailsService接口/** * Core interface which loads user-specific data. * <p> * It is used throughout the framework as a user DAO and is the strategy us

2020-12-12 15:57:27 1321

原创 统一处理登陆用户信息

在使用各种权限框架的时候,如:apache-shiro、sping-security等,可以分别使用对应的context获取principal信息;常见的操作是在一个抽象类或者单独的service统一处理。本篇文章,基于shiro框架,使用方法注解的方式,获取对应的登陆用户principal信息。技术储备1、HandlerMethodArgumentResolver接口。/** * Strategy interface for resolving method parameters into arg

2020-12-12 14:03:12 421 1

原创 json序列化按顺序输出

一、背景如今凭借Diamond和Apollo的开源使用,编程更加动态化,配置化。博主就遇到一个这样的问题,即:后端控制前端某个附件的显示文案,由于附件类型也不多十几个左右,而且每个附件的显示文案均不同。采用数据库形式有点大材小用,而且每次数据库IO也耗时。故采用Apollo动态配置化使用,即使后续PM针对附件变更,也可动态上下线,而不用修改代码,发布项目。二、过程配置好了,博主打算用JSON来接受Apollo的配置,然后匹配附件Code,进行数据填充。简单的案例Demo如下:public

2020-09-24 19:50:21 2191

原创 基于丝袜哥的knife4j,您值得拥有!

一、介绍Knife4jknife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。参考文档swagger配置二、基础搭建1、pom依赖 <io.swagger.version>1.5.21</io.swagger.version> <swagger2.version>2.9.2</swagger2.version> <knife4j.version>2.0.2</knife4j.ve

2020-06-01 17:16:27 1136

原创 controller返回string类型和bean的序列化、乱码

@Bean public HttpMessageConverter<String> responseBodyConverter() { return new StringHttpMessageConverter(StandardCharsets.UTF_8); } @Bean public ObjectMapper getObjectMapper() { ...

2020-04-21 17:22:35 1713

原创 记一次Mac环境下修改数据库的sql_mode

一、业务场景在mac环境下,由于通过SQL查询,使用到了group by,而且by多个字段。例如:select a,b,c from table group by a,b 。发现执行SQL报错了。Expression #5 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'table.a' ...

2020-03-31 12:42:35 2410 1

原创 解决Mysql 'max_allowed_packet' variable 异常

在SQL操作的时候报错如下Mysql You can change this value on the server by setting the max_allowed_packet' variable. Packet for query is too large (7012 > 2048). You can change this value on the server by set...

2020-03-15 12:01:14 1151

原创 Mac home 目录下创建文件夹

一、背景mac 是基于unix, 自带就有home目录,但是为空。home目录的默认所属用户是root wheel,mac默认的root账号所属用户是root admin。二、操作过程1、修改/etc/auto_master文件,目的是屏蔽/home目录的保护# Automounter master map+auto_master # Use directory s...

2020-02-25 16:13:58 4749 4

原创 SpringBoot MultipartResolver的坑

背景在使用springBoot上传文件的时候,我们会用到MultipartResolver。我看通过源码可以看到@Configuration@ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class, MultipartConfigElement.class })@ConditionalOnPr...

2019-10-11 11:03:47 10549 8

原创 基于LoggingEvent的报警starter项目

引言SpringBoot的一大优势就是提供了开箱即用的Starter,使得我们开发变得简单,我们不需要过多的关注框架的配置。举个例子,spring-boot-starter-jdbc这个starter的存在,使得我们只需要在SpringBootApplication运用程序下用@Autowired引入DataSource的bean就达到了Bean的装配,SpringBoot会自动创建DataSo...

2019-09-12 22:36:18 1094 1

原创 二、elasticSearch整合kibana和logstash

一、回顾elasticSearch配置完成以后二、下载安装kibana2.1:下载wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.0-x86_64.rpmwget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.0-x86_64.rpm2.2...

2019-04-24 15:22:01 1840

原创 一、elasticsearch基础

一、下载安装1.1、下载wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-x86_64.rpmwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-x86_64.rpm1.2、安装...

2019-04-22 20:02:24 1414

原创 如何实现merge request功能

一、业务背景现如今的需求版本开发迭代中,由于协同合作研发的必要性,如何有效的解决协同研发带来的项目管理问题,最终提高员工的效能,是十分迫切,亟待解决的。二、准备工作版本控制:gitHub研发工具:idea用户角色:master、developer三、实施方案3.1、远程仓库3.1.1、建立一个项目 merge_test3.1.2、建立一个master分支(主分支)3.2、for...

2019-04-19 17:07:11 7827

原创 四、binlog与canal的藕断丝连

一、Canal的介绍名称:canal [kə’næl]译意: 水道/管道/沟渠语言: 纯java开发定位: 基于数据库增量日志解析,提供增量数据订阅&amp;消费,目前主要支持了mysql二、binLog主备原理mysql主备复制实现从上面来看,复制分成三步:master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log event...

2019-01-31 17:14:59 1769

原创 三、binlog与kafka良配

一、Zookeeper1.1、下载zkwget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gztar -zxvf zookeeper-3.4.10.tar.gz 1.2、制定配置文件cd zookeeper-3.4.10/confcp zoo_sample.cf...

2019-01-31 16:20:27 2679

原创 二、binlog的主从复制

1、复制原理1.1、Master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件,这些记录叫做二进制日志事件(binary log events)1.2、Slave通过I/O线程读取Master中的binary log events并写入到它的中继日志(relay log)1.3、Slave重做中继日志中的事件,把中继日志中的事件信息一条一条的在本...

2019-01-30 20:55:53 3204

原创 一、binlog的简介

1、日志类型:Error Log、General Query Log、Binary Log、Slow Query Log。分别是错误日志、一般查询日志、二进制日志、慢查询日志。错误日志:记录错误日志信息;一般查询日志:记录前端查询语句,SQL Statement;二进制日志:记录了数据库的改动,比如新建表、数据记录变更等。两个非常重要的功能:复制、恢复。慢查询日志:记录了慢SQL Sta...

2019-01-30 14:24:21 1891

原创 Nginx负载均衡策略

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询(默认),加权轮询,Ip hash,第三方。一、热备如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB…upstream mysvr { server 127.0.0.1:7878; server 192.168.1...

2019-01-25 17:12:39 1507

原创 Nginx配置详解篇

找出nginx的配置文件nginx.configwhereid nginxnginx的配置文件如下:########### 每个指令必须有分号结束。##################user administrator administrators; #配置用户或者组,默认为nobody nobody。#worker_processes 2; #允许生成的进程数,默认为1#...

2019-01-24 22:16:02 1473

原创 Nginx基础概念篇

一、概念Nginx(engine X)是一款轻量级web服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器。1.1、名称解析反向代理:代理服务器接受了从Internet上的请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求的连接的客户端。反向代理服务器并没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务...

2019-01-24 21:52:35 1475

原创 巧妙的设计签到

一、背景由于需要做项目的返利,需要设计一个签到功能项。得到如下需求点:1、连续签到记录连续签到的天数,根据连续签到的天数,获取对应的相应的奖励;2、记录每月的签到情况根据签到情况,大致可以分析用户对项目的使用情况。二、设计方案考虑到连续签到,设置两个个字段,signCount(连续签到数),modified(修改时间,格式:yyyy-MM-dd)。当用户签到的时候,判断一下,今天...

2018-12-12 22:15:52 1425 2

原创 域名解析

背景腾讯云一台服务器,以及万网一个域名,例如:abc.com;三个项目,一个前端项目;两个后端服务项目,一个web项目端口号:8090,另一个admin项目端口号:8081。目的解析域名abc.com,并且初始化二级域名m.abc.com(手机mobile)以及admin.abc.com(项目后台),以及abc.com SSL https访问安装。步骤一、域名解析二、添加记录注...

2018-12-09 23:26:46 1083

原创 Spring的重试机制

一、背景:在项目开发中,RPC(Remote Procedure Call)即远程服务调用,必不可缺。既然存在远程服务的调用,那么必然存在服务方不可用的问题。比如,网络的抖动、服务上线。二、方案:在调用方采用retry重试机制,并且全局采用一个探针机制。即,如果重试次数达到了一定的阀值,将会开启探针。并且接下来的请求将不会调用RPC,对调用方的请求产生熔断,不至于因为服务方的服务不可用,造成...

2018-12-03 14:50:31 1600

原创 搞定mysql,创建用户及分配权限

最近在搞otter的数据库数据同步(整理好发布),其中涉及到mysql的用户权限问题,故整理如下:mysql的安装方式详情见:https://blog.csdn.net/ruben95001/article/details/80795533一、控制台登陆mysql报错“Access denied for user ‘root’@’localhost’”解决方案:重置root密码...

2018-09-14 18:45:08 5354

原创 Spring Cloud(九):配置中心Config

一、背景随着时间的推移,以往的单点部署项目,渐渐的转变为多点,分布式集群部署。接踵而来的是配置文件的凌乱部署,某一个基础服务的配置变更,都将造成服务的重新部署。二、概述Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。很容易添加替代实现,并使...

2018-07-29 17:24:32 2545

原创 Centos下yum快速安装各环境

一:JDK的安装 1.1:检查系统中Java的所有版本的安装listyum list java* 1.2:选择一个版本的安装例如1.8yum install java-1.8.0-openjdk* -y1.3:使用命令检查是否安装成功java -version二:Maven的安装 2.1:下载Maven的包wget http://repos.fed...

2018-06-24 22:44:12 2656

SpringCloud下载

SpringCloud的PPT包含了服务发现与注册 Eureka,服务消费 Ribbon 和 Reign,链路监控 Sleuth,断路器(熔断器)Hystrix,分布式配置中心 Config,消息总线 Bus ,服务网关 Zuul,10.Spring Boot Admin 服务监控

2017-09-12

jira的汉化包

jira的汉化包,我们把这个包放在你的JIRA的安装目录的\atlassian-jira\WEB-INF\lib目录下,既可以享受中文版的Jira

2017-09-12

空空如也

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

TA关注的人

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