- 博客(34)
- 收藏
- 关注
原创 IOC推导和本质
1、先写一个UserDao接口2、再去写UserDaolmpl的实现类3、然后去写UserService的接口4、最后写UserServicelmpl的实现类5、测试一下6.把Userdao的实现类增加一个 .紧接着我们要去使用MySql的话 , 我们就需要去service实现类里面修改对应的实现7.在假设, 我们再增加一个Userdao的实现类那么我们要使用Oracle , 又需要去service实现类里面修改对应的实现 . 假设我们的这种需求非常大 , 这种方式就根本不适用了我们使用set接口实现。
2023-12-29 23:38:55 458
原创 网络编程1
网络通信协议:速率,码率,代码结构,传输控制。127.0.0.1:本机localhost。不同的进程有不同的端口号!1024~49151,分配用户或者程序。端口表示计算机上一个程序的进程;唯一定位一台网络上的计算机。单个协议下端口号不能冲突。被规定0~65535。TCP:用户传输协议。
2023-12-28 21:33:31 420
原创 LOCK&&synchronized
LOCK:显示锁(手动开启和释放)只有代码块锁;花费较少的时间调度线程,性能更好。synchronized:隐式锁,出了作用域自动释放,有代码块锁和方法锁。
2023-12-26 23:45:00 360
原创 线程同步&&并发问题
为了解决多并发问题,在访问时加入锁机制synchronized,当一个线程获得对象排他锁,独占资源,其他线程必须等待,使用后释放锁即可。),并且某些线程还想修改这个对象,这个跟时候就需要线程同步。线程同步其实是一个等待机制,多个需要同时访问这个对象的线程进入这个对象的。处理多线程问题时,多个线程同时访问同一个对象(每个对象都有一把锁,sleep不会释放锁;,等待前面对象使用完毕,下个线程再使用。才能保证线程同步的安全性;
2023-12-26 20:05:25 388
原创 创建线程的方法
二:实现Runnable(建议使用:避免单继承局限性,方便同一个对象被多个线程使用)一:继承thread类(不建议使用:避免OOP单继承局限性)定义runnable类实现runnable接口。创建线程对象,调用start()方法开启线程。实现run()方法,编写线程执行体。调用start开启线程。
2023-12-24 22:00:59 351
原创 tare 部署
一般dirToVehicle是true的时候,dirThr会设置的比较小,比如只考虑机器人朝前或者朝后10°的范围内的轨迹。2.pathscale是用来控制碰撞检测范围的,pathscale越小,碰撞检测范围就越小,pathscale是当前值,minpathscale是最小需要考虑的碰撞检测尺度,pathscalestep就是在当前的碰撞检测范围内找不到无碰撞路径的时候缩短pathscale的步长,defPathScale是最大的需要考虑的碰撞检测的范围尺度,这个值是初始化时就已经设置好的,是定值。
2023-12-08 17:52:27 1046
原创 RR、RC、RU 三种隔离级别和表、行两种粒度的五种锁类型
此外,应该只允许一个事务在给定资源上升级其锁。任何其他升级被认为是不兼容的,这样的尝试应该将TransactionState设置为ABORTED,并抛出TransactionAbortException (INCOMPATIBLE_UPGRADE)。* 如果请求的锁模式与当前持有的锁模式相同,Lock()应该返回true,因为它已经拥有锁。读未提交:不加锁,直接读取内存中的数据。* 如果请求的锁模式不同,lock()应该升级事务持有的锁。* 正在升级的锁请求应该优先于同一资源上等待的其他锁请求。
2023-11-06 22:15:15 437
原创 多线程并发
单线程性能不高,不能充分利用CPU,可伸缩性不高,使用多线程能够充分的利用CPU,提高系统的可伸缩性,但是多线程会有一些额外的开销,而额外开销最主要在于由于独占锁导致的锁竞争产生的串行执行和上下文切换,解决独占锁方法主要是降低锁的使用时间和锁的粒度,或者采用其他方式替换独占锁。
2023-11-06 16:51:36 55
原创 project 4:
查询是否有将该事务锁请求阻塞的请求,当获取写锁时,队列中的任何一个锁请求都将造成其阻塞,当锁请求的事务优先级低时,将其杀死。在数据库内部维护一个锁依赖图(锁等待图),描述了所有在并发的事务谁在等谁的锁,图的每一个节点都是一个事务,每个边都是锁的等待情况,检查图有没有成环,成环的话就解开这环,但不能解决死锁问题。当优先级低的事务等待优先级高的事务的锁时,优先级低的事务将阻塞。为了避免死锁,事务需要检查当前队列是否存在使得其阻塞的锁请求,如存在则判断当前事务的优先级是否高于该请求的事务,如是则杀死该事务;
2023-11-01 14:31:21 83
原创 project2:B+tree 迭代器
一旦孩子被锁上,检查它是否安全,在这种情况下,至少是半满的。(注意:对于根页面,我们需要用不同的标准来检查)如果子节点是安全的,那么释放父节点上的所有锁(If child is safe, release。从根页面开始,读(R)锁在孩子,一旦到孩子页面,然后释放父页面的锁( release latch on parent as soon as you land on the child page.)。只有当子页面被认为是“安全的”时,线程才能释放父页面上的锁。从根页开始,子页上的写(W)锁。
2023-10-31 19:59:06 73 1
原创 project3:实现了多种语句的执行事务
实现了,如 GROUP BY、JOIN、TOP-N、INDEX-SCANDBMS的处理模型定义了系统如何执行查询计划。针对不同的工作负载进行不同的权衡。
2023-10-30 16:42:55 82
原创 LRU-K
的方式实现,其中链表充当队列的功能以记录页面被访问的先后顺序,哈希表则记录键值对,以在O(1)复杂度下删除链表元素。实际实现中使用STL中的哈希表。中存储指向链表节点的。用于保存磁盘页面ID。
2023-10-27 21:03:45 82 1
原创 project2:B+ tree
页面都从缓冲池获取不考虑重复key(面试中可能问:重复的key怎么实现)节点布局为kv键值对锁的粒度为页级,且是缓冲池的页,不是B+树的页b_plus_index 依赖于b_plus_leaf_page b_plus_internal_page 实现m阶的B+树,根节点及中间结点和叶子结点均最多只有m-1个元素,最多有m个子树。最少有 ceil(m/2) - 1个元素(ceil向上取整-)。1.叶子多一个next_page_id。
2023-10-26 22:31:59 84
原创 锁的粒度区别
无锁编程通常需要更高级的编程技能,但可以提高并发性能,特别是在高度竞争的情况下。在细粒度锁中,锁的范围非常小,通常是某个特定数据结构的单个元素或一小部分数据。过细的锁可能会导致过多的锁争用,而过粗的锁可能会导致性能下降。在多线程编程中,锁的粒度的选择需要谨慎考虑,以平衡并发性能和代码的正确性。在粗粒度锁中,锁的范围较大,通常是整个数据结构或数据集。这提供了一种权衡,允许更多的读并发性,但限制了写操作的并发性。锁的粒度是指在多线程编程中,将锁应用于代码的范围或颗粒度的大小。
2023-10-25 21:08:08 438
原创 Buffer Pool
HashMap 加上多级(0 ~ k - 1)队列,每多访问一次就放入下一个队列,达到 K 则放入缓存队列。数据队列(链表)采用 FIFO 的思想:来一个新数据就放入队列尾,若访问了旧数据则把其移出到下一个队列或缓存队列,若容量满则删除队列头。缓存队列和普通的LRU设计一样。LRU-k 有两个队列,一个队列是数据队列,一个队列是缓存队列,只有当数据队列数据的访问次数到达 K次,才将它放入缓存队列。缓存队列按照 LRU 的方法置换数据。最近最少使用,缓存容量满的时候,置换最长时间没有使用的那个。
2023-10-24 11:21:45 39
原创 VMware虚拟机中调用本机摄像头详解
下载命令:sudo yum/apt install cheese ,sudo yum/apt install webcam(Centos下yum,Ubuntu下apt)原文链接:https://blog.csdn.net/weixin_43849277/article/details/109061739。4.开机进入linux系统,此时可以进行camera连接,选择与主机连接。5.这样就可以使用了,下次调用时,先进行步骤4连接就可以用了。完成安装后,终端输入cheese测试摄像头连接成功。
2023-09-24 17:31:50 4075 1
原创 解决git的账户权限问题:fatal: Authentication failed for ‘https://github.com/*/*.git/
github在2021年8月13日的时候修改了认证方式,不再使用账户登录的方式去push代码等等操作,而是使用生成仓库的个人密钥去push代码等操作。
2023-09-24 17:02:03 993 1
原创 FAR_Planner && TARE
采用随机采样 viewpoint 方法,然后求解一个旅行商问题(TSP),对应拿到一个旅行商巡行(Tour)路线(经过每一个 viewpoint,确定机器人探索目的地的先后顺序);:通过对传感器多帧输入的比较,检测环境中的动态障碍物(如:行人,车辆),算法会对受到动态障碍物遮挡的 V-Graph 进行更新,并在动态障碍物移开后恢复之前 V-Graph 内相对应角点之间的连接。这样,将分散建立大范围全局 V-Graph 的计算量,并实现未知环境下的动态更新,使得规划器可在未知环境下探索式路径规划。
2023-09-03 09:49:59 2099
原创 【无标题】
决策变量是 MINCO 参数 q 和 T。以确保连续性开始状态和终端状态是固定的。可行性要求轨迹满足车辆的动力学约束,避免障碍物。平坦度通过限制轨迹速度、加速度和加速度的大小来加强动力学约束。通过变形轨迹形状来实现避障。
2023-07-26 17:15:56 417 1
原创 Swarm of micro flying robots in the wild (一)
我们开发了微型但完全自主的无人机,其轨迹规划器可以根据车载传感器的有限信息及时、准确地运行。规划问题满足飞行效率、避障、机器人间避碰、机器人间避碰、动态可行性、群体协调等各种任务要求,从而实现可扩展的规划器。此外,所提出的规划器根据时空联合优化对轨迹形状进行变形并同步调整时间分配。因此,即使在最受限的环境中,也可以在仅在几毫秒内详尽地利用解空间后获得高质量的轨迹。规划器最终集成到开发的手掌大小的蜂群平台中,该平台具有机载感知、定位和控制。基准比较验证了规划器在轨迹质量和计算时间方面的优越性能。
2023-07-04 22:17:29 1252
原创 出现Invalid <arg> tag: environment variable ‘TURTLEBOT3_MODEL‘ is not set.
环境配置
2023-03-20 14:07:46 1169
空空如也
Tare_Planner的学习笔记(一)protobuf 的版本
2023-02-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人