• C#增删改小总结


    首先建立数据库中相应的表

    create database mydb
    go
    use mydb
    go
    create table Productor --汽车厂商
    (
    Prod_Code varchar(50) primary key, --厂商编号
    Prod_Name varchar(50) not null --厂商名称
    )
    go
    create table Brand --品牌
    (
    Brand_Code varchar(50) primary key, --品牌编号
    Brand_Name varchar(50) not null, --厂商名称
    Prod_Code varchar(50) references productor(prod_code), --厂商编号
    Brand_Memo text --品牌介绍
    )
    go
    create table Car --汽车表
    (
    Code varchar(50) primary key, --车型代号
    Name varchar(50), --车型名称
    Brand varchar(50) references brand(brand_code), --品牌代号
    Time datetime default getdate(), --上市时间
    Oil decimal(10,2), --油耗
    Powers int, --功率
    Exhaust int, --排量
    Price decimal(18,2), --售价
    Pic varchar(50) --图片
    )
    go

    insert into productor values('p001','一汽大众')
    insert into productor values('p002','华晨宝马')
    insert into productor values('p003','北京奔驰')
    insert into productor values('p004','一汽丰田')

    insert into brand values('b001','奥迪A6L','p001','奥迪A6的multitronic无级/手动一体式变速箱,在豪华轿车历史上,第一次实现了真正的无级变速 。它采用金属链传动方式,彻底取代了传统的齿轮组变速方式,所以动力输出全无顿挫感,比普通自动变速更顺畅平滑,更拥有手动变速般的快捷灵敏,同时还更节省燃油,操控更舒适。新增设的S档,提高加速能力,增加驾驶乐趣。multitronic无级/手动一体式变速箱的最迷人之处,就在于它最终克服了自动变速箱和手动变速箱的一切不足,一举超越二者的各项性能,实现了汽车变速箱技术的大飞跃.   在您享受的舒适与豪华背后,是奥迪细致入微的尖端科技,车载冰箱专为行驶移动的奥迪A6而设计,耐颠簸、倾斜。 工作状态高度稳定。高品质的TV/DVD系统安全融入奥迪A6原有结构,功能多样,而且极易操作,电动高级桃木办公桌可谓符合人体工程的精心之作,只需轻触按钮,就能打开或放下桌板,可延伸,可调角度,让您运筹帷幄的思绪尽情挥洒。')
    insert into brand values('b002','奥迪A4','p001','设计,工至极处方显高品位。 大音希声,大象无形。极简才是极大的丰富,才是最高境界。奥迪设计师深谙其中妙处,将奥迪A4 的激情理念以极少主义的优雅风范完美展现;腰线高挑利落,与位置升高、轮廓简洁的尾灯合而为一,神似奥迪A8的车顶弧线一气呵成,简约的笔触勾画出奥迪A4出众脱俗的身影。配以动感外张的圆形轮 辋,富含跑车神韵的轮辋,奥迪A4-如运动健将,把力与美出色诠释。 领先车坛的CAN bus数据总线技术将车内所有天线均隐藏于后挡风玻璃内,更奖丰富蕴含于简洁之中。这就是为什么奥迪A4荣获闻名全球工业设计行业的的德国"红点奖"(RED DOT AWARD)。又被德国著名汽车杂志《汽车路面交通》授予"汽车设计大奖"的原因。但这远非其魅力的全部,只是与您的优雅品位相得益 彰,奥迪A4才成为路上最耀眼的风景。   动力,与激情比赛 如果您从未驾驶过奥迪A4,也许永远无法想象一部中型豪华轿车的动力可以如此澎湃。搭配奥迪引以为傲的最大功率220马力的3.0升V6发动机(奥迪A4还有1.8T涡轮增压发动机可选),配合减轻的车身,难以置信的0.28Km/h,飞驰起来势必动若雷霆,身居车中,您尽可激情驰骋,让心与车一比高下。 ')
    insert into brand values('b003','宝马3系','p002','2003年10月份国产宝马首款车325i上市,一个月后,国产530i上市。318i上市后将进一步完善国产宝马的产品链。宝马2004年有三款车国产,除318i以外还有5系的520i和525i。按照宝马集团的一贯做法这些车国产后,同类型的车都将不再进口。宝马标志中间的蓝白相间图案,代表蓝天,白云和旋转不停的螺旋浆,喻示宝马公司渊源悠久的历史,象征该公司过去在航空发动机技术方面的领先地位,又象征公司一贯宗旨和目标:在广阔的时空中,以先进的精湛技术、最新的观念,满足顾客的最大愿望,反映了公司蓬勃向上的气势和日新月异的新面貌。在双圈圆环的上方标有(BMW)字样,这是公司全称3 个的首位字母缩写')
    insert into brand values('b004','宝马5系','p002','BMW5系列在宝马集团的产品系列中具有举足轻重的地位,其产品概念源于1962年问世的被称为“新类别”车的BMW1500型汽车。“新类别”开创了一个在当时全新的汽车种类:外观漂亮、驾驶敏捷、5人乘坐舒适的中等尺寸轿车。这种强调外观、性能和舒适性相结合的产品概念随着5系列的演变而得到延续和发展。1972年第一代5系列诞生后,每一次5系的更新换代都伴随着产品内涵的大幅提升,每一代5系都成为潮流的领导者,进入第5代的BMW5系再次出色完成了这一使命。BMW 5系的风格定位在动感时尚的3系和高贵典雅的7系之间。新5系的设计目标是将动感与典雅和高级商用轿车的功能性完美融合,将宝马的伟大传统和指引未来的进取精神以及经得起岁月考验的美学标准统一在一起。宝马的设计师们凭借巨大的激情和天赋,以匀称的结构、精美的外观、完美的细节和大胆的创新,为新5系赋予了独特的个性和强大的感性力量,使之达到了崭新的美学境界。


    车辆前端最引人注目的亮点是个性鲜明的大灯组合,标准配备的双圆形氙气大灯是宝马的典型风格,设计独特的转向灯象一道高扬的剑眉,使前脸充满锐气。源于大灯的线条向后延伸,沿着修长的发动机罩,一直通至车辆后部,成为本车的一个独特风格。作为BMW特有标志的双肾形格栅尺寸比前代更大,其运动型和动感的外观进一步强化了车辆前端的特点。

    新5系的侧面设计也同样强调动感和优雅的风格。车身线条和表面的凹凸组合经过了精心、审慎的处理,使5系列优美的轮廓在任何角度下欣赏都呈现出独特的光彩和动感。其车尾的设计也独具匠心。整个车尾的设计体现出一种力量与强健的色彩,巧妙隐藏的接缝、简洁的后盖和一体式阻流板,使其尾部看上去非常宽阔、坚固和紧凑,尾灯的设计吸收了前灯的外形特点,体现出尊贵和独特的风范。

    新5系的内外部设计和谐统一。驾驶舱的设计遵循了7系的创新内部设计理念,并保持了5系列以驾驶者为中心的传统特征。引人注目的双仪表盘设计就像两道水波,将驾驶区和舒适功能区划分出来。新5系装备宝马第二代i-Drive操控系统,这一宝马首创的操控概念在新5系上得到了进一步发展,其菜单结构更加简单,可以对众多辅助功能进行简便和直观的控制。在开发类似解决方案的竞争者中,宝马新5系脱颖而出,是同级别车辆中人机工程学的先锋。
    ')
    insert into brand values('b005','奔驰E级','p003','简洁流畅的外形,豪华宽敞的车身以及全面周到的系统设计定会让您非常满意。所有E级的装备都包括5种速率的电子控制自动变速系统,并配有驾驶员可以调解的变速逻辑电路和可以选择的手动变速控制器,6速手动变速器,标准的车窗公文袋和最先进的电子援助系统。标准装备还包括防盗报警系统,全皮座椅,用于紧急及快捷的取得联系的TeleAid自动呼叫系统,双层空气控制器,可向10个方向调节的前排座位,电动车篷,可缩叠的转向柱,电动车窗和门锁,路线控制器,AM/FM立体声磁带以及16英寸的合金车轮。')
    insert into brand values('b006','300C','p003','北京奔驰-戴姆勒·克莱斯勒汽车有限公司(简称北京奔驰-戴克)于2005年8月8日正式成立,其前身北京吉普汽车有限公司创立于1983年5月5日,是中国汽车行业第一家中外整车合资企业。

    北京奔驰-戴克是北京汽车工业控股有限责任公司与戴姆勒·克莱斯勒股份公司、戴姆勒·克莱斯勒(中国)投资有限公司组建的合资合作企业。其中北京汽车工业控股有限责任公司出资占注册资本的50%,戴姆勒·克莱斯勒一方出资占注册资本的50%。合资期限至2032年。

    北京奔驰-戴克是一家具有世界汽车制造业领先技术与制造水平,融汽车研发、制造、销售和售后服务为一体的现代化企业,位于北京经济技术开发区,第一期建设工程21万平方米,具备年产10万辆汽车的生产能力,二期工程后将达到年产30万辆汽车的目标。2006年9月15日, 北京奔驰-戴克新工厂正式落成,以国际标准的四大工艺、精益管理、严格的质量控制、卓越的生态环境、高素质的技术工人五大特色定义了中国最先进的世界级汽车制造工厂这一全新基准。
    ')
    insert into brand values('b007','皇冠','p004','国产新皇冠根据配置不同共包括7种车型,售价32.8万元至48万元。   皇冠排量均为3.0L,ROYAL级售价32.8万元、ROYAL 真皮版售价33.8万元;售价39.3万元的“ROYAL SALOON”级别车型,标配包括真皮座椅、天窗、多媒体DVD语音电子导航系统、智能钥匙启动系统、氙气前大灯”。新型3.0L排气量的CROWN皇冠,首次在丰田的前置后轮驱动车(FR)上采用了V型6缸发动机,所配备的先进的进气排气双VVT-i技术为全车提供了170KW的功率输出和300NM的扭矩支持,变速箱采用Super ECT 6挡手自一体智能变速箱,0到100Km/h加速时间为7.4秒,最高时速可达235公里。   在驱动系统方面,新CROWN皇冠采用了和奔驰、宝马等高档轿车同样的后轮驱动技术,本次新开发的TOYOTA的最新FR平台,采用新开发的悬架系统,前悬架采用双叉杆式悬架,后悬架采用多连杆式悬架。不断创新的产品开发,提高了车体随动性,使弯道操控更加精准,实现了高速行驶时的安全性和高速过弯时拥有舒适感的卓越行驶性。同时,国产皇冠将底盘提高了10mm,以适应国内的复杂路况。   新CROWN皇冠添加了彻底的噪音根源对策,使用新型隔音材料的隔音涂层设计,为驾乘者在行驶中创造出超凡的静谧性。 安全性方面,新CROWN皇冠采用丰田最先进的GOA车身结构形成坚固的立体防线。在全车系标配的主动安全性能方面,添加了带EBD的ABS、VSC(车辆稳定控制)和TRC(牵引力控制),在被动安全性能方面,前部、前排两侧、膝部和窗帘式总共装备8气囊,尤其是膝部安全气囊是目前国内同类型高档车中的首次配备。 新CROWN皇冠配备了几乎覆盖全国的电子地图、添加了8英寸带EMV的DVD语音电子导航系统、采用倒车监视器,使驾驶员通过车内的多媒体显示屏就能看到车后的情况;特别是智能钥匙登陆和启动系统的最新装备,大幅度的提高了先进性及用户的使用性。考虑到后席乘客的舒适性,还配备带脚枕的副驾驶座椅设计、后排座椅电动调节、带空调等各种配置。 ')
    insert into brand values('b008','普锐斯','p004','汽车正在经历一场前所未有的变革,从燃油汽车到零排放的纯电动汽车,将概念最快变成量产的理念使丰田的电动汽车技术领先业界。在当今还不算大的电动混合车市场中,丰田Prius以10万辆的销售记录占掉了90%的份额,今年秋季,丰田第二代电动混合驱动最新车型——2004款Prius即将上市。虽然,对于未来的动力供给形式目前存在着多种观点,但是,不论未来的能源是何种形态,PRIUS普锐斯所具有的通过混合动力系统最大化利用能量的理念和技术,对未来汽车动力在操控性能、续行里程、使用方便性等方面的发展都将产生深远的影响和极佳的提升作用。')
    insert into brand values('b009','锐志','p004','“REIZ锐志”是一汽丰田汽车销售有限公司计划于今年秋季上市的一款中级轿车。"REIZ锐志"秉承了"开发一款真正的运动型FR轿车"的设计理念,充分体现了充满创新的产品特点:绝佳的动力性确保实现快乐而平顺的行驶、精确灵敏的转向以及摄人心魄的加速表现;将带给驾驶者极高的操控乐趣。富于动感的幽雅造型更为外部车身增加了华贵、亮丽的风采。完美的内部空间以及多项新型装置,为驾乘人员提供了舒适的驾乘感受。"REIZ锐志"激扬动感的表现、时尚典雅的气质以及华贵亮丽的外观定能带给您极佳的视觉享受和拥有的愿望。')


    insert into car values('c001','奥迪A6L 08款 2.4舒适型','b001',getdate(),8.7,130,2393,50.47,'aodia6-1.jpg')
    insert into car values('c002','奥迪A6L 3.0L舒适娱乐型','b001',getdate(),8.7,160,2976,67.49,'aodia6-2.jpg')
    insert into car values('c003','奥迪A4 07款 2.0TFSI标准型','b002',getdate(),7.4,147,1984,31.75 ,'aodia4-1.jpg')
    insert into car values('c004','奥迪A4 05款 1.8T自动领先型','b002',getdate(),7.4,120,1781,37.16 ,'aodia4-2.jpg')
    insert into car values('c005','宝马3系 325i 时尚型','b003',getdate(),7.9,160,2497,42.38,'baoma3-1.jpg')
    insert into car values('c006','宝马3系 325i 运动版','b003',getdate(),7.4,160,2497,48.1,'baoma3-2.jpg')
    insert into car values('c007','宝马5系 523 Li豪华型','b004',getdate(),9.4,130,2497,51.8,'baoma5-1.jpg')
    insert into car values('c008','宝马5系 530 Li典雅型','b004',getdate(),7.4,190,2996 ,64.26,'baoma5-2.jpg')
    insert into car values('c009','奔驰E级 E230','b005',getdate(),8.5,150,2496,54.8 ,'benchie-1.jpg')
    insert into car values('c010','奔驰E级 E200K','b005',getdate(),7.4,120,1796,54.5 ,'benchie-2.jpg')
    insert into car values('c011','300C 2.7L V6 行政版','b006',getdate(),8.0,142,2736,30 ,'benchi300c-1.jpg')
    insert into car values('c012','300C 3.5L 豪华','b006',getdate(),7.4,188,3518,38.5 ,'benchi300c-2.jpg')

    insert into car values('c013','皇冠 RoyalSaloonNAVI版','b007',getdate(),8.2,170,2995,41.2 ,'huangguan-1.jpg')
    insert into car values('c014','皇冠 Royal Saloon G VIP','b007',getdate(),8.2,170,2995,50.2 ,'huangguan-2.jpg')
    insert into car values('c015','普锐斯 1.5AT真皮座椅版','b008',getdate(),4.7,57,1497,30.2 ,'purisi-1.jpg')
    insert into car values('c016','普锐斯 1.5AT织物座椅版','b008',getdate(),7.4,57,1497 ,33.98,'purisi-2.jpg')
    insert into car values('c017','锐志 2.5S 特别天窗版','b009',getdate(),9.5,145,2497,23.8 ,'ruizhi-1.jpg')
    insert into car values('c018','锐志 2.5V 车顶照明版','b009',getdate(),9.5,145,2497 ,25.58,'ruizhi-2.jpg')

    其次,书写连接数据库的相应类:

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using DA;
    using Data;
    namespace DA
    {
    public class DBConnection
    {
    private SqlConnection _Conn;
    public DBConnection()
    {
    String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString();

    _Conn = new SqlConnection(connectionString);
    }
    public SqlConnection Connection
    {
    get
    {
    return _Conn;
    }
    }
    public static string ConnectionString
    {
    get
    {
    String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString();
    return connectionString;
    }
    }
    }
    }

    三、在App.config中书写:

    <connectionStrings>
    <add name="conn" connectionString="server=.;database=Car;uid=sa;pwd=123"/>
    </connectionStrings>

    在<configuration</configuration>里边填写

    四、书写数据访问类和工具类

    五、主函数

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using DA;
    using Data;
    namespace xiaozongjie
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private void FillBrand()
    {
    List<BrandData> list = new BrandDA().Select();


    }
    private void Form1_Load(object sender, EventArgs e)
    {
    ShowCar();
    }

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    public void ShowCar()
    {
    listView1.Items.Clear();
    List<CarData> list = new CarDA().Select();
    foreach (CarData da in list)
    {
    ListViewItem li = new ListViewItem(da.Name);
    li.Tag=da.Code;
    li.SubItems.Add(da.BrandData.ProductorData.ProdName);
    li.SubItems.Add(da.BrandData.BrandName);
    li.SubItems.Add(da.Time.ToString("yyyy--MM--dd"));
    li.SubItems.Add(da.Oil.ToString());
    li.SubItems.Add(da.Powers.ToString());
    li.SubItems.Add(da.Pic.ToString());
    listView1.Items.Add(li);

    }
    }

    private void btnadd_Click(object sender, EventArgs e)
    {
    Tianjia t=new Tianjia();
    DialogResult result = t.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
    ShowCar();
    }
    }

    private void btnupdate_Click(object sender, EventArgs e)
    {
    if (listView1.SelectedItems.Count <= 0)
    {
    MessageBox.Show("请选择要修改的数据!","提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    return;
    }
    string code = listView1.SelectedItems[0].Tag.ToString();
    Xiugai x = new Xiugai(code);
    DialogResult result= x.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
    ShowCar();
    }
    }

    private void btndelete_Click(object sender, EventArgs e)
    {
    if (listView1.SelectedItems.Count <= 0)
    {
    MessageBox.Show("请选择要删除的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    return;
    }
    else
    {
    DialogResult result= MessageBox.Show("确定要删除吗?","删除", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
    try
    {
    if (result == System.Windows.Forms.DialogResult.OK)
    {
    string code = listView1.SelectedItems[0].Tag.ToString();

    new CarDA().Delete(code);

    }

    }
    catch
    {
    MessageBox.Show("出错了!");
    }

    }
    ShowCar();
    }
    }
    }

    六、添加函数

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using DA;
    using Data;
    namespace xiaozongjie
    {
    public partial class Tianjia : Form
    {
    public Tianjia()
    {
    InitializeComponent();
    }
    public void FillProductor()
    {
    List<ProductorData> list = new ProductorDA().Select();

    compro.DataSource = list;
    compro.DisplayMember = "ProdName";
    compro.ValueMember = "ProdCode";
    }
    public void FillBrand()
    {
    string pro = (compro.SelectedItem as ProductorData).ProdCode;
    List<BrandData> list = new BrandDA().SelectByProdCode(pro);
    combr.DataSource = list;
    combr.DisplayMember = "BrandName";
    combr.ValueMember = "BrandCode";
    }
    private void Tianjia_Load(object sender, EventArgs e)
    {
    FillProductor();
    FillBrand();
    }

    private void compro_SelectedIndexChanged(object sender, EventArgs e)
    {
    FillBrand();
    }
    public void Shuju()
    {
    try
    {
    CarData da = new CarData();
    da.Code = textid.Text;
    da.Name = textname.Text;
    da.Brand = (combr.SelectedItem as BrandData).BrandCode;
    da.Oil = Convert.ToDecimal(textoil.Text);
    da.Powers = Convert.ToInt32(textpow.Text);
    da.Time = dateTimePicker1.Value;
    da.Pic = textliu.Text;

    new CarDA().Insert(da);

    this.DialogResult = System.Windows.Forms.DialogResult.OK;

    }
    catch
    {
    MessageBox.Show("输入数据存在错误,请认真填写!");
    }

    }

    private void liulan_Click(object sender, EventArgs e)
    {
    DialogResult result = open.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
    string url = open.FileName;
    int start = url.LastIndexOf("\")+1;
    textliu.Text ="car/"+ url.Substring(start);
    }
    }

    private void btnadd_Click(object sender, EventArgs e)
    {
    Shuju();
    }

    private void btncancel_Click(object sender, EventArgs e)
    {
    Close();
    }
    }
    }

    七、修改函数

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using DA;
    using Data;
    namespace xiaozongjie
    {
    public partial class Xiugai : Form
    {
    private string _Key;
    public Xiugai()
    {
    InitializeComponent();
    }
    public Xiugai(string code)
    : this()
    {
    _Key = code;
    }

    public void FillProductor()
    {
    List<ProductorData> list = new ProductorDA().Select();
    compro.DataSource = list;
    compro.DisplayMember = "ProdName";
    compro.ValueMember = "ProdCode";
    }
    public void FillBrand()
    {
    string code = (compro.SelectedItem as ProductorData).ProdCode;
    List<BrandData> list = new BrandDA().SelectByProdCode(code);
    combr.DataSource = list;
    combr.DisplayMember = "BrandName";
    combr.ValueMember = "BrandCode";
    }
    private void btnadd_Click(object sender, EventArgs e)
    {
    CarData da = new CarData();
    da.Code = textid.Text;
    da.Name = textname.Text;
    da.Brand = (combr.SelectedItem as BrandData).BrandCode;
    da.Oil = Convert.ToDecimal (textoil.Text);
    da.Powers =Convert.ToInt32( textpow.Text);
    da.Time = dateTimePicker1.Value;
    da.Pic = textliu.Text;

    new CarDA().Update(da);
    this.DialogResult = System.Windows.Forms.DialogResult.OK;
    }
    public void Fill()
    {
    CarData da = new CarDA().Select(_Key);
    textid.Text = da.Code;
    textname.Text = da.Name;
    //combr.Text = da.Brand;
    textoil.Text = da.Oil.ToString();
    textpow.Text = da.Powers.ToString();
    dateTimePicker1.Value = da.Time;
    textliu.Text = da.Pic;
    string brand = da.Brand;
    string pro = da.BrandData.ProdCode;
    //combr.Text = brand;//不可行
    //compro.Text = pro;//不可行
    foreach (ProductorData dat in compro.Items)
    {
    if (dat.ProdCode == pro)
    {
    compro.SelectedItem = dat;
    break;
    }
    }
    foreach (BrandData bda in combr.Items)
    {
    if (bda.BrandCode == brand)
    {
    combr.SelectedItem = bda;
    break;
    }
    }

    }

    private void Xiugai_Load(object sender, EventArgs e)
    {
    FillProductor();
    FillBrand();
    Fill();
    }

    private void compro_SelectedIndexChanged(object sender, EventArgs e)
    {
    FillBrand();
    }

    private void liulan_Click(object sender, EventArgs e)
    {
    DialogResult result= open.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
    string url = open.FileName;
    int start = url.LastIndexOf("\")+1;
    textliu.Text = "car/" + url.Substring(start);
    }
    }

    private void btncancel_Click(object sender, EventArgs e)
    {
    Close();
    }
    }
    }

  • 相关阅读:
    嵌入式Linux驱动学习之路(十九)触摸屏驱动、tslib测试
    GNU make使用变量⑤变量的引用、定义等
    Java并发——核心理论
    Java并发——volatile的原理
    Java线程与Linux内核线程的映射关系
    Reactor模式详解
    Java实现二分查找算法
    Dubbo协议与连接控制
    linux 域名
    package报错
  • 原文地址:https://www.cnblogs.com/xianshui/p/4508646.html
Copyright © 2020-2023  润新知