Java相关
文章平均质量分 63
在远行的路上
在软件工程师的路上愈走愈远。。。
Github:https://github.com/lizhyocx
展开
-
用Callable和CurrentHashMap实现排它锁
在构建缓存的时候,不可避免的要使用排它锁,防止多个线程同时检测到没有缓存,而去查询数据库。此时一般情况下都会使用synchronized或者ReentrantLock来实现。今天给大家介绍一种比较巧妙的实现方式:使用Callable和CurrentHashMap来实现。import java.util.concurrent.Callable;import java.util.concurr...原创 2015-09-08 15:25:38 · 1080 阅读 · 2 评论 -
Java也可以爬虫了
目前市面上流行的爬虫以python居多,简单了解之后,觉得简单的一些页面的爬虫,主要就是去解析目标页面(html)。那么就在想,java有没有用户方便解析html页面呢?找到了一个jsoup包,一个非常方便解析html的工具呢。使用方式也非常简单,引入jar包:<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</art原创 2017-03-14 10:09:01 · 9173 阅读 · 0 评论 -
使用apache HttpClient发送Http请求
在平时的工作中,经常会使用Http去访问其他系统,此时一个Http的工具类就显得非常重要了。给大家分享一个简单的HttpClient的工具类,以备不时之需。主要包括POST请求、GET请求和如何发送XML数据。依赖的jar包如下: org.apache.httpcomponents httpclient 4.3.6原创 2015-09-08 15:02:37 · 3062 阅读 · 0 评论 -
JSON转换工具:fastjson与jackson以及fastjson的enable_type
JSON在开发过程中的作用越来越重要,特别是异构平台之间,使用JSON来通信是非常简单的。一般情况下,在使用json进行转换的时候,一般会采用JSONObject或者是google的Gson。今天给大家介绍两个非常好用,功能非常强大的工具:fastjson和jackson。两个的依赖如下: com.alibaba fastjson 1.1.37 org.codeha原创 2015-09-08 15:13:13 · 1980 阅读 · 0 评论 -
request的getParameter getParameterMap getInputStream等的一些解惑
getParameter和getParameterMap这两个方法都是用来获取request中的参数的,包括了URL中的参数和body体中的参数。getParameter的返回值是:Map (String,String),当参数中存在重复的key时,用这个方法只能获取到其中一个的值。 getParameterMap的返回值是:Map(String, String[]),当参数中存在重复的key时原创 2017-04-25 15:19:33 · 3449 阅读 · 0 评论 -
Java使用限流处理大量的并发请求
在web应用中,同一时间有大量的客户端请求同时发送到服务器,例如抢购、秒杀等。这个时候如何避免将大量的请求同时发送到业务系统。第一种方法:在容器中配置最大请求数,如果大于改请求数,则客户端阻塞。该方法有效的阻止了大量的请求同时访问业务系统,但对用于不友好。第二种方法:使用过滤器,保证一定数量的请求能够正常访问系统,多余的请求先跳转到排队页面,由排队页面定时发起请求。过滤器实现如下:pu原创 2015-08-24 15:23:47 · 16128 阅读 · 3 评论 -
MyBatis Generator实战
MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码。 他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。 这样和数据库表进行交互时不需要创建对象和配置文件。 MBG的解决了对数据库操作有最大影响的一些简单的CRUD(插入,查询,原创 2017-06-08 14:22:42 · 684 阅读 · 0 评论 -
电商中用户余额/积分以及库存的设计
在电商中,我们总会遇到用户余额/积分和库存的问题,总是怕会出现用户余额/积分用超或商品超卖的情况。这次就来了解一下怎么设计用户余额/积分,怎么来处理库存问题。一、用户余额/积分设计1、概述对于用户余额/积分,一方面我们需要知道用户的总积分有多少(这部分是可用积分),另一方面我还还需要知道用户的积分变动记录(积分的增加和减少)。同时,在电商中,关于积分的操作不仅仅都是同步的,也就是我们可以直接增加或扣原创 2017-09-15 11:15:19 · 11007 阅读 · 7 评论 -
后台通用参数校验(JS303规范)
在java工程中,涉及到前后台数据传递时,参数校验是必不可少的。一般情况下,我们会在前台和后台都对数据进行双重校验,以保证数据的准确性。如果参数较少,且规则简单的情况下,我们是还用简单的if判断即可满足条件。但是如果参数特别多的情况下,再使用if判断,代码就会复杂很多。正好之前项目中使用了一种通用的参数校验方式,记录一下,进行分享。这种通用参数校验方式采用的是JSR303规范,Hibernate ...原创 2016-08-24 14:47:37 · 7147 阅读 · 0 评论 -
Redis客户端Redisson的简单应用
Redisson是在基于NIO的Netty框架之上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。简单来说,我们通过Redisson能够更方便的操作redis。具体介绍可以参考https://github.com/redisson/redisson。1、引入依赖 3.7.0 支持JDK1.8, 1...原创 2018-05-28 11:17:44 · 8711 阅读 · 0 评论 -
Maven项目打包为可执行Jar包
maven pom.xml配置文件如下:<build> <finalName>jar-test</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</gro...原创 2018-06-12 15:52:30 · 305 阅读 · 0 评论 -
HttpURLConnection发送接收Http请求
HttpURLConnection是JDK提供的用于发送接收Http请求的类。不需要要引入第三方jar包即可使用,支持http和https的发送方式。发送https需要的前置信息初始化private static SSLContext ctx = null; private static HostnameVerifier verifier = null;原创 2017-03-14 10:02:49 · 2875 阅读 · 0 评论 -
Java NIO UDP发送接收数据
Java的NIO包中,有一个专门用于发送UDP数据包的类:DatagramChannel,UDP是一种无连接的网络协议,不对传送数据包进行可靠性保证,适合于一次传输少量数据。一般用于发送一些准确度要求不太高的数据等。完整的服务端程序如下:public class StatisticsServer { //每次发送接收的数据包大小 private final int MAX_BUFF原创 2017-03-13 10:59:14 · 1331 阅读 · 0 评论 -
远程方法动态调用之参数的处理
最近处理了一个通过类名、方法名、参数值远程调用的功能。在处理的过程中,使用反射的方式进行动态调用,其中的难点是对泛型的处理,特别是多层泛型的情况。现将开发过程中的思路以及遇到的问题进行总结。方法声明:public synchronized String invoke(String beanName, String methodName, List> params) beanN原创 2015-09-08 15:15:36 · 1016 阅读 · 0 评论 -
如何上传jar包至Maven私服
如何上传jar包至Maven私服1、通过浏览器进入,点击右上角的。 2、在弹出的登录窗口中输入用户名和密码。 3、登录成功之后,点击左侧列表中的Views/Respsitories-->Respsitories。 4、在打开的标签页中,选择3rd party,我们自己的jar包都要上传到3rdparty中。在下方的窗片中,可以浏览到所有的第三方的jar包。原创 2015-04-15 11:20:36 · 20986 阅读 · 4 评论 -
java.lang.IllegalStateException:…
它是关于跳转转发问题 是由于有页面显示后仍然含有请求转向产生的。 即:在请求进入action中后没有返回再次请求跳转。 解决办法: 1.在request.getRequestDispatcher("how_much.jsp").forward(request, response);后 加return; 2.有时第一种方法会出现不执行return情况,我是用的方法是 Ac原创 2014-08-24 12:49:24 · 547 阅读 · 0 评论 -
使用JavaMail发送邮件的小例子
Java邮件发送的简单实现步骤如下:1、构建一个集成自javax.mail.Authentication的具体类,用作登录验证,以确保对该邮箱有发送邮件的权利。2、构建一个Properties文件,存放SMTP服务器地址等参数。3、通过Properties和Authenticator构建一个javax.mail.Session对象,相当于登录邮箱。4、构建邮件内容,使用javax.原创 2015-04-15 17:02:25 · 810 阅读 · 0 评论 -
Quartz定时任务
Quartz定时任务的核心是org.quartz.Scheduler,我们对定时任务的一系列的操作都需要它来执行。在与spring的集成中,我们使用如下配置来创建这个bean。 quartz.properties配置文件内容如下:# 调度器的名字org.quartz.scheduler.instanceName = WowojobScheduler# 不使用R原创 2015-09-28 10:55:54 · 1268 阅读 · 0 评论 -
JDK原生类操作XML
使用JDK自带的类操作XML,包括从对象创建XML,并将XML转换为对象。import java.io.ByteArrayInputStream;import java.io.StringWriter;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;imp原创 2015-09-17 11:01:38 · 924 阅读 · 0 评论 -
使用curator操作zookeeper
使用Java操作zookeeper时,一般有两种方式:使用zkclient或者curator,相比较来说,curator的使用较为简便。今天就来看看如何使用curator来操作zookeeper。 需要的依赖如下: org.apache.curator curator-framework 2.8.0原创 2015-09-17 10:57:21 · 11067 阅读 · 1 评论 -
SpringMVC使用RESTful风格后对静态资源的处理
SpringMVC使用REST风格,需要在web.xml中配置DispatcherServlet的映射路径如下: springmvc org.springframework.web.servlet.DispatcherServlet 1 springmvc / 此时,对于项目中引入的css,js等静态资源也会进行拦截,而没有相应的Servlet进行处理,故原创 2016-04-19 11:04:35 · 6796 阅读 · 0 评论 -
不恰当的update语句使用主键和索引导致mysql死锁
背景知识:MySQL有三种锁的级别:页级、表级、行级。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。MySQL这3种锁的特性可大致归纳如原创 2016-09-27 13:49:42 · 23740 阅读 · 4 评论 -
压力测试工具--JMeter使用指南
最近由于项目需要,使用JMeter对项目进行了压力测试。现在对JMeter的一些使用方式进行总结。Apache JMeter是Apache组织基于Java开发的压力测试工具。用于对软件做压力测试。JMeter启动方式JMeter基本要素JMeter基本要素主要有3个:线程组、HTTP请求和结果监控。 线程组:用于控制请求发送次数、频率等,模拟一定程度的压力HTTP请求:本次压测的协议、请求信息原创 2016-12-15 10:43:11 · 2834 阅读 · 0 评论 -
Redis Lua脚本
Lua脚本,是一种轻量级的脚本语言。设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua脚本的应用也很多,比如Nginx+Lua实现的OpenResty,Redis+Lua配合使用(Redisson中大量使用了Lua脚本),使用Lua脚本开发的各种插件(我们公司灰度环境的规则匹配)等等。而我们这次在设计用户领取限制时,使用了Redis+Lua来实现。 Lua...原创 2018-07-03 13:58:28 · 1683 阅读 · 0 评论