自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (8)
  • 收藏
  • 关注

原创 RocketMQ在windows环境下的搭建安装

RocketMQ在windows环境下亲自搭建,记录过程步骤,并记录采到的坑环境:1.系统Windows2.环境 JDK1.8、Maven、Git3.下载rocketmq-all-4.4.0-bin-release(下载链接:https://rocketmq.apache.org/)" 注意:下载binary版本 启动服务: 注意:rocketmq-all-4.4.0-bi...

2019-03-19 11:57:50 4584 5

转载 Spring IOC 容器源码分析

转载:Spring IOC 容器源码分析_Javadoop创建时间: 2017-11-15 00:00:00Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文采用的源码版本是 4.3.11.RELEASE..

2022-01-27 14:26:33 205

原创 java基础-集合

为什么要使用集合?当存储数据的时候,当数据多的时候变量就不方便了, 不是一个明智的选择,那么数组呢,数组也不是个好的选择,数组在创建的时候需要指定长度,在使用的时候长度不变, 所有我们要寻求一个拥有可变长度的容器来存储这些数据。还好Java提供了各种各样的容器,每个容器的长度都是可变的,我们只管往里面存,空间如果不够,它自己会调。所以有再多的数据我们也不怕,也不用看着下标去存,当看到提供的对应方法的时候就知道是什么操作了.比如:add,remove,size,isEmpty.....

2021-10-30 15:22:03 219

原创 类加载器

类加载器 虚拟机自导的加载器 自动类加载器 扩展类加载器 应用程序加载器 双亲委派机制如果写了个java.lang;包,去实现tostring();那么类加载器的执行顺序是:1.app应用程序加载器>>2.ext扩展加载器>>3.boot最终执行(根加载器)Java为什么叫C++-- 的原因是:C++去掉了指针,去掉了内存管理沙箱安全机制:...

2021-04-23 11:44:34 193

原创 Java虚拟机

2021-04-23 11:38:26 174 1

原创 Spring的AOP

在Spring的AOP编程中:如果加入容器的目标对象有实现接口,用JDK代理如果目标对象没有实现接口,用Cglib代理静态代理和动态代理的区别?由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性sp.

2021-04-23 11:34:01 99

原创 Maven 多模块父子工程,子工程含web模块

一、为什么要用Maven多模块假设有这样一个项目,很常见的Java Web应用。在这个应用中,我们分了几层:Dao Service Web对应的,在一个项目中,我们会看到一些包名:org.xx.app.dao org.xx.app.service org.xx.app.web org.xx.app.util但随着项目的进行,你可能会遇到如下问题:这个应用可能需要有一个前台和一个后台管理端,你发现大部分dao,一些service,和大部分util是在两个应用中可。 po..

2021-04-09 17:51:02 973

原创 PageHelper插件分页实现原理及大数据量下SQL查询效率问题解决

前因:项目一直使用的是PageHelper实现分页功能,项目前期数据量较少一直没有什么问题。随着业务扩增,数据库扩增PageHelper出现了明显的性能问题。几十万甚至上百万的单表数据查询性能缓慢,需要几秒乃至十几秒的查询时间。故此特地研究了一下PageHelper源码,查找PageHelper分页的实现方式。一段较为简单的查询,跟随debug开始源码探寻之旅。主要保存由前端传入的pageNum(页数)、pageSize(每页显示数量)和count(是否进行count(0)查询)信息。这里

2021-03-12 10:26:52 451

原创 Hashtable和HashMap的区别

下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法:index = (hash & 0x7FFFFFFF) % tab.lengthHashMap底层数组+链表实现,可以存储null键和null值,线

2021-03-08 12:20:21 9219

转载 quartz,java世界里面的任务管理容器

quartz,java世界里面的任务管理容器。至于为什么会有misfire这个概念,我想可以重这三个方面来进行说明:1 所有的线程都在忙于更高优先级的任务2 任务本身CRASH了3 代码的BUG,导置错误的设置了JOB基于这3种原因,其实也是现实世界中的常理。没有任何事情,都能保证100%运行OK。quartz提出了misfire的理论,让任务在错过之后,还能正常的运行。以下分别对几种类型的JOB进行说明:without repeating(不重复的JOB)这里只列出有代表的

2021-02-04 15:18:50 174

原创 各map的key、value为null的统计记录

2021-02-03 12:26:49 271

原创 RocketMQ-如何保证消息顺序消费

1.实现顺序消费    RocketMQ支持局部顺序消费,但不支持全局,换句话说针对Topic中的每个queue是可以按照FIFO进行消费。    要保证一个订单有关的消息顺序消费,有两点需要注意,一是将订单有关的消息发送到相关Topic中同一个queue里,二是消费者按照先进先出的原则进行消费。2.消息发送到指定queue中    在消息发送时,需指定对应的MessageQueueSelector,此时我们只需通过订单号与queue进行关联,代码如下。send中的参数arg即为select中

2020-10-20 20:16:57 8244

原创 java8,Stream的理解和使用

1、Stream 在java8中是对集合Collection对象功能的增强2、专注于对集合对象进行便利,高效聚合,大批量数据操作3、常用方法:filter,map,limit等等…实例代码:.....List<String> listStr= listObj.stream() //筛选出卡路里大于400的 .filter(d -> d.getCalories() < 400) //抽取名字属性创建一个新的流 .map(Dish::getNam

2020-08-12 14:51:24 219

原创 java用http请求高德,百度地图坐标以及驾驶时长

高德:根据起始地计算驾驶时间```java//驾车 @Override public double getDrivingTime(String sendAddr, String receiverAddr) { String urlStr = "https://restapi.amap.com/v4/direction/truck?key=244f1717f5857cddfxxxxxx&size=4&origin="; String send

2020-07-03 09:00:10 789

原创 数据库SQL优化大总结之 百万级数据库优化方案

数据库SQL优化大总结之 百万级数据库优化方案网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全

2020-06-29 14:33:02 150

原创 优化Mysql数据库的8个方法

优化Mysql数据库的8个方法本文通过8个方法优化Mysql数据库:创建索引、复合索引、索引不会包含有NULL值的列、使用短索引、排序的索引问题、like语句操作、不要在列上进行运算、不使用NOT IN和<>操作1、创建索引对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会

2020-06-29 14:31:38 186

原创 swagger接口模型排序和定义顺序保持一致

package com.hdd.oms.service.utils;import com.fasterxml.jackson.databind.introspect.AnnotatedField;import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;import com.google.common.base.Optional;import io.swagger.annotations.ApiModelPrope

2020-06-16 14:45:01 3371 2

原创 eureka和zookeeper的区别

注册中心规则每一个微服务启动的时候,都需要去注册中心注册(eureka或zookeeper或其他)同类服务注册的服务名必须相同,不同类服务注册的服务名一定不能相同(订单服务部署5台服务器,那么这5台微服务在注册中心中注册的服务名必须一致,例如ORDER)(商品服务部署4台服务器,那么这4台微服务在注册中心中注册的服务名必须一致,例如GOODS)(订单服务和商品服务注册的服务名一定不能相同,不能同为ORDER,也不能同为GOODS)eureka是什么eureka作为分布式系统的注册中心,主要作用

2020-05-12 14:32:38 173

原创 Mapper的常用写法

参数包括String和List类型时,Strig类型的为表名,日志表以月为单位生成,(还可以使用按月表分区功能优化性能)一般使用Map方式注入参数。例如调用类:public int batchUpdate(List<Logs> list,String num) {Map<String,Object> paramMap = new HashMap<String,O...

2020-05-12 11:47:45 1369

原创 springboot使用LogAspect的切面日志

1.首先定义个切面标签源public enum Source { main("10", "微信"), platform("20", "支付宝"), driverApp("25", "app"), shipperApplet("70", "小程序"), private String code; private String name; pri...

2020-04-26 16:37:35 2740

原创 springboot使用POI创建world实现下载

---------------------------------后端获取response------------------------------------- ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder....

2020-04-24 16:22:08 429

原创 springboot后端获取response request

private HttpServletResponse getHttpServletResponse(String fileName) { ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttribute...

2020-04-24 16:01:23 890

原创 java自带的数据类型 为什么可以自动排序呢

java利用自定义类型对树形数据类型进行排序前言为什么集合在存自定义类型时需要重写equals和hashCode?1、先说List集合List集合在存数据时是可以重复的但是 当我们需要判断一个对象是否在集合中存在时这样就有问题了!因为我们通常判断一个对象是否在集合中存在只需要判断值就行 而List内部实现方法是用地址来进行判断的 因为我们在创建对象时即使是值都一样但是内存地址不一...

2020-03-25 11:00:01 683

原创 TCP/UDP/HTTP的区别和联系

“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:...

2020-03-20 15:07:33 136

原创 ConcurrentHashMap1.7和1.8的不同实现

ConcurrentHashMap在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap,为了对ConcurrentHashMap有更深入的了解,本文将对ConcurrentHashMap1.7和1.8的不同实现进行分析。所以在1.8中的size实现比1.7简单多,因为元素个数保存base...

2020-03-20 14:40:52 140

原创 HTTP长连接和短连接

1.HTTP协议的五大特点1)支持客户/服务器模式2)简单快速3)灵活4)无连接每次连接只处理一个请求,服务器处理完客户的请求,并受到客户的应答后,断开连接。5)无状态协议不会记录服务器客户端状态。2.保持HTTP连接状态的两种方式1)Cookie在访问统一网站时,可以将信息写入cookie,方便在不同的页面间提取信息。2)SessionSession保存在服务器上,同时将...

2020-03-20 11:21:35 88

转载 类与类之间的关系-依赖,关联,聚合,组合,继承泛化的区别

1)依赖依赖关系是类与类之间的联接。一个类依赖于另一个类的定义。如,一个人(Person)可以买车(Car)和房子(House),Person类依赖于Car和House的定义,因为Person引入了Car和House。与关联不同的是,Person类中没有Car和House的属性,Car和House的实例是以参量的方式传入到buy()方法中的。一般而言,依赖关系在Java语言中体现为局部变量,方法...

2020-03-20 11:14:01 618

原创 REST API和SOAP API区别

REST API优点:1. 轻量级的解决方案,不必向SOAP那样要构建一个标准的SOAP XML。2. 可读性比较好:可以把URL的名字取得有实际意义。3. 不需要SDK支持:直接一个Http请求就可以,但是SOAP则可能需要使用到一些Webservice的类库(例如Apache的Axis)缺点:1. 复杂的应用中,URL可能非常长,而且不容易解析。SOAP API优点:1. 定...

2020-01-22 17:24:02 1021

原创 java常见工具库

目前项目中常见的工具库有apache commons,google guava,再算上spring的话,需要自己从头开始写工具类的情况大大减少。 为了给广大童鞋普及一下工具库用法,减少无用功(还可能因为实现的不好留后遗症的),这里简单的介绍一下相关工具类。google guava大家应该比较陌生,这里先不介绍,????apache commons官方地址: http://commons.apache...

2019-12-28 15:04:27 159

原创 mysql中的CONCAT()函数的用法

select CONCAT(null,“aaaa”);select CONCAT(“aaaa”,null);上面这2种写法,返回的值都为Null所以如果要把两个变量的值concat的话,需要替换掉Null值,不然的话只要某个变量为null,结果都为null正确的写法应该是select CONCAT(ifnull(null,’’),“aaaa”);...

2019-12-24 11:50:45 266

原创 mysql创建索引的原则

在mysql中使用索引的原则有以下几点:1、 对于查询频率高的字段创建索引;2、 对排序、分组、联合查询频率高的字段创建索引;3、 索引的数目不宜太多原因:a、每创建一个索引都会占用相应的物理控件;   b、过多的索引会导致insert、update、delete语句的执行效率降低;4、若在实际中,需要将多个列设置索引时,可以采用多列索引如:某个表(假设表名为Stu...

2019-12-24 11:36:03 100

原创 java实现 json属性赋值 实体属性

json 转化成实体是将 userId 赋值给 @JsonProperty(“id”) ,最后返回的是个map结构的数据@Data@ApiModel("用户信息")public class UserInfo { @JsonProperty("id") private int userId; @JsonProperty("name") private St...

2019-12-23 19:40:34 1893

原创 rocketmq使用过程中遇到的问题

rocketmq使用过程中遇到的问题,在这里只作为记录生产者生产数据流程:调用中间件遇到的问题:1.服务器磁盘日志写满,导致服务阻塞2.网络异常,发送给第三方接口后,返回false导致大量队列数据阻塞,重试发送3.消费端消费后返回false,导致大量队列数据阻塞,重试发送4.阿里云云盾限制IP请求服务端,导致网络异常,数据无法走队列管理5.producer.setRetryAnoth...

2019-12-21 17:21:19 6828 1

原创 Java工程服务MEM内存过高问题处理方法

搞Java开发的,经常会碰到下面两种异常:1、java.lang.OutOfMemoryError: PermGen space(Java虚拟机的堆内存不够)(1)Java虚拟机的堆内存设置不够,可以通过参数-Xms、-Xmx来调整。(2)代码中创建了大量大对象,并且长时间不能被垃圾收集器收集(存在被引用)。2、java.lang.OutOfMemoryError: Java heap s...

2019-12-21 09:51:03 1875

原创 Java工程服务CPU100%问题处理方法

如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?简要步骤如下:(1)找到最耗CPU的进程;(2)找到最耗CPU的线程;(3)查看堆栈,定位线程在干嘛,定位对应代码;步骤一、找到最耗CPU的进程工具:top方法:执行top -c ,显示进程运行信息列表键入P (大写p),进程按照CPU使用率排序步骤二:找到最耗CPU的线程工具:top方法...

2019-12-21 09:16:25 357

原创 使用消息队列规避分布式事务问题

前阵子从支付宝转账10000元到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加10000,数据就会出现不一致状况了。这样的场景在各个类型的系统中都能找到相似的影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量也必须减1;在搜索广告系统中,当用户点击某广告后,除了在点...

2019-12-21 08:53:36 179

原创 在windows上搭建redis集群 - 主从复制

Redis主从复制常用的几种方式:1、一主二扑 A(B、C) 一个Master两个Slave2、薪火相传(去中心化) A-B-C,B既是主节点(C的主节点),又是从节点(A的从节点)3、反客为主(主节点down掉后,手动操作升级从节点为主节点)4、哨兵模式(反客为主的自动版,即主节点down掉后,从节点会自动升级为主节点)Redis 主从复制(一主二从):一、下载安装Redis二、配...

2019-12-20 16:38:37 145

原创 windows下搭建安装redis服务器(单节点)

Redis在windows平台下的安装和部署一、单机部署Redis服务1、下载Redis,直接解压到任意位置,如:D:\tools\Redis-x64-3.0.5042、运行cmd命令启动Redis服务。窗口是服务终端,如果窗口被关闭,对应的服务也会停止。注意:带后面的启动参数,如果对配置文件修改,没有带启动参数并不会生效.3、cmd命令启动客户端。集群分布式部署Redis后续...

2019-12-20 16:27:38 282

原创 Java技术的那些事

https://clojars.org/jar包下载地址=线程==========1.实现Runnable接口implement Runnable 接口2.任务逻辑代码Task()3.重写run函数overriderun()4.调用:Thread t = new Thread();t.start();工厂模式:1.定义一个造车接口 CreateCar2.对这个接口有N...

2019-12-20 10:44:52 492

原创 IDE使用技巧

IDEA中try/catch快捷键 Ctrl + Alt + tCtrl+Shift+F12 当大当前编辑框Alt+7 查看当前文件代码接口1、Ctrl+N按名字搜索类抽取方法的快捷键是 Ctrl + Alt + MIDE使用:IntelliJ IDEA隐藏不想看到的文件或文件夹:打开IntelliJ IDEA,File -> Settings -> Editor...

2019-12-20 10:41:02 542

RocketMqUtil.zip

亲自对rocketmq的认知后编写封装,工程中大量引用使用 1.支持集群消息使用 2.支持多个tag消息 3.注意:使用是一定要注意同一个消费组下,保持同一种订阅关系(这个原则官网已经声明,否则消息会消费不完全)

2019-12-12

Java常用工具类,多年工作积累整理

java常用工具类,多年经验累积整理;

2019-03-31

RabbitMQ详解搭建

RabbitMQ详解搭建

2019-03-19

java实现简单的工厂模式

java工厂模式

2019-03-19

RabbitMQ的五种模式源码+纯手工打的代码

RabbitMQ的五种模式源码+纯手工打的代码

2019-03-12

安装RabbitMQ

安装RabbitMQ

2019-03-12

1.Docker搭建RabbitMQ集群

1.Docker搭建RabbitMQ集群

2019-03-12

玩转SpringBoot之定时任务详解

玩转SpringBoot之定时任务详解,

2019-03-11

空空如也

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

TA关注的人

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