
JAVA
文章平均质量分 74
兔子侠客
从明天起 做一个编程的人 编程、测试、制作网页 从明天起 关心 J2EE 和 Android 我有一个电脑 面朝代码 春暖花开!!
展开
-
jvm理解
1、程序计数器 每个线程都有自己的计数器,用来指示程序将要运行到哪一行。2、虚拟机栈 虚拟机栈描述的是java方法执行的内存模型,为线程私有。 每个方法执行时都会创建一个栈帧,用于存储 局部变量,操作数栈,动态链接,方法出口等。 每个方法执行从开始到完成对应为栈帧从入栈道出栈的过程。3、本地方法栈 本地方法栈与虚拟机栈类型,不同的为 虚拟机栈执行的是 java方原创 2018-02-02 10:50:46 · 483 阅读 · 0 评论 -
一致性哈希算法(consistent hashing)
转自:http://blog.youkuaiyun.com/cywosp/article/details/23397179一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。2、单调性(Monotoni转载 2018-01-26 15:53:09 · 297 阅读 · 0 评论 -
Tomcat最多支持并发多少用户?
Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。操作系统对于进程中的线程数有一定的限制:Windows 每个进程中的线程数不允许超过 2转载 2018-01-26 15:13:40 · 33111 阅读 · 2 评论 -
Spring框架IOC和AOP的实现原理
IoC(Inversion of Control) IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分转载 2018-01-26 14:49:36 · 708 阅读 · 0 评论 -
Spring事务实现过程及原理
1、Spring中事务处理的作用: Spring事务处理,是将事务处理的工作统一起来,并为事务处理提供通用的支持。 2、工作原理及实现 a、划分处理单元——IOC 由于spring解决的问题是对单个数据库进行局部事务处理的,具体的实现首相用spring中的IOC划分了事务处理单元。并且将对事务的各种配置放到了ioc容器中(设置事务管理器,设置事务原创 2018-02-02 11:54:30 · 12158 阅读 · 1 评论 -
rabbitMQ学习
消息队列优点:解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。冗余 有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了原创 2018-02-02 11:08:00 · 414 阅读 · 0 评论 -
二分查找算法
1.二分查找又称折半查找,它是一种效率较高的查找方法。2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三原创 2018-02-01 11:45:14 · 317 阅读 · 0 评论 -
Java实现 二叉搜索树算法(BST)
转自:http://blog.youkuaiyun.com/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 · 354 阅读 · 0 评论 -
事务的传播特性 和隔离级别
转自:http://blog.youkuaiyun.com/loadhai/article/details/17800537事物传播行为介绍: @Transactional(propagation=Propagation.REQUIRED) 如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)@Transactional(propagation=Propagation.NOT_SU原创 2018-01-24 17:31:07 · 617 阅读 · 0 评论 -
spring IOC AOP原理
ioc即为控制反转也叫依赖注入,通过 配置 文件 或注解的方式实现,将对象交给容器管理,而不是自己new.IOC:控制反转也叫依赖注入。利用了工厂模式 将对象交给容器管理,你只需要在spring配置文件时配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在 spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需原创 2018-01-26 16:27:55 · 627 阅读 · 0 评论 -
redis 缓存失效与热点key解决方案
转自:https://www.jianshu.com/p/d5a3668d4dad缓存击穿: 查询一个数据库中不存在的数据,比如商品详情,查询一个不存在的ID,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成过大地压力。缓存击穿的解决方案: 当通过某一个key去查询数据的时候,如果对应在数据库中的数据都不存在,我们将此key对应的value设置为一个默认的值,比如“NULL”,转载 2018-02-03 15:53:43 · 7915 阅读 · 0 评论 -
锁降级 以保证数据的可见性
转自:https://www.jianshu.com/p/0f4a1995f57d读写锁ReentrantReadWriteLock简介ReentrantReadWriteLock是ReadWriteLock接口的实现,ReentrantReadWriteLock中有两个静态内部类:ReadLock读锁和WriteLock写锁,这两个锁实现了Lock接口,ReentrantReadWri转载 2018-02-03 16:37:52 · 562 阅读 · 0 评论 -
java链表面试题
转自:http://blog.youkuaiyun.com/u010442302/article/details/51864187本文包含链表的以下内容: 1、单链表的创建和遍历 2、求单链表中节点的个数 3、查找单链表中的倒数第k个结点(剑指offer,题15) 4、查找单链表中的中间结点 5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17) 6、单链表的反转...转载 2018-02-10 20:15:58 · 1825 阅读 · 0 评论 -
对List集合中的元素进行排序
Collections对List集合中的数据进行排序有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到Java中提供的对集合进行操作的工具类Collections,其中的sort方法先看一个简单的例子:[java] view plain copy public static void main(String[] args)转载 2018-02-05 18:13:03 · 559 阅读 · 0 评论 -
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
转自:http://blog.youkuaiyun.com/luanlouis/article/details/24589193class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Cla...转载 2018-02-10 13:35:19 · 359 阅读 · 0 评论 -
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 · 243 阅读 · 0 评论 -
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 · 1066 阅读 · 0 评论 -
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 · 303 阅读 · 0 评论 -
guava缓存
转自:http://blog.youkuaiyun.com/wangzhi291/article/details/50323989适用性 缓存在很多情况下都是非常有用的。比如,我们需要多次根据给定的输入获取值,而且该值计算或者获取的开销是非常昂贵的。 缓存和ConcurrentMap是非常相像的,但是它们也不完全一样。最根本的区别就是,ConcurrentMap会持有所有添加的转载 2018-02-03 17:09:20 · 1161 阅读 · 0 评论 -
图解排序算法(三)之堆排序
转自:https://www.cnblogs.com/chengxiao/p/6129630.html堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的转载 2018-02-03 16:39:40 · 260 阅读 · 0 评论 -
根据事例理解事务的4种隔离级别
转自:http://blog.youkuaiyun.com/qq_33290787/article/details/51924963数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。转载 2018-01-24 17:53:48 · 258 阅读 · 0 评论 -
事务的隔离级别 数据库的隔离级别 和 spring的隔离级别
转自:http://www.cnblogs.com/fjdingsd/p/5632949.html一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:获取连接 Connection con = DriverManager.getConne转载 2018-01-24 17:50:29 · 616 阅读 · 0 评论 -
ConcurrentHashMap原理
ConcurrentHashMap 与 HashTableConcurrentHashMap与HashTable 的最大区别是 分段锁 与 锁整个表。HashTable的synchronized是针对整个HashTable 表的,即每次锁住整张表让线程独占。ConcurrentHashMap 由于使用了 分段锁 技术,使用多个锁来控制不同的部分,Conc原创 2017-08-21 17:37:21 · 317 阅读 · 0 评论 -
竞争条件(race condition)
在一些操作系统中,协作的进程可能共享一些彼此都能读写的公用存储区。这个公用存储区可能在内存中(可能是在内核数据结构中),也可能是一个共享文件。这里共享存储区的位置并不影响通信的本质及其带来的问题。为了理解实际中进程间通信如何工作,我们考虑一个简单但很普遍的例子:一个假脱机打印程序。当一个进程需要打印一个文件时,它将文件名放在一个特殊的假脱机目录 (spooler directory)下。另一个转载 2017-08-22 10:29:01 · 1296 阅读 · 0 评论 -
从30岁到35岁:为你的生命多积累一些厚度
常常思考一个问题:是不是考虑做2年开发,打2年酱油,然后结婚生子,这样到底行不行?无论你是男是女,人生是一场独自修行的道路。如果在可以选的时候,还是选择靠自己吧。无论你是要养家还是要实现人生价值,如果你处在迷茫之中,希望这篇文章可以传达一些正能量,可以帮到你。--当然这篇文章是转的呀,但真的很有理啊,假如看了这篇文章,会影响到你的一生,那么我就觉得今天这一小时的时间花在这里值了。你所有不曾转载 2016-01-12 16:34:25 · 577 阅读 · 0 评论 -
Java 反射机制 举例
Java Reflection API简介 在JDK中,主要由以下类来实现Java反射机制,这些类(除了第一个)都位于java.lang.reflect包中 Class类:代表一个类,位于java.lang包下。 Field类:代表类的成员变量(成员变量也称为类的属性)。 Method类:代表类的方法。 Constructor类:代表类的构造方法。 Array类转载 2015-07-20 10:33:48 · 699 阅读 · 0 评论 -
JAVA反射机制
概念: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和原创 2015-07-20 09:30:35 · 461 阅读 · 0 评论 -
SpringMVC 框架基础
概述:SpringMVC框架是围绕DispatcherServlet这个核心展开,DispatcherServlet这个Servlet负责拦截请求,并将其分派给相应的处理类来处理。 体系结构:SpringMVC是基于Model2实现的技术框架,Model2是经典的MVC模型在Web应用中的变体,这个改变主要源于HTTP协议的无状态性。Model2的目的和MVC一样,也是利用处理器分转载 2014-09-10 18:27:49 · 603 阅读 · 0 评论 -
数组的 增 删 改 查
package xuyan.com;public class ArrayTest { static int[] a; static int length; public static void main(String[] args) { ArrayTest test=new ArrayTest(10); //调原创 2013-06-30 20:43:54 · 2121 阅读 · 0 评论 -
JAVA选择排序法
package xuyan.com;public class Test { /** * @param args */ static int[] a={5,8,7,2,1,9,4,3,6}; public static void main(String[] args) { // TODO Auto-generated method stub原创 2013-04-15 10:48:11 · 739 阅读 · 0 评论 -
Race Condition 引起的 HashMap CPU100%
Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题。特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而造成数据的不一致性。为了解决这个问题,通常来说需要加上同步标志“synchronized”,来保证数据的串行访问。但是“synchronized”是个性能杀手,过多的使用会导致性能下降,特别是扩展性下降,使得你的系统不能使用多个CPU资源。原创 2017-08-22 10:53:35 · 439 阅读 · 0 评论 -
从java.util.Locale 源码理解 ConcurrentHashMap 的 putIfAbsent方法
本文根据 文章 http://blog.youkuaiyun.com/exceptional_derek/article/details/40384659 整理。ConcurrentHashMap 是线程安全且较高效的Map结构。下面分析一下 ConcurrentHashMap 为什么是线程安全的。1、 putIfAbsent 方法V putIfAbsent(K key,V va原创 2017-08-22 11:19:23 · 710 阅读 · 0 评论 -
ConcurrentHashMap内部结构和put remove方法分析
一下文章转自: http://www.cnblogs.com/dolphin0520/p/3932905.htmlConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。ConcurrentHashMap的内部结构 ConcurrentHashMap转载 2017-08-22 11:35:06 · 2162 阅读 · 0 评论 -
事务的隔离级别
现在来看看MySQL数据库为我们提供的四种隔离级别: ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。 ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。 ③ Read committed (读已提交):可避免脏读的发生。 ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。 以转载 2018-01-24 17:37:08 · 295 阅读 · 0 评论 -
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 · 481 阅读 · 0 评论 -
java排序算法 堆排序
转自:http://www.cnblogs.com/0201zcr/p/4764705.html堆排序就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1 个序列重新构造成一个堆,这样就会得到n 个元素中次大的值。如此转载 2018-01-31 15:50:32 · 307 阅读 · 0 评论 -
【排序算法】归并排序原理及Java实现
转自:http://blog.youkuaiyun.com/jianyuerensheng/article/details/512629841、基本思想:归并排序就是利用归并的思想实现的排序方法。而且充分利用了完全二叉树的深度是的特性,因此效率比较高。其基本原理如下:对于给定的一组记录,利用递归与分治技术将数据序列划分成为越来越小的半子表,在对半子表排序,最后再用递归方法将排好序的半子表合并成转载 2018-01-31 11:41:21 · 276 阅读 · 0 评论 -
java多线程yield
理论上虚拟机和操作系统会让优先级高的的线程更多的获取执行的机会,这个不要与时间片混淆。yield的意思是放手,放弃,一个线程调用yield意味着它要告诉虚拟机自己乐意让其它线程占用自己的位置。这只是一个暗示,并不保证会产生效果(使当前线程转到可运行状态,runnable)。 看代码示例,[java] view plain copycl转载 2017-09-18 16:45:19 · 505 阅读 · 0 评论 -
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 · 304 阅读 · 0 评论 -
深入分析volatile的实现原理
原文地址:http://www.cnblogs.com/chenssy/p/6379280.html我们都知道synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对vola转载 2017-08-24 16:04:27 · 505 阅读 · 0 评论