- 博客(214)
- 资源 (2)
- 收藏
- 关注
原创 Spring AOP 完成日志记录
1、技术目标掌握Spring AOP基本用法使用Spring AOP完成日志记录功能提示:本文所用项目为"影片管理",参看http://hotstrong.iteye.com/blog/1160153本文基于"影片管理"项目进行了日志记录功能扩充 注意:本文所实现的项目(MyEclipse工程)已提供下载,数据库脚本可参看《MyBatis 1
2017-08-31 10:20:56 728
原创 高并发编程必备基础
一、前言借用Java并发编程实践中的话"编写正确的程序并不容易,而编写正常的并发程序就更难了",相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的,本文算是对多线程情况下同步策略的一个一个简单介绍。二、什么是线程安全问题线程安全问题是指当多个线程同时读写一个状态变量,并且没有任何同步措施时候,导致
2017-08-28 00:01:43 452
原创 两个栈实现一个队列和两个队列实现一个栈
两个栈实现一个队列import java.util.Stack;public class Demo07 { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push(int node) { stack1.push(node); } pu
2017-08-23 15:11:02 497
原创 leetcode -- happy number 快乐数
Write an algorithm to determine if a number is "happy".A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares
2017-08-13 17:59:42 393
原创 SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库
/*** 业务需求说明:* 1 批量导入成员 并且 自主创建账号* 2 校验数据格式 且 重复导入提示 已被占用* 3 导入手机相同 则更新源有信息* 4 返回错误信息*/jsp文件 部分 浏览 以及功能键 代码: 1 div class="modal-body" style="position: relative;"> 2 form
2017-08-09 10:30:54 1404
原创 数据库大并发操作要考虑死锁和锁的性能问题
1 前言数据库大并发操作要考虑死锁和锁的性能问题。看到网上大多语焉不详(尤其更新锁),所以这里做个简明解释,为下面描述方便,这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server(2005)为例。2 锁的种类共享锁(Shared lock)。例1:
2017-08-03 14:36:20 675
原创 Windows下Java开发环境搭建(IDEA+JDK+Maven+Tomcat)
作为一个java开发新人,快速合理的搭建java开发环境是必须掌握的技能。当下Mac盛行,作为学生党只能继续使用Windows,如果你足够热爱技术,操作系统其实也是一种工具。言归正传,下面将详细描述Windows下java开发环境的搭建,java集成开发工具IntelliJ Idea安装和配置,与java生死与共的Maven和Tomcat在Idea中的配置使用。 Idea的安装:
2017-07-22 19:13:52 1983 1
原创 serialVersionUID
serialVersionUID 有什么作用?该如何使用?##问题当一个对象实现 Serializable 接口时,多数 ide 会提示声明一个静态常量 serialVersionUID(版本标识),那 serialVersionUID 到底有什么作用呢?应该如何使用 serialVersionUID ?##回答 serialVersionUID 是实现 Serializa
2017-07-07 09:41:51 678
原创 leetcode-- Maximmum Product of Three Numbers
628. Maximmum Product of Three NumbersQuestionEditorial SolutionQuestionGiven an integer array, find three numbers whose product is maximum and output the maximum product.E
2017-07-05 21:32:44 384
原创 ConcurrentHashMap详解以及get方法保持同步的解释
ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,ConcurrentHashMap对提高并发方面的优化,还有一些其它的技巧在里面(比如你是否知道在get
2017-05-12 21:45:32 724
原创 java stack的详细实现分析
简介 我们最常用的数据结构之一大概就是stack了。在实际的程序执行,方法调用的过程中都离不开stack。那么,在一个成熟的类库里面,它的实现是怎么样的呢?也许平时我们实践的时候也会尝试着去写一个stack的实现玩玩。这里,我们就仔细的分析一下jdk里的详细实现。Stack 如果我们去查jdk的文档,我们会发现stack是在Java.util这个包里。它对应
2017-05-09 19:02:17 375
原创 【LeetCode】Course Schedule--拓扑排序
【题目】There are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is exp
2017-05-09 11:12:03 410
原创 解决Hash冲突的几种方法
哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=f(k),从而达到按关键字直接存取元素的目的。 当关键字集合很大时,关
2017-05-08 17:25:40 3651
原创 MergeSort与QuickSort
快排public class QuickSortTest { private int array[]; private int length; public void sort(int[] inputArr) { if (inputArr == null || inputArr.length == 0) {
2017-05-08 10:34:42 325
原创 Median of Two Sorted Array leetcode java
There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)). 题解:首先我们先明确什么是med
2017-05-05 10:14:00 368
原创 [Leetcode] Lowest Common Ancestor of a Binary Tree 最小公共祖先
推荐 1 推荐收藏 2 收藏,7.4k 浏览Lowest Common Ancestor of a Binary Search TreeGiven a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.Ac
2017-05-04 18:56:58 333
转载 剑指Offer面试题43(Java版):n个骰子的点数
剑指Offer面试题43(Java版):n个骰子的点数题目:把n个骰子仍在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。n个骰子朝上的数之和为s,求s的所有可能以及概率 分析问题 如果是用笨方法,一般人最开始都会想到笨方法,那就是枚举法 举个例子,比
2017-05-03 11:36:50 1211
原创 Java内存分配
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:254078193 我们一起学Java!栈、堆、常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,详细讲解Java内存分配方面的知识。Java内存分配与管理是Java的核心技术之一,今天我们再次深入Ja
2017-04-26 19:50:10 120
转载 Java 创建二叉树并遍历
[java] view plain copypublic class BinaryTree { private Node root; /** * * 内部节点类 * @author yhh */ private class Node{
2017-04-26 10:41:46 331
转载 二叉查找树插入删除
二叉查找树是如下定义的:(1) 左子树不空,则左子树上的所有结点的值均小于根结点的值(2) 右子树不空,则右子树上的所有结点的值均大于根结点的值二叉查找树可以为空,二叉查找树是递归定义的,也就是说其左右子树也为二叉查找树。二叉查找树是一种动态查找表,可以进行动态地插入和删除。前面的定义中我们假定二叉查找树不含有相同元素。由定义可知二叉查找树的中序序列为一
2017-04-26 10:40:26 283
原创 二叉查找树--查找、删除、插入(Java实现)
文章,未经博主允许不得转载。目录(?) 下篇:平衡二叉树 http://blog.csdn.net/kiritor/article/details/8892648 二叉查找树 二叉查找树(Binary Search Tree),或者是一颗空树,或者是具有下
2017-04-26 10:39:23 537 1
原创 Java实现图的遍历(深搜与广搜)
本文以邻接矩阵作为存储结构,用Java实现图的遍历,话不多说,先给出的图的结构,如下: 1、深度优先搜索遍历 思想: 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所
2017-04-26 09:50:39 3779
转载 寻找最小生成树的欧拉路径,即一笔画问题
【程序背景】最近在做子图匹配的实验,对查询图需要进行预处理,得到最小生成树,然后进行后续的子图匹配工作,由于匹配过程是按照顺序依次遍历匹配的,当时程序就卡在寻找一条顺序相连的最小生成树的欧拉路径问题上了,查了很多关于欧拉路径的解决方案,觉得过于复杂,干脆最后自己写了一个小程序,解决了。【问题说明】输入list:(2,6)(1,3)(1,2)(4,5)(1,4)得到newlist:(
2017-04-26 09:19:10 1028
转载 基于SpringMVC框架使用ECharts3.0实现折线图,柱状图,饼状图,的绘制(上篇)
基于SpringMVC框架使用ECharts3.0实现折线图,柱状图,饼状图,的绘制页面部分@ page language="java" pageEncoding="UTF-8"%>DOCTYPE html>html>head>meta charset="utf-8">title>ECharts柱状图title>script type="text/javascrip
2017-04-25 17:16:50 2083
转载 事务管理实现原理
本文是《轻量级 Java Web 框架架构设计》的系列博文。这篇博文已经“难产”好几天了,压力还是有些大的,因为 Transaction(事务管理)的问题,争论一直就没有停止过。由于个人能力真的非常有限,花了好多功夫去学习,总算基本上解决了问题,所以这才第一时间就拿出来与网友们共享,也听听大家的想法。提示:对 Transaction 不太理解的朋友们,可阅读这篇博文《Transaction
2017-04-25 09:51:11 750
原创 Spring事务管理机制的实现原理-动态代理
之前在做项目中遇到spring无法进行事务代理问题,最后发现是因为没有写接口,原因当时明白了,看到这篇文章写的清楚些,转过来 我们先来分析一下Spring事务管理机制的实现原理。由于Spring内置AOP默认使用动态代理模式实现,我们就先来分析一下动态代理模式的实现方 法。动态代理模式的核心就在于代码中不出现与具体应用层相关联的接口或者类引用,如上所说,这个代理类适用于任何接口的实现。下面
2017-04-25 09:34:44 495
原创 浅析spring中的AOP(面向切面编程)
* 它用来生成代理对象 * 它需要所有的参数 * * 目标对象 * * 增强 * @author cxf *//** * 1. 创建代理工厂 * 2. 给工厂设置三样东西: * * 目标对象:setTargetObject(xxx); * * 前置增强:setBeforeAdvice(该接口的实现) * * 后置增强:setAfterAdvi
2017-04-24 21:25:31 381
原创 【LeetCode】Gas Station 解题报告
【题目】There are N gas stations along a circular route, where the amount of gas at station i is gas[i].You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from sta
2017-04-24 09:43:44 239
原创 泛洪填充算法(Flood Fill Algorithm)
泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是windows paint的油漆桶功能。算法的原理很简单,就是从一个点开始附近像素点,填充成新的颜色,直到封闭区域内的所有像素点都被填充新颜色为止。泛红填充实现最常见有四邻域像素填充法,八邻域像素填充法,基于扫描线的像素填充方法。根据实现又可以分为递归与非递归(基于栈)。
2017-04-23 20:41:42 2826
转载 JSONP跨域获取JSON数据(含jQuery方法)
首先我要强调JSONP和AJAX没有半毛钱关系,别把他们混淆!!!只不过他们都是从后台获取数据的方法!前言:说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。但到目前为止最被推崇或者说首选的方案还
2017-04-23 16:52:47 808
转载 用JSONP实现跨域请求
Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。Ajax 也是许多 mashup
2017-04-23 16:30:20 442
原创 ajax处理跨域有几种方式?实现原理是什么?
一、什么是跨域我们先回顾一下域名地址的组成:http:// www . google : 8080 / script/jquery.js http:// (协议号) www (子域名) google (主域名) 8080 (端口号)script/jquery.js (请求的地址)
2017-04-23 15:43:56 1134 1
转载 ThreadLocal与synchronized
ThreadLocal与synchronized Java良好的支持多线程。使用java,我们可以很轻松的编程一个多线程程序。但是使用多线程可能会引起并发访问的问题。synchronized和ThreadLocal都是用来解决多线程并发访问的问题。大家可能对synchronized较为熟悉,而对ThreadLocal就要陌生得多了。 并发问题。当一个对象被两个线程同时访问时,可能有一个线程
2017-04-21 11:19:36 95
转载 Java偏向锁实现原理(Biased Locking)
阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking)Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。轻量级锁也是一种多线程优化,它与偏向锁的区别在
2017-04-21 11:01:07 379
转载 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? ?
对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的对每一个class只有一个thread可以执行synchronized static method。每个class的instance只有一个thread可以执行synchronized method。任意数目的thread可以执行非synchronized method——不管是否是static
2017-04-21 11:00:27 847
转载 Java轻量级锁原理详解(Lightweight Locking)
大家知道,Java的多线程安全是基于Lock机制实现的,而Lock的性能往往不如人意。原因是,monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的。互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作。为了优化Java的Lock机制,从Java6开始引入了轻量级锁
2017-04-21 10:59:03 5512
转载 深入JVM锁机制
2013-07-25 18:49 1249人阅读 评论(0) 收藏 举报 分类:Java多线程(7) Java(45) 目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。数
2017-04-21 10:57:51 271
转载 java中的Synchronized 实现
1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。3 同步的基础Java中的每一个对象都可以作为锁。对于同步
2017-04-21 10:55:55 277
转载 JAVA CAS原理深度分析
java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CASCAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起,再深入原理解析。 CAS应用CAS有3个操作
2017-04-21 10:54:40 206
原创 Java中synchronized的实现原理与应用
Java中的每一个对象都可以作为锁,而在Synchronized实现同步的几种方式中分别为:普通同步方法:锁是当前实例对象静态同步方法:锁是当前类的Class对象同步方法块:锁是Synchronized括号里配置的对象任何一个对象都一个Monitor与之关联,当且一个Monitor被持有后,它将处于锁定状态。Synchronized在JVM里的实现都是基于进入和退出Mo
2017-04-20 23:11:27 376
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人