- 博客(37)
- 收藏
- 关注
原创 InnoDB 的一次更新事务是怎么实现的?
先从磁盘中加载数据到Buffer Pool(缓存冲) ->写入Undo log(重做日志)->更新缓存中的数据(对应的数据页被成为脏页)->写Redo log(重做日志)->提交事务->刷脏(将缓存中的数据刷新到磁盘文件中)
2023-11-20 16:37:10 238
原创 Redis中List底层原理
链表:链表节点:总结:**双端:**链表节点带有prev和next指针,获取某个节点的前置节点和后置节点的复杂度都是O(1)。**·无环:**表头节点的prev指针和表尾节点的next指针都指向NULL,对链表的访问以NULL为终点。·带表头指针和表尾指针:通过list结构的head指针和tail指针,程序获取链表的表头节点和表尾节点的复杂度为O(1)。·带链表长度计数器:程序使用list结构的len属性来对list持有的链表节点进行计数,程序获取链表中节点数量的复杂度为O(1
2023-10-30 17:33:21 153
原创 Redis中String 底层原理
*free :**减少修改字符串长度时所需要的内存重分配次数, 可以杜绝缓冲区溢出。**len:**常数复杂度获取字符串长度,SDS只需要使用API就可以进行字符串长度的统计。**buf:**字节数组,可以保持任意的二进制数据-> 兼容一部分C字符串函数 (不能保存中间含有字符)
2023-10-30 17:27:05 253
原创 基于邻域的评分预测
基于邻域的协同过滤算法主要分为基于用户的协同过滤和基于项目的协同过滤。基于用户的协同过滤的基本原理是找到与目标用户兴趣相似的其他用户,然后根据这些相似用户的评分来预测目标用户对未评分的项目的评分。
2023-10-15 17:56:14 137
原创 基于邻域的top-N推荐
1、基于用户的协同过滤算法(user-based CF)一个用户喜欢和他具有相似喜好的用户喜欢的项目, 两个用户喜欢的项目交集越大, 这两个用户越相似。两个用户兴趣相似度的计算可以有多种方法,使用Pearson相关相似性和余弦相似度计算。2、基于项目的协同过滤基于项目的协同过滤推荐(item-based CF)基于这样的假设[8]: 一个用户会喜欢与他之前喜欢的项目相似的项目。因此, 基于项目的协同过滤推荐关键在于计算物品之间的相似度。
2023-10-15 17:51:47 180
原创 ThreadLocal 源码分析
threadLocal是一个壳子,真正的存储构是threadLocal里有ThreadLocalMap这么个内部类,每个thread对象都维护了一个threadLocalMap的引用。threadlocalmap是threadlocal的内部类,用entry来进行存储。1》调用threadlocal的set()方法时,实际上就是往thradlocalmap设置的key是threadlocal对象,值value是传递进来的对像。
2023-10-03 16:15:03 37
原创 ThreadLocal 学习
*** 1.saleHouse方法 是对于 5个销售卖房子,集团高层只关心 销售总量的准确 统计数量* 2.saleHouseThreadLocal 方法 是 对于 五个 销售 卖完方法 各自所拿到的提成i
2023-10-03 16:11:07 34
原创 CompletableFuture学习
get()方法在Future 计算完成之前会一直处在阻塞状态下,isDone()方法容易耗费CPU资源,阻塞的方式和异步编程的设计理念相违背,而轮询的方式会耗费无谓的CPU资源。因此,JDK8设计出CompletableFuture。CompletableFuture提供了一种观察者模式类似的机制,可以让任务执行完成后通知监听的一方。
2023-10-03 16:05:32 35
原创 内存屏障以及volatile
什么是内存屏障Java中的内存屏障是一种CPU指令, 也是同步机制实现的依赖。内存屏障用于确保多线程环境下的内存可见性和操作的有序性,它是实现线程同步和避免并发问题的关键手段.它可以防止CPU对指令序列进行重排序,从而保证在代码执行过程中,对内存的读写操作按照程序员的意愿来进行内存屏障通过在代码中插入同步指令来强制线程在特定的位置进行同步,从而解决了多线程环境下的内存可见性和有序性问题。
2023-09-10 15:53:50 217
原创 生产者消费者 (阻塞队列版本)
生产者 将session id 放到 阻塞队列()中 , 消费者 去 拿到 阻塞队列 中 被标记的 session 去删除(使用 两个 线程 )为什么 使用呢 假如一个 线程 去 随机取样 + 标记过期 那么这个线程 执行代码 逻辑会很消耗时间生产者 负责在存放 session中的 map 中 随机拿到一定数量 放入 阻塞队列中 blockingqueue。
2023-09-09 16:50:40 51
原创 Count Vectorizer以及N-Gram模型进行文本特征的向量化表示
2:基于两种特征缩放方法(标准化、区间缩放),使用SKlearn进行量纲的特征缩放。要求:采用自定义的简单二维数组和IRIS数据集进行实验。1:基于Count Vectorizer特征提取方法与N-Gram模型,使用SKlearn对文档进行向量化表示。3:使用SKlearn进行线性回归和二次回归曲线的绘制,以及拟合效果的对比(披萨尺寸与价格的回归分析)4:信息熵和互信息的计算(数据可自定义)
2023-08-03 10:00:21 176
原创 P-R曲线的绘制对于鸢尾花IRIS数据集处理
2.基于Python语言及鸢尾花IRIS数据集,使用Sklearn进行精确率-召回率曲线(P-R曲线)的绘制,进行可视化的展示。1.学习并理解上述知识点。
2023-07-31 17:56:22 210
原创 Tmcat 工作线程池 和 线程池
SpringBoot 可以同时处理多少个请求?因为SpringBoot中内嵌了Tomcat , 所以等同于问Tomcat 可以同时处理多少个请求。
2023-07-31 17:48:49 91
原创 拦截的使用
Spring MVC中的拦截器(Interceptor)主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。
2023-06-26 15:24:52 72
原创 基于注解的的spring bean的装配
利用AspectJ框架为AOP的实现提供了一套注解,用以取代Spring配置文件中为实现AOP功能所配置的臃肿代码。提示:以下是本篇文章正文内容,下面案例可供参考。
2023-06-22 12:07:03 142 1
原创 Spring的入门程序
在main()方法中,需要初始化Spring容器,并加载配置文件,然后通过Spring容器获取userDao实例(即Java对象),最后调用实例中的say()方法。打印输出say()方法体中的 我是学生。2、实现Spring的入门程序。3、实现bean实例工厂实例化。1、安装集成开发环境。
2023-06-22 12:03:33 135 1
原创 倒排索引(信息检索-python代码)
通过实验理解倒排索引的构建过程;掌握采用倒排索引做一个简单的搜索引擎,实现对关键字的检索。提示:以下是本篇文章正文内容,下面案例可供参考实验1:采用倒排索引做一个用数组模拟文档的简单的搜索引擎;实验2:改写实验1,实现对文档的倒排索引。
2023-06-21 15:23:17 628
原创 文本处理-英文拼写检查
掌握使用编辑距离和海明距离计算字符串间相似度;通过实验理解编辑距离和海明距离的分析计算过程。提示:以下是本篇文章正文内容,下面案例可供参考实验1:用编辑距离计算两个自定义字符串间的相似度;实验2:用海明距离分别计算二进制数间的相似度和字符串间的相似度。(要求二进制数间的相似度计算用按位异或的思想)2.
2023-06-21 15:22:46 53
原创 文本处理-分词
掌握使用分词工具,并体会各种模式之间的区别jieba分词的三种模式(全模式、精确模式、搜索引擎模式)掌握中文分词的三种方法(1)正向最大匹配(2)逆向最大匹配(3)双向最大匹配实验1:用jieba分词工具的三种模式(全模式、精确模式、搜索引擎模式)对文本进行分词;实验2:用正向最大匹配算法对“南京市长江大桥”进行分词;实验3:用逆向最大匹配算法对“南京市长江大桥”进行分词;实验4:结合正向、逆向最大匹配算法,实现双向最大匹配算法。
2023-06-19 11:26:08 183
原创 统计语言模型(Bigram建模训练))
一、用给定语料进行Bigram建模训练,并且计算给定句子的概率, 给定词组,返回最大概率组合的句子二、用两个语料 做Bigram建模训练,并根据给定首字(词)进行文本生成,比较不同语料的训练结果差异。提示:以下是本篇文章正文内容,下面案例可供参考。
2023-06-14 18:48:10 361
原创 RSA加密使用 及其 算法思想
RSA 是一种非对称加密算法,它的公钥和私钥是一对,其中公钥可以公开,任何人都可以用它来加密信息,而私钥只有密钥持有人才能拥有,用于解密加密信息
2023-06-02 14:29:13 328
原创 力扣 最多可以参加的会议数目
第一天可以参加二维数组中 events[0] [] , [1, 2] 这个活动。1.对于活动结束时间为 105次方来说,算法的时间复杂度过高了,执行时间过长。第二天可以参加二维数组中 events[2] [] ,[1,2] 这个活动。思路:按照结束时间先后去参加,先结束的先参加。第三天可以参加 [2, 3]第四天可以参加 [3,4]
2023-05-04 15:53:22 194
原创 Cannot deserialize value of type `java.sql.Timestamp` from String “2022-07-08 16:53:40“: not a valid
时间数据类型转换错误,错误的转换Date时间类型。
2023-04-20 16:47:52 1273
原创 集合框架LinkedList底层原理
使用JDK7版本进行学习,查看源代码。集合的api一些函数不说明,主要是对于一些细节,以及容易忘的地方进行理解和描述。一定要使用调试的方法,进入到底层查看源代码。LinkedList是使用双向链表进行存储元素的,链表中每一个元素称为节点,在每一个节点中都存储着上一个节点的地址和下一个节点的地址和当前元素值。
2022-12-24 15:17:35 120
原创 集合ArrayList底层原理
二、源代码解读代码如下(示例):oneArrayList的默认无参构造方法是创建一个长度为10的数组进行元素存储。给定ArrayList的初始容量为3,按照道理只能存储3个元素。但在存储曹操这个元素的时候,是可以存入的。源代码中的ensureCapacity()这个方法就是进行扩容JDK6与JDK7、8在此异同JDK6:JDK7、8:ArrayList的扩容原理(动态数组)
2022-12-04 11:03:33 99
原创 实现生产者消费者进程(Java)
消费者问题是操作系统中典型的进程同步互斥问题,(英语:Producer-Consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个进程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程“生产者”(Producer)和“消费者”(Consumer)在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。问题的约束条件是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓
2022-06-15 10:06:35 1317 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人