1.ReentrantLock使用介绍之前我们一直使用的Lock实例都用的是ReentrantLock,实际上,这是一种可重入锁。简单来说,就是对同一个线程可以进行多次的加锁操作。public class Demo11 { public static void main(String[] args) { Lock lock = n ......
284
0
0
2022-12-05
Lock与Condition接口前面两篇文章回顾了传统的synchronized关键字、JMM内存模型、volitile关键字,这篇文章开始我们正式介绍juc包。在jdk5之后,juc提供了Lock,与synchronized相似,都可以实现锁功能,但是需要手动获取锁和释放锁。不过它与synchronized又不太一样,synchronized关键字相当于是 ......
270
0
0
2022-12-05
我们在这篇文章中将介绍JMM模型,也就是java内存模型。注意,本文所提到的JMM模型与JVM内存模型属于不同层次的内容。JVM内存模型讲的是物理内存空间的分配,而JMM则强调对于JVM内存模型的抽象。1.java内存模型在计算机中,为了解决主内存的速度跟不上处理器速度的问题,我们给每个处理器添加一级或多级高速缓存(如下图)。但是,每个处理器上缓存的数据如何 ......
324
0
0
2022-12-05
1.为什么要有并发编程计算机的cpu与I/O的效率并不是完全一致的,CPU的处理速度快时,在进行I/O操作时,可能会导致CPU空闲的状态,为了最打程度的利用cpu的资源,开发人员创造了并发编程,进程通过轮换可以最大程度的利用cpu的资源,同时给用户进程在同步执行的错觉。但是进程之间并不会共享数据,同时上下文的切换也比较耗时,线程横空出世,同一个进程中的不同线 ......
319
0
0
2022-12-05
第三章 jdk并发包cas 比较交换它包含三个参数cas(v,e,n).v表示要更新的变量,e表示预期值,n表示下一个新值。仅当v==e时,才会将v的值设为n,如果v!=e,则说明其他线程做了更新,则当前线程说明都不做,执行下一次循环。最后cas返回当前v的真实值。如AtomicInteger的实现。juc并发包下的重入锁ReentrantLock较sync ......
390
0
0
2022-12-05
什么是缓存穿透我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,可能DB就挂掉了。什么是布隆过滤器布隆过滤器就是引入了k(k>1)个相互独立的哈希函数,保证在给定 ......
341
0
0
2022-12-05
第一章 java多线程技能进程是受操作系统管理的基本运行单元,它受系统进行资源分配和调度的一个独立单元。线程是进程中独立运行的子任务。main函数也是一个进程,并且有一个main线程。isAlive()方法判断当前的线程是否处于活动状态,也就是线程已经启动且尚未终止状态。停止线程:interrupt()方法停止线程,并不会真正停止线程,而是加一个停止标记。 ......
323
0
0
2022-12-05
目录前言一、数组查找(1)查找分类(2)顺序查找二、二维数组(1)快速入门 分析:(2)动态初始化1)使用方法12)使用方法23)使用方法3(3)静态初始化(4)使用细节三、应用案例(杨辉三角)规律: 总结前言       国庆第七天!数组、排序和查找复习完成。一、数组 ......
269
0
0
2022-12-03
目录前言一、数组反转(1)方法一(2)方法二二、数组扩容三、数组排序(冒泡法)运行目标:前言国庆第六天,继续努力复习。一、数组反转案例演示:(1)方法一把数组的元素内容反转。如 arr = {11,22,33,44,55,66} 反转为 arr = {66, 55,44,33,22,11}。public class ArrayReverse { publ ......
271
0
0
2022-12-03
目录前言一、一维数组(1)数组介绍(2)数组的使用1)动态初始化2)静态初始化3)数组的引用(3)数组的细节(4)应用案例二、数组赋值机制 三、数组拷贝总结前言国庆第五天,一维数组基本知识的复习。一、一维数组(1)数组介绍       数组可以进行存放多个同一类型的数据。数组是一 ......
255
0
0
2022-12-03
1. 需求分析本项目需要实现一个简易的博客系统,其中功能包括: 1)注册新用户 2)登陆已有用户 3)显示博客列表,包括文章的作者和文章的内容 4)点击文章就会跳转到文章详情 5)发布新博客 6)删除自己的博客2. 数据库设计设计当前代码中需要用到数据库的几张表,每张表上都有哪些字段,每个表之间有什么关联关系1)提取出需求中的“实体”有哪些 【用户】【文章】 ......
239
0
0
2022-11-29
使用技术Cookie、session、线程池、工厂模式、html实现代码首先需要在这里创建一下文件,在index.html中写入想从网页上返回的内容,这里是需要完成一个登录页面,因此html中的内容如下:<!DOCTYPE html> <html lang="en"> <head> <meta cha ......
254
0
0
2022-11-29
根据本专题的上一篇文章所说提到的HTTP响应和HTTP请求的格式(HTTP请求和响应格式文章链接)我们可以书写简单的HTTP Server程序,让服务器上的返回给客户端的返回结果返回至网站中简单版本代码如下:package day0314; import java.io.*; import java.net.ServerSocket; import ......
260
0
0
2022-11-29
网络编程需要依靠Socket API,在java标准库中有两种风格: 1.(UDP)DatagramSocket:面向数据报(发送接收数据,必须以一定的数据报为单位进行传输) 2.(TCP)ServerSocket:面向字节流UDP和TCP就是传输层的两个最重要的协议TCP服务器逻辑:1.初始化服务器 2.进入主循环 1)先去从内核中获取到一个TCP的连接 ......
268
0
0
2022-11-28
网络编程需要依靠Socket API,在java标准库中有两种风格: 1.(UDP)DatagramSocket:面向数据报(发送接收数据,必须以一定的数据报为单位进行传输) 2.(TCP)ServerSocket:面向字节流UDP和TCP就是传输层的两个最重要的协议UDP实现一个最简单的服务器(回显服务器 echo server),客户端给服务器发送一个字 ......
264
0
0
2022-11-28