自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朱登凯的专栏

业余时间喜欢写点技术博客,读点无用之书

原创 如何像交朋友一样学习一项新技术
原力计划

做了这么多年程序员,也学了这么多技术,我慢慢开始觉得自己在学习这件事情上,好像有那么一点sense。最近重新读了一遍《软技能-代码之外的生存指南》这本书,作者提到了他学习一项新技术的过程,让我从中得到了一些启发,我再结合自己的经历和理解,总结进化出了一套自己认为比较有效的学习新技术的方法论,留作以...

2020-05-17 18:38:07 1209 0

原创 基于zookeeper实现领导选举和分布式锁

上一篇博客讨论了基于zookeeper的分布式队列的机制,这个机制除了可以做分布式队列以外,稍加修改,还可以做更多的事情,例如接下来要讨论的领导选举和分布式锁的功能等。 领导选举 领导选举的应用场景可以理解为:多个节点同时想干一件事(都想当老大),但最终只有一个节点被授权(老大只可能有一个) ...

2018-07-15 18:18:39 681 0

原创 git变基

假设有这么一个场景,一个分支一共有50次提交,其中第31-40次的提交是一个新功能的代码,这10次提交如果放到一个新的分支上来开发会更好,但当时没想到。后来产品该需求了(for example…),这10次提交的代码要被废掉,这时候应该怎么处理呢?可以一个个地revert,但这种方法很不优雅。由这...

2018-04-16 22:25:25 2109 0

原创 java stream api

stream api是jdk1.8中引入的,位于java.util.stream中,它基于lambda表达式,扩展了集合操作的能力。 stream api比较类似apache spark的api,以及.net框架中的Linq。之所以说它扩展了集合操作的能力,是因为它的所有操作都是在一个数据集合中...

2017-12-07 22:54:50 325 0

原创 git暂存区[重要]

本篇来讨论git的核心,暂存区。首先上一张图。左侧是工作区,也就是我们本地电脑上的文件,中间的Index就是我们讨论的暂存区,右侧是HEAD。HEAD是一个头指针,我会在下一篇博客中讨论HEAD,此处你先理解为HEAD就是git版本库。上面的这张图,非常非常地重要,如果我下面讨论的东西你有不明白的...

2017-06-11 23:24:45 1615 6

原创 Spring定义和装配Bean

我在上一篇博客中讨论了Spring中的IOC和AOP,本篇文章通过代码来演示一下Spring到底是如何实现IOC的。本篇博客我会介绍在Spring中如何定义和装载Java Bean。 业务场景 还是人开车的例子。首先,定义一个Car接口和两个实现了Benz和BMW,然后定义一个Person...

2015-10-18 17:22:56 5495 3

原创 设计模式之命令模式

五分钟一个设计模式,用最简单的方法来描述设计模式。小米智能模块的例子前一段小米的老总雷军在印度的全英文演讲想必大家都还历历在目,不过今天我们讨论的主题不是那次演讲,而是小米智能模块。小米4发布时,雷军说,小米已经开发了一个智能模块,只要电器厂商将这个智能模块集成到自家的电器中,就可以用小米手机来控...

2015-05-29 06:13:33 2266 3

原创 学习读书再读书
原力计划

说到读书,熟悉我的朋友可能知道,我当年参加高考时,语文成绩是不及格的,最重要的原因就是读书太少,阅读速度极其的慢,写作文也跑题了。而我今天居然想写文章和大家讨论如何读书的问题,是不是很神奇?欢迎入坑! 作为一枚IT男,我习惯购买的东西一直都是那老三样,电子产品、咖啡和书,最近这些年,读书占据了我很...

2020-05-17 22:21:25 104 0

原创 git中的tag

git的tag是比较常用的一个特性,关于tag有人叫做标签,有人叫做里程碑,无所谓了。 Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。本篇重要讨论如何使用轻量级标签,关于附注标签的使用,可以参考 这篇中文版的官方文档 创建标签 创建标签的命令非常简单 g...

2020-04-08 19:43:38 113 0

原创 influxdb性能优化整理

influxdb一般情况下比较稳定,但是随着数据量越来越大,也会出现一些性能问题,需要进行一些调优。我目前遇到的关于influxdb的性能问题大体上可以分为两类 CPU持续居高不下 内存持续居高不下,并伴随着较高的iowait 下面分别来讨论我当时的处理方法。 CPU持续居高不下 当时遇到的现...

2020-04-02 11:46:57 267 0

原创 shell条件语句

从退出$?状态说起 linux命令执行完以后,会返回一个退出状态码来标识运行是否成功。如果退出状态码是0,则为成功,其它的数字都是不成功的。 $ ls Applications Desktop Downloads Movies Pictures Sites Demos Documents L...

2020-01-16 09:22:37 116 0

原创 spring boot中的EnableXXX的实现原理

spring boot大大提高了spring的易用性,并且里面包含很多神奇的注解例如:@EnableAutoConfiguration, @EnableAsync, @EnableCaching, @EnableScheduling等,每个注解背后都有非常强大的功能,开启这些功能的方式却非常的简单...

2019-11-03 15:17:28 206 0

原创 nginx通过不同的二级域名映射到不同端口下的应用

假设你有一台服务器,希望在上面启动三个应用程序,分别是 官网首页,监听80端口 api接口,监听8080端口 管理后台,监听8081端口 其中,官网首页和管理后台都是纯前端的项目,build之后就是一些静态页面,需要通过nginx进行寄宿,api接口是一个后台应用,可以通过命令行直接启动。 另...

2019-08-12 09:57:38 2048 0

原创 linux shell小试牛刀之一——统计服务器上的网络连接数

今天发现一台linux服务器上的网络连接数比较多,使用ss -s看一下,发现有差不多存在2000个连接,接下来我会通过管道并组合使用多个linux命令,统计一下哪些哪些ip与当前服务器建立的连接比较多。 1、使用ss -a打印出所有连接 # ss -a Netid State Recv-...

2019-08-02 18:50:20 182 0

原创 通过jstack分析java进程耗费CPU的原因

1、通过jps -l来找到需要跟踪的java进程的pid,下面使用$PID来标识 # jps -l 27544 org.logstash.Logstash 16620 demo.CpuUsage 16639 sun.tools.jps.Jps 2、通过top -p $PID -H来跟...

2019-07-04 17:49:33 709 0

原创 spring cloud / netflix hystrix 客户端弹性

客户端弹性 所谓客户端弹性(resiliency),指的是当依赖的服务发生错误或表现不佳时,客户端仍然能够有应对的办法,而不是陷入崩溃或不可用。 本篇将讨论如何通过Hystrix来实现 熔断 (circuit breaker) 降级 (fallback) 隔离 (bulkhead) 引入Hys...

2019-06-30 12:07:13 117 0

原创 spring cloud / netflix eureka 服务发现与服务调用

本篇介绍如何借助spring cloud / netflix eureka实现服务发现和服务调用,具体包含以下内容 创建eureka server,作为注册中心 创建一个叫做myservice1的服务,启动三个节点并注册到eureka中 创建一个服务消费者,注册到eureka,并通过服务发现来轮...

2019-06-29 16:45:30 449 0

原创 spring cloud config server保存加密配置项

配置项中通常会包括一些敏感的信息,比如密码等,config server支持对这些敏感信息进行对称加密保存,在运行时解密。 config server开启加密功能 config server端开启加密功能需要以下几步 下载并安装JCEPolicy 配置对称加密的密钥 验证加密功能 下载并安装J...

2019-06-28 18:25:42 565 0

原创 spring cloud config server初体验

spring cloud config server可以将配置放到一个统一的地方,并且以服务的形式提供出来。 本篇来通过两个简单的例子,来说明如何创建一个config server,并且客户端如何使用它 创建一个spring cloud config server spring cloud con...

2019-06-28 10:58:36 111 0

原创 influxdb的retention policy

定义 The part of InfluxDB’s data structure that describes for how long InfluxDB keeps data (duration), how many copies of this data is stored in the c...

2019-05-29 10:50:08 2257 1

原创 浅谈jvm内存分配与回收

本篇涵盖一下内容 jvm内存区域的用途介绍 如何判断对象是否已死(回收哪些对象) 常见的回收算法和策略 相关的jvm参数介绍 jvm内存区域的用途介绍 java虚拟机在执行java程序时会把它管理的内存划分为不同的区域,每个区域有不同的用途。 该图片来源于网络。以下是各区...

2019-05-08 10:43:13 101 0

原创 cdh集成sentry

安装sentry服务 在cloudera manager web页面上选中集群下的action按钮,然后点击add service,在列表中选择sentry服务,并按照向导操作即可。sentry的运行需要使用mysql,在安装cdh的那篇文章中的步骤已经包含了创建sentry服务的步骤,所以,直接...

2019-05-08 10:39:18 427 0

原创 linux shell中的参数

在执行linux shell命令是,可以传递0个到多个参数,本篇博客来讨论如何来获取运行shell命令时传入的参数。 在linux shell中,参数信息会被赋值给几个特殊的变量,下面分别介绍 获取某个参数:$num 或 ${num} 获取所有参数的列表:$* 获取参数的个数:$# 获取当前命令...

2018-12-11 11:15:06 526 0

原创 linux常备工具之sort

sort命令非常简单,且容易理解。先来看几个常用的例子。 下面是一个文件1.txt $ cat 1.txt a c b e c g f d 简单的使用场景 下面对这个文件中的内容进行排序: 不加任何参数,直接排序 $ sort 1.txt a b c c...

2018-12-04 18:40:51 103 0

原创 linux常备工具之grep

grep能够在一个或多个文件中搜索指定的模式或关键字,该命令的一般格式为: grep pattern files 用grep搜索文件内容 先来看一下grep最简单的用法。假设当前目录有一个文本文件c.txt,它的内容如下 $ cat c.txt jobcenter-test-1 jobcen...

2018-10-29 10:06:16 131 0

原创 使用spring boot actuator 2.x进行应用监控

本篇博客简单地聊一下如何使用spring boot actuator来对web服务进行监控,并重点聊一下接口的监控。spring boot actuator 1.x 版本和2.x版本的差别比较大,本文只讨论2.x。我目前使用的版本是2.0.5.RELEASE。 spring boot actuat...

2018-10-24 15:10:06 3590 0

原创 linux常备工具之tr

tr是translate的缩写,是用来做翻译或转换工作的。具体来讲,它可以对输入内容(stdin)进行转换或者删除。是linux管道的必备工具。下面来看几个常见的用法 替换指定字符 tr charset1 charset2 < input-file 它的作用是使用charset2...

2018-10-22 16:02:29 194 0

原创 linux常备工具之sed

sed是linux上的一个常用命令,意思是stream editor,用来对输入或文件的内容进行处理。它不会修改原来的内容,而是将处理后的结果输出到stdout。 sed是一个极其强大的命令,完整地介绍它大概需要写一本书,我也只能介绍几个我个人比较常用的用法。 使用sed命令来查找替换 这个是我使...

2018-10-22 13:47:51 133 0

原创 linux常备工具之paste

paste命令和cut命令的效果正好相反,paste是用来合并行的,常用来合并多个文件到一个文件,合并多行到一行等。下面来看几个简单的例子 示例1:合并多个文件 假设有两个文件,分别是id.txt和name.txt,内容如下: $ cat id.txt 1 2 3 4 5 $ cat name...

2018-10-16 14:30:56 106 0

原创 linux常备工具之cut

cut命令从文件或命令输入中按照指定的规则提取想要的东西。它主要有两种用法,分别是 配合-c参数使用,来截取固定字符位置的内容 配合-d和-f参数使用,用分隔符来split成多个部分,再选取某个或某几个部分 cut -cchars file chars制定了你想从file中的每行内提出哪些字...

2018-10-09 19:06:58 104 0

原创 intelliJ IDEA动态加载静态资源文件(intelliJ IDEA live load)

最近在做一些前端开发的工作(前端工程师跑路了),后台是springboot,前后端在一个git仓库中。在开发的过程中我遇到一个很讨厌的问题,使用intelliJ idea启动springboot项目,修改静态资源(如html,css,js等)的内容后,刷新浏览器没有反应,需要重启springboo...

2018-07-31 18:41:36 3840 0

原创 ubuntu server 不支持中文显示

今天发现ubuntu server有一个问题,就是不支持中文显示。 执行touch 哈哈,文件创建成功,但使用ls查看文件名的话,显示的是一堆问号。有意思的是,想删除它的话,必须使用rm 哈哈才可以,使用rm ????????的话是不行的。 文件中的中文也显示为几个问号。 我从网上查了一下,...

2018-07-19 13:05:45 3823 1

原创 我的elementaryOS工作环境的搭建

折腾了好多个linux的发行版,最终决定把elementaryOS作为我办公的操作系统了.本篇博客记录下我在安装完一个崭新的elementary os系统后,会安装哪些必须的东西. 关于elementaryOS elementary.io elementaryOS被成为最好看的linux...

2018-07-14 12:58:29 6463 0

原创 基于zookeeper的分布式队列

本篇博客讨论如何基于zookeeper来设计一个分布式队列。 分布式队列一般需要考虑两点: - 任务如何进入队列 - 如何保证每个任务只能被一个消费者消费 首先,zookeeper本身就提供了对队列的支持,不过官方文档对这个的描述非常简单 Distributed queue...

2018-07-12 23:13:37 1116 0

原创 java内存模型(JMM)与volatile

java内存模型 jvm为了屏蔽掉各种硬件和操作系统之间的内存访问差异,定义了java内存模型。 java内存模型主要是定义了主内存(Main Memory)和工作内存(Working Memory)各自的职责: 主内存直接对应物理硬件的内存。为了获得更快的性能,工作内存可能会优先使用寄存...

2018-07-11 23:41:11 111 0

原创 jvm classloader

本篇博客来(不深不浅地)讨论一下jvm中的classloader。 classloader的父级委派模型 jvm在实例化一个对象之前(通过new关键字或者反射),会先把这个类load到jvm中。在jvm中,不同的类是由不同的classloader来载入的,jvm官方推荐的方式是父级委派模型...

2018-06-28 19:15:20 241 0

原创 cdh集群集成kerberos

为什么需要kerberos cdh集群搭建好以后,你可能已经成功地入坑了,因为后面还有很多问题,例如,数据安全的问题等。当你的cdh集群搭建好以后,你会发现他是没有任何权限控制的,所有人只要能够访问到你的ip和端口,就能使用你的服务。并且,你的hdfs中的数据更是毫无安全可言,只需要在一个客户端...

2018-06-27 13:15:24 522 0

原创 安装cdh集群 基于ubuntu server16.4

安装过程概述 先来认识几个组件 cloudera-manager-server cloudera-manager-agent cloudera-manager-daemons cloudera-manager-installer cloudera-manager-server只运行在主节...

2018-06-27 13:13:26 1294 0

原创 spring boot基于profile加载配置文件

spring boot默认会将classpath根目录下的application.properties文件作为应用程序的配置文件,除此之外,还允许允许开发人员基于特定的profile来激活另一个配置文件来覆盖application.properties中的配置项,或增加新的配置项。下面来看一个例子...

2018-05-16 11:27:54 677 0

原创 spring boot中返回httpcode和错误处理

返回http code 在使用spring boot开发rest接口的时候,如果在controller中出现了未处理的异常,默认会返回500错误。如果我们希望在某些条件下返回一个特定的HTTP CODE(如404),可以这么做 @RequestMapping("/...

2018-04-24 07:35:08 7418 0

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