自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

youbingchen的博客

这个博客可能更新比较慢 ,主战场迁移到:http://youbingchenyoubing.leanote.com/

  • 博客(63)
  • 收藏
  • 关注

原创 平民如何体验一把大模型知识库

选择镜像的时候,不要选择自带的官方镜像,而是要使用https://github.com/chatchat-space/Langchain-Chatchat中推荐的容器镜像,因为这个开源代码对软件(特别是CUDA版本有要求)注意:不用就停止掉,不然浪费你的资源额度,好像有15天的过期时间,如果15内不启动这个服务器,磁盘会被回收的,数据都没有了,就要重新进行下面安装步骤。2、部署的硬件条件: 如果自己购买,绝对是一笔不小的开支, 还好有其他大公司的慷慨解囊.1、准备好阿里云的GPU资源(时间有点长)

2023-11-21 18:12:58 84

原创 【AIGC】认识AIGC

从这些文章对比下,个人学习的话,如果是要了解算法本事源码和原理,可以从Alpaca和Open Assistant模型去学习.

2023-09-24 09:57:14 59

原创 Java基础知识

出来混,要学习java,本人原先具有C++的功力,所以学习java并不觉得难,但是还有一些特性难以时刻记住,所以在此做一些笔记,方便以后快速查询。注解(元数据) 第一次接触注解的概念,先了解一下注解的使用地方生成文档,这个是最常见的功能,常用的注解有@param @return @see跟踪代码的依赖性,实现替代配置文件功能在编译时进行格式检查。如@override 放在方法前,如果你这个方

2017-08-10 23:42:42 417 1

原创 Linux 虚拟内存机制

华为面试官问了我一个问题就是关于Linux虚拟内存机制,虽然我多少是回答上来,感觉好久没看操作系统的我是时候将其拿起来重温一遍 。 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构。Linux内存管理采用的是页式管理,使用的是多级页表,动态地址转换机构与主存、辅存共同实现虚拟内存一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间

2016-08-09 21:31:01 11583

原创 触发器

触发器的作用是在执行insert、delete和update命令之前或之后自动调用sql命令或存储过程,最多一个表可以建立6个触发器,因为触发器的类型主要分为: 1.Before2.After before 和 after代表触发器发生的时间是在每行操作的之前还是之后。其中after触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。而

2016-08-05 13:50:36 1465

原创 Go安装

Go的三种安装方式Go源码安装:这是一种标准的软件安装方式Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合快速安装,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了。第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等。这种安装方式适合那些熟悉相应系统的用户。最后,

2016-08-02 16:46:31 12552

原创 Go语言的特性

关于特性丢失为了简化设计,不支持函数重载和操作符重载为了避免c/C++开发中的一些bug和混乱,不支持隐式转换Go语言通过另一种途径实现面向对象设计放弃了类和类型的继承尽管在接口的使用方面可以实现类似变体类型的功能,但本身不支持变体类型不支持动态加载代码 不支持动态链接库不支持泛型通过recover和panic来替代异常机制不支持断言不支持静态变量Go编译器的知识 目前有2

2016-08-02 16:45:07 792

原创 golang编译器的准备

????????????????????????????????????,???????????????http??,??????http??,????????????,????????????,?????,????????????????,????????????????????????????????,?????,?????Vegeta??? Vegeta ????Go?????????

2016-08-01 13:41:40 720

原创 第一讲 go 语言简介

没有停止学习脚步的程序员,这篇博客这要介绍为什么要学习go语言,go语言是一种新的语言,一种并发的,带垃圾回收的、快速编译的语言 不仅就有上述特点,更重要的是,在我面试几家公司之后,面试官反复提到如果会go语言的话会更好。(这样学习的动力马上就有)Go有什么优势可直接编译成机器码,不依赖其他库,glibc的版本有一定的要求,部署就是扔一个文件上去就完成。Go为软件构造提供了一种模型,它使依赖分

2016-07-28 15:25:39 480

原创 Linux 下几款程序内存泄漏检查工具

写这篇博客的原因呢是因为自己在编写基于Nginx磁盘缓存管理程序,目前已经进入测试阶段,关于这个程序的测试分为几个主要步骤:1.内存管理是否正确(因为这个程序本身开辟很多内存空间进行缓存管理,同时这个程序程序本身就是基于C/C++开发的,内存管理机制一直是程序员头痛的东西)2.程序的健硕性如何(服务器任何程序的基本要求就是要满足高并发的要求,也就是说,如果达不到这个基本要求,程序并并不能成为服务器

2016-07-23 10:15:06 32959 1

原创 静态库和动态库

有一篇博客专门介绍程序编译过程,在程序编译步骤中有一个很重要的步骤就是链接,这篇博客主要比较静态库和动态库的差别。 在了解两者的区别,我们先学习一下基础知识库是什么库就是写好的,现有的,成熟的可以 复用的代码,现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都是从零开始,本质上库 就是一种可执行代码的二进制形式,可以被操作系统载入内存 执行,库有两种:静态库(.a,.lib)和

2016-07-21 14:33:30 467

原创 C 程序编译过程

通常我们使用gcc来生成可执行程序,命令为: gcc hello.c,默认生成可执行文件a.out,其中经过下面几个步骤:预处理(processing)编译(compilation)汇编 (Assembly)链接(Linking) 接下来将介绍每个步骤相应都做了那些工作预处理(preprocessing)将所有的#define删除,并且展开所有的宏定义处理所有的条件编译指令,比如#

2016-07-21 14:27:26 691

原创 C++ 中的sprintf和snprintf 函数的区别

在编程过程中经常有字符串转数字和数字转字符串,相应的函数大家最经常见到可能是atoi和itoa。但是itoa不是标准库里面的函数,所以接下来介绍下面两个函数sprintf和snprintf函数,并将它们比较一番。最近写的博客目前就是一些自己在实现基于 Nginx磁盘缓存的一些知识总结sprintf()函数用法int sprintf(char *string,char *format,arg_lis

2016-07-21 10:59:31 6869

原创 Nginx 模块自主开发十: 设计一个基于NGINX 的缓存服务

计算机不仅需要对计算机理论有一定的要求,同时要学以致用,这篇博客将结合公司给我的一个问题,我自主设计一个初步的方案 ,如何 有什么bug或是想法,可以提出来,我一直秉承一个思想:good idea worth spreading.只有将自己的学习计划放在互联网上,才会进步得更快。问题 将磁盘文件分块加载到内存,一般来说磁盘文件远大于内存空间,所以将磁盘文件分块,部分读入内存,系统预分配内存空间

2016-07-06 09:10:30 658 3

原创 Nginx 模块自主开发八: 总结 Nginx框架的流程

前面两篇博客:Nginx 模块自主开发六:源码剖析配置文件解析过程和 Nginx 模块自主开发七:源码剖析整个Nginx框架从源码层面上解析Nginx框架,这样导致太过于 细节,所以本篇博客将带领你系统上过一遍Nginx框架Nginx主框架的流程当启动Nginx程序时候,Nginx从入口函数Main()开始执行,检查命令行参数和环境变量,初始化ngx_modules数组,然后进入初始化函数ngx_

2016-07-01 15:16:06 993

原创 C++ 类型转换运算符

C语言存在两种类型转换(隐式转换,显式转换) 隐式转换,是针对不同类型之间的赋值和运算,函数调用传递参数 这些的转换都是由编译器自动完成char ch; int i=ch; 显式转换 由程序员在变量前面添加型转换 char *pc=(char *)pb void *ps=(void*)paC++ 中的类型转换* 通过上述的两种方式,C语言大部分的类型转换都可以顺利进行,C++继承

2016-07-01 09:20:42 1046

原创 Nginx 模块自主开发七:源码剖析整个Nginx框架

在博客提到的Nginx 模块自主开发四: 模块数据结构一个很重要的数据结构ngx_module_s,所有的模块都是用这个结构体来表示。ngx_module_t结构体 模块又分为ngx_core_module_t和ngx_xxx_module_t,而在ngx_module_t中会包含这两个结构,只不过不同类的模块包含不同的结构,一般会 用ctx表示,ngx_module_t又用type这个域用来表

2016-06-30 11:40:51 12227 11

原创 Nginx 模块自主开发六:源码剖析配置文件解析过程

Nginx源码实现有一个很好的优点就是模块化,有点像面向对象语言的设计模式,实现“高内聚,松耦合”,这篇博客主要讲解模块的共有流程 集中在ngx_cycle.c、 ngx_process.c、 ngx_process_cycle.c 和 ngx_event.c代码中。 共有流程开始于解析 nginx 配置,这个过程集中在 ngx_init_cycle 函数中。 ngx_init_cy

2016-06-29 13:43:23 7924

原创 从流程解析Nginx对 Native aio支持

强烈建议这篇博客和从源码解析Nginx对 Native aio支持一起阅读异步I/O 异步IO就是把IO提交给系统,让系统替你做,做完了再用某种方式通知你(通过信号,或者其他异步方式通知,这时候,操作系统已经帮你完成IO操作,具体来说就是你那个作为传入参数的的buffer的指针所指向的空间已经读到了数据或者你的buffer的数据已经写出去了)非阻塞I/O 非阻塞IO就是你要通过某种方式不定

2016-06-27 16:12:18 2705

原创 从源码解析Nginx对 Native aio支持

使用异步I/O大大提高应用程序的性能 linux下有两种aio,一种是glibc实现的aio,这个比较烂,它是直接在用户空间用pthread进行模拟的。还有一种就是内核实现的aio,这些系统调用是以io_xxx开始的。下面将针对 同步和异步模型,以及阻塞和非阻塞的模型进行介绍。而native aio的优点就是能够同时提交多个io请求给内核,然后直接由内核的io调度算法去处理这些请求(direct

2016-06-27 11:43:59 6753

原创 C++中的重载,重写, 重定义 差别

一、重载(overload)指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。 (1)相同的范围(在同一个作用域中) ; (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 (5)返回值可以不同;二、重写(也称为覆盖 override)是指派生类重新定义基类的虚函数,特征是: (1)不在同一个作用域(分别位于派生类与基类) ; (

2016-06-26 21:15:38 2067

原创 hadoop之Hbase简介

HBASE的发展从bigtable讲起bigtable 是一个分布式存储系统利用mapreduce分布式并行计算模型处理海量数据使用分布式文系统GFS作为底层数据存储采用Chubby提供协同服务管理扩展到PB级别的数据和上千台机器,具有广泛应用性, 可扩展性,高性能和高应用的特点很多项目都存储在BigTable中,包括搜索、财经、地图、社交网络Orkut、视频共享网站YouTube。HB

2016-06-26 10:18:11 995

原创 MapReduce 之一:MapReduce体系结构

MapReduce是一种分布式并行编程。分布式程序运行在大规模计算机集群上,可以并行执行大规模数据任务,从而获得海量的计算能力。MapReduce相对传统的并行计算框架 传统并行计算框架 MapReduce 集群架构容错性 共享式(共享内存/g共享存储).容错性差 硬件/价格/扩展性 刀片服务器、高速网、SAN、价格贵、扩展性差 编程/学习难度 难 适用场景 实

2016-06-25 14:11:03 4172

原创 Nginx 缓存机制 详解之二 缓存加载进程

上一篇博客已经详细讲解了缓存管理进程,接下来详细讲解缓存加载进程机制缓存加载进程机制ngx_cache_loader_process_handler函数 加载进程 和管理进程都是从函数ngx_cache_manager_process_cycle进入,只是接下来的流程函数不一样ngx_process_events_and_timers()->ngx_event_expire_timers()-

2016-06-24 19:05:48 1786

原创 Nginx 缓存机制 详解之一 缓存管理进程

Nginx缓存的基本思路就是利用请求的局部性原理,下次访问不再连接后端服务器。 Nginx是通过设置xxx_cache_path(比如proxy_cache_path),主要用来创建管理cache的共享 内存数据结构(红黑树和对列),另一个是xxx_cache主要 用来前面的参数创建内存空间。命令xxx_cache_path,会调用ngx_http_file_cache_set_slot函数

2016-06-24 18:12:22 11424

原创 Nginx 模块自主开发四: 模块数据结构

其中,ngx_module_s,这 个是 每个新的模块的定义struct ngx_module_s { /*ctx_index表示当前模块在这类模块中的序号。这个 成员常常是由管理模块的 一个Nginx核心模块设置的,对于所有的http模块而言,ctx_index是由核心模块ngx_http_module设置的,ctx_index非常重要,Nginx的模块化设计非常依赖各个模块的顺序*/

2016-06-24 11:07:44 1113

原创 Nginx 模块自主开发二:Nginx的类型命名封装

我们在看Nginx源代码的时候,看不到我们以前在写C语言的类型名称(比如int,char等),其实是Nginx为了跨平台习惯将一些 C语言的东西进行了封装,所以在编写自己的模块的 时候,建议尽量沿用Nginx的习惯。整型封装typedef intptr_t ngx_int_t;typedef uintptr_t ngx_uint_t;ngx_str_t 数据结构体

2016-06-23 14:29:49 746

原创 Nginx 模块自主开发一:开发前的了解

个人觉得要真正理解源码,如果 只停留在理论是远远不够,所以从现在起,要开始学习自己开发Nginx模块,再反过来理解Nginx本身代码。 Nginx 发送文件或转发 请求到其他服务器,有处理模块处理,但需要压缩或在服务端添加一些东西时,可以采用过滤模块,还是有一些核心模块主要负责管理网络层和应用层的 协议。如果处理模块把请求反向代理到后端的服务器,就变成另外一类的模块:负载均衡模块。负载均衡

2016-06-23 11:02:23 541 1

原创 Hbase实战二:编程实战

在安装后HbaseHbase实战一:安装配置,大家快乐的编程实践把1.利用Shell编程在HBase用create命令创建表 create 'student','Sname','Ssex','Sage','Sdept','course' 此时,即创建了一个“student”表,属性有:Sname,Ssex,Sage,Sdept,course。因为HBase的表中会有一个系统默认的属性作为主键,主

2016-06-22 21:45:51 700

原创 四:深入Nginx之事件和连接 (之三:连接池)

在Nginx中的connection就是对TCP连接的封装,包括连接的socket、读事件、写事件。利用Nginx封装的connection,我们 可以很方便的使用nginx处理与连接相关的事情 ,所以Nginx不仅可以作为 一个 web服务器,也可以邮件服务器,同时也可以利用nginx提供的connection,可以实现与任何后端服务打交道。 流程:结合一个tcp连接的生命周期,首先nginx

2016-06-22 16:56:21 4917 1

原创 epoll之二:epoll实战

epoll_create系统调用int epoll_create(int size);epoll_create返回 一个句柄,之后epoll的 使用都将依靠这个 句柄 来 标识,参数 size是告诉epoll所要处理的大致事件数目,不再使用epoll时,必须调用close 关闭这个句柄。size这个参数只是 告诉内核这个epoll对象会处理的事件大致数目,而不是 能够处理 的事件的最大个数epoll

2016-06-22 14:56:29 799

原创 epoll之一:epoll的原理

之前 我写过一篇博客IO复用之select poll epoll 函数,大概介绍了一下epoll和select,poll的一些区别,接下来要 从原理剖析epoll的强大的原因select和poll的工作机制在某一时刻,进程收集有事件连接时,大部分的连接是没有发生事件,但是 select和poll的工作机制,在 每次收集事件 的 时候,都把全部 的 连接的 套接字传给操作系统(这首先就是用户态内存到

2016-06-22 13:36:33 511

原创 四:深入Nginx之事件和连接 (之二)

ngx_events_module 核心事件 定义新的事类型,并定义每个事件模块都需要实现的ngx_event_module_t接口,还需要管理这些事件模块生成的 配置 项结构体,并 解析事件类配置项,解析配置项时会调用其在ngx_command_t数组 中 定义的回调方法。 假设定义一个ngx_command_t(当然这个模块如何处理自己感兴趣的配置项),ngx_events_comma

2016-06-22 10:40:18 1034

原创 Hbase实战一:安装配置

HBase 的安装和配置前面的博客大数据处理架构Hadoop配置已经详细介绍如何安装Hadoop,但是安装完Hadoop,只包含HDFS和MapReduce等核心组件,并不包含HBase,因此,HBase需要独立安装。HBase下载地址 友情提示:前面的博客大数据处理架构Hadoop配置 Hadoop安装配置有三种方式:单机、伪分布、分布式,相对应的Hbase也有三种安装方式。如果是单机直接将二

2016-06-21 16:44:11 964

原创 四:深入Nginx之事件和连接 (之一)

Nginx 本质上是基于事件驱动的Web服务器,事件 处理框架所要解决的问题就是如何收集、管理、分发事件。 事件主要 以网络事件(TCP网络事件为主 )定时器事件 Nginx 定义一个 核心模块ngx_event_module,参考博客一深入理解Nginx的 模块化 ,全局观,Nginx在启动时会调用ngx_init_cycle方法 解析配置文件时,一旦 在nginx.conf中找到感兴趣的

2016-06-20 15:21:12 7017

原创 三:深入理解Nginx的模块化 (结合源码详解)

盗用前面用到的流程图 第二步实际上是调用 ngx_add_inherited_sockets()//文件名: Nginx.cint ngx_cdeclmain(int argc, char *const *argv){ ... if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) { return 1;

2016-06-20 10:56:16 1966

原创 大数据处理架构Hadoop配置

title: 大数据处理架构Hadoop date: 2016-06-02 tags: HardoopHadoop简介Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中(但是具体在应用层不一定只用java)Hadoop的核心是分布式文件系统

2016-06-18 23:28:30 3626

原创 分布式文件系统HDFS 之一

分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。HDFS实现的目标兼容廉价的硬件设备流数据读写大数据集简单的文件模型强大的跨平台兼容性HDFS自身的局限性不适合低延时数据访问无法高效存储大量的小文件不支持多用户写入及任意修改文件(只允许追加,不允许修改) HDFS默认一个块64MB,一个文件被分成多个块,以块作为存储单位,块的大小远远大于普通文件系统,可以最小化寻址开

2016-06-16 22:52:36 3306

原创 Linux 防火墙之iptables

防火墙最主要的任务就是规划出: + 切割被信任(子域)与不被 信任(Internet)的 网段 + 切分出可提供Internet的服务与必须受到保护的服务 + 分析出可接受与不可接受的封包状态。Linux 系统上 防火墙的主要类别 Netfilter(封包过滤机制) 就是分析进入主机网络分包,将分包 表头数据提取出来进行分析,以决定是否丢弃。由于这种方式可以直接 分析封包 表头的数据,

2016-06-16 15:34:08 576

原创 一深入理解Nginx的 模块化 ,全局观

Nginx源码目录结构.├── auto 自动检测系统环境以及编译相关的脚本│ ├── cc 关于编译器相关的编译选项的检测脚本│ ├── lib nginx编译所需要的一些库的检测脚本│ ├── os 与平台相关的一些系统参数与系统调用相关的检测│ └── types 与数据类型相关的一

2016-06-15 14:44:28 4911

空空如也

空空如也

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

TA关注的人

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