暂时未有相关云产品技术能力~
公众号:程序员叶同学,(原名:HelloTech)文章导航:https://yezhwi.github.io/
Python 基础语法和规范,初学者少踩坑
使用Gradio快速搭建一个聊天机器人
ChatGPT 数据仓库实战:Kaggle 酒店入住数据分析与维度建模
情人节酒店数据分析:ChatGPT 揭示的爱情商机
利用 OpenAI 接口,一个人就能完成聊天机器人
上一次分享中,我们创建了一个对话机器人,但是只能通过终端的方式进行交互。今天介绍一个 Python 库,可以快速搭建一套 UI 界面,不需要去学习 JavaScript、TypeScript 以及相关的前端技术了。并且,Gradio 渲染出来的界面可以直接在 Jupyter Notebook 里面显示出来,适合场景相对简单,想要快速部署应用的开发者快速体验产品效果。 如果你已经在 AI 领域深入多年,可以略过哈。
在刚接触 Python 的时候,大多数人都会面临一个问题,针对不同的需求,不同的环境,我到底是选择 2 还是 3,就需要一个强大的 Python环境管理工具了,可以在电脑上同时搭建两套环境,并且可以在两个环境之间来回切换而不受对方的影响,Anaconda 就是你需要的。
附 PPT|ChatGPT 的技术发展路径和带来的影响
"让科技温暖世界:智能眼镜帮助盲人走向自由"——你是我的眼
在金融领域,基础知识、公告数据、公开财报数据等是非常重要的数据来源。通过将这些数据集成到智能对话中,可以大大提高智能对话的准确性和可靠性。 其中,基础知识数据是指股票、基金、理财等投资产品的基本信息,如名称、代码、类型、净值等等。公告数据包括公司公告、重要新闻、财务数据等等。公开财报数据包括公司年报、季报等等。
如果你需要別人帮忙做事,就需要给他具体的「指令」或「提示」;把角色换成 ChatGPT,Prompt 就是你问问题或提出请求的文字提示。 而决定 ChatGPT 回答质量的重要因素,就在于你提供的「Prompt」是否足够完善。
随着 OpenAI 最近发布的 GPT 3.5 系列 API,我们可以做的不仅仅是聊天。QA(问答)是企业和个人使用的一个非常有效的场景用例——使用自然语言向机器人询问自己(企业)私有的文档/数据,它可以通过从文档中检索信息并生成响应来快速回答我们[1]. 我们可以将其用于客户支持、综合用户研究、个人知识管理等等! 在本文中,将探讨如何根据自己的数据构建自己的问答聊天机器人,包括为什么某些方法不起作用,以及使用 llama-index 和 GPT API 高效构建文档问答聊天机器人指南。 (如果你只想知道如何搭建问答聊天机器人,可以直接跳到“一步步搭建文档问答聊天机器人”部分)
ChatGPT 和 Whisper 模型现在已经可以在 OpenAI 的 API 上使用,使开发人员可以获得尖端的语言处理(不仅仅是聊天!)和语音转文本功能。通过一系列系统级别的优化,自去年 12 月以来,OpenAI 团队已经实现了 ChatGPT 的成本降低了 90%;现在正在将这些节省成本传递给 API 用户。开发人员现在可以在 API 中使用 OpenAI 开源的 Whisper large-v2 模型,获得更快速和经济实惠的结果。ChatGPT API 用户可以期待持续的模型改进,并选择专用容量以更深入地控制模型。密切听取了开发人员的反馈,并改进了 API 服务条款,以更好地满足用户
如果你想自学 Python 编程语言,那么你来对了地方!Python 是一种非常流行的编程语言,具有广泛的应用场景,从 Web 开发到数据科学都能发挥作用。Python 也因为其简单易学和强大的功能而备受欢迎。
当你面对 Hive SQL 面试时,不仅需要掌握 SQL 语言的基本知识,还需要熟练掌握 Hive SQL 的一些高级特性,比如窗口函数、分区等等。对于初学者而言,写出高效的 Hive SQL 代码往往是一件困难的事情,而这恰恰是面试官最为看重的。但是,你不必担心!现在,有一种神奇的工具——ChatGPT,可以帮助你快速生成 Hive SQL 代码,解决你在面试中遇到的各种难题。本文将会介绍如何使用 ChatGPT 生成 Hive SQL 代码,让你在面试中轻松成为 Hive SQL 面试高手,无需编写代码也能毫不费力地完成面试题。 让我们一起来看看吧!
以下内容产生背景为:体验 ChatGPT 在大数据领域有哪些场景可以提高效率,主要使用 Kaggle 酒店入住数据进行维度建模和数据分析方面的模拟测试。虽然部分输出是错误的(可以在留言区讨论哈),如果把这个做成标准的工作流,形成一个产品,那会提高很多人的效率哈(很多人可能也会失业)。感受到了很大的危机🥹以下为人机交互生成:
penAI 训练了最先进的语言模型,这些模型非常擅长理解和生成文本。我们的 API 提供了访问这些模型的途径,并可用于解决几乎所有需要处理自然语言的任务。
02/14,一年一度的浪漫盛宴。在这个特殊的日子里,我们不妨想一想,如何用简单的方式表达出自己的爱意,如何用特别的方式度过这个特别的日子。 酒店预计会相对繁忙😂。很多情侣会提前预订浪漫的套房或享受精心准备的烛光晚餐。一些酒店可能会提供特别的优惠或礼品来吸引客人。酒店会增加员工以应对繁忙的客流量,提供更加周到的服务。总的来说,情人节酒店会是一个热闹、浪漫的体验。
参与角色:各组 Leader 或研发工程师 规范要求: • 每个项目(不管多小的迭代,包括技术人员发起的优化需求也要产品人员参与)都要有个产品经理或运营人员来牵头 • 需求评审时,对模糊不清的产品需求,评审 Leader 应拒绝此需求进入后续迭代流程 • 需求评审后,参与评审的技术人员要和产品方对需求达成一致,知道需求最终交付目标 • 需求评审后,各组 Leader 应规划好需要哪些研发人员进入项目
理论上无论使用哪个工具都可以,但是之前遇到过这样的情况,有人习惯使用 Eclipse 的自动格式化代码,每次提交代码都有一大堆的变化,仔细对比过后才发现仅是格式变化了,或是 improt 顺序变化了等等,多人提交代码时产生冲突,其实只是格式风险不一样,为了排除类似这样的困扰,使大家编码风格统一,所以,统一使用 IDEA 作为开发工具,代码格式和注释格式统一化。
相比现在流行大数据技术,你可能觉得 Kettle 的使用场景太少了,或者没有必要使用这么个玩意儿,查看了下 github kettle 发现最近也有一些更新,另外,对于没有编程经验的数据使用人员,使用非常简单的 Kettle,通过图形界面设计实现做什么业务,无需写代码去实现,就可以做一些实验,比如:抓取网站上的股票数据、外汇信息等等。 Kettle 支持很多种输入和输出格式,包括文本文件,数据表,以及数据库引擎。总之,Kettle 强大的输入、输出、转换功能让你非常方便的操作数据。
在日常数据开发过程中,会经常需要根据数据模型编写建表语句,每次写建表语句都会用几分钟的时间,而且还容易出一些低级的错误,于是打算做个 Excel 模板,把表字段、表分区、表名写在里面,通过程序自动生成建表语句
简单一句话,作业流程,即是对转换流程进行调度,也可以嵌套转换流程和作业流程。
上一篇中对 Kettle 进行了简单的介绍,并快速体验了一把 Kettle,完成了「把数据从 CSV 文件复制到 Excel 文件」 HelloWrold 级别的功能。 而在实际工作中,可以使用 Kettle 的图形化的方式定义复杂的 ETL 程序和工作流,如下图就是通过一系列的转换(Transformation) 完成一个作业(Job)流程。
Kettle 是一款国外开源的 ETL 工具,对商业用户也没有限制,纯 Java 编写,可以在 Window、Linux、Unix 上运行,绿色无需安装,数据抽取高效稳定。Kettle 中文名称叫水壶,它允许管理来自不同数据库的数据,把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle 中有两种脚本文件,Transformation 和 Job, Transformation 完成针对数据的基础转换,Job 则完成整个工作流的控制。通过图形界面设计实现做什么业务,并在 Job 下的 start 模块,有一个定时功能,可以每日,每周等方式进行定时。
RabbitMQ 是采用 Erlang 语言实现 AMQP (Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息,RabbitMQ 凭借其高可靠、易扩展、高可用及丰富的功能特性受到越来越多企业的青睐。
现在软件开发流程都是协同合作的,前后端分离,那么我们如何实现对 API 的统一认知?又该如何设计一个良好的 API 接口?随着业务的演进,如何设计一个有兼容性的API?面对多种客户端,如何设计一个处处适用的 API 呢? RESTful 是目前最流行的 API 设计规范,通过一定的规范可以解决上面这些问题,对于 RESTful 架构的理解可以参考阮一峰老师的这篇文章(http://www.ruanyifeng.com/blog/2011/09/restful.html),简单一句话就是对服务器端资源进行操作,实现"表现层状态转化"。URI(统一资源定位符)代表一种资源,它可以是一段文本、一张图
上图为[产品迭代开发协作流程],上次聊了一下关于 Code Review 的一些思考。 在上面的流程中,需求评审通过后,要产出最终的需求文档、原型等交付物,还要对本次需求封版;在测试阶段的补充需求的处理方式;上线后记录或反馈的问题列入下一版的迭代。 可是,流程中都是比较理想的状态,现实工作中并没有达到设想的目标。作为一个开发人员,分别站在产品经理的角度和开发人员的角度分析一下问题的可能原因。
之前两篇内容介绍了一下 WebSocket 和 SocketIO 的基础内容。之后用 Netty-SocketIO 开发了一个简单的服务端,支持服务端主动向客户端发送消息,同时也支持客户端请求,服务端响应方式。本文主要想了解一下服务端的性能怎么样,选择使用 JMeter 对 WebSocket 应用进行性能测试。
Socket.IO 是一个为实时应用提供跨平台实时通信的库。目标是使实时应用在每个浏览器和移动设备上成为可能,模糊不同的传输机制之间的差异。它使用了浏览器支持并采用的 HTML5 WebSocket 标准。以下内容为翻译官网 https://socket.io/docs/ 。 聊天应用程序 demo 地址 https://socket.io/demos/chat/
利用 Log4j2 异步保存日志到 MongoDB 中
当我们在服务器上安装一些软件服务时,如 MySQL、Kafka、ES 等,在启动服务的时候,脚本会读取默认路径下的配置文件,如果配置文件没有放到默认的路径下,我们也可以通过参数的方式指定,通过这个配置文件,可以灵活方便的开始某些功能或调整某些参数,不用重新对源码进行修改、编译和发布了。 所以,我们工作当中有时希望可以把配置文件放在程序外,这样就可以做到配置与业务分离,在项目中使用的 properties,这里就说一下如何用 properties 配置文件,默认加载 classpath 下的文件,如果通过参数指定了文件路径就可以使用外部配置了。
CurdRepository 提供了增删改产方法。 PagingAndSortingRepositroy 增加分页查询和排序方法。 JpaRepositroy 增加了实例查询方法。 实际应用中可以有选择的继承上面任何一个接口都可以。
各微服务启动的时候,将自己的网络信息注册到服务发现组件中,服务发现组件会储存这些信息。 服务消费者可以通过服务发现组件中查询服务提供者的网络地址,并使用该网络地址调用服务。 各微服务与服务发现组件通过心跳机制通信,服务发现组件如长时间无法与某个服务实例通信,服务发现组件会注销该实例。
不同的微服务一般会有不同的网络地址,但 web 端或 APP 端需要调用多个服务的接口才能完成一个业务需求。在这种客户端直接与各个服务通信的架构时,会有以下问题: • 客户端需要维护很多服务的请求地址; • 客户端会多次请求不同的微服务,增加了客户端的复杂性; • 存在跨域请求,处理相对复杂; • 认证复杂,每个服务都需要独立认证; • 随着项目的迭代,可能需要重新划分微服务(多个微服务合并成一个或将一个服务拆分成多个),在客户端直接与微服务通信时,重构将会难以实施;
• 一个 war 包含所有功能的应用程序,通常称为单体应用。尽管在程序中进行了模块化,但若干业务模块被打包在一个 war 包中,这样的应用系统称为单体应用。 • 优点:容易部署、测试。可以快速实现需求。 • 缺点:随着需求的不断增加,开发团队的状大,代码库也在迅速增长, 此时单体应用变得越来越臃肿,可维护性、灵活性逐渐下降,维护成本高: a. 模块非常多、模块的边界模糊、依赖关系不清晰、每次修改代码心惊胆战,甚至增加一个简单功能或修改一个 bug 都会带来隐含的缺陷。
会不会丢消息? Offset 怎么保存? Consumer 重复消费问题怎么处理? 如何保证消息的顺序? 数据倾斜怎么处理? 一个 Topic 分配多少个 Partiton 合适以及修改 Partiton有哪些限制?
大数据平台每天处理业务系统产生的大量日志数据,一般而言,这些系统需要具有以下特征: 1. 构建业务系统和日志分析系统的桥梁,并将它们之间的关联解耦; 2. 支持近实时的在线分析系统和类似于 Hadoop 之类的离线分析系统; 3. 具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。
Flume 提供了大量内置的 Source、Channel 和 Sink 类型。而且不同类型的 Source、Channel 和 Sink 可以自由组合—–组合方式基于配置文件的设置,非常灵活。比如:Channel 可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink 可以把日志写入 HDFS、HBase,甚至是另外一个 Source 等。
Flume 是一个分布式、可靠、高可用的服务,它能够将不同数据源的海量日志数据进行高效收集、汇聚、移动,最后存储到一个中心化数据存储系统(HDFS、 HBase等)中,它是一个轻量级的工具,简单、灵活、容易部署,适应各种方式日志收集并支持 failover 和负载均衡。
Transformation 变换/转换算子:这类算子操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。这种变换并不触发提交作业,完成作业中间过程处理。 Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业,并将数据输出 Spark 系统。
2017-12-19-Hadoop2.0架构及HA集群配置(1) 2017-12-24-Hadoop2.0架构及HA集群配置(2) 2017-12-25-Spark集群搭建 2017-12-29-Hadoop和Spark的异同 2017-12-28-Spark-HelloWorld(Spark开发环境搭建)
所有的集合都扩展自Iterable特质 集合有三大类,分别为序列、集和映射 几乎所有集合类,Scala都同时提供了可变和不可变的版本 Scala列表要么是空的,要么拥有一头一尾,其中尾部本身又是一个表列 集是无先后次序的集合 用LinkedHashSet来保留插入顺序,或用SortedSet来按顺序进行迭代 +将元素添加到无先后次序的集合中;+:和:+向前或向后追加到序列;++将两个集合串接在一起;-和--移除元素 映射、折叠和拉链操作是很有用的技巧,用来将函数和操作应用到集合中的元素
Scala和Java一样不允许类继承多个超类,特质解决这一局限性 类可以实现任意数量的特质 当将多个特质叠加在一起时,顺序很重要,其方法先被执行的特质排在更后面 Scala特质可以提供方法和字段的实现 特质要求实现它们的类具备特定的字段、方法或超类 特质可以同时拥有抽象方法和具体方法,而类可以实现多个特质
• 用对象作为单例或存放工具方法,Scala没有静态方法或字段 • 类可以有一个同名的伴生对象 • 对象的apply方法通常用来构造伴生类的新实例 • Scala的main函数定义 单例对象
长度固定使用Array,长度有变化使用ArrayBuffer 提供初始值时不要使用new 用()来访问元素 for(elem <- arr)遍历元素 for(elem <- arr if ...) yield ...将原数组转为新数组
Hadoop实质上是解决大数据大到无法在一台计算机上进行存储、无法在要求的时间内进行处理的问题,是一个分布式数据基础设施。 HDFS,它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,通过将块保存到多个副本上,提供高可靠的文件存储。 MapReduce,通过简单的Mapper和Reducer的抽象提供一个编程模型,可以在一个由几十台上百台的机器上并发地分布式处理大量数据集,而把并发、分布式和故障恢复等细节隐藏。
IntelliJ-IDEA-Mavne-Scala-Spark开发环境搭建
Spark集群搭建
在上一篇中除去配置类和实体类,写了两行代码,就实现了RESTful风格的接口,但在实际使用时,还需要一些额外的处理,比如在返回的数据中,password这类敏感字段是不应该返回的;删除操作,实际需求不是硬删除只是更新一个删除状态;保存对象操作之前需要做相应的数据校验和数据格式的转换等等,自动转换成REST服务,是否支持自定义功能?在上一篇中除去配置类和实体类,写了两行代码,就实现了RESTful风格的接口,但在实际使用时,还需要一些额外的处理,比如在返回的数据中,password这类敏感字段是不应该返回的;删除操作,实际需求不是硬删除只是更新一个删除状态;保存对象操作之前需要做相应的数据校验