
技术杂谈
文章平均质量分 60
JavaMrSun
技术,不进则死
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring属性拦截器@InitBinder搭配@RequestBody使用
前言:Spring属性拦截器@InitBinder搭配@RequestBody使用,导致dto内属性拦截不到的问题。查找了许多文档,发现原文里面说了,用@RequestBody注释的的确不生效,但我们又有这个需求,怎么办呢,经过我研究,阅读源码之后决定用反射来实现一些我们需要的功能,写到最后发现可以用拦截器或者aop实现有可能会更简单一点,但还是记录一下吧,给大家参考,把代码贴出来,大家一...原创 2020-04-21 17:07:12 · 1508 阅读 · 1 评论 -
mysql 事务没提交锁表解决方案
select * from information_schema.innodb_trx;查看堵塞的线程,直接kill trx_mysql_thread_id这个id原创 2018-12-05 13:56:14 · 765 阅读 · 0 评论 -
通过url下载图片到本地
/** * 文件或文件夹不存在则创建 * @param dir 文件夹 * @param filepath 文件名 */public static void createDirFile(String dir){ File file = new File(dir); if(!file.exists()){ file.mkdirs(); }}/**...原创 2018-12-17 11:30:59 · 1973 阅读 · 0 评论 -
for循环中控制事务单个提交问题
最近有个业务是for循环里面,循环一次业务提交一次,过程中发现事务不能提交,总结一下这个问题第一点:我用的是通用mapper,用到他的updateByPrimaryKeySelective方法,这个方法必须设置主键,不然他的where后面会带上所有字段造成sql错误第二点:用spring来做声明式事务的话,方法直接调用内部方法是不会走到代理类的,也就是不会走到切面,所以@Trans...原创 2018-12-18 11:52:29 · 13939 阅读 · 4 评论 -
使用切面AOP实现全局乐观锁
最近项目需要版本号乐观锁,但发现每个需要加锁的地方都要做处理发现很繁琐很臃肿,所以使用aop切面+自定义注解来抽取实现乐观锁。第一步使用@Aspect需要pom引入 <!--使用AspectJ方式注解需要相应的包--><dependency> <groupId>org.aspectj</groupId> <ar...原创 2019-01-03 18:28:52 · 1348 阅读 · 0 评论 -
WebMagic爬虫(一)基础版
WebMagic是码云上面一个很热门的爬虫框架,非常好用便捷地址:https://gitee.com/flashsword20/webmagic 感谢作者爬取一个页面的时候,有些网站会通过js渲染或者通过ajax渲染,普通的无渲染就可加载出来的页面此篇文件介绍,通过js简单渲染处理的数据下篇文章,要是用户想爬取ajax渲染出来的数据,请参考WebMagic文档作者介绍的方法:http:/...原创 2018-12-19 10:36:31 · 319 阅读 · 0 评论 -
WebMagic爬虫(二)升级版
我在爬取页面的时候发现有很多数据是js渲染进去的,通过:String htm = page.getHtml().xpath("*/html/html()").toString();page.putField("html",htm);就可以看到爬取下来的页面数据,可以很清晰的看出页面里面有没有自己想要的数据,如果没有,那么我们就需要进一步操作!如果数据是ajax请求过来的,那么可以参...原创 2018-12-19 11:09:26 · 1172 阅读 · 0 评论 -
百万级数据EXCEL导出--easyexcel
easyexcel 项目git地址为: https://github.com/alibaba/easyexcel官方使用指南见: https://github.com/alibaba/easyexcel/blob/master/quickstart.md官方介绍:Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套...原创 2019-01-03 10:06:51 · 18179 阅读 · 17 评论 -
微信APP支付
前言:最近公司接了个商城项目,被分到了做微信支付,支付宝支付和stripe国际支付,在此记录一下。正文: 微信支付接入方式分很多种如下:比如h5,大部分业务几乎都在后台,而app支付一半在前端一半在后端,我这里讲的是app支付官方说明文档地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1...原创 2019-03-11 10:15:33 · 452 阅读 · 0 评论 -
支付宝APP支付
支付宝支付和微信支付一样,后端只需要关心三个接口,其他的交给前端,前端集成sdk去操作https://docs.open.alipay.com/204<!-- 支付宝支付官方SDK --><dependency> <groupId>com.alipay.sdk</groupId> <artifactId>al...原创 2019-03-11 10:20:10 · 672 阅读 · 0 评论 -
stripe国际支付(对接支付宝、微信)
前言:stripe国际支付现在网上资料很少,且不支持中国,所以如果要用需要去支持的国家注册商户,官网的java demo是用的spark框架,我这里用的spring,验签需要手动验签,且不能用官网的方法正文:支付宝文档地址:https://stripe.com/docs/sources/alipay微信支付文档地址:https://stripe.com/docs/sources/wec...原创 2019-03-11 15:18:59 · 22918 阅读 · 12 评论 -
线程学习1:ThreadLocal的使用
线程局部变量;对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。栗子:结果:可以看到输出的线程顺序并非最初定义线程的顺序,理论上可以说明多线程应当是并发执行的,但是依然可以保持每个线程里面的值是对应的,说明...原创 2019-03-22 16:23:34 · 227 阅读 · 0 评论 -
线程学习2:带返回值的线程Callable和FutureTask
package com.research;import java.util.Date;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent....原创 2019-03-22 16:26:09 · 243 阅读 · 0 评论 -
线程学习3:ThreadGroup线程组
package com.research;/** * 线程组 * ①定义线程组 * ThreadGroup类中有 2个构造方法,它们用来定义线程组。这 2个构造方法的使用格 式如下: * public ThreadGroup(String name); * public ThreadGroup(ThreadGroup parent,String name);...原创 2019-03-22 16:30:49 · 333 阅读 · 0 评论 -
线程学习4:join方法的使用
package com.research;/** * join方法 * 原理: * 从源码中可以看到:join方法的原理就是调用相应线程的wait方法进行等待操作的, * 例如A线程中调用了B线程的join方法,则相当于在A线程中调用了B线程的wait方法, * 当B线程执行完(或者到达等待时间),B线程会自动调用自身的notifyAll方法唤醒A线程, * 从而达到同步...原创 2019-03-22 16:52:58 · 261 阅读 · 0 评论 -
POST请求https遇到unable to find valid certification path to requested target
完整异常信息为:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid ce...原创 2019-05-23 18:17:33 · 2063 阅读 · 0 评论 -
spring cloud 二刷总结摘抄记录
Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud...转载 2019-06-13 16:16:30 · 347 阅读 · 0 评论 -
热部署插件jrebel
近乎无感的热部署,不用频繁启动服务,可以说是爽歪歪,以下为springboot的方式使用jrebel安装:激活后设置成离线模式2019年五月十四重新上一下线就行,激活链接从某包几块钱买的,买个方便启动修改某个文件出现:应用成果...原创 2018-11-15 18:21:30 · 314 阅读 · 0 评论 -
Mybatis generator 代码 自动生成插件
前言:使用IDEA搭建springboot+mybatis框架,自动生成基础文件和mapping.xml第一步:在pom文件中: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId>...原创 2018-10-26 10:53:05 · 231 阅读 · 0 评论 -
Netty实现WebSocket通信案例
Netty开发服务端,HTML实现客户端,实现服务端与客户端的实时交互。1.存储整个工程的全局配置: package com.research.netty.WebSocket;import io.netty.channel.group.ChannelGroup;import io.netty.channel.group.DefaultChannelGroup;import ...转载 2018-08-21 17:21:08 · 881 阅读 · 0 评论 -
zookeeper单机模式与集群模式的配置与安装
ZooKeeper 是一个为分布式应用所设计的分布的、开源的协调服务。设计 ZooKeeper 的目的是为了减轻分布式应程序所承担的协调任务,借助于 zookeeper 服务开发出高可靠的分布式协同程序。 ZooKeeper 是构建dubbo框架最主要的组件学习zookeeper是学习dubbo框架的必学知识和最重要组成部分。ZooKeeper 的安装:方式1.单机模式...原创 2018-06-28 11:14:31 · 1023 阅读 · 0 评论 -
项目性能监控之javamelody
1.引入jar包JavaMelody<!-- Java应用程序监控JavaMelody begin --><!-- 启动后直接http://localhost:2121/monitoring查看参数 --> <dependency> <groupId>net.bull.javamelody</groupId> ...原创 2018-06-28 11:14:51 · 804 阅读 · 0 评论 -
mysql启动报错Starting MySQL. ERROR! The server quit without updating PID file
1.有可能selinux权限问题:2.文件系统权限:3.检查磁盘空间: 摘自网友: 关于MySQL的SeLinux更多信息,请参考:http://aiezu.com/article/mysql_selinux_config.html ...转载 2018-06-28 11:15:15 · 2747 阅读 · 0 评论 -
linux安装svn
第一步:通过yum命令安装svnserve,命令如下:>yum -y install subversion此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行若需查看svn安装位置,可以用以下命令:>rpm -ql subversion第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)选择在var路径下创建版本库,当前处于根目录下,一次性创建如下:&...原创 2018-06-28 11:15:44 · 191 阅读 · 0 评论 -
Myeclipse利用hibernateTool工具反射生成实体类对象
1.如图填写好相应连接信息 2.新建一个项目并在新建的项目内建一个包比如pojo 3.开始生成 注:myeclipse2014版可以破解,破解方法:http://www.jb51.net/softs/150887.htmlhttps://jingyan.baidu.com/article/acf728fd49519ff8e410a361.html ...原创 2018-06-28 11:16:06 · 329 阅读 · 0 评论 -
防XSS攻击和SQL注入手段
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同。 这里我...原创 2018-06-28 11:16:31 · 1199 阅读 · 0 评论 -
本地线上断点调试方法
1.编辑在tomcat的bin目录下的catalina.sh如下插入自定义端口号 Linux中配置tomcat在catalina.sh中添加如下CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"(不要换行,要在同一行) 2.3.编辑填写对应的端口号和ip地址3.4.添加相应的项...原创 2018-06-28 11:16:49 · 2264 阅读 · 0 评论 -
阿里云环境配置
1.安装yum 执行命令:yum -y install lrzsz(yum自动安装) 2.Jdk安装:b) 将下载的Jdk解压 C)配置环境变量 打开 /etc/profile 添加如下代码 export JAVA_HOME=/usr/local/java-jdk1.7 (java解压路径bin的根目录)export CLASSPATH=.:$JAVA_HOME/lib/tools....原创 2018-06-28 11:17:07 · 628 阅读 · 0 评论 -
linux启动两个tomcat
1.修改/etc/profile2.vim /home/apache-tomcat-gold/apache-tomcat-7.0.72/bin/catalina.sh 添加:3.当出现已存在异常时候修改/config/server.xml里面原创 2018-06-28 11:17:25 · 337 阅读 · 0 评论 -
idea maven项目初体验
idea 用的版本是2018.1.5最新版本,汉化了一部分第一步:新建项目配置maven 添加tomcat 添加本地tomcat成功之后会有这个界面原创 2018-06-29 09:31:26 · 209 阅读 · 0 评论 -
jsonp跨域
1.只能用get方法前端:$.ajax({ type: "get", async: false, url: "https://www.***.com/to/getBankRankingDate", dataType: "jsonp", jsonp: "theFunction", //指定参数名称 /* jsonpCallbac...原创 2018-07-12 09:38:59 · 182 阅读 · 0 评论 -
Java内存泄漏问题--java既然存在垃圾回收机制,为什么还存在内存泄漏?
1.什么叫内存泄漏?简单来说就是一个东西放在内存里的时间太长了,当你的程序都跑完了,它还存在那里。这时它是白白的占用了你的内存,累积起来占用的内存越来越多……最后就会导致JVM报错:out of memory。他占用的是我们的物理内存。2.java内存泄漏的根本原因是?内存对象明明已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。3.java既然存在gc线程,为什么还存在内存泄漏?这个...转载 2018-07-12 17:19:09 · 1794 阅读 · 0 评论 -
IDEA 普通本地jar项目导入
1.从svn拉下项目2.打开project Struct...3.配置4.编码5.选择编译器6.添加tomcat并启动原创 2018-07-25 12:10:49 · 2387 阅读 · 0 评论 -
WebSocket下的聊天室
websocket是解决客户端与服务器端实时通信而产生的技术。 websocket协议允许在客户端和服务端之间建立一条双向传递信息的通道,它是建立在TCP协议之上的,首先通过”握手“来确认和建立通道,之后客户端和服务端可以通过这个通道传递信息,而不需要再次发起请求,而且客户端和服务端都可以主动的发送消息。这种技术不依赖于HTTP连接(比如XMLHttpRequest,...原创 2018-08-17 09:59:48 · 309 阅读 · 0 评论 -
安全框架Shiro
shiro认证: package com.research.shiro;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.UsernamePasswordToken;import org.apache.shiro.mgt.DefaultSecurityManager;import...原创 2018-08-27 14:46:34 · 305 阅读 · 0 评论 -
nginx配置反向代理
nginx是一款高性能的web服务器,反向代理服务器也是一个邮件代理服务器。她是http轻量级的,支持高并发。工作方式:Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是nginx配置中的一个指令,由于URL匹配),而这个location中所配置的每个指令将会启...原创 2018-08-24 10:26:05 · 785 阅读 · 0 评论 -
BIO,伪异步IO,NIO,AIO与Netty
BIO(阻塞IO)一个线程负责连接,一请求一应答,缺乏弹性伸缩能力。 伪异步IO通信(BIO优化版本)线程池负责连接,M请求N应答,线程池阻塞。伪异步IO是BIO的一个优化方案。创建N个线程的线程池对请求进行处理,由于线程池可创建大小,所以资源是可控的,当并发很大时也不会造成资源耗尽或者当机,但当有大量客户端接入的时候会造成线程池阻塞。 NIO通信(非阻塞IO,...原创 2018-08-21 15:13:36 · 1047 阅读 · 0 评论 -
前端时间倒计时方案
<script>var i=0;function showtime(){//需要倒计时的时间节点var gameTime = $("#gameTime").val();if(gameTime ==null || gameTime==""){return false;}var endyear=gameTime.substring(0,4);var endmonth=gameTime.s...原创 2018-06-29 09:30:50 · 1706 阅读 · 0 评论