【多线程经典案例】- 单例/阻塞队列/定时器/线程池

单例模式阻塞队列阻塞队列是一种特殊的队列,除了具有队列的性质外,还具有阻塞的功能。例如下面的典型案例 – 生产者消费者模型当队列满时,继续入队列就会阻塞,直到有其他线程从队列中取走元素当队列空时,继续出队列也会阻塞,直到有其他线程往队列中插入元素阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力比如在 "秒杀" 场景下, 服务器同一时刻可能会收到大量的支付请求. 如果直接处理这些支付请求,服务器可能扛不住(每个支付请求的处理都需要比较复杂的流程). 这个时候就可以把这些请求都放
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

【面试八股文】- 多线程进阶

目录一、常见锁策略1.读写锁 VS 普通的互斥锁2.悲观锁 VS 乐观锁3.轻量级锁 VS 重量级锁4.挂起等待锁 VS 自旋锁5.公平锁 VS 非公平锁一、常见锁策略1.读写锁 VS 普通的互斥锁普通的互斥锁: 只要两个线程针对同一个对象加锁,就会产生互斥读写锁:加读锁: 如果代码只进行读操作,就加读锁加写锁: 如果代码进行了写操作,就加写锁将读写锁分开,那么 读锁和读锁之间是不互斥的 ,只有读锁和写锁,写锁和写锁之间才互斥。2.悲观锁 VS 乐观锁悲观锁:预期锁冲突的概
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

IP协议详细图解

目录认识IP协议报头地址管理路由选择IP协议是位于网络层的重要协议,其主要有两大功能地址管理路由选择认识IP协议报头8位服务类型(TOS)只有四位有效(同一时刻只能选一个状态,为规划最优路径的标准提供参考),分别为最小延时最大吞吐量最高可靠性最小成本IP协议的分包组包过程:16位标识:区分是否为同一个包13位片偏移:来自同一个数据不同包的先后顺序3位标志位:是否为最后一个数据包了8位生存时间当一个IP数据报被发出时,会有一个初始的TTL,每经过一个
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

给我一首本草纲目的时间,带你了解线程安全和死锁

目录本节要点什么是线程安全线程不安全实例线程不安全原因`synchronized`关键字死锁死锁类型造成死锁的必要条件`synchronized`和`volatile`区别wait 和notify方法本节要点了解线程安全问题的概念为啥会导致线程安全问题线程安全问题如何避免什么是线程安全线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。(百度百科)我们上
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

多线程四大经典案例及java多线程的实现

目录本节要点单例模式饿汉模式懒汉模式阻塞队列生产者消费者模型标准库中的就绪队列阻塞队列实现定时器定时器实现线程池实现线程池案例总结本节要点了解一些线程安全的案例学习线程安全的设计模型掌握单例模式,阻塞队列,生产在消费者模型单例模式我们知道多线程编程,因为线程的随机调度会出现很多线程安全问题! 而我们的java有些大佬针对一些多线程安全问题的应用场景,设计了一些对应的解决方法和案例,就是解决这些问题的一些套路,被称为设计模式,供我们学习和使用!单例模式是校招最常考的一个设计模式之一!!!
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

java多线程常见锁策略CAS机制

目录本节要点常见锁策略synchronized使用的锁策略CASCAS使用本节要点了解常见锁策略了解synchronized使用的锁策略理解CAS实现逻辑了解CAS出现的ABA问题,并解决synchronized锁的原理常见锁策略我们已经知道锁在我们的并发编程十分重要.那我们就需要了解,这些锁实现的策略!都有那些策略,便于我们更加深刻的理解锁!下面介绍的几组锁策略,每一组里面都是相异的,每组策略之间又有相互关联的!乐观锁 vs 悲观锁这是程序员处理锁冲突的态度(原因),通过自己
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

java文件操作和IO流入门级教程

传送门点击跳转本章目标认识文件文件分类目录结构本章目标认识文件学习文件管理学习java中的文件操作熟悉java面向字节流/字符流IO操作认识文件什么是文件呢?我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般.计算机中的文件就和我们现实中的文件相似!我们一般通过硬盘存储文件!所以我们硬盘下存储了好多文件
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

java结构化处理利器_开源库SPL

文章目录需要什么样的能力?1 集合运算能力2 Lambda语法3 在 Lambda 语法中直接引用字段4 动态数据结构5 解释型语言引入 SPL丰富的集合运算函数简洁的Lambda语法动态数据结构直接执行SQL更多语言优势离散性及其支挂下的更彻底的集合化更方便的函数语法扩展的Lambda语法无缝集成、低耦合、热切换SPL资料现代Java应用架构越来越强调数据存储和处理分离,以获得更好的可维护性、可扩展性以及可移植性,比如火热的微服务就是一种典型。这种架构通常要求业务逻辑要在Java程序中实现,而不是像传统
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

javaee网络原理初始

目录本章要点网络发展史通信基础认识协议协议分层网络分层模型`TCP/IP`五层(四层)网络模型封装和分用封装分用本章要点学习网络编程的基本原理熟悉网络协议分层掌握网络编程的协议网络发展史独立模式计算机之间的数据相互独立!计算机之间不能进行数据分享和连接网络互联随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。网络互连: 将多台计算机连接在一起,完成数据共享。数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

端午节学习<网络编程套接字socket>贼cool好吧

Socket套接字,是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程!
分类: 企业开发 发布时间: 06-20 23:29 阅读次数: 0

bug郭的创作纪念日

因为我是计算机专业嘛,所以大一的时候当时在学C语言吧,然后有些题目不会,就百度,然后百度的答案是在,然后我就下载了 我经常在上面查答案,看大佬的博客,但是给我的感觉就是很,但是就在想我啥时候也能想他们一样分享自己的东西在上面,然后有人看!后面我在学习编程的时候遇到了很多问题都会通过这个平台解决!在我不断的学习编程知识的时候发现一个大的问题,就是学完就忘了,光看视频,或者看书过不了多久就忘得很干净!就是说一直输入知识,而没有去及时把知识消化,通过自己的方式输出,就让知识学的更加扎实,然后我就在这里写自己的
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

学好Linux基础指令不再删库跑路

删库一时爽,后果很严重!近日,记者自北京裁判文书网上获悉,百度某“95后”校招员工金某某在任职期间,私自建立隧道进入数据库“删表”。最终因犯破坏计算机信息系统罪,被判处有期徒刑九个月。学好Linux基础指令不再删库!...
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

计算机操作系统期末复习大题详解速成不挂课

常考的五大题型例题:解题步骤:要点:先进先出!看那个页面最先进就替换!每次替换左边出现次数最多的页面!看谁长,谁长替换谁!缺页次数为10 缺页率:5/6要点:最佳替换算法,看已经在物理页中的页面在右边最后使用到的先替换!淘汰的页面将是未来长时间内不再被访问的页面!就比如:开始1234 然后5要替换,后面有 14123显然 3最后使用!所以先替换3!缺页次数为6 缺页率:1/2要点:最近最少使用算法!最近未使用!看需要添加页面的左边,页面走向哪个页面理该页面最远就替换该页面!!!直接看页面走向就可以!这里要和
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

网络编程原理进阶___TCP/IP(javaee)

我们的进阶内容比网络编程初始比较深入!我们通过这一章节的学习可以掌握网络编程原理,对网络编程有了初步认识!我们这里的学习也从五层网络协议逐层进行学习!我们先来复习一下这五层协议的功能我们重点掌握 应用层和传输层协议!像其他3层协议身为搬砖程序员不需要了解,这是操作系统内核,除非是系统开发工程师,驱动开发工程师!我们知道应用层协议得我们程序员自己编写!突然就一整个头大了,这咋编写呀,不要慌问题不大!我们只需要明确需求,根据需求确定需要传输的信息,还有传输信息的格式!我们根据传输的信息和传输的格式就
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

HTTP协议请求(HTTP协议2)

我们上篇博客已经初步了解了协议的大致内容,已经明白了协议分请求和响应两部分,而且这两个部分的协议报具有不同到格式,需要我们掌握协议格式里的每个字段代表的信息,能够通过抓包工具抓取协议报从而真正理解学习应用层协议!而我们本章主要详细了解协议的请求格式,掌握里面的每个字段对应的信息,从而可以读懂一个请求,最终到达可以直接编写一个请求的效果!我们知道请求头中的内容采用键值对的形式存储!所以有一些值具有具体的含义,我们来学习一下常见值的的含义!我们抓取一个请求报进行辅助学习!可以看到这里的键值对格式:键和
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

滑动窗口__最长不含重复字符的子符串_和为S的连续正整数序列(剑指offer)

滑动窗口是指在数组、字符串、链表等线性结构上的一段,类似一个窗口,而这个窗口可以依次在上述线性结构上从头到尾滑动,且窗口的首尾可以收缩。我们在处理滑动窗口的时候,常用双指针来解决,左指针维护窗口左界,右指针维护窗口右界,二者同方向不同速率移动维持窗口。...
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

HTTP响应状态码详解(HTTP3)

我们的响应格式,之前已经学习过了!我们知道每次响应都会在第一行状态行中返回响应的信息!而最重要的信息就是状态码,不同的状态码表示不同的响应状态,对于请求的结果是否失败或者成功或者出现了什么都可以通过这个状态码来体现!状态码一般由3位十进制数据构成!不同数字开头的状态码有不同的含义!从1开头到5开头分别代表不同类别的状态码!上面就是状态码的分类及其每个分类含义!我们主要介绍几个常见的状态码信息!状态码表示浏览器获取到了响应结果,并且一切顺利!如果我们我们的网络啥的没有问题基本上抓取到都是这个状态
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

3种方式构造HTTP请求详解(HTTP4)

我们通过对请求协议报头格式的学习知道了,我们可以通过3种基本方式去构造请求!而请求是在客户端构造的也就是属于前端的工作!所以这3种构造请求的方式,大部分是通过前端代码来实现的,不过我们也可以通过代码基于来实现!HTML中的表单就可以构造请求!我们通过下面代码进行学习!所以我们通过表单标签就可以编写一个请求!这里的属性保存的就是查询字符串中键值对中的!我们在输入框中输入的数据就对应了该属性下的值我们提交后就会在查询字符串中保存!我们向服务器提交表单后,就构造了一个方法的请求!我们发现我们已经跳转到
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

C++map和set的介绍及使用

C++map和set的介绍及使用零、前言一、关联式容器二、键值对三、C++中的set1、set的介绍2、set的使用四、C++中的multiset五、C++中的map1、map的介绍2、map的使用六、C++中的multimap零、前言本章主要讲解C++中的关联式容器map和set的介绍及其使用一、关联式容器容器分类:序列式容器:初阶阶段中学习过STL中的部分容器,如:vector、list、deque等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0

C++AVL树

AVL树零、前言一、AVL树的概念二、AVL树结点定义三、AVL树的插入四、AVL树的旋转1、左单旋2、右单旋3、左右双旋4、右左双旋5、总结五、AVL树的验证六、AVL树的性能零、前言本章主要讲解map和set的底层结构平衡二叉搜索树的一种-AVL树的特性及其实现一、AVL树的概念引入:map/multimap/set/multiset其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退
分类: 企业开发 发布时间: 06-20 23:28 阅读次数: 0