自定义博客皮肤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的博客

知其然,知其所以然。

  • 博客(28)
  • 收藏
  • 关注

翻译 程序员应该知道的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 the time. If you find yourself having to choose betwee...

2019-11-09 08:57:06 479

原创 AtomicInteger源码分析

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

2019-09-02 15:02:00 232

原创 ArrayBlockingQueue源码分析

前言  如果说CHM的源码对并发分片和CAS操作运用的淋漓尽致,那么ABQ则是Lock & Condition类的使用参考书~阻塞队列的应用  见名知义,ABQ是基于数组实现的阻塞队列。  大家常用的MQ、Kafka使得程序之间实现解耦。同理,阻塞队列使得线程之间进行数据通信与解耦。  举一个熟悉场景——用户注册成功后,增加积分。通常,我们可以通过MQ来实现注册、积分操作的异步与...

2019-09-02 13:26:27 215

原创 ConcurrentHashMap源码分析

put方法 public V put(K key, V value) { return putVal(key, value, false); } final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerExc...

2019-09-01 23:35:31 206

原创 一张脑图助你搞定Redis

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

2019-08-28 14:36:09 878

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

场景  周末在家,想在自己的本子上搞搞前阵子搭建的集群(3个节点,centos7),突然发现vmware启动某台虚拟机偶尔会黑屏。  而且黑屏的没有规律,三台虚拟机中一台或两台启动时黑屏。重启电脑后,黑屏的机器会变化。很是蛋疼。。。解决过程  第一个想到的是和前天win10系统升级有关,因为虚拟机集群我三天前用着还没事。  想着赶紧解决了好学习,于是乎问了下度娘:  无外乎一种思路:“...

2019-08-19 10:02:52 1100 3

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

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

2019-08-15 11:18:25 779

原创 Git报错:refusing to merge unrelated histories

前言  工作时都是从git上直接拉取&提交项目,今天想把自己的项目提交到自己的github上,却遇到了几处报错。网上的提交步骤多少有些问题,所以把自己遇到的错误和操作步骤做个总结。操作步骤首先是在idea中创建项目。一般我自己学习时都会根据模板创建,方便高效。如果是第一次使用git,需本地安装git客户端。并完成本地git与github服务端的关联。ssh-keygen ...

2019-08-13 19:03:55 3236

原创 文件传输——JavaIO流

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

2019-08-13 18:36:44 495

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

前言  今天基于zk实现了一个简易的服务注册中心,记录一下实现思路。应用场景  首先,前几天搭建了基于Netty实现的远程服务调用系统(都是简易的,重在思想)。但是存在个问题:A服务调用B服务时(Netty Client 访问 Netty Server),IP Address 和 Port 参数都是写死的,实际生产中肯定不能这样。  需要满足:IP动态可配置,且要统一配置。可以通过第三...

2019-07-18 17:00:27 797

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

消息中间件的初步认识什么是消息中间件?  消息中间件是只利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程之间的通信。消息中间件能做什么?  消息中间件主要解决的就是分布式系统之间消息传递的问题,它能够屏蔽各种平台以及协议之间的特性,实现应用程序之间的协同。  拿电商平台的注册功能简单分析下,...

2019-03-22 14:42:16 970

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

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

2019-03-22 10:50:29 2093 2

原创 装饰器模式(Decorator)

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

2019-03-13 09:53:55 296

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

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

2019-03-12 19:23:20 352

原创 适配器模式(Adapter)

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

2019-03-12 15:00:55 189

原创 委派模式(Delegate)

委派模式(Delegate)概述:  委派模式不属于 23 种设计模式之一, 是面向对象设计模式中常用的一种模式。  这种模式的原理为类 B和类 A 是两个互相没有任何关系的类, B 具有和 A 一模一样的方法和属性; 并且调用 B 中的方法,就是调用 A 中同名的方法和属性。 B 好像就是一个受 A 授权委托的中介。 第三方的代码不需要知道 A 的存在, 也不需要和 A 发生直接的联系, ...

2019-03-12 09:33:35 739

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

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

2019-03-11 09:58:39 358

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

实践:Flume同步信息到HDFS环境介绍  本次实战基于cdh5.8.5,flume 1.8。实战背景  应用程序通过log4j记录日志信息(用户ip,访问url,请求方式,状态码信息,时间戳),记录到服务器上(地址:/data/flume/log)。通过flume组件将不断更新的日志信息传递给hdfs做离线处理,kafka做实时处理。  当然我们本次先演示flume-hdfs的过程。...

2019-03-07 16:38:32 922

原创 MapReduce(一)

用户行为分析 MapReduce(一)MapReduce简介什么是MapReduce?是一种大规模数据处理的编程模型源自于2004年Google发布的论文MapReduce in Hadoop开源社区实现版本,核心代码使用Java实现MapReduce计算场景数据查找分布式GrepWeb访问日志分析词频统计网站PV UV统计TOP K问题...

2019-03-06 14:21:41 291

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

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

2019-03-04 13:32:01 241

原创 Flume 海量日志收集利器

Flume 海量日志收集利器关于日志收集服务器日志收集服务器日志是大数据系统中最主要的数据来源之一服务器日志可能包含的信息访问信息系统信息其他业务信息基于服务器日志的应用业务仪表盘:PV、UV等线上查错:错误日志查询系统监控:调用链、接口访问统计等其他数据应用服务器日志的特点:不间断,流式产生数据量大,信息量大源头分散日志采集系统的一般架构...

2019-03-01 21:17:19 526

原创 HDFS 分布式存储基石

HDFS 分布式存储基石HDFS简介HDFS是Hadoop 分布式文件系统。所处角色基本概念基于JAVA实现的一个分布式文件系统基于unix/linux是Hadoop最重要的核心组件支持顺序写入,而非随机定位读写HDFS前提和设计目标存储超大文件HDFS 适合存储大文件,单个文件大小通常在百MB以上HDFS适合存储海量文件硬件容错基于普通机器搭建,硬件错误...

2019-03-01 11:23:23 333

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

张一鸣:10年面试2000人,我发现混的好的人,全都有同一个特质2018-09-11 20:43:44来源: 国际融资  张一鸣 ,今日头条创始人,2013年,他先后入选《福布斯》“中国30位30岁以下的创业者”和《财富》“中国40位40岁以下的商业精英”。  张一鸣演讲整理:  为何毕业多年后  原本水平差不多的同学都拉开了差距?  大家好!各位都非常年轻,我今天来的时候挺有压力。...

2019-02-27 07:50:58 334

原创 策略模式

策略模式(Strategy)概述  定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。应用场景  根据用户的需求处理数据时,需要对算法做出选择。这里的算法是指固定的算法(不再发生变化)。采用策略模式的好处是相比传统的switch或者if else更方便扩展,而且算法与用户端代码解耦。  之前研究设计模式的时候举的都是生活中的例子,后来...

2019-02-18 09:36:01 171

原创 深入分析代理模式

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

2019-02-15 10:18:45 235

原创 原型模式

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

2019-02-14 18:30:48 185

原创 单例模式的多种实现

单例模式应用场景:  保证一个类仅有一个实例, 并提供一个访问它的全局访问点。  Spring 中的单例模式完成了后半句话, 即提供了全局的访问点 BeanFactory。 但没有从构造器级别去控制单例, 这是因为 Spring 管理的是任意的 Java 对象。 Spring 下默认的 Bean 均为单例。实现:饿汉式单例  它是在类加载的时候就立即初始化,并且创建单例对象。优点:...

2019-02-14 10:14:10 243

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

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

2019-02-13 19:03:18 378

空空如也

空空如也

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

TA关注的人

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