java
老咸驴
记录下学习过程,欢迎评测!
展开
-
表分区、读写分离、数据库集群、硬件优化、缓存优化、服务器优化、Linux系统优化
表分区分区适用于例如日志记录,查询少。一般用于后台的数据报表分析。对于这些数据汇总需求,需要很多日志表去做数据聚合,我们能够容忍1s到2s的延迟,只要数据准确能够满足需求就可以。MySQL主要支持4种模式的分区:range分区、list预定义列表分区,hash 分区,key键值分区。读写分离大型网站会有大量的并发访问,如果还是传统的数据存储方案,只是靠一台服务器处理,如此多的数据库连接、读写操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。这时候,我们需要考虑如何降低单台服务...原创 2020-08-21 15:03:06 · 247 阅读 · 0 评论 -
EXPLAIN、索引优化、索引的存储结构、存储优化、数据库结构优化
EXPLAINEXPLAIN可以帮助开发人员分析SQL问题,EXPLAIN显示了MySQL如何使用使用SQL执行计划,可以帮助开发人员写出更优化的查询语句。使用方法,在select语句前加上Explain就可以了:EXPLAIN SELECT * FROM products结果的列的说明如下:1) idSELECT识别符。这是SELECT查询序列号。这个不重要2) select_type表示SELECT语句的类型。simple:简单select(不使用union或子查询)。pr.原创 2020-08-21 15:01:32 · 185 阅读 · 0 评论 -
RejectedExecutionHandler、MySQL性能优化
RejectedExecutionHandler类型RejectedExecutionHandler 特性及效果1.AbortPolicy:线程池默认的策略,如果元素添加到线程池失败,会抛出RejectedExecutionException异常2.DiscardPolicy:如果添加失败,则放弃,并且不会抛出任何异常3.DiscardOldestPolicy:如果添加到线程池失败,会将队列中最早添加的元素移除,再尝试添加,如果失败则按该策略不断重试4.CallerR...原创 2020-08-21 14:57:17 · 275 阅读 · 0 评论 -
ConcurrentHashMap使用场景、总结、对比Hashtable、ConcurrentSkipListMap、几种队列;J.U.C线程池、七个参数、四种线程池
ConcurrentHashMap使用场景ConcurrentHashMap通常只被看做并发效率更高的Map ,用来替换其他线程安全的Map容器,比如Hashtable和Collections.synchronizedMap.线程安全的容器.特别是Map ,很多情况下一个业务中涉及容器的操作有多个,即复合操作,而在并发执行时,线程安全的容器只能保证自身的数据不被破坏,和数据在多个线程间是可见的,但无法保证业务的行为是否正确。ConcurrentHashMap总结:●HashMap是线程不安全的.原创 2020-08-21 14:52:04 · 2886 阅读 · 0 评论 -
CountDownLatch、Semaphore、J.U.C之并发容器ConcurrentHashMap、JDK7、8 HashMap、JDK7、8 ConcurrentHashMap
CountDownLatch介绍CountDownLatch是一个计数的闭锁 ,作用与CyclicBarrier有点儿相似。在API中是这样描述的: 用给定的计数初始化CountDownLatch,由于调用了countDown(方法,所以在当前计数到达零之前, await方法会一直受阻塞。 之后,会释放所有等待的线程,await的所有后续调用都将立即返回。 这种现象只出现一次——计数无法被重置。 如果需要重置计数,请考虑使用CylicBarrier.●CountDownLa...原创 2020-08-21 14:44:45 · 176 阅读 · 0 评论 -
JUC多线程(3)、并发工具类-CyclicBarrier
JUC多线程(3)学习目标:●掌握CyclicBarrier同步 屏障的使用●掌握CountDownLatch的使用●掌握Semaphore信号量的使用●掌握ConcurrentHashMap同步 容器的使用●掌握四种BlockingQueue阻塞队列的使用●掌握线程池的使用,了解内置的四种线程池J.U.C之并发工具类CyclicBarrier介绍CyclicBarrier也叫同步屏障,在JDK1.5被引入的一个同步辅助类,在API中是这么介绍的:允许一组线程全部等待彼此...原创 2020-08-21 14:42:10 · 142 阅读 · 0 评论 -
J.U.C之锁-互斥锁、阻塞锁、自旋锁、读写锁、ReentrantLock、公平锁与非公平锁原理、ReentrantLock与synchronized的区别、J.U.C之Condition
-------小结-----------1. Volatile 解决了什么问题2. Volatile 能不能解决原子性问题3. Volatile 怎么解决的这些问题,4. synchroni zed和volatile比较5.掌握CAS究竟是什么6.需要知道如何实现的(自旋)7.需要掌握guc报下的核心的原子类和常用的api8. synchronized的实现原理9. native关键字(JNI)10.多CPU的CAS处理11. cas的缺陷 循环时间长 ABA的...原创 2020-08-21 14:40:10 · 399 阅读 · 0 评论 -
对象的属性修改类型、JDK1.8新增类、J.U.C之AQS、AQS资源共享方式、CLH同步队列
对象的属性修改类型如果需要原子更新某个类里的某个字段时,需要用到对象的属性修改类型原子类。 AtomicIntegerFieldUpdater:原子更新整形字段的更新器 AtomicLongFieldUpdater :原子更新长整形字段的更新器 AtomicReferenceFieldUpdater : 原子更新引用类形字段的更新器但是他们的使用通常有以下几个限制:●限制1 :操作的目标不能是statiC类型,前面说到的unsafe提取的是非static类型的属性偏移量,如果是...原创 2020-08-10 23:25:02 · 250 阅读 · 0 评论 -
CAS缺陷、JUC的atomic包及包中类(原子引用类)的基本介绍
CAS缺陷CAS虽然高效地解决了原子操作,但是还是存在一些缺陷的 ,主要表现在三个方法:循环时间太长、只能保证-个共享变量原子操作、ABA问题。●循环时间太长如果CAS一直不成功呢?这种情况绝对有可能发生。如果自旋CAS长时间地不成功,则会给CPU带来非常大的开销。在JUC中有些地方就限制了CAS自旋的次数,例如BlockingQueue的SynchronousQueue,●只能保证一个共享变量原子操作看了CAS的实现就知道这只能针对一个共享变量,如果是多个共享变量就只能使用锁了。●ABA问题原创 2020-08-10 23:24:25 · 216 阅读 · 0 评论 -
Volatile适合使用场景、synchronized和volatile比较、J.U.C之CAS、CAS介绍、CAS原理剖析、native关键词、多CPU的CAS处理
Volatile适合使用场景a)对变量的写入操作不依赖其当前值 不满足: number++. count=count*5等 满足: boolean变量、直接赋值的变量等b)该变量没有包含在具有其他变量的不变式中 不满足:不变式low<up总结:变量真正独立于其他变量和自己以前的值,在单独使用的时候,适合用volatilesynchronized和volatile比较a) volatile不需要加锁,比synchronized更轻便,不会阻塞线程b) synchro...原创 2020-08-08 22:18:35 · 385 阅读 · 0 评论 -
JUC多线程(二)、Volatile实现内存可见性的过程和原理(内存屏障)
JUC多线程(二)学习目标:●掌握volatile解决内存可 见性的使用●了解CAS原子操作●掌握JUC的atomic原子操作包的使用●了解AQS同步队列的作用●了解JUC的锁的基本概念●掌握ReentrantLock和ReentrantReadWriteLock的使用●掌握Condition的使用Volatile通过前面内容我们了解了synchronized ,虽然JVM对它做了很多优化,但是它还是一一个重量级的锁。 而接下来要介绍的volatile则是轻量级的synchronize原创 2020-08-08 22:17:56 · 467 阅读 · 0 评论 -
synchronized锁优化、自旋锁、适应自旋锁、锁消除、锁粗化、偏向锁、轻量级锁(CAS)、重量锁(monitor)
synchronized是重量级锁,效率不高。但在jdk 1.6中对synchronize的实现进行了各种优化,使得它显得不是那么重了。jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。锁主要存在四中状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态 ,他们会随着竞争的激烈而逐渐升级。PS:注意锁可以升级 不可降级,这种策略是为了提高获得锁和释放锁的效率。自旋锁线程的阻塞和唤醒需要CPU从用户态转为核心态,频繁的.原创 2020-08-08 22:16:39 · 356 阅读 · 0 评论 -
JUC线程安全、wait与sleep区别、interrupt()方法、线程优先级、join()方法、yield()方法、多线程并发的3个特性、JVM内存结构、Java对象模型和Java内存模型、
JUC(java.util.concurrent) .locks.ReenTrantLocks实现Runnable接口比继承Thread类所具有的优势:1.适合多个相同的程序代码的线程去共享同一个资源。2.可以避免java中的单继承的局限性。3.增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和数据独立。4.线程池只能放入实现Runable或callable类线程,不能直接放入继承Thread的类1.同步代码块Object lock = new Object(); //创建锁原创 2020-08-04 22:55:56 · 251 阅读 · 0 评论 -
JUC多线程
JUC多线程(jdk中包含可直接操作)学习目标:1.多线程的创建2.线程安全的处理3.了解线程状态4.线程停止两种方法5.了解线程的原子性、可见性和有序性6.理解内存可见性的原理7.synchronized解决内存可见性多线程目的:1.可充分利用cpu空闲时间片;2.同一进程的所有线程是共享同一内存,不需要特殊的数据传送机制,不需要建立共享存储区域共享文件名词概念:进程: 指一个内存中运行的应用程序,拥有一个独立的内存空间,一个应用程序可以同时运行多个进程; ...原创 2020-08-04 00:10:23 · 179 阅读 · 0 评论