自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JeremyJiaming的博客

知其然,知其所以然。

翻译 程序员应该知道的97件事(中英对照版)

Act with Prudence【行事谨慎】 NO MATTER HOW COMFORTABLE A SCHEDULE LOOKS at the beginning of an iteration, you can’t avoid being under pressure some of th...

2019-11-09 08:57:06

阅读数 17

评论数 0

原创 AtomicInteger源码分析

前言   AtomicInteger使得在高并发的场景下,可以安全的操作整数的增减。主要原理是采用Unsafe.CAS操作。 原子操作类   多线程同时对int i进行操作,可能导致原子性问题。   可以加Synchronized悲观锁解决,考虑到性能问题,JDK1.5后,J.U.C包提供Atom...

2019-09-02 15:02:00

阅读数 32

评论数 0

原创 ArrayBlockingQueue源码分析

前言   如果说CHM的源码对并发分片和CAS操作运用的淋漓尽致,那么ABQ则是Lock & Condition类的使用参考书~ 阻塞队列的应用   见名知义,ABQ是基于数组实现的阻塞队列。   大家常用的MQ、Kafka使得程序之间实现解耦。同理,阻塞队列使得线程之间进行数据通信与解耦...

2019-09-02 13:26:27

阅读数 25

评论数 0

原创 ConcurrentHashMap源码分析

put方法 public V put(K key, V value) { return putVal(key, value, false); } final V putVal(K key, V value, boolean onlyIfAbsent) { i...

2019-09-01 23:35:31

阅读数 41

评论数 0

原创 一张脑图助你搞定Redis

前言   温故知新,最近自己在复习之前零散的知识点,想通过脑图的方式将每一块知识内容串在一起,比如redis,多线程,jvm,spring等等。   同时希望我的总结也可以帮助到其他人,所以打算写这个系列的文章。就叫它“一张脑图系列”。   这篇文章是我复习完redis之后的总结,共有四...

2019-08-28 14:36:09

阅读数 61

评论数 0

原创 VMWare启动黑屏 → iso镜像路径不对

场景   周末在家,想在自己的本子上搞搞前阵子搭建的集群(3个节点,centos7),突然发现vmware启动某台虚拟机偶尔会黑屏。   而且黑屏的没有规律,三台虚拟机中一台或两台启动时黑屏。重启电脑后,黑屏的机器会变化。很是蛋疼。。。 解决过程   第一个想到的是和前天win10系统升级...

2019-08-19 10:02:52

阅读数 275

评论数 0

原创 词频统计TopN+单机+内存限制+java

前言   前几天,同学问了我一道笔试题,网上大部分只有思路,良莠不齐。并且没找到java代码来实现的~所以就动手敲了一份,尽可能在思路上做到全面,也欢迎大家指教。代码地址 题目   有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的50个...

2019-08-15 11:18:25

阅读数 124

评论数 0

原创 Git报错:refusing to merge unrelated histories

前言   工作时都是从git上直接拉取&提交项目,今天想把自己的项目提交到自己的github上,却遇到了几处报错。网上的提交步骤多少有些问题,所以把自己遇到的错误和操作步骤做个总结。 操作步骤 首先是在idea中创建项目。一般我自己学习时都会根据模板创建,方便高效。 ...

2019-08-13 19:03:55

阅读数 2364

评论数 0

原创 文件传输——JavaIO流

前言   近期发现自己IO流掌握的不够熟练,遂跟着慕课的一套课花了半天时间系统练了一遍手。整理笔记和代码如下,也参杂了自己的理解。课程链接   代码按照章节上传到了我的GitHub上: 脑图概览(简要): 注:每章内容前都有本章的脑图,方便复习,也可根据需要查看内容。 第1章 文...

2019-08-13 18:36:44

阅读数 103

评论数 0

原创 Zookeeper实现简易服务注册中心

前言   今天基于zk实现了一个简易的服务注册中心,记录一下实现思路。 应用场景   首先,前几天搭建了基于Netty实现的远程服务调用系统(都是简易的,重在思想)。但是存在个问题:A服务调用B服务时(Netty Client 访问 Netty Server),IP Address 和 Po...

2019-07-18 17:00:27

阅读数 132

评论数 0

原创 分布式消息通信 ActiveMQ(一)

消息中间件的初步认识 什么是消息中间件?   消息中间件是只利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程之间的通信。 消息中间件能做什么?   消息中间件主要解决的就是分布式系统之间消息传...

2019-03-22 14:42:16

阅读数 168

评论数 0

原创 ActiveMQ持久化消息到数据库的坑——Table 'activemq.ACTIVEMQ_ACKS' doesn't exist.

问题描述   想使用数据库持久化ActiveMQ消息,在activemq.xml中配置如下: <persistenceAdapter> <!--<kahaDB directory="${activemq.data}/kahadb&qu...

2019-03-22 10:50:29

阅读数 466

评论数 1

原创 装饰器模式(Decorator)

装饰器模式(Decorator) 概述   为了某个实现类在不修改原始类的基础上进行动态地覆盖或者增加方法,该实现保持跟原有类的层级关系。装饰器模式实际上是一种非常特殊的适配器模式,必须同宗同源(通过继承来实现)。   装饰器和被装饰器都实现同一个接口,主要目的是为了扩展之后依旧保留OOP关系(同...

2019-03-13 09:53:55

阅读数 50

评论数 0

原创 Oracle数据导入导出imp/exp的坑——多了十几行?

问题描述   大家都知道Oracle数据库表迁移的时候会使用 ‘imp/exp’ 命令以文件的形式进行,因为这样的效率比sql语句形式高出无数倍。   但是今天我在做表迁移时,遇到了一个奇怪的现象:   导入报错多样:字段长度不够啊,Date类型不符合啊,全部字段为空啊 等等; 解决问题 ...

2019-03-12 19:23:20

阅读数 54

评论数 0

原创 适配器模式(Adapter)

适配器模式(Adapter) 概述   适配器模式是为了兼容。开发中我们常会遇到这样的场景:老系统运行了很久,为了保持其稳定性,不便再去修改原来的代码,但是又为了兼容新的需求或者标准,我们不得不在系统再去做一些文章(向下兼容)。 穷举法   编码解码、 一拖三充电头、HDMI 转 VGA、 Typ...

2019-03-12 15:00:55

阅读数 24

评论数 0

原创 委派模式(Delegate)

委派模式(Delegate) 概述:   委派模式不属于 23 种设计模式之一, 是面向对象设计模式中常用的一种模式。   这种模式的原理为类 B和类 A 是两个互相没有任何关系的类, B 具有和 A 一模一样的方法和属性; 并且调用 B 中的方法,就是调用 A 中同名的方法和属性。 B 好...

2019-03-12 09:33:35

阅读数 418

评论数 0

原创 模板方法模式(Template Method)

模板方法模式(Template Method) 概述:   定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中。 Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。   例如生产饮料的流程:加原料、加水、烧水、加工、混合。现在我们向针对加原料来写一...

2019-03-11 09:58:39

阅读数 65

评论数 0

原创 实践:Flume同步信息到HDFS

实践:Flume同步信息到HDFS 环境介绍   本次实战基于cdh5.8.5,flume 1.8。 实战背景   应用程序通过log4j记录日志信息(用户ip,访问url,请求方式,状态码信息,时间戳),记录到服务器上(地址:/data/flume/log)。通过flume组件将不断更新...

2019-03-07 16:38:32

阅读数 199

评论数 0

原创 MapReduce(一)

用户行为分析 MapReduce(一) MapReduce简介 什么是MapReduce? 是一种大规模数据处理的编程模型 源自于2004年Google发布的论文 MapReduce in Hadoop 开源社区实现版本,核心代码使用Java实现 ...

2019-03-06 14:21:41

阅读数 67

评论数 0

原创 Nginx(一)初步认识及配置

Nginx的初步认识及配置 什么是Nginx?   是一个高性能的反向代理服务器。(正向代理代理的是客户端,反向代理代理的是服务器) 与apache,tomcat区别   nginx与apache是静态web服务器,本身只能解析静态资源(html,jpg),想解析动态资源需要依赖第三方模块...

2019-03-04 13:32:01

阅读数 98

评论数 0

原创 Flume 海量日志收集利器

Flume 海量日志收集利器 关于日志收集 服务器日志收集 服务器日志是大数据系统中最主要的数据来源之一 服务器日志可能包含的信息 访问信息 系统信息 其他业务信息 基于服务器日志的应用 业务仪表盘:PV、UV等 线上查错:错误日志查询 系统监控:调用链、...

2019-03-01 21:17:19

阅读数 121

评论数 0

原创 HDFS 分布式存储基石

HDFS 分布式存储基石 HDFS简介 HDFS是Hadoop 分布式文件系统。 所处角色 基本概念 基于JAVA实现的一个分布式文件系统 基于unix/linux 是Hadoop最重要的核心组件 支持顺序写入,而非随机定位读写 HDFS前提和设计目标 存储...

2019-03-01 11:23:23

阅读数 90

评论数 0

转载 张一鸣:10年面试2000人,我发现混的好的人,全都有同一个特质

张一鸣:10年面试2000人,我发现混的好的人,全都有同一个特质 2018-09-11 20:43:44 来源: 国际融资   张一鸣 ,今日头条创始人,2013年,他先后入选《福布斯》“中国30位30岁以下的创业者”和《财富》“中国40位40岁以下的商业精英”。   张一鸣演讲整理: ...

2019-02-27 07:50:58

阅读数 106

评论数 0

原创 策略模式

策略模式(Strategy) 概述   定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 应用场景   根据用户的需求处理数据时,需要对算法做出选择。这里的算法是指固定的算法(不再发生变化)。采用策略模式的好处是相比传统的switch...

2019-02-18 09:36:01

阅读数 64

评论数 0

原创 深入分析代理模式

代理模式(Proxy) 特点 对于被代理人来说, 这件事情是一定要做的, 但是我自己又不想做或者没有时间做。对于代理人而言, 需要获取到被代理的人个人资料,只是参与整个过程的某个或几个环节。 应用场景 为其他对象提供一种代理以控制对这个对象的访问。 从结构上来看和 Decorator 模...

2019-02-15 10:18:45

阅读数 65

评论数 0

原创 原型模式

原型模式 应用场景:   原型模式就是从一个对象再创建另外一个可定制的对象, 而且不需要知道任何创建的细节。   所谓原型模式, 就是 Java 中的克隆技术, 以某个对象为原型。 复制出新的对象。 显然新的对象具备原型对象的特点, 效率高(避免了重新执行构造过程步骤) 。   在MVC架...

2019-02-14 18:30:48

阅读数 45

评论数 0

原创 单例模式的多种实现

单例模式 应用场景:   保证一个类仅有一个实例, 并提供一个访问它的全局访问点。   Spring 中的单例模式完成了后半句话, 即提供了全局的访问点 BeanFactory。 但没有从构造器级别去控制单例, 这是因为 Spring 管理的是任意的 Java 对象。 Spring 下默认的...

2019-02-14 10:14:10

阅读数 71

评论数 0

原创 简单工厂、工厂方法与抽象工厂的区别

简单工厂、工厂方法与抽象工厂 简单工厂 简单工厂类似于小作坊,目的是提升产品的质量,提高生产效率。 public class SimpleFactory { public Milk getMilk(String name){ if(&amp;amp...

2019-02-13 19:03:18

阅读数 171

评论数 0

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