自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Java单例模式、多例模式

//单例设计模式有两种形式:饿汉式/懒汉式 class Singleton{ // private volatile static Singleton singleton = null; //懒汉式 private static final Singleton singleton = new Singleton(); //饿汉式 private stat...

2018-10-31 22:34:14 3540

原创 JVM源码分析之Java对象的创建过程

定义两个简单的类AAA和BBB通过``javap -c AAA```查看编译之后的字节码,具体如下:Java中的new关键字对应jvm中的new指令,定义在InterpreterRuntime类中,实现如下:new指令的实现过程:1、其中pool是AAA的constant pool,此时AAA的class已经加载到虚拟机中,new指令后面的#2表示BBB类全限定名的符号引用在cons...

2018-10-31 21:30:14 371

原创 阿里架构师:​程序员必须掌握的几项技术能力

一、源码分析源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂。源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。我认为是阅读源码的最核心驱动力。我见到绝大多数程序员,对学习的态度,基本上就是这几个层次(很偏激哦):只关注项目本身,不懂就baidu一下。除了做好项目,还会阅读和项目有关的技术书籍,看wikipedia。除了阅读和项...

2018-10-30 22:11:54 572

原创 可以免费自学编程的12个网站

很多人包括一些企业家,和市场营销人员都认为学习编程对一个人走向成功十分有帮助。在过去的一年里,我一直在学习编程。它有助我成为一个更好的创业者,我甚至可以提供一些帮助,当我的团队需要解决一些bug的时候。现在,如果你想学编程的话,这12个网站可以帮助你,它们都提供了免费的课程供你学习,因此你无需担心费用的问题。1.Codecademy其中,Codecademy是最受欢迎的免费编程学习网站之一...

2018-10-29 17:27:48 58068 1

原创 如何将kafka中的数据快速导入Hadoop?

Kafka是一个分布式发布—订阅系统,由于其强大的分布式和性能特性,迅速成为数据管道的关键部分。它可完成许多工作,例如消息传递、指标收集、流处理和日志聚合。Kafka的另一个有效用途是将数据导入Hadoop。使用Kafka的关键原因是它将数据生产者和消费者分离,允许拥有多个独立的生产者(可能由不同的开发团队编写)。同样,还有多个独立的消费者(也可能由不同的团队编写)。此外,消费者可以是实时/同步或...

2018-10-28 21:38:59 4121

原创 深入分析java线程池的实现原理

前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。demo1、E...

2018-10-26 22:06:03 148

原创 少走弯路,给Java 1~5 年程序员的建议

对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学一、Java基础学习Java基础的时候,应该尽量多动手,很多时候,你想当然的事情,等你写出来运行一下,你就会发现不是这么回事儿,不信你就试试。学完以上内容以后,你应该对Java有一个基本的了解了,你可以用Java语言写出一些简单的程序,并且你用的是最简单的编辑器,比如记事本。这个时候,不要急于进入下一部分,留下几天好好...

2018-10-25 21:46:44 270

原创 nteger缓存机制-基本数据类型和包装类型-自动拆装箱

Integer缓存机制总结:1、jdk1.5对Integer新增了缓存机制,范围在-128-127(这个范围的整数值使用频率最高)内的自动装箱返回的是缓存对象,不会new新的对象,所以只要在缓存范围内值相等自动装箱返回的对象一样。jdk1.6后缓存范围的最大值127可以通过设置jvm的启动参数(-XX:AutoBoxCacheMax=size)调整2、Integer的缓存只在自动装箱时有效,...

2018-10-23 22:24:40 279

原创 缓存架构SpringBoot集成Curator实现zookeeper分布式锁

一、分布式锁简介1、什么是锁在单机环境下,当存在多个线程可以同时改变某个共享变量时,就需要同步来实现该功能,使其线程安全。而同步就是通过锁来实现的。锁保证了同一时刻只有一个线程来修改共享变量。在单机环境下,Java提供了一些并发安全包可以一定程度上保证线程安全,但是在分布式环境(多机环境)下,这些并发包显得就无能为力了!!2、什么是分布式分布式的CAP理论:任何一个分布式系统都无法...

2018-10-22 20:42:30 6681 2

原创 Kafka如何做到1秒处理1500万条消息?

Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台)、Uber、Square(移动支付公司)等大型公司用来构建可扩展的、高吞吐量的、且高可靠的实时数据流系统。例如,在 New Relic 的生产环境中,Kafka 群集每秒能够处理超过 1500 万条消息,而且其数据聚合率接近 1Tbps。可见,Kafka 大幅简化了对于数据流的处理,...

2018-10-21 20:43:36 812

原创 Kafka集群内复制功能深入剖析

Kafka是一个分布式发布订阅消息系统。由LinkedIn开发并已经在2011年7月成为apache顶级项目。kafka在LinkedIn, Twitte等许多公司都得到广泛使用,主要用于:日志聚合,消息队列,实时监控等。0.8版本开始,kafka支持集群内复制,从而提高可用性和系统稳定性,这篇文章主要概述kafka复制的设计。复制有了复制后,kafka客户端将会得到如下好处:生产者能在出...

2018-10-21 20:36:26 183

原创 activeMQ和spring的整合

(1)导入activemq的核心jar包和整合spring需要的两个jar包 context-support和jms.jar(使用spring的版本是4.2.7 activemq的版本是5.11.2)<!--锁定版本号--><properties>  <spring.version>4.2.4.RELEASE</spring.version>...

2018-10-19 21:42:22 164

原创 Kafka集群内复制功能深入剖析

Kafka是一个分布式发布订阅消息系统。由LinkedIn开发并已经在2011年7月成为apache顶级项目。kafka在LinkedIn, Twitte等许多公司都得到广泛使用,主要用于:日志聚合,消息队列,实时监控等。0.8版本开始,kafka支持集群内复制,从而提高可用性和系统稳定性,这篇文章主要概述kafka复制的设计。复制有了复制后,kafka客户端将会得到如下好处:生产者能在出...

2018-10-18 22:22:53 103

原创 Java内存区域的划分和异常

行时数据区域JVM在运行Java程序时候会将内存划分为若干个不同的数据区域。程序计数器线程私有。可看作是当前线程所执行的字节码的行号指示器,字节码解释器的工作是通过改变这个计数值来读取下一条要执行的字节码指令。多线程是通过线程轮流切换并分配处理器执行时间来实现的,任何一个时刻,一个内核只能执行一条线程中的指令。为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器。这就...

2018-10-17 21:30:21 133

原创 Kafka 核心源码剖析

一、Kafka消费者源码介绍1.分区消费模式源码介绍分区消费模式直接由客户端(任何高级语言编写)使用Kafka提供的协议向服务器发送RPC请求获取数据,服务器接受到客户端的RPC请求后,将数据构造成RPC响应,返回给客户端,客户端解析相应的RPC响应获取数据。Kafka支持的协议众多,使用比较重要的有:获取消息的FetchRequest和FetchResponse获取offset的Of...

2018-10-16 22:14:08 261

原创 Kafka集群内复制功能深入剖析

Kafka是一个分布式发布订阅消息系统。由LinkedIn开发并已经在2011年7月成为apache顶级项目。kafka在LinkedIn, Twitte等许多公司都得到广泛使用,主要用于:日志聚合,消息队列,实时监控等。0.8版本开始,kafka支持集群内复制,从而提高可用性和系统稳定性,这篇文章主要概述kafka复制的设计。复制有了复制后,kafka客户端将会得到如下好处:生产者能在出...

2018-10-16 22:08:15 788

原创 SpringBoot开发案例之整合Dubbo分布式服务

之前在 SpringBoot 中使用 Dubbox是这样的。先简单记录下版本,Dubbox-2.8.4、zkclient-0.6、zookeeper-3.4.6。项目中引入 spring-context-dubbo.xml 配置文件如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spring...

2018-10-15 22:06:39 123

原创 程序员如何成为自由职业者?

你作为一个开发者,会有另一半,买房还贷,建立家庭,你会有孩子,一日五六餐嗷嗷吃钱,你还需要赡养老人,你需要越来越多的钱,才能凑凑合合地安排好你的生活。然而虽然你技术越来越好,贡献越来越大,客户却始终是老板的,而老板却要控制成本,万万不能给你越来越多的钱,他始终要把你框在预算之内。甚至,当你老了,精力、能力、干劲都开始走下坡路,他还会觉得你性价比不如那些年轻敢拼肯加班的新人高,于是你又得为地位不保失...

2018-10-15 22:00:02 223

原创 SpringData分页功能

在SpringData中实现分页功能我们需要将接口实现PagingAndSortingRepository这个接口提供了分页查询的方法Page<T> findAll(Pageable pageable); //分页查询(含排序功能)@Test public void Pagination() { int pageIndex = 1;// 前台传过来的当前页...

2018-10-14 21:42:53 1187

原创 【Java】HashMap源码分析——常用方法详解

首先介绍resize()这个方法,在我看来这是HashMap中一个非常重要的方法,是用来调整HashMap中table的容量的,在很多操作中多需要重新计算容量。源码如下:1 final Node<K,V>[] resize() { 2 Node<K,V>[] oldTab = table; 3 int oldCap = (oldTab...

2018-10-14 16:37:32 85

原创 ZooKeeper基本原理

ZooKeeper简介ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper设计目的1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。2.可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有...

2018-10-12 21:20:40 83

原创 小编带你进Spring 核心框架体系结构

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪些spring的依赖,只有拷贝,其实,当初我就是这么干的!spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以...

2018-10-12 21:13:28 155

原创 Java远程方法调用RMI简单介绍

RMI介绍RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的。经过多个JDK版本迭代,目前RMI的实现方式跟最开始底层实现还是有很大差别的。远程方法调用允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。RMI使用JRMP(...

2018-10-10 16:08:42 199

原创 「Java基础教程」-第一个Java程序:Hello World!

1、 java生态圈1.1、java简介起源:Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。特征:平台无关性体系:Java SE:标准版用于开发桌面应用JavaEE:企业版...

2018-10-08 21:15:36 3566

原创 SpringData使用与整合

1.SpringData概述Spring Data是Spring的一个子项目,主要用于简化数据库访问,支持NoSQL和关系数据存储,主要目标是使数据库的访问变得方便快捷。其中,所支持的NoSQL存储有MongoDB (文档数据库)、Neo4j(图形数据库)、Redis(键/值存储)和Hbase(列族数据库),所支持的关系数据存储技术有JDBC和JPA。JPA Spring Data致力于减少数据...

2018-10-07 22:12:53 183

原创 用户登录模块进行必要的安全处理(MD5加密、加盐和传输过程加密)

1、首先简谈一下常规Web登录模块的开发(只为了实现简单的登录功能,未对数据库字段进行加密处理以及传输过程中进行加密处理)非安全性登录模块开发使用JSP+MYSQL数据库表如下所示:     先用jsp页面创建login.jsp和index.jsp页面(为了方便讲解,直接使用jsp页面传值及校验)具体代码如下所示:<%@ page language="java" conten...

2018-10-06 18:03:36 2628

原创 Nginx反向代理实现Tomcat集群服务器的负载均衡

一. Nginx简介Nginx 是一个开源的高性能的HTTP和反向代理服务器,用于实现资源缓存、web server负载均衡等功能,其特点是占有内存少,并发能力强。使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。是目前最流行的反向代理服务器之一。二. Tomcat简介Tomcat是一个免费的开源的纯JAVA开发的Web 应用服务器,可以充当轻量级JAVAEE项目的应用服务器,...

2018-10-05 17:25:16 1692

空空如也

空空如也

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

TA关注的人

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