- 博客(7)
- 收藏
- 关注
原创 异或运算的应用:不进行第三方变量创建交换两个变量的值
a=甲^乙^甲=乙^0=乙;因为特性3所以就像加法交换律一样,这样a就等于乙了。b=甲^乙^乙=甲^0=甲;这样原本等于乙的b变成甲了。3.一组数无论互相做何种顺序的异或运算结果都一样。设a=13,b=17.进行这两个值的交换,不用第三方变量创建。那么带入式子就得到以下结果。通常情况下,我们需要设一个变量temp。这是为什么呢,就要说到异或运算的特性了。以下就是三步方法就可以完成任务。利用这三个特性就能完成值的互换。巧用异或运算也可以实现。
2022-08-24 16:16:01
91
1
原创 什么是三级缓存
上图为我自制的三级缓存原理图,L1,L2,L3为三个级别的缓存,主内存中向多核CPU传输数据,利用的是缓存行,缓存行一般占64字节,在传输数据的过程中,缓存行每次经过一级缓存都会在其中保留一份数据,以便于下次访问,缓存是内存与CPU的寄存点,便于内存取数据与CPU读指令。实际上多核CPU核与核之间需要要付出一定代价来保证内存一致性,三级缓存正好满足了这一需求。
2022-08-23 09:10:01
1032
原创 计算机的组成
以下为根据我的理解自制的当双击一个软件计算机内部加载的运行过程。其中绿色代表QQ这个软件所经历的流程。4.CPU读取来自内存的指令。1.双击在磁盘当中的QQ。2.QQ进程被加载进内存。5.CPU向内存中写数据。
2022-08-19 13:54:33
94
原创 线程池的概念
maximumPoolSize(最大线程数):当任务队列排满时有临时的线程参与加上corePoolSize。threadPoolExecutor(拒绝策略):线程过多时把多余的线程存起来(用持久化等方法)defaultThreadFactory(线程工厂):线程管理的一个方法,例如给线程指定名字。keepAliveTime(生存时间):当超过指定时间临时线程持续空闲,将会被销毁。corePoolSize(核心线程数):持续存在的线程。为防止线程的重复创建,一次创建多个线程来方便使用。...
2022-08-12 13:44:04
141
原创 自旋锁是什么
当一个线程调用synchronized方法时,假使给一个对象上锁,就比如T t =new T()这个对象,它的object header 会发生改变,那么另一个线程再来访问调用它的时候就会来查验这个对象的object header,发现这个对象已经被其他人上了锁这时其他线程就会进入等待,等着object header变回原来的样子,也就是未被上锁时的状态,其余的线程也会重复这个过程。严格来讲乐观锁涉及不到锁可能也就算不上锁了,但是我们也不乏对其的应用,也就是我要讲的自旋锁,自旋锁其实是乐观锁的一种。...
2022-08-06 23:32:46
80
原创 小白的Linux配置
有道是:胜人者有力,自胜者强,强行者有志这一天,CentOS虚拟机又连不上网络了前一天刚刚装好,那时试了一下基本功能切换root权限,十几个基本的常用命令操作大多也都试了一遍,我还curl了几个常用网站,都能显示出html的代码段(在此之前花了好大功夫不知道怎么的就连不上网络,看了好几遍教学视频,就是忘了一个比较随意的重要步骤,应该点击nat模式才能连上网,我还傻到去从下载镜像开始又安装了一遍)可是今天又不能联网了简单的估摸了一遍昨天犯的错误与曾经视频中没注意到的细节,我都毫无差异的照做了,
2022-07-21 18:12:04
255
原创 利用中序数组和先序数组重建一棵树
当给出两组数组,一个是原树的先序数组,另一个是中序数组,让我们重建一棵树,该如何去实现呢我们需要找到两个数组一定相同的且是所在该数组最小的根节点,先序打印出的树,第一个出现的数一定为根节点,这样我们就找出先序数组的根节点了想要找到中序数组的根节点其实也不难,拿着上一个找出的根节点到这个数组中一个个遍历就好了,我们把先序找出的根节点称为head,而中序找出的根节点称为find我们来假设一个例子,假如那棵树有三个以上的节点,我们会发现先序数组的左子树肯定要比右子树先打印出来。而同样的中序数组的左子树
2022-07-21 18:10:15
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人