- 博客(87)
- 收藏
- 关注

原创 B树和B+树的区别
AVL树的LL、RR、LR、RL调整方式 , 2-3树,2-3-4树的结点类型介绍,B树的常见操作(查找,插入,结点分裂,删除),B+树在生产环境下为何高效,B*树的高扇出性。
2022-11-03 21:31:00
684

原创 JS闭包(图解)
代码function foo(){ var name="foo" var age=18 function bar(){ console.log(name) console.log(age) } return bar}var fn=foo()fn()分析//第13行代码执行 , 生成AO对象。//接下来执行函数中的代码://函数执行上下文会被销毁;但是AO1对象不会被销毁。//0xb00对象不会被销毁 , 因为
2021-09-17 08:24:53
395
1
原创 光线追踪算法
大致了解了一下,光线追踪算法的前世今生,感觉数学真的是重中之中,值得我们花大力气研究。//利用光路可逆直接从像素点出发( 这样可以节约算力 )。//通常会让每个像素发出多条光线,这样可以让效果更好。//模拟蜡烛,以及人的皮肤;//写成离散的代数形式,有无穷项。//模拟水面反射的菲涅尔公式;
2023-04-03 20:03:05
413
1
原创 分布式项目-规格参数(13)
/商品维护模块;其中值得一提的是。商品的介绍全部都做成图片的形式,这样有利于去维护。商品模块中的页面在created中一开始要对会员等级进行查询操作,访问MemberController中的list接口。//维护规格参数信息://维护完基本信息之后的《商品发布》页面。
2023-02-26 20:13:48
908
原创 分布式项目-品牌管理(7、8、9)
(1):创建自定义的校验注解;/*** 自定义的校验注解String message() default "提交的数据必须在数据列表中";Class
2023-02-13 19:18:06
372
原创 分布式项目-品牌管理(5、6)
logo图片需要保存到服务器上,数据库中只是存储了图片的地址。或者使用阿里云对象存储。我们在学习的时候,没有那么高的访问频率 , 所以可以选择《低频访问存储》;任何数据的删除都不要使用物理上的删除,应当使用逻辑上的删除!《显示状态控制》——可以通过《el-swtich》控件来完成。
2023-02-11 20:09:04
422
原创 分布式项目-三级分类管理(4)
元素在完成拖拽后,数据库中的相关层级、各个元素的排列顺序并没有进行保存,需要连接后端保存到数据库中。为了防止拖拽的误操作,我们需要设置一个按钮来控制拖拽功能的开启与关闭 (使用el-switch组件来完成这个功能);【减少前后端频繁交互】:拖一次就更新一次的话是没有必要的 ,可以拖完之后一次性和后端交互。统一把数据提交到后端。【批量删除】:之前只在叶子节点上设置了删除按钮 , 叶子节点往上更高的节点没有设置《删除》按钮 ,在批量删除之前需要进行勾选,一次性删除选中的节点;
2023-02-10 19:31:33
135
原创 分布式项目-三级分类管理(3)
更新时,需要在弹出的窗口完成数据的回写 , 更新 / 删除 后,各级目录仍然保持打开的状态。类别之间的关系改变使用拖拽属性draggable 来完成。在拖拽过程中还出现的一个问题是,多级的子树移到了一个节点上,造成树的高度发生变化,原先只定义了树的高度是三级 , 所以我们要控制可拖拽的状态,使用allow-drag属性来完成当前节点能否拖拽 , allow-drop是判断目标节点能否放进去;
2023-02-09 21:39:57
111
原创 分布式项目(1)菜单管理
注意!!!————新增的是《目录》。//然后在商品系统下 , 可以添加类别管理的菜单。新增的是《菜单》。加完之后的界面:在数据库中对应的表结构:对应的前端文件地址:【动态获取后台服务的数据】://人人平台原生的前端路由文件中的地址是写死的,只对应了一个后台服务,而现在我们有很多个服务,所以现在我们应该让其指向网关服务。
2023-02-07 22:47:13
246
原创 卡在default: Downloading: https://vagrantcloud.com/centos/boxes/7/不动
Vagrant up 启动失败
2023-02-04 18:18:36
158
原创 ‘node‘ 不是内部或外部命令,也不是可运行的程序
一年之前了解过大前端的发展,学习了vue3最新的API,后续工作中用的都是vue2,所以对前端技术没有更多研究,即使是这样最近还是在前端上翻了车,在《百度一下》中搜索了“nodejs官网”,下了一个10.X的版本,结果发现sass依赖最低支持版本也得是14,就下载了NVM,安装过程中提示是否对现存的版本进行控制,我选择了是,结果NVM只能控制他自己包之下的,虽然自动建了软链接,但是node命令失效了,无奈之下我只好删除了原先安装的版本,终遂解决了这个问题。
2023-02-03 06:41:33
186
原创 vagrant ssh卡住
//页面会在private key 这一行卡很久,然后就会出现timeout的提示:使用ssh指令会没有反应:虚拟机界面如下:安装最新版本的vagrant 和 vagrantBox , 值得一提的是vagrant当时是下载了I686的2.3.4版本。
2023-01-17 11:53:59
912
原创 多线程与高并发(五)
1):普通属性原子操作;2):比反射快,直接操纵二进制码;当传入的一参对象被干掉的时候 ,你会收到一个通知( 通知的方式是往队列里扔进一个值 )。//如果你想得到通知,你就不断去检测这个队列里面有没有值。(如果有值说明某个虚引用被回收了)//容器图一定要背过!!!
2023-01-13 12:17:36
404
原创 多线程与高并发(四)
volatileAtomicXXX各种JUC同步锁PhaserSemaphoreExchanger//JUC的锁中除了最后的LockSupport之外,其它的都是利用AQS来实现的。
2023-01-07 10:18:34
704
原创 多线程与高并发(二)
线程的概念 、 启动方式 、常用方法。//不能用String常量 、Integer 、Long【线程同步】:锁的是对象不是代码;锁this;锁XXX.class;锁定方法和非锁定方法可以同时执行;锁升级过程:偏向锁;自旋锁;系统锁;自旋锁和系统锁各自的使用场景。
2022-12-14 22:01:38
432
原创 多线程与高并发(一)
多线程、JVM、操作系统。基础概念JUC同步工具同步容器Disruptor //一个MQ框架,公认的单机环境下效率最高。线程池run方法还是依次顺序执行;( 先run后main , 相当于只有一条执行路径 )但start方法是分支执行。( 有分支路径 )【 线程的方法 】:【 sleep 】:睡眠 ,当前线程暂停一段时间, 让给别的线程去运行。我从CPU上先离开 , 进入到一个等待队列里。当然有可能刚进去就被拽出去执行 , 但更大的可能是——将等待队列中其他的拽
2022-12-06 23:15:33
256
原创 synchronized锁升级过程
偏向锁 和 轻量级锁 都是用户空间锁(用户态度锁)—— 我不需要和操作系统打交道。方法m( ) 是 synchronized 修饰的 ,方法m加的锁是O , 方法m里面调用了方法 n( ) , 方法n( ) 加的锁也是O , 所以就相当于给锁O上了两次。
2022-11-29 17:53:37
1431
1
原创 并发编程(三)原子性(1)
多个线程同时拿到了变量,同时++,然后同时写回去。【一些概念】:race condition => 竞争条件 , 指的是多个线程访问共享数据的时候产生竞争———上述程序中变量n即是共享数据。数据的不一致(unconsistency),并发访问之下产生的不期望出现的结果如何保障数据一致呢?–> 线程同步(线程执行的顺序安排好),monitor (管程) —> 锁critical section -> 临界区如果临界区执行时间长,语句多,叫做 锁的粒度比较粗,反之,就是锁的粒度比较细。
2022-11-22 18:27:52
600
原创 并发编程(二)有序性
CPU内存屏障 , 对象的创建过程,新生代,老生代,伊甸区等,指令重排序,hotspot中精简的指令屏障写法,围绕并发编程有序性的一边博文。
2022-11-22 10:44:30
363
1
原创 并发编程(一)可见性
volatile保障线程可见性缓存行缓存一致性协议【volatile的底层实现】:volatile除了保障线程可见性之外 , 它还可以禁止重排序。了解完有序性之后才能真正理解它的底层实现原理。
2022-11-19 13:02:42
400
1
原创 线程的“结束”
【volatile 和 interrupt】:总之,你不依赖于中间精确的次数和精确的时间的话 , 它俩都行。自然结束(能自然结束就尽量自然结束)volatile标志不适合某些场景(比如还没有同步的时候,线程做了阻塞操作,没有办法循环回去)打断时间也不是特别精确,比如一个阻塞容器,容量为5的时候结束生产者,但是,由于volatile同步线程标志位的时间控制不是很精确,有可能生产者还继续生产一段儿时间interrupt() and isInterrupted(比较优雅)
2022-11-15 18:21:51
318
原创 线程的“打断”
sleep()方法在睡眠的时候,不到时间是没有办法叫醒的,这个时候可以用interrupt设置标志位,然后呢必须得catch InterruptedException来进行处理,决定继续睡或者是别的逻辑,(自动进行中断标志复位)
2022-11-15 16:26:31
614
原创 创建线程的5种方式
根据你CPU计算的能力(核数)来制定线程的数量。一台机器不可能只跑我们自己的程序,肯定还有其他的程序;得看实际中机器的情况。不可能让CPU的利用率达到100% , 出于安全的角度 , 只让其到80即可。只有一种——new Thread 出来 , 如果读过线程池/Future 的源码,就会知道最终都是 new 一个 Thread出来。基本上你把它部署上去,进行统计才能确定。——一般来说通过工具测算。本质都是——new一个Thread对象 , 并调用它的start方法。
2022-11-15 07:55:37
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人