主页

致力于网站建设与后台服务设计。喜欢新事物,对新的技术有追求!

分享、交流、记录、成长!

博客

EasyExcel操作Excel的导入和导出

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便。 产品经理: ***,帮我把数据库中的几个月的数据导成excel 程 序 员: 有什么要求呢? 产品经理: 没有要求只要能使用就可以了 程 序 员: 好的(心里面默默的,”又是一句话的需求”) 。。。。。。 20mins后 。。。。。。 程 序 员: 做好了(自豪感爆棚) 产品经理: 好的,干的漂亮(给你加鸡腿) 产品经理: 你这功能不能用呀 程 序 员: 难道出问题了? 程 序 员: 一顿猛如虎的操作过后,发现数据量太大了OOM 。。。。。。 20mins后 。。。。。。 程 序 员: 突然想到POI在处理的时候数据量太大,试试有什么方法 程 序 员: 一顿操作之后发现EasyExcel 。。。。。。 10mins后 。。。。。。 程 序 员: 替换完POI包之后,重写了方法,然后上线测试,完美的一波。 产品经理: 小伙子不错呀,下班了请你吃个大饼(画大饼)。 上面的情景是不是很熟悉,为了让广大猿猿们都能吃到大饼,我记录下了easyexcel的使用,用作分享和交流。 …

Centos上Kafka的搭建

今天记录下Kafka的使用,截取下官网上的一段话 “Apache Kafka® is a distributed streaming platform”,kafka是一个分布式流媒体平台。下图是来自kafka官方的一些介绍和说明。 流媒体平台有三大主要功能: 发布和订阅的记录,类似于一个消息队列或企业邮件系统流。 存储流的容错耐用的方式记录。 记录过程流,因为它们发生。 Kafka通常用于两大类的应用: 建立实时流数据管道不仅能够可靠地获得系统或应用程序之间的数据 构建实时流式变换或反应数据流应用 随着物联网的大力发展,接下来会有越来越多的事物需要接入到互联网上,因此对于数据的接入处理和数据的实时处理也是一个比较大的挑战,同时也迸发出了很多的消息队列,现在比较主流和常用的如Kafka、RabbitMq、RocketMq等。但是不同的消息队列应用的场景有一定的差异,有兴趣的话可以去深入的研究下。这里我们这介绍下kafka的搭建和kafka的一些用法。 在zookeeper官网、kafka官网分别下载zk和kafka的安装包我这里已经下载好了对应的tar包,然后解压对应的tar包。 一.首先搭建kafka需要先搭建好zookeeper的服务。 首先下载zookeeper,因为kafka的数据种的offset等需要存储在zookeeper种,并且zookeeper也会用来管理好kafka集群之间的状态和leader之间的选举。 首先需要先来修改zookeeper的配置并且启动zookeeper。 在服务器上切换到zookeeper的根目录下,然后进入conf包,然后拷贝zoo_sample.cfg文件并将文件的名称修改为 zoo.cf,然后打开zoo.cfg文件如图配置。 只需要配置好zookeeper的数据的存放路径和日志的存放路径,便于我们查找分析,然后配置zookeeper的端口即可,然后我们切到bin目录下执行zkServer.sh start即可看到我们的zookeeper已经起来。 这里我们只是简单的介绍了单实例的安装,对于集群的安装方式,类似只是配置文件稍微修改一下,有兴趣的可以了解下,建议了解下zookeper集群的选举模式(半数选举)等。 二.接下来需要搭建kafka的环境 同样的进入到kafka安装包的解压的路径下,然后进入conf包种然后先去修改server.properties文件: broker.id=0 log.dirs=/data/kafka/log zookeeper.connect=127.0.0.1:2181 到此,单机实例下的kafka的配置就已经完成了,接下来我们需要启动kafka: bin/kafka-server-start.sh config/server.properties 到此,kafka在单机上的实例的搭建过程就全部完成了,接下来我们一起看下kafka的使用方法。 三.kafka的基本操作 接下来分别讲解下kafka如何创建一个topic 、 查看一个topic的信息 、生产一个消息、消费一个消息和删除一个topic等。 1.创建一个主题topic ./kafka-topics.sh –create –zookeeper 127.0.0.1:2181 –replication-factor 1 –partitions 1 –topic kk-test Created topic “kk-test”. 2.查看主题: $ ./kafka-topics.sh …

Springboot的用法之整合Redis

redis是一个高性能的缓存中间件,redis可以用作缓存来提高系统的系统,由于redis的本身的一些机制,redis也有很多的使用场景,具体的redis的搭建和使用场景上一篇文章已经讲述,今天就记录下springboot在整合redis的时候的一些操作和客户端的选择。 概念: Jedis:是Redis的Java实现客户端,提供了比较全面的Redis命令的支持, Redisson:实现了分布式和可扩展的Java数据结构。 Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。  优点: Jedis:比较全面的提供了Redis的操作特性  Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列 Lettuce:主要在一些分布式缓存框架上使用比较多 可伸缩: Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。 Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作 Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作 在spring-boot-starter-data-redis中我们可以看到,在springboot2.0以后默认的将链接redis的客户端修改为了Luttuce,那么今天我们就记录下用Luttuce来进行redis的操作,还是在上一节已经创建好的工程的基础上进行搭建。 1.首先我们需要引入spring-boot-starter-data-redis的包用来集成redis,我们可以看到spring-boot-starter-data-redis的pom中引入了如下的包: 可以看到,在上面的里面引入了Lettuce包和spring-data-redis的包。 2.接下来我们就需要修改application.yml文件,新增上我们的redis的配置信息: 我这里注释掉了,链接池的配置因为在Lettuce中的pool已经给给出了默认值,大家可以根据需要自行配置 接下来我们放上一个工具类,这个是我之前一直用的一个,所以直接拷贝来,所有的地方都可以用:RedisUtils.java 接下来我们需要配置redis调用时候的key和value的序列化方式,从源码中我们可以看出,默认的序列化方式为JdkSerializationRedisSerializer 会出现如下的问题,通过上线的代码我们知道了,是因为他的序列化方式的问题,因此我们需要修改redis的序列化方式为stringSerializer RedisConfiguration.java 至此,所有的配置工作就全部做完了,现在我们需要写几个接口进行测试了: 欢迎交流学习,转载请注明出处。