Python自动获取指定上市公司的所有财务数据(资产负债表,利润表,现金流量表)

案例背景 很多经管类同学找财务数据都很困难,去找一个个查找特定的公司,然后又要去同花顺或者东方财富网一年一年的去查看报表,一年一年的数据一个个填入...太慢了。 tushare能获取金融数据的接口,他有资产负债表,利润表,现金流量表三个表全部的指标,每一年的年报基本都有,数据变量总共124多个,非常全面,什么净利润,营业收入,资产,负债,所有者权益,活动现金,应付账款等等,全都有。很简单就能获取这样标准整洁的财务数据: 这里就教大家怎么获取指定公司的财务数据。全部源代码都有,制作为程序的过程也有, 这个包的财务数据获取官网API接口示例为:Tushare数据 需要注意获取财务数据的权限需要2k的积分账户才行。 (PS:2k积分要充200RMB,当然有的同学嫌贵了或者不会弄代码,或者觉得后面的过程自己做起来麻烦可以咨询我获取我自己制作的程序来获取数据: 财务数据 ) (程序双击就能运行,自己改一下要获取的上市公司的名称就行,里面的源码嵌入的账号是我自己的,因此有权限获取财务数据) tushare的财务指标很多很多,很全,下面是官网的资产负债表的部分变量: 代码实现 导入包: import tushare as ts import numpy as np import pandas as pd #导入第三方库 这里tushare需要获取财务数据,那么你的账户要有2k 的积分,我这里把自己的apikey打码了,同学可以自己去参考这个官网教程,然后注册账号获取自己的apikey:Tushare数据 #Tushare API api_key = '9cd3***2509********************755**b4' ts.set_token(api_key) pro = ts.pro_api() (ps:使用我做的程序就是我自己的账号,当然程序做了反编译,查看不到我的账户API,但是大家可以自己使用hh,使用很简单,双击就行。可以咨询我获取 财务数据 ) 自己把要获取的上市公司的名称写到一个txt文件里面, 这个txt文件的名称命名为“公司名称列表.txt”:, 里面就写你要获取的A股的股票的名称,英文逗号隔开。换行也要英文逗号 然后自定义一个读取文件函数: def read_file_to_list(file_path): try: with open(file_path, 'r', encoding='utf-8') as file: content = file.read() # 去除换行符 content_no_newline = content.replace('\n', '') # 以逗号为分隔符,转换成列表 content_list = content_no_newline.split(',') # 去除列表中的空字符串项 content_list = [item for item in content_list if item] print('读取关键词成功') return content_list except FileNotFoundError: print(f"

数据仓库核心:揭秘事实表与维度表的角色与区别

文章目录 1. 引言2. 基本概念2.1 事实表(Fact Table)2.2 维度表(Dimension Table) 3. 两者关系4. 为什么要有做区分5. 写在最后 1. 引言 前篇我们深入探讨了Hive数据仓库中的表类型,包括内部表、外部表、分区表、桶表、视图以及临时表。每种表类型都有其独特的特性和适用场景,它们共同构成了Hive强大的数据管理能力。这里主要是从数据存储位置、数据管理方式、以及查询优化的角度来划分的。今天我们将从从数据仓库设计的角度来认识一下事实表(Fact Table)和维度表(Dimension Table)。 2. 基本概念 2.1 事实表(Fact Table) 事实表,顾名思义,是用来存储事实的表,这些事实通常是指可以量化的业务指标,如销售额、订单数量等。事实表的特点是有大量的行,每行代表一个业务事件的度量。 换句话说就是你要关注事物的内容,事实表就像故事中的主角,它包含我们感兴趣的主要信息(如销售金额、订购数量、利润以及它们发生的时间和地点等)。事实表中的每一行数据都代表了某种业务活动,就好比故事中的一个关键事件一样。 比如,一张记录了公司所有业务交易的清单。每一条记录都是一个事实,比如一次销售或一笔支出。 举个例子,假设我们有一个简单的销售事实表,它记录了每次销售的金额和日期: CREATE TABLE Sales_Fact ( SaleID INT PRIMARY KEY, ProductID INT, SaleAmount DECIMAL(10,2), SaleDate DATE ); 在这个例子中,SaleID 是每条销售记录的唯一标识,ProductID 与维度表相关联,SaleAmount 是销售金额,SaleDate 是销售日期。 2.2 维度表(Dimension Table) 维度表则是用来描述事实的表,它提供了分析数据的上下文。维度表通常包含描述性的信息,如产品名称、客户信息、时间等。 维度表就是你观察该事物的角度, 维度表就像故事中的背景,它包含了描述事实表中数据的上下文信息,比如时间、地点、产品、顾客等等,这些信息帮助我们理解事实表中的数据。维度表通常描述了事实表中数据的各种属性,比如产品的类别,客户的地理位置等。 维度表就像是事实表的说明书。它们帮助我们理解事实表中的数字背后的故事。例如,我们可能会有一个产品维度表,它包含了产品的详细信息: CREATE TABLE Product_Dimension ( ProductID INT PRIMARY KEY, ProductName VARCHAR(255), Category VARCHAR(100), SupplierID INT ); 在这个产品维度表中,ProductID 是产品的唯一标识,它与事实表中的 ProductID 相匹配,ProductName 和 Category 提供了产品的描述性信息,SupplierID 可能与另一个维度表相关联。

Kafka(十)安全

目录 Kafka安全1 安全协议1.1 PALINTEXT1.2 SSL1.2.1 生成服务端证书1.2.2 生成客户端证书1.2.3 修改配置listenersadvertised.listenerslistener.security.protocol.mapinter.broker.listener.namesecurity.inter.broker.protocolcontrol.plane.listener.name 1.3 SASL_PLAINTEXT1.4 SASL_SSL 2 身份认证2.1 SSL身份认证2.1.1 SSL的性能2.1.2 配置客户端认证服务端2.1.3 配置服务端认证客户端ssl.client.auth=requiredssl.client.auth=requested 2.1.4 更新秘钥2.1.7 安全方面的考虑使用TLS高版本使用256位密钥密钥的安全保存缩短密钥寿命限制客户端配额延迟发送客户端响应 2.2 SASL身份验证2.2.1 JAAS2.2.2 SASL/GSSAPI2.2.2.1 设置SASL/GSSAPI2.2.2.2 安全方面的考虑 2.2.3 SASL/PLAIN2.2.3.1 配置SASL/PLAIN2.2.3.2 安全方面的考虑 2.2.4 SASL/SCRAM2.2.4.1 设置SASL/SCRAM2.2.4.2 安全方面的考虑 2.2.5 SASL/OAUTHBEARER2.2.5.1 配置SASL/OAUTHBEARER2.2.5.2 安全方面的考虑 2.2.6 委托令牌2.2.6.1 配置委托令牌2.2.6.2 安全方面的考虑 2.7 重新认证connections.max.reauth.ms=0 2.8 安全更新不停机 3 加密3.1 传输层加密3.2 数据存储加密3.3 端到端加密3.3.1 端到端加密流程3.3.2 密钥管理3.3.3 压缩3.3.4 消息键加密 4 授权4.1 自定义授权4.2 安全方面的考虑 5 审计6 配额7 Zookeeper安全7.1 SASL7.2 SSL7.3 授权 8 保护平台8.1 保护密码 附录1 JAAS1.

【GitHub项目推荐--4个顶级AI Agent开源项目】【转载】

什么是AI Agent? 现在我们与大模型的互动,一般的过程是先输入一个提示词,之后,大模型根据输入内容进行计算并响应。每次想要得到一个新的输出,我们就必须再提供一个提示词。这个过程有点麻烦,因为总是要有人来驱动。 AI Agent(人工智能代理)则以不同的方式工作。他们被设计成可独立思考和行动的智能体。我们唯一需要提供的就是一个目标,可以是研究竞争对手分析、写个网站程序或进行一次旅游。AI Agent会生成一个任务列表,然后开始工作,依靠环境的反馈和自己的内心独白。就好像它们可以提示自己似的,在不断发展中适应变化,以最好的方式实现我们制定的目标。 看起来这个过程和自动化流程有点像,但其实有区别。与自动化流程相比,流程是可预知的,用户可以根据数据或系统状态设置一系列的触发器,并配置接下来要执行的活动,然而不同的是,AI Agent可以在存在大量不可预测新信息的环境中工作。这就是AI Agent。 AI Agent有哪些应用场景? 下面是一些应用例子: 在一个有25个AI Agent的虚拟城镇里会发生什么?斯坦福大学和谷歌对此很好奇,所以他们使用OpenAI的API来创建这些虚拟居民,并观察他们如何生活。为了支持这个实验,研究小组创建了一个存储记忆的平台,以及为每个代理提供目的的基本提示。从那时起,人工智能代理能够相互分享信息,记住他们关系的细节,甚至计划情人节派对。 在自动驾驶汽车领域,因为AI控制汽车从A点到B,同时保持在路上并遵守交通规则。根据自动驾驶系统的发展,车辆可以相互合作,并与城市基础设施合作,集成多个智能体的AI系统。 可以在计算机中使用的AI Agent,用于完成各种任务。研究工作的过程其实就是一个适合使用AI Agent的场景。因为Agent可以像人类一样使用笔记本电脑,在互联网上搜索信息,将其保存在数据库和文件中,经过总结分析,将其转化成摘要,最后与你一起验收结果。 可以想象,未来人类的主要活动就是主导战略并与其他人建立关系,而AI Agent则可以自动化其他的工作,甚至也可以与其它Agent进行交互,完成人类的目标。 值得关注的开源AI Agent项目 令人印象深刻的AI Agent有许多,但下面是目前最值得关注的前四个。 01 AutoGen 源码: https://github.com/microsoft/autogen AutoGen是一个由微软与OpenAI以及宾夕法尼亚州立大学和华盛顿大学的研究人员合作建立的人工智能代理框架。支持多代理对话,以解决用户的任务。 可以使用多个代理来开发LLM应用程序,这些代理可以相互配合以解决任务。AutoGen代理是可定制的,可转换的,并且允许人类参与其中。它们可以在各种模式下运行,这些模式采用LLM,人工输入和工具的组合。 02 AutoGPT 源码: https://github.com/Significant-Gravitas/AutoGPT AutoGPT是一个使用GPT-4创建的完全自主的AI代理。AutoGPT于2023年3月由首席开发商Toran布鲁斯理查兹首次发布,他也被称为游戏公司Significant Gravitas Ltd.的创始人,该公司生产的电脑游戏带有“道德色彩”,旨在造福和教育全人类。 Auto-GPT是一个实验性的开源应用程序,展示了GPT-4语言模型的功能。这个程序由GPT-4驱动,可以将LLM的“思想”汇聚、连接在一起,以自主实现用户设定的任何目标。 CLI: $ ./runUsage: cli.py [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: agent Commands to create, start and stop agents arena Commands to enter the arena benchmark Commands to start the benchmark and list tests and categories setup Installs dependencies needed for your system.

没想到打脸这么快,AI程序员已经出发了!

大家好啊,我是豆小匠。 先介绍一下本期的主角:Devin,世界上第一位AI程序员,由2023年11月成立的10人初创公司Cognition AI开发。 1. AI程序员已经能做到什么程度 3月13日,Cognition AI公司在X平台(原推特)宣布了首位完全自主的AI程序员:Devin。 目前的成果:通过了一些头部AI公司的面试,且在自由职业平台(Upwork)完成了不少工作。 2. Devin是怎么样工作的 下面是Devin的工作界面: 主体分为两部分,左边是和人类交流的窗口,右边是Devin的实际产物。 这个场景里,人类类似产品经理的角色,Devin则是负责和人类交流,并产出成果。 好家伙,看看我现在的工作界面↓↓↓(是不是有些类似) 说回Devin,右侧窗口有四栏,分别是“Shell”、“Browser”、“Editor”和“Planner”。 功能可以简单理解为操作线上环境,浏览网络信息,编辑代码,和编写设计方案四项工作内容。 整个生产流程就是: 从Devin目前表现的能力来看,已经可以做到: 理解人类的需求,不懂的会追问。独立从网络学习新知识。把需求内容转成代码,且可以自行debug调试。独立部署程序应用。 这其实就是目前企业软件开发的主体流程。 这也就难怪下面有人破防了↓↓↓ 3. 程序员要消失了吗 从目前的发展趋势来看,AI能完成的人类软件需求只会越来越多。现阶段人类程序员的壁垒,一个是复杂需求的分析能力,一个是人力成本。 软件工程领域的经典书籍《人月神话》里有一个论述:由于软件的复杂性本质,没有任何一项技术或方法可以能让软件工程的生产力在十年内提高十倍。也就是没有银弹,软件工程领域的复杂性可见一斑。 至于人力成本,会分为两个方面:一个是新开发流程的建设成本,另一个是实际开发时AI和人类分别需要的成本。其中AI主要是算力,人类则是薪资。 在这两个壁垒消失之前,人类程序员的优势仍在。但是转型,怕是不可避免了。 拥抱变化!

大数据数据分析-scala、IDEA、jdk之间的搭配关系

Scala主要是一门面向对象编程语言和函数式编程语言。 一、大数据框架(处理海量/流式数据) - ---以HADOOP 2. x为系列的大数据生态系统处理框架 离线数据分析,分析的数据为N+1天数据 -----MapReduce 并行计算框架,分而治之 - HDFS(存储数据) - YARN(分布式的集群资源管理和任务调度框架) ----Hive 基于SQL处理框架,将SQL转换为MapReduce,处理存储在HDFS上的数据,并且运行在YARN上。 -----SQOOP 桥梁:RDBMS(关系型数据库)-HDFS/HIVE 导入导出 ----HBASE 大数据分布式数据库 与MapReduce进行集成,可以读取数据进行分析处理, 也可能将分析结果存储到HBase表中。 -----以storm为体系实时流式数据处理框架 数据实时产生 ->进行实时处理 应用场景: 实时交通监控,电商营业额,双十一 -----以spark为体系的大数据处理框架 内存 将处理数据过程中的中间结果数据,存放到内存中 核心编程(基础编程) sparkCore SparkSQL SparkSteaming 高级编程 机器学习/深度学习/人工智能 SparkGraphx SparkMLlib Spark on R 二、Scala下载 Scala官网: The Scala Programming Languagehttps://www.scala-lang.org/ 虚拟机镜像 Index of /centos-vault/7.6.1810/isos/x86_64/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorIndex of /centos-vault/7.6.1810/isos/x86_64/ | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。本镜像站由清华大学 TUNA 协会负责运行维护。https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/isos/x86_64/scala环境安装: IntelliJ IDEA 2022.3版本支持多个Scala和JDK版本。以下是一些常见的Scala和JDK版本组合,适用于IntelliJ IDEA 2022.

跨域问题?无需担心!学习如何解决 Axios 的跨域限制

跨域是指访问另外一个域的资源,由于浏览器的同源策略,默认情况下使用 XMLHttpRequest 和 Fetch 请求时是不允许跨域的。跨域的根本原因是浏览器的同源策略,这是由浏览器对 JavaScript 施加的安全限制。 Axios 跨域常见报错 跨域请求被阻止 (Cross-Origin Request Blocked) : 这是由浏览器实施的同源策略导致的错误。浏览器在默认情况下不允许从一个源发送请求到另一个源,除非目标服务器明确授权。如果没有采取任何跨域解决方案,浏览器会拦截该请求,并报告此错误。 无法获取响应内容 (No 'Access-Control-Allow-Origin' header is present on the requested resource) : 当使用 CORS (跨域资源共享) 解决方案时,服务器需要在响应头中添加 Access-Control-Allow-Origin 头信息来指示允许访问资源的来源。如果服务器没有正确配置这个头信息或配置不正确,浏览器会报告此错误,表示未经授权无法获取响应内容。 请求出现网络错误 (Network Error) : 当跨域请求在发送时出现网络错误(例如目标服务器不可访问、请求超时等),Axios 会捕获这个错误,并将其报告为 "Network Error"。 预检请求失败 (Preflight request failed) : 当使用 CORS 发起一些复杂的请求(例如带有自定义头信息或使用 PUT、DELETE 等非简单请求类型),浏览器会在发送真实请求之前发送一个 OPTIONS 预检请求。如果服务器没有正确处理 OPTIONS 请求或未返回正确的预检响应头,浏览器会报告 "Preflight request failed" 错误。 代理服务器错误: 如果使用代理服务器作为解决方案,但代理服务器配置有误或不可用,Axios 可能会报告与代理服务器连接相关的错误。 Axios 跨域的解决方法 1. CORS CORS 需要服务器设置 Access-Control-Allow-Origin 响应头,表示该资源可以被指定的域进行跨域访问。

数据结构之顺序表(C语言版)

顺序表是数据结构中最基本的一种线性表,它以一段连续的存储空间来存储数据元素,元素之间的顺序由它们在内存中的位置来决定。在C语言中,我们通常使用数组来实现顺序表。 目录 顺序表的结构定义 顺序表的基本操作 应用实例 顺序表的结构定义 首先,我们需要定义一个结构体来表示顺序表,包括数据元素数组和当前元素个数等信息: #define MAX_SIZE 100 // 定义顺序表的最大容量 typedef struct { int data[MAX_SIZE]; // 数据元素数组 int length; // 当前元素个数 } SeqList; 顺序表的基本操作 初始化顺序表 void initSeqList(SeqList *L) { L->length = 0; } 插入元素 int insert(SeqList *L, int index, int element) { if (index < 0 || index > L->length || L->length == MAX_SIZE) { return 0; // 插入失败 } for (int i = L->length - 1; i >= index; i--) { L->data[i + 1] = L->data[i]; } L->data[index] = element; L->length++; return 1; // 插入成功 } 删除元素

Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

文章目录 Intro问题原因当前项目使用的 Android Gradle Plugin 为 7.2.0Android Gradle Plugin 7.2.0 要求的 JDK版本为11 解决其他AGP(Android Gradle Plugin)AGP版本和JDK版本的适配Gradle 版本 和 Android Gradle Plugin 版本 Intro 在 macbook 上新安装的 Android Studio ,第一次启动 Android 项目。报错如下: An exception occurred applying plugin request [id: 'com.android.application', version: '7.2.0-alpha01'] > Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. Your current JDK is located in /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre You can try some of the following options: - changing the IDE settings.

AI助手 - 商汤小浣熊 Raccoon

前言 自从 ChatGPT 引爆人工智能以来,AI 的熊熊烈火一直高烧不退,渗透到各个领域且以惊人的速度进化着。 2021年6月第一个基于大语言模型的代码编写助手 Copilot 也早已成为了开发者的得力助手, 但Copilot对于国内的开发者来说,还是存在诸多不便: 一是访问的稳定性:我是指在国内访问Copilot的不稳定,你懂的; 二是贵; 其实以上两个问题都不是Copilot的问题,但确实是我们要面对的困难。 所以,我一直期待国内出现一个 Copilot 的平替,国内产品天然访问稳定性不是问题,而AI能力我并不要求达到Copilot的级别,毕竟它是借助于GitHub 庞大的代码库和来自全球的开源社区帮助,搭配 OpenAI 在自然语言处理以及机器学习方面的实力,一骑绝尘。 没想到,它真的来了 -- 就是商汤科技也发布了基于大语言模型的代码编程助手“代码小浣熊Raccoon” ​ 说起这个小浣熊的名字,还是很极客的 -- Raccoon的全称是:Raccoon is Another Code CO-pilOt Navigator,名字就递归了,和 GNU(GNU's Not Unix)异曲同工之妙。 小浣熊 Raccoon 是个家族AI产品,目前代码小浣熊和办公小浣熊都已完成上线。我们先来看看代码小浣熊。 ​ 注册 小浣熊 Raccoon 家族系列的使用需要注册,我们先在这里 注册小浣熊 Raccoon 账号,注册后就可以在网页上体验了 ​ 根据官网描述,它具有代码生成&补全、代码翻译、代码重构、代码纠错、代码问答、测试用例生成诸多功能。 对于程序员来说,在自己的IDE里更为顺手,幸好小浣熊已经支持大部分主流IDE: ​ 那我们就来看看如何在 VS Code 中使用。 安装 很简单,扩展中搜索 Raccon 安装即可,或者点击这里 Raccoon - Visual Studio Marketplace。安装后,在VS Code的侧边栏上就可以看到小浣熊的图标,登录后即可使用。 编码体验 在 VS Code 中,Raccon 提供了侧边栏聊天、代码编辑辅助、控制台交互几个方面的AI功能,我们逐一体验下。 侧边栏聊天 和大部分 AI 一样,直接输入问题,回车后就可以通过问答的形式交流了:

spark基本原理&UI界面解读

这里是引用 1 八股文 1.1 基本原理 driver节点是整个应用程序的指挥所 指挥官是sparkcontext 环境:构建一个集群 应用程序提交 确定主节点,确定指挥所driver,确定指挥官sparkcontext sparkcontext会向资源管理器申请资源 会将作业分为不同阶段 将不同任务分到不同节点执行 整个过程还会进行监控 资源管理器收到sparkcontext的资源请求 会向executor分配资源 启动executor进程,才会启动线程 executor进程是驻留在不同的work node中 会有成百上千个进程和work node sparkcontext对象要根据 rdd依赖关系 构建一个DAG图 代码就是针对RDD一次次的操作 这些操作会被转换成一个有向无环图 dag DAG会被提交到dag scheduler解析 DAG图会被切为很多个阶段 stage 每个stage又分为若干个任务 每一个阶段stage是任务的集合 把这个阶段stage提交给task scheduler task scheduler负责分发任务 worker node上的executor会向task scheduler主动申请 task scheduler会返回任务给worker node上的executor去派生线程去执行 计算给节点的分发原则: 计算向数据靠拢。数据在哪个节点上面,task scheduler优先分配,完成本地化的处理。 executor运行的结果会再次反馈给task scheduler 再向上传给 dag scheduler spark context做最后的处理。返回给用户看或者写入HDFS sparkcontext:代表了整个应用程序连接集群的通道。链接应用和集群 1.2 核心原理 1.2.1 关键概念 driver: 该进程调用spark程序的main方法,并且启动sparkcontext cluster Manager:该进程负责和外部集群工具打交道,申请或释放集群资源 Woker:该进程是一个守护进程,负责启动和管理executor executor:该进程是一个JVM虚拟机。负责运行spark task 1.2.2 运行步骤 启动driver,创建sparkcontextclient提交程序给driver,driver向cluster manager申请集群资源资源申请完毕,在worker中启动executordriver将程序转化为tasks,分发给executor执行 1.

【Java】Java内存溢出:原因、预防和解决方法

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 什么是Java内存溢出? 内存溢出的原因 内存溢出的预防方法 内存溢出的解决方法 结语 作者其他作品: 随着Java技术的广泛应用,内存溢出(Out of Memory Error)成为了Java程序开发中常见的问题之一。本文将深入探讨Java内存溢出的原因、预防方法和解决方案,帮助读者更好地理解和应对这一挑战。 什么是Java内存溢出? Java内存溢出是指程序在运行过程中申请的内存超出了Java虚拟机(JVM)所分配的内存限制,导致无法继续正常执行的情况。当程序试图申请更多的内存空间时,而系统已无足够的内存可用时,就会抛出内存溢出错误。 内存溢出的原因 Java内存溢出通常是由以下几个原因引起的: 内存泄漏(Memory Leak): 程序中存在未释放的内存占用,导致内存不断累积,最终耗尽了可用内存空间。 大对象创建: 程序中频繁地创建大对象,而JVM堆内存又无法容纳这些大对象,导致内存溢出。 递归调用: 过深或者无限递归调用可能导致栈内存溢出。 内存资源分配不足: JVM分配的堆内存空间不足以满足程序的需求,尤其是在运行大规模数据处理或高并发情况下。 内存泄漏: 程序中存在不当的内存管理,比如持续创建对象但未释放,或者对象被错误地长时间引用。 内存溢出的预防方法 内存溢出是Java应用程序中常见的问题,为了有效预防内存溢出,可以采取以下几种方法: 合理设计和优化代码: 编写高效、低内存消耗的代码是预防内存溢出的关键。合理利用数据结构,避免频繁的对象创建和引用,及时释放资源是非常重要的。尤其是在处理大量数据或高并发场景下,需要特别注意内存的使用情况,尽量避免内存泄漏和大对象的创建。 监控和调优: 定期监控系统的内存使用情况,及时发现和解决内存泄漏或性能瓶颈。可以利用Java虚拟机提供的监控工具如JVisualVM、JConsole等来监控应用程序的内存使用情况,并进行调优。通过调整堆内存大小、垃圾回收策略等参数,可以有效地优化内存使用,预防内存溢出。 使用内存分析工具: 借助内存分析工具如MAT(Memory Analyzer Tool)、YourKit等,可以帮助定位内存泄漏和优化内存使用。这些工具可以分析堆内存中的对象引用关系,找出未被正确释放的对象,帮助开发者及时发现和解决潜在的内存溢出问题。 内存溢出的解决方法 解决Java内存溢出问题的方法多种多样,以下是一些常见的解决方法: 首先,可以利用内存分析工具,如VisualVM或MAT,对程序进行内存分析,找出内存泄漏或大对象创建的源头。这些工具可以帮助开发者准确定位内存溢出的原因,从而有针对性地解决问题。 其次,通过优化代码来减少内存占用。例如,可以尽量避免频繁创建对象,合理使用缓存,优化递归调用,减少内存泄漏的可能性等。优化代码结构和算法可以有效地减少内存的消耗。 另外,调整JVM参数来增加堆内存大小也是一种解决内存溢出的方法。可以通过调整-Xms和-Xmx参数来增加JVM堆内存的初始大小和最大大小,从而提高程序处理大量数据或高并发情况下的内存容量。 此外,调整垃圾回收策略也可以帮助解决内存溢出问题。可以增加垃圾回收的频率,选择合适的垃圾回收算法,并通过参数调优来提高垃圾回收的效率,从而释放更多的内存空间。 最后,在尝试以上方法之后仍然无法解决内存溢出问题的情况下,可以考虑重启应用程序。通过重启应用程序,可以释放掉占用的内存资源,重新启动程序,从而解决内存溢出问题。 结语 通过本文的介绍,我们了解了Java内存溢出的原因、预防方法和解决方案。在实际开发中,需要密切关注程序的内存使用情况,及时发现和解决内存溢出问题,以确保程序的稳定性和性能。 作者其他作品: 【Java】Spring循环依赖:原因与解决方法 OpenAI Sora来了,视频生成领域的GPT-4时代来了 [Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读 【Java】深入理解Java中的static关键字 [Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读 了解 Java 中的 AtomicInteger 类

【小沐学AI】数据分析的Python库:Pandas AI

文章目录 1、简介2、安装2.1 Python2.2 PandasAI 3、部署4、功能4.1 大型语言模型 (LLM)4.1.1 BambooLLM4.1.2 OpenAI 模型4.1.3 谷歌 PaLM4.1.4 谷歌 Vertexai4.1.5 Azure OpenAI4.1.6 HuggingFace 模型4.1.7 LangChain 模型4.1.8 Amazon Bedrock 模型4.1.9 本地模型 5、代码测试5.1 入门示例 结语 1、简介 https://pandas-ai.com/ https://github.com/Sinaptik-AI/pandas-ai PandasAI 是一个 Python 库,可以轻松地用自然语言向数据提问。它可以帮助您使用生成式 AI 探索、清理和分析数据。 PandasAI与您的数据库(SQL、CSV、pandas、polars、mongodb、noSQL 等)聊天。PandasAI 使用 LLM(GPT 3.5 / 4、Anthropic、VertexAI)和 RAG 进行数据分析对话。 PandasAI 是一个 Python 库,可以轻松地用自然语言对数据(CSV、XLSX、PostgreSQL、MySQL、BigQuery、Databrick、Snowflake 等)提出问题。xIt 可帮助您使用生成式 AI 探索、清理和分析数据。 除了查询之外,PandasAI 还提供通过图形可视化数据、通过处理缺失值来清理数据集以及通过特征生成提高数据质量的功能,使其成为数据科学家和分析师的综合工具。 PandasAI 使用生成式 AI 模型来理解和解释自然语言查询,并将其转换为 python 代码和 SQL 查询。然后,它使用代码与数据交互并将结果返回给用户。 PandasAI 的特点 自然语言查询:使用自然语言向数据提问。数据可视化:生成图形和图表以可视化数据。数据清理:通过处理缺失值来清理数据集。特征生成:通过特征生成提高数据质量。数据连接器:连接到各种数据源,如 CSV、XLSX、PostgreSQL、MySQL、BigQuery、Databrick、Snowflake 等。 2、安装 2.

Mysql 解决1251- Client does not support authentication protocol requested by server...的问题

一、问题描述 使用Navicat客户端连接本地mysql,报错:1251- Client does not support authentication protocol requested by server;consider upgrading Mysql client。 二、查看用户信息 打开命令行小黑屏,进入MySQL的bin目录,然后输入mysql -u root -p,输入密码,登录成功 执行SQL查询用户信息 select host,user,plugin,authentication_string from mysql.user; 备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码 三、问题原因 上网搜索解决方案,网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种: 方法1.升级navicat驱动; 方法2.把mysql用户登录密码加密规则还原成mysql_native_password. 这里采用方法2解决,具体操作步骤如下。 四、解决 在命令行输入如下命令,修改密码。 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 更新user为root,host为% 的密码为123456 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 更新user为root,host为localhost 的密码为123456 或者 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 (这行我没有写,不过貌似也可以) ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 FLUSH PRIVILEGES; #刷新权限 再次在Navicat中连接mysql,连接成功

llama笔记:官方示例解析 example_chat_completion.py

1 导入库 from typing import List, Optional ''' 从typing模块中导入List和Optional。 typing模块用于提供类型注解的支持,以帮助明确函数预期接收和返回的数据类型。 List用于指定列表类型 Optional用于指定一个变量可能是某个类型,也可能是None。 ''' import fire #fire能够自动将Python程序转换为命令行接口(CLI) from llama import Llama, Dialog #从llama模块中导入了Llama和Dialog 1 main函数 使用预训练模型生成文本的程序的入口点 1.0 main函数接受的参数 def main( ckpt_dir: str, tokenizer_path: str, temperature: float = 0.6, top_p: float = 0.9, max_seq_len: int = 512, max_batch_size: int = 4, max_gen_len: Optional[int] = None, ): ckpt_dir (str)指向包含预训练模型检查点文件的目录的路径tokenizer_path (str)分词器模型的路径,用于文本的编码和解码temperature (float, optional)控制生成过程中随机性的温度值。 温度值越高,生成的文本越随机,反之则更确定。top_p (float, optional)控制生成过程中多样性的top-p采样参数。 这是一种采样策略,允许模型在生成每个词时仅考虑概率最高的一部分词max_seq_len输入提示的最大序列长度。 这限制了模型可以处理的输入文本的长度max_batch_size生成序列的最大批量大小。 这决定了模型一次可以处理多少个生成请求max_gen_len 生成序列的最大长度。 如果设置为None,则会使用模型的最大序列长度。 1.1 构建文本生成器generator 利用提供的参数(模型检查点目录、分词器路径、最大序列长度和最大批量大小)来准备模型进行文本生成

基础环境-linux-安装jdk-解决bash: java: command not found...

在linux系统中安装jdk 1. 查看java版本,提示 command not found... [root@localhost xht]# java -version bash: java: command not found... [root@localhost xht]# 2. 下载安装jdk 国内镜像推荐 华为: https://repo.huaweicloud.com/java/jdk/ 我这里使用 jdk11.0.2 https://repo.huaweicloud.com/java/jdk/11.0.2+9/jdk-11.0.2_linux-x64_bin.tar.gz mkdir java && cd java wget https://repo.huaweicloud.com/java/jdk/11.0.2+9/jdk-11.0.2_linux-x64_bin.tar.gz tar -xzf jdk-11.0.2_linux-x64_bin.tar.gz 此时, 已经成功安装java [root@localhost java]# ./jdk-11.0.2/bin/java -version java version "11.0.2" 2019-01-15 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode) 但是直接执行java命令还是会提示command not found… 3. 添加环境变量 vi /etc/profile

mac安装nvm详细教程

1.打开终端 2.卸载电脑上的node/npm sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*} 3.输入安装命令 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash 或者使用镜像命令 $git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags` 如果报错 如果报错:curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443,可能是因为github 上一些域名的 DNS 解析被污染,导致DNS 解析过程中,无法通过域名获得正确的IP地址。 解决办法: 首先更改DNS地址8.8.8.8 4.配置nvm环境变量 打开.bash_profile 文件(若没有则创建),添加环境变量: (注意$符号是不算命令中的) 创建.bash_profile文件命令 $vi ~/.bash_profile打开.bash_profile文件命令 $open -e ~/.bash_profile将下面命令复制到.bash_profile文件里面去 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 保存 source ~/.bash_profile 5.

Nginx离线安装(保姆级教程)

1、下载与安装gcc-c++环境 获取rpm包的方式很多,在这里推荐使用yum工具获取,因为手动从官网下载,手动执行rpm -Uvh *.rpm --nodeps --force命令进行安装,可能会缺少某个依赖,我们也不确定到底需要哪些依赖。 因此需要准备一台可以连互联网的服务器,通过yum工具用来下载各种rpm包,再把rpm上传至内网服务器。 注意:本文使用的操作系统是CentOS。 # 1.更新源 [root@laizhenghua /]# yum update -y # 2.手动安装第三方源 [root@laizhenghua /]# yum install epel-release # 3.安装yum-downloadonly # 这样我们就可以通过 --downloadonly 参数将rpm包安装到本地 如 # yum install -y 包名 --downloadonly --downloaddir=目录 [root@laizhenghua /]# yum -y install yum-plugin-downloadonly # 4.下载gcc-c++环境rpm包 [root@laizhenghua /]# yum -y install --downloadonly --downloaddir=/opt/soft gcc-c++ [root@laizhenghua /]# ls gcc-c++-4.8.5-44.el7.x86_64.rpm # 5.将gcc-c++-4.8.5-44.el7.x86_64.rpm 上传至内网服务器 # 如我这里上传至 /opt/soft/gcc-c++ 目录 [app@laizhenghua gcc-c++]$ pwd /opt/soft/gcc-c++ [app@laizhenghua gcc-c++]$ ls gcc-c++-4.

【刷题节】美团2024年春招第一场笔试【算法策略】题解

目录 前言 —— 瞎扯淡1. 小美的平衡矩阵1.1 解题思路1.2 AC代码 2. 小美的数组询问2.1 解题思路2.2 AC代码 3. 小美的 MT3.1 解题思路3.2 AC代码 4. 小美的朋友关系4.1 解题思路4.2 AC代码 5. 小美的区间删除5.1 解题思路5.2 AC代码 前言 —— 瞎扯淡 背景一 目前,我所搜索到的全网博文关于 小美的朋友关系 都没有通过的代码。思路是正确的,但是代码都是超时或答案错误。鉴于目前官方也没有发布题解,遂写此篇博客供大家交流学习 背景二 中午午休的时候,科科公主给我甩来一个链接,让我陪她一起做题。做了 80 80 80 分钟左右,把除了 小美朋友关系 其他题目写完,就去上课了。后面吃完晚饭,又补了 小美朋友关系 这道题。 整体评价 美团的算法笔试,没有我想象的那么难。 我之前看大厂招算法岗,都需要研究生学历。所以期望值很高,做了一下发现不是太难。大概就等同于中学OI的普及组难度。 1. 小美的平衡矩阵 题目链接:小美的平衡矩阵 —— 牛客网 1.1 解题思路 算法思想: 前缀和+遍历 时间复杂度: O ( n 3 ) O(n^3) O(n3) n n n 的数据量只有 200 200 200,依次遍历矩形边长 k ∈ [ 1 , n ] k \in [1, n] k∈[1,n]:

Windows server Database 2025 安装 i225/i226 网卡驱动

windows这比坏得很,intel消费级网卡不准在服务器系统上安装。你要说他是异构不支持?他就纯粹恶心人。 之前已经安装过一次,但是今天database预览版一更新,又给我把网卡驱动杀了,气死,写一篇教程。 1.去官网下载驱动 英特尔® 以太网适配器完整的驱动程序包 https://www.intel.cn/content/www/cn/zh/download/15084/intel-ethernet-adapter-complete-driver-pack.html 网址不知道会不会失效,贴个图,失效了自己搜 2.硬件签名检查关闭 CMD运行,应该是要执行完再重启一下 bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS bcdedit -set TESTSIGNING ON 亲测 不关的话驱动可以安装但是不认 网卡还是不能用 3.驱动包找到对应驱动路径 修改配置文件 查看自己的网卡硬件ID (我I226的驱动如下,如果是其他网卡 没安装驱动看不出,去网上查。) PCI\VEN_8086&DEV_125C&SUBSYS_00008086&REV_04 记录下来硬件ID, 然后去修改配置文件 先在配置文件中搜索自己网卡的 brandname E125CNC.DeviceDesc = "Intel(R) Ethernet Controller I226-V" 现在我们得到了硬件ID和brandname,就可以依葫芦画瓢进行修改了 PCI\VEN_8086&DEV_125C&SUBSYS_00008086&REV_04 E125CNC.DeviceDesc = "Intel(R) Ethernet Controller I226-V" 修改如下,注意添加位置,按照自己情况。图中都有注明 [Intel.NTamd64.10.0.1..22000] %E125CNC.DeviceDesc% = I226.10.0.1..22000, PCI\VEN_8086&DEV_125C 4.打开设备管理器,进行驱动安装 安装过程又臭又长,完全按着图示做,不要耍个性(除了网卡型号选择和网卡驱动路径对应自己的) 这一步对应自己的网卡驱动路径 这一步对应自己的网卡 注意用LM版本 到这里就完成了,总之还是想辱骂windows,提供便捷的同时又人为制造困难,多少有点(隔壁linux内核直接自带全家桶了就一省心) 并且近年Intel的新U安装显卡驱动和普通声卡驱动都不会出声(主板HDMI接口输出,win11 win10都一样),要多装一个iSST驱动,难找的一批,不清楚细节,反正也感觉莫名其妙。只能说AMDyes了。