- 博客(101)
- 资源 (23)
- 收藏
- 关注
转载 java链表面试题
转自:http://blog.csdn.net/u010442302/article/details/51864187本文包含链表的以下内容: 1、单链表的创建和遍历 2、求单链表中节点的个数 3、查找单链表中的倒数第k个结点(剑指offer,题15) 4、查找单链表中的中间结点 5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17) 6、单链表的反转...
2018-02-10 20:15:58 1791
转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
转自:http://blog.csdn.net/luanlouis/article/details/24589193class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Cla...
2018-02-10 13:35:19 341
转载 对List集合中的元素进行排序
Collections对List集合中的数据进行排序有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到Java中提供的对集合进行操作的工具类Collections,其中的sort方法先看一个简单的例子:[java] view plain copy public static void main(String[] args)
2018-02-05 18:13:03 539
转载 spring 动态代理原理
转自:http://rejoy.iteye.com/blog/1627405Java代码 package dynamic.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;
2018-02-04 14:41:21 1053
转载 jvm调优
转自 :http://uule.iteye.com/blog/2114697JVM垃圾回收与性能调优总结JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内
2018-02-03 17:20:59 288
转载 guava缓存
转自:http://blog.csdn.net/wangzhi291/article/details/50323989适用性 缓存在很多情况下都是非常有用的。比如,我们需要多次根据给定的输入获取值,而且该值计算或者获取的开销是非常昂贵的。 缓存和ConcurrentMap是非常相像的,但是它们也不完全一样。最根本的区别就是,ConcurrentMap会持有所有添加的
2018-02-03 17:09:20 1116
转载 图解排序算法(三)之堆排序
转自:https://www.cnblogs.com/chengxiao/p/6129630.html堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的
2018-02-03 16:39:40 250
转载 锁降级 以保证数据的可见性
转自:https://www.jianshu.com/p/0f4a1995f57d读写锁ReentrantReadWriteLock简介ReentrantReadWriteLock是ReadWriteLock接口的实现,ReentrantReadWriteLock中有两个静态内部类:ReadLock读锁和WriteLock写锁,这两个锁实现了Lock接口,ReentrantReadWri
2018-02-03 16:37:52 532
转载 redis 缓存失效与热点key解决方案
转自:https://www.jianshu.com/p/d5a3668d4dad缓存击穿: 查询一个数据库中不存在的数据,比如商品详情,查询一个不存在的ID,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成过大地压力。缓存击穿的解决方案: 当通过某一个key去查询数据的时候,如果对应在数据库中的数据都不存在,我们将此key对应的value设置为一个默认的值,比如“NULL”,
2018-02-03 15:53:43 7795
原创 Spring事务实现过程及原理
1、Spring中事务处理的作用: Spring事务处理,是将事务处理的工作统一起来,并为事务处理提供通用的支持。 2、工作原理及实现 a、划分处理单元——IOC 由于spring解决的问题是对单个数据库进行局部事务处理的,具体的实现首相用spring中的IOC划分了事务处理单元。并且将对事务的各种配置放到了ioc容器中(设置事务管理器,设置事务
2018-02-02 11:54:30 12033 1
原创 rabbitMQ学习
消息队列优点:解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。冗余 有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了
2018-02-02 11:08:00 374
原创 jvm理解
1、程序计数器 每个线程都有自己的计数器,用来指示程序将要运行到哪一行。2、虚拟机栈 虚拟机栈描述的是java方法执行的内存模型,为线程私有。 每个方法执行时都会创建一个栈帧,用于存储 局部变量,操作数栈,动态链接,方法出口等。 每个方法执行从开始到完成对应为栈帧从入栈道出栈的过程。3、本地方法栈 本地方法栈与虚拟机栈类型,不同的为 虚拟机栈执行的是 java方
2018-02-02 10:50:46 389
原创 二分查找算法
1.二分查找又称折半查找,它是一种效率较高的查找方法。2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三
2018-02-01 11:45:14 293
转载 Java实现 二叉搜索树算法(BST)
转自:http://blog.csdn.net/garfielder007/article/details/51946494http://ifeve.com/java%e5%ae%9e%e7%8e%b0-%e4%ba%8c%e5%8f%89%e6%90%9c%e7%b4%a2%e6%a0%91%e7%ae%97%e6%b3%95%ef%bc%88bst%ef%bc%89/一、树 & 二
2018-02-01 10:43:28 333
原创 treeMap 排序
按key排序package com.yeepay.g3.core.trade.bankinterface.service;import java.util.Comparator;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;public c
2018-01-31 19:25:48 457
转载 java排序算法 堆排序
转自:http://www.cnblogs.com/0201zcr/p/4764705.html堆排序就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1 个序列重新构造成一个堆,这样就会得到n 个元素中次大的值。如此
2018-01-31 15:50:32 284
转载 【排序算法】归并排序原理及Java实现
转自:http://blog.csdn.net/jianyuerensheng/article/details/512629841、基本思想:归并排序就是利用归并的思想实现的排序方法。而且充分利用了完全二叉树的深度是的特性,因此效率比较高。其基本原理如下:对于给定的一组记录,利用递归与分治技术将数据序列划分成为越来越小的半子表,在对半子表排序,最后再用递归方法将排好序的半子表合并成
2018-01-31 11:41:21 253
原创 redis学习
1、数据结构 redis实现自己的数据结构 SDS简单字符串,执行 set msg 'hello word' 会生成一个新的键值对,SDS定义:int len;//已用字符长长度int free;//剩余字符串长度char buf[];//字符数组 用于保存已有字符串2、RDBredis有两个命令 生成RDB文件,save 和 bgsave。RDB通过保存数据库中键
2018-01-29 11:56:35 225
原创 spring IOC AOP原理
ioc即为控制反转也叫依赖注入,通过 配置 文件 或注解的方式实现,将对象交给容器管理,而不是自己new.IOC:控制反转也叫依赖注入。利用了工厂模式 将对象交给容器管理,你只需要在spring配置文件时配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在 spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需
2018-01-26 16:27:55 596
转载 一致性哈希算法(consistent hashing)
转自:http://blog.csdn.net/cywosp/article/details/23397179一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。2、单调性(Monotoni
2018-01-26 15:53:09 274
转载 Tomcat最多支持并发多少用户?
Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。操作系统对于进程中的线程数有一定的限制:Windows 每个进程中的线程数不允许超过 2
2018-01-26 15:13:40 32746 2
转载 Spring框架IOC和AOP的实现原理
IoC(Inversion of Control) IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分
2018-01-26 14:49:36 683
转载 根据事例理解事务的4种隔离级别
转自:http://blog.csdn.net/qq_33290787/article/details/51924963数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。
2018-01-24 17:53:48 243
转载 事务的隔离级别 数据库的隔离级别 和 spring的隔离级别
转自:http://www.cnblogs.com/fjdingsd/p/5632949.html一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConne
2018-01-24 17:50:29 588
转载 事务的隔离级别
现在来看看MySQL数据库为我们提供的四种隔离级别: ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。 ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。 ③ Read committed (读已提交):可避免脏读的发生。 ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。 以
2018-01-24 17:37:08 276
原创 事务的传播特性 和隔离级别
转自:http://blog.csdn.net/loadhai/article/details/17800537事物传播行为介绍: @Transactional(propagation=Propagation.REQUIRED) 如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)@Transactional(propagation=Propagation.NOT_SU
2018-01-24 17:31:07 585
原创 tomcat 启动报错 修复
WARN beans.TypeConverterDelegate - PropertyEditor [com.sun.beans.editors.EnumEditor] found through deprecated global PropertyEditorManager fallback - consider using a more isolated form of registratio
2017-12-06 11:20:44 1295
转载 java多线程yield
理论上虚拟机和操作系统会让优先级高的的线程更多的获取执行的机会,这个不要与时间片混淆。yield的意思是放手,放弃,一个线程调用yield意味着它要告诉虚拟机自己乐意让其它线程占用自己的位置。这只是一个暗示,并不保证会产生效果(使当前线程转到可运行状态,runnable)。 看代码示例,[java] view plain copycl
2017-09-18 16:45:19 488
转载 java多线程join方法
1. join()介绍join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解:// 主线程public class Father extends Thread { public void run() { Son s = new Son();
2017-09-18 15:21:32 292
转载 java中的单例模式与doublecheck
转自: http://devbean.blog.51cto.com/448512/203501在GoF的23种设计模式中,单例模式是比较简单的一种。然而,有时候越是简单的东西越容易出现问题。下面就单例设计模式详细的探讨一下。 所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量,用处相当
2017-08-24 16:05:23 330
转载 深入分析volatile的实现原理
原文地址:http://www.cnblogs.com/chenssy/p/6379280.html我们都知道synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对vola
2017-08-24 16:04:27 482
转载 如何线程安全地遍历List:Vector、CopyOnWriteArrayList
原文链接:http://www.cnblogs.com/wucao/p/5350461.html遍历List的多种方式在讲如何线程安全地遍历List之前,先看看通常我们遍历一个List会采用哪些方式。方式一:for(int i = 0; i ) { System.out.println(list.get(i));}方式二:
2017-08-22 14:22:28 261
转载 ConcurrentHashMap内部结构和put remove方法分析
一下文章转自: http://www.cnblogs.com/dolphin0520/p/3932905.htmlConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。ConcurrentHashMap的内部结构 ConcurrentHashMap
2017-08-22 11:35:06 2082
原创 从java.util.Locale 源码理解 ConcurrentHashMap 的 putIfAbsent方法
本文根据 文章 http://blog.csdn.net/exceptional_derek/article/details/40384659 整理。ConcurrentHashMap 是线程安全且较高效的Map结构。下面分析一下 ConcurrentHashMap 为什么是线程安全的。1、 putIfAbsent 方法V putIfAbsent(K key,V va
2017-08-22 11:19:23 696
原创 Race Condition 引起的 HashMap CPU100%
Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题。特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而造成数据的不一致性。为了解决这个问题,通常来说需要加上同步标志“synchronized”,来保证数据的串行访问。但是“synchronized”是个性能杀手,过多的使用会导致性能下降,特别是扩展性下降,使得你的系统不能使用多个CPU资源。
2017-08-22 10:53:35 420
转载 竞争条件(race condition)
在一些操作系统中,协作的进程可能共享一些彼此都能读写的公用存储区。这个公用存储区可能在内存中(可能是在内核数据结构中),也可能是一个共享文件。这里共享存储区的位置并不影响通信的本质及其带来的问题。为了理解实际中进程间通信如何工作,我们考虑一个简单但很普遍的例子:一个假脱机打印程序。当一个进程需要打印一个文件时,它将文件名放在一个特殊的假脱机目录 (spooler directory)下。另一个
2017-08-22 10:29:01 1271
原创 ConcurrentHashMap原理
ConcurrentHashMap 与 HashTableConcurrentHashMap与HashTable 的最大区别是 分段锁 与 锁整个表。HashTable的synchronized是针对整个HashTable 表的,即每次锁住整张表让线程独占。ConcurrentHashMap 由于使用了 分段锁 技术,使用多个锁来控制不同的部分,Conc
2017-08-21 17:37:21 305
原创 Quartz定时组件
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。package xuyan.com;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.apache.commo
2016-05-17 14:32:51 428
转载 从30岁到35岁:为你的生命多积累一些厚度
常常思考一个问题:是不是考虑做2年开发,打2年酱油,然后结婚生子,这样到底行不行?无论你是男是女,人生是一场独自修行的道路。如果在可以选的时候,还是选择靠自己吧。无论你是要养家还是要实现人生价值,如果你处在迷茫之中,希望这篇文章可以传达一些正能量,可以帮到你。--当然这篇文章是转的呀,但真的很有理啊,假如看了这篇文章,会影响到你的一生,那么我就觉得今天这一小时的时间花在这里值了。你所有不曾
2016-01-12 16:34:25 558
J2EE文件上传org.apache.commons-fileupload-1.2.1.jar
2013-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人