自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Tomcat和第一个servlet程序

这个url路径第一级路径hello_servlet , 这个目录就代表一个webapp,网站 第二级路径就是/hello刚才在浏览器地址栏中输入url之后,浏览器就构造了一个对应的HTTP GET请求,发给了tomcattomact就根据第一级路径,确定了具体的webapp,根据第二级路径,确定了是调用哪个类,再通过GET/POST方法确定调用HelloServlet的哪个方法(doGet,doPost)此时Tomcat就执行对应的代码,完成对应的工作。哪些是普通的不需要拉着跑的目录?

2023-07-22 00:00:00 53

原创 网络原理初始

网络通信是一个比较复杂的事情,实现这里的功能也会特别复杂,如果这个协议,太复杂了,学习成本,使用成本,理解成本,维护成本都会非常高,因此,实际采取的做法,是针对这个复杂的大协议,拆分若干个相对简单的协议,每个协议负责负责一部分功能,此时就会发现,某些协议,起到的功能和作用是类似的,就针对这些小的协议,再进行“分类”/分层,这就好比代码拆分出了很多类,有些类,功能差不多,就可以放到同一个包里。发送方qq号,发送时间,接收方qq号,消息内容,程序要调用操作系统的api,把这个应用层数据,交给传输层。

2023-04-02 15:32:05 91

原创 文件IO操作

狭义的文件:指的是你的硬盘上文件和目录(文件夹)广义的文件:泛指计算机中的很多的软硬件资源,操作系统中,把很多的硬件设备和软件资源抽象成了文件,按照文件的方式统一管理之前存储数据,主要是靠变量,变量是在内存中,现在的文件是在硬盘上的,每个文件在硬盘上都有一个具体的位置。d:盘符,c,d,e这样 的盘符是通过“硬盘分区”来的,每个盘符可以是一个单独的硬盘,也可以是若干个盘符对应一个硬盘。

2023-03-22 21:50:28 85

原创 JUC,原子类,信号量Semaphore,多线程使用哈希表

HashMap/hashTable扩容,创建一个更大的数组空间,把旧的数组上的链表上的每个元素搬运到新的数组上,这个扩容操作会在某次put的时候进行触发,当负载因子达到一定值时候,ConcurrentHashMap中,扩容采取的是每次搬运一部分元素的方式,创建新的数组,旧的数组也保留,每次put操作,都往新数组上添加,同时进行一部分搬运,每次get的时候,则旧数组和新数组都查询,每次remove的时候,只是元素删了就行了,经过多次搬运之后,所有的旧数组都搬运好了,最终再释放旧数组。

2023-03-11 11:21:57 73

原创 CAS和Synchronized原理

把旧的value用寄存器保存起来,这里的oldvalue可以理解为寄存器中的值 ,相当于是先把内存中的值读到寄存器中去了,这里CAS()正常情况下,oldValue应该和value是一样的,然后这里就会产生CAS,把oldValue+1写到value中,但是也有可能会有执行完读取value到寄存器之后,线程发生切换了,另外一个线程也修改了value的值,此时这个线程回来之后,再进行CAS判定,就认为不相等了,在①和②的代码之间,可能会发生线程调度。原子类的实现,每次修改之前,再确认一下这个值是否符合要求。

2023-02-14 23:30:09 82

原创 常见锁策略

乐观锁:预测锁竞争不是很激烈(做的工作相对更少),悲观锁:预测锁竞争会很激烈(做的工作可能就会更多一点),出发点不同,背后的工作是截然不同的,疫情放开,小明认为应该屯粮屯药,小红认为没啥事,该来的总会来,小红处于一个对这个事情乐观的状态,小明处于对这个事悲观的状态,悲观和乐观的唯一区分,主要就是看预测锁竞争激烈程度的结论,如果你接下来的工作都是围绕着锁竞争不激烈展开的,那就是一个乐观锁,如果围绕激烈展开的,那么就是悲观锁。就是提供了三种操作,针对读加锁,针对写加锁,解锁,多线程针对同一个变量并发读。

2023-02-14 20:51:29 46

原创 阻塞队列,消息队列

队列是一个先进先出的数据结构,阻塞队列是带有特殊功能的队列1.如果队列为空,执行出队列操作,就会阻塞,阻塞到另一个线程往队列里添加元素(队列不空)为止。2.如果队列满了,执行入队列操作,也会阻塞,阻塞到另一个线程从队列取走元素位置(队列不满)

2023-02-11 14:22:52 621

原创 单例模式(饿汉和懒汉)

单例模式是设计模式中的一种,设计模式就好比于菜谱,大厨把一些常见的做菜过程写成菜谱,大家照着做,自然做出来的味道也不会差到哪里去,而这个菜谱就成为设计模式。单例模式 就指的是单个实例(对象),在有些场景中,有的特定的类只能创建出一个实例,不应该创建出多个实例,但是像这样的需求,不依赖单例模式也可以只靠君子约定实现,但是有了单例模式以后,此时就只能创建一个实例,一个男的在古代可以娶多个老婆,放在古代,只娶一个是君子协议,放在现代只娶一个是法律,就只能娶一个。

2023-02-10 19:27:34 54

原创 MySQL

数据库是“一类软件”,这样的软件能够针对数据进行管理(增删改查),是一个“基于数据结构”实现出来的软件。关系型数据库例如MySQL,Oracle,SQL Server,SQLite,具体组织数据的格式/结构。

2023-01-27 21:22:57 55

原创 volatile关键字,wait和notify

线程最大的问题 是抢占式执行,随机调度,使用join,则必须要t1彻底执行完,t2才能运行,如果是希望t1先干50%的活,就让t2开始行动,join无能为力,使用sleep,指定一个休眠时间,但是t1执行的这些活,到底花了多少时间,不好估计,而wait和notify更好的能控制线程之间的执行顺序,例如有t1和t2两线程,希望t1先干活,干的差不多了,再让t2来干,就可以让t2先wait 阻塞主动放弃CPU 等t1干的差不多了,再通过notify通知t2,把t2唤醒,让t2接着干。

2023-01-20 23:03:12 103

原创 什么是死锁?

我们给叉子(锁)编号 规定哲学家先拿自己左右手两边编号小的,这样的话会发现最上面的哲学家左右手两边最小的是1,但是1已经被别人拿走了,那么这时候他就会阻塞等待,这时候他左边的哲学家就可以拿起两把叉子去吃面了,他吃完以后就放下④号和⑤号筷子,这时候他左边的哲学家就可以开始拿着③号和④号筷子吃饭,就这么下去,所有的哲学家都会吃到面。4.循环等待:线程1尝试获取锁A和锁B,线程2尝试获取锁B和锁A,线程1在获取B的时候等待线程2释放B,同时线程2在获取A的时候等待线程1释放A。

2023-01-13 19:45:20 59

原创 线程安全问题的原因和解决方案

如果没有多线程,此时程序代码执行顺序就是固定的只有那么一条路,代码顺序是固定的,那么程序结果就是固定的,那么线程肯定就是安全的但是如果有了多线程,此时抢占执行下,代码执行顺序,就从一种情况变成了无数种情况 所以我们就需要保证这无数种线程调度顺序的情况下,代码的执行顺序结果都是正确的,才会线程安全此时 我们可以写一个这样的代码 使用两个线程对count进行++操作 ,根据我们的推想运行结果应该为10 0000 但是实际运行结果却是不唯一的 此时的代码就是线程不安全的++操作本质上可以分为三步。

2023-01-10 16:39:39 108

原创 Java 线程的几种状态

状态是针对当前的线程调度的情况来描述的,咱们现在认为,线程是调度的基本单位了,状态更应该是线程的属性(后面再谈到状态,都是考虑线程的状态了)

2022-12-27 19:13:14 123 1

原创 Thread类的基本用法

如果光是创建一个t变量,不调用start 那么系统内核里就没有线程 它知识把任务梳理好了并没有开始做任务 调用start才是真正的开始做任务 isAlive就是在判断 当前这个系统里面这个线程是不是真的有了。其他的jvm自带的线程都是后台的 也可以手动使用setDaemon设置成后台线程。线程是一个随机调度的过程 等待线程,做的事情,就是在控制两个线程的顺序。后台线程不会阻止线程结束 后台线程没有做完 进程是可以结束的。前台线程没有做完线程是结束不了的 前台线程阻止线程结束。而t.jion会发生阻塞。

2022-12-24 20:35:42 158 2

原创 进程和线程

线程并发编程进程和线程的区别1.进程调度2.系统开销3.并发执行4.资源分配进程和线程的关系安全问题1. 线程模型2.进程模型 进程和线程属于 一对多关系,一个进程可以包含多个线程(不能没有) 只有第一个线程启动的时候 开销比较大 后续线程就容易了 一个线程也是对应一个PCB 一个进程里面可能是对应一个PCB也可能是对应多个了PCB里的状态,上下文,优先级,记账信息,都是每个线程有自己的,各自记录各自的但是同一个进程里的PCB之

2022-12-19 21:35:44 155 3

原创 计算机工作原理【操作系统和进程】

操作系统是一个搞管理的软件,是软件硬件用户之间交互的媒介,目前常见的操作系统有Windows系列,Linux系列 (适合开发和部署 用于1.服务器2.嵌入式设备(冰箱 洗衣机...)3.移动设备),Mac系列 (苹果电脑用的系统),Android系列(本质上也是Linux),IOS系列。进程

2022-12-16 21:58:21 197 1

原创 [c语言] if语句和switch 语句(分支语句)

前言 一、什么是语句? 二、分支语句 1.if语句 2.switch语句 总结前言关于自己的一些笔记分享在这,方便自己以后查阅,也希望能帮助到大家,请大家多多指导!一、什么是语句?由一个分号隔开的就是一条语句。单独一个分号的叫做空语句。二、分支语句1.if语句双分支:if(condition) 语句1;else(condition) 语句2;​if(condition){ 语句1; 语句2;}...

2022-02-27 15:12:42 643

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除