自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (3)
  • 收藏
  • 关注

原创 狂神redis之NoSql概述

一、为什么要用Nosql1、单机MySQL的年代!90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够!那个时候更多的使用静态网页html,服务器没什么压力。这种情况下,网站的瓶颈是:1、数据量如果太大、一个机器放不下了!2、数据的索引 (B+ Tree),一个机器内存也放不下3、访问量(读写混合),一个服务器承受不了~只要你开始出现以上的三种情况之一,那么你就必须要晋级!2、Memcached(缓存) + MySQL + 垂直拆分 (读写分离)网.

2021-10-18 16:01:58 162

原创 JVM垃圾回收—GC Roots

目录1、什么是垃圾2、如何判断是垃圾1)引用计数法(已被淘汰的算法)2)枚举根节点做可达性分析3、哪些可以作为GC Root4、GC常用的算法1)标记清除算法(标记-清除)2)复制算法 (标记-复制-清除)3)标记压缩算法(标记-清理-压缩)1、什么是垃圾简单的说就是内存中已经不再被使用的空间就是垃圾2、如何判断是垃圾1)引用计数法(已被淘汰的算法)给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,...

2021-09-05 18:01:08 353

原创 详解JVM内存结构

目录1、类装载器2、双亲委派机制3、Native Interface本地接口4、Native Method Stack本地方法栈5、PC寄存器(程序计数器)6、方法区7、栈8、栈、堆、方法区的交互关系9、堆理解及GC过程分析java虚拟机在执行程序的过程中会将内存划分为不同的数据区域,如下图:1、类装载器 定义:负责加载class文件,class文件在文件开头有特定的文件标示,将class文件字节码内容加载到内存中,并将这些内容转换成方...

2021-09-04 17:14:45 218

原创 Java之死锁编码及定位分析

目录一、什么是死锁二、产生死锁的主要原因三、代码示例死锁3.1synchornized死锁3.2ReentrantLock死锁四、如何定位死锁五、死锁预防一、什么是死锁两个或两个以上的进程再执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,他们都将无法推进下去。二、产生死锁的主要原因(1)系统资源不足(2)进程运行推进的顺序不合适(3)资源分配不当三、代码示例死锁 3.1synchornized死锁 ...

2021-08-26 15:58:55 163

原创 如何优雅使用线程池

一、为什么用线程池线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后再线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。 主要特点:线程复用、控制最大并发数、管理线程。1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗;2、提高响应速度。当任务到达时,任务可以不用等到线程创建就能立即执行;3、提高线程的可管理性。线程是稀缺资源,如果无限制的创建,...

2021-08-25 17:31:26 375

原创 java创建线程的五种方式

目录一、继承Thread类二、实现runnabe接口三、实现Callable接口四、匿名内部类五、线程池的实现(java.util.concurrent.Executor接口)六、Java的调度方法1、线程的优先级2、线程的生命周期一、继承Thread类定义子类继承Thread类。 子类中重写Thread类中的run方法。 创建Thread子类对象,即创建了线程对象。 调用线程对象start方法:启动线程,调用run方法。/** * 1、...

2021-08-24 16:11:48 654 2

原创 Java四种方式解决生产者消费者问题

生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况:存储空间已满,而生产者占用着它,消费者等着生产者让出空间从而去除产品,生产者等着消费者消费产品,从而向空间中添加产品。互相等待,从而发生死锁。一、wait() / notify()方法Java 中,可以通过配合调用 Object 对象的 wait() 方法和 notify()方法或 notifyAl...

2021-08-22 17:58:10 1224

原创 java之阻塞队列和非阻塞队列

Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。一、什么是阻塞队列阻塞队列(BlockingQueue)首先是一个队列 ,也是一个支持两个附加操作的队列,这两个附加的操作支持阻塞的插入和移除方法。 当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。 当阻...

2021-08-22 13:14:56 1688

原创 简析CountDownLatch、CyclicBarrier、Semaphore

一、CountDownLatch1、定义用来协调线程间的同步,起到线程之间的通信作用的工具类。它能够使一个线程再等待一些线程完成各自工作后,再继续执行。使用一个计数器实现,计数器初始值为线程的数量,当每一个线程完成自己任务后,计数器的值会减1,当计数器的值为0时,表示所有的线程都完成了任务,然后CountDownLatch上等待的线程就可以恢复执行任务。2、应用场景某一个线程再开始运行前等待n个线程执行完毕,如启动一个服务时,主线程需要等待多个组件加载完毕,之后再执行...

2021-08-20 21:47:03 309 1

原创 Java锁总结

目录1、乐观锁CAS2、悲观锁synchronized、vector、hashtable3、自旋锁CAS4、可重入锁synchronized、Reentrantlock、Lock5、读写锁ReentrantReadWriteLock,CopyOnWriteArrayList、CopyOnWriteArraySet6、公平锁Reentrantlock(true)7、非公平锁synchronized、reentrantlock(false)8、共享锁ReentrantReadWr

2021-08-13 22:03:32 107

原创 ArrayList集合不安全分析

目录一、ArrayList概述二、故障现象三、导致原因四、解决方案一、ArrayList概述底层数组实现,使用默认构造方法初始化出来的容量是10 扩容的长度是在原长度基础上加二分之一 实现了RandomAccess接口,底层又是数组,get读取元素性能很好 线程不安全,所有的方法均不是同步方法也没有加锁,因此多线程下慎用 顺序添加很方便 删除和插入需要复制数组 性能很差(可以使用LinkindList)二、故障现象public class ListDemo

2021-08-12 21:54:27 134

原创 简单分析CAS机制

1、CAS是什么?cas是比较并交换 compareAndSwap(compareAndSwapInt),它的功能是判断内存某个位置的值(主内存中的值)是否为预期值(工作内存中变量副本的值),如果是则更改为新的值,这个过程是原子的。cas是一条cpu的原子指令,不会造成所谓的数据不一致问题。比较当前工作内存中的值和主内存中的值,是否一致,如果一致则执行规定操作,否则重新读取主内存值,继续比较直到主内存和工作内存中的值一致为止。2、CAS与synchroniz...

2021-08-02 21:39:46 636

原创 Java中volatile理解

目录一、volatile是什么?二、JMM理解三、如何保证可见性?四、volatile不保证原子性五、Volatile禁止指令重排六、Volatile的应用一、volatile是什么?volatile是Java虚拟机提供的轻量级的同步机制,具有可见性、禁止指令排序、不保证原子性的特征。一旦一个共享变量(类的成员变量、 类的静态成员变量) 被 volatile 修饰之后, 那么就具备了两层语义: 保证了不同线程对这个变量进行读取时的可见...

2021-08-02 18:56:13 227

音乐项目源码

音乐项目源码

2013-07-29

国际程序设计大赛作品欣赏---汇编的艺术

国际程序设计大赛作品欣赏---汇编的艺术

2013-07-29

课件计算机系统结构

计算机系统结构课件,很值得一看的,哈哈,学习进步啊

2013-06-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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