JAVA相关学习以及工作总结
主要是记录自己日常工作和学习中遇到的一些问题,解决方式,以及一些好的文章分享
MrBlackWhite
越努力越幸运
展开
-
阿里云ECS服务器+WordPress快速搭建个人博客
本文是转载,但完善了一些细节,精简了部分步骤,以及lnmp一键安装后的一些单独服务启动命令。开始前准备: 一台阿里云ECS或者轻量级的服务器 Linux基础操作 喜欢捣鼓,善于思考 Windows上面安装好Xshell或者类似的工具,设置好你的阿里云服务器的用户名和密码,保证成功连接。这里建议使用【root】或者具有部分root权限的用户来登录...转载 2019-10-30 17:15:11 · 3053 阅读 · 0 评论 -
学习笔记(01):深入讲解HashMap底层原理-HashMap的put方法源码解析
【课程介绍】 本课程由业内技术大牛,经验丰富的讲师进行实战技术分享。 将带领大家深入理解HashMap的构造方法等源码底层实现原理,能够让学员逐步学会自己看源码 ...原创 2019-09-22 12:21:04 · 145 阅读 · 0 评论 -
身份证号码编码规则及校验位校验算法
一、身份证号码作为独一无二代表公民信息的号码,它的组成是由一下的数字表示的:(1)第1、2位数字表示:所在省(直辖市、自治区)的代码;(2)第3、4位数字表示:所在地级市(自治州)的代码;(3)第5、6位数字表示:所在区(县、自治县、县级市)的代码;(4)第7—14位数字表示:出生年、月、日;(5)第15、16位数字表示:所在地的派出所的代码;(6)第17位数字表示性别:奇数表示男性,...原创 2019-10-24 17:08:21 · 35129 阅读 · 3 评论 -
消息积压---一般处理方法
如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?思考是什么导致了消息积压?是consumer程序bug?是consumer消费的速度落后于消息生产的速度? 积压了多长时间,积压了多少量? 对业务的影响?解决思路1. 如果仅仅是consumer消费的速度落后于消息生产的速度的话,可以考虑采用扩容消费者群组的方式。2. 如果积压比较严重,积压了上百万、上千万的消息。修复现有consumer的问题,并将其停掉。 重新创建一个容量更大的topic,比如patition转载 2020-11-18 18:17:53 · 2697 阅读 · 0 评论 -
快速理解聚集索引和非聚集索引
数据库的索引,听起来挺神秘的,仔细想想。这些索引,其实就是平时咱们查东西时候常用的两种手段。无非就是为了提高我们找东西的效率而已。那么我们平时又是怎么查东西呢?聚集索引: 聚集索引,来源于生活尝试。这中索引可以说是按照数据的物理存储进行划分的。对于一堆记录来说,使用聚集索引就是对这堆记录 进行 堆划分。即主要描述的是物理上的存储。举个例子: 比如图书馆新进了一批书。那么这些书需要放到图书馆内。书如何放呢?一般都有一个规则,杂志类的放到101房间,文学类的放到...转载 2020-11-13 14:21:18 · 163 阅读 · 0 评论 -
数据库索引原理及优化
本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接。一、摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。二、常见的查询算法及数据结构为什么这里要讲查询算法和转载 2020-11-13 11:31:49 · 346 阅读 · 0 评论 -
安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat+Metricbeat) 基于7.9.3版本
关于docker本地安装参考另外一篇文章 : https://blog.csdn.net/u011665991/article/details/109494752PS:docker部署ELK 一台服务器,filebeat和metricbeat另外一台服务器,存在访问拒绝的问题,此问题暂时没有解决所以采用了 linux安装安装使用的是官网免安装版本,解压既可以使用,所有使用版本均为7.9.3,压缩包来源于官网。es官网PS:如果因为切换到普通用户没有访问文件夹或者文件的权限,使用roo..原创 2020-11-09 18:58:56 · 3363 阅读 · 0 评论 -
Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat+Metricbeat) 基于7.9.3版本
ELK是由 Elasticsearch、Logstash和Kibana 三部分组件组成。Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash 是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、.原创 2020-11-05 18:16:01 · 5117 阅读 · 1 评论 -
String 字符串 去掉所有空格(包含ascii编码为32和160的空格)
最近遇到个问题,获取excel中单元格字符串时 通过正则 \s*去除字符串中所有空格发现总是有空格debug发现发现其ASCII码值为160,这才知道,原来ASCII码中除了32之外还有160这个特殊的空格。下边是查看字符对应ASCII值的逻辑:final char c1 = ' '; //excel中的空格final char c2 = ' '; //手动输入的空格System.out.println((int)c1); //160System.out.println((int)c2)原创 2020-10-15 09:50:57 · 1143 阅读 · 0 评论 -
java对excel进行加密保护
针对单个sheet保护 : sheet.protectSheet("ccxcai")针对整个工作簿保护 :workBook.writeProtectWorkbook("password", "username" );PS: 1.上面的保护功能,sheet之前是可以移动的2. 针对单个sheet页里面的 保护工作簿(不同的sheet之间不能移动)的功能没找到...原创 2020-09-27 14:30:35 · 1784 阅读 · 3 评论 -
Java用POI读取excel文件,报异常:NotOLE2FileException: Invalid header signature; read xxx, expected 0xE11AB1A1
背景: 系统支持excel的两种文件上传 xlsx 和 xls 问题:今天上传了一个 xlsx的文档 ,系统错误为org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) D.原创 2020-07-01 14:57:48 · 19986 阅读 · 3 评论 -
hashCode() 和 equals() 简单描述
有一些其他的相关及技术就不在描写,网上很多 ,可以具体看下Hash表上面描述的hashCode = 哈希函数(key) 不完全准确,hashCode是Object的一个native方法,底层C实现,返回值为int 总结如下:1.若重写了equals(Object obj)方法,则有必要重写hashCode()方法。2.若两个对象equals(Object obj)返回true,则h...原创 2020-01-14 12:00:03 · 324 阅读 · 0 评论 -
BeanUtils.copyProperties(src,target) 无法赋值
今天遇到一个很诡异的问题src的属性和target属性一模一样但就是无法赋值,target所有的属性都为null因为是实际项目,只上部分与这个问题相关的代码src 为来自页面的VO 使用@Data@Accessors(chain = true)public class TestSearchVo { // 关键字查询 private String keywor...原创 2019-05-16 17:59:28 · 3114 阅读 · 0 评论 -
很诡异的定时任务每天凌晨执行
这段时间项目上线,涉及到定时任务,遇到一件很诡异的事情,每天0点10分会生成报告(原本是每月1号0点5分生成报告)简单介绍下,项目使用的是springboot,有两个服务 api服务和计算服务,服务之间使用的是异步调用方式,定时任务使用的是spring @Scheduled注解执行定时任务:项目中有两个定时任务: 1、每天0点10分监控公司是否到期(监控周期为1-12个月)...原创 2019-05-15 12:39:33 · 7854 阅读 · 0 评论 -
什么是缓存穿刺和缓存雪崩?如何解决缓存穿透,缓存雪崩
文章出自:https://blog.csdn.net/weixin_42980713/article/details/86292930一.缓存穿透: 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决办法: 1.布隆过滤 对所有可能查...转载 2019-05-08 15:39:19 · 2794 阅读 · 0 评论 -
Redis学习总结——怎么保持缓存与数据库一致性?
文章出自:https://blog.csdn.net/u012562943/article/details/81482914一、不一致原因分析将不一致分为三种情况:数据库有数据,缓存没有数据; 数据库有数据,缓存也有数据,数据不相等; 数据库没有数据,缓存有数据。在讨论这三种情况之前,先说明一下我使用缓存的策略,也是大多数人使用的策略,叫做 Cache Aside Pattern...原创 2019-05-08 15:18:35 · 2202 阅读 · 0 评论 -
千万数据的mysql分库分表
单表数据量达到1000W以后,就要拆了.背景情况用户表达到了 几千万级别,在做很多操作都比较吃力,.所以,考虑对其进行分表.常用的切分方案数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按...转载 2019-05-09 17:26:02 · 1512 阅读 · 0 评论 -
mysql数据库分库分表
mysql数据库切分前言通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制。一旦数据库过于庞大,尤其是当写入过于频繁,非常难由一台主机支撑的时候,我们还是会面临到扩展瓶颈。这时候,我们就必须许找其它技术手段来解决这个瓶颈,那就是我们这一章所要介绍恶的数据切分技术。何谓数据切分可能非常多读者朋友在网上或者杂志上面都已经多次见到关于数据切分的相关文章了...转载 2019-05-09 17:17:50 · 304 阅读 · 0 评论 -
mysql大数据解决方案--分区分表分库
这篇文章主要介绍了MyBatis实现Mysql数据库分库分表操作和总结,需要的朋友可以参考下前言作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步。这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这时就需要进行数据库切分的操作了。对于一个大型的互联网应用,海量数据的存储和访问成为了系统设计的瓶颈...原创 2019-05-09 17:06:34 · 2486 阅读 · 0 评论 -
RabbitMQ之消息持久化
文章出自:https://blog.csdn.net/u013256816/article/details/60875666/消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证消息可靠性的呢——消息持久化。为了保证RabbitMQ在退出或者crash等异常情况下数据没有丢失,需要将queue,exchange和Message都持久化。queue的持久化queue...转载 2019-05-08 11:43:58 · 342 阅读 · 0 评论 -
RabbitMQ 如何保证消息不丢失?
文章出自:https://www.cnblogs.com/flyrock/p/8859203.htmlRabbitMQ一般情况很少丢失,但是不能排除意外,为了保证我们自己系统高可用,我们必须作出更好完善措施,保证系统的稳定性。下面来介绍下,如何保证消息的绝对不丢失的问题,下面分享的绝对干货,都是在知名互联网产品的产线中使用。1.消息持久化2.ACK确认机制3.设置集...转载 2019-05-08 10:15:06 · 8122 阅读 · 0 评论 -
kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
文章出自:http://www.aboutyun.com/thread-9341-1-1.html问题导读:1.zookeeper在kafka的作用是什么?2.kafka中几乎不允许对消息进行“随机读写”的原因是什么?3.kafka集群consumer和producer状态信息是如何保存的?4.partitions设计的目的的根本原因是什么?一、入门1、简介 ...转载 2019-05-08 16:11:41 · 194 阅读 · 0 评论 -
springboot中的日志配置
log4j2的日志文件配置,OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL<?xml version="1.0" encoding="UTF-8"?><!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF --><configuration status="OFF"> ...原创 2019-05-09 17:54:01 · 245 阅读 · 0 评论 -
几张图看懂区块链技术到底是什么?
转发了一篇趣谈区块链的文章感觉还是很不错的:http://www.cnblogs.com/behindman/p/8873191.html“区块链”的概念可以说是异常火爆,好像互联网金融峰会上没人谈一谈区块链技术就out了,BAT以及各大银行还有什么金融机构都在开始自己的区块链研究工作,就连IBM最近也成立了自己的区块链研究实验室,但其实区块链到底是什么?大家或许并不清楚,停留在雾里看花...转载 2019-04-11 21:35:11 · 474 阅读 · 0 评论 -
IDEA MAVEN POM不自动更新
【问题】pom文件引入依赖,无法下载pom配置文件中的依赖包,或只能下载少数包,各项配置都正确的情况从网上查找了多种方案,但是不太好用,最后一种好用,这里都记录下PS:建议下面四种方法都尝试下 ,问题基本就解决了,其他的情况暂时没有碰到过,大家如果遇到其他的方案,欢迎留言【解决办法】方案一 :maven模块,点击刷新(未生效)方案二:右键项--->maven...原创 2019-04-28 15:14:26 · 5225 阅读 · 3 评论 -
IDEA导入新的svn项目不显示底部的version controller菜单
【问题】 idea 新导入的项目缺少VERSION-CONTROL git的按钮【解决方案一】1、网上很多介绍 说使用 快捷键 alt+9 可以调试出来,尝试无反应2、views-->tool window ----> 会发现 version controller 显示为灰色,点击无反应其实上面两种方式是一样的 ,对部分用户来说好用 ,其他的用户不好用 【解决方...原创 2019-02-19 10:42:51 · 5142 阅读 · 3 评论 -
java8概述:有哪些核心新特性?为什么会有这些特性?
java8可以说是自java诞生以来,发生最大变化的一个版本,关键是这一变化对于我们程序员来说是一个很大的福音:java8提供的新功能能够帮助我们写出更清晰、更简洁的代码(这貌似是程序员一生都在追求的东西吧,而java8让java开发者的这一追求瞬间向前跨了一大步)。那么java8究竟提供了哪些核心新特性来让程序员轻易就可以写出更清晰、更简洁的代码呢?先来看一个小需求"对库存中的苹果按重量...原创 2018-11-02 09:45:29 · 621 阅读 · 2 评论 -
Java 8 中的 Streams API 详解
文章出自:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kin...转载 2018-11-02 09:46:02 · 137 阅读 · 0 评论 -
Java学习路线图
一、分布式学习路线图二、微服务学习路线图三、性能调优学习四、设计模式与源码分析五、开发必备工具原创 2018-08-24 20:36:07 · 1651 阅读 · 0 评论 -
java程序员必读书籍
基础篇1、《java核心技术 卷I 》2、《java语言程序设计(基础篇)》3、《java编程思想 原书第四版》4、《算法导论(原书第三版)》5、《数据结构与算法分析 java语言描述(第2版)》6、《Agile Java》进阶篇1、《java核心技术 卷II》2、《Effective Java(第2版) 》 理解优秀JAVA程序设计原则的最佳书籍3、《Java语言程序设计(进阶篇)》4、《Jav...原创 2018-03-04 17:02:39 · 526 阅读 · 0 评论 -
生产环境springboot项目上传文件突然失败
一、问题描述先截个图,问题一样的可以看下2019-04-25 12:06:39,441:ERROR http-nio-9001-exec-6 (GlobalExceptionHandler.java:71) - {}org.springframework.web.multipart.MultipartException: Failed to parse multipart ser...原创 2019-04-25 17:22:20 · 1290 阅读 · 1 评论 -
RabbitMQ系列(五)使用Docker部署RabbitMQ集群
概述本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘。Windows10上Docker的安装因为本人用的是Windows系统,所有推荐一个不错的安装文章,详见:https://blog.csdn.net/xiaoping0915/article/details/75094857注意:设置阿里云Dock...转载 2019-04-24 10:38:36 · 237 阅读 · 0 评论 -
RabbitMQ系列(六)你不知道的RabbitMQ集群架构全解
前言本文将系统的介绍一下RabbitMQ集群架构的特点、异常处理、搭建和使用中要注意的一些细节。知识点一、为什么使用集群?二、集群的特点三、集群异常处理四、集群节点类型五、集群搭建方法六、镜像队列一、为什么使用集群?内建集群作为RabbitMQ最优秀的功能之一,它的作用有两个:允许消费者和生产者在Rabbit节点崩溃的情况下继续运行; 通过增加节点来扩...转载 2019-04-24 10:40:12 · 268 阅读 · 0 评论 -
RabbitMQ系列(四)RabbitMQ事务和Confirm发送方消息确认
引言根据前面的知识(深入了解RabbitMQ工作原理及简单使用、Rabbit的几种工作模式介绍与实践)我们知道,如果要保证消息的可靠性,需要对消息进行持久化处理,然而消息持久化除了需要代码的设置之外,还有一个重要步骤是至关重要的,那就是保证你的消息顺利进入Broker(代理服务器),如图所示:正常情况下,如果消息经过交换器进入队列就可以完成消息的持久化,但如果消息在没有到达broker...转载 2019-04-24 10:36:52 · 274 阅读 · 0 评论 -
RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
导读有了Rabbit的基础知识之后(基础知识详见:深入解读RabbitMQ工作原理及简单使用),本章我们重点学习一下Rabbit里面的exchange(交换器)的知识。交换器分类RabbitMQ的Exchange(交换器)分为四类:direct(默认) headers fanout topic其中headers交换器允许你匹配AMQP消息的header而非路由键,除此之外h...转载 2019-04-24 10:34:40 · 299 阅读 · 0 评论 -
RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用
RabbitMQ简介在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么?MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的。使用场景在我们秒杀抢购商品的时候,系统会...转载 2019-04-24 10:32:42 · 426 阅读 · 0 评论 -
RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建
环境配置Ubuntu Server 18.04 RabbitMQ 3.6.10安装之前我们使用apt-get进行RabbitMQ安装,在安装之前,强烈建议您把apt源换位国内,大大增加下载安装的速度,点击查看:《Ubuntu apt-get和pip国内源更换》安装rabbitmq-serversudo apt-get update sudo apt-get install ra...转载 2019-04-24 10:30:33 · 330 阅读 · 0 评论 -
RabbitMQ系列文章
文章出自王磊博客:https://www.cnblogs.com/vipstone/RabbitMQ系列文章 RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建 RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列(四)Rabb...原创 2019-04-24 10:28:14 · 478 阅读 · 0 评论 -
各微服务框架对比
功能点/服务框架Netflix/SpringCloudMotangRPCThriftDubbo/Dubbox功能定位完整的微服务框架RPC框架但整合了ZK或者Consul,实现集群环境的基本服务注册/发现RPC框架RPC框架服务框架是否支持Rest是,Ribbon支持多种可插拔的序列化选择否否否否是否支持RPC否是(Hession2)...原创 2019-04-24 12:32:39 · 5499 阅读 · 0 评论 -
Java内存模型-总结
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:...转载 2019-04-22 16:57:15 · 138 阅读 · 0 评论