- 博客(26)
- 收藏
- 关注
原创 CPU硬件的内存模型
1. CPU硬件内存模型硬件内存简单架构,如下图所示:上面是简单的硬件内存结构图,真实的结构图要比这复杂很多,现在的计算机一般都有三级缓存,比如我的电脑:从图中可以看出我这台机器的 CPU 有三级缓存,一级缓存 (L1) 、二级缓存(L2)、三级缓存(L3),一级缓存是最接近 CPU 的,三级缓存是最接近内存的,每一级缓存的数据都是下一级缓存的一部分。三级缓存架构如下图所示:现在我们对硬件内存架构有了一定的了解,那么问题来了,为什么需要在 CPU 和内存之间添加缓存?因为CP
2021-05-18 23:20:29 823
原创 java并发的一些常见概念
1. 什么是进程, 什么是线程?进程是资源分配的最小单位。 通常进程的资源都是相互隔离的, 即一个进程没法访问另外一个进程的资源。 这个应该是在操作系统层面对进程访问内存地址做了限制处理。线程是操作系统调度的基本单位。同一个进程内的所有线程共享进程内的内存资源。2.同步(Synchronous)和异步(Asynchronous),阻塞( Blocking ) 和 非阻塞( Nonblocking)参考这篇文章, 写的很好https://blog.csdn.net/lengx...
2021-05-15 12:39:42 273 1
原创 各种数据结构对比
这里先解释下时间复杂度, 下面讲的时间复杂度都是指的渐近时间复杂度。即随着问题规模趋向无穷大,需要花费的操作。O(1)表示一个常数, 跟问题规模无关。1. 数组优点: 查找快, 时间复杂度O(1),因为数组是一片连续的内存空间,数据的获取都是先计算内存地址,然后再加载对应内存地址的数据。数组的引用存储数组的第一个元素的内存地址,后面的元素通过第一个元素的地址然后加上偏移地址可以快速的定位到任意元素的内存地址, 然后取出数据。缺点:插入慢,时间复杂度O(n)。默认插入数组的尾部。如果需要插入某个指
2021-05-11 23:29:27 884
原创 HashMap--jdk1.8
package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.function.BiConsumer;import java.util.function..
2021-04-21 22:50:20 102
原创 HashSet源码分析
HashSet源码分析1. HashSet底层是使用HashMap实现的。2. 元素无序且不重复。3. set集合的元素都是map的key值, value都是标红的对象的引用3. 使用transient标明map,重写了序列化和反序列化方法,主要是为了防止序列化大量的null值。package java.util;import java.io.InvalidObjectException;public class HashSet<E> extends Abstrac
2021-04-18 23:21:15 167
转载 ArrayList与迭代器模式
ArrayList与迭代器模式潘威威 2017-08-09 08:26:32 4784 收藏 4分类专栏: Java8容器源码札记 24种设计模式 文章标签: arraylist源码分析 iterator-迭代器 java容器 迭代器版权本文主要讲解迭代器模式在ArrayList源码中的使用。迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象中的各个元素,而不用暴露这个对象的内部表示。在Java中,ArrayList的迭代器有两种:Iterator和ListIter..
2021-04-18 22:48:18 393
转载 Java集合分析--ArrayList
转自:https://blog.csdn.net/panweiwei1994/article/details/76760238ArrayList可以总结出以下几点:底层:ArrayList是List接口的大小可变数组的实现。是否允许null:ArrayList允许null元素。时间复杂度:size、isEmpty、get、set、iterator和listIterator方法都以固定时间运行,时间复杂度为O(1)。add和remove方法需要O(n)时间。与用于LinkedList实现的常数因子
2021-04-18 22:31:42 131
转载 Tomcat5 和 Tomcat6 类加载器架构
Tomcat 5 ClassLoader 架构: Bootstrap | System | Common / \Catalina Shared / \ Webapp1 Webapp2在Tomca
2017-02-07 13:43:22 292
转载 tomcat架构演化分析
Tomcat的架构总的来说是分层次的、可插拔的组件架构。分层次是指构成Tomcat的组件不是同一级别的,上层组件可以包含子组件,各个组件有其功能范围,当一个组件停止服务时,不会影响上层组件的服务。可插拔是指对于组件的添加和删除并不影响服务器的运行。那么为了达到可插拔的组件架构,分层次的组件架构必成为基础。对于任何服务器,即使最简单的实现,从面向对象设计(OOD)的角度来说,我们都有必要将“
2017-01-20 10:43:53 340
转载 tomcat的类加载机制
说到本篇的tomcat类加载机制,不得不说翻译学习tomcat的初衷。 之前实习的时候学习javaMelody的源码,但是它是一个Maven的项目,与我们自己的web项目整合后无法直接断点调试。后来同事指导,说是直接把java类复制到src下就可以了。很纳闷....为什么会优先加载src下的java文件(编译出的class),而不是jar包中的class呢?现在了解tomcat的
2017-01-18 17:13:28 677
转载 初识tomcat
1.tomcat的体系结构Tomcat服务器的启动是基于一个server.xml文件的,Tomcat启动的时候首先会启动一个Server,Server里面就会启动Service,Service里面就会启动多个"Connector(连接器)",每一个连接器都在等待客户机的连接,当有用户使用浏览器去访问服务器上面的web资源时,首先是连接到Connector(连接器),Connector(
2017-01-17 14:06:52 305
原创 Servlet容器
servlet容器只是web服务器的一部分。1.什么是web服务器互联网上的资源分成两种:(1)静态web资源。指数据不会实时发生变化的资源,比如纯HTML页面。(2)动态的web资源。只会实时发生变化的资源。比如jsp/servlet等。多个web资源组成一个web应用。Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚
2017-01-16 17:06:04 452
原创 servlet
一、Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术。 它提供了一个servlet接口,用户如果需要动态获取数据,需要完成以下2个步骤: 1、编写一个Java类,实现servlet接口。 2、把开发好的Java类部署到web服务器中,如tomcat等。 通常我们把实现了servlet接口的java程序称为Se
2017-01-12 16:55:40 345
转载 ConcurrentHashMap的原理
大家都知道HashMap是非线程安全的,Hashtable是线程安全的,但是由于Hashtable是采用synchronized进行同步,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。同步Map:效率同样低下,对HashMap的每个操作都进行了同步处理Map map = Collections.synchronizedMap(new HashMap());这样会
2016-12-14 19:14:11 293
转载 java中的锁
Java中的锁在Java5.0之前采用的锁机制是用synchronized。Java5.0增加了新的机制:ReentrantLock。与synchronized内置加锁不同,ReentrantLock是一种显示锁。一、内置锁synchronizedSynchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排
2016-12-13 10:59:44 425
原创 sleep, yield, wait的区别
1.sleep(long millis)Thread的静态方法,使当前线程(即调用Thread.sleep(long millis)的线程)暂停执行一段时间(暂时让出CPU),让其他线程(任何优先级)有机会继续执行,但它并不释放对象锁。当睡眠到指定的时间后,时间事件触发,当前线程继续执行。源代码如下:方法需要抛出InterruptedException异常。如果sleep方法包
2016-12-12 17:41:36 412
原创 maven安装jar包到本地仓库报的一个错误:Could not find goal '' in plugin org.apache.maven.plugins
笔记,仅供自己学习
2016-11-23 16:24:44 35129 6
转载 maven学习
http://www.cnblogs.com/quanyongan/archive/2013/04/17/3025971.html
2016-11-23 09:26:58 336
原创 Exception in thread "main" java.lang.NoSuchMethodError
今天编程又碰到了这个异常。以前碰到了也很少总结,今天就来说一下这个异常发生的几种情况:(1).第一个常见原因jar包中确实没有这个方法,所以虚拟机根本没有加载这个方法。(2).第二个常见原因是jar包冲突了。导致虚拟机不知道加载哪一个,所以就导致了加载失败,从而找不到这个方法。(3).第三个,也许就是包含在第二种情况中,该方法只有抽象定义,而没有具体实现。我今天的遇到的是第二种吧。
2016-11-18 15:09:06 76525 7
原创 window环境下将solr6.3部署到tomcat中
这里贴出来,主要是遇到的那个错误。我按照网上的文章部署后报403的错误,折腾了一下。估计刚开始入门的朋友也可能会出现这个问题,所以才贴出来供大家一起参考。文章仅供自己学习笔记使用!
2016-11-17 14:17:05 5785 14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人