python小菜菜_个人页

个人头像照片 python小菜菜
个人头像照片 个人头像照片
3
302
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:
  • Python
    高级

    能力说明:

    通过课程学习与实战项目,熟练掌握Python的语法知识与编程技能,具备Python语言的函数、面向对象、异常处理等能力,常用开发框架的实际应用和开发能力,具备使用,掌握Python数据分析三剑客Matplotlib、Numpy、Pandas的概念与应用场景,掌握利用Python语言从数据采集到分析的全流程相关知识。

    获取记录:

  • 数据库
    中级

    能力说明:

    可对MySQL数据库进行备份与恢复,可较为熟练的使用SQL语句进行单表多表查询等操作,可快速上手阿里云RDS MySQL数据库,可进行MySQL云数据库的创建、设置、数据迁移等工作。了解常见NOSQL数据库,如MongoDB、Redis、Memcached的概念、安装、配置等相关基础知识。

    获取记录:

    • 2021-01-07大学考试 大学/社区-用户参加考试
    • 2021-01-07大学考试 数据库中级 大学/社区用户通过技能测试
云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2020年05月

  • 发表了文章 2021-01-04

    云效codeup|初体验心得

  • 发表了文章 2020-05-28

    解放互联网项目管理瓶颈——阿里云效帮你搞定!

  • 发表了文章 2020-04-24

    泰山版Java开发手册-Java学习心得

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2020-06-19

    synchronized和volatile 区别是什么

    volatile和synchronized的区别 volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的 volatile仅能实现变量的修改可见性,不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性 volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。 volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化
    踩0 评论0
  • 回答了问题 2020-06-19

    java 有几个基本数据类型

    Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 byte: byte 数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是 -128(-2^7); 最大值是 127(2^7-1); 默认值是 0; byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一; 例子:byte a = 100,byte b = -50。 short: short 数据类型是 16 位、有符号的以二进制补码表示的整数 最小值是 -32768(-2^15); 最大值是 32767(2^15 - 1); Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一; 默认值是 0; 例子:short s = 1000,short r = -20000。 int: int 数据类型是32位、有符号的以二进制补码表示的整数; 最小值是 -2,147,483,648(-2^31); 最大值是 2,147,483,647(2^31 - 1); 一般地整型变量默认为 int 类型; 默认值是 0 ; 例子:int a = 100000, int b = -200000。 long: long 数据类型是 64 位、有符号的以二进制补码表示的整数; 最小值是 -9,223,372,036,854,775,808(-2^63); 最大值是 9,223,372,036,854,775,807(2^63 -1); 这种类型主要使用在需要比较大整数的系统上; 默认值是 0L; 例子: long a = 100000L,Long b = -200000L。 'L'理论上不分大小写,但是若写成'l'容易与数字'1'混淆,不容易分辩。所以最好大写。 float: float 数据类型是单精度、32位、符合IEEE 754标准的浮点数; float 在储存大型浮点数组的时候可节省内存空间; 默认值是 0.0f; 浮点数不能用来表示精确的值,如货币; 例子:float f1 = 234.5f。 double: double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数; 浮点数的默认类型为double类型; double类型同样不能表示精确的值,如货币; 默认值是 0.0d; 例子:double d1 = 123.4。 boolean: boolean数据类型表示一位的信息; 只有两个取值:true 和 false; 这种类型只作为一种标志来记录 true/false 情况; 默认值是 false; 例子:boolean one = true。 char: char类型是一个单一的 16 位 Unicode 字符; 最小值是 \u0000(即为0); 最大值是 \uffff(即为65,535); char 数据类型可以储存任何字符; 例子:char letter = 'A';。
    踩0 评论0
  • 回答了问题 2020-06-19

    java中 equals与==的区别

    ==是一个比较运算符,bai基本数据类型比较的是du值,引用数据类zhi型比较的是地址值。 (比dao较地址值即是指是否为同一个对象的引用) equals()是一个方法,只能比较引用数据类型。重写前比较的是地址值,重写后比一般是比较对象的属性。
    踩0 评论0
  • 回答了问题 2020-06-19

    网站备案怎么选择产品类型

    阿里云域名备案时产品类型怎么选?在阿里云进行域名备案,需要购买阿里云的服务器,并根据服务器种类来选择对应的产品验证方式。 比如,验证服务器为 ECS、轻量应用服务器、弹性 web 托管、建站市场的,产品类型是 阿里云,验证方式是 备案服务号; 验证服务器为 云虚拟服务器的,产品类型是 万网主机,验证方式是 主机管理用户名和密码; 验证服务器为 1688 旺铺/企业官网的,产品类型是 阿里巴巴旺铺/企业官网,验证方式是 域名。 在阿里云网站,产品类型中通常有 云服务器ECS、建站市场、弹性web托管、轻量应用服务器、NAT网关等等好多选项,一般是云服务器ECS 或者建站市场中的网站空间,你可以选择对应的类型进行备案。 以上是关于阿里云域名备案时产品类型怎么选的介绍。相比在阿里云系统备案来说,在西部数码网站备案就要简单的多。 阿里云域名备案时产品类型怎么选 西部数码有独立的备案系统,网站备案无需幕布拍照,率先实现全程电子化!通过电子化核验,网站主办者只需要用手机拍照填表,就可以轻轻松松完成网站备案工作,整个过程只需要拿着手机,分分钟即可完成。 相比跑核验点拍幕布照的方式,西部数码电子化网站备案节省了上百倍的时间成本以及交通成本,让网站备案工作变得简单、高效、省时、省力。 用户在西部数码网站提交备案资料后,只需要用手机拍拍照,即可轻松完成网站备案的真实性核验工作,整个过程最短可以在3分钟左右完成,也不涉及任何费用。 现在西部数码6.18年中大促活动正在火热进行,两人拼团即可享5折优惠,赶快来西部数码入手云主机,轻松备案吧,产品链接 https://www.west.cn/cloudhost/
    踩0 评论0
  • 回答了问题 2020-06-19

    阿里云物联网有不经过服务器中转,直接连接APP的方案嘛

    规则引擎的数据流转 阿里云产品文档链接:https://help.aliyun.com/document_detail/30554.html?spm=5176.11485173.0.0.4f2e59af5ahvfm 该链接的文档主要讲解创建规则引擎时SQL表达式的使用。现在具体分析一些不明点。 先补充个知识点: 这是demo产品的Topic定义,最好选用发布和订阅一起,如上图的“操作权限”,这样方便。 1,创建一个test规则名称 (*规则名称的长度有限制,支持中文、英文字母、数字、下划线和短划线,长度限制1-30,中文算两位) 根据自己的上位机和下位机的数据转发方式选择json或二进制格式。在此选择json格式。 2,处理数据 假如从公司自己的服务器后台转发数据。
    踩0 评论0
  • 回答了问题 2020-06-19

    我的电脑一打开datav就报错。{"isError":true,"code":404}

    重新用镜像做系统吧,没必要针对问题解决。
    踩0 评论0
  • 回答了问题 2020-06-20

    System.Net.WebException: 操作超时

    原因一: 连接超时时间 Timeout 以及写入Post数据超时时间 ReadWriteTimeout 设置得太短,一般要设置大于6000ms。 原因二: Expect100Continue 属性的值设置为了true,将 Expect100Continue 属性的值设置为 false 即可解决问题。 代码: public static string Post(string xml, string url, bool isUseCert, int timeout) { System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接 string result = '';//返回结果 HttpWebRequest request = null; HttpWebResponse response = null; Stream reqStream = null; try { //设置最大连接数 ServicePointManager.DefaultConnectionLimit = 200; //设置https验证方式 if (url.StartsWith('https', StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); } /*************************************************************** * 下面设置HttpWebRequest的相关属性 * ************************************************************/ request = (HttpWebRequest)WebRequest.Create(url); request.Method = 'POST'; request.Timeout = timeout * 1000; //设置代理服务器 //WebProxy proxy = new WebProxy(); //定义一个网关对象 //proxy.Address = new Uri(WxPayConfig.PROXY_URL); //网关服务器端口:端口 //request.Proxy = proxy; //设置POST的数据类型和长度 request.ContentType = 'text/xml'; byte[] data = System.Text.Encoding.UTF8.GetBytes(xml); request.ContentLength = data.Length; //这个在Post的时候,一定要加上,如果服务器返回错误,他还会继续再去请求,不会使用之前的错误数据,做返回数据 request.ServicePoint.Expect100Continue = false; //是否使用证书 if (isUseCert) { string path = HttpContext.Current.Request.PhysicalApplicationPath; X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD); request.ClientCertificates.Add(cert); Log.Debug('WxPayApi', 'PostXml used cert'); } //往服务器写入数据 reqStream = request.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); //获取服务端返回 response = (HttpWebResponse)request.GetResponse(); //获取服务端返回数据 StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); result = sr.ReadToEnd().Trim(); sr.Close(); } catch (System.Threading.ThreadAbortException e) { Log.Error('HttpService', 'Thread - caught ThreadAbortException - resetting.'); Log.Error('Exception message: {0}', e.Message); System.Threading.Thread.ResetAbort(); } catch (WebException e) { Log.Error('HttpService', e.ToString()); if (e.Status == WebExceptionStatus.ProtocolError) { Log.Error('HttpService', 'StatusCode : ' + ((HttpWebResponse)e.Response).StatusCode); Log.Error('HttpService', 'StatusDescription : ' + ((HttpWebResponse)e.Response).StatusDescription); } throw new WxPayException(e.ToString()); } catch (Exception e) { Log.Error('HttpService', e.ToString()); throw new WxPayException(e.ToString()); } finally { //关闭连接和流 if (response != null) { response.Close(); } if(request != null) { request.Abort(); } } return result; }
    踩0 评论0
  • 回答了问题 2020-06-19

    react生态下快照测试如何做?

    React 16 Jest快照测试 项目初始化 git clone https://github.com/durban89/webpack4-react16-reactrouter-demo.git cd webpack4-react16-reactrouter-demo git fetch origin git checkout v_1.0.24 npm install 只要想确保UI不会意外更改,快照测试是非常有用的工具。 移动应用程序的典型呈现UI组件快照测试用例,通过截取屏幕截图,然后将其与存储在测试这边的参考图像进行比较。 如果两个图像不匹配,测试将失败,可能是被意外的更改了,或者需要将屏幕截图更新为新版本的UI组件。 Jest快照测试 在测试React组件时,可以采用类似的方法。 可以使用测试渲染器快速生成React树的可序列化值,而不是渲染需要构建整个应用程序的图形UI。 下面做一个简单的Link组件的示例测试: 测试之前先安装下react-test-renderer依赖库
    踩1 评论0
  • 回答了问题 2020-06-19

    Android ORM框架ActiveAndroid使用

    Android ORM 框架之 ActiveAndroid 最近研究了一下Android中的ORM框架,其一是ActiveAndroid,ActiveAndroid算是一个轻量级的ORM框架,配置,使用还都算是比较简单的。 初始化Jar包 Github地址,下载源代码 打开CMD,进入源码根目录 执行ant jar包生成,可以在dist文件夹里找到。 工程配置 在AndroidManifest.xml中需要添加数据库名和版本号 如果这两个都不写的话,默认会是Application.db,库版本号为1。 在Application中初始化 可以继承com.activeandroid.app.Application,可以在自己的Application里初始化,看com.activeandroid.app.Application文件就明白了: public class Application extends android.app.Application { @Override public void onCreate() { super.onCreate(); ActiveAndroid.initialize(this); } @Override public void onTerminate() { super.onTerminate(); ActiveAndroid.dispose(); } } 所以如果不继承只需要在自己的Application 添加ActiveAndroid.initialize(this)和 ActiveAndroid.dispose()的操作即可。
    踩0 评论0
  • 回答了问题 2020-06-19

    阿里云提交spark集群运行

    特别坑的地方: 不能使用公网ip, 就算你把1001/65533给0.0.0.0/0 全部开放端口都没有用, 只能使用内网ip和主机名关联, 用内网ip启动spark     在/etc/hosts文件: 127.0.0.1 localhost 你的内网ip 你的主机名     对应的spark-env.sh文件 export SPARK_LOCAL_IP=你的主机名 export SPARK_MASTER_HOST=你的主机名     对应的slaves文件 你的主机名 用公网ip就报错 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7077. Attempting port 7078. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7078. Attempting port 7079. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7079. Attempting port 7080. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7080. Attempting port 7081. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7081. Attempting port 7082. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7082. Attempting port 7083. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7083. Attempting port 7084. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7084. Attempting port 7085. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7085. Attempting port 7086. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7086. Attempting port 7087. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7087. Attempting port 7088. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7088. Attempting port 7089. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7089. Attempting port 7090. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7090. Attempting port 7091. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7091. Attempting port 7092. 17/07/24 21:16:03 WARN Utils: Service 'sparkMaster' could not bind on port 7092. Attempting port 7093. Exception in thread 'main' java.net.BindException: Cannot assign requested address: Service 'sparkMaster' failed after 16 retries (starting from 7077)! Consider explicitly setting the appropriate port for the service 'sparkMaster' (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries.     2. spark2.1.1版本的spark居然不能spark-shell到spark-2.2.0版本, 版本居然步兼容, 一言不合就报错: org.apache.spark.SparkException: Exception thrown in awaitResult 我的服务器的spark的版本是2.2.0的 我的电脑上的spark是2.1.1的 坑了我一晚上
    踩0 评论0
  • 回答了问题 2020-06-19

    服务器内网带宽 的出网 入网限制是多少呢

    有限制,ECS云服务器分为非I/O优化和I/O优化(非I/O优化实例已经很少见了),内网宽带限制规则如下: 非I/O优化的实例为千兆共享带宽 I/O优化的实例为万兆或25G共享带宽。 由于是共享网络,因此无法保证带宽速度是不变的。 参考文档:云服务器内网限制说明 - 阿里云 关于宽带的出入网限制如下: 当出网带宽小于10 Mbit/s时,入网带宽最大为10 Mbit/s。 当出网带宽大于10 Mbit/s时,入网带宽与您购买的出网带宽一致。 官方文档有详细说明:云服务器内网宽带FAQ - 阿里云 云服务器吧来总结一下: 假设我们购买的云服务器公网宽带是1M,那么下载宽带为1M,上传宽带最大为10M; 假设我们购买的云服务器公网宽带是20M,那么下载宽带为20M,上传宽带为20M。
    踩0 评论0
  • 回答了问题 2020-06-19

    使用DMS for analytic 常见数据库表 不能创建外键。

    若将DRDS的一张单表(没被拆分的表)设置为广播表,将不再需要在各分库上重新建相同的表。
    踩0 评论0
  • 回答了问题 2020-06-19

    下载站可以使用阿里云OSS做软件的存储下载服务吗?价钱如何?

    阿里云青岛节点oss服务报错解决方式 The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. endpoint 根据自己选择的节点选择; SDK 中的endpoint 就是指bucket 所在的区域 具体可以参考下这个链接 http://help.aliyun.com/view/11108271_13438690.html?spm=5176.7114037.19966461
    踩0 评论0
  • 回答了问题 2020-06-20

    Flink sql 支持在流式数据上使用LAG和LEAD函数吗

    SQL Server从2012开始,引入了LEAD和LAG函数,这两个函数可以把之前要关联查询的方法,改为可直接获取当前数据上下相邻多少行数据,描述的有点不清楚,上数据吧,测试数据: --测试数据 if not object_id(N'Tempdb..#T') is null drop table #T Go Create table #T([Id] int,[Value] int) Insert #T select 1,10 union all select 2,20 union all select 3,30 union all select 4,40 union all select 5,50 Go --测试数据结束        以LEAD方法为例(LAG一样),语法是这样的:LEAD ( scalar_expression [ ,offset ] , [ default ] ) OVER ( [ partition_by_clause ] order_by_clause ),读取的数据,偏移多少行,如果没有值默认值是多少,写法如下: SELECT *, LEAD(Value, 1, 666) OVER (ORDER BY Value) AS LEADVALUE, --提前1行,默认值666 LAG(Value, 2, 888) OVER (ORDER BY Value) AS LAGVALUE --滞后2行,默认值888 FROM #T;        结果如下:        我们也可以不写偏移数和默认值,结果就是这样的: SELECT *, LEAD(Value) OVER (ORDER BY Value) AS LEADVALUE, --提前1行 LAG(Value) OVER (ORDER BY Value) AS LAGVALUE --滞后1行
    踩0 评论1
  • 回答了问题 2020-06-19

    uppty连接阿里云服务器发生NetWorkError:Connection TimeOut

    使用这个工具要3306和22端口都要开放指定IP才行。
    踩0 评论0
  • 回答了问题 2020-06-19

    Python和zabbix结合(编写监控项的Python脚本,zabbix自动化注册添加主机怎么做?

    Zabbix,Nagios等监控软件在运维方面越来越受青睐,因为能够准时,及时的将服务器产生的故障信息,发送给运维人员,以便运维人员能够及时的解决问题。但是近来,越来越多的公司就偏向了的zabbix阵营,当然选择这东西,因人而异。     编者在学习了Python一段时间后,发现Zabbix Api可以利用脚本的形式实现Zabbix自动监控,所以编者在兴趣驱使下,在查阅了相关的资料后,就开始使用自己的云服务器进行实验。    所以本文介绍的就是如何使用Python,Zabbix Api,钉钉机器人,来实现自动化监控。
    踩0 评论0
  • 回答了问题 2020-06-19

    nacos启动成功后正常访问 却出现如下问题 后台并没有任何报错 出现这种情况的原因有谁知道吗?

    删除报错信息中的'/data/nacos/data/derby-data'目录,重新启动。
    踩0 评论0
  • 回答了问题 2020-06-19

    我有一个微信小程序要使用SSL证书,哪些类型比较适合我呢?

    微信9月21日晚宣布“微信小程序开始内测”,并于11月3日宣布开始公测,官方需求文档要求后台使用HTTPS请求进行网络通信。   什么是微信小程序?   小程序是一种不需要下载安装即可使用的应用,即搜即用,用完就走,用户不用关心是否安装太多应用的问题,无需安装卸载。这是一个全新的生态,开发者可以快速地开发一个小程序,在微信内被便捷地获取和传播。   微信小程序要求HTTPS请求   为了保护小程序应用安全,微信官方的需求文档要求,每个微信小程序必须事先设置一个通讯域名,并通过HTTPS请求进行网络通信,不满足条件的域名和协议无法请求。因此开发者应先准备好配置好HTTPS证书的域名,还没有配置HTTPS要赶紧升级。   SSL证书的选择   域名要实现HTTPS加密请求,需要安装SSL证书。SSL证书的种类那么多,怎么选择适合自己网站的SSL证书?   1)SSL证书类型   DV SSL证书(域名验证型):只验证域名所有权,适合个人网站、博客等站点使用;   IV SSL证书(个人验证型):验证网站所属个人身份,适合自媒体、个人品牌站点使用;   OV SSL证书(企业验证型):验证网站所属单位身份,适合企业级用户使用;   EV SSL证书(扩展验证型):扩展验证网站所属单位身份,适合高度信任的企业级用户使用。   2)支持的域名类型和加密强度   哪些领域适合接入微信小程序   小程序一经推出,立刻引发业界热议,各种Demo、指南一夜之间霸屏,但并不是所有服务都适合小程序。其中,使用频次较低但却比较重要的服务,就非常适合加入微信小程序的申请队伍,比如:教育、医疗、家政、求职招聘、二手买卖、旅游、票务等,用户一年用个一两次之后就再也想不起来的,通过微信小程序解决要比引导用户通过原生方式下载更高效便捷。   另外,初创型企业和个人开发者也可以通过小程序来试探MVP产品,微信拥有天然的传播能力和获客能力,而原生应用除了开发比较复杂外,推广成本极高,获客成本极高,这些都阻碍了产品的探索和快速试错。
    踩0 评论0
  • 回答了问题 2020-06-19

    希望云函数能在线安装 npm 依赖

    前言 fun install 是 fun 工具的一个子命令,用于安装 pip 和 apt 依赖,提供了命令行接口和 Funfile 描述文件两种形式。 安装 pip 包依赖 下面的命令安装 python 的 tensorflow 包 $ fun install --runtime python2.7 --package-type pip tensorflow skip pulling image aliyunfc/runtime-python2.7:build-1.2.0... Task => [UNNAMED] => PYTHONUSERBASE=/code/.fun/python pip install --user tensorflow 说明 --runtime 指定 runtime,如果已经初始化 fun.yml 文件, 由于 fun.yml 里声明了 runtime ,该选项可以省略。 --package-type 指定安装依赖的类型,pip 和 apt 是目前的两个可选值。 tensorflow 是一个 pip 包名。 命令执行在 fc-docker 提供的 container 中,容器内部执行的命令会逐行打印出来,比如上面命令中内部真实执行了 PYTHONUSERBASE=/code/.fun/python pip install --user tensorflow 命令。
    踩0 评论0
  • 回答了问题 2020-06-19

    主办单位变更了法人,备案时被提醒主办单位负责人证件号码与工商信息不一致。

    根据《工业和信息化部关于规范互联网信息服务使用域名的通知》,阿里云ICP代备案管理系统增加了域名实名校验功能,要求域名必须完成实名认证才能备案,同时阿里云备案审核专员也会在您提交备案时及备案成功后,对您备案的网站域名进行域名核验,以保证备案的网站域名真实有效。 如果您未能通过域名核验,阿里云将按照通信管理部门的要求停止为您提供接入服务。为避免影响您的备案进度或网站服务,您需了解域名核验范围及域名核验规则。 如果您收到域名核验不通过的通知,请参见未通过域名核验的原因和解决方法进行排查处理。
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息