自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 服务端传输文件设置客户端下载需要的Content-Length

问题最近项目在做一个app在线升级的功能,由于公司没有OSS存储,也只有一个文件所以存到数据库中,客户端请求下载需要Content-Length 属性去显示下载进度,服务端设置了Content-Length  但是到服务器上就变成了 Transfer-Encoding: chunked, 解决服务端关键代码 InputStream bis = appVer...

2018-11-17 12:14:49 8170 1

原创 RocketMQ 了解

一、RocketMQ介绍Apache RocketMQ是一款具有低延迟、高性能和高可用,数十亿容量和灵活可扩展的分布式消息传递和流媒体平台。由4个部分组成,他们中的每一个都可以在没有单点故障的情况下进行水平扩展:name servers,borkers,producers,cousumers。二.RocketMQ网络部署特点Broker集群有多种配置方式:1,单Master    优点:除了配置简...

2018-06-09 12:02:19 414

原创 Java中的位运算

一、什么是位运算?使用位运算有什么好处?1、什么是位运算?    计算机在底层使用的是二进制补码进行运算。对应的二进制位进行操作,计算机只识别0和1。2、位运算的好处:    巧妙的使用位运算可以大量减少运行开销,优化算法。二、Java支持的7个位运算符&:与运算符|:或运算符~:非运算符^:异或运算符>>:右移运算符<<:左移运算符>>>:无符号...

2018-03-07 21:52:26 3031

原创 设计模式学习总纲

设计原则:    单一职责原则:每个类只负责单一的功能;    里氏替换原则:子类应该可以替换掉父类并正常工作;    接口隔离原则:接口最小化原则,一个接口拥有的行为应该尽可能的小;    依赖倒置原则:重度依赖抽象,高层模块不应该依赖低层模块,两者都依赖于抽象,抽象不应该依赖细节,细节应该依赖抽象;    迪米特原则:最小知道原则,一个类应该尽量不知道其他类太多东西,减少耦合,不要和陌生的类有...

2018-03-03 19:16:36 239

原创 FRP内网穿透使用教程 微信开发

简介frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。这里我们主要是用来调试微信开发,对此工具有兴趣者可去Github上了解开源以及中文文档地址:https://github.com/fatedier/frp/blob/master/README_zh.md使用1.下载 来自星空大神的一键脚本2.双击打开frp.bat,这里我们只要搭建客户...

2018-02-08 16:02:36 3209

原创 微信开发工具SDK推荐

推荐使用这个weixin-java-tools微信SDK,在熟悉微信文档的基础上,可以减少重复造轮子微信公众号官方文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432微信商户平台支付文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html微信开放平台文...

2018-02-08 14:30:22 503

原创 OSS的临时授权记录

主要是临时授权给移动端上传下载,临时授权提供读写功能对OSS存储的了解先看这篇博客:http://172.16.1.98:83/wordpress/2017/11/22/oss%E5%AD%98%E5%82%A8%E8%A7%84%E8%8C%83/参考文档:https://help.aliyun.com/document_detail/31953.htmlpackage com.lemo.fac...

2018-02-08 14:29:53 2041

原创 SpringMVC多数据源的单元测试

问题由于项目中配置的多数据源是动态,在service层的类上或方法上设置了注解,如@DataSource正常项目运行时可以使用的。但是单元测试时虽然进入了切面,默认运行的还是配置中设置的默认数据源,并没有切换数据源bean.xml<!--统一的dataSource--><bean id="dynamicDataSource" class="com.lemo.rms.config...

2018-02-08 13:54:07 1726

原创 Java 解压缩zip和tar.gz

记录压缩有空目录报错的问题,使用的是Apache的common-compress1.9 ZIP格式的解压缩package com.lemo.rms.util;import org.apache.commons.compress.archivers.zip.Zip64Mode;import org.apache.commons.compress.archivers.zip.ZipArchive...

2018-02-08 13:53:41 1783

原创 Spring Data JPA的save之坑

问题因为想要用mysql自增id,想要在save之后获取这个保存的实体的id判断是否插入成功,一直以为Spring Data JPA中的save方法执行结束之后,save(entity)中的entity就会自动被更新为保存的entity,但是其实不是这样的,save之后这个实体的id总是为0解决办法必须在主键get方法上要加上@GeneratedValue(strategy = Generatio...

2018-02-08 13:52:47 21314 1

原创 IntelliJ IDEA配置方法参数注释

2018-02-08 10:34:39 4192

原创 MySQL数据库8小时问题

简介在MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而应用中的连接池并不会感知这一变化,继续以为该被断开的连接依然有效,这就造成了在访问是报错。通常的错误描述为the last package successfully received from the server was XXX seconds ag0。解决通过配置数据库连接池的方式检测解决<!...

2018-02-08 10:33:37 609

转载 使用Redis处理抽奖高并发

问题:防止用户非法请求并发请求比较大数据库压力大方案:负载均衡缓存多线程异步…流程:初始化-把抽奖活动和奖品数据都放到redis缓存当有用户参与抽奖活动就从redis把奖品列表取出来调用之前提到的算法如果中奖更新redis数据,同时提交任务到线程池,更新数据库中奖品的数量同时保存抽奖结果到数据库为了利用redis的decr功能来保证修改奖品余量的一致性,每一个奖品的余量需要在redis中单独做缓存...

2018-02-08 10:33:10 5573

原创 关于RestTemple发送微信请求遇到的坑

一、发送请求中文乱码RestTemple默认字符编码为ISO-8859-1,而我们需要使用UTF-8。不然getForObject得到的数据中文乱码,或者postForObject发送的数据乱码。二、数据转换Map是因为微信接口文档虽说返回的是 Json 数据,但是同时返回的 Header 里面的 Content-Type 值确是 text/plain 的!!对于RestTemple默认可以转换的...

2018-02-08 10:32:36 1923

原创 项目中使用SVN管理原则

一、为什么需要分支大多数产品开发存在这样一个生命周期:编码、测试、发布,然后不断重复。通常是这样的开发步骤:1)    开发人员开发完毕某一版本(如版本A)功能后,提交测试;2)    测试人员对待发布版本A进行测试,同时开发人员继续开发新功能(如版本B);3)    测试人员提交bug,研发人员修复bug,同时继续开发新功能;4)    重复第3步骤,直到待发布版本A测试通过测试后,发布第一版本...

2018-02-08 10:26:05 384 1

原创 前(AngluarJS)后(Java)端分离微信授权

简介这是第一次前后端分离编写项目,后端使用的Java语言,框架使用的是SpringBoot框架,前端使用框架AngularJs。最终的大致思路是1、前端请求正常接口,进入拦截器,后台从Cookie中没取到值,返回54000给前端。2、由前端页面发起授权跳转(跳转到微信官方的那个授权接口)。3、用户点击同意后,跳转后台接口接收code。4、后端通过code获取用户的access_token和o...

2018-02-08 10:24:58 491 1

原创 SpringMVC+ EasyUI使用filebox 上传

今天用RMS写减轻茶后台上传文件,发现不能上传,前面一直使用JFinal上传,找了半天一直报错,最后才发现是SpringMVC上传问题。做个记录。前端页面一般正常页面需要文件上传需要添加enctype="multipart/form-data"><form id="banner_save_dialog_form" method="post" enctype="multipart/for...

2018-02-08 10:23:37 2091

原创 Java中OSS存储使用

本篇文章希望你先看完官方的API了解一下OSS基本语法和概念再来应该比较容易懂。这里给出官方的OSS API:OSS API官方SDK:点击打开链接官方帮助文档:点击打开链接OSS GitHub地址:点击打开链接OSS java 依赖jar包地址:点击下载参考文章:http://blog.csdn.net/github_36086968/article/details/531132742018-0...

2018-02-08 10:23:12 16409 1

转载 使用AntiSamy拦截xss攻击

什么是Xss攻击XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是...

2018-02-08 10:22:11 1290

原创 使用Appscan进行安全测试

简介Appscan是IBM出品的一个安全测试软件,采用黑盒测试的方式,可以扫描常见的web应用安全漏洞。其工作原理,首先是根据起始页爬取站下所有可见的页面,同时测试常见的管理后台;获得所有页面之后利用SQL注入原理进行测试是否存在注入点以及跨站脚本攻击的可能;同时还会对cookie管理、会话周期等常见的web安全漏洞进行检测。AppScan功能十分齐全,支持登录功能并且拥有十分强大的报表。在扫描结...

2018-02-08 10:21:03 11402 1

转载 TestNG使用和安装

TestNG简介:TestNG是一个测试框架,其灵感来自JUnit和NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便。TestNG相较于Junit的优点:·可指定执行顺序, dependsOnMethods 属性来应对测试的依赖性问题。 ·参数化测试,TestNG 提供了开箱即用的类似特性。通过在 TestNG 的 XML 配置文件中放入参数化数据,就可以对不同的数据集重用同一个测...

2018-02-08 10:18:21 839

原创 logback的使用和logback.xml详解

更新记录2017-02-06 :1.需要更改的参数提取为变量,如果是SpringBoot项目,可以完全写在配置文件,可去看减轻茶的配置 ;2.定义控制台自定义颜色,Eclipse需要安装ANSI插件2017-12-28 :修改添加日志记录到数据库,去除1.2.3版本不兼容的保存日志文件的file标签 ,<File>${LOG_HOME}/info.duduerp.log</Fil...

2018-02-08 10:17:36 390

原创 Eclipse下SVN创建分支、合并分支

使用原则http://172.16.1.98:83/wordpress/2017/12/15/%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8svn%E7%AE%A1%E7%90%86%E5%8E%9F%E5%88%99/开发工具Eclipse MARS1版本,以下Eclipse中指的是这个版本。一、切换分支合并根据目标不同分为2种:1、分支合并到主干:主...

2018-02-08 10:10:28 3529

原创 IDAE下SVN创建分支、合并分支

使用原则http://172.16.1.98:83/wordpress/2017/12/15/%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8svn%E7%AE%A1%E7%90%86%E5%8E%9F%E5%88%99/开发工具IDEA 2017.2.6版本,以下IDEA中指的是这个版本。一、合并时的切换分支合并根据目标不同分为2种:1、分支合并到主干:...

2018-02-08 10:10:02 811

原创 ConcurrentModificationException异常出现的解决方案

问题ArrayList作为Java程序中最常被使用的集合类型,使用迭代方式遍历该集合,并删除其中的某些特定元素是一个很常见的操作场景。我们直接看来示例代码:public class TestForeach{public static void main(String args[]) {List list = new ArrayList();list.add("大锤");list.add(...

2018-02-08 10:09:17 161

转载 体验 Java 9 交互式编程环境Jshell使用示例

简介Java 9 正式版已于当地时间的 9 月 21 日(北京时间大约是9月22日凌晨)如期发布。可前往Oracle 官网下载。Java 9 没有像 Java 5/Java 8 那样引入新的编程范式而给语言本身带来革命性的改进,不过 Java 9 的改动还是很大的,尤其是引入模块化对 JDK 与运行时的改动都很大。特性▶ 交互式命令行(JEP 222: jshell: The Java Shell...

2018-02-08 10:08:46 630

原创 Jackson实现序列化和反序列化

简介通俗的来说,Jackson是一个 Java 用来处理 JSON 格式数据的类库,其性能非常好。Jackson具有比较高的序列化和反序列化效率,据测试,无论是哪种形式的转换,Jackson > Gson > Json-lib,而且Jackson的处理能力甚至高出Json-lib近10倍左右,且正确性也十分高。使用Jackson提供了很多类和方法,而在序列化和反序列化中使用的最多的类则...

2018-02-08 10:08:02 21414 2

原创 mybatis批量更新遇到的坑

前言实际上,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入(一般是sql语句有分号时有问题),但是,实际上即使Mybatis完美支持你的sql,你也得看看你操作的数据库是否支持。问题先带大家来看一段sql的配置,<update id="updateState"> <foreach collection="list" item="item" inde...

2018-02-08 10:07:34 818

原创 深入详解Java中的hashcode()与equals()方法

Java中的超级父类 java.lang.Object 定义了两个重要方法:hashCode()与equals()方法。它们不仅被大量地直接使用,而且与集合容器,特别是与基于哈希机制的集合容器有着紧密的联系。本文中,我们首先提供一个常见的错误代码示例,接着分析错误原因,最后详细阐述 hashcode() 与 equals() 方法之间的契约。public boolean equals(Object...

2018-02-08 10:06:59 544

转载 如何高效判断Java数组是否包含某个值

在Java中,我们如何判断一个未排序数组中是否包含一个特定的值?这在Java代码中是一个频繁且非常实用的操作。那么什么样的方法才是最高效的方式?主要包括以下几种方法:四种方法Listpublic static boolean useList(String[] arr, String value) { return Arrays.asList(arr).contains(value); } Setp...

2018-02-08 10:06:21 515

转载 HTTP中Get与Post的区别

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。1.根据HTT...

2018-02-08 10:05:45 177

原创 纪念

雷默一年写了44篇博客,依此纪念

2018-02-08 10:03:30 167

原创 SpringMVC接收复杂集合参数,集合对象

Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。以下列举接收List<Integer...

2018-02-08 10:03:04 9274 3

原创 Mybatis Integer类型,值为0被认为是空字符串的解决办法

mybatis写查询时,正常是先判断是否为空,我们一般是这样写。<if test="type != null and type != ''"> and type = #{type} </if>如果不空null并且不是空字符串才去修改这个值,但这样写只能针对字符串(String)类型,如果是Integer类型的话就会有问题了。因为Integer对象,为零则...

2018-02-08 10:02:59 1810

原创 Java序列化相关知识学习

每次写DTO类虽然都实现了Serializable接口,但是其并没有显示声明serialVersionUID,网上发现这样的话每次打包有改动JDK就会为其重新生成serialVersionUID.这就带来了不同版本之间的实体类可能反序列化不成功,线上RPC调用出现了问题.那么就深入探讨一下原因.Serializable的作用看该类的JDK注释可以发现The serialization interf...

2018-02-08 10:02:54 181

原创 IDEA的mybatis插件plugin 和tools

最近用idea写项目,mybatis从Mapper.java到xml每次跳转都不方便,在曾俊的提醒下装了两个插件,感谢曾俊的提醒,装好后特此分享。2017.11.16 更新关于新版的Mybatis Plugin采用zkm混淆了,反编译不能直接看到代码实现,破解难度大大增加。zkm混淆的大概思路就是将源代码中的包名、类名重新编排。源代码类中直接赋值的字符串,混淆后变为通过静态代码块、构造函数、组合调...

2018-02-08 10:02:49 1900

转载 Java的自动装箱和自动拆箱

Java为每种基本数据类型都提供了对应的包装器类型。举个例子:public class TestMain{    publicstatic void main(String[] args)    {        Integer i =10;    }} 这个过程中会自动根据数值创建对应的Integer对象,这就是自动装箱。再看另外一段代码:public class TestMain{    pu...

2018-02-08 10:02:44 253

转载 js数组常用方法整理

最近做的项目当中,我在页面做一些逻辑的时候比较多的用到了js数组的相关知识。有些知识在用的时候还不是很熟练,在网上找了整理下js数组相关知识,以备以后查阅。1、数组的创建var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = ...

2018-02-08 10:02:33 290

原创 Mybatis的动态SQL语句

刚进公司使用的是Jfinal,第一次使用记录MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。MyBatis中用于实现动态SQL的元素主要有:ifchoose(when,otherwise)trimwheresetforeachif就是简单的条件判断,利用if语句我们可以实现某些简单的条件选择。先来看如下一个例子:Xml代

2018-02-07 20:32:35 276

原创 Java几种对象( PO、BO、VO、DAO、DTO、POJO)解释

最近在学习用SSM框架写渡渡ERP,之前对这些专业缩略语都不太懂,所以做个记录。一、常见的专业对象1、PO:persistant object 持久对象最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其他对象。2、BO:business object 业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其他的

2018-02-07 20:31:32 627 1

空空如也

空空如也

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

TA关注的人

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