- RAG与LLM原理及实践(17)---Docker Redis & Python Usage
PhoenixAI8
RAGMilvusChroma源码及实践redis数据库缓存
目录背景Redis环境download修改镜像RunRedisCodingpythonredisdownload基本使用描述完整代码运行结果高阶用法序列化的方式Snapshot与AOF快照(RDB)AOF(Append-OnlyFile)代码总结发布与订阅描述代码运行结果注意事项解释Transanction描述代码键空间描述开启python代码运行结果背景实际上,你会发现本专栏题目是RAG,Mil
- 流利说英语A+商务英语学习笔记——第1章搞定面试 第7节《面试之闪亮登场》
Ronnie学英语
面试开局JChasappliedforapositionasamarketingassistant.TodayshewillattendourinterviewandLeonwillbeherinterviewer.Iamrecentgraduate(形容词毕业的)fromUniversity,whereImajorinmarketing.Iwasalsovicepresidentofmycoll
- python绝技:运用python成为顶级黑客
张柏慈
python
前言有多少人是因为看了电视,看了那些牛逼的黑客选择成为程序员的。我貌似也是其中一个,只是自从成为程序员以来,天天都是加班coding,到家就是睡倒床上。兴趣变成了压力。直到我选择离职,在家修养,才有精力重新把编程变成兴趣。因为Python的无所不能,我选择Python作为主要编程语言。在这之前已经学过《廖雪峰的python教程》,也看过了《flaskweb实战》,之前还看过《headfirstin
- Python 抓取图片
weixin_30477797
python
#coding:utf-8frombs4importBeautifulSoupimportrequestsimporturllibuser_agent='Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36'headers={'User-Agen
- python的request模块
qq_34535410
require-py
importrequestsfromlxmlimporthtmlr=requests.get('https://api.github.com/user',auth=('user','pass'))printr.status_codeprintr.headersprintr.encodingprintr.textprintr.json()payload={"wd":"a"}r=requests.ge
- python pyqt5 设置控件随窗体拉伸
SkTj
2#--coding:utf-8--'''【简介】布局中用到的addStretch函数例子'''fromPyQt5.QtWidgetsimportQApplication,QWidget,QVBoxLayout,QHBoxLayout,QPushButtonimportsysclassWindowDemo(QWidget):definit(self):super().init()btn1=QPus
- python拆分EXCEL文件
金哥的小超人
pythonexcel开发语言
由于工作原因,经常上传一些不超过5000的数据,EXCEL当中数据量太大,如果不会写宏或者office不精通的话可能处理起来有些费尽,所以写了这段代码,用来分割EXCEL,好用实惠。#-*-coding:utf-8-*-"""CreatedonMonDec1117:06:222023@author:86188"""importpandasaspd#读取需要拆分的表格df=pd.read_excel
- R-Drop pytorch实现
warpin
深度学习深度学习pytorch
Pytorch实现了R-Drop,可以用于训练分类模型。#-*-coding:utf-8-*-"""Description:AnimplementationofR-Drop(https://arxiv.org/pdf/2106.14448.pdf).Authors:lihpCreateDate:2021/8/24"""fromtorchimportnnfromtorch.nnimportfunct
- 【Python】微信发送信息
onenote_1
python微信开发语言
Python微信发送信息cat/opt/shell/weixin.py#!/usr/bin/python#-*-coding:utf-8-*-importsysimporturllib2importtimeimportjsonimportrequestsreload(sys)sys.setdefaultencoding('utf-8')touser=sys.argv[1]title=sys.arg
- python中read excel_Python 中pandas.read_excel详细介绍
随风涂梅明
python中readexcel
Python中pandas.read_excel详细介绍#coding:utf-8importpandasaspdimportnumpyasnpfilefullpath=r"/home/geeklee/temp/all_gov_file/pol_gov_mon/downloads/1.xls"#filefullpath=r"/home/geeklee/temp/all_gov_file/pol_g
- [python] 一个例子初步学习DataFrame _ 修改列名
Jean2257
pythonpythonDataFrame
例子:假设有4家公司,他们都在2个省份有自己的业务,用统计量v1,v2进行描述,现在需要对这些数据进行一定的分析.#-*-coding:utf-8-*-importpandasaspdlist1=[1,2,3,4,5,6,7,8]list4=[8,7,6,5,4,3,2,1]list2=['a','a','a','a','b','b','b','b']list3=['c1','c2','c3','
- Spring-JdbcTemplate详解,这都看不懂就安心去当个咸鱼吧!
2401_86367135
面试辅导大厂内推springsql数据库
jdbc.url=jdbc:mysql://localhost:3306/springjdbc?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=falsejdbc.user=rootjdbc.password=1234可以通过HSQLDB自带的工具来初始化数据库表,这里我们写一个Bean,在Spring容器启动时自动创建一个users表:
- Python 对话框
houyanhua1
Pythonpython
#coding=utf-8#对话框fromtkinterimport*importtkinter.messageboxasmb#给导入的包指定一个别名classApp:def__init__(self,master):frame=Frame(master)frame.pack()button=Button(frame,text='点击',command=self.info)button.grid(
- 【原型设计】支持私有化部署到服务器的原型设计程序、原型设计预览程序
传而习乎
开源
根据您的需求,以下是一些可以部署到服务器上的原型设计图预览开源程序:Axure:虽然Axure本身不是开源软件,但它支持将原型图导出为HTML文件,并通过Git进行版本控制和部署。您可以使用Coding.net的Pages功能来托管这些HTML文件,实现在线预览。这种方法适合有开发背景的产品经理,可以系统、安全地进行版本控制和管理。Penpot:这是一个开源的设计和原型制作平台,支持跨平台使用,并
- 初识爬虫2
菜鸡中的奋斗鸡→挣扎鸡
爬虫
requests学习:小技巧,如果你用的也是pycharm,对于控制台输出页面因为数据很长一行,不方便进行查看,可以让它自动换行:1.requests文档阅读学习链接:快速上手—Requests2.18.1文档需掌握2.发送请求和获取响应#-*-coding:utf-8-*-#安装:pipinstallrequestsimportrequestsurl='https://www.baidu.com
- python怎么解码成字符串_python字符串怎么解码?
weixin_39619478
python怎么解码成字符串
python字符串解码的方法:python中可以使用decode()方法对字符串进行解码。python中可以使用encode()方法将字符串转换为bytes类型,此过程称为“编码”。decode()方法用于将bytes类型的二进制数据转换为str类型,这个过程也称为“解码”。decode()方法的语法格式如下:bytes.decode([encoding="utf-8"][,errors="str
- 【LeetCode】面试经典 150 题 Day 1
追风0068
Leetcodeleetcode面试算法职场和发展
88.合并两个有序数组https://leetcode.cn/problems/merge-sorted-array/description/?envType=study-plan-v2&envId=top-interview-15088.合并两个有序数组给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到n
- Python数据可视化:25年GDP之变_基于d3
2401_84558508
程序员python信息可视化开发语言
同时还需要注意一下编码问题,这里的CSV文件需要用gbk编码。下面是从统计局下载下来的CSV数据。我偷了个懒,直接就先在表格里删除了前三行,如下。接下来便是用Python对数据进行规整,代码如下。 importpandasaspd#读取数据df=pd.read_csv(gdp.csv,encoding=utf-8)(names,values,dates)=([],[],[])#记得去除地区这个列名
- pyinstaller|打包生成的EXE报错No module named ‘openpyxl.cell._writer‘
孤独的追光者
Pythonpython
一、问题描述#-*-coding:utf-8-*-#@CreateTime:2024/4/2213:38#@EditTime:2024/4/2310:59#@Author:Tim#@File:UI.py#@Software:PyCharmimportreimporttkinterastkfromtkinterimportttkfromtkinterimportmessageboximportpan
- torch.stack()方法在数据集构造中的应用
大多_C
pytorch人工智能python
torch.stack()是PyTorch中用于将多个张量沿着新维度进行堆叠的操作。在你的代码中,e1_encodings和e2_encodings是从每个句子中提取的和的向量,形状为[hidden_size]。当我们对它们使用torch.stack()时,多个向量会堆叠成一个新的二维张量,形状为[num_sentences,hidden_size],其中num_sentences是句子的数量。如
- 关键字提取
蓝色滑行
关键词提取importpandasaspdimportjieba.analyse#导入关键词库读取文本fn=open('d:/collect.txt',encoding='UTF-8')string_data=fn.read()fn.close()关键词提取"TF-IDF(termfrequency-inversedocumentfrequency)是一种针对关键字的统计分析方法,用来评估关键字或
- 这可能是全网最详细的 Spring Cloud OAuth2 单点登录使用教程了,妈妈再也不用担心我被面试官吊打了!
2401_84558091
程序员java面试学习
最后对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。再分享一波我的Java面试真题+视频学习详解+技能进阶书籍本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收
- 【Python】文件读写(CSV、Excel)
素颜清风宛如月
Pythonpython
一、CSV文件1读csv文件1.1以数组方式读文件deflistReader():withopen("user.csv",encoding="UTF-8")ascsvFile:#读文件csvData=csv.reader(csvFile)#数据集合print(list(csvData))#遍历数据对象fordataincsvData:#csvData.line_num:每条数据的行号print("
- R语言-非结构化数据-文本数据读入
pdc31czy
Rr语言数据分析
#2.2.2非结构化数据-文本数据读入rm(list=ls())#清空工作空间##1.读入简单文本数据###假如数据包含大量经过结构化的文本数据#只需按照读入csv等标准式数据的方法读入#例:novel=read.csv("novel.csv",fileEncoding="UTF-8")head(novel)##2.用readtable读入文本###文本数据普通读法test=read.table(
- Coding and Paper Letter(十四)
G小调的Qing歌
资源整理。1Coding:1.R语言包ungeviz,ggplot2的拓展包,专门用来作不确定性的可视化。ungeviz2.计算机图形学相关开源项目。计算机图形学光线追踪开源项目C++源码。computergraphicsraytracing计算机图形学格网开源项目C++源码。computergraphicsmeshes计算机图形学介绍开源项目。computergraphics3.R语言包GLMM
- 音视频编解码技术(二):AAC 音频编码技术
音视频开发老马
音视频开发流媒体服务器Android音视频开发视频编解码音视频网络协议实时音视频网络
一、AAC编码概述AAC是高级音频编码(AdvancedAudioCoding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术包括SBR或PS特性,目前AAC可以定义为⼀种由MPEG-4标准定义的有损音频压缩格式二、AAC编码规格简述AAC共有9种规格,以适应不同的场合的需要:MPEG-2AACLC低
- 2287. 重排字符形成目标字符串 Python 力扣
西柚与蓝莓
力扣字符串算法python
2287.重排字符形成目标字符串简单给你两个下标从0开始的字符串s和target。你可以从s取出一些字符并将其重排,得到若干新的字符串。从s中取出字符并重新排列,返回可以形成target的最大副本数。示例1:输入:s="ilovecodingonleetcode",target="code"输出:2解释:对于"code"的第1个副本,选取下标为4、5、6和7的字符。对于"code"的第2个副本,选
- IDEA 常用插件推荐,美观又实用!
攀小黑
intellij-ideajavaide
1、TONGYlLingma-YourAlCodingAssistant.Typeless,Codemore.通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云SDK/API的使用场景调优,为开发者带来高效、流畅的编码体验。兼容VisualStudioCode、Visua
- 基于图的推荐算法(12):Handling Information Loss of Graph Neural Networks for Session-based Recommendation
阿瑟_TJRS
前言KDD2020,针对基于会话推荐任务提出的GNN方法对已有的GNN方法的缺陷进行分析并做出改进主要针对lossysessionencoding和ineffectivelong-rangedependencycapturing两个问题:基于GNN的方法存在损失部分序列信息的问题,主要是在session转换为图以及消息传播过程中的排列无关(permutation-invariant)的聚合过程中造
- 浅谈gbase与oracle 字符集差异
gbase_lmax
java前端开发语言
字符集字符集(CharacterSet):按照一定的字符编码方案,将特定的符号集编码为计算机能够处理的数值的集合。常见字符集名称:ASCII字符集、Unicode字符集、GB2312字符集、BIG5字符集、GB18030字符集等。字符编码字符编码(CharacterEncoding):是一套规则,对字符集进行编码的方案。如,Unicode是字符集,UTF-8、UTF-16、UTF-32是三种字符编
- html页面js获取参数值
0624chenhong
html
1.js获取参数值js
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = windo
- MongoDB 在多线程高并发下的问题
BigCat2013
mongodbDB高并发重复数据
最近项目用到 MongoDB , 主要是一些读取数据及改状态位的操作. 因为是结合了最近流行的 Storm进行大数据的分析处理,并将分析结果插入Vertica数据库,所以在多线程高并发的情境下, 会发现 Vertica 数据库中有部分重复的数据. 这到底是什么原因导致的呢?笔者开始也是一筹莫 展,重复去看 MongoDB 的 API , 终于有了新发现 :
com.mongodb.DB 这个类有
- c++ 用类模版实现链表(c++语言程序设计第四版示例代码)
CrazyMizzz
数据结构C++
#include<iostream>
#include<cassert>
using namespace std;
template<class T>
class Node
{
private:
Node<T> * next;
public:
T data;
- 最近情况
麦田的设计者
感慨考试生活
在五月黄梅天的岁月里,一年两次的软考又要开始了。到目前为止,我已经考了多达三次的软考,最后的结果就是通过了初级考试(程序员)。人啊,就是不满足,考了初级就希望考中级,于是,这学期我就报考了中级,明天就要考试。感觉机会不大,期待奇迹发生吧。这个学期忙于练车,写项目,反正最后是一团糟。后天还要考试科目二。这个星期真的是很艰难的一周,希望能快点度过。
- linux系统中用pkill踢出在线登录用户
被触发
linux
由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍所以需要有时踢出指定的用户
1/#who 查出当前有那些终端登录(用 w 命令更详细)
# who
root pts/0 2010-10-28 09:36 (192
- 仿QQ聊天第二版
肆无忌惮_
qq
在第一版之上的改进内容:
第一版链接:
http://479001499.iteye.com/admin/blogs/2100893
用map存起来号码对应的聊天窗口对象,解决私聊的时候所有消息发到一个窗口的问题.
增加ViewInfo类,这个是信息预览的窗口,如果是自己的信息,则可以进行编辑.
信息修改后上传至服务器再告诉所有用户,自己的窗口
- java读取配置文件
知了ing
1,java读取.properties配置文件
InputStream in;
try {
in = test.class.getClassLoader().getResourceAsStream("config/ipnetOracle.properties");//配置文件的路径
Properties p = new Properties()
- __attribute__ 你知多少?
矮蛋蛋
C++gcc
原文地址:
http://www.cnblogs.com/astwish/p/3460618.html
GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。
__attribute__ 书写特征是:
- jsoup使用笔记
alleni123
java爬虫JSoup
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
2014/08/28
今天遇到这种形式,
- JAVA中的集合 Collectio 和Map的简单使用及方法
百合不是茶
listmapset
List ,set ,map的使用方法和区别
java容器类类库的用途是保存对象,并将其分为两个概念:
Collection集合:一个独立的序列,这些序列都服从一条或多条规则;List必须按顺序保存元素 ,set不能重复元素;Queue按照排队规则来确定对象产生的顺序(通常与他们被插入的
- 杀LINUX的JOB进程
bijian1013
linuxunix
今天发现数据库一个JOB一直在执行,都执行了好几个小时还在执行,所以想办法给删除掉
系统环境:
ORACLE 10G
Linux操作系统
操作步骤如下:
第一步.查询出来那个job在运行,找个对应的SID字段
select * from dba_jobs_running--找到job对应的sid
&n
- Spring AOP详解
bijian1013
javaspringAOP
最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。例如,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智。
1.对部分函数的调用进行日志记录,用于观察特定问题在运行过程中的函数调用
- [Gson六]Gson类型适配器(TypeAdapter)
bit1129
Adapter
TypeAdapter的使用动机
Gson在序列化和反序列化时,默认情况下,是按照POJO类的字段属性名和JSON串键进行一一映射匹配,然后把JSON串的键对应的值转换成POJO相同字段对应的值,反之亦然,在这个过程中有一个JSON串Key对应的Value和对象之间如何转换(序列化/反序列化)的问题。
以Date为例,在序列化和反序列化时,Gson默认使用java.
- 【spark八十七】给定Driver Program, 如何判断哪些代码在Driver运行,哪些代码在Worker上执行
bit1129
driver
Driver Program是用户编写的提交给Spark集群执行的application,它包含两部分
作为驱动: Driver与Master、Worker协作完成application进程的启动、DAG划分、计算任务封装、计算任务分发到各个计算节点(Worker)、计算资源的分配等。
计算逻辑本身,当计算任务在Worker执行时,执行计算逻辑完成application的计算任务
- nginx 经验总结
ronin47
nginx 总结
深感nginx的强大,只学了皮毛,把学下的记录。
获取Header 信息,一般是以$http_XX(XX是小写)
获取body,通过接口,再展开,根据K取V
获取uri,以$arg_XX
&n
- 轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点
bylijinnan
数组
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ExoWeb {
public static void main(String[] args) {
ExoWeb ew=new ExoWeb();
System.out.pri
- Netty源码学习-Java-NIO-Reactor
bylijinnan
java多线程netty
Netty里面采用了NIO-based Reactor Pattern
了解这个模式对学习Netty非常有帮助
参考以下两篇文章:
http://jeewanthad.blogspot.com/2013/02/reactor-pattern-explained-part-1.html
http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf
- AOP通俗理解
cngolon
springAOP
1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和 我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而 已。 2.为什么用aop&nb
- cursor variable 实例
ctrain
variable
create or replace procedure proc_test01
as
type emp_row is record(
empno emp.empno%type,
ename emp.ename%type,
job emp.job%type,
mgr emp.mgr%type,
hiberdate emp.hiredate%type,
sal emp.sal%t
- shell报bash: service: command not found解决方法
daizj
linuxshellservicejps
今天在执行一个脚本时,本来是想在脚本中启动hdfs和hive等程序,可以在执行到service hive-server start等启动服务的命令时会报错,最终解决方法记录一下:
脚本报错如下:
./olap_quick_intall.sh: line 57: service: command not found
./olap_quick_intall.sh: line 59
- 40个迹象表明你还是PHP菜鸟
dcj3sjt126com
设计模式PHP正则表达式oop
你是PHP菜鸟,如果你:1. 不会利用如phpDoc 这样的工具来恰当地注释你的代码2. 对优秀的集成开发环境如Zend Studio 或Eclipse PDT 视而不见3. 从未用过任何形式的版本控制系统,如Subclipse4. 不采用某种编码与命名标准 ,以及通用约定,不能在项目开发周期里贯彻落实5. 不使用统一开发方式6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函
- Android逐帧动画的实现
dcj3sjt126com
android
一、代码实现:
private ImageView iv;
private AnimationDrawable ad;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout
- java远程调用linux的命令或者脚本
eksliang
linuxganymed-ssh2
转载请出自出处:
http://eksliang.iteye.com/blog/2105862
Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar)
使用步骤如下:
1.导包
官网下载:
http://www.ganymed.ethz.ch/ssh2/
ma
- adb端口被占用问题
gqdy365
adb
最近重新安装的电脑,配置了新环境,老是出现:
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
百度了一下,说是端口被占用,我开个eclipse,然后打开cmd,就提示这个,很烦人。
一个比较彻底的解决办法就是修改
- ASP.NET使用FileUpload上传文件
hvt
.netC#hovertreeasp.netwebform
前台代码:
<asp:FileUpload ID="fuKeleyi" runat="server" />
<asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" />
- 代码之谜(四)- 浮点数(从惊讶到思考)
justjavac
浮点数精度代码之谜IEEE
在『代码之谜』系列的前几篇文章中,很多次出现了浮点数。 浮点数在很多编程语言中被称为简单数据类型,其实,浮点数比起那些复杂数据类型(比如字符串)来说, 一点都不简单。
单单是说明 IEEE浮点数 就可以写一本书了,我将用几篇博文来简单的说说我所理解的浮点数,算是抛砖引玉吧。 一次面试
记得多年前我招聘 Java 程序员时的一次关于浮点数、二分法、编码的面试, 多年以后,他已经称为了一名很出色的
- 数据结构随记_1
lx.asymmetric
数据结构笔记
第一章
1.数据结构包括数据的
逻辑结构、数据的物理/存储结构和数据的逻辑关系这三个方面的内容。 2.数据的存储结构可用四种基本的存储方法表示,它们分别是
顺序存储、链式存储 、索引存储 和 散列存储。 3.数据运算最常用的有五种,分别是
查找/检索、排序、插入、删除、修改。 4.算法主要有以下五个特性:
输入、输出、可行性、确定性和有穷性。 5.算法分析的
- linux的会话和进程组
网络接口
linux
会话: 一个或多个进程组。起于用户登录,终止于用户退出。此期间所有进程都属于这个会话期。会话首进程:调用setsid创建会话的进程1.规定组长进程不能调用setsid,因为调用setsid后,调用进程会成为新的进程组的组长进程.如何保证? 先调用fork,然后终止父进程,此时由于子进程的进程组ID为父进程的进程组ID,而子进程的ID是重新分配的,所以保证子进程不会是进程组长,从而子进程可以调用se
- 二维数组 元素的连续求解
1140566087
二维数组ACM
import java.util.HashMap;
public class Title {
public static void main(String[] args){
f();
}
// 二位数组的应用
//12、二维数组中,哪一行或哪一列的连续存放的0的个数最多,是几个0。注意,是“连续”。
public static void f(){
- 也谈什么时候Java比C++快
windshome
javaC++
刚打开iteye就看到这个标题“Java什么时候比C++快”,觉得很好笑。
你要比,就比同等水平的基础上的相比,笨蛋写得C代码和C++代码,去和高手写的Java代码比效率,有什么意义呢?
我是写密码算法的,深刻知道算法C和C++实现和Java实现之间的效率差,甚至也比对过C代码和汇编代码的效率差,计算机是个死的东西,再怎么优化,Java也就是和C