- 博客(267)
- 资源 (58)
- 收藏
- 关注

原创 5G-OAI核心网部署流程
本教程旨在讲解OpenAirInterface(OAI)的部署方法,接下来的系列内容将包含5G核心网的部署、OAI基站部署、OAI终端UE部署,openair1,openair2,openair3,openair4等源码详解,最终实现5G通信过程并通过抓包实现数据分析。
2023-03-27 10:17:50
1788

原创 Quartus Prime Lite Edition 使用教程(创建项目与仿真)V
Quartus Prime Lite Edition基础使用教程
2022-03-30 19:22:32
13654
13
原创 Redis常问八股(一)
使用的是Redisson实现的读写锁。在存储数据的时候采用的hash结构,大key可以按照自己的业务进行定制,其中小key是当前线程的唯一标识,value是当前线程重入的次数。:缓存击穿的意思是,对于设置了过期时间的key,缓存在某个时间点过期的时候,恰好这个时间点对这个Key有大量的并发请求过来。当然,两种方案各有利弊:如果选择数据的强一致性,建议使用分布式锁的方案,但性能上可能没那么高,且有可能产生死锁的问题。:延迟双删,如果是写操作,先把缓存中的数据删除,然后更新数据库,最后再延时删除缓存中的数据。
2025-03-08 15:31:41
747
原创 javaSE基础
Java 语言编写的程序,一次编译后,可以在多个操作系统上运行。3.4 默认是双精度,将双精度赋值给浮点型属于下转型(down-casting,也称窄化)会造成精度丢失,因此需要强制类型转换。会编译出错,由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。从 Java 7 开始,expr 还可以是字符串,但是长整型在目前所有的版本中都是不可以的。从 Java 5 开始,Java 中引入了枚举类型, expr 也可以是 enum 类型。
2025-03-05 22:21:55
403
原创 分段锁和CAS锁
分段锁是一种锁粒度的优化策略,它将数据划分为多个段,每个段单独加锁,减少多个线程同时争用同一把锁的情况,从而提高并发性能。的原子操作,它用于解决并发问题,尤其是在高并发环境下避免使用传统的加锁机制。,通过比较内存中存储的值是否与预期的旧值一致,如果一致则将内存中的值更新为新值,否则不进行更新。CAS 操作通常是由硬件提供支持的,如在现代 CPU 中,CAS 被实现为一条指令。结构,尤其在大数据量的情况下,避免了大量线程同时争用一把全局锁的性能瓶颈。包提供了一些通过 CAS 实现的原子类,像。
2025-01-05 14:34:11
661
原创 java集合类有哪些?
在 Java 中,集合类(Collection classes)是指用来存储、操作数据对象的一系列类。它们位于java.util包中,主要分为和三个类型,每个类型又包含不同的实现类。List是一个有序的集合,它允许元素重复,并且元素的插入顺序是被保留的。常用的ListArrayListArrayList。
2025-01-05 14:26:58
1188
原创 java中static和const和final的区别
staticstatic关键字用于声明类的成员(方法或变量)为静态成员。静态成员属于类本身,而不是类的实例。换句话说,静态成员可以通过类名直接访问,而不需要实例化对象。staticstaticstaticcount是静态变量,在两个Counter对象中共享,是静态方法,可以通过类名直接调用。final是一个多用途的关键字,它可以用于变量、方法和类的定义,分别具有不同的含义。finalfinalfinalfinalfinalfinalfinalfinalfinalPI被声明为final,因此它的值不能更改。
2025-01-04 23:08:35
1353
原创 java基础学习(接口和抽象类的区别)
抽象类 (abstract class)不支持多继承,一个类只能继承一个抽象类。可以有抽象方法,也可以有已实现的方法。用于为相关类提供共有的功能和代码重用。支持多继承,一个类可以实现多个接口。用于定义一组不相关类的共同行为。接口 (interface),可以有默认方法、静态方法。,并实现了它们的方法;它们都无法直接实例化。可以有实例变量,可变。
2025-01-04 22:21:29
404
原创 spring网关维度
现在list的限流规则为60秒内5次,而api维度的限流规则是60秒内限制为1次,list属于整个微服务架构,而login只属于api维度;它实际上是@Controller和@ResponseBody注解的组合,表示该类中的所有方法都会返回JSON、XML等格式的数据,而不是视图页面。list属于整个微服务架构,而login只属于api维度,当访问时,刚才存在网关维度的限流规则是60秒内5次,而api维度的限流规则是60秒内限制为1次;代表网关访问该服务时的限流规则;代表网关访问该接口时的限流规则;
2025-01-01 19:02:24
924
原创 对三层架构的梳理(Controller、Service、Dao)
层通常包含实体类,它们代表数据库中的表结构。在这个示例中,我们会创建一个简单的。为了让 Spring Data JPA 工作,我们还需要一个数据库配置,通常通过。
2024-12-28 16:46:23
464
原创 知识图谱+RAG学习
GraphRAG(Graph-based Retrieval-Augmented Generation)是微软在2024年推出的一项开源技术,旨在通过结合知识图谱和检索增强生成(RAG)方法,为大型语言模型(LLM)的数据处理提供全新解决方案。GraphRAG在RAG的基础上加入图结构信息,使得模型不仅能“查找到正确答案”,还可以通过图分析理解“答案之间的关系”。GraphRAG支持跨领域的多模态数据整合,无论是文本、图像还是结构化数据,都能构建统一的知识图谱,并实现推理。
2024-12-23 23:01:55
607
原创 windows下kafka初体验简易demo
进入config文件夹,修改zookeeper.properties文件,找到dataDir=C:/kafka/data/zk,将地址填写为刚才的新建zk文件夹;资料汇总内有一个kafka文件资料包.tgz,解压后可得到下述文件夹kafka_2.13-3.9.0,资料汇总内还有一个jdk文件,直接下载即java版本;首先双击zk.cmd,启动zookeeper,再双击kafka.cmd启动kafka,需要注意的是关闭的时候需要先关闭kafka,再关闭zookeeper;至此,文件配置环节已经完成;
2024-12-02 20:55:53
1274
原创 数据中台关系梳理
而在加入了MDM后,对于ETL的数据抽取则归类为了两类,一类为基础数据的抽取,这一部分数据可以不通过业务内容提取,直接从MDM中获取;基于上述内容,由于各个烟囱式管理的数据内容形成了信息孤岛,而对于同一物料来说,他可能同时存在于CMS,SMC和ERP中,各自又有可能有自己的管理,容易造成数据不一致。增加完MDM主数据管理系统后,如果需要使用物料数据,则会通过MDM主数据管理系统进行内容分发,统一管理;为了让数据结合,需要制作BI系统,而在制作BI系统的时候,则会需要通过类似于ETL的数据抓取工具。
2024-11-25 21:59:15
434
原创 etcd多实例配置
若没有go环境,则进行下载,解压至/usr/local后进行环境配置,编辑vim ~./bashrc。多实例进行配置,分别在多个不同端口进行监听,避免开启单机部署监听端口冲突;当中止一个节点时,其他节点正常运行,可以访问,中止节点无法继续访问。多节点情况下,指定添加某一节点的数据。启动完成之后查看集群内的成员。随后安装goreman。
2024-10-29 17:15:44
432
原创 Gateway网关服务
在Spring Boot项目中集成作为配置中心,首先需要添加Nacos客户端的依赖,然后在配置文件中配置连接Nacos服务器的相关信息,包括Nacos服务器地址、端口、命名空间等。接着在启动类上添加@EnableDiscoveryClient注解来开启Nacos的服务发现和注册功能,同时使用@NacosPropertySource注解来指定配置的命名空间和配置文件名。这样Spring Boot应用程序就能够从Nacos服务器动态获取配置信息。
2024-10-28 18:03:24
911
原创 Docker容器间通信
在 Docker 中,使用 YAML 文件(通常是)来定义和管理多个容器及它们之间的网络链接。是一个工具,它允许你用一个 YAML 文件来配置应用程序的服务、网络和卷,简化容器的启动和管理。使用控制 Docker 容器和容器间链接。:定义了多个容器(或服务),每个容器在文件中用不同的服务名表示,例如service1和service2。每个服务都可以有自己的配置,如镜像、端口等。:用于将容器内的端口映射到宿主机的端口,格式为。例如,"8080:80"表示将宿主机的 8080 端口映射到容器的 80 端口。
2024-10-23 21:42:35
1117
原创 Docker容器间链路管理
3.container –network 容器名称或id 新创建的容器不会创建自己的网卡和配置自己的ip,而是和一个指定的容器共享ip、端口范围。可以将docker中的每个容器当成是一个房间里的隔断,如果有两套不同的应用需要部署,你可以选择开设两台虚拟机来运行他们,但是成本太高,服务要求过高。Docker容器是一个轻量级的、可移植的软件打包技术,它允许开发者将应用程序及其依赖项打包到一个独立的容器中,然后发布到任何支持Docker的环境中运行。其网络关系,容器间链路连接则是容器间通信的重要问题。
2024-10-23 21:06:30
943
原创 基于webrtc实现音视频通信
2、投收踏收到对端的 Ofer 信息后调用 setRemoteDesccription 方法将含有对蹊 SDP 信息的 Offcr 保存起来,并创建Answer(createAnswer)井将Answer 消息(内容是接收端的 SDP 信息)通过信令服务裔传送给呼叫端;1、呼叫踏创建 Offer(createOífer)井将 offer 消息(内容是呼叫罐的SDP 信息)通过信令服务器传送给投收端,同时调用 setLocalDesccription 将含有本地 SDP 信息的 Offer 保存起来;
2024-10-12 17:27:51
720
原创 redis入门
问题描述(表明已经打开一个redis并且占用了6379这个端口,于是需要关闭它)mysql是磁盘存储,redis是内存存储;redis是mysql的一种补充;上述是通过cmd运行的方法,同时为了简化操作,可以在图形化界面中运行。Redis是一个基于内存的 key-value 结构数据库;redis-server是服务端。redis-cli为客户端。
2024-10-12 16:33:05
164
原创 二维前缀和讲解及变形
讲解:以下述8*4的表格为例,可以得到sum[i+1][j+1]=sum[i][j+1]+sum[i+1][j]-sum[i][j]+matrix[i][j];即从两个f绿色框的最小值,求出min,然后与gird[i,j]进行相减,得到差值,在与gird[i,j]进行对比,将新的矩阵最小值填入。可以得到sum[i+1][j+1]=sum[i][j+1]+sum[i+1][j]-sum[i][j]+matrix[i][j];将f[i+1,j+1]看作是从下标为[0,0]到下标为[i,j]的一个矩阵的最小值。
2024-08-15 15:04:54
545
1
原创 油猴脚本数据插入优化过程记录
可以发现:当直接修改输入框的value属性不会触发一些框架(如 React、Vue 等)或自定义事件所依赖的输入变化检测。这意味着虽然你看到输入框的值改变了,但在后台或框架管理的状态中,输入框的值可能并没有更新。由上述这个情况会造成生成过程中的用户值出现问题。因此需要解决上述问题,所以尝试使用,但是失败了,
2024-08-14 16:39:15
662
原创 动态规划+位运算
之间任意两点之间的数组都为特殊数组,因此只需要完成关于各个最长特殊数组的预处理即可,因此可以引申出dp动态规划,当满足。判断奇偶性则可以直接通过位运算来简化,通过a,b异或操作,并在最低为进行&1,即可得出奇偶性是否相同,(a^b)&1;可以注意到,在确定任意i~j之间数组都为特殊数组时,i~j范围内任意两个点必然是特殊数组;如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个。例如:数组a为{1,3,4,5,6,8,10,11,12,14}即可认定为为特殊数组,反之则为false;
2024-08-14 10:38:26
426
原创 二分查找(寻找两个正序数组的中位数)
关于如何找到中位数,可以将这个问题转化为如何找到两个数组中的第k位数,两个数组,a[n]和b[m],a数组中到下标为i,b数组中到下标为j时,满足i+j=k,同时要满足。以及在满足上述条件的同时i+j=k,i在n范围内,j在m范围内,k分别在m,n范围内的隐性条件;分别从两个数组开始下滑,一直到找到中位数(m+n)/2 即可,通过上述做法可以有效获取相关数值。空间复杂度:O(m + n),申请了三个数组来装 nums1 nums2。时间复杂度:O(m + n),完整的遍历了2个数组。空间复杂度: O(1)
2024-08-13 16:53:48
338
原创 Trie前缀树的实现
Trie树的每个节点都包含多个指向其子节点的指针(具体数量取决于字符集的大小)。:由于Trie树的结构,可以非常快速地检索一个字符串是否存在于数据集中,或者检索以某个特定前缀开始的字符串列表。检索过程从根节点开始,沿着字符串的字符序列遍历Trie树,直到找到对应的节点或确定字符串不存在。Trie(又称前缀树、字典树或单词查找树)是一种树形结构,用于快速检索字符串数据集中的键。当插入多个具有相同前缀的字符串时,这些字符串在Trie树中将共享从根节点到前缀最后一个字符的路径。
2024-08-12 16:43:52
496
原创 数位dp学习
求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的 B的整数次幂之和。3.如果x > 1, 则该位上可以填 0 ,方案数为C(i - 1, k), 也可以填 1 ,即方案数为C(i - 1, k - 1), 因为填大于 1 的数不合法,所以直接break掉。首先将N转化为b进制数,则一个数能由b的整数次方合成,则转化为b进制后,对应的b的次方的位置为1, 那么我们只需判断转化为b进制后,各个位数上0,1的个数就可以,得到总的方案数;只包含一个整数,表示满足条件的数的个数。
2024-08-05 20:18:03
472
原创 快速幂的求解方法(位运算)
需要求解幂运算的解法,可以将需要运算的内容进行判别,众所周知,幂就是指数,就是将底数乘以自身完成n次自相乘,那么就可以幻化为他的幂的简化计算;,自习观察可以看作是1+8+16,同样化为2进制,即求25的二进制,可以得出为11001;3.将ans设定为1,底数a变为二进制来看,运用位运算,判定最低位是否为1,(a&1);4.若最低位为1,则ans=ans*a,若不为1,则a=a*a,底数平方;这时候如果你的幂是负数,则可以先取反幂,再将底数变为原先的倒数;2.幂取反,底数变为原先的倒数;
2024-07-30 14:16:31
221
原创 java基础知识(2)
stringbuilder在创建的时候,默认容量为16,容量是最多放多少位,长度是实际已经存放了多少位;如果超过了16位,则会扩容,扩容的方式为:老容量*2+2;如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。在jdk8之前的版本会使用stringbuilder,而在jdk8之后的版本(包含jkd8)则会简化;所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存;如果超出了默认存在的34个,则会直接创建新的需要多少长度的数组;
2024-06-10 21:36:08
330
原创 java基础篇(1)
核心类库: Java已经写好的东西,我们可以直接用开发工具: javac、java、jdb、jhat..常用的代码编辑器,对关键字有特殊颜色标记class关键字是什么意思?JDK是Java开发工具包。class关键字表示定义一个类,后面跟随类名。JVM虚拟机: Java程序运行的地方。JDK,JRE,JVM三者的包含关系。被Java赋予了特定涵义的英文单词。JVM、核心类库、运行工具。JRE是Java运行环境。关键字的字母全部小写。
2024-06-03 23:04:10
457
机器学习之——MNIST机器学习入门
2022-04-27
机器学习初步——TensorFlow在Linux操作系统下安装的整个过程(包括IDE)
2022-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人