
java世界的喜怒哀乐
文章平均质量分 93
在这里我从不同的角度来剖析java里面我们可能遇到的麻烦。
在这里你会遇到前端最火的几个框架,你也会遇到最大的开源组织apache........,总之这里只有你想不到,没有我做不到的。你可以把这里当做是你的私人资料库。同事欢迎你给我指出不足,并向我投稿
烟花散尽13141
Java分布式组件学习全家桶持续更新!
感谢支持
还请点赞、关注、评论三连
1、springcloud系统学习
2、数据库底层学习、sql优化
3、开发个人工具包
展开
-
python自动更新pom文件
项目越来越多,版本管理越来越麻烦,在项目上我使用 `maven version` 来进行版本管理。主要还是在分布式项目中模块众多的场景中使用,毕竟各个模块对外的版本需要保持统一原创 2022-09-19 09:11:47 · 1113 阅读 · 1 评论 -
偏向锁理论太抽象,实战了解下偏向锁如何发生以及如何升级【实战篇】
偏向锁理论太抽象,实战了解下偏向锁如何发生以及如何升级【实战篇】原创 2022-04-18 09:13:02 · 440 阅读 · 2 评论 -
jetbrain家的fleet(已获得预览权限)直接对标vscode , fleet有望超过vscode吗?今天我们实际操作下
申请预览版等待了一周终于得到了预览版的机会今天就来简单使用下。开始之前先来求个赞2021我脚踏实地,快来看看我都做了啥前言工程管理大多使用的是maven , 在maven之前还有ant 这个应该已经没多少人在使用了,或者说新人基本不在使用ant , 随着fleet的发布我们关注的焦点开始转移到轻量级idea的开发上。很荣幸,我申请到了fleet的使用了,立马开始着手使用。但是官网的demo很少,加之并没有通过vs等轻量级工具运行过我的后台项目,所以请原谅我不会使用fleet原创 2021-12-21 11:10:11 · 3477 阅读 · 4 评论 -
【redis前传】集思广益之quicklist,取其精华去其糟粕
前言在之前我们已经学习了redis五大数据结构中的list结构。其内部是linkedList和zipList两种结构。这是我们已经学习的内容。之前我没有结合操作具体查看。事实上在两者中还存在一种结合体quickList结构演变在上面我们添加了一个key为zlist的数据。通过object encoding zlist查看底层就是通过quicklist来构建的。之前在ziplist章节汇总我们了解到在redis中hash和list基本数据结构都使用了ziplist存储数据的。在list中我们确实原创 2021-09-22 09:04:06 · 275 阅读 · 0 评论 -
zset如何解决内部链表查找效率低下
zset作为有序集合,内部基于跳表或者说索引的方式实现了数据的快速查找。解决了链表查询效率低下的痛点前言紧接前文我们学习了Redis中Hash结构。在里面我们梳理了字典这个重要的内部结构并分析了hash结构rehash的流程从而解释了为什么redis单线程还是那么快本章节我们将视角下推,继续学习Redis五大天王中的zset数据结构 ; zset是有序不重复集合其内部元素唯一且是有序的,他的排序标准是根据其内部score维度进行排序的。zset结构基本单元关于zset结构很简单,一个是我原创 2021-07-12 08:46:51 · 559 阅读 · 1 评论 -
明明两种方式都可以合并数组,为什么老师就是让我用双指针实现
一、题目描述合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:原创 2021-07-08 08:58:18 · 253 阅读 · 0 评论 -
redis淘汰+过期双向保证高可用 |此篇告诉你为什么redis那么快(一)
前言redis和数据相比除了他们的结构型颠覆以外!还有他们存储位置也是不相同。传统数据库将数据存储在硬盘上每次数据操作都需要IO而Redis是将数据存储在内存上的。这里稍微解释下IO是啥意思。IO就是输入流输出流方式将数据在硬盘和内存之间进行交互!而redis直接在内存上就剩下了IO操作。这也是redis快的原因之一吧内存相对于硬盘来说很宝贵。我们平时的电脑也是硬盘是内存的几百倍。既然内存很宝贵而redis又将数据存储在内存上那么redis肯定不能肆无忌惮的进行存储 。这就需要redis和开发者们原创 2021-06-28 13:51:58 · 318 阅读 · 2 评论 -
【redis前传】自己手写一个LRU策略 | redis淘汰策略
一、题目描述146. LRU 缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化LRU缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到原创 2021-06-25 09:13:56 · 225 阅读 · 0 评论 -
定时任务不在硬编码,动态定时刷起来
前言传统定时器是硬编码。但是有的时候业务上需要不断的调整问题描述我们开发了一个定闹钟的功能。这个功能肯定是定时器开发。但是这就存在一个问题这个定时是动态的。那么我们如何实现呢?请接着看简介定时器在开发中真的算是一种福利了。通过定时器我们省去了很多人力。我们通过定时器将一些繁琐定期的事情通过代码去完成。在Java开发中我们通过Timer类可以简单实现定时器功能。既然是springboot课程今天我们就来看看srpingboot整合定时器的事情传统定时器这里使用的是之前课程一的配置。原创 2021-05-31 09:42:05 · 422 阅读 · 0 评论 -
换个思路迭代法解决局部反转问题(发现leetcode一个重大bug)
一、题目描述找出数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。二、思路分析之前我们已经分析过了通过递归的方式解决此问题 。 递归将问题逐层细化已达到整体问题的解决而今天我们将从另外一个角度去分析次问题–迭代。所谓迭代就是通过一次循环遍历解决反转问题。而递归不同的是他将是从左至右的方式解决问题在范围内的链表节点先将他指向一个默认前置原创 2021-05-21 08:40:20 · 227 阅读 · 0 评论 -
四种方式带你层层递进解剖算法---hash表不一定适合寻找重复数据
一、题目描述找出数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。二、思路分析算法(Algorithm)指的是解题的方案,是一系列解决问题的明确动作。所以说算法没有语言区分,只要我们的方案是完整的任何语言都可以实现它。我是C++出身但是从事Java多年,下面将是通过java来实现算法考察点任何算法基本上都可以通过暴力枚举来解决,但那仅仅原创 2021-05-20 09:09:40 · 272 阅读 · 1 评论 -
前端再也不用头疼了---分布式系列之网关zuul包揽全局
zuul模块搭建pom <!--eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>原创 2021-05-17 09:28:06 · 1099 阅读 · 1 评论 -
运维告诉我CPU飙升300%,为什么我的程序上线就奔溃了
线上服务CPU飙升前言功能开发完成仅仅是项目周期中的第一步,一个完美的项目是在运行期体现的今天我们就来看看笔者之前遇到的一个问题CPU飙升的问题。 代码层面从功能上看没有任何问题但是投入使用后却让我头大问题描述系统上点击数据录入功能在全局监控中会受到相关消息的通知。此时服务器CPU飙升300%问题定位首先我们先梳理下Websocket的数据发送的简单原理示意图。往往定位问题得清楚我们的逻辑是什么当一个客户端启动时除了和Websocket建立连接之外,我们还需要向Websocke.原创 2021-05-12 16:32:30 · 2157 阅读 · 20 评论 -
装逼失败系列之ThreadLocal引起的一次线上事故,谁又知道那是几个通宵呢
线上用户存储数据后查看提示无权限前言不知道什么时候年轻的我曾一度认为Java没啥难度,没有我实现不了的需求,没有我解不了的bug直到我遇到至今难忘的一个bug 。 线上用户存储数据后查看提示无权限初次定位明明自己添加的数据,为什么提示自己没有权限呢?我一开始自信的认为是我们的客户操作有问题、或者是我们权限配置有问题但是带我自己亲自验证了一下之后发现这个问题时现时不现,属于一个偶发的问题。这个在开发阶段还真的不容易发现。问题升级经过自己的测试后让我更加怀疑人生了,你要么.原创 2021-05-10 06:19:19 · 311 阅读 · 0 评论 -
别拦我,我要去开彩票,这么做真的能控制彩票
随机数是专门的随机实验的结果,在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的实验组的过程中,或许在进行蒙特卡罗模拟法计算的时候等等。产生随机数有多种不同的方法,这些方法被称为随机数发生器。随机数量重要的特性是:他所产生的后面的那个数与前面的那个数毫无联系。今天我们讨论的问题就是基于随机数展开的。总所周知,彩票就是一种随机的发生,但是在这随机的表面下实际上是一种有目的行的控制的随机。简而言之是在大概率下的随机生成定义概率集改造概率集随机.原创 2021-05-06 11:03:05 · 401 阅读 · 0 评论 -
分布式系列接口调用openfeign小试牛刀---openfeign接口是如何注入spring的
申明式接口调用Feign,极大的简化了我们接口之间的调用。只需要通过注解就可以实现我们系统之间接口的调用。关于分布式我们之前主要集中讨论了服务治理。eureka、consul、zookeeper我们分别从三个角度不同程度的学习了这三个框架的原理及区别。这些作为前期springcloud的重要组成部分是我们学习分布式不容忽视的章节。至于现在springcloud alibaba我们这里重头菜要留到最后。对springcloud alibaba感兴趣还请关注我后续会更新相关内容简介openfeign..原创 2021-04-19 06:18:27 · 1246 阅读 · 8 评论 -
LeetCode42题动态规划 - 接雨水
文章目录理论题目描述思路分析确定转换方程确定初始值从小到大依次计算AC代码总结程序员如果仅满足curd的话,那么35岁危机很快就会到来。在大学期间学校主打的应该也都是算法思维。今天我们已大学里学的一个理论为基础展开讨论—动态规划理论将一个大问题细化为子问题。即转换经过一层一层的细化最终转为话小问题或者说转换为已知解。话不多说,我们直接已leetcode42–接雨水问题展开题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。原创 2021-04-15 13:31:07 · 406 阅读 · 0 评论 -
分布式springcould服务调用Ribbon的负载均衡,用起来非常简单实用,原理却不是那么简单。跟我来原理so easy
在这里插入图片描述此章带你看源码,需要一定的spring只是储备。基础不好怎么办?没关系认真听讲勤于思考就醒啦。文章目录前提概要Ribbon作用Ribbon原理Ribbon源码分析Ribbon自动配置LoadBalancedLoadBalancerInterceptor回到LoadBalancerAutoConfigurationRetryTemplateRestTemplate结合Ribbon调用原理RestTemplate源码跟踪getForObjectexecuteRibbon负载均衡源码追踪原创 2021-04-12 06:25:38 · 1242 阅读 · 3 评论 -
分布式服务治理zookeeper原理及使用大全
[TOC]zookeeper动物管理员全局把控。提供了配置管理、服务发现等服务。其本身也是可以集群化的。实现上是基于观察者模式。不想eureka/consul等同类产品需要心跳机制。他本身支持观察与主动触发机制;千里之行始于足下,我们已经探索了eureka、consul两个服务注册的中间件了。今天我们继续学习另外一个作为服务注册的服务。本文将从zookeeper单机到集群的安装讲解;在从集群leader选举机制的讲解及数据同步的梳理。到最终的基于zookeeper实现的配置管理及分布式锁的应用。从点原创 2021-04-06 08:39:03 · 1431 阅读 · 13 评论 -
springcloud--eureka服务治理深入浅出
文章目录什么是服务治理Eureka调用过程Eureka单机注册Eureka 单机启动单机注册集群注册客户调用Eureka集群注册idea 如何同一个项目启动多次Eureka自我保护为什么要自我保护如何开启自我保护自我保护如何激活上述源码分布式是现在互联网架构的首选。在分布式中我们会有三方理论简称CAP简称全称解释CConsistency数据一致性AAvailability可用性,性能PPartition tolerance分区容错性今天我们就来看看原创 2021-03-18 13:20:14 · 1445 阅读 · 11 评论 -
git merge 和 rebase难兄难弟,全程操作下来才能体会到git火爆不是没有理由的
文章目录分支合并git merge --squash [分支名]注意点git rebase [分支名]git rebasegit rebase --abortgit rebase -igit merge [分支名]在平时开发中我们因为版本管理的因素,我们可能同时开发多个功能。我们是通过分支来管理的。不同的分支对应不同的功能不同的时间上线。分支合并git merge --squash [分支名]git merge --squash 和 git merge是不同的。后者是直接将其他的提交记录合并原创 2021-03-15 09:06:08 · 234 阅读 · 0 评论 -
rabbitmq如何保证消息可靠性不丢失
之前我们简单介绍了rabbitmq的功能。他的作用就是方便我们的消息解耦。紧接着问题就会暴露出来。解耦就设计到双方系统不稳定问题。在mq中有生产者、mq、消费者三个角色。其中一个角色down机或者重启后。就设计到消息的丢失问题。因为MQ整个消息周期设计到上述的三个角色,所以我们从这个三个角色开始讨论丢失数据的情况。并如何解决生产者丢失消息在生产数据程序中,消息已经处理好还未发送给MQ这个阶段,生产者因为意外情况中断了。这个时候生产者这条消息就会丢失。因为程序重启好之后可能不会再次生产该消息。.原创 2021-03-04 09:39:45 · 813 阅读 · 1 评论 -
中文数字阿拉伯数字相互转换(Java版本)
文章目录中文数字转阿拉伯数字解题思路各个击破友情提醒阿拉伯数字转中文数字测试源码# 加入战队阿拉伯数字肯定是使用最广泛的符合之一了。我们日常生活都离不开数字。中文下的数字是中国特色的数字。开发中也会遇到需要两者相互转换的需求。今天就来实现下。中文数字转阿拉伯数字想上面的数字一样。假设我们的中文数字是【一亿七千七十九万七千一百九十七】。解题思路首先我们需要将上面中文数字按阿拉伯数字进行分离。这里我们先提出一个思想前提: 亿、万 这种是高级单位;千、百、十这种是低级单位。所以我们先按高级原创 2020-07-22 08:45:31 · 4120 阅读 · 3 评论 -
Java中为什么String不可变
文章目录常量池便利安全引申问题String在Java中的【引用传递】# 加入战队Java中为什么String是不可变性的。今天我们从多角度解析为什么Java把String做成不可变的。常量池Java中我们创建String对象有两种基本方法。String str1 = "zxhtom";String str2 = new String("zxhtom");上面两种方式我们创建了两个String变量 。 但是第一种通过双引号创建的zxhtom这个对象我们称之为常量 。 在JVM中是存储原创 2020-07-20 09:33:03 · 368 阅读 · 0 评论 -
springboot整合swagger。完爆前后端调试
web接口开发时在调试阶段最麻烦的就是参数调试,前端需要咨询后端。后端有时候自己也不是很了解。这时候就会造成调试一次接口就需要看一次代码。Swagger帮我们解决对接的麻烦springboot接入swaggerspringboot 引入swagger只需要引入jar包,然后配置swagger启动。并配合swagger的注解使用就可以实现文档自动生成了。我们先来看看效果环境准备代码还是基于spring仓库开发。分支为feature/0004/springboot-swaggersw.原创 2020-07-17 08:49:25 · 779 阅读 · 0 评论 -
java的干儿子锁Lock
文章目录Lock的由来线程之间的交互Lock方法简介lock()lockInterruptibly()trylock()trylock(long,TimeUnit)unlock()newCondition()使用Lock保障高并发Lock期间线程挂起LockRunnable改造ReentrantLockDemo改造总结# 加入战队微信公众号大数据时代随之而来的就是并发问题。Java开发本身提供了关于锁的操作。我们知道的有Synchronized。 这个是JVM层面的锁。操作简单Lock的由来因为原创 2020-07-16 09:29:33 · 1481 阅读 · 1 评论 -
AbstractQueuedSynchronizer(AQS)抽丝剥茧深入了解JUC框架原理
文章目录简介Lock简单实用主体框架原理解析独占锁AQS数据结构CLH数据结构acquire实现步骤addWaiteracquireQueuedshouldParkAfterFailedAcquireparkAndCheckInterruptcancelAcquireunparkSuccessoracquirereleasetryRelease共享锁获取共享锁doAcquireSharedsetHeadAndPropagatedoReleaseShared释放共享锁doReleaseSharedtryAcq原创 2020-07-10 09:02:52 · 384 阅读 · 0 评论 -
【优雅写代码系统】springboot+mybatis+pagehelper+mybatisplus+druid教你如何优雅写代码
文章目录spring基本搭建整合mybatispom配置mybatis配置设置数据源设置sqlsessionfactory设置扫描设置开启事务资源放行测试结果思考&&疑问使用通用mapper功能使用mybatis-plus使用分页插件mybatis-plus自带分页github分页插件使用常规版本总结# 加入战队微信公众号主题springboot 融合了很多插件。springboot相比spring来说有一下有点自动配置: 针对很多spring的应用程序,springboot提供了原创 2020-06-11 09:26:34 · 1700 阅读 · 0 评论 -
万字长文只为告诉你Mybatis到底有多优雅。此文要求有一定开发经验
文章目录Mybatis基本认识动态代理JDK实现CGLIB动态代理总结反射Configuration对象作用映射器结构sqlsession执行流程(源码跟踪)ExecutorStatementHandler结果处理器(ResultSetHandler)总结主题mybatis运行分为两部分,第一部分读取配置文件缓存到Configuration对象中。用以创建SqlSessionFactory,第二部分是SqlSession的执行过程。Mybatis基本认识动态代理之前我们知道Mapper仅仅是原创 2020-06-03 09:13:38 · 455 阅读 · 0 评论 -
mybatis精讲(七)--动态sql
文章目录常用标签if元素choose元素trim元素forearchbind元素在我们传统的开发中我们会通过拼接sql达到数据库的操作。java中的拼接不仅效率低下而且代码很长不易维护。而Mybatis通过代理模式实现SQL语句的组装。简洁易懂。常用标签元素作用备注if判断语句条件分支chooseswitch多条件分支trim去除空字符特殊处理foreach集合循环遍历if元素if元素是常用的语句,常常在where内部和test结合原创 2020-06-02 09:45:09 · 258 阅读 · 0 评论 -
基于redis实现分布式锁
文章目录原理剖析实现编写注解拦截器拦截上述提及工具RedisLockStockKeyGenerator问题分析业务处理时间>上锁过期时间系统的不断扩大,分布式锁是最基本的保障。与单机的多线程不一样的是,分布式跨多个机器。线程的共享变量无法跨机器。为了保证一个在高并发存场景下只能被同一个线程操作,java并发处理提供ReentrantLock或Synchronized进行互斥控制。但是这仅仅对单机环境有效。我们实现分布式锁大概通过三种方式。redis实现分布式锁数据库实现分布式锁zk实现原创 2020-06-01 09:25:52 · 368 阅读 · 0 评论 -
freemark+dom4j实现自动化word导出
导出word我们常用的是通过POI实现导出。POI最擅长的是EXCEL的操作。word操作起来样式控制还是太繁琐了。今天我们介绍下通过FREEMARK来实现word模板导出。文章目录开发准备模板准备开发测试结果检测功能通用化思考Dom4j实现智能化复选框部分源码集合部分源码图片部分源码基于word自动化导出(含源码)参考网络文章# 加入战队微信公众号开发准备本文实现基于springboot,所以项目中采用的都是springboot衍生的产品。首先我们在maven项目中引入freemark坐标。.原创 2020-05-25 09:10:06 · 461 阅读 · 0 评论 -
史上最全的excel读写技术分享
此文章以独家授权一下公众号 :【新华前后端开发】【脚本之家】[TOC]【快速、简单避免OOM的java处理Excel工具】 github上关于项目的介绍简介poi使用userModel模式,这个模式的特点就是上手很容易。代码写起来很复杂。而且公用的地方很少。导致每次读写excel都需要重新编写。EasyExcel使用SAX模式使得easyexcel可以节省内存。而且easyexcel解决了...原创 2019-11-11 10:57:50 · 5539 阅读 · 0 评论 -
io流处理文件夹复制功能(java代码)
拷贝某个目录下得所有文件拷指定位置思想归纳 首先我们需要做的先获取到资源文件夹路径,这里我们先在程序中写死,然后我们还需要一个目标文件夹就是你需要拷贝到哪里。有了这两个文件夹我就可以进行复制了然后我们首先要先将目标文件路径创建出来,然后我们在对源文件进行遍历,遍历时我添加了两个辨认方法 1、如果是系统识别的标准文件则执行文件复制功能2、如果是文件夹的话则在目标文件夹对应的地方进行创建文件夹原创 2016-02-27 17:05:48 · 12873 阅读 · 1 评论 -
三层架构(MVC)实现简单登陆注册验证(含验证码)
前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了。不过在现实生产中我们大多采用的三层架构。所谓三层架构(web层+service层+dao层)。下面我就详细讲解一下 一、dao层——数据访问层模拟数据库:依然像钱一张一样,我们无法将数据库拿到文档中,所以我还是模拟了数据库(原创 2016-04-01 15:18:15 · 16997 阅读 · 0 评论 -
java 购物商城小项目训练
java web 模拟购物车练习(项目一) 首页(index.jsp)<div align="center" class="index"> <h1>Estore商城</h1> <marquee class="work_text" scrollamount="4" width="800" height="100" direction="left" loop="-1"> <b>欢迎大家原创 2016-04-01 15:16:37 · 15791 阅读 · 2 评论 -
Json串与实体的相互转换 (不依赖于jar包 只需Eclipse环境即可)
Json串与实体的相互转换 (不依赖于jar包 只需Eclipse环境即可) 最近学习了javaWeb开发,用的是ssh框架里面自己整合了hibernate 和Struts2 和spring框架,其中就遇到了一个问题–json的转换的问题。考虑到程序的稳定性,我花三天的时间研究json的转换,网上的代码有很多,但是都是依赖于一些写好的jar包,我导入这些jar包后都提示少东西要么就是提示错误所以我原创 2016-05-19 09:40:08 · 12116 阅读 · 0 评论 -
javaWeb 中前端Form表单数据处理(手动拼json)
在前端我们会用到最多的就是form表单提交数据,在form表单中有很多都是自动将数据传到后台,然后通过实体来接受的,但是有的时候我们就是需要在前端就拿到这个Form表单的数据,这是我们就可以自己讲数据拼接好// 获取表单里面的数据,返回一个json形式的对象 // 参数 form 为表单对象,filler 为字符串 // 对于表单中空值的元素,默认忽略,也可以设置填充值:filler 来填充空原创 2016-06-23 15:08:34 · 18989 阅读 · 4 评论 -
JavaWeb前端分页显示方法
在前端中我们总会遇到显示数据的问题,正常情况分页显示是必须的,这个时候我们不能仅仅在前端进行分页,在前端其实做起分页是很困难的,着就要求我们在后台拿数据的时候就要把分页数据准备好,在前端我们只需要将这些后台准备好的数据拿过来就行了在后台我们通常是实现准备好一个分页工具类Pagination这里是分页显示的基本数据在前台中我们只需要将pagination中构造函数中所需要的参数传过来就可以了。然后原创 2016-06-24 15:44:35 · 21153 阅读 · 2 评论 -
Excel批量导入(导出同理)
在做JavaWeb中添加数据使我们在所难免会遇到的,在大数据的环境下批量添加和批量删除是必须的,而批量删除只需要获取到我们需要删除的ID就可以了,在批量添加中我们就会遇到问题,问题是得到批量的数据,这就涉及到了poi技术中的Excel导入导出在前端中我们使用的Dropzone上传技术,在BootStrap中使用模态框显示Dropzone界面<div class="ibox-content">原创 2016-06-28 20:24:37 · 21334 阅读 · 1 评论