- 博客(54)
- 收藏
- 关注
原创 python并发编程之多线程和多进程
GIL功能并不是完全一无是处,它在CPU密集型的任务中,因为单线程问题会导致python并发失去意义,但在IO密集型的任务中,因为不需要使用CPU的多核优势,因此多线程依然有其作用。cpython使用的是引用计数的方式解决垃圾回收的问题,因此为了防止其它线程更改计数参数,因此才有了GIL,如果使用的是其它的垃圾回收方式,那么就不会有GIL的问题。而之所以有GIL的存在,是因为python语言使用了大量的c语言库,GIL是为了解决引入C语言库的并发问题,并且因为使用的是单锁,因此也排除了死锁的问题。
2024-08-08 17:05:19
322
原创 浏览器自动化测试工具selenium——爬虫操作记录
原因是随着技术的发展,网站技术变得越来越复杂,特别是动态网站技术,使用了多种反爬技术,比如请求头限制,ip限制,代码混淆,加密,接口验证等。因此selenium配合浏览器就是一个好的选择,不管网站使用多少技术,我模拟用户的正常浏览操作行为总可以把,这样就可以直接绕过各种混淆,逆向等反爬技术。当然,在最后提醒一下,爬虫技术是一门徘徊在法律边缘的技术,虽然法律没有禁止爬虫的存在,但如果用来爬取别人的私密数据,或者重要的企业数据,然后给企业造成损失,那么就有可能吃皇家饭。因此selenium也并不是完美的。
2024-07-26 14:28:56
577
原创 什么是多模态大模型,有了大模型,为什么还要多模态大模型?
想弄明白什么是多模态大模型,那么首先就要弄明白什么是多模态。简单来说,多模态就是数据或信息的多种表现形式。举个栗子,比如说我想告诉你我在吃饭;这时我可以给你发段文字告诉你我在吃饭;也可以拍个照片或视频告诉你我在吃饭。信息是我在吃饭,表现形式可以是文字,图片,视频;这就是多模态,一种信息,多种表现形式。就类似于液体的水是水,固体的水是冰,气化的水是水蒸气,但其本质上还是水,只是表现形式不一样而已。从更加广泛的角度来说,文字是一种模态,图像也是一种模态,视频当然也是一种模态;
2024-05-07 22:33:15
517
原创 大模型爱好者的福音,有了它个人电脑也可以运行大模型了
不论学习任何东西,首先要明白它是个什么东西。这是GPT4ALL github上的介绍,翻译过来就是可以运行在CPU和GPU上的开源大模型系统。GPT4ALL不单是一个chatbot软件,而是一个生态系统。用于训练和部署强大且可定制的大型语言模型,可以在消费级CPU上本地运行。它的目标是成为最好的指令微调型的语言助手模型,任何个人或企业都可以自由使用、分发和构建。我们知道,自从openAI发布chatGPT之后,大模型如雨后春笋般出现,各个公司都开始开发自己的大模型。
2024-05-07 22:29:44
1405
原创 爆火的AI Agent到底是什么?有了大模型为什么还需要AI Agent?
总结来说,大模型和Agent都属于实现人工智能的一种技术实现方式;AI是一个人,那么大模型就是这个人的大脑,Agent就是大脑指挥做事的工具集。
2024-04-29 20:35:54
13646
2
原创 人工智能知识普及,AI,大模型,Agent,prompt
但是,如果你问,从政治,经济,文化,制度等方面,来分析一下古代大一统封建王朝三百年的宿命论;虽然现在基于大模型可以实现文本,图片和视频的生成,但AI怎么实现在科学研究,医药,法律,制造业等其它领域的应用,而这就是agent需要解决的问题。至于agent它的手和脚是怎么实现的,然后又是怎么和大模型拼接到一块成为一个人的;我们知道大模型是通过大量的数据进行训练出来的一种具有“一定智能”的人工智能,之所以说具有一定智能是因为大模型目前为止并没有自己的意识,也就是说它没有像人类一样具有自己独立的思想。
2024-04-29 18:19:54
1096
原创 AIGC——什么是人工智能生成内容
虽然人类的创造力和想象力比较丰富,但其缺点就是人的精力有限,创作的效率也有限,因为人类的创作需要灵感和精力。其次,AIGC的效率也更高,因为其不需要休息,不需要灵感,你只要给到其输入,那么它就更给你输出。严格来说,AIGC是内容创作领域中的一个新的方式,而且其也是AI应用领域的其中一个分支。但在内容创作领域,AI因其高效,快速,涉足领域广,且不知疲倦的优势,导致其在内容创作领域变得炙手可热。毕竟,那种需要经历,情感,积累的真情实意是很难模仿的。AIGC的应用领域也非常广泛,包括生活中的应用,以及商业应用。
2024-04-27 21:04:11
368
原创 成为程序员后你都明白了什么?
就像金庸武侠小说中的武林高手一样,真正的技术大佬确实很牛逼,他们也能获得很高的收入;但对大部分人来说,都属于在江湖上混饭吃的老油条,技术不咋地,还天天梦想着有一天能习得绝世武功,然后一统江湖。从作者个人的感受来说,刚开始成为程序员时,大家都是抱着技术至上的心里来从事这份工作;而随着工作几年之后,我们慢慢就会发现,技术原来并不是万能的,而且真正值钱的不是技术,而是业务。所以,工作几年之后才发现,程序员看着高大上的职业,实际上和工地上搬砖的农民工没什么区别;程序员能赚钱,但也仅仅只能比上不足,比下有余。
2024-04-25 19:53:34
202
原创 懂技术不代表懂互联网
但是,直到今天突然才发现,自己根本不懂互联网,自己认为的懂互联网只是从技术人员的角度理解互联网,也就是互联网是怎么搭建的,互联网在技术上是怎么实现的。这里是个人公众号,学习,讨论,分享计算机技术,AI技术,互联网商业,喜欢的可以扫码关注。而不用辛辛苦苦的给别人打工,去实现别人的梦想。而且,最重要的是我们作为程序员,对互联网技术最了解的一批人,居然不知道利用互联网去打造我们自己的品牌,去增加我们个人的影响力。无论是个人还是企业,都可以通过互联网的快速传播的特性去宣传推广自己的产品,自己的思想,自己的理念。
2024-04-25 17:40:51
330
原创 数据库性能优化思路
以及不同库等匹配规则;也就是说,订单表中的二十个字段要垂直拆分到两张表中,一亿条数据拆分到五张表中,每张表两千万数据,数据根据id进行拆分,1到2千万在第一张表中,2千万零1到4千万在第二张表中,以此推类。这时,一个业务场景中,需要查询到字段中涉及到拆分的两张表中的字段,然后查询的订单数据中需要分页查询,并且分页的是一千九百九九万九千九百九十到两千万零十,这样跨表查询的索引应该怎么建,分页查询应该怎么实现?但同样,分库分表时,在不同的数据库表中,索引怎么建,水平拆分时怎么建索引,垂直拆分时又该怎么建索引?
2024-04-12 17:53:45
528
原创 mysql索引与优化问题
而如果我们使用uuid等随机数据作为主键,那么数据的存储就会东一个,西一个,导致数据读取的时候,出现随机读取,而在磁盘上,磁头就需要不断的“摇头”,也就是不断的去找磁盘上数据所在的位置。在mysql的索引实现中,数据库会把数据进行组队,比如1到5是一队,6到10是一队,这样在索引中就可以把每队最大值和最小值保存下来,这样查询的时候就可以使用二分法,判断当前数据是在那一队,这样更加快速的查询数据。所以,数据库技术就是其中比较重要的一个方面,而数据库的优化等问题,也理所当然的成为一个重要的问题。
2024-04-12 17:09:58
461
原创 人工智能的实现流程
当然,这里只是简单记录了一下人工智能实现的方式,从选择神经网络架构,训练及微调的基本理论;具体的训练和微调方式,需要进行具体处理。比如,大模型集群部署,训练,微调;集群之间怎么协作,训练和微调的数据怎么获得,数据的格式等等一系列的问题处理。
2024-04-02 17:34:29
674
原创 人工智能名词解析
与之对应的是垂直领域的大模型,比如金融领域,医疗领域,数学领域,文化领域等大模型。目前,主流的人工智能模型都是基于神经网络来实现的,这类模型的特点是需要打两个的学习与训练,就像小孩子学习一样,慢慢的具有人类的智慧。使用人工智能来实现内容的生产与输出,而取代之前的pgc(专业生成内容)和ugc(用户生成内容),是一种新的生产内容的形式,其具有更高的效率和更高的速度。才能完成大模型的训练。而目前人工智能的发展,主要以联结主义,也就是仿生学派,使用模仿人类大脑的神经网络模型,通过大量的学习,来实现人工智能。
2024-03-31 23:53:41
373
原创 找工作经验总结二——面试
不要怕这些,如果你觉得你喜欢这个岗位,或者这个岗位可能适合你,那么你就尽量把简历做的符合人家的要求,并且大胆的去投。毕竟,对做过技术岗位几年的人来说,很容易发现其实技术都是一法通既万法通,很多技术虽然没用过,但需要用的时候简单学习一下就可以入手了。所以,为了实现这个目的,我们在面试的过程中,要学者掌握对话的主动权,要让面试官在你的思维逻辑里提问,而不是你在他的逻辑思维里应对。首先,面试的时候一定不能紧张,当然紧张也是无法避免的,只有通过多次面试,积累面试经验才能做到和面试官侃侃而谈。
2024-03-19 23:42:53
367
原创 找工作的经验总结一——渠道与简历
这样的简历,谁看了都会直接pass掉。其实第一件事应该是准备一份好的简历,因为简历是敲门砖,好的简历才能给你带来面试的机会,如果面试机会都没有,那么你看再多的面试题,学再多的面试经验又有什么用呢?其实,对很多大公司来说,比如BAT等,他们的官网上都有专门的招聘模块,其上发布了大量的公司岗位,所以我们可以直接在其官网上找到合适的岗位,并且可以在一定程度上避免中间商赚差价。其实,企业招人的渠道无非以下几种,公司官网或电话,内部人员推荐,以及第三方的招聘平台,如猎头公司,招聘网站,如boss,前程无忧等。
2024-03-19 23:25:36
573
原创 用户登录问题——登录态
所以,服务器端就会维护一个标识,来标志你的存在,这个标识就是session,服务器端会给你一个字符串,也就是sessionId,这样你下次在进来的时候,只需要告诉服务器你的sessionId就行了。拿学校来举例,所谓的注册就是开学第一天,你去学校报名,告诉学校的工作人员,你是谁,你的电话,身份证,家庭住址等。学校维护了你的信息(你的姓名,电话,身份证等),然后给你一个学号,你每次离开学校再回来的时候,只需要告诉保安,你的学号,保安然后查看一下是否有这个学号,就可以决定是否放你进校门。
2024-03-08 00:11:20
732
原创 前端网络请求异步处理——Promise使用记录
如上图所示,Promise接受两个函数参数,resolve和reject,当请求成功时,把响应数据放到resolve中,则可以进行成功的逻辑处理;而响应失败时,则可以调用reject进行处理。在Promise出现之前,前端的异步请求主要通过回调函数来实现,但在复杂的业务逻辑中,可能会出现回调地狱的情况,所以才有了Promise这种更加优雅的处理方式。如下图,Promise异步处理时,不调用resolve函数,则在使用Promise进行数据处理时,则获取不到数据。解析成功 并没有打印。解析成功 被成功打印。
2024-03-07 23:31:52
302
原创 vue3+elementplus el-upload组件上传第三方oss存储问题
而el-upload组件是elementui提供的一个文件上传的组件,其有很多属性和事件,如下图所示是其组件的部分属性,因为其属性和事件比较多,所以el-upload组件也是一个比较有难度的组件。第一个问题就是,如果后端的上传接口是我们自己开发的,那么直接使用action参数的问题也不是很大,因为基本上能满是上传文件的需求。首先,el-upload组件有一个必填项的参数action,这个参数就是类似于表单提交中的action参数,是要提交的后端地址。可能有人会有疑问,这个optinos参数的作用是什么?
2024-02-07 20:33:33
739
原创 微信小程序开发跳转问题
个人版小程序不支持跳转第三方链接,比如百度地址https://www.baidu.com ,如果想跳转需要配置业务域名,并且要在百度服务器的根目标上传验证文件,这是不可能的。并且使用data-url进行传参;然后在使用一个新的页面模块,通过web-view加载第三方页面,但仅限于开发者工具模拟器使用,手机上还是无法跳转。而在微信小程序中,事件监听只能绑定函数名称,不能直接进行参数传递,需要使用data-进行参数传递。在微信小程序开发过程中,如需实现点击按钮进行跳转的功能,首先要实现事件监听的功能。
2024-02-03 12:29:29
407
原创 hybird app 和 小程序
就是在app开发中集成了类似webview的功能,只不过这个webview是更加定制化的,去除了一部分浏览器的功能,又在某些地方做了增强。说白了就是,在原生功能的基础之上,集成了webview的能力,这样就可以在app中使用web开发来替代app中部分需要快速迭代的功能。而市面上的小程序容器有finclip,可以使用跨端框架和finclip的结合,来打造自己的平台型app,即可以提供小程序的开发功能。在上面hybird app的实现中,虽然可以在你的app中使用h5的能力,但其也只能运行普通的h5页面;
2024-01-16 15:54:32
404
原创 app开发——安卓主要模块记录
在app的开发中,主要涉及的就是页面交互和功能,而安卓开发中,为了实现这几个功能,主要有四大组件和其它的一些功能模块。
2024-01-15 13:40:01
1150
原创 学习不同平台开发引起的思考——web与app开发
而基于web的开发之所以能够大行其道,主要还是其强大的平台迁移能力,因为浏览器是属于一个应用层的软件,而且有一个统一的标准,哪怕不同的浏览器厂商实现不完全一样,但大部分的东西都是相同的。而目前移动端的开发方式,也就是三种app的开发方式,webapp,hybird app和native app,主要的区别就是webapp是基于浏览器实现的app,native 是基于手机操作系统开发的app,而hybird app是把基于手机操作系统开发和基于浏览器的开发结合在一块;
2024-01-15 12:01:13
473
原创 app开发——安卓native开发思路记录
从技术角度来说,不论是做游戏开发,web开发,app开发,亦或者其它开发等,基本上都是使用一些大厂或组织提供的sdk进行开发,这也是api工程师的由来,当然这里也有不要重复造轮子的原因。所以,安卓开发同样适用于web开发中的三层模型,表现层——View,业务逻辑层——Service和数据访问层——DAO。而app要完成复杂的业务功能,那么在官方提供的sdk的前提下,也可以引入一些第三方的sdk库,来完成需要的功能,比如需要使用地图,就可以调用百度地图,高德地图的sdk来实现。
2024-01-14 23:10:49
826
原创 APP开发——目前APP开发的几种形式
关于APP开发目前已经过了火热的阶段,现在学习APP开发的人越来越多,但在实际的业务场景中,APP开发还是有一部分的市场需求。所以,这里简单记录一下APP开发的几种思路和方案。
2024-01-11 17:04:56
959
原创 前端学习——vuex的入门
所以,vue就提供了一个统一组件数据管理的工具,就是vuex,其功能就类似于一个数据库,在vue的组件开发中,把一些通用的数据操作统一使用vuex进行管理,比如后端开发中就把数据全部放在数据库中,业务逻辑根据不同的场景去调用数据库获取数据。其产生的场景是解决vue组件之间的数据共享问题,因为每个组件都有其自身需要操作的数据,比如用户组件需要操作用户数据,订单组件需要操作订单数据,但不同组件之间有可能会涉及到一些公共到数据,比如用户组件和订单组件都需要用到用户的唯一标识。那么什么是vuex?
2023-12-22 21:04:17
725
原创 前端学习——指令
那是因为vue是一款前端框架,它隔离了程序员之间操作dom的过程,按照vue的语法,vue框架自动实现操作dom的过程,但为了提升效率,vue使用了一个叫做虚拟dom的设计思想,既在vue的操作过程中,会先在内存中解析出一个虚拟dom,然后使用diff算法匹配虚拟dom和真实dom的区别,如果没有改变就不会修改真实dom ,如果不一样才会根据新的数据重新渲染dom节点。当给输入项设置v-model属性时,v-model设置的默认值就是输入项的值,如果用户输入新的值,那么v-model也能获取到最新的数据。
2023-12-22 13:55:38
1065
原创 前端学习——关于前端框架的思考
而使用了前端框架之后,比如vue有虚拟dom的功能,使用vue开发时,涉及到dom操作,这时vue引擎会先生成一个虚拟dom,然后通过虚拟dom和真实dom进行匹配,也就是diff算法,如果dom以存在且数据没有改变,这时就不需要操作这个dom了,而发现真实dom中不存在或不一致的dom时,才会真正的去操作dom,这样就减少了频繁修改dom的问题。因为,如果直接使用js操作dom ,那么所有的dom操作都是真实的,也就是说js每次都是在真实的dom上进行操作,这样浏览器就需要不停的进行dom的解析和渲染。
2023-12-21 23:13:34
2530
原创 前端学习——组件传值
组件之间的数据传输方式,父传子是通过props属性实现的,而子传父是通过$emit实现的自定义事件实现的,$emit的第一个参数就是自定义事件的名称,第二个参数是要传递的参数。子传父时,要在父组件中的子组件节点实现一个同名的自定义事件方法,用来获取子组件传递的数据。下图第一个红色框就是在子组件的节点中实现的同名自定义事件,第二个红色框就是同名自定义事件的具体方法。
2023-12-20 23:43:59
520
原创 前端学习——vue + elementui实现分页查询
elementui使用pagination提供了多种分页功能,可以根据自己的需求选择不同的分页样式,但其最重要的参数有三个,current-page——当前页码, page-size——页大小, total——总条数;翻页实现代码,定义四个参数,列表书籍,页码,页大小,总条数,然后点击翻页和切换页大小时,调用查询接口,并把响应的页码,总条数和页大小赋值给定义的参数。分页查询功能,是很常见的一个功能,下面是记录使用vue + elementui实现的分页查询功能。要在页面中使用分页功能需要添加以下代码。
2023-12-20 15:44:05
1247
原创 前端学习——侦听属性
前面讲了vue的计算属性——computed,其主要作用就是代码复用及加缓存解决效率问题,下面还有一个和计算属性非常相似的侦听属性——watch, 其功能与写法和计算属性差不多。
2023-12-19 13:02:56
417
原创 前端学习——vue计算属性
事实上,计算属性能做到的事,方法也可以做到,但计算属性相对方法唯一的不同,也是优点就是计算属性有缓存,当计算属性中用到到属性的值没有改变时,计算属性只会计算一次,也就是调用一次,而不是像方法一样,每次都调用。所以,为了解决这个问题,所以就有了计算属性的出现,说白了就是把对message的处理提取成一个方法,这样可以使代码更加模块化,更容易看懂。所以说到底计算属性和普通属性都属于vue中的属性,使用时业可以像普通属性一样,但区别就是计算属性是一个计算处理的,没有实际存在的属性。
2023-12-18 23:26:37
359
原创 前端学习——事件处理
前端开发中会涉及到一些事件处理,比如鼠标事件,键盘事件等,算是一个比较重要的知识点。vue封装了一些事件处理等函数和方法,vue的点击事件是通过v-on实现的,也可以简写为@click,当方法不穿任何参数时,会默认传入事件对象event,如下图所示:当传入参数时,也可以使用event获取对象,不过有参方法最好显示传入$event事件对象。vue官网提供的事件属性包括鼠标事件和键盘事件。在处理事件时调用或是很常见的。
2023-12-11 22:39:57
940
原创 前端学习——数据代理
而说到技术上的代理,实际上有两个角色,第一个就是被代理的对象,第二个就是代理对象。然后在代理对象中封装被代理对象,使被代理对象变成代理对象的一个属性,这样就可以通过修改代理对象的属性达到修改被代理对象的目的。vue中的data属性就是vm对象中_data属性,而vm对象中就有get/set message的方法,也就是说vm本身对vm的data属性做了代理,通过get/set方法就可以获取或修改_data中的属性。Vue的动态监听就是通过代理实现的。
2023-12-09 20:17:32
379
原创 程序员的分类
第一种就是真正技术大牛,这些程序员最根本的体现就是,他们是在创造技术,用技术来解决业务中第一次遇到的问题,比如设计了一款新的框架,提出一种新的开发理念,根据业务场景设计一种新的架构模式等。这种程序员称为技术程序员。作为一个学生或者刚出校门的程序员,技术应该是大多数人所追求的东西,对年轻的程序员来说,技术就是一切,崇尚技术是每个年轻程序员的最常见的思想。在现有的程序员之中,真正的技术型程序员只占很少一部分,基本符合二八定律,大部分程序员都属于业务型程序员,前者的核心在技术,后者的核心在业务。
2023-12-07 23:34:09
358
原创 web1.0,2.0和3.0
互联网的发展经过几次大的迭代,web1.0可以说是万维网的起始点,那时的web只能用静态页面展示信息,就类似于在网上浏览报纸,用户仅仅只能观看,而不是提交,修改,编辑。在web3.0中,用户会拥有一个全网唯一的用户标识,也就是数字钱包,用户产生的所有数据和内容都和这个唯一标识进行绑定,这时哪怕一些平台倒闭,但用户参数的数据可以再同类型的平台上继续使用。web3.0是下一代互联网的发展趋势,是以区块链技术为技术,进入去中心化时代,也就是说全民都可以参与到web3.0的建设,为web3.0的建设添砖加瓦。
2023-12-06 17:14:26
489
原创 前端学习——MVVM模型
但在具体的业务需求中,视图数据的改变需要保存到model中,model中数据的改变也要显示在视图中。MVVM模型也就是model-view-viewmodel,数据-视图-视图数据,MVVM模型采用的是模块化的设计思想,其出自于谷歌的angular前端框架,angular采用了MVC模型的模块化开发思想,而MVVM就是MVC模型的变种。而MVVM模型是用vm代替controller的角色,因为视图显示和数据是分离的,比如用户详情页的样式是固定的,但每个看到的用户详情是不一样的,这就是视图和数据的分离。
2023-12-06 00:04:36
387
原创 前端学习——vue el和data的两种写法
第二种方式是使用vue的$mount进行挂载,如下图所示。第二种使用挂载函数进行挂载的方式更加的灵活,可以对vue对象进行处理之后在挂载,比如延时挂载。所以这里把vue挂载到html文件中有两种方法,第一种就是上图所示的el方式,el的值就是html容器的id。说,index.html和vue实例是通过el表达式进行关联的,既把vue对象挂载到html文件中。第一种是使用对象写法,如下图所示,data直接就是一个对象,可以直接使用。第二种写法是函数式,如下图所示是完整的写法。
2023-12-04 14:46:09
404
原创 关于互联网的思考
比如说你去饭店吃饭,你在乎只是饭店的东西好不好吃,是否符合你的口味,价格是否实惠,你不会在意饭店的大厨用了什么高大上的炒菜技巧,也不会在意后厨用的炒菜锅是在路边用几十块钱买的,还是花大几万去厂家定制的,更不会在乎炒菜用的锅铲是铁的,不锈钢的还是金的或银的。所以说,程序员如果只考虑技术,除非你能从事高精尖的新技术研发,比如人工智能,大数据处理,否则程序员的出路只有和业务相结合,也就是做项目经理或产品经理,只有这样才能培养自己的核心竞争力,对大部分程序员来说,存粹的技术是没多大发展空间的。
2023-12-03 14:42:14
365
原创 前端学习——main.js和App.vue 和 index.html的关系
从这里就可以看出,index.html文件和App.vue文件是没有直接关系的,而其之间的关系是通过main.js文件进行关联的,在main.js文件中,实例化vue对象时,使用el也就是标签选择器,把App.vue和index.html的div节点进行关联。这时把index.html文件的id=app 改为了id=app1,这时再看页面,只显示了 我是index.html ,这时就明白了,index.html文件和app.vue是通过id=app这个东西进行关联的。如果有关系,它们是怎么关联的?
2023-12-02 15:59:04
1234
原创 前端学习——路由
由于vue是SPA(单页面)应用,所以只有一个html文件,而其多页面的功能就是通过路由组件实现的,路由组件根据不同的路由——也就是路径,每个路由组件就相当于一个页面。由于路由配置参数都是固定的,所以当需要在路由中自定义一些使用参数时就可以通过路由元信息进行处理,既meta字段,可以放一些自定义的参数。
2023-12-01 16:13:00
321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人