![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 93
netxiaozhe
这个作者很懒,什么都没留下…
展开
-
六大设计原则
学习一个语言的语法,可能只需要一两天,然后就具备了搬砖的能力。但是如何做出可扩展、易维护、好管理的工程代码,还需要再补充一些知识和经验。本次先来看看设计原则。“好的功能设计,在迭代开发时,不需要改动大量的代码,就像火车加一节车厢,插线板支持拔插各种插头,签字笔更换笔芯”1.单一职责原则单一指责原则:规定一个类应该只有一个发生变化的原因(职责)。反例:public class AnimalServiceImpl { public void say(String animalType){.原创 2021-08-09 00:33:51 · 710 阅读 · 0 评论 -
浅谈Servlet
文章目录1.如何管理Servlet2.Servlet 接口3.Servlet 容器3.1处理过程3.2 注册Servlet3.3 扩展4.servlet容器与spring容器习惯了在各类 Web 框架上进行开发,和而 Servlet的关系就是,每天都在接触,又不是很熟。 今天就来扒一扒servlet的相关内容。在之前的一篇讲JSP的文章中,有提到过jsp的本质就是Servlet 。而Servlet(全称为 Server Applet),是在服务器上运行的Java程序,本质上是一段java程序,没有原创 2021-07-04 21:46:44 · 117 阅读 · 0 评论 -
java并发编程:Random,ThreadLocalRandom
假期最后一天,来看一下随机数生成,在高并发场景下的一些情况。ThreadLocalRandom类是JDK7在JUC包下新增的类。主要是为了弥补Random类在多线程之下的缺陷。文章目录1 并发角度看Random类1.1 random类1.2 random中的并发考虑1.3 缺陷2 ThreadLocalRandom2.1 实现2.2 current方法2.3 nextInt方法2.4 UNSAFE1 并发角度看Random类1.1 random类Java.util.Random是使用比较广泛的随.原创 2021-02-17 20:29:29 · 319 阅读 · 0 评论 -
java并发编程:CAS、Unsafe类、重排序、伪共享
文章目录1 Q:什么是悲观锁、乐观锁2 Q:那CAS机制是什么3 Q:CAS是完美的吗(ABA问题)4 Q:提到的Unsafe类是什么5 Q:指令重排序对并发有什么影响6 Q:什么是伪共享7 Q: 如何避免伪共享1 Q:什么是悲观锁、乐观锁悲观锁:指在更新数据时,数据被外界修改,持保守态度。认为在更新数据的时候,大概率会有其他线程争抢共享资源。此时为了避免出错,第一个拿到资源的线程会对资源进行加排它锁, 其他没争夺到资源的线程只能进入阻塞队列 。之前上面提到的synchronized就是悲观锁的一种实现原创 2021-02-13 20:57:12 · 158 阅读 · 2 评论 -
java并发编程:并发性、内存可见性、原子性
QA的形式–继续基础篇1 Q:什么是并发编程A: 首先,提到并发,不得不提一下并行的概念。并发指:同一个时间段内多个任务同时在执行。并行指:单位时间内多个任务同时执行。二者的区别主要在于,并发的多个任务在某个单位时间,不一定同时在执行。在单核CPU的情况下,只能同时执行一个任务,此时多个任务的执行是并发的,一个任务的时间片使用完,让出CPU给其他任务。在多核CPU配置下,每个核心可以单独跑一个任务,多个任务可以再同一时间同时执行,实现并行。但是因为实际场景中,线程数往往大于核心的数量。更多的.原创 2021-01-24 19:57:33 · 74 阅读 · 0 评论 -
java并发编程:ThreadLocal、InheritableThreadLocal、守护线程和用户线程
上次梳理了线程的创建和状态切换,本次将继续基础篇的整理,涉及JAVA的两类线程,以及ThreadLocal的一些知识、源码等。1 ThreadLocal1.1 概述ThreadLocal是JDK包提供的,在java.lang包下,提供了线程本地变量。它的作用是,当创建了一个ThreadLocal变量,每个访问这个变量的线程,都会有一个这个变量的本地副本,当多个线程操作这个变量时,实际操作的是自己本地内存的变量,互不干扰。如此一来,它的使用场景主要针对多线程,变量不共享的情况:在进行对象跨层.原创 2021-01-17 21:16:47 · 138 阅读 · 0 评论 -
java并发编程:基础篇
2021年第一个安排,搞一波java并发编程的知识。大概会分几篇来展开,本次首先梳理一下线程的基础知识。1 什么是线程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。程序计数器:是一个.原创 2021-01-03 19:17:11 · 89 阅读 · 0 评论 -
java8新特性
java8是java的一个重要的版本,引入了一些新的特性,在实践中,很多老项目都把java8当做一个升级的台阶。对这些新特性的学习,可以很好的使用java8带来的便利,而不是雨我无瓜的版本升级。近期听了身边前辈的分享,从一个特别的角度进行了分析,在这里进行总结学习,本文主要涉及Lambda表达式、方法引用、Stream、Optional类、日期类五部分。其实每一个部分的使用都很有讲究,但是具体的实现,可以查看文档性质的网站,这里换个角度进行梳理。1. lambda表达式Lambda 允许把函数.原创 2020-11-29 01:12:52 · 298 阅读 · 0 评论 -
源码浅析:LinkedHashMap、HashTable
上周对HashMap的源码进行了简单的分析,Map还有一起其他的实现类,本文对其他主要几个类的实现进行简单的分析,主要包括有LinkedHashMap,HashTable。本文的两个结构与HashMap有较大的关联,关于HashMap可以参考上一篇文章:HashMap源码浅析1 LinkedHashMapLinkedHashMap继承了HashMap,同时也实现了Map接口。在使用迭代器遍历的时候,可以按照put的顺序,进行遍历。1.1 底层实现LinkedHashMap听名字可以知道是 H.原创 2020-11-15 19:26:12 · 200 阅读 · 0 评论 -
java基础笔记(一)
前一段时间有计划重看一下java基础的内容,只是各种事不断的打断,到现在过了一部分内容。刚开始有些基础的东西,把之前没有注意到的地方,进行一个简单的记录;有些地方,还可以进一步深入,这里只做浅层的总览了,之后再针对性的深究,写点demo。1.基本数据类型的默认值: public class DefaultValue { char a; boolean b; byte c; short d; int e; long f; float g; d.原创 2020-11-11 01:07:41 · 117 阅读 · 0 评论 -
HashMap源码浅析
某次恰饭的时候,问头儿,他进来的时候,被面试了哪些内容。从java基础,到框架原理顺着一大堆东西就说出来了。一个HashMap,也可以问出花来。本次就以HashMap开个头,来探一探源码的实现。我们都知道Map是一种由多组键值对集合在一起的结构,其中key不可以重复,value值可以。HashMap作为Map接口的常用实现,在java8之前底层实现是数组+链表,在java8之后使用数组+链表+红黑树来实现。本文主要以java8为主进行展开,主要讲解了底层结构、put、get、扩容的相关实现机制和源码.原创 2020-11-09 00:31:23 · 221 阅读 · 1 评论