java
阳光的亮亮
有好东西大家一起分享,共同进步。
展开
-
git命令回退指定项目版本
# 1.查询出commitIdgit log -pretty=oneline# 2.回滚指定版本的commitIdgit reset --hard commitId# 3.强推保证本地和远程同步git push -f# 4.重新查询新提交记录git reflog原创 2021-12-21 15:40:17 · 307 阅读 · 1 评论 -
jdk1.8 计算集合对象中各个属性值分别相加写法
问题:计算集合对象中各个属性值分别相加操作,但是下面这种写法太low了public static void main(String[] args) { List<Test> testList = Arrays.asList(new Test(1L,2L,3L,4L,true),new Test(1L,2L,3L,4L,false),new Test(1L,2L,3L,4L,true)); Long aSum = 0L; Long bSum = 0L; ...原创 2021-07-21 13:56:35 · 2216 阅读 · 0 评论 -
项目指定git分支回退到指定版本步骤
1.找到要回退的版本号(右击项目--> Git --> Show History -->选中要回退的版本-->Copy Revision Number); 2.打开idea的Terminal 输入命令 gitreset--hard139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96 (后面为版本号) 3. 把修改推到远程服务器 gitpush-f-uoriginmaster(master为指定分支)...原创 2021-07-06 16:09:36 · 1834 阅读 · 0 评论 -
maven项目框架脚手架使用方法
我们的项目现在几乎都是微服务架构,开发人员通常会自己负责某一模块的微服搭建和开发,每个人因技术水平不同,搭建出来的项目框架五花八门,这样子我们就需要将通用的项目框架交给maven管理,开发人员只需执行一下maven命令就能下载使用mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate ^ -DgroupId=com.baidu.ea2 ^ -DartifactId=test-demo ^ -Dversion=1....原创 2021-06-22 10:34:06 · 207 阅读 · 0 评论 -
电商系统设计
电商系统设计要点一、 最主要的业务流程 1‑1购物流程 1‑2购物流程时序图 时序图详解: 1、用户开始浏览商品,需要有一个商品模块来支撑,给用户展示商品的介绍、价格等等这些信息。 2、用户把选好的商品加入购物车,这个步骤,也需要一个购物车模块来维护用户购物车中的商品。 3、 用户下单肯定需要一个订单模块来创建这个新订单。订单创建好了之后,需要把订单中的商品...原创 2021-05-19 11:28:28 · 1806 阅读 · 0 评论 -
cpu飙升系统挂掉解决方案
1.使用top命令找到cpu占比高的进程ID2.使用jstack pid > jstack.txt命令导出进程对应的所有线程信息jstack 26020> jstack.txt3.使用fastthread【地址:fastthread.io】导入jstack.txt文件进行分析4.点击左边栏CPU threads找到对应的线程,在点击See complete stacktrace找到对应的业务接口代码进行优化总结:通过上面的操作很容易就能找到哪个接口消耗cp原创 2021-05-07 09:15:07 · 369 阅读 · 0 评论 -
Dubbo 发展史一览
Dubbo 发展史一览2011 年 10 月 27 日,阿里巴巴开源了自己服务化治理方案的核心框架 Dubbo,服务治理的设计理念开始逐渐在国内软件行业中落地,并被广泛应用。自开源后,许多非阿里系公司选择使用 Dubbo,其中既有当当网、网易考拉等互联网公司,也有中国人寿、青岛海尔等传统企业。2012 年 10 月 23 日 Dubbo 2.5.3 发布后,在 Dubbo 开源将满一周年之际,阿里基本停止了对 Dubbo 的主要升级。2013 年,2014 年,更新了 2 次 Dubbo 2.4原创 2021-04-08 09:19:24 · 1242 阅读 · 0 评论 -
搭建zookeeper集群
这里以2台机器为例【10.253.96.110,10.253.96.135】,n台机器都是一个原理1.下载zookeeper官网自行下载:https://zookeeper.apache.org/releases.html#download2.将下载好的apache-zookeeper-3.7.0-bin.tar.gz上传两台服务器3.解压tar -zxvfapache-zookeeper-3.7.0-bin.tar.gz这里我把解压后文件放到了/opt/softs下并把名.原创 2021-04-07 17:28:03 · 119 阅读 · 0 评论 -
Git管理分支规范
Git管理分支规范,严格执行啊,哈哈develop分支开发分支,保存开发时最新的代码和最后的bug修复,各开发人员都有对它pull和push权限。feature分支特性分支,开发新特性时从develop分支创建,命名规则为feature-name。一般是开发相对独立的功能模块时创建,开发完成后合并到develop分支。release分支预上线分支,主要用来集成测试,一般在开发完成后准备测试时从develop分支创建,主要用来跟踪测试环境的bug问题。测试没有问题后合并到m...原创 2021-04-07 10:50:24 · 107 阅读 · 0 评论 -
IT项目生命周期
贴个图记录下,非常勿扰原创 2021-04-06 14:16:46 · 305 阅读 · 0 评论 -
Nacos集群配置
1.单机启动 官方下载nacos,默认nacos是集群启动的,直接运行启动文件会报错的,需要在启动命令后加参数 -m standalone例如:startup.cmd -m standalone 【wins】,startup.sh-m standalone 【linux】,当然这不是我们今天的主题2.集群启动由于我不想搭建虚拟机,就在本地通过3个端口模拟3台机器,端口分别是:8849,8851,9991,步骤:2.1. copy3份解压后的nacos,修改各自的applicati...原创 2021-03-24 11:59:34 · 2628 阅读 · 3 评论 -
CountDownLatch+CyclicBarrier+Semaphore
今天我们看下存在于java.util.cucurrent包下的其他工具类:countDownLatch,CyclicBarrier,Semaphore1.CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,大白话就是:4个线程同时执行任务,最后一个线程一直等3个线程执行完之后才执行原理:初始化为3的计数器,启动3个线程,每启动一个线程计数器就会减1,当计数器为0时,也就是前3个线程都执行完了,最后一个线程才被唤醒执行汇总逻辑,主要通过countDown和await方法实现.原创 2021-03-02 16:42:19 · 111 阅读 · 0 评论 -
集成kafka
环境配置:1.增加spring-kafka的配置spring kafka: # 指定kafka 代理地址,可以多个 bootstrap-servers: 10.253.96.128:9092 template: # 指定默认topic id default-topic: producer listener: # 指定listener 容器中的线程数,用于提高并发量 concurrency: 5 consumer:...原创 2021-02-09 17:14:44 · 188 阅读 · 0 评论 -
Logstash配置
修改配置文件 logstash-sample.conf :# input{ } ,elasticsearch{ }不需要修改 output{ }需要添加自己配置的服务 input {redis { data_type =>"list" key =>"default_list" host =>"10.253.100.121" port => 637...原创 2021-02-09 11:38:11 · 285 阅读 · 4 评论 -
Filebeat的安装
Filebeat的安装选用filebeat的版本和es,kibana的版本号一致,我们之前采用的是7.2.0的版本,故需安装filebeat的版本是7.2.0 【filebeat-7.2.0-linux-x86_64.tar.gz】解压,修改配置文件。修改配置文件filebeat.yml=============Filebeat inputs ==================配置日志读取的路径 以及自定义的字段 注:要yml的格式- type: log enabled:...原创 2021-02-09 11:33:00 · 347 阅读 · 0 评论 -
手动写一个Spring中注解是怎么依赖注入的
面试中被问到了Spring中注解是怎么依赖注入的,今天就这个话题,总结一下,大致思想是: 1.用反射机制. 获取指定的包下使用了注解的类,存储到bean容器 2.循环获取bean容器中类的属性并利用反射给使用了注解的属性赋值对象一.我们自定义注解替代我们平时用的@Sevice @Resource注解/** * 作用在Service实现类上的注解,由于有@Component,会自动加载Service实现类到bean容器中 * @author RenPL */@Documented..原创 2021-02-08 10:31:08 · 192 阅读 · 2 评论 -
微信支付工具类
import lombok.extern.slf4j.Slf4j;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.原创 2021-02-01 10:36:45 · 510 阅读 · 0 评论 -
工作中常用的linux命令汇总
1.ps aux 查看系统中的进程状态,用于分析进程PID对应的CPU使用率,内存使用率,进程状态等等使用场景:启动jar的时候老是起不来,偶尔会出现启动一个jar就会把另一个启动好的jar给踢掉,这时候我们需要查看linux CPU或者内存有没有被占满,比如:我们可以列出前10个内存或者是CPU占用最高的进程相关信息,来解决我们的问题,把占用CPU或者内存高的没用的进程kill掉 1.1 列出前10个C内存占用最高的进程相关信息 ps aux | head -n 1; ps aux...原创 2021-01-28 14:19:58 · 164 阅读 · 0 评论 -
nginx配置ssl安全证书来支持https请求
1.申请免费的证书 阿里云等平台自行去申请2.将这两个文件放置到服务器中,这里放到/root/temp目录下 full_chain.pem private.key3.配置nginx的配置文件server {listen 443;server_name test.com; #配置二级域名location ^~/test_api/ {proxy_pass http...原创 2021-01-26 16:54:36 · 200 阅读 · 0 评论 -
记录一篇优秀的关于nginx的文章
https://www.runoob.com/w3cnote/nginx-setup-intro.html原创 2021-01-26 13:18:42 · 95 阅读 · 0 评论 -
redis实现分布式锁-直接用去吧
import com.alibaba.fastjson.JSON;import com.google.common.collect.Lists;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Scope;import org.springframework.data.原创 2021-01-20 13:45:18 · 131 阅读 · 2 评论 -
常用的docker-compose.yml贴一下
version: '3'services: #mysql服务 mysql5.7: restart: always image: mysql:5.7 container_name: docker_mysql environment: MYSQL_ROOT_PASSWORD: "123456" MYSQL_USER: 'root' MYSQL_PASS: "123456" volumes: - /opt...原创 2021-01-07 14:00:07 · 221 阅读 · 1 评论 -
docker 运行 seata-server 配置nacos
1、拉取镜像docker pull seataio/seata-server:1.4.02、运行镜像docker run --name seata-server -p 8091:8091 -d seataio/seata-server:1.4.03、复制配置文件到主机docker cp seata-server:/seata-server /opt/seata 该命令会把seata-server容器目录结构复制到我们宿主机/opt/seata目录下4、停止服务d.原创 2020-12-22 13:56:10 · 754 阅读 · 0 评论 -
Nacos集成分布式事务Seata文档
今天参照seata官方文档总结下seata集成,网上有很多各式各样的博客,有的真是误导人,个人建议以后学习新组件,我们一定要先看组件官方文档,这里我们以seata1.4 AT模式为例服务端搭建步骤:1.打开seata官方文档:http://seata.io/左下角找到 【部署】==> 新人文档2.下载seata源码 https://github.com/seata/seata/tree/1.4.0 存放client端sql脚本,参数配置和server端数据库脚本及...原创 2020-12-21 15:50:06 · 762 阅读 · 0 评论 -
IDEA+Docker实现服务自动化部署
11原创 2020-12-07 11:40:57 · 210 阅读 · 0 评论 -
docker部署springboot项目
1.在dockerTest目录下创建Dockerfile文件2.本地项目打包jar上传至dockerTest目录下3.Dockerfile内容如下FROM openjdk:8-jdk-alpineVOLUME /tmpADD hy-base-web.jar /app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]4.进入dockerTest目录下执行docker命原创 2020-12-04 17:03:33 · 68 阅读 · 0 评论 -
Lists.partition(List<T> list, int size)集合分组函数总结
Lists.partition(List<T> list, int size)这个函数有什么用途呢?这里我给大家列举一例:比如我们系统中有一个批量导入的接口,由于数据量很大,写入数据库很耗时,导致这个接口是用不了【TimeOutException】怎么解决呢?我们脑海里立即会想到多线程去处理,一堆砖块让多个worker去搬,效率更高些,那问题来了,每个worker搬多少砖呢?这就用到我们这次说的Lists.partition函数Lists.partition函数由很多公司或者组织原创 2020-11-30 14:07:31 · 1358 阅读 · 3 评论 -
MQ消息内容去重消费解决方案
今天写一个小儿科的MQ消息去重消费解决方案,思路如下:1.在消息体中定义消息的唯一索引字段uniqueId private StringuniqueId;2.重新uniqueId字段的get方法给uniqueId赋值,具体生成uniqueId值算法根据系统业务需求而定 比如: public String getUniqueId() { StringBuffer columnAppend = new StringBuffer().append(wechatG...原创 2020-11-23 14:09:34 · 1098 阅读 · 0 评论 -
一款优秀的开源框架
github https://github.com/elunez/eladmin https://github.com/elunez/eladmin-web 码云 https://gitee.com/elunez/eladmin https://gitee.com/elunez/eladmin-web 开发文档:https://el-admin.vip前端模板初始模板基于:https://github.com/Pa...原创 2020-11-11 09:30:00 · 183 阅读 · 0 评论 -
Docker常用命令记录
=======================================docker 常用命令==============================================docker ps -a ===>> 查询详细的docker进程信息docker images ===>> 查看本机镜像信息docker search 镜像名称 ===>> 根据镜像名称查询镜像信息docker pull 镜像全路径 ===>...原创 2020-11-10 09:32:39 · 70 阅读 · 0 评论 -
springboot之https安全访问
SpringBoot启动时默认采用http进行通信协议定义,考虑到安全,往往会使用https进行访问。正常来讲,https的访问是需要证书的,并且为了保证这个证书的安全,一定要在项目中使用CA进行认证。下面只是在本机做一个简单的模拟,利用Java提供的keytool命令实现证书的生成。1.【操作系统】利用keytool生成一个证书。该程序执行完成后会生成一个名称为keystore.p12的证书文件,该证书的别名为mytomcat,访问密码为mldnjava。2.【mldnboot-web项目】将原创 2020-10-26 16:17:46 · 594 阅读 · 0 评论 -
redis序列化工具类
用于初始化redis模板时序列化属性设置:redisTemplate.setValueSerializer(redisObjectSerializer);工具类如下:import org.springframework.core.convert.converter.Converter;import org.springframework.core.serializer.support.DeserializingConverter;import org.springframework.core.s.原创 2020-10-26 10:40:35 · 557 阅读 · 0 评论 -
防暴力破解,限流策略
限流组件ratelimit配置<dependency> <groupId>com.marcosbarbero.cloud</groupId> <artifactId>spring-cloud-zuul-ratelimit</artifactId> <version>2.0.6.RELEASE</version></dependency>注:不能使用版本太低的,版本太低的在配...原创 2020-10-14 09:37:49 · 467 阅读 · 0 评论 -
利用反射将类[以及父类]中所有非空字段填充至Map
@Slf4jpublic class ReflectionUtil { /** * 类中所有非空字段填充至Map * * @param target * @return */ public static Map<String, Object> getAllNonFieldToMap(Object target) { Map<String, Object> map = new HashMap<.原创 2020-10-09 10:30:09 · 132 阅读 · 0 评论 -
RabbitMQ 集群与高可用配置
集群概述首先RabbitMQ这款产品本身的优点众多,大家最看好的便是他的异步化提高系统抗峰值能力,然后便是系统及功能结构解耦,那么照此两点来说,他的在整个系统中的作用还是至关重要的,那么如此重要,当然要考虑他的高可用性,通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。这些节点通过RabbitMQ HA 队列(镜像队列)进行消息队列结构复制。本...原创 2020-09-18 14:02:11 · 117 阅读 · 0 评论 -
使用多线程实现一个阻塞队列
package com.es.demo;import lombok.extern.slf4j.Slf4j;import java.util.LinkedList;import java.util.concurrent.atomic.AtomicInteger;/** * 使用多线程实现一个阻塞队列 * * @author renpl */@Slf4jpublic class MyBlockQueue { // 初始化一个普通队列 private final Link.原创 2020-09-18 10:12:46 · 339 阅读 · 0 评论 -
ELK流程图
大致框架架构ELK是一组开源软件的简称,其包括Elasticsearch、Logstash 和 Kibana。ELK最近几年发展迅速,已经成为目前最流行的集中式日志解决方案。 Elasticsearch: 能对大容量的数据进行接近实时的存储,搜索和分析操作。 本项目中主要通过Elasticsearch存储所有获取的日志。 Logstash: 数据收集引擎,它支持动态的的从各种数据源获取数据,并对数据进行过滤,分析,丰富,统一格式等操作,然后存储到用户指定的位置。 Kibana...原创 2020-09-15 09:34:15 · 773 阅读 · 0 评论 -
ES集群的安装
ES集群的安装1 安装java环境 yum -y install java-1.8.0-openjdk*->需要最新的JDK环境1.82. 2 安装 es curl -L -Ohttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0.tar.gztar -xvf elasticsearch-7.2.0.tar.gzes不能使用root用户 需要创建账号。es用户: es 密码:1q...原创 2020-09-15 09:29:20 · 158 阅读 · 0 评论 -
ElastAlert邮件告警
搭建目的:用ELK stack来做日志收集分析,Kibana强大而方便,跟踪分析统计样样俱全,然而,但是,却有一个问题。ELK自能通过手动查询日志,而不能发出邮件通知。而ElastAlert可以实现此功能。elastalert依照一定频率查询es,将查询结果对比告警阈值,超过阈值即进行告警。告警方式包括但不局限于邮箱、jira等。虽然官方没有提供微信等告警方式,但是也有第三方版本可以使用。大致架构:使用elastalert的步骤简单分为以下几步:1. 安装elastalert.原创 2020-09-15 09:27:05 · 3831 阅读 · 0 评论 -
Java线程死锁排查技巧
1,获取Java服务端口对应的进程ID netstat -anpl | grep 服务端口号2,进入jdk安装目录下的bin目录下执行jstack服务,生成thread.txt文件 jstack 端口 > thread.txt3,将thread.txt文件上传至线程分析在线工具中进行分析【网址:fastthread.io】4,如果线程出现死锁,分析结果中就会出现blocked,我们分析blocked部分查找问题的根源...原创 2020-08-25 15:58:03 · 680 阅读 · 0 评论