个人网站设计与实现源码,广州市口碑好的网站制作排名,wordpress默认首页是什么,公司徽标设计图片目录
一.初始JavaScript
1.什么是JavaScript
2.JS和HTML以及CSS的关系
3.JS的组成
二.第一份JS代码
几种JS的书写形式
JS的输入输出
三.JS的核心语法
1.变量(几种类型)
1.1 number数字类型
1.2 boolean类型
1.3 string字符串类型
1.4 undefined:未定义的数据类型 …目录一.初始JavaScript1.什么是JavaScript2.JS和HTML以及CSS的关系3.JS的组成二.第一份JS代码几种JS的书写形式JS的输入输出三.JS的核心语法1.变量(几种类型)1.1 number数字类型1.2 boolean类型1.3 string字符串类型1.4 undefined:未定义的数据类型1.5 null 空值类型2.运算符2.1 比较相等2.2 和||2.3 /2.4 其他3.条件语句4.数组4.1 数组的创建4.2 打印数组4.3 获取数组元素4.4 获取数组长度4.5 插入元素4.6 删除元素5.函数5.1 函数的基本形式5.2 函数表达式5.3 作用域6.对象四.DOM API1.获取元素2.事件3.操作元素3.1 操作元素内容3.2 操作元素属性3.3 操作元素样式4.操作节点4.1 新增元素4.2 删除元素前面已经将HTML和CSS都介绍过了,现在前端三剑客就只剩下JS了,那么今天我们就来聊一聊JS吧!!一.初始JavaScript1.什么是JavaScriptJavaScript简称JS,JS是世界上最流行的编程语言之一,JS也是一个脚本语言,通过解释器运行,主要在浏览器上运行,现在也可以基于node.js在服务器上运行!!!2.JS和HTML以及CSS的关系前面学的HTML更像是一个骨架(静态页面),CSS更像是赋予了一身好看的皮囊(网页的表现),而JS就赋予了其魂魄(网页的行为),JS的出现让网页不再单一,不再像是一张报纸,就更像是一个与人交互的APP了!!!3.JS的组成●ECMAScript(简称ES):JavaScript核心语法●DOM API:浏览器提供的一组操作页面元素的API●BOM API:浏览器提供的一组操作浏览器窗口的API二.第一份JS代码既然JS也是运行在浏览器里面的,那么必然是离不开HTML的,因此JS的代码通常也是嵌入到HTML中来进行编写的,一般是放在script标签里面的script alert(hello); /script在script里面可以放很多种编译语言,而现在JS就是其默认的语言!!上面通过alert就可以弹出一个对话框:几种JS的书写形式●内嵌式:把JS代码写到script标签中(也就是上面的写法);●行内式:把JS写到html元素的内部button onclickalert(hello 2)行内式/button通过一个标签的点击事件来写●外部式把JS写到一个独立的.js文件中,在html中通过script来引入script srcc.js //外部式 /script这种外部式也是开发中最常使用的!如果一个script标签里面既有外部式,又有内嵌式,那就会只执行外部式的,而不执行内嵌式的代码,因此想要都执行,只能分开来写!!JS的输入输出js与用户的交互不只有上面的一种弹框形式,输入我们可以使用prompt弹出一个输入框,这个不常使用就不具体介绍了,而输出不只有上面的alert弹框,患有另一种更常使用的console.log,这会在开发中工具里面的控制台打印一个日志,方便人们随时来查看script console.log(hello log); /script另外这个控制台也是有纠错功能的!!那么接下来就主要来介绍一下JS的核心语法(这里主要介绍和Java差异的地方)和其相关的API三.JS的核心语法1.变量(几种类型)JS中的变量和Java中的变量还是差异比较大的,JS中一般这样写:var 变量名 初始值(不论创建什么类型的变量,类型只有一个就是var,而具体的类型要看后面所赋予的值是什么类型的,那么这个变量就是什么类型的)var num 10;//创建了一个名为num的数字类型的变量 var str hello;//创建了一个名为str的字符串类型的变量 var arrs [];//创建了一个名为arrs的数组(这个数组里面啥都可以放)类似于这样的就是JS中的变量,另外这个变量你在后续的改变过程中 也是可以任意改变的,既可以改为字符串,也可以改为数字…当改变成什么类型的值,这个变量也就是什么类型的变量了,这样的变量类型,我们一般称为动态类型,而像Java这样的语言显然是不支持这样的,类似于Java的一般都称为静态类型的,C,C,Java,Go,Rust都是这样的!下面介绍一下JS中的几种数据类型:1.1 number数字类型在JS中数字类型是不区分整数和浮点数的,还有几个特殊的取值:infinity表示无穷大,超出了JS最大取值;-infinity负无穷大,超出了JS最小的取值范围;NaN表示当前结果不是一个数字假如写这样的语句:console.log(‘hello’ - 10);在Java中这样写是肯定会报错的,但是在JS中会输出这样的语句,就表示当前的值不是一个数字1.2 boolean类型true为真,false 为假,如果使用一个布尔类型的变量去参与运算的话,这里的是被当成1和0来使用的,true会被当成1来进行处理,这样的设定方式被称为隐式类型转换let a true; console.log(a 1);这样的结果就是,这种设定方式其实是不科学的,但是我们基本也不会这样使用,因此这个了解一下就好补充一个小知识:如果一个编译语言,支持隐式类型转换,认为类型越弱 反之如果一个编译语言,不支持隐式类型转换,认为类型越强, 这里的 强类型/弱类型 和 静态类型/动态类型 是不一样的,像Java这样的语言就是强类型,静态类型的的语言,而JS是弱类型,动态类型的语言…1.3 string字符串类型JS中也是不区分字符串和字符的,剩下的都基本和Java类似了,另外由于这里的字符串不区分单双引号 因此如果一个字符串中有其他单双引号,外面单引号里面可以使用双引号,外面单引号里面可以使用双引号,如果一定要在双引号内部使用双引号的话 一定是要进行转义的\类似于这样,单引号也是一样的,而且转义字符也有很多种\t,\n,\f…都是支持的!!!另外求字符串的长度是通过length来得到,s.length就可以获得长度,而且这里的长度是按字符来进行计算的,一个汉字也是一个字符,另外字符串中也有很多的方法可以使用~let s hello; console.log(s.length); let s2 哈哈; console.log(s2.length);1.4 undefined:未定义的数据类型undefined是唯一的值表示未定义的值,一个未初始的变量,就是一个特殊的值undefined类型也是undefined;var w; console.log(w);这样的写法其实是不合法的,在Java就会直接报错,但是JS不会,这是一种独特的数据类型!1.5 null 空值类型null表示唯一的值,表示空值,这个类型和上面的类型是不一样的,null是合法的,而undefined是不合法的!!2.运算符2.1 比较相等在JS中和! 表示只比较两个变量的值,如果一个变量通过隐式类型转换可以得到另一个值那么这两个值就是相等的, 和! 表示既要比较两个变量的值,又要比较两个变量的类型,如果有一个是不相等的那么这就表示不相等了console.log(10 10); console.log(10 10);而说到比较:一般有三个维度的比较1.比较身份(是否为同一个对象) 2.比较值(对象里面存储的是否相同) 3.比较类型(两个对象是否是同一个类型),在这里比较的就是值,而比较的就是值和类型2.2 和||在Java中 和|| 就只返回一个布尔类型:true或者false,但是在,JS中 和|| 会返回其中一个表达式的值例如:c a || b 如果a的值为真(非0),就会返回a的值,也就是c此时的值就是a的值,如果a的值为假,就会返回b的值,也就是c此时的值就是b的值c a b 如果a的值为真(非0),就会返回b的值,也就是c此时的值就是b的值,如果a的值为假,就会返回a的值,也就是c此时的值就是a的值基本就相当于只看前面一个值的结果就可以确定了,这个表达式应该是什么了而这样就衍生出了JS的一种习惯用法***判断一个变量是否为空值 ,如果是空值就会赋予一个新的值:a a || 0;2.3 /JS的除法和Java的也不太一样,在JS中不区分整数小数,因此1/2结果就是0.5而Java中是0,这是不一样的2.4 其他剩下的运算符就和Java的基本类似了,这里就不过多介绍了3.条件语句在JS中的if else 和三目表达式以及while,continue,break都是和Java基本一样的,不过在JS中的条件不一定得是一个能得到一个布尔值的表达式,其实只要是个表达式就是可以的,因为在JS中是存在隐式类型转换的,这一点和Java还是不太一样的!!4.数组JS的数组和Java的区别还是很大的4.1 数组的创建let arr new Array(); let arr2 []; let arr3 [1,2,3];这几种创建方式都是可以的,另外需要注意的是在JS数组中可以放任何类型(包括数组也可以)的数组,而且不能强制要求里面只能放一种类型4.2 打印数组直接通过 console.log(数组名) 就可以直接打印了let arr [1,2,3,hello]; console.log(arr);4.3 获取数组元素这个和Java中的获取也是类似的,通过下标来获取,JS中数组的下标也是从0开始计算的let arr [1,2,3,hello]; console.log(arr[0]); console.log(arr[1]); console.log(arr[2]); console.log(arr[3]);而如果访问一个超出数组下标的值 是不会出现数组越界异常的,而是会得到undefinedlet arr [1,2,3,hello]; console.log(arr[100]);接下来的一系列操作反正我是被震惊到了:let arr [1,2,3,hello]; arr[100] 10; console.log(arr);这种操作在Java中是会直接报错的,但是JS不会,这样非但不会报错,而且会得到一个更大的数组 前面有的元素还是不变的 ,而下标为100的值就是锁赋予的值,而中间的所有值都是空属性的也就是undefinedlet arr [1,2,3,hello]; arr[-1] 10; console.log(arr);这样的操作也是不会报错的,此时的-1与其说是一个下标,不如说是一个’属性’,这样的一一对应更像是一个键值对,放在了这个数组里面,而且这样的操作是不会影响到数组的长度的let arr [1,2,3,hello]; arr[hello] 20; console.log(arr);这个也是可以的 ,就像上面说的键值对一样,这个更能体现出键值对的效果,而且通过arr[hello]也是能够得到20的,因此JS中的数组,与其说是一个数组其更像是一个map,更准确的说这是一个对象,而且是可以在运行时,给对象新增属性的,arr.hello 20;就像是给这个数组了一个属性,属性名字为hello,属性的值为20,而上面这些操作之所以会感到差异 主要还是静态类型和动态类型两个流派的碰撞,从而对我产生的冲击感!!4.4 获取数组长度通过数组名.length就可以,而且而且而且这个length是可以改的,假设原本为4 改成3就会删除掉最后一个元素,改成5就会多一个空属性(undefined)let arr [1,2,3,hello]; console.log(arr); console.log(arr.length); arr.length 3; console.log(arr); console.log(arr.length);4.5 插入元素最常见的就是push方法,类似于Java中ArrayList中的add方法let arr [1,2,3,hello]; console.log(arr); arr.push(54); console.log(arr);4.6 删除元素splice方法,准确来说是针对数组中的某个片段,进行替换(既可以用来插入元素,也可以用来删除元素)let arr [1,2,3,hello]; console.log(arr); arr.splice(1,2,hi); console.log(arr);splice中第一个参数是起始位置,第二个参数表示多少个(从起始位置开始),后面的则为要替换的值(不写就表示删除)另外JS的数组中也是有很多的方法的,这里就不具体介绍了5.函数在JS中是函数(function)而在Java中叫做方法(method) 这两个其实是同一个东西,通常情况下不去考量这两个概念的区别,但是如果非要考量,可以这样理解:函数是和对象独立开来的代码片段,而方法则是依托对象的代码片段,方法可以理解为成员函数~5.1 函数的基本形式函数主要包括定义和调用:●定义: function 函数名(形参列表){ 这里不必写返回值类型,而且形参列表里面也不用写具体的类型其实都是let类型的 函数实体 return 返回值 } ●调用: 函数名(实参列表)例如:function add(x,y){ return x y; } let num add(10,20); console.log(num); let num1 add(hello,27); console.log(num1);//各种参数都是可以的只要能进行这种运算就可以一般需要调用时传入的实参,个数和类型都是应该匹配的,但是实际上,JS并没有做出这样的限制,因此多个参数也是可以的function add(a,b,c,d,e,f,g){ return a b c d e f g; } console.log(add(10,20)); console.log(add(10,20,30)); console.log(add(10,20,30,40));这样写虽然没有报错但是其得到的结果不是一个整数是NaN,因为没有传入的参数此时是undefined,因此还需要加以修改,这就用到了,前面讲过的判断一个变量是否为空值的语句function add(a,b,c,d,e,f,g){ a a || 0; b b || 0; c c || 0; d d || 0; e e || 0; f f || 0; g g || 0; return a b c d e f g; } console.log(add(10,20)); console.log(add(10,20,30)); console.log(add(10,20,30,40));这样就可以得到正确的结果了而如果实参比形参多了,多出来的实参其实就没有了,函数内部就拿不到了,这样的设定其实是JS的专属属性(所以我们自己写的时候尽量还是保证形参和实参的个数能够匹配,保证不会出现这样的问题)5.2 函数表达式在JS中,函数作为一等公民(函数就像一个普通的变量一样,可以被赋值给其他的变量,也可以作为另一个函数的参数,还可以作为另一个函数的返回值(这一般就被称为一等公民)),而这里的函数表达式其实就是把一个函数赋值给一个变量例如:function a(){ console.log(a); } let f a;此时a虽然作为一个函数,但是后面没有带括号的话,这就是一个赋值操作,而不是函数调用,就是将a个函数赋值给了f这个变量,然后通过f()也是可以调用这个函数的;另外上面的操作也是可以合并的:let f function (){ console.log(a); }这就类似于Java中的lambda表达式,很多编译语言里面都是有这种操作的!!5.3 作用域在ES6(ES6是JS的版本就相当于Java的1.8版本地位也是差不多的,最经典的版本)之前其实是只有全局作用域和函数作用域的概念而没有块级作用域(var搞的鬼)的, 而在ES6之后JS引入了let,然后就有了块级作用域这个概念,但是块级作用域是{}内部无法访问到{}外部的,而在JS中这是可以做到的let num 0; { console.log(num);//这是可以做到的 }另外定义在函数外部的变量,即使不传参也是可以访问到的let num 0; function hello(){ console.log(num); } hello();在JS中的作用域是支持逐级向上查找的, 当在函数中尝试找到这个变量,但是函数中没有,就会往上寻找,找到外面,直到找到全局变量作用域,还是没找到的话就会报错了,因此这个是支持套娃的let num 10; function hello(){ function hello1(){ console.log(num); } hello1(); } hello();这其实就是一个作用域链,而如果在作用域链不同节点上存在多个同名的变量,这是会从内向外找,找到第一个就结束(而如果想找到全局变量的这个变量可以使用window.变量来找,不过这样的操作还是最好用传参来找比较靠谱)6.对象对象就是一些属性和方法的集合,在Java中一般对象是依托于类的,有了类通过类的实例化才可以产生对象,而在JS中对象是不依托于类的 ,在JS所有的类都是Object类型;在JS中创建对象就直接通过{}就可以了,举个例子:let student { name: 张三, age: 20, weight: 130, height: 175, eat: function (){ console.log(吃饭); }, sleep: function(){ console.log(睡觉); }, }; console.log(student.name); console.log(student.age); console.log(student.weight); console.log(student.height); console.log(student.eat); console.log(student.sleep);然后通过类名.属性 就可以进行访问了,而且在JS中一个对象有哪些成员,也是可以动态改变的另外JS中也是有一些现成的对象的,像数组,本质上就可以视为是一个对象,而JS虽然有对象,但是JS不算是一个面向对象的变成语言,因为其并没有封装继承(其实在JS中有一个原型其实可以实现,但是也是和Java中有差别的) 多态的面向对象的特征~~四.DOM API其实浏览器给JS提供的API是非常丰富的,其中包括DOM API ,BOM AP还有websocket API,canvas API而这些统称为Web API(这里主要介绍DOM API)1.获取元素获取元素(使用DOM的基础):想操作页面上的元素,就需要先拿到对应的JS对象,DOM其实提供了一组能获得页面元素的API,这里介绍两个最重要的:querySelector,querySelectorAll,这两个其实是document(页面中的全局变量,一个页面加载好了,就会自动生成一个全局变量,就叫document,这里面有一些属性和方法,就可以操作页面的内容)对象的属性div classone hello /div script let div document.querySelector(.one); console.log(div); /scriptquerySelector的参数其实就是一个CSS的选择器(各种选择器都可以),通过这样就可以选中这个元素了而如果选中的元素是有多个的,再使用querySelector就会选中第一个元素(匹配结果的第一个),而想要全部选择就得使用querySelectorAll(会返回一个类似于数组的东西,准确的说返回的不是一个真正的原生数组,而是一个对象,不过这个对象有length,也能通过下标来访问内部元素,这样的对象使用起来其实和数组是一模一样的,这样的一般称为伪数组)ul li张三/li li李四/li li王五/li /ul script let l document.querySelectorAll(li); console.log(l); /script2.事件JS中的很多代码都是通过事件来触发的,事件其实就是浏览器对于用户的操作行为进行的一个统称(准确的说事件也不一定全是用户操作产生的,但大部分都是的),因此JS做的主要工作就是在不同的事件中进行不同的处理.事件的三要素:1.事件源:哪个HTML元素产生的事件,2.事件类型:鼠标移动,鼠标点击,键盘事件(具体这个事件做了什么) 3.事件的处理程序:当事件产生之后,执行什么样的JS代码例如点击事件:button这是一个按钮/button script let b document.querySelector(button); b.onclick function(){ alert(hello); } /script这个函数可以称为回调函数,会在合适的时机进行调用3.操作元素3.1 操作元素内容通过对象里面的一个属性innerHTML来实现(元素里面包含的html代码是什么样的)div idscreenhello world/div button idbtn获取内容/button script let btn document.querySelector(#btn); btn.onclick function() { let screen document.querySelector(#screen); console.log(screen.innerHTML); // 里面是啥就可以获取到什么内容 } /script点击多次不会把同样的结果显示多次,而是显示了一个数字,这也是可以设置的,设置之后就可以显示多条了!而想要修改元素里面的内容的话变量名.innerHTML 要修改的内容,就可以直接进行修改了3.2 操作元素属性通过dom对象.属性名,就可以进行操作了例如实现一个点击照片更换为另一个照片的案例:img srcdog.jpg script let img document.querySelector(img); img.onclick function(){ let s img.src; if(s.indexOf(dog.jpg) 0){//是否包含这个地址 img.src b.jpg; }else if(s.indexOf(b.jpg) 0){ img.src dog.jpg; } } /script另外需要注意的是:input是一个单标签,没有innerHTML属性,因此想要获得input里面的东西就要用其的value属性才可以!!3.3 操作元素样式style对应行内样式(直接把样式写到style里面) className/classList对应的内部样式/外部样式 应用了一个/一组CSS类名例如实现一下夜间模式的效果:style div{ height: 500px; width: 500px; } .light{ background-color: #fff; color: black; } .dark{ background-color: black; color: #fff; } /style div classlight一段文字/div button idbtn关灯/button script // 夜间模式: let div document.querySelector(.light); let btn document.querySelector(#btn); btn.onclick function(){ if(div.className light){//通过class来切换样式 div.className dark; btn.innerHTML 开灯; }else if(div.className dark){ div.className light; btn.innerHTML 关灯; } } /script另外在HTML中类名的属性是class,但是在JS中class(ES6中引入了类的概念)是一个关键字,因此就会把这个属性名改成className/classList4.操作节点其实是操作元素的属性,(元素本身没有发生改变) 而针对节点进行操作,主要是新增节点/删除节点4.1 新增元素新增节点1.创建新节点,2.把节点挂在dom树上div classcontainer /div script //1.创建新节点 let newDiv document.createElement(div);//通过这个createElement就可以创建一个新的div newDiv.id newDiv; newDiv.className one; newDiv.innerHTML hello; //2.把节点挂在dom树上 可以使用appendChild把节点插入到某个节点的子元素中 let container document.querySelector(.container); container.appendChild(newDiv);//这样就可以插入元素了这样就可以将新元素的内容打印出来了4.2 删除元素删除节点:先拿到父节点然后在拿到待删除的子节点就可以进行删除了div classcontainer /div button idbtn 删除节点 /button script let newDiv document.createElement(div); newDiv.id newDiv; newDiv.className one; newDiv.innerHTML hello; let container document.querySelector(.container); container.appendChild(newDiv);//这样就可以插入元素了 //通过removeChild就可以进行删除了 let btn document.querySelector(#btn); btn.onclick function(){ container.removeChild(newDiv); }点击删除按钮之后就删除了里面的节点,就可以实现删除节点的效果了~~介绍到这儿,关于前端部分就基本介绍完了,我这里介绍的前端部分都是十分底层的语法知识,只是能实现一些基本的页面,而这对于一个后端的程序员来说其实已经足够了!!!Java程序员如今深陷技术迭代放缓与行业需求收缩的双重困境职业发展空间正被新兴技术浪潮持续挤压。面对当前Java程序员可能面临的“发展瓶颈”或行业挑战更积极的应对策略可以围绕技术升级、方向转型、能力拓展三个核心展开而非被动接受“不行”的标签通过调查对比我发现人工智能大模型是个很好的出路。技术升级与转型机会突破传统Java开发边界大模型技术的普及为Java开发者提供了新的机遇使他们能够突破传统企业级开发的局限进入人工智能这一高增长领域。通过学习大模型集成Java开发者可以转型为AI应用开发者拓展职业发展空间。技术栈升级Java社区积极拥抱大模型技术推出了多个开源项目和框架如Deeplearning4j、DJLDeep Java Library等。这些工具为Java开发者提供了丰富的资源使他们能够更方便地构建和部署基于大模型的应用。发挥Java在企业级应用中的优势稳定性与可靠性Java作为企业级应用的主流语言其稳定性和可靠性在大模型应用中同样得到体现。Java的强类型系统和严谨的工程化特性在构建可靠的大模型应用时提供了额外保障。跨平台性Java的“一次编写到处运行”特性使其能够轻松部署到不同操作系统和硬件环境中。这一特性在大型模型的部署和集成中尤为重要可以降低部署复杂性和成本。多线程处理能力Java强大的多线程处理能力特别适合大模型的推理部署场景可以高效处理并发请求提升系统性能。说真的这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis稳稳当当过日子。结果GPT、DeepSeek火了之后整条线上的人都开始有点慌了大家都在想“我是不是要学大模型不然这饭碗还能保多久”先给出最直接的答案一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇如何学习AGI大模型作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享