- 博客(46)
- 收藏
- 关注
原创 jvisualVm监控远程的jvm
jvisualVm是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。远程服务器上的JVM监控就需要一些额外的配置。目前Visua...
2020-04-09 17:52:39 4649
转载 IO多路复用—由Redis的IO多路复用
文章转自:https://blog.csdn.net/happy_wu/article/details/80052617inux IO多路复用有epoll, poll, select,epoll性能比其他几者要好。名词比较绕口,理解涵义就好。一个epoll场景:一个酒吧服务员(一个线程),前面趴了一群醉汉,突然一个吼一声“倒酒”(事件),你小跑过去给他倒一杯,然后随他去吧,突然又一个...
2020-01-12 12:20:34 262
原创 Centos6.10 hadoop2.9.2安装及配置(单机版)
一、环境华为云服务器CentOS 6.10 64bitIP 139.9.177.214jdk 1.8.0_222hadoop 2.9.2hadoop下载:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz或https://archive.apache.org/dist/ha...
2019-09-21 16:03:56 443
原创 docker安装zookeeper集群
1、安装docker-compose方便对docker容器的管理,使用一个配置即可实现所有容器的管理。1.1 下载地址:https://github.com/docker/compose选择操作系统对应的版本:1.2 安装双击可执行安装文件检查是否安装成功:docker-compose -v2、使用docker-compose2.1 下载zookeepe...
2019-07-02 11:12:01 1971
原创 Kafka提升--流式处理(1)
1、什么是流式处理 先来看看什么是数据流(也被称为“事件流”或“流数据”)。首先,数据流是无边界数据集的抽象表示。无边界意味着无限和持续增长。无边界数据集之所以是无限的,是因为随 着时间的推移,新的记录会不断加入进来。这个定义已经被包括 Google 和 Amazon 在内的大部分公司所采纳。 这个简单的模型(事件流)可以表示很多业务活动,比如信用卡交易、股票交易...
2019-06-26 17:24:42 1585
原创 Kafka提升--可靠的数据传递
对于系统来说,可靠的数据传递不能成为马后炮。与性能一样,在系统的设计之初就应该 考虑可靠性问题,而不能在事后才来考虑。而且,可靠性是系统的一个属性,而不是一 个独立的组件,所以在讨论 Kafka 的可靠性保证时,还是要从系统的整体出发。说到可靠 性,那些与 Kafka 集成的系统与 Kafka 本身一样重要。正因为可靠性是系统层面的概念, 所以它不只是某个个体的事情。 Kafka 管...
2019-06-25 17:59:05 274
原创 Kafka提升--内部工作原理
如果只是为了开发 Kafka 应用程序,或者只是在生产环境使用 Kafka,那么了解 Kafka 的 内部工作原理不是必需的。不过,了解 Kafka 的内部工作原理有助于理解 Kafka 的行为, 也有助于诊断问题。下面不会涵盖 Kafka 的每一个设计和实现细节,而是集中讨论以下 3 个有意思的话题:• Kafka 如何进行复制; • Kafka 如何处理来自生产者和消费者的请...
2019-06-25 10:47:01 230
原创 MongoDB基础--mongoTemplate操作内嵌文档
关系型数据库中,表与表的关联关系有1:1,也有1:n的。在java的面向对象的世界里就是主对象嵌子对象,与主对象嵌集合<子对象>的两种形式。1)使用mongoTemplate操作主对象嵌子对象操作:新增、修改都直接用如下方法:mongoTemplate.updateFirst(new Query(criteria), update, clazz, collectionN...
2019-06-23 21:45:17 5706 1
原创 比较两集合获取异同
原理:利用HashMap<Key,Value>,put\get方法底层(hash碰撞),故需重写对象的equals(),hashCode()方法!集合中实例package io.unify.cva.entity;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatispl...
2019-06-17 15:57:58 664
原创 Kafka基础--Kafka的高可用
一、高可用的由来1.1 为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据都不可被消费,这与Kafka数据持久性及Delivery Guarantee的设计目标相悖。同时Producer都不能再将数据存于这些Partition中。 如果Producer使用同步模式...
2019-06-10 15:01:12 126
原创 Kafka基础--Kafka的架构
一、Kafka的架构如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以...
2019-06-10 11:47:35 146
原创 Kafka基础--简介
一、简介1.1 概述Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时间...
2019-06-10 11:03:14 146
原创 Kafka基础--安装
公司人物画像项目数据量非常大,技术上准备使用kafka,以前只使用过RabbitMq,但不是适合大数据的处理,所以加强学习下kafka,希望今年能有很好的提升。公司开发环境Windows10系统,以前使用过Docker安装过redis,mongoDb感觉使用非常方便,所以打算继续使用Docker安装kafka;至于Docker安装很简单,到官网下载安装即可https://www.docker....
2019-06-06 16:41:59 209
原创 JobDataMap获取value对象转换异常问题 ERROR org.quartz.core.JobRunShell
2019/06/03 10:26:05 [ERROR] ERROR org.quartz.core.JobRunShell -> Job DEFAULT.TASK_b469fd77fc514ef8b15899a72f941b18 threw an unhandled Exception:java.lang.ClassCastException: io.unify.modules.jo...
2019-06-03 18:36:22 4707 1
转载 MongoDB基础--索引原理
为什么需要索引?当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下MongoDB里的索引机制(同样适用于其他的数据库比如mysql)。mongo-9552:PRIMARY> db.person.find(){ "_id" : ObjectId("571b5da31b0d530a03b3ce82"), "name" : "ja...
2019-05-16 17:41:48 163
原创 MongoDB基础--基础操作
1、集合操作1.1、创建集合MongoDB 用 db.createCollection(name, options) 方法创建集合。格式 1 db.createCollection(name, options) 其中,name 是集合名称,是一个字符串;options 是可选项,是一个文档,指定内存大小和索引等选项,具体参数说明如下表:字...
2019-05-13 17:13:30 249
原创 MongoDB基础--权限
一、shell命令MongoDB的shell提供了一些命令,可以从shell提示符执行它们。help<option>:用于为MongoDB的shell命令显示语法帮助。option参数允许指定你想得到帮助的特定领域。use<database>:更改当前database句柄。数据库操作将在当前数据库句柄上处理。show<option>:根据opti...
2019-05-13 16:24:32 227
原创 MongoDB基础--安装
因新公司项目涉及大数据处理,选择技术MongoDB,所以准备学习下这方面的知识!1、版本MongoDB 下载MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community根据你的系统下载 32 位...
2019-05-10 19:03:32 215
原创 HTTP协议面试题
1、说一下什么是Http协议?对器客户端和 服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。2、什么是Http协议无状态协议?怎么解决Http协议无状态协议?(曾经去某创业公司问到)无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息 无状态协议解决办法: 通过1、Cookie 2、通过Session会话保存。3、说一下Http协议中302状态...
2019-04-30 17:14:54 582
转载 数据库分库分表思想
文章出处:https://www.cnblogs.com/butterfly100/p/9034281.html一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。...
2019-04-14 19:13:40 191
原创 Java并发编程:Synchronized实现原理
一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法: (1)修饰普通方法 (2)修饰静态方法 (3)修饰代码块...
2019-03-01 16:46:55 205
转载 线上服务CPU100%问题快速定位
功能问题,通过日志,单步调试相对比较好定位。性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。题目某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?步...
2019-02-28 17:48:55 154
原创 消息队列:生产者/消费者模式
1.什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 这个阻塞队列就是用来给生产者和消费者解耦的。...
2019-02-28 15:34:10 21000
原创 Java并发编程:ReetrantLock(重入锁)源码解析
ReentrantLock可以有公平锁和非公平锁的不同实现,只要在构造它的时候传入不同的布尔值,继续跟进下源码我们就能发现,关键在于实例化内部变量sync的方式不同,如下所示: public ReentrantLock(boolean var1) { this.sync = (ReentrantLock.Sync)(var1 ? new Reentran...
2019-02-27 18:23:40 312
原创 Java并发编程:ReentrantLock重入锁功能介绍
jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantLock。虽然在性能上ReentrantLock和synchronized没有什么区别,但ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。1.ReentrantLock和synchronized的相同点1.1 Reentr...
2019-02-27 15:54:13 185
原创 B树、B-树、B+树、B*树、LSM树
B树 B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。特此说明。先介绍下二叉搜索树 1.所有非叶子结点至多拥有两个儿子(Left和Right)...
2019-02-25 16:03:07 345
转载 JVM:JVM类加载机制
文章出处:https://blog.csdn.net/noaman_wgs/article/details/74489549有这样一道面试题:class Singleton{ private static Singleton singleton = new Singleton(); public static int value1; public static i...
2019-02-25 11:49:17 127
转载 Java并发编程:volatile关键字解析
文章出处:http://www.cnblogs.com/dolphin0520/p/3920373.htmlJava并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile...
2019-02-22 18:13:48 110
原创 单例模式写法及比较
简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。基本的实现思路单例模式要求类能够有...
2019-02-21 17:03:51 121
原创 shiro SecurityUtils.getSubject()深度分析
1.总的来说,SecurityUtils.getSubject()是每个请求创建一个Subject, 并保存到ThreadContext的resources(ThreadLocal<Map<Object, Object>>)变量中,也就是一个http请求一个subject,并绑定到当前线程。 问题来了:.subject.login()登陆认证成功后,下一次请求如何知道是那...
2019-01-30 13:55:33 20470 1
原创 转义字符
被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”。 此标记用于xml文档中,我们先来看看使用转义符的情况。我们知道,在xml中,”<”、”>”、”&”等字符是不能直接存入的,否则xml语法检查时会报错,如果想在xml中使用这些符号,必须将其转义为实体,如”&lt;”、...
2019-01-28 10:45:18 19023
原创 SpringBoot配置devtools实现热部署
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。devtools的原理深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassL...
2019-01-25 17:50:49 105
原创 Thymeleaf3语法详解
Thymeleaf3语法详解Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有Freemarker和Jsp。Jsp应该是我们最早接触的模版引擎。而Freemarker工作中也很常见(Freemarker教程)。今天我们从三个方面学习Thymeleaf的语法:有常见的TH属性,四种标准表达式用法,在SpringBoot中的应用。还在等什么,一起来学吧!技术:Th...
2019-01-25 16:18:28 440
原创 非Controller层通过RequestContextHolder.getRequestAttributes()获取HttpServletRequest,HttpServletRespon空指针问题
有时我们需要在非Controller层如service层而不通过Controller层传参方式而获得HttpServletRequest,HttpServletResponse,通过查找到RequestContextHolder是Spring提供的可以获取HttpServletRequest的一个工具,于是我在工作中就自己封装了一个工具类如下:public class Serv...
2019-01-20 15:37:57 36418 1
原创 Spring Dubbo @reference注解报空指针原因及处理办法
如果使用过Spring + Dubbo会发现bean装配有三种方式Spring的 @Autowired和@ResourceDubbo的 @Reference有时候有些场景三个随便用都可以,但有时候会报空指针问题,特别是@Reference1.场景controller层@Reference 装配bean对象spring-consumer.xml2.项目结构:...
2018-10-30 18:54:08 14080 4
原创 Spring AOP详细介绍
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。一 AOP的基本概念(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用(3)Advice(通知):AOP在特定的切入点上执行的...
2018-10-30 10:33:48 146
原创 redis在Docker下的主从复制(读写分离)、哨兵(主从切换)
公司项目涉及到redis,最近不太忙于是准备仔细学习下,起初是直接在Windows下搭建,现在试试Docker下搭建redis然后试下哨兵配置,废话不多说,直接搭建步骤:1.Docker安装redis指令1)docker search redis查找redis镜像,结果显示不同版本2)docker pull redisdocker 直接拉取redis镜像 ,默认最...
2018-10-29 15:41:55 1533
原创 redis持久化方式:RDB 和 AOF
Redis持久化Redis 提供了多种不同级别的持久化方式:RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。 AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AO...
2018-10-26 14:17:42 125
原创 Linux系统查看CPU
在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况,以便性能分析优化。而监控CPU的性能一般包括以下3点:运行队列、CPU使用率和上下文切换。 对于每一个CPU来说运行队列最好不要超过3,例如,如果是双核CPU就不要超过6。如果队列长期保持在3以上,说明任何一个进程运行时都不能马上得到cpu的响应,这时可能需要考虑升级cpu。另外满负荷运...
2018-10-12 18:24:01 48855
转载 《Springboot极简教程》问题解决:javax.servlet.ServletException: Circular view path [login]: would dispatch back
转:https://www.jianshu.com/p/fbef6d3cac9c《Springboot极简教程》问题解决:javax.servlet.ServletException: Circular view path [login]: would dispatch back to the current handler URL [/login] againjavax.servlet...
2018-08-29 18:26:33 2412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人