自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (2)
  • 收藏
  • 关注

原创 基于Protobuf协议的Dubbo与SpringBoot的结合

文章目录工程概况父pomdubbo-provider通过proto3定义服务打包发布服务dubbo-provider-service实现服务dubbo-provider-web提供服务dubbo-consumerdubbo-consumer-apidubbo-consumer-servicedubbo-consumer-web提供服务这里使用Protobuf作为IDL 定义Dubbo服务,并于SpringBoot相结合,搭建最原始的服务提供及消费模型。基于dubbo2.7.13,注册中心使用zookeep

2022-01-17 10:57:14 2885 1

原创 Nacos Spring Boot开启权限校验下的使用历程

文章目录Nacos SpringBoot Demonacos客户端鉴权及getConfig流程在此我们假设你已经成功启动了nacos(无论是standalone亦或是cluster模式),并且开启了权限校验 nacos.core.auth.enabled=true,如果您对权限校验还不明了,可以翻看 从nacos的权限控制看nacos的配置热加载 。这里我们开始使用客户端来开启nacos使用之旅。好吧,先提前告知,一切并不顺利,因为我们盲目的去除了客户端依赖的fastjson…Nacos Spring

2021-01-21 22:38:15 5257

原创 从nacos的权限控制看nacos的配置热加载

nacos的权限控制及配置热加载nacos的权限控制是什么样的nacos是如何进行权限控制的开启权限控制的开关为什么权限控制开关失效最近在使用nacos,部署在k8s集群上,使用的是从源码自己打的镜像。在配置nacos的权限认证功能时, 发现无法生效,而且所谓的配置修改立即生效也无法实现,下面就探讨下这是什么原因导致的?同时也看下nacos所说配置修改立即生效是如何实现的?nacos的权限控制是什么样的nacos通过将用户绑定到某个角色上,然后赋予某个角色对某个资源(命名空间)的读写权限,假如当前登录

2020-12-30 20:55:50 2212

原创 net.sf.json.JSONArray之fromObject的坑

前段时间掀起了风风火火的去fastjson, 其他Json序列化方法, 又"重见天日"; 本来推荐使用gson作为替代(某些场景下Jackson); 但这位同学使用的net.sf.json, 但缺乏认知, 未经测试就上线,导致了问题。Case当JSONArray.fromObject(null)时, 结果也为null吗?JSONArray jsonArray;try { jsonArray = JSONArray.fromObject(value);} catch (Exception e) {

2020-08-21 22:36:27 1799

原创 Java移位操作符:操作数小于0时怎么办?

Java移位操作符:操作数小于0时怎么办?long a = -1L >>> -7;long b = 4L >>> 66;看到上述的计算, 首先想到">>>"是一种"无符号"的右移位操作符, 也就是说无论被操作数是正或负, 向右移位后, 高位补0;但脑海未免还会闪现出如下疑问向右移动负数个位置, 咋移? 难道是向左移?Java中long是8字节, 也就是最多64位, 那向右移动66位,咋整?上面移位的结果是:a = 127b = 1

2020-07-17 23:23:49 375

原创 Redis之Lua脚本:原子性的执行exsits&incr

Redis提供的命令虽然不少, 但是严格的说计算能力还是比较有限的. 好在Redis2.6版本后引入Lua脚本, 大大增强了这方面的计算能力. 最重要的是执行lua脚本还具备原子性, 所以在对一致性要求高的环境下, lua脚本或许是个不错的选择.本文通过具体的场景来简介下lua脚本的使用.这里,我们基于Springboot框架的RedisTemplate来操作redis.问题抽象:使用redis计数, 计数器的key会在生命周期是15分钟;每次优先查询redis中的计数器,当计数值不存在时,从数据库

2020-07-11 17:58:57 2151

原创 Java:List集合中SubList

开始前不妨在心里默算下以下的输出是什么?List集合的subList方法返回的到底是什么?public static void main(String[] args) { List<Integer> list = Arrays.asList(0, 1, 2); System.out.println("before:" + list); truncateFirst(list); System.out.println("after:" + list);}public static

2020-07-04 15:07:48 274

原创 modCount:Java集合实现快速失败机制的计数器

快速失败机制,是Java集合框架中的一种错误检测机制。多线程下遍历一个非线程安全的集合对象时,如果一个线程在遍历过程中,另一个线程对集合对象的内容进行了修改(增加、删除),则会抛出ConcurrentModificationException。快速失败机制并不保证在非同步下的修改一定会抛出异常,这种机制一般仅用于检测bug。以ArrayList中的forEach方法为例,看看modCount的作用:modCount定义于ArrayList的父类AbstractList中public abstract

2020-07-01 23:02:45 486

原创 Dockerfile build镜像的构建环境(build Context)

文章目录环境简介执行构建理解docker build 的工作原理最佳实践通过dockerfile定义文件和docker build命令构建,是推荐使用的镜像构建方式。通常在执行docker build的命令时,最后会加上".", 这个被当做是当前目录的"."是指dockerfile所在的路径吗?环境简介假如我们有如下的结构:当前位于/root/docker/demo,该目录下有个Dockerfile,是我们即将用于构建镜像的定义文件dockerfile的内容如下:从ubuntu基础镜像开始,然后

2020-05-23 10:16:24 5115 1

原创 Docker笔记:安装及入门使用

Docker是一个能把开发的应用程序自动部署到容器的开源引擎。它在虚拟化的环境中增加了一个应用程序部署引擎,提供一个轻量、快速的环境,让开发者高效的将程序部署到各种环境。Docker是一个C/S架构的程序,提供一个命令行工具docker及一整套Restful API。Docker组件Docker镜像:用户基于镜像来运行自己的容器,可以将镜像当作是容器的“源代码”,它基于Union文件系统的一...

2020-03-15 17:55:03 687

原创 SpringBoot多数据源配置

本文介绍springboot结合jpa,在需要多个数据源,多个数据库时,应该怎样配置等。使用mysql存储,使用基于Hibernate的JPA,在下文的demo中两个数据库test,它有一张User表; 另一个库prod,它有一张表名为Person.project目录├─java│ └─com│ └─demo│ └─multi│ ...

2020-01-04 22:38:38 491

原创 Java:实现比较接口时,应该全面的进行各种情况的比较

Java中实现类的自定义比较功能,可以通过实现Comparable,或者Comparator,前者是一个内比较器,后者是一个外比较器,但无论是哪种在实现比较方法时,都应该充分考虑各种情况:比较者大于被比较者(也就是compareTo方法里面的对象),那么返回正整数比较者等于被比较者,那么返回0比较者小于被比较者,那么返回负整数假如只考虑了其中的两种情况,会有什么影响了?Bad Cas...

2019-03-31 22:38:40 1386

原创 Java:域和静态方法不具有多态性

近日在工程中发现了这么一个bug:妄自以为子类的域可以像方法一样覆盖父类的域或者方法。具体的情景可以抽象为以下:试图在父类中定义一个域(非private)并赋予初始值,各个子类算法默认情况下使用该域的默认初始值,在必要的情况下想覆盖该域重新定义该值,于是有了这样的代码:public abstract class AbstractAlogrithm { protected int nTimeS...

2019-01-13 10:41:52 492

原创 Hive之distinct多字段中出现null问题

在使用Hive以多个字段作为唯一性依据进行统计时,如果某个字段出现大量null值,会发生统计结果不准确问题,解决办法可以使用coalesce函数对空值进行替换。假设原来是以及A,B两个字段去重后统计结果:select count(distinct A,B) from tableName where xxx;在实践中发现A,B都可能为空值,而且B值出现空值的概率非常大,在这种情况下,发现统计...

2018-12-02 11:42:50 5306

原创 Windows下MySQL的安装

最近尝试在windows下安装MySQL,参照网络上的文档介绍,但在实际操作时还说遇到了一些问题,在此记下,以供日后翻阅。环境windows7 64位系统mysql-5.7.23-winx64.zip 社区版安装包下载,进入mysql下载页,选择"MySQL Community Server",选择具体的操作系统参数,进行下载。ps:以下操作使用的是windows7自带的PowerS...

2018-10-25 09:16:30 274

原创 Netty介绍及入门使用

Netty是一款用于创建高性能网络应用程序的框架,它相对于原生的Java API更加容易使用,更加高效,性能更好。本文以简单的示例着手,简介Netty的基本概念以及入门使用。Netty提供异步的(非阻塞I/O),基于事件驱动的,它包含了一组设计模式,将应用程序逻辑从网络层解耦。它的高性能得益于它的池化与复用,资源消耗更低。在传统的同步阻塞式I/O模型中,通常由一个独立的Acceptor线程负责监...

2018-09-24 10:19:13 254

原创 HBase Java API(1.2.X)使用简介

之前读《HBase权威指南》在实践时,发现API已经发生了一些变化,查阅官方文档,确任HBase的API在1.0版本后已经做了修改。本文介绍在新API下,使用Java访问HBase的方法。 HBase Client通过查询hbase:meta表来确定你所感兴趣的数据行所在的RegionServers。在定位到这些数据所在的region后,client会直接和这些region所在的RegionSe...

2018-08-12 11:51:05 1207

原创 C/C++中正则表达式库RE2的使用

RE2是Google开源的正则表达式库,RE2是多语言支持的,提供对C/C++,Python,Ruby等,本文介绍C语言的RE2的正则库。正则表达式在工程实践中是非常有用的,可用于信息提取,内容比对,替换等。安装 主要步骤,下载安装包[GitHub地址],解压,编译,安装。需要说明的是较新版本源码添加了对C++11的支持,同时也需要较高版本g++的支持,本文选择tag为re2-2016-02...

2018-07-14 21:21:29 10642

原创 Snappy Java API简介

Snappy是Google开源的压缩/解压缩库。和其他压缩库相比,snappy的压缩率并不是最高的,兼容性也并非最好的。相反,它的诞生旨在以极高的压缩/解压缩速率提供合理的压缩率。Snappy官指出:在64位单核core-i7处理器下,snappy的压缩率能够达到250MB/S,而解压缩速度则能达到500MB/S。目前很多软件使用(或支持)snappy作为压缩库,如MongoDB,Cassandr...

2018-06-09 20:29:18 19126 3

原创 使用redis存储全球IP库

将本文以行表形式存储于关系型数据库中的IP信息库,通过转换,存储到key-value型的Redis库中,以加快查询的速度。本文通过使用Redis的散列类型和有序集合类型来实现这种需求。在工程中常有这样的需求,即给定IP(本文一律考虑将点分十进制的ip转为无符号整型),从(全球)IP库中查找相关信息。若将IP库存储于关系型数据库中(本文仅截取部分字段用于阐明),其形式大概如下: TA...

2018-05-12 19:53:38 3366 5

原创 ZeroMQ的订阅发布(publish-subscribe)模式

ZeroMQ的订阅发布模式是一种单向的数据发布,当客户端向服务端订阅消息之后,服务端便会将产生的消息源源不断的推送给订阅者,本文的示例代码来源于文献[1]示例代码的修改。发布-订阅图示 发布者使用PUB套接字将消息发送到队列中,订阅者使用SUB套接字从队列中源源不断的接收消息。新的订阅者可以随时加入,但之前的消息是无法接收到的;已有的订阅者可以随时退出;订阅者还可以添加“过滤器”用来有选...

2018-04-22 10:15:26 5373

原创 Linux下任务调度服务crond使用

cron是GNU/Linux提供的一种任务调度工具,它可以实现定时或者每个一段时间来执行指定的任务。cron利用crontab中存储的调度列表,来执行相关的定时或者周期性任务。crond服务 绝大部分的Linux发行版本都带有cron命令。使用cron,必须先开启crond服务,crond是通过/etc/init.d/crond脚本启动,但我们可以让其他服务一样,通过以下命令查看/停止/开启...

2018-03-18 10:58:58 741

原创 使用Hadoop的JAVA API远程访问HDFS

之前分别介绍了使用Hadoop的C API操作HDFS和使用Hadoop的Java API操作HDFS,在介绍Java访问方式时(C API不存在这样的问题),程序是部署在Hadoop安装环境的,这具有一定的局限性,因为客户端不可能总是运行在Hadoop安装节点上。本文介绍以Java方式远程访问/操作HDFS。在Hadoop安装环境中和远程访问的主要区别在于Hadoop环境配置的获取和程序的执...

2018-02-10 10:40:58 13585 1

原创 C/C++中libcurl的使用-提交 Http Post请求

之前介绍了使用libcurl的HTTP GET将url地址中内容下载到本地 C/C++中libcurl的使用-Http GET方法使用详解,在更早的文章Linux下使用CURL模拟用户提交post表单中也介绍过在Linux环境使用curl命令提交POST表单。本文介绍使用libcurl的HTTP POST实现表单的提交,并获取表单的结果。libcurl的相关接口已经在上一篇文章中介绍,本文只介

2018-01-28 11:08:11 28723

原创 C/C++中libcurl的使用-Http GET方法使用详解

Curl是一个命令行工具,用于以特定的URL语法进行数据传输。libcrul是一个用于完成此项工作的curl库。借助libcurl,使用C/C++可以完成文件的下载,HTTP get,post等很多工作。本文介绍使用libcurl的C API完成HTTP中的GET操作。 下面的代码用于使用HTTP get协议,发送请求到一个网址,当请求被正确响应后,将响应的结果页面内容写成一个文件,保存在本地磁

2018-01-21 10:24:17 27369 1

原创 Linux环境下点分十进制和整型IP间的相互转换

本文介绍Linux环境下使用Unix网络编程实现点分十进制和整型ip地址间的相互转换,以及那些应该规避的问题。 先从示例代码讲起://输入点分十进制的IP,将其转换成整型后,再反向转换进行验证#include #include #include #include #include using namespace std;unsigned int IPtoInt(char

2018-01-07 11:01:07 10792

原创 Thrift使用入门-RPC服务

Thrift是一个跨语言的服务部署框架,除了提供性能优异的序列化/反序列化功能,还提供了RPC服务,相对于Protocol buffers,它支持的语言更加广泛。本文介绍使用Thrift的RPC实现client和server间的通信。对于Thrift的介绍和语法说明可以参见文献[1-2]。

2017-12-18 20:30:48 2224 1

原创 Linux环境下Thrift的安装

thrift安装

2017-12-03 10:59:33 6916

原创 Linux离线(手动)升级GCC-4.8

本文介绍在系统无法连接互联网的情况下,如何升级GCC。离线和在线升级的主要区别在于,如果可以联网,在升级gcc前的需要安装的依赖包,可以通过运行gcc安装包下的脚本自行下载安装,免去了很多的麻烦。

2017-11-19 10:13:18 5587

原创 Hive使用入门

Hive提供了一个被称为Hive查询语言(简称HiveQL或者HQL)的SQL语言,用来查询和存储在Hadoop集群中的数据。Hive不是一个完整的数据库,不支持记录级别的更新、插入或者删除操作,Hive将查询语句转换成MapReduce任务。Hive不支持OLTP(联机事务处理)所需的关键功能,更接近一个OLAP(联机分析技术)工具;适合用于数据仓库应用程序。

2017-11-12 11:22:05 2594

原创 Hadoop环境编程-Configuration类的使用

程序开发中,经常需要将程序执行中的相关参数进行可配置化,以实现程序的灵活性。在Hadoop环境下编程,也有同样的需求。本文介绍在MapReduce编程中,怎样使用Configuration类读取相关配置。这些配置可能不仅仅在Job配置时需要,有些配置还要在Map或者Reduce编程间传递。

2017-10-29 10:08:26 2530

原创 Spark安装与入门使用

Spark是一个通用的大规模数据快速处理引擎,一个大数据分布式处理框架。Spark之所以能被迅速的应用到各种大数据处理场景下,与其为Batching processing,Streaming Processing,Ad-hoc Query等三大大数据处理问题提供了近乎完美的解决方案息息相关。

2017-10-15 10:09:30 468

原创 KafkaConsumer-kafka消费者的Java客户端

本文介绍KafkaConsumer,一个从kafka集群消费记录的java客户端。该客户端是非线程安全的,关于多线程的使用,参见文章的“Multi-threaded Processing”部分。

2017-09-24 10:15:21 15372

原创 KafkaProducer-kafka生产者Java客户端

KafkaProducer(org.apache.kafka.clients.producer.KafkaProducer)是一个用于向kafka集群发送数据的Java客户端。该Java客户端是线程安全的,多个线程可以共享同一个producer实例,而且这通常比在多个线程中每个线程创建一个实例速度要快些。

2017-09-10 10:12:05 36245

原创 Hadoop MapReduce初窥-wordcount示例

MapReduce是一种可用于并行处理大规模集群上的海量数据的编程模型。它的出现使得并行处理海量数据变的更容易,容错性更高。本文借助wordcount程序介绍MapReduce的一些基本知识。本文在Eclipse环境中开发,然后编译成jar包,放单节点的伪集群中运行。

2017-08-26 21:02:47 744 1

原创 使用Hadoop的Java API操作HDFS

本文介绍Java API访问HDFS,实现文件的读写,文件系统的操作等。开发环境为eclipse,开发时所依赖的jar包,可在Hadoop安装目录下找到。Demopackage com.test.hdfs;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import

2017-08-13 11:14:49 5110 1

原创 使用Hadoop的C API操作HDFS

本文介绍使用Hadoop的C API访问HDFS,实现hdfs文件的读写,目录的读取等操作。文章使用的hadoop为单节点伪集群,安装方式及相关的配置说明参见前序文章(Hadoop安装-单节点伪集群)http://blog.csdn.net/cjf_wei/article/details/75882977。

2017-07-30 11:05:43 7055 1

原创 Hadoop安装-单节点伪集群

本文介绍如何配置和安装单节点的Hadoop伪集群,在单节点的集群上,同样可以操作Hadoop分布式文件系统(HDFS),以及执行Hadoop MapReduce。

2017-07-23 10:55:28 991

转载 从 MongoDB 及 Mysql 谈B/B+树(转载)

本文从实际应用的角度来介绍以及分析B-树和B+树。介绍为什么mongodb使用B-树建立索引,而mysql使用B+树建立索引

2017-07-09 19:56:51 306

原创 storm示例之trident

storm在0.7中引入了事务型拓扑,以满足对消息处理有着极其严格要求的场景,在storm的0.8版本之后,事务性已经被封装到Trident中。trident提供了一套非常成熟的批处理API来批量处理元组,可以对这些元组执行分组(group by)、连接(join)、运行函数、运行过滤器等,trident还封装了DRPC功能,同样支持DRPC远程调用。本文通过一个示例简介trident拓扑。

2017-06-25 11:04:31 1408

ZeroMQ:云时代极速消息通信库

本书介绍ZeroMQ 的API、套接字和模式的使用。通过建立应用程序来讲解如何使用ZeroMQ 编程技术构建多线程应用程序,并创建自己的消息传递架构。本书设计了大量工作实例来实现请求- 应答模式的高级使用和容错性,并对发布- 订阅模式的性能、可靠性、状态分发与监控进行了扩展。 本书面向的读者是希望制作大规模分布式软件的专业程序员和有志于这方面研究的专业人士,旨在帮助他们解决大规模、可扩展、低成本、高效率的问题,书中还展现了ZeroMQ所需的网络和分布式计算概念。

2018-06-13

node.js开发指南

本书首先简要介绍Node.js,然后通过各种示例讲解Node.js 的基本特性,再用案例式教学的方式讲述如何用Node.js 进行Web 开发,接着探讨一些Node.js 进阶话题,最后展示如何将一个Node.js 应用部署到生产环境中。本书面向对Node.js 感兴趣,但没有基础的读者,也可供已了解Node.js,并对Web 前端/ 后端开发有一定经验,同时想尝试新技术的开发者参考。

2018-06-13

空空如也

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

TA关注的人

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