自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(253)
  • 收藏
  • 关注

原创 linux入门到精通-第十一章-进程间通信(无名管道)

管道也叫无名管道,它是是 UNIX 系统IPC(进程间通信)的最老形式,所有的 UNIX 系统都支持这种通信机制。1)半双工,数据在同一时刻只能在一个方向上流动2)数据只能从管道的一端写入,从另一端读出。3)写入管道中的数据遵循先入先出的规则。4)管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。5)管道不是普通的文件,不属于某个文件系统,其只存在于内存中6)管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。

2024-04-23 08:00:00 1335

原创 hertzbeat监控工具部署

hertzbeat是一个拥有强大自定义监控能力,高性能集群,兼容 Prometheus,无需 Agent 的开源实时监控告警系统。集 监控+告警+通知 为一体,支持对应用服务,应用程序,数据库,缓存,操作系统,大数据,中间件,Web服务器,云原生,网络,自定义等监控阈值告警通知一步到位。易用友好,无需 Agent,全 WEB 页面操作,鼠标点一点就能监控告警,零上手学习成本。

2024-04-11 09:47:34 426

原创 linux入门到精通-第十一章-进程间通信(有名管道)

管道,由于没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道、FIFO文件。**命名管道(FIFO)**不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过 FIFO 相通信,因此,通过 FIFO 不相关的进程也能交换数据命名管道 (FIFO)和无名管道 (pipe) 有一些特点是相同的,不一样的地方在于。

2024-04-09 08:00:00 935

原创 linux入门到精通-第十章-进程和程序(2)

在每个进程退出的时候,内核释放该进程所有的资源、包括打开的文件、占用的内存等。但是仍然为其保留一定的信息,这些信息主要指进程控制块PCB的信息 (包括进程号、退出状态、运行时间等)。父进程可以通过调用wait或waitpid得到它的退出状态,同时彻底清除掉这个进程。wait() 和 waitpid() 函数的功能一样,区别在于wait() 函数会阻塞,waitpid()可以设置不阻塞,waitpid()还可以指定等待哪个子进程结束。

2024-04-07 07:45:00 759

原创 linux入门到精通-第十章-进程和程序

我们平时写的 C 语言代码,通过编译器编译,最终它会成为一个可执行程序,当这个可执行程序运行起来后(没有结束之前),它就成为了一个进程。程序是存放在存储介质上的一个可执行文件,而进程是程序执行的过程。进程的状态是变化的,其包括进程的创建、调度和消亡。程序是静态的,进程是动态的。演程序就类似于剧本(纸),进程类似于戏(舞台、演员、灯光、道具…),同一个剧本可以在多个舞台同时上演。同样,同一个程序也可以加载为不同的进程(彼此之互不影响)。在Linux系统中,操作系统是通过进程去完成一个一个的任务,

2024-04-02 07:30:00 547

原创 AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

自从去年GPT模型火爆以来,降低了很多个人和企业进入人工智能领域的门槛,对于大模型尤其是开源的大模型国内应该比较受关注和期待,毕竟高额的成本也能将不少人阻挡在门外,其次,大家都希望在产品中集成LLM的能力,结合业务来落地智能化应用,提升产品的竞争力,最直接的应用就是构建知识库。下面汇总了一下之前介绍的有关构建知识库相关的文章和视频,包含了开源和闭源多种不同的解决方案,从使用情况来看,因为都是开源产品,所以在架构和功能完整性上可能都不够全面,因为一直在持续的迭代过程。

2024-01-16 08:00:00 2117 1

原创 linux入门到精通-第九章-文件操作(2)

dup() 和 dup2() 是两个非常有用的系统调用,都用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。这个过程类似于现实生活中的配钥匙,钥匙相当文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,通过旧的钥匙复制了一把新的钥匙,这样的话,旧的钥匙和新的钥匙都能开启这把锁。

2024-01-08 18:30:00 469

原创 linux入门到精通-第六章-gdb调试器

GNU工具集中的调试器是GDB (GNU Debugger),该程序是一个交互式工具,工作在字符模式。除gdb外,linux下比较有名的调试器还有xxgdb,ddd, kgdb,ups。GDB主要帮忙你完成下面四个方面的功能1.启动程序,可以按照你的自定义的要求随心所欲的运行程序。2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3.当程序被停住时,可以检查此时你的程序中所发生的事4.动态的改变你程序的执行环境。

2023-12-26 08:00:00 874

原创 linux入门到精通-第八章-系统调用

系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊“接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交写的接口一一它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将外理结果送回给用户空间。系统服务之所以需要通过系统调用来提供给用户空间的根本原因是为了对系统进行“保护”

2023-12-12 19:00:00 1687

原创 linux入门到精通-第七章-Makefile使用

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若千个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。Makefile带来的好处就是一”自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

2023-11-20 08:00:00 321

原创 linux入门到精通-第五章-动态库和静态库

静态链接动态链接所谓“程序库”,简单说,就是包含了数据和执行码的文件。其不能单独执行,可以作为其他执行程序的一部分来完成模型功能。库的存在可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。程序库可分入静态库(static library)和共享库(shared library)。

2023-11-03 18:45:00 182

原创 linux入门到精通-第四章-gcc编译器

编辑器vi、记事本)是指我用它来写程序的 (编辑码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行!编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。gcc (GNU Compiler Collection,GNU 编译器套件是由 GNU 开发的编程语言编译器。

2023-10-17 19:00:00 1170 1

原创 linux入门到精通-第一章-文件目录

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些 Minix 黑客提供了协助,而如今全球无数程序员正在为该计划无偿提供帮助。Linux是开源的Unix是收费的。

2023-10-10 08:00:00 94

原创 linux入门到精通-第三章-vi(vim)编辑器

gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。它使用GTK+编写而成,它十分的简单易用,有良好的语法高亮,对中文支持很好,支持包括gb2312、gbk在内的多种字符编码。gedit是一个自由软件。这是 Linux 下的一个纯文本编辑器,但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。

2023-09-19 08:00:00 192

原创 linux入门到精通-第二章-常用命令和工具

command:命令名,相应功能的英文单词或单词的缩写[-options]: 选项,可用来对命令进行控制,也可以省略,[]中括号代表可选。一个横杆后面跟单词缩写,两个横杆后面是跟完整单词parameter1…: 传给命令的参数,可以是零个一个或多个。

2023-09-04 08:00:00 119

原创 nginx通过实现rtmp服务及使用flv.js播放

设置gop_cache off;可以去掉缓存,加快速度,延迟从5秒减少到2秒,但是打开播放会卡,播放也不会很流畅。//改为自己服务的地址。

2023-08-29 08:00:00 678

原创 消息中间件-kafka实战-第五章-kafka重复消费、顺序消费及死信队列

这个默认值是比较坑人的,如果你的消息处理逻辑比较重,比如需要查数据库,调用接口,甚至是复杂计算,那么你很难保证能够在5min内处理完500条消息,也就是说,如果上游真的突然大爆发生产了成千上万条消息,而平摊到每个消费者身上的消息达到了500的又无法按时消费完成的话就会触发rebalance, 然后这批消息会被分配到另一个消费者中,还是会处理不完,又会触发rebalance, 这样这批消息就永远也处理不完,而且一直在重复处理。,单次poll调用返回的最大消息记录数,如果处理逻辑很轻量,可以适当提高该值。

2023-08-22 08:00:00 838

原创 消息中间件-kafka实战-第六章-kafka加线程池多线程消费

头条面试:当线上Kafka集群有大量消息积压时,如何利用多线程消费解决消费积压问题

2023-08-18 08:00:00 496

原创 百度飞浆实战-手写数字识别

因为每张图片是28*28(784)像素,所以我们输入层设置为784个神经元,隐藏层是512(这个数据是可以变得,一般是深度学习设计者根据经验计算得出),输出层是10(0~9的数字)飞桨框架帮助我们将MNIST数据集进行了内置。再项目中搜索,找到打开链接。

2023-08-15 08:00:00 370

原创 使用SpringAop切面编程通过Spel表达式实现Controller权限控制

我们仅需要定义一个value属性用于接收表达式即可。@Target({/*** permissionAll()-----只要配置了角色就可以访问* hasPermission("MENU.QUERY")-----有MENU.QUERY操作权限的角色可以访问* hasAnyPermission("MENU.QUERY","MENU.ADD")-----有MENU.QUERY操作权限的角色可以访问* permitAll()-----放行所有请求。

2023-08-14 18:30:00 724

原创 SpringBoot集成企业微信群聊机器人消息

现在很多企业都在使用企业微信进行工作交流,自从企业微信推出群机器人之后,使用企业微信的小伙伴一般都会用机器人来推送定时消息或者提醒等,这样能够为企业工作群的管理提升效率,能很好的帮助企业运营管理工作群,同样它可以作为一个小助手,也为工作增加一些乐趣。

2023-08-03 08:00:00 1001

原创 Ubuntu20.04安装redis的c++操作库hiredis

我们这里先了解一下hiredis的基本接口,笔者都加了注释。由于上面下载的不是源码,所以不需要如下操作。由于上面下载的不是源码,所以不需要如下操作。由于上面下载的不是源码,所以不需要配置。

2023-07-12 08:50:45 566

原创 wireshark抓包工具实战

Kali Linux 系统自带 Wireshark 工具,而 Windows 系统中默认没有安装该工具。该工具主要是用来捕获网络数据包,并自动解析数据包,为用户显示数据包的详细信息,供用户对数据包进行分析。可以使用该工具捕获并分析各类协议数据包,本文将讲解该工具的安装及基本使用方法。其中服务器发送FIN和回复ACK合并发送,如果想要分开发送,可以在close(cfd)之前执行一次sleep(1)延时。以太网层(MAC地址)包含目的地址(6字节)、源地址(6字节)、地址类型(2个字节),对应的mac地址是。

2023-07-03 20:15:00 2797 3

原创 gdb定位段错误Segmentation fault (core dumped)

当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。我们可以认为 core dump 是“内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。

2023-06-26 08:00:00 2038

原创 SpringBoot集成企业微信自建应用消息

消息群发,是企业微信提供的用于企业向成员推送企业通知的工具,支持管理端手动发送以及API接口发送。支持的消息类型包含文本、图文、外链图文、音频、视频、图片。同时针对企业内的场景,企业微信还提供诸如消息自动回复设置、管理员可查看用户上行消息、素材库等功能。

2023-06-19 08:00:00 808

原创 SpringBoot进阶-SpringBoot如何实现配置文件脱敏

在很多开发场景中我们的SpringBoot应用是被打包成了一个Jar文件来使用的,利用解压缩工具可以将这个Jar包解压出来并且在对应的配置路径下找到数据库的访问地址以及数据库的登录密码等等,这是极不安全的操作。所以接下来我们就来研究一下如何在Spring Boot中对数据库配置文件中的相关敏感数据进行脱敏处理。

2023-06-12 08:00:00 419

原创 SpringBoot集成钉钉企业内机器人群消息推送

企业机器人是钉钉为用户提供的组织内部使用的机器人,为组织数字化转型业务服务。本教程指导你为企业或组织开发一个内部机器人,企业内的其他成员可以在不同的群中添加该机器人,实现消息问答。

2023-06-05 08:00:00 1291

转载 设计模式-责任链模式

责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。

2023-05-30 18:00:00 94 1

原创 java自研udp负载均衡服务实现gb28181的sip信令代理

对于海量的摄像头以及Sip下级,都通过SipProxy的一个出入口开访问背后的多个信令服务器。SipProxy监听一个udp端口,所有摄像头和SipServer对于SipProxy来说都是客户端IPC摄像头1 - - - - - - - - SipServer1(信令服务) | | SipServer(下级) - - - < - - - > SipProxy < - - - > | | IPC摄像头2 - - - - - - - - SipServer2(信令服务)

2023-05-29 08:00:00 1382

原创 centos或ubuntu部署OpenSips

竞争对手Kamailio、Asterisk。

2023-05-22 08:00:00 962 1

原创 linux中epoll+socket实战

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。TCP接收到事件时会回调触发epoll_wait 中事件第一个参数就是前面函数的返回值。

2023-05-15 08:00:00 1403

原创 Jenkins+Docker+gitee 持续部署spring boot 应用教程

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成

2023-04-30 08:00:00 1105

原创 Java线程池从入门到精通(线程池实战)

AbstractExecutorService 则是上层的抽象类,将执行任务的流程串联了起来,保证下层的实现只需关注一个执行任务的方法即可。最下层的实现类 ThreadPoolExecutor 实现最复杂的运行部分,ThreadPoolExecutor 将会一方面维护自身的生命周期,另一方面同时管理线程和任务,使两者良好的结合从而执行并行任务。只有当队列中任务数量>corePoolSize时,才会触发创建非核心线程,并且根据任务执行的长短,可能会导致无法顺序执行。

2023-04-24 07:45:00 991

原创 java使用S3协议通过dfs实现Spring的SPI机制和spring.factories

SPI 的全称是Service Provider Interface,即提供服务接口;是一种服务发现机制,SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。

2023-04-18 07:00:00 531

原创 Alibaba开源的Java诊断工具Arthas-实战

可以看到level=null,则说明实际最终的level是从root logger里来的。一般我们使用arthas 进行接口具体的耗时分析 还可以结合 skyworking等分布式追踪框架查看耗时。第一步 可能只关系耗时大于多少的进行分析 (项目优化批量进行捕捉分析耗时的位置,也可以采用"盲"匹配)直接watch Connection 查看sql 这个可以满足基本的需求,没有执行参数的信息。表示遍历深度,可以调整来打印具体的参数和结果内容,默认值是1。当访问 user/101 时,watch会打印出结果。

2023-04-11 12:09:34 569

原创 SpringBoot集成钉钉自定义机器人群消息推送

企业内部有较多系统支撑着公司的核心业务流程,譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人,可以将这些系统事件同步到钉钉的聊天群。说明当前机器人尚不支持应答机制,该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的服务地址,即Outgoing机器人。调用频率限制由于消息发送太频繁会严重影响群成员的使用体验,因此钉钉开放平台对自定义机器人发送消息的频率作出以下限制:每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。

2023-03-29 14:00:00 2626 3

原创 联通雁飞格物IOT接入烟感和扬尘

前提条件:已在雁飞·格物DMP平台创建产品和设备,并获取设备的鉴权信息(ProductKey、DeviceKey和DeviceSerect等)。创建产品和设备具体操作细节,请参考创建产品、单个创建设备或批量创建设备文档。平台下发之后,设备监听到指令,然后进行本地设置,之后响应$sys/{productKey}/{deviceKey}/deviceShadow/command_reply。以MQTT直连设备使用一机一密认证方式鉴权接入平台为例,其他接入认证方式详见设备上线说明文档。

2023-03-20 08:00:00 1147 6

转载 在 C++ 中使用 Lambda表达式

在此示例中,sum变量是一个 Lambda 表达式,它接受两个参数a并b返回它们的总和。此外,lambda 表达式可以从周围范围捕获变量,这使得它们对于创建闭包和使用 C++ 中的函数式编程概念非常有用。默认情况下,lambda 表达式捕获的变量是常量,不能在 lambda 表达式主体内修改。两个示例都获得了相同的结果,但第二个示例使用了std::for_each算法和 lambda 表达式,这是 C++ 中更现代和简洁的技术。在最后一个例子中,变量x是通过引用捕获的,lambdaadd可以修改它的值。

2023-03-15 08:00:00 202

原创 技术方案评审

把需求抽象成接口。

2023-03-09 19:15:28 474

原创 mybatis实战

mybatis支持的映射方式有基于xml的mapper.xml文件、基于java的使用Mapper接口class,简单学习一下mybatis使用接口来配置映射的方法。接口方法注解主要是四个:@Insert、@Delete、@Update、@Select

2023-03-07 08:00:00 394

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除