Java
文章平均质量分 71
nnzanna
。。
展开
-
C/S与B/S的比较
C/SClient/Server,客户端/服务器端C/S结构的系统,我们进行访问时需要下载特定的应用程序,eg:微信、新浪微博、腾讯视频客户端等;C/S结构的原理:用户访问客户端应用程序,发出请求服务器端进行分析处理,再发送反馈;C/S结构的系统注重用户的体验,要求画质清晰,响应速度高。优点: C/S结构系统将应用于服务分离,系统具有稳定性和灵活性; C/S结构配备的是 点对点的结构模式,应用于局域网,有可靠的安全性; C/S结构的系统数据大部分集成在客户端软件中,服务器端需要传送的数原创 2021-03-05 15:23:31 · 205 阅读 · 2 评论 -
RandomAccessFile 随机访问文件类
随机文件的访问原创 2019-04-18 22:44:05 · 288 阅读 · 0 评论 -
线程---BlockingQueue
BlockingQueueBlockingQueue:ArrayBlockingQueue:有界阻塞队列LinkedBlockingQueue:无界阻塞队列SychronousQueue:同步阻塞队列ArrayBlockingQueue底层结构:数组 一把锁 /* * Concurren...原创 2019-05-03 17:16:47 · 126 阅读 · 0 评论 -
线程---synchronized
标题原创 2019-04-24 21:25:13 · 109 阅读 · 0 评论 -
线程---线程间通信
线程间通信实现线程间通信的方式有三种:父线程–给子线程传递信息==== 》 构造函数传递;子线程–给父线程 ====》 FutureTask;线程间通信:Java.lang.Object包中: wait()\notify()\notifyAll();wait()\notify()\notifyAll()源码:/** * Wakes up ...原创 2019-04-24 22:07:46 · 171 阅读 · 0 评论 -
线程---JDK1.8中ConcurrentHashMap对比1.7
1.8中ConcurentHashMap新增基本属性: /** * The bin count threshold for using a tree rather than list for a * bin. Bins are converted to trees when adding an element to a * bin with at least...原创 2019-04-27 22:46:15 · 186 阅读 · 0 评论 -
线程---ConcurrentHashMap
ConcurrentHashMap ConsurrntHashMap是线程安全且高效的HashMap。存在包:(1.7)java.util.concurrent包;继承关系:public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> implements ConcurrentMa...原创 2019-04-27 22:38:12 · 207 阅读 · 0 评论 -
线程---锁(乐观锁、悲观锁)、CAS机制
标题原创 2019-04-25 00:08:43 · 144 阅读 · 0 评论 -
线程---重入锁(ReentrantLock)
标题原创 2019-04-25 13:16:30 · 253 阅读 · 0 评论 -
线程---ThreadPoolExecutor
ThreadPoolExecutor源码剖析:存在包:package java.util.concurrent;继承关系:public class ThreadPoolExecutor extends AbstractExecutorService 基本属性:重要属性列举:/* * The main pool control state, ctl, is ...原创 2019-05-08 15:58:37 · 195 阅读 · 0 评论 -
线程---volatile的使用优化
著名的Java并发编程大师Doug lea在JDK 7的并发包java.util.concurrent里新增一个队列集合类LinkedTransferQueue,它在使用volatile变量时,用一种追加字节的方式来优化队列出队和入队的性能。LinkedTransferQueue的代码如下:/** 队列中的头部节点 */private transient final PaddedAtomi...原创 2019-04-21 16:18:00 · 151 阅读 · 0 评论 -
线程---volatile
volatile定义:轻量级的线程同步(sychronized)关键字;特点:1.内存可见性:对于线程共享变量,一个线程的修改,另一个线程可以直接获取到修改过的值。2.禁止指令的重排序(有序性);优势:如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。Java语言提供了volatile,在某些情况下...原创 2019-04-21 15:28:54 · 94 阅读 · 0 评论 -
线程---happen-before原则
happen-before原则定义:Java内存模型具备一些先天的“有序性”,即不需要通过任何手段就能够得到保证的有序性,称为happens-before 原则。如果两个操作的执行次序无法从happens-before原则推导出来,那么它们就不能保证它们的有序性,虚拟机可以随意地对它们进行重排序。happen-before规则(先行发生原则):(1)程序次序规则:一个线程内,按照代...原创 2019-04-21 16:30:43 · 203 阅读 · 0 评论 -
序列化和反序列化
标题原创 2019-04-15 22:42:54 · 112 阅读 · 0 评论 -
线程---并发编程中的三个概念:原子性、有序性、可见性
原子性、有序性、可见性 在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。我们先看具体看一下这三个概念:1. 原子性原子性:即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。 ...原创 2019-04-21 16:04:01 · 153 阅读 · 0 评论 -
线程---死锁
死锁定义:死锁是指两个或者两个以上的线程在线程执行过程中,由于竞争资源而造成的阻塞问题,若无外力作用下,他们将无法推进下去。此时处于死锁状态。死锁产生的原因:1、因竞争资源产生死锁;2、进程顺序推进不当发生死锁;出现死锁的必要条件:1、互斥条件:资源每次只能一个线程使用; ------》资源2、请求与保持条件:一个线程因请求资源而阻塞时,对已经获取的资源保持不放; --...原创 2019-04-27 23:30:43 · 178 阅读 · 0 评论 -
线程---生产者消费者模型-synchronized实现
模拟生产者、消费者一个生产者、一个消费者、仓库容量为1,模拟生产者、消费者通信过程。思路:仓库:ArrayList,初始化大小为1。生产者:当仓库未满的情况下,进行生产,并通知消费者消费;当仓库是满的时候,等待消费者消费后的通知。消费者:当仓库中不为空的情况下,进行消费,并通知生产者生产;当仓库为空时,等待生产者生产后的通知。实现:public class Producer...原创 2019-04-25 20:34:27 · 182 阅读 · 0 评论 -
线程---Thread方法
Thread方法介绍Thread方法介绍:void start()启动一个新线程,start方法必须是子线程第一个调用的方法,新线程会调用Runnable接口的run方法,start方法不能重复调用void run()run方法是子线程的执行体,子线程从进入run方法开始直至run方法执行接收,意味着子线程的任务执行接收,在主线程直接调用run方法是不能创建子线程,只是普...原创 2019-04-18 22:39:41 · 164 阅读 · 0 评论 -
线程---线程属性
线程属性 这里我们简单来谈一下,关于线程的属性:线程优先级,守护线程。线程优先级 每一个线程都有一个优先级。默认情况下,每个线程继承它父类线程的优先级,可以使用setPriority()方法来提高或者降低任何一个线程的优先级。可以将优先级设置为最小优先级默认优先级MIN_PRIORITY = 1,与最大优先级MAX_PRIORITY = 10之间的任何值,NORM_PRIORITY = 5。...原创 2019-04-24 20:47:28 · 210 阅读 · 0 评论 -
线程---线程的几种状态
标题原创 2019-04-18 22:47:57 · 136 阅读 · 0 评论 -
集合应用练习
1.某班级有 40 个学生,学号为 180201-180240,全部参加 Java 集合阶段检测,给出所有同学的成绩(可随机产生,范围为 50-100),请编写程序将本班各位同学成绩从高往低排序打印输出,注:成绩相同时学号较小的优先打印要求:打印的信息包含学号、姓名(姓名统一为“同学 J”[J=10,11,12。。。])和成绩。思路分析:1.随机产生所有同学的成绩:Math.random()...原创 2019-05-14 09:57:12 · 1260 阅读 · 0 评论 -
集合---Set、List、Map的区别
Set、List和 Map 的区别Set 、List 和 Map 是 Java 容器框架的三个最重要的接口。List 提供了一个有序且有索引的容器,它允许重复值的出现。Set 提供了一个无序的唯一对象的容器,Set 不允许重复值。Map 提供的则是一个基于键值对以及哈希的数据结构(key-value)。List、Set 和 Map 这三个都是 Java 里的接口,在容器 API 里都...原创 2019-10-06 21:26:16 · 150 阅读 · 0 评论 -
HashMap、Hashtable的异同点
HashMap和Hashtable的异同点相同点:1.底层数据结构:都为数组 + 链表;2.key都不能重复;3.插入元素都不能保证插入有序;4.哈希过程通过key进行哈希;不同点:1.扩容方式不同: HashMap以2 * table.length的方式;Hashtable以2 * table.length + 1的方式;2.继承关系:HashMap继承AbstractM...原创 2019-04-04 11:40:05 · 227 阅读 · 0 评论 -
集合--Hashtable
Hashtable原创 2019-04-04 11:37:23 · 943 阅读 · 2 评论 -
集合---1.8与1.7中HashMap的变化
HashMap摘抄整理自公众号–Java极客技术。底层数据结构(1)在jdk1.7中,HashMap的底层数据结构是数组+链表,当发生hash冲突时,使用的是链地址法(又叫拉链法),将冲突的元素放入对应位置的链表中;(2)在jdk1.8中,HashMap的底层数据结构主要是数组+链表+红黑树,当链表长度超过 8 的时候,就将链表变成红黑树,如图所示。方法比较put方法(1)jdk...原创 2019-10-07 18:37:15 · 287 阅读 · 0 评论 -
hash算法(HashMap中的应用)
哈希表数据结构:哈希表哈希表:通过关键码来映射到值的一个数据结构。哈希函数:键与值映射的一个映射关系;哈希:Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说...原创 2019-08-19 17:30:23 · 190 阅读 · 0 评论 -
集合--HashMap
HashMap原创 2019-04-02 22:30:37 · 663 阅读 · 0 评论 -
集合-fail-fast机制
Fail-Fast机制(快速失败机制)它是Java集合的一种错误检测机制。当多个线程对同一个集合进行操作的时候,某线程访问集合的过程中,该集合的内容被其他线程所改变(即其它线程通过add、remove、clear等方法,改变了modCount的值);这时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。fast-fail事件产生的条件...原创 2019-03-21 12:49:38 · 181 阅读 · 0 评论 -
Iterator与ListIterator比较
Iterator与ListIterator各自具有的方法比较:ListIterator: Iterator: 1.hasNext(); hasNext();//判断当前集合中是否存在元素(正向遍历)2.next(); next();//返回当前数据下一个3.hasPervious();//如果以逆向遍历列表,列表迭代器有多个元素,则返回 true4.per...原创 2019-03-20 22:53:40 · 161 阅读 · 0 评论 -
集合--迭代器Iterator
迭代器原创 2019-03-20 19:17:10 · 118 阅读 · 0 评论 -
ArrayList、LinkedList的异同点 ,各自优势(应用场景)
ArrayList、LinkedList的异同点 ,各自优势(应用场景):相同点:a. 继承关系:List接口下的实现类,具有List提供的所有方法;b. 有序性:数据都是插入有序;c. 重复性:集合中元素是可以重复的;d. null值:都可以存储null值;e. 安全性:都是非线程安全的集合;不同点:a. 数据结构:ArrayList底层是数组,LinkedList底层是...原创 2019-04-03 23:46:57 · 715 阅读 · 0 评论 -
集合--LinkedList
LinkedList原创 2019-03-20 23:32:36 · 563 阅读 · 0 评论 -
集合---ArrayList
ArrayList源码探究(JDK1.7)存在包: 集合存在于java.util包路径下 。继承关系:public class ArrayList&amp;amp;lt;E&amp;amp;gt; extends AbstractList&amp;amp;lt;E&amp;amp;gt; implements List&amp;amp;lt;E&amp;amp;gt;原创 2019-03-20 23:33:09 · 95 阅读 · 0 评论 -
集合---集合框架
集合框架 整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。Java 集合框架主要包括两种类型的容器。一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类...原创 2019-05-30 17:29:26 · 143 阅读 · 0 评论 -
三大排序算法(冒泡、选择、直接插入)
时间复杂度: 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 时间复杂度,在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的...原创 2019-08-15 16:38:42 · 821 阅读 · 0 评论 -
JVM(Java Virtual Machine)
JVM介绍区分JDK、JRE、JVMJDK,JRE,JVM:(1)JRE(JAVA Runtime Environment): java 运行环境java的平台,所有的java程序都在该平台下运行;(2)JDK(JAVA Development kit): java开发工具是程序开发者用来编译、调试java程序;jdk也是java程序,是需要在JRE上运行的,为了保证j...原创 2019-08-15 23:11:45 · 278 阅读 · 0 评论 -
JVM---垃圾回收机制
垃圾回收垃圾回收:JVM中如何将对象视为垃圾??1.那些内存需要回收?(对象是否可以被回收的两种经典算法: 引用计数法 和 可达性分析算法)2.什么时候回收? (堆的新生代、老年代、永久代的垃圾回收时机,MinorGC 和 FullGC)3.如何回收?(三种经典垃圾回收算法(标记清除算法、复制算法、标记整理算法)及分代收集算法 和 七种垃圾收集器)在JVM提供垃圾回收机制,将内存...原创 2019-08-15 23:20:03 · 181 阅读 · 0 评论 -
JVM---Minor GC和Major GC,对象从新生代到老年代的过程
GC关于JVM堆区的划分,请转至JVM垃圾回收机制 查看,感谢。1.垃圾回收机制过程2.什么时候发生minor GC和Full GC?3.为什么要进行minor GC?4.初始化的对象会被放在什么地方呢?对象的内存分配策略两个存储位置:本地线程缓存TLAB和堆新对象产生时首先检查本地线程是否开启了缓存,是则存储在TLAB,否则去堆中寻找位置。堆区:Eden、两个Su...原创 2019-09-28 11:42:23 · 1088 阅读 · 0 评论 -
浅谈JVM内存分配
JVM 内存分配 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。如下是具体java程序的执行过程: 首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执...原创 2018-10-25 20:09:50 · 239 阅读 · 0 评论 -
线程---关于死锁,进程和线程,多进程与多线程,synchronized与ReentrantLock的区别
怎么理解系统的进程和线程??进程:进程是系统划分资源(I/O资源[磁盘,文件],CPU资源,内存资源)的基本单位,进程本身不执行任何的指令;每一个进程的创建,都伴随着一个主线程的创建,线程才是负责执行指令的,也就是说Linux系统调用的基本执行单元,就是线程(main线程 线程 = 线程栈(线程函数 main函数)),自己创建的线程,也是需要匹配一个线程的入口函数的,就是run函数;线程:...原创 2019-09-20 00:47:58 · 241 阅读 · 0 评论