- 博客(51)
- 收藏
- 关注
原创 服务端传输文件设置客户端下载需要的Content-Length
问题最近项目在做一个app在线升级的功能,由于公司没有OSS存储,也只有一个文件所以存到数据库中,客户端请求下载需要Content-Length 属性去显示下载进度,服务端设置了Content-Length 但是到服务器上就变成了 Transfer-Encoding: chunked, 解决服务端关键代码 InputStream bis = appVer...
2018-11-17 12:14:49
8316
1
原创 RocketMQ 了解
一、RocketMQ介绍Apache RocketMQ是一款具有低延迟、高性能和高可用,数十亿容量和灵活可扩展的分布式消息传递和流媒体平台。由4个部分组成,他们中的每一个都可以在没有单点故障的情况下进行水平扩展:name servers,borkers,producers,cousumers。二.RocketMQ网络部署特点Broker集群有多种配置方式:1,单Master 优点:除了配置简...
2018-06-09 12:02:19
463
原创 Java中的位运算
一、什么是位运算?使用位运算有什么好处?1、什么是位运算? 计算机在底层使用的是二进制补码进行运算。对应的二进制位进行操作,计算机只识别0和1。2、位运算的好处: 巧妙的使用位运算可以大量减少运行开销,优化算法。二、Java支持的7个位运算符&:与运算符|:或运算符~:非运算符^:异或运算符>>:右移运算符<<:左移运算符>>>:无符号...
2018-03-07 21:52:26
3099
原创 设计模式学习总纲
设计原则: 单一职责原则:每个类只负责单一的功能; 里氏替换原则:子类应该可以替换掉父类并正常工作; 接口隔离原则:接口最小化原则,一个接口拥有的行为应该尽可能的小; 依赖倒置原则:重度依赖抽象,高层模块不应该依赖低层模块,两者都依赖于抽象,抽象不应该依赖细节,细节应该依赖抽象; 迪米特原则:最小知道原则,一个类应该尽量不知道其他类太多东西,减少耦合,不要和陌生的类有...
2018-03-03 19:16:36
265
原创 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
3280
原创 微信开发工具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
532
原创 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
2076
原创 SpringMVC多数据源的单元测试
问题由于项目中配置的多数据源是动态,在service层的类上或方法上设置了注解,如@DataSource正常项目运行时可以使用的。但是单元测试时虽然进入了切面,默认运行的还是配置中设置的默认数据源,并没有切换数据源bean.xml<!--统一的dataSource--><bean id="dynamicDataSource" class="com.lemo.rms.config...
2018-02-08 13:54:07
1755
原创 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
1852
原创 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
21410
1
原创 MySQL数据库8小时问题
简介在MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而应用中的连接池并不会感知这一变化,继续以为该被断开的连接依然有效,这就造成了在访问是报错。通常的错误描述为the last package successfully received from the server was XXX seconds ag0。解决通过配置数据库连接池的方式检测解决<!...
2018-02-08 10:33:37
662
转载 使用Redis处理抽奖高并发
问题:防止用户非法请求并发请求比较大数据库压力大方案:负载均衡缓存多线程异步…流程:初始化-把抽奖活动和奖品数据都放到redis缓存当有用户参与抽奖活动就从redis把奖品列表取出来调用之前提到的算法如果中奖更新redis数据,同时提交任务到线程池,更新数据库中奖品的数量同时保存抽奖结果到数据库为了利用redis的decr功能来保证修改奖品余量的一致性,每一个奖品的余量需要在redis中单独做缓存...
2018-02-08 10:33:10
5621
原创 关于RestTemple发送微信请求遇到的坑
一、发送请求中文乱码RestTemple默认字符编码为ISO-8859-1,而我们需要使用UTF-8。不然getForObject得到的数据中文乱码,或者postForObject发送的数据乱码。二、数据转换Map是因为微信接口文档虽说返回的是 Json 数据,但是同时返回的 Header 里面的 Content-Type 值确是 text/plain 的!!对于RestTemple默认可以转换的...
2018-02-08 10:32:36
1963
原创 项目中使用SVN管理原则
一、为什么需要分支大多数产品开发存在这样一个生命周期:编码、测试、发布,然后不断重复。通常是这样的开发步骤:1) 开发人员开发完毕某一版本(如版本A)功能后,提交测试;2) 测试人员对待发布版本A进行测试,同时开发人员继续开发新功能(如版本B);3) 测试人员提交bug,研发人员修复bug,同时继续开发新功能;4) 重复第3步骤,直到待发布版本A测试通过测试后,发布第一版本...
2018-02-08 10:26:05
421
1
原创 前(AngluarJS)后(Java)端分离微信授权
简介这是第一次前后端分离编写项目,后端使用的Java语言,框架使用的是SpringBoot框架,前端使用框架AngularJs。最终的大致思路是1、前端请求正常接口,进入拦截器,后台从Cookie中没取到值,返回54000给前端。2、由前端页面发起授权跳转(跳转到微信官方的那个授权接口)。3、用户点击同意后,跳转后台接口接收code。4、后端通过code获取用户的access_token和o...
2018-02-08 10:24:58
518
原创 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
2118
原创 Java中OSS存储使用
本篇文章希望你先看完官方的API了解一下OSS基本语法和概念再来应该比较容易懂。这里给出官方的OSS API:OSS API官方SDK:点击打开链接官方帮助文档:点击打开链接OSS GitHub地址:点击打开链接OSS java 依赖jar包地址:点击下载参考文章:http://blog.youkuaiyun.com/github_36086968/article/details/531132742018-0...
2018-02-08 10:23:12
16501
1
转载 使用AntiSamy拦截xss攻击
什么是Xss攻击XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是...
2018-02-08 10:22:11
1342
原创 使用Appscan进行安全测试
简介Appscan是IBM出品的一个安全测试软件,采用黑盒测试的方式,可以扫描常见的web应用安全漏洞。其工作原理,首先是根据起始页爬取站下所有可见的页面,同时测试常见的管理后台;获得所有页面之后利用SQL注入原理进行测试是否存在注入点以及跨站脚本攻击的可能;同时还会对cookie管理、会话周期等常见的web安全漏洞进行检测。AppScan功能十分齐全,支持登录功能并且拥有十分强大的报表。在扫描结...
2018-02-08 10:21:03
11562
1
转载 TestNG使用和安装
TestNG简介:TestNG是一个测试框架,其灵感来自JUnit和NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便。TestNG相较于Junit的优点:·可指定执行顺序, dependsOnMethods 属性来应对测试的依赖性问题。 ·参数化测试,TestNG 提供了开箱即用的类似特性。通过在 TestNG 的 XML 配置文件中放入参数化数据,就可以对不同的数据集重用同一个测...
2018-02-08 10:18:21
872
原创 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
418
原创 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
3557
原创 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
851
原创 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
175
转载 体验 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
670
原创 Jackson实现序列化和反序列化
简介通俗的来说,Jackson是一个 Java 用来处理 JSON 格式数据的类库,其性能非常好。Jackson具有比较高的序列化和反序列化效率,据测试,无论是哪种形式的转换,Jackson > Gson > Json-lib,而且Jackson的处理能力甚至高出Json-lib近10倍左右,且正确性也十分高。使用Jackson提供了很多类和方法,而在序列化和反序列化中使用的最多的类则...
2018-02-08 10:08:02
21575
3
原创 mybatis批量更新遇到的坑
前言实际上,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入(一般是sql语句有分号时有问题),但是,实际上即使Mybatis完美支持你的sql,你也得看看你操作的数据库是否支持。问题先带大家来看一段sql的配置,<update id="updateState"> <foreach collection="list" item="item" inde...
2018-02-08 10:07:34
862
原创 深入详解Java中的hashcode()与equals()方法
Java中的超级父类 java.lang.Object 定义了两个重要方法:hashCode()与equals()方法。它们不仅被大量地直接使用,而且与集合容器,特别是与基于哈希机制的集合容器有着紧密的联系。本文中,我们首先提供一个常见的错误代码示例,接着分析错误原因,最后详细阐述 hashcode() 与 equals() 方法之间的契约。public boolean equals(Object...
2018-02-08 10:06:59
567
转载 如何高效判断Java数组是否包含某个值
在Java中,我们如何判断一个未排序数组中是否包含一个特定的值?这在Java代码中是一个频繁且非常实用的操作。那么什么样的方法才是最高效的方式?主要包括以下几种方法:四种方法Listpublic static boolean useList(String[] arr, String value) { return Arrays.asList(arr).contains(value); } Setp...
2018-02-08 10:06:21
555
转载 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
189
原创 SpringMVC接收复杂集合参数,集合对象
Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。以下列举接收List<Integer...
2018-02-08 10:03:04
9305
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
1867
原创 Java序列化相关知识学习
每次写DTO类虽然都实现了Serializable接口,但是其并没有显示声明serialVersionUID,网上发现这样的话每次打包有改动JDK就会为其重新生成serialVersionUID.这就带来了不同版本之间的实体类可能反序列化不成功,线上RPC调用出现了问题.那么就深入探讨一下原因.Serializable的作用看该类的JDK注释可以发现The serialization interf...
2018-02-08 10:02:54
200
原创 IDEA的mybatis插件plugin 和tools
最近用idea写项目,mybatis从Mapper.java到xml每次跳转都不方便,在曾俊的提醒下装了两个插件,感谢曾俊的提醒,装好后特此分享。2017.11.16 更新关于新版的Mybatis Plugin采用zkm混淆了,反编译不能直接看到代码实现,破解难度大大增加。zkm混淆的大概思路就是将源代码中的包名、类名重新编排。源代码类中直接赋值的字符串,混淆后变为通过静态代码块、构造函数、组合调...
2018-02-08 10:02:49
2022
转载 Java的自动装箱和自动拆箱
Java为每种基本数据类型都提供了对应的包装器类型。举个例子:public class TestMain{ publicstatic void main(String[] args) { Integer i =10; }} 这个过程中会自动根据数值创建对应的Integer对象,这就是自动装箱。再看另外一段代码:public class TestMain{ pu...
2018-02-08 10:02:44
271
转载 js数组常用方法整理
最近做的项目当中,我在页面做一些逻辑的时候比较多的用到了js数组的相关知识。有些知识在用的时候还不是很熟练,在网上找了整理下js数组相关知识,以备以后查阅。1、数组的创建var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = ...
2018-02-08 10:02:33
306
原创 Mybatis的动态SQL语句
刚进公司使用的是Jfinal,第一次使用记录MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。MyBatis中用于实现动态SQL的元素主要有:ifchoose(when,otherwise)trimwheresetforeachif就是简单的条件判断,利用if语句我们可以实现某些简单的条件选择。先来看如下一个例子:Xml代
2018-02-07 20:32:35
335
原创 Java几种对象( PO、BO、VO、DAO、DTO、POJO)解释
最近在学习用SSM框架写渡渡ERP,之前对这些专业缩略语都不太懂,所以做个记录。一、常见的专业对象1、PO:persistant object 持久对象最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其他对象。2、BO:business object 业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其他的
2018-02-07 20:31:32
666
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人