自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 数据库索引的实现原理以及优缺点

数据库索引,在数据库管理系统中是一个排序形式的数据结构,以协助快速查询和更新数据库表中数据。索引的实现通常使用B树及其变种B+树。那么为什么要用B+树来实现索引而不使用二叉搜索树或者平衡树或者红黑树呢?要知道原因首先需要了解B树的性质:一个 m 阶的B树满足以下条件:每个结点至多拥有m棵子树; 根结点如果是非空节点则至少拥有两颗子树; 除了根结点以外,其余每个分支结点至少拥有 m/...

2018-09-05 20:27:37 2183

原创 Redis持久化的方式与实现原理

    Redis是一款非关系型数据库,Redis之所以性能很好是因为它将所有的数据都保存在内存中,然而当Redis重启之后所有在内存中的数据都会丢失。在某些情况下我们会希望重启之后数据能够不丢失例如:    1.将Redis作为数据库使用的时候   2.将Redis作为缓存服务器使用,但是缓存击穿后会对性能造成很大的影响,所有缓存失效会造成缓存雪崩,使得服务器无法响应这时候我们需要Redis能够...

2018-05-12 10:01:30 385 1

原创 通过代码拼接实现动态代理

在Java领域,动态代理应用非常广泛,特别是流行的Spring/MyBatis等框架。JDK本身是有实现动态代理技术的,不过要求被代理的类必须实现接口,不过cglib对这一不足进行了有效补充。上一篇博客介绍了动态代理技术的原理,本篇博客将自己动手写代码去实现动态代理。    本文中动态代理的实现方式与JDK中的动态代理实现方式几乎相同,唯一的不同点就是JDK动态代理使用的是字节码拼接来生成.cla...

2018-05-11 15:40:00 275

原创 使用Spring Aop实现权限拦截功能

    最近在做的一个系统需要实现权限拦截功能,主要是防止一些恶意的用户直接输入URL来对我们的系统造成破坏。下面来说以下具体的实现:首先看一下我们定义的Aspect类package com.hhoj.judger.aspect;import java.lang.reflect.Method;import javax.servlet.http.HttpServletRequest;imp...

2018-03-28 14:13:26 4276 1

原创 volatile关键字的作用

Java中的关键字volatile是Java中提供的最轻量级的同步机制,那么为何可以在不加锁的情况下就可以用volatile来实现同步呢?这要得益于volatitle关键字的两大特性:内存可见性、禁止重排序。一.内存可见性    了解volatile是如何实现内存可见性之前,我们需要知道Java中主内存与工作内存的工作机制:  Java内存模型中规定了所有的变量都存储在主内存中,每条线程还有自己的...

2018-03-25 10:21:30 809

原创 排序算法总结加Java实现

1.直接插入排序思想:每次将一个待排序的数据按照其关键字的大小插入到前面已经排序好的数据中的适当位置,直到全部数据排序完成。时间复杂度:O(n2) O(n) O(n2) (最坏 最好 平均)空间复杂度:O(1)稳定性: 稳定 每次都是在前面已排好序的序列中找到适当的位置,只有小的数字会往前插入,所以原来相同的两个数字在排序后相对位置不变。代码:/** * 直接插入排序 *

2018-02-06 16:15:10 434

原创 Java中存储金额用什么数据类型

Java面试高频问题:你会用什么数据类型来存储金额? 如果这个时候你回答float,double那么恭喜你,又可以省出时间来准备别的公司的面试了,当面试官说float,和double不行的时候你可能还一脸懵逼,为啥不行?那么请看下面的例子public class Test { public static void main(String[] args) { double a=0.

2018-01-28 17:57:21 12922

原创 深入剖析JDK动态代理实现原理

一.前言动态代理是目前使用的比较广泛技术,大家都比较熟悉的框架比如Spring中的AOP特性就用到了动态代理二、动态代理使用示例比如说有一个业务需要我们在添加或者删除用户的时候,将信息添加到日志当中,但是把日志的代码插入原有的业务代码中是很不雅观的,为了不破坏原有的实现类,这时候我们就可以用到动态代理。接口类public interface UserService {

2018-01-21 17:35:20 1997 1

原创 虚拟机的类加载机制

虚拟机的类加载机制参考自深入理解Java虚拟机概述:把描述类的数据从Class文件加载到内存中,然后对数据进行校验,解析,初始化最终形成能够被虚拟机使用的类,这就是虚拟机的类加载机制一:类加载的时机类的生命周期:类从被加载到虚拟机中到被卸载出内存为止一共要经历7个阶段:加载,验证,准备,解析,初始化,使用,卸载。其中加载,验证,准备这3个阶段是按部就班的开始,但是解析阶段不一定,它也可能在初始化

2017-12-30 17:09:01 410

原创 通过Condition实现自己的阻塞队列

博主原文地址:点击打开链接阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来  阻塞队列常用在多线程环境中,在生产者与消费者模式

2017-12-13 20:29:44 490

原创 剑指Offer-根据二叉树的前序和后序遍历重建二叉树

原文地址:点击打开链接输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 * 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 * 例如输入前序遍历序列{1,2,4,7,3,5,6,8} * 和中序遍历序列{4,7,2,1,5,3,8,6}, * 则重建二叉树并返回/*思路:在二叉树的前序遍历中,第一个数值总是根节点的值,而在中序遍历中,根节点的值在序列的中间

2017-12-13 11:35:37 668 1

原创 让html标签以正常文本显示(评论模块中防止用户提交恶意的html或javascipt代码)

大部分的网站都提供有评论模块以供用户发表自己的观点,但是如何防止用户输入有恶意攻击js脚本呢?比如alert('恶意弹窗')。  第一种方法很简单,使用标签,xmp的标签,会把包含在内部的html语句当作普通的字符串输出,浏览器不会对其中的html标签解释。第二种方法,将用户提交的内容进行处理,如果提交内容中含有标签替换为 >即可。

2017-09-19 16:28:39 2048 1

原创 通过一个实例让你快速学习java反射

什么是反射?反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为构建灵活的应用的主要工具。但需注意的是:如果使用不当,反射的成本很高。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息。    也许你看完

2017-09-16 13:37:32 343

原创 Spring4.0后自定义属性编辑器配置的变化

最近学习到了spring的属性编辑器 PropertyEditor,由于想加深一下记忆,所以根据本人学习spring参考的书籍上的示例写了一个自定义属性编辑器,然而不美好的事情发生了,编写完运行后我得到的是一堆异常。源码如下:DatePropertyEditor类package com.zhu.propertyeditor;import java.beans.PropertyEdito

2017-09-12 15:25:13 326

原创 ApplicationContextAware接口方式去获取上下文报NUllPointerException

今天在做一个小项目的时候需要使用ApplicationContextAware接口方式去获取上下文applicationContext,用来获取beans,结果报出空指针异常,原因就是上下文applicationContext为空,我本以为是实现ApplicationContextAware的setApplicationContext方法未被调用导致上下文为空。但是调试发现该方法被调用了,但是为什

2017-08-22 12:24:17 4450 2

原创 上传控件选择完图片后将其立即显示在页面上(jquery ajax)

最近做了一个个人博客系统,在添加修改“博主信息”功能中有一项选择头像,用过<input type="file" />控件的都知道,选择完图片之后显示的只是文件的名字,而我想将图片显示在页面上,初步的想法是选择完图片后提交到后台,然后返回图片的地址,在刷新页面,图片就可以成功的显示在页面上了,但是这种做法让用户的体验很差,我只是单单的选择了一个头像页面就要刷新吗?显然这样是行不通的,所以我决定用ajax异步提交图片到后台,这样就无需再刷新页面了。这里我使用了jquery提供的ajax异步提交。首先要引入jqu

2017-08-20 12:11:04 8257 2

原创 SpringMvc学习笔记(一)配置

SpringMvcSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等

2017-07-24 10:36:03 199

原创 javac编译Servlet类出现找不到javax.servlet包的情况

解决办法:从tomcat lib目录下拷贝一个servlet-api.jar的包到“JDK\jre\lib\ext”目录下凡是出现找不到包的情况,都可以将找到的包放到JDK\jre\lib\ext下,然后再编译就能够通过(平常用eclipse习惯了,有些环境搭建的操作都被这些IDE做好了,当真正需要手动的时候我却不知道如何下手,看来以后不管学什么技术首先要学会自己手动搭建环境之类的,等

2017-07-20 20:57:45 600

转载 JSON 中JsonConfig的使用

我们通常对一个Json串和Java对象进行互转时,经常会有选择性的过滤掉一些属性值,而json-lib包中的JsonConfig为我们提供了这种功能,具体实现方法有以下几种。(1)建立JsonConfig实例,并配置属性排除列表,(2)用属性过滤器,(3)写一个自定义的JsonBeanProcessor.1. 实现JSONString接口的方法public class Person

2017-07-20 10:18:06 1416

原创 Hibernate向mysql数据库插入中文字段乱码问题

1.要求修改Hibernate的配置文件hibernate.cfg.xml,将原来的jdbc:mysql://localhost:3306/database改为 jdbc:mysql://localhost:3306/database?useUnicode=true&amp;characterEncoding=utf-82修改mysql根目录下的my.ini文件,将defaul

2017-07-03 12:08:03 237

转载 为什么匿名内部类参数必须为final类型

1)  从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自然的2)  为什么JAVA中要加上一条限制:只能访问final型的局部变量?3)  JAVA语言的编译程序的设计者当然全实现:局部内部类能访问方法中的所有的局部变量(因为:从理论上这是

2017-06-20 20:10:15 163

原创 java仿QQ写的聊天软件

由于该软件代码较多,就不在贴出来,下面是源码的下载链接渣渣聊天室服务器启动类  ChatServer   客户端启动类LoginFrame下面是该软件的截图

2017-06-14 19:43:49 2462 4

原创 Java实现登录界面的验证码

首先我们创建一个GetRandImage类用来获取随机验证码和图片package com.zhu.util;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.aw

2017-06-09 17:41:45 1040 1

原创 Java统计文件中每个字符出现的个数

package com.zhu.io;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.util.Map;import java.util.Set;import java.util.TreeMap;p

2017-06-02 16:28:34 4439

原创 Java遍历磁盘文件的时候出现空指针异常(NullPointException)

前天用java写了个小程序,用来遍历磁盘的文件,结果跳出来个NullPointException,一开始我以为是我程序的问题,找了半天没找出来错在了哪,当我把遍历的对象改成我的u盘时,程序运行正常,没有报出错误,感觉有点懵逼。。   以下是我程序中的部分代码:   public static class TreeInfo implements Iterable{    private

2017-06-02 14:32:53 3960

原创 如何从一个多重循环中直接跳出

我们平时写程序的时候有时需要直接从多重循环中跳出来,而break只能跳出一个循环,所以我们可能会写出这样的程序。public class Test { public static void main(String[] args) { int count=0; boolean mark=false; for(int i=0;i<10;i++) { if(mark==tru

2017-05-31 10:01:32 5653 1

原创 使用LinkedList作为基层实现,定义自己的Set

import java.util.Iterator;import java.util.LinkedList;import java.util.Random;public class MySortSet&amp;lt;E extends Comparable&amp;gt; implements Iterable&amp;lt;E&amp;gt;{ private LinkedList&amp;lt;E&amp;gt; list=new...

2017-05-30 15:59:11 765

原创 2017第八届蓝桥杯决赛(大学B组)试题

试题的答案是我个人的答案,还不能保证正确性,只能给大家参考一下。       比赛的过程中出现了一些小插曲,好像是C组的选手做过的试题还留在了桌面上,结果我误把它当成了我的比赛试题。。点开一看,第6题怎么这么简单!!当时满心喜悦的敲完了这一题,到最后突然发现提交试题的时候题目与网页上的题目对不上,这时我才发现 自己做错题了,当时心里一惊,以为自己6道题全都做错了,结果一看还好只有最后一

2017-05-29 10:38:48 12483 2

原创 2017第八届蓝桥杯决赛_观光旅游

标题:观光铁路跳蚤国正在大力发展旅游业,每个城市都被打造成了旅游景点。许多跳蚤想去其他城市旅游,但是由于跳得比较慢,它们的愿望难以实现。这时,小C听说有一种叫做火车的交通工具,在铁路上跑得很快,便抓住了商机,创立了一家铁路公司,向跳蚤国王请示在每两个城市之间都修建铁路。然而,由于小C不会扳道岔,火车到一个城市以后只能保证不原路返回,而会随机等概率地驶向与这个城市有铁路连接的另外一个城市

2017-05-29 00:07:57 5575 12

原创 2017第八届蓝桥杯决赛_对局匹配

标题:对局匹配小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, ... AN。小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一

2017-05-29 00:03:54 3833 4

原创 2017第八届蓝桥杯决赛_发现环

标题:发现环小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑

2017-05-28 23:59:35 4633

原创 2017第八届蓝桥杯决赛_希尔伯特曲线

标题:希尔伯特曲线希尔伯特曲线是以下一系列分形曲线 Hn 的极限。我们可以把 Hn 看作一条覆盖 2^n × 2^n 方格矩阵的曲线,曲线上一共有 2^n × 2^n 个顶点(包括左下角起点和右下角终点),恰好覆盖每个方格一次。[p1.png]Hn(n > 1)可以通过如下方法构造:1. 将 Hn-1 顺时针旋转90度放在左下角2. 将 Hn-1 逆时针旋转90度放在右下角

2017-05-28 23:54:57 3761

原创 2017第八届安桥杯决赛_磁砖样式

标题:磁砖样式小明家的一面装饰墙原来是 3*10 的小方格。现在手头有一批刚好能盖住2个小方格的长方形瓷砖。瓷砖只有两种颜色:黄色和橙色。小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。(瓷砖不能切割,不能重叠,也不能只铺一部分。另外,只考虑组合图案,请忽略瓷砖的拼缝)显然,对于 2*3 个小格子

2017-05-28 23:49:53 4424 15

原创 2017第八节蓝桥杯决赛_36进制

标题:36进制对于16进制,我们使用字母A-F来表示10及以上的数字。如法炮制,一直用到字母Z,就可以表示36进制。36进制中,A表示10,Z表示35,AA表示370你能算出 MANY 表示的数字用10进制表示是多少吗?请提交一个整数,不要填写任何多余的内容(比如,说明文字)答案:1040254#include int main(){ int a='Y'-'A'+

2017-05-28 23:47:08 3815

原创 2015第六届蓝桥杯决赛_密文搜索

密文搜索福尔摩斯从X星收到一份资料,全部是小写字母组成。他的助手提供了另一份资料:许多长度为8的密码列表。福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。请你编写一个程序,从第一份资料中搜索可能隐藏密码的位置。要考虑密码的所有排列可能性。数据格式:输入第一行:一个字符串s,全部由小写字母组成,长度小于1024*1024紧接着一行是一个整数n,表示以下有n行密码,

2017-05-24 16:03:36 489

原创 2015第六届蓝桥杯决赛_关联账户

关联账户为增大反腐力度,某地警方专门支队,对若干银行账户展开调查。如果两个账户间发生过转账,则认为有关联。如果a,b间有关联, b,c间有关联,则认为a,c间也有关联。对于调查范围内的n个账户(编号0到n-1),警方已知道m条因转账引起的直接关联。现在希望知道任意给定的两个账户,求出它们间是否有关联。有关联的输出1,没有关联输出0小明给出了如下的解决方案:简单的并查集问

2017-05-24 15:16:07 267

原创 2015第六届蓝桥杯决赛_积分之谜

积分之迷小明开了个网上商店,卖风铃。共有3个品牌:A,B,C。为了促销,每件商品都会返固定的积分。小明开业第一天收到了三笔订单:第一笔:3个A + 7个B + 1个C,共返积分:315第二笔:4个A + 10个B + 1个C,共返积分:420第三笔:A + B + C,共返积分....你能算出第三笔订单需要返积分多少吗?答案:105暴力求解#incl

2017-05-24 10:56:34 516

转载 Java操作系统剪切板Clipboard及自定义剪切板

转自:系统剪切板:系统剪切板一般支持String文本类型和Image图像类型:String文本类型插入:Java代码  Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();//获取系统剪切板      String str = "哈哈";//设置字符串      S

2017-05-24 08:44:09 1424

原创 Foreach与迭代器

Iterable接口包含一个能够产生Iterator的iterator()方法,并且Iterable接口被foreach用来在序列中移动,意思就是想要将一个类用在foreach语句中它就要实现Iterable.package com.zhu.foreach;import java.util.Iterator;public class ForEachCollections impleme

2017-05-20 17:38:45 949

原创 Collection与Iterator

import java.util.AbstractCollection;import java.util.Collection;import java.util.Iterator;interface Pet{ }class Cat implements Pet{ public String toString(){ return "我是小猫"; }}class Dog imp

2017-05-20 17:26:15 31

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