自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL查询时的字符串空格问题

因为官方文档上说是MySQL校对规则属于PADSPACE,对CHAR和VARCHAR值进行比较都忽略尾部空格,和服务器配置以及MySQL版本都没关系。也因此,如果遇到某些特殊的情况时,这是一个不容易的发现坑。会出现传入的查询值为“10 ”时,sql会将实际值为“10”的也查询出来。

2017-10-23 15:30:24 6744

原创 CountDownLatch实现原理

CountDownLatch用过很多次了,突然有点好奇,它是如何实现阻塞线程的,一开始还以为跟LockSupport有关。今天浏览了一下它的源码,发现其实现是十分简单的,只是简单的继承了AbstractQueuedSynchronizer,便实现了其功能。实现原理:让需要的暂时阻塞的线程,进入一个死循环里面,得到某个条件后再退出循环,以此实现阻塞当前线程的效果。

2017-10-12 17:31:17 13066 5

原创 JAVA多线程读取同一个文件,加速对文件内容的获取

前几天,朋友托我帮个忙,问我能不能用多线程的方式,读取一个文件,获取里面的内容。他大概想做的事情,就是读取文件里面每一行的内容,然后分析一下,再插入到数据库这样。但是,由于他那个记录内容的文件实在是太大了,虽然他弄成了单生产者-多消费者的模型,整体的处理速度还是非常的慢,因为读取速度不够快。所以,他就问我要怎么多线程读取同一个文件里面的内容,形成多生产者-多消费者的模型,从而提高速度。  因此

2017-09-29 19:00:40 36059 7

原创 JAVA对象流序列化时的readObject,writeObject,readResolve是怎么被调用的

有时候,我们会在很多涉及到通过JAVA对象流进行序列化和反序列化时,会看到下面的方法:private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOExceptionprivate void readObject(java.io.ObjectInputStream s)throws java.io.IOException, ClassNotFoundException以及我们在写我们的单例类时,如果使用的不是枚举的实现

2017-09-27 16:10:31 30191 4

原创 JAVA实现较完善的布隆过滤器

布隆过滤器是可以用于判断一个元素是不是在一个集合里,并且相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。但是它也是拥有一定的缺点:布隆过滤器是有一定的误识别率以及删除困难的。简单来说,布隆过滤器的实现方法就是:利用内存中一个长度为M的位数组B并初始化里面的所有位都为0,如下面的表格所示:

2017-07-30 17:17:22 26964 7

原创 JAVA中synchronized和String引出的一系列内容

背景最近,在开发一个功能,由于会存在并发问题(发生几率不大),因此想上个锁避免一下,但是又因为处于性能考虑,不想锁整个方法或者都去锁住同一个对象,这样会使得所有请求进入这个方法后,都会变成串行进行排队,但是很多时候,不同的请求之间是没有资源竞争的,应该是可以并行的,对于有竞争的请求,才应该采取串行的方式。该方法只有一个String类型的入参,于是我一开始就打算用这个入参作为被锁的对象,因为一开

2017-07-27 11:54:50 4684 2

转载 Java接口RandomAccess(判断哪种迭代访问方式更快)

本文转载自:http://www.jb51.net/article/92127.htm在jdk文档中对RandomAccess接口的定义如下:  public interface RandomAccess下面是jdk的注解翻译List 实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问。此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机

2017-07-21 10:25:29 512

原创 纯JAVA实现Online Judge--6.完整源码

由于上班了,最近任务比较繁重,所以这里先直接放出源码了。web端源码沙箱端源码

2017-06-23 17:55:51 8241 40

原创 纯JAVA实现Online Judge--5.并行运行

前言    如果一道题目有5份(输入+输出为一份)测试数据,对于一份用户的代码,如果串行的运行(假设每一份运行平均要500毫秒),那么5份的话就需要2.5秒了。但是,如果我们采用并行的方式的话,则只需要500毫秒(实际上会多一点)就可以了。但是,因为每个线程运行的用户代码,都需要从标准输入流(System.in)中读取数据,而且读取的时机无法掌控,也读需要将运行的输出结果输出到标准输出流(Sy

2017-06-19 18:58:39 1943

原创 纯JAVA实现Online Judge--4.限时运行(杀死线程)

前言    在上一篇的博客中,我们通过设置SecurityManager已经实现了大部分的安全措施。这里我们将实现最后的安全措施,防止用户提交死循环的代码无止境的消耗服务器的CPU,以及防止用户恶意破坏沙箱运行代码的能力。同时,因为OJ业务要求的限制,每一道题目的答案代码运行都应该是限时的(比如限时1000毫秒内出结果),对于运行超过指定时间还未出结果的,我们就应该终止运行的线程,并判定这个测

2017-06-15 15:05:56 3860 1

原创 纯JAVA实现Online Judge--3.SecurityManager安全管理器

前言    上一篇的博文中,我们通过自己编译用户提交的代码,再通过自定制的类加载器将编译出来后的class信息加载进JVM中,最后再通过反射调用用户代码的main,实现了运行用户代码的目的。具体如何运行用户的代码的部分,将会在后面的博客(多线程跑题)中展开述说,里面将介绍我如何利用多线程的方式,同时对同一份用户代码跑多份测试用例,提升效率的同时,如何解决多线程中遇到的冲突问题。    现在

2017-06-14 14:23:52 1984

原创 纯JAVA实现Online Judge--2.代码编译与类加载

前言作为一个Online Judge系统,最重要的一件事情,就是对用户提交给系统的代码进行编译,然后再将其加载进JVM中,然后才能通过反射的方式,调用入口方法,以此达到运行用户代码的目的。首先需要的说明是,我下面的贴出的代码,由于篇幅等缘故,我只会贴出跟我讲的内容有关的代码,因此并不会贴出所有的代码,代码会因此有些不连贯,也无法直接复制进行使用。整个系统完整的代码,会在这个系列最后的博文中

2017-06-13 23:30:59 3986 1

原创 纯JAVA实现Online Judge--1.前言简介

前言不知不觉,就大四毕业了。由于各个方面的原因吧,我决定了毕业设计做一个Online Judge系统,如今已经答辩完了也准备要继续回去上班了,告别最后的学生生活。虽说我这个Online Judge系统做得不是很好,但是过程的中间也踩过不少的坑,而且发现网上用纯JAVA实现一个完整的Online Judge系统的文章比较少,都是比较零散并且不完整的,因此在这里本着抛砖引玉的想法,有了这么一个

2017-06-13 14:17:38 9041 10

原创 JAVA运行超时自动中断(强杀)的线程池

这里包装了一下JAVA原生的线程池,提供了一个支持超时后自动中断线程的功能,当然对于某些线程是无法进行中断的(比如阻塞的线程等等),因此这个类也提供了一个可以进行设置的标志位:stopTimeOutThread。默认为false表示对于超时的线程只进行中断,如果我们设置为true之后,对于超时线程除了进行中断之外,还会调用stop方法进行强行杀死。

2017-03-10 17:53:12 8561

原创 JAVA的Md5工具类(超多功能)

JAVA的Md5工具类(超实用)

2017-02-24 14:57:53 10713

原创 angularjs WdatePicker ng-model问题解决

假设我们在项目中需要用到WdatePicker以及angularjs,并有如下的代码: ddd <input class="form-control" type="text" ng-model="text.ddd" readonly="readonly" onClick="WdatePicker({dateFmt:'yyyy',lang:'zh-cn'})"

2017-02-16 10:49:19 2340

原创 sql 一对多查询分页

sql 1对多查询(关联查询)时进行分页,以mysql举例

2017-02-10 15:47:06 8351 2

原创 Java利用protostuff实现高效序列化

利用protostuff实现高效的JAVA对象序列化

2017-01-16 10:07:46 1329

转载 eclipse下设置tomcat,修改Java代码不必重启tomcat

eclipse下设置tomcat,修改Java代码不必重启tomcat

2017-01-11 09:39:32 415

原创 Java nio 聊天室

利用JAVA的Nio实现了基本的聊天室功能。

2017-01-06 18:14:52 382

原创 基于POI的两个JAVA操作Office工具类

目前能设置的东西很少,但是基本满足了简单的使用场景,采用Builder模式,通过设置的Builder对象设置好相关属性后,调用build方法,生成一个Creator后,直接调用相关的create方法即可。import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import jav

2016-12-22 15:39:35 2437

原创 JAVA并发编程学习笔记

JAVA并发编程学习笔记和开发须知。

2016-11-28 17:37:45 406

原创 JAVA多线程学习笔记

前阵子,重新复习并学习了有关多线程的知识,下面是我的一些学习笔记。每一点,只为尽量简明的表达出知识内容,不会全部具体展开讲,并附上相关代码。(其实,我现在也还做不到全部展开来讲啦,啊哈哈),日后这个笔记会不断补充更新。1.能中断的线程public class Test1 { public static void main(String[] args) throws Exce

2016-10-19 20:37:54 315

原创 利用JavaCompiler编译java文件(一个简单封装的工具类)

最近,在利用java做一个Online Judge系统,里面涉及到编译java文件为class文件,当时看过API文档,也百度过别人的一些博客,感觉都不太符合个人胃口。虽然,有说得详细的,也有很多权威的,也有很多使用例子的。但是主要是感觉学习成本过高了,他们都过多过少带入到实际应用中,并没有变成一个工具类,容易导致初学者的不耐烦。  我个人喜好的风格是,能快速应用到开发中,并能解决一般问题的,

2016-10-12 12:31:46 9998

原创 最小生成树(Prim)(普利姆最小生成树)

import java.io.File;import java.io.FileNotFoundException;import java.util.Arrays;import java.util.LinkedList;import java.util.Scanner;import com.sun.corba.se.impl.oa.poa.ActiveObjectMap.

2016-10-06 20:54:32 374

原创 图的割点

import java.util.Arrays;import java.util.LinkedList;import java.util.Scanner;public class Test { static Vertex[] v; // 用于记录每一个顶点的时间戳 static int[] timeMark; // 用于记录每一个顶点能达到的最小

2016-10-06 20:49:45 368

原创 求最大公约数的高效率算法

声明:下文中的算法与数学原理,都是从《编程之美》的2.7节中的解法三看到后,摘抄和修改而来的。数学原理公式:若x,y均为偶数,f(x,y) = 2 * f(x/2,y/2);若只x均为偶数,f(x,y) = f(x/2,y);若只y均为偶数,f(x,y) =  f(x,y/2);若x,y均为奇数,f(x,y) = f(y, x- y);(两个奇数相减,必得偶

2016-09-19 21:03:17 4373

原创 设计模式——6.单例模式(包含多线程环境下的一些写法)

1.前言单例(单件)模式,可以说是这么多设计模式中,最简单的一种模式,在整个系统生命之中,它是独一无二的,它只能有一个实力的对象。(忠贞不二的爱,永远只有一个对象,哈哈哈)2.

2016-09-16 20:22:46 299

原创 数据结构:堆的java实现

最近写java程序的时候,经常用到堆这种数据结构,但是java本身的JDK本没有提供这种数据结构的实现。(栈,队列都有,为什么就不实现一个堆呢……图这种数据结构没有,我是可以理解的,但是堆为什么也没有呢?我就不理解了。有哪位大神知道原因的话,告诉我一下吧0.0)由于上述原因,我就自己写了一个简单的堆实现。实现的功能有:堆排序,创建大根堆,创建小根堆,增删改查等基本功能。底层运用的数

2016-09-10 13:14:36 954

原创 jaxb解析xml在WebService中的使用,以及Date类型的解决方案

1.前言以前在学校学习的时候,没有接触过WebService。如今开始实习之后,由于项目需要,要对接别人程序提供出来的接口,要用到WebService。而在使用WebService的时候,我这里入参和出参都需要是xml。而为了封装信息和以后维护方便等理由,这里很自然而然的,就需要用到jaxb技术,将一个对象转换为xml以及将xml转换为一个对象。(其实说白了,就像是使用gson解析json数据

2016-08-14 22:54:31 5284 3

原创 JAVA中对于需要频繁new的对象的一个优化的方法

1.前言在实际开发中,某些情况下,我们可能需要频繁去创建一些对象(new),下面介绍一种,我从书上看到的,可以提高效率的方法。首先,对于将会频繁创建的对象,我们要让这个类实现Cloneable接口,因为这个优化的核心,就是利用clone。clone的最大特点就是,不会去调用任何构造方法,所以,在我看来重点应该放在构造方法中。废话少说,先上一个简单的测试代码吧:package

2016-08-11 15:53:10 33185 10

原创 基于centos6.5快速搭建jdk,tomcat,nginx,显示个人静态页面(基于yum)

前言:在如今这个时代,相信不少人都会在网上,做一个个人主页来展示自己,用于展示自我,求职或者为搭建个人网站做准备等等。相信很多人的云主机都是选择Linux系统吧。在这里,我推荐CentOS系统啊,一个开源免费的系统,而且拥有yum的存在,在安装程序时要方便很多呢。要知道,编译安装的这种形式,虽然程序性能会很高,但是安装的时长太长啦,而且还有可能会报错!rpm包算是解决了编译安装的速度问题,但是因为

2016-08-10 20:49:15 1295

原创 设计模式——4.装饰模式

1.依旧是我的风格,从后到前,先看答案:装饰者模式——装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。(复制于Head First设计模式)2.发现问题,解决问题:比如你开一间饮料店,贩卖牛奶,咖啡,橙汁等等(当然,现在的饮料这么多种,为什么我列举这三种呢~~因为我英语不好= =,会拼写的单词不多。所以类名的话,就只知道这几个了╮

2016-07-03 13:15:28 324

原创 Android网络相关(WiFi的开关,WiFi热点的开关,获取手机IP地址等)

下面是一个跟安卓网络相关的工具类,里面包含了一些很常用的功能,如WiFi的开关,WiFi热点的开关,获取手机IP地址等……import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.net.wifi.Wifi

2016-06-22 11:14:45 3378

原创 windows系统环境下,让tomcat自动重启的脚本

如果你使用的是Windows系统,并且想让tomcat挂掉之后自动重启的话,可以直接复制下面的代码,然后保存到一个文本文件中,然后将后缀名命名为.vbs,再然后双击运行即可。如:tomcat自动重启脚本.vbs这里稍微解释一下,几点值得注意的内容:       1.检查tomcat是否挂掉的访问路径,即下面代码中的:http://xxxxx(指定一个项目的访问路径,可以是网

2016-05-28 23:21:22 9899 7

原创 设计模式——1.前言

转眼间大三也快结束了,准备步入到大四了,自己也在广州找到了一份实习,算是开始离开鸟巢,出来接触社会了吧。不过,由于不是在广州读大学,所以在广州的实习算是困难颇多的,也真正感受到,要在广州这个城市生活下来,是多么的不容易。需要多少的能力与坚持。废话少说,我先在这里简单说一下,为什么要开始这一类的文章吧。随着学的东西慢慢的增多,自己做过的东西也在慢慢的增加,但是我越来越觉得我写的代码不够优雅,

2016-05-28 16:25:38 337

空空如也

空空如也

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

TA关注的人

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