一、对前面部份的总结

using System.Collections;
using System.IO;
using System.Text;namespace _074_复习
{class Program{static void Main(string[] args){/*里氏转换* 1)、子类可以赋值给父类(如果有一个方法需要一个父类作为参数,我们可以传第一个子类对象* 2)、如果父类装的是子类对象,则可以将这个父类强转换成子类*///person p = new student();//student s = p as student;//将p转成student//s.studentSayHello();//if( p is student)//{//    ((student)p).studentSayHello();//}//else//{//    Console.WriteLine("转换失败!");//}//ArrayList list = new ArrayList();//list.Add(1);//Hashtable hashtable = new Hashtable();//hashtable.Add(1, 2);//在键值对集合中,键必须是唯一的//hashtable[1] = 3;//hashtable.containsKey看这个集合中是否含有这个键//foreach(var item in hashtable)//{//    Console.WriteLine("{0}-----------{1}", item, hashtable[item]);//}//byte[] buffer = File.ReadAllBytes(@"C:\Users\叶靖\Desktop\1.txt");//将字节数组中的每一个元素都要按照我们指定的编码格式解析成字符串//UTF-8 GB2312 GBK ASCII  Unicode//    string s = Encoding.Default.GetString(buffer);//    Console.WriteLine(s);//没有这个文件会给你创建这个文件,如果有就覆盖掉这个文件string str = "今天天气很好,阳光很大";byte[] buffer = Encoding.Default.GetBytes(str);File.WriteAllBytes(@"C:\Users\叶靖\Desktop\1.txt", buffer);Console.WriteLine("导入成功");Console.ReadKey();}}public class person{public void personSayHello(){Console.WriteLine("我是人");}}public class student:person{public void studentSayHello(){Console.WriteLine("我是学生");}}
}

二、File类

当你读取的文件是多媒体文件,音乐文件,图片文件时使用ReadAllbytes

         byte[] buffer = File.ReadAllBytes(@"C:\Users\叶靖\Desktop\1.txt");//将字节数组中的每一个元素都要按照我们指定的编码格式解析成字符串UTF-8 GB2312 GBK ASCII  Unicodestring s = Encoding.Default.GetString(buffer);Console.WriteLine(s);

当你读取的时字符串文件的时候可以使用ReadAllLines和ReadAllText

 //以行的形式读取,返回的是string类型的数组 string[] str = File.ReadAllLines(@"C:\Users\叶靖\Desktop\1.txt", Encoding.Default);//Encoding.Default指定编码格式foreach (string item in str){Console.WriteLine(item);}Console.ReadKey();string contents = File.ReadAllText(@"C:\Users\叶靖\Desktop\1.txt",Encoding.Default);Console.WriteLine(contents);

ReadAllLines返回的是数组 ,可以精确到操作文本文件的每一行数据
ReadAllText返回的是字符串数据

修改数据

         File.WriteAllLines(@"C:\Users\叶靖\Desktop\1.txt", new string[] { "aoe", "ewu" });Console.WriteLine("OK");Console.ReadKey();File.WriteAllText(@"C:\Users\叶靖\Desktop\1.txt", "古桑,家乡的樱花开了");Console.WriteLine("OK");Console.ReadKey();

这里的WriteAllLines和WriteAllText是覆盖文本写入

File.AppendAllText(@"C:\Users\叶靖\Desktop\1.txt", "该回去了");Console.WriteLine("OK");Console.ReadKey();

ApendAllTest是在文本后添加;当你使用时你不知道如何添加的时候就将鼠标放置在ApendAlltest上,他将会显示要补充的类型。

注意:file只能读取小文件,因为它是读取全部内容,所以占的内存大。所以一般的大文件建议使用字节流形式读取

三、绝对路径和相对路径

绝对路径:通过给定的这个路径直接能在我的电脑中找到这个文件。
相对路径:文件相对于应用程序的路径
结论:
我们在开发中应该去尽量的使用相对路径(因为在编程的时候你将文代码传给别人,使用的是绝对路径,文件可能位置发生改变)

四、list泛型集合

 //创建List泛型集合List<int> list = new List<int>();list.Add(1);list.Add(2);list.Add(3);list.AddRange(new int[] { 1, 2, 3 });list.AddRange(list);for(int i = 0; i < list.Count; i++){Console.WriteLine(list[i]);}

List泛型集合可以转换为数组

int[] nums = list.ToArray();//将集合转数组List<string> list2 = new List<string>();将数组转集合string[] list3 = list2.ToArray();char[] chs = new char[] {'c','a','b' };List<char> listchar =chs.ToList();

五、装箱和拆箱

装箱:就是将值类型转换为引用类型
拆箱:就是将引用类型转换为值类型
看两种类型是否发生了装箱或者拆箱,要看这两种是否存在继承关系。

using System.Collections;
using System.Diagnostics;namespace _076_拆箱装箱
{class Program{static void Main(string[] args){//int n = 0;//object o = n;//值类型转化为衍生类型//int nn = (int)o;//拆箱//ArrayList list = new ArrayList();//List<int> list = new List<int>();//这个循环发生了100000次装箱操作//00:00:00.0521637  装箱会影响系统的性能问题//00:00:00.0046141//Stopwatch sw = new Stopwatch();//sw.Start();//for(int i = 0; i < 1000000;i++)//{//    list.Add(i);//}//sw.Stop();//Console.WriteLine(sw.Elapsed);}}
}

特别注意:

     //这个地方没有发生任意类型的装箱或者拆箱//string str = "123";//int n = Convert.ToInt32(str);//IComparable是int类型的接口,也属于继承关系所以这个是装箱int i = 10;IComparable n = i;

六、ictionary字典

namespace _077_Dictionary
{class Program{static void Main(string[] args){Dictionary<int, string> dic = new Dictionary<int, string>();dic.Add(1, "张三");dic.Add(2, "李四");dic.Add(3, "王五");foreach(KeyValuePair<int, string> kvp in dic){Console.WriteLine("{0}----{1}",kvp.Key,kvp.Value);}//foreach(var item in dic.Keys)//{//    Console.WriteLine("{0}----{1}", item, dic[item]);//}}}
}

练习
题目在代码中

namespace _078_练习
{class Program{static void Main(string[] args){//将一个数组中所有的基数放在一个集合中,所有的偶数放在另一个集合中//最后将两个集合合并成一个集合,并且基数显示在左边,偶数显示在右边//int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//List<int> listOu = new List<int>();//List<int> listJi = new List<int>();//for(int i = 0;i < nums.Length;i++)//{//    if (nums[i] %2== 0)//    {//        listOu.Add(nums[i]);//    }//    else//    {//        listJi.Add(nums[i]);//    }//}//listJi.AddRange (listOu);//foreach(int item in listJi)//{//    Console.Write(item+" ");//}//Console.ReadKey();//提示用户输入一个字符串,通过foreach循环将用户输入的字符串赋值给一个字符数组//Console.WriteLine("请输入一个字符串");//string str = Console.ReadLine();//int i = 0; //char[] chs = new char[str.Length];//foreach(var item in str)//{//    chs[i] = item;//    i++;//}//Console.WriteLine(chs);//统计Welcome to China中每个字符出现的次数 不考虑大小写 string str = "Welcome to China";//字符 ------->出现的次数//键---------->值Dictionary<char, int> dic = new Dictionary<char, int>();for (int i = 0; i < str.Length; i++){if (str[i] == ' '){continue;}//如果dic已经包含了当前循环到的这个键 if (dic.ContainsKey(str[i])){//值再次加1dic[str[i]]++;}else//这个字符在集合当中是第一次出现{dic[str[i]] = 1;}}foreach (KeyValuePair<char,int> kv in dic){Console.WriteLine("字母{0}出现了{1}次",kv.Key,kv.Value);}Console.ReadKey(); }}
}

七、文件流FileStream

FileStram:操作字节的,可以操作所以文件(因为所有的文件的都是字节流)
StreamReader和StreamWriter:操作字符的,可以操作文本文件

将创建文件流对象的过程写在using当中,会自动地帮助我们释放流所占用的资源。

using System.Text;namespace _079_字节流
{class Program{static void Main(string[] args){使用FileStream读取数据1、创建字节流//FileStream fsRead = new FileStream(@"C:\Users\叶靖\Desktop\1.txt",FileMode.OpenOrCreate,FileAccess.Read);FileStream不是静态类,可以直接创建对象FileStream(1,2,3)1、文件路径  2、对文件进行操作(是打开、创建、打开或创建、或在文件中增加)3、对文件进行读或写或读写操作//byte[] buffer = new byte[1024*1024*5];3.8M 5M返回本次实际读取的有效字节数//int r = fsRead.Read(buffer, 0, buffer.Length);将字节数组中每一个元素按照指定的编码格式解码成字符串//string s = Encoding.Default.GetString(buffer,0,r);关闭流//fsRead.Close();//释放所占有的资源//fsRead.Dispose();//Console.WriteLine(s);//Console.ReadKey();//使用FileStream来写入数据using (FileStream fsWrite = new FileStream(@"C:\Users\叶靖\Desktop\1.txt",FileMode.OpenOrCreate,FileAccess.Write )){string str = "覆盖掉";byte[] buffer = Encoding.Default.GetBytes(str);fsWrite.Write(buffer, 0, buffer.Length);}Console.WriteLine("写入OK");}}
}

下面介绍使用文件流实现多媒体的复制

namespace _080_使用文件流实现多媒体的复制
{class Program{static void Main(string[] args){//思路:就是先将要复制的多媒体文件读取出来,然后再写入到你指定的位置string source = @"C:\Users\SpringRain\Desktop\1、复习.wmv";string target = @"C:\Users\SpringRain\Desktop\new.wmv";CopyFile(source, target);Console.WriteLine("复制成功");Console.ReadKey();}public static void CopyFile(string soucre, string target){//1、我们创建一个负责读取的流using (FileStream fsRead = new FileStream(soucre, FileMode.Open, FileAccess.Read)){//2、创建一个负责写入的流using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)){byte[] buffer = new byte[1024 * 1024 * 5];//因为文件可能会比较大,所以我们在读取的时候 应该通过一个循环去读取while (true){//返回本次读取实际读取到的字节数int r = fsRead.Read(buffer, 0, buffer.Length);//如果返回一个0,也就意味什么都没有读取到,读取完了if (r == 0){break;}fsWrite.Write(buffer, 0, r);}}}}}
}

八、StreamReader和StreamWrite

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;namespace _081_StreamReader和StreamWrite
{class Program{static void Main(string[] arg){//使用StreamReader来读取一个文本文件//using (StreamReader sr = new StreamReader(@"C:\Users\叶靖\Desktop\1.txt", Encoding.Default))//{//    //Console.WriteLine(sr.ReadToEnd());//    while(!sr.EndOfStream)//    {//        Console.WriteLine(sr.ReadLine());//    }//}//使用StreamWrite来写入一个文本文件using(StreamWriter sw = new StreamWriter(@"C:\Users\叶靖\Desktop\1.txt",true)){sw.Write("今天天气好晴朗!家乡的樱花开了");}Console.WriteLine("写入OK");}}
}

这两个是操作文本文件的,不能与File字节流相比

九、多态

概念:让一个对象能够表现出多种的状态(类型)
实现多态的3种手段:
1)、虚方法
步骤:
1、 将父类方法标记为虚方法,使用关键字Virtual,这个函数可以被子类重写一遍

namespace _082_多态
{class Program{static void Main(string[] args){//Person[] per = new Person[6];Chinese cn1 = new Chinese("韩梅梅");Chinese cn2 = new Chinese("李雷");Japanese j1 = new Japanese("树下君");Japanese j2 = new Japanese("旌辫子");Korea k1 = new Korea("金秀贤");Korea k2 = new Korea("金秀俊");Person[] pers = { cn1, cn2, j1, j2, k1, k2 };for(int i = 0; i < pers.Length; i++){//if (pers[i] is Chinese)//{//    ((Chinese)pers[i]).SayHello();//}//else if (pers[i] is Japanese)//{//    ((Japanese)pers[i]).SayHello();//}//else//{//    ((Korea)pers[i]).SayHello();//}pers[i].SayHello();}Console.ReadKey();}}public class Person{private string _name;public string Name{get { return _name; }set { _name = value; }}public Person(string name){this.Name = name;}public virtual void  SayHello(){Console.WriteLine("我是人类");}}public class Chinese:Person{public Chinese(string name) : base(name){}public override void SayHello(){Console.WriteLine("我是中国人,我叫{0}",this.Name);}}public class Japanese :Person{public Japanese(string name) : base(name){}public override void SayHello(){Console.WriteLine("我是小日子国人,我叫{0}",this.Name);}}public class Korea :Person{public Korea(string name) : base(name){}public override void SayHello(){Console.WriteLine("我是棒子国人,我叫{0}", this.Name);}}
}

这里面我们在父类中发现有和子类相同名的函数。当我们要让子类使用时,就会让父类的函数隐藏,所以当我们要调用时就要分类去实现。为了简化这一点,虚方法就是在父类相同名的函数上添加virtual,使这个能被重写。然后在子类的相同名的函数上添加override,然后再Main函数中直接调用。

2)、抽象类
当父类中的方法不知道如何去实现的时候,可以考虑将父类写成那个抽象类,将方法写成那个抽象方法(abstract)

namespace _083_练习
{class Program{static void Main(string[] args){//狗会叫 猫也会叫Animal a = new Dog();a.Bark();Animal b = new Cat();b.Bark();}}public abstract class Animal{public abstract void Bark();}public  class Dog : Animal{public override void Bark(){Console.WriteLine("狗汪汪的叫");}}public class Cat:Animal{public override void Bark(){Console.WriteLine("猫喵喵的叫");}}}

抽象类特点:
1.抽象成员必须标记为abstract,并且不能有任何实现。
2.抽象成员必须在抽象类中。
3.抽象类不能被实例化
4.子类继承抽象类后,必须把父类中的所有抽象成员都重写。
(除非子类也是一个抽象类,则可以不重写)
5.抽象成员的访问修饰符不能是private
6.在抽象类中可以包含实例成员。
并且抽象类的实例成员可以不被子类实现
7.抽象类是有构造函数的。虽然不能被实例化。
8、如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数。
如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候 也必须要传入返回值。

如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态
如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。

练习:计算圆和矩形的周长和面积

namespace _084练习
{class Program{static void Main(string[] args){//使用多态矩阵的面积和周长以及圆形的面积和周常Shape shape = new Circle(5);double area = shape.GetArea();double perimeter = shape.GetPerineter();Console.WriteLine("这个圆的面积是{0},周长是{1}", area, perimeter);Shape shape1 = new Square(4, 5);double area1 = shape1.GetArea();double perimeter1 = shape1.GetPerineter();Console.WriteLine("这个矩形的面积是{0},周长是{1}",area1, perimeter1);}}public abstract class Shape{public abstract double GetArea();public abstract double GetPerineter();}public class Circle : Shape{private double _r;private double R{get { return _r; }set { _r = value; }}public Circle(double r){this.R = r;}public override double GetArea(){return Math.PI*this.R*this.R;}public override double GetPerineter(){return Math.PI * this.R * 2;}}public class Square : Shape{private double _height;public double Height{get { return _height; }set { _height = value; }}private double _width;public double Width{get { return _width; }set { _width = value; }}public Square(double width, double height){this.Width = width;this.Height = height;}public override double GetArea(){return this.Width * this.Height;}public override double GetPerineter(){return 2*(this.Width+this.Height);}}
}

3)、接口
【public】interface I…able
{
成员;
}
接口是一种规范。
只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员

为了多态。
接口不能被实例化。
也就是说,接口不能new(不能创建对象)

接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改。

(默认为public)
接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)。

接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数。

接口与接口之间可以继承,并且可以多继承。

接口并不能去继承一个类,而类可以继承接口 (接口只能继承于接口,而类既可以继承接口,也可以继承类)

实现接口的子类必须实现该接口的全部成员。

一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。

class MyClass:A,IA{},因为类是单继承的。

显示实现接口的目的:解决方法的重名问题
什么时候显示的去实现接口:
当继承的借口中的方法和参数一摸一样的时候,要是用显示的实现接口

当一个抽象类实现接口的时候,需要子类去实现接口。

namespace _095接口
{class Program{static void Main(string[] args){IFlyable fly = new Student();//Person();fly.Fly();Console.ReadKey();}}public class Person : IFlyable{public void Fly(){Console.WriteLine("人类在飞");}}public class Student : Person, IFlyable{public void Fly(){Console.WriteLine("学生在飞");}}public class Bird : IFlyable{public void Fly(){Console.WriteLine("鸟在飞");}}public interface IFlyable{//接口中的成员不允许添加访问修饰符,默认就是 publicvoid Fly();//string Test();//不允许写具有方法体的函数//不能包含字段//方法、自动属性//string someting//{//    get;//    set;//}}public interface M1{void test1();}public interface M2{void test2();}public interface M3{void test3();}public interface SuperInterface : M1,M2,M3{}public class car : SuperInterface{public void test1(){throw new NotImplementedException();}public void test2(){throw new NotImplementedException();}public void test3(){throw new NotImplementedException();}}
}

练习:

namespace _095接口练习
{class Program{static void Main(string[] args){//麻雀会飞  鹦鹉会飞  鸵鸟不会飞 企鹅不会飞  直升飞机会飞//用多态来实现//需方法、抽象类、接口IFlyable fly = new Plane();//new MaQue();//new YingWu();fly.Fly();Console.ReadKey();}}public class Bird{public double Wings{get;set;}public void EatAndDrink(){Console.WriteLine("我会吃喝");}}public class MaQue : Bird, IFlyable{public void Fly(){Console.WriteLine("麻雀会飞");}}public class YingWu : Bird, IFlyable, ISpeak{public void Fly(){Console.WriteLine("鹦鹉会飞");}public void Speak(){Console.WriteLine("鹦鹉可以学习人类说话");}}public class TuoBird : Bird{}public class QQ : Bird{}public class Plane : IFlyable{public void Fly(){Console.WriteLine("直升飞机转动螺旋桨飞行");}}public interface IFlyable{void Fly();}public interface ISpeak{void Speak();}
}

显示接口实现

namespace _096显示实现接口
{class Program{static void Main(string[] args){//显示实现接口就是为了解决方法的重名问题IFlyable fly = new Bird();fly.Fly();Bird bird = new Bird();bird.Fly();Console.ReadKey();}}public class Bird:IFlyable{public void Fly(){Console.WriteLine("鸟会飞");}/// <summary>/// 显示实现接口/// </summary>void IFlyable.Fly()//类中的成员默认是private{Console.WriteLine("我是接口的飞");}}public interface IFlyable{void Fly();}
}

十、用多态移动电脑、移动硬盘、U盘、MP3数据
这个是练习

namespace _085移动数据
{class Program{static void Main(string[] args){//用多态来实现  将移动硬盘或者U盘或者MP3插到电脑上读写数据 //MoblieDisk md = new MoblieDisk();//UDisk u = new UDisk();//MP3 mp3 = new MP3();    //Computer cpu = new Computer();//cpu.CupRead(u);//cpu.CupWrite(u);MoblieStorage ms  = new UDisk();Computer cpu = new Computer();cpu.MS = ms;cpu.CupRead();cpu.CupWrite();//Computer cpu = new Computer();//cpu.CupWrite(ms);//cpu.CupRead(ms);//Console.ReadKey();}}/// <summary>/// 抽象父类/// </summary>public abstract class MoblieStorage{public abstract void Read();public abstract void Write();}public class MoblieDisk:MoblieStorage{public override void Read(){Console.WriteLine("移动硬盘在读取数据");}public override void Write(){Console.WriteLine("移动银盘在写入数据");}}public class UDisk : MoblieStorage{public override void Read(){Console.WriteLine("U盘在读取数据");}public override void Write(){Console.WriteLine("U盘在写入数据");}}public class MP3 : MoblieStorage{public override void Read(){Console.WriteLine("MP3在读取数据");}public override void Write(){Console.WriteLine("MP3在写入数据");}public void PlayMusic(){Console.WriteLine("MP3在播放音乐");}}public class Computer{private MoblieStorage _ms;public MoblieStorage MS{get { return _ms; }set { _ms = value; }}public void CupRead(){MS.Read();}public void CupWrite(){MS.Write();}}
}

C#学习七(包含File字节流,list泛型集合、拆装箱、ictionary字典,文件流FileStream、StreamReader和StreamWrite、多态)相关推荐

  1. Gephi简易学习[七]————通过Pyhthon编写程序来调用honglou.json生成.csv文件

    python安装包(这里我们只需要安装python2.7的那个版本): https://pan.baidu.com/s/14cJmOMnhvCrGGoikzU1SLA 密码:uyne honglou. ...

  2. 字节流转化为文件流_C#文件转换为字节流及字节流转换为文件

    本文讲解了C#实现文件转换为字节流的方法. ·文件转换为字节流的步骤如下 1.通过文件流打开指定文件(FileStream fs): 2.定义字节流(byte[] fileByte=new byte[ ...

  3. C# 找出泛型集合中的满足一定条件的元素 List.Wher()

    在学习的过程中,发现泛型集合List<T>有一个Where函数可以筛选出满足一定条件的元素,结合Lambda表达式使用特别方便,写出来与大家分享. 1.关于Func<> Fun ...

  4. Java学习总结:42(字节流和字符流)

    字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容.如果要进行文件内容的操作,就必须依靠流的概念来完成.流在实际中分为输入流和输出流两种,输入 ...

  5. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

  6. Docker学习七:使用docker搭建Hadoop集群

    本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧 Docker学习一:Dock ...

  7. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

    http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...

  8. Java学习day18-集合框架2(泛型,工具类,TreeMap)

    集合框架2 今日目标 一.泛型 1.泛型类 2.泛型接口 3.泛型方法 4.泛型通配符 二.集合工具类 三.TreeMap和TreeSet 作业: 今日目标 泛型 集合工具类 自带排序集合 一.泛型 ...

  9. Python+大数据-Python学习(七)

    Python+大数据-Python学习(七) 1.文件的基本操作 文件打开的格式: file = open(文件路径,读写模式) ​ - open默认打开的式r模式 文件路径:可以写相对路径,也可以写 ...

最新文章

  1. Scrapy shell
  2. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]
  3. 微软推出Python免费在线教程视频
  4. azure不支持哪些语句 sql_排查 Azure SQL 数据库的常见连接问题 - Azure SQL Database | Microsoft Docs...
  5. Python 测试驱动开发读书笔记(二)使用unittest框架扩展功能测试
  6. session cookie区别 客户端存储
  7. Java 的体系结构包含_第一章 java体系结构介绍
  8. 数据呈现—ListView x Adapter
  9. 女生学计算机和遥感哪个好就业,遥感专业女生就业方向 遥感专业毕业生可以从事哪些工作...
  10. 4.7开发者日:北极光创投吴峰的投资只管杀不管埋
  11. 初中数学知识点总结_初中数学知识点总结
  12. Linux基础知识命令总结1
  13. 利用Freemarker模板生成doc或者docx文档(转载整理)
  14. media在HTML中作用,web前端:关于css中@media的一些基本使用
  15. 三级分销如何合规分账?
  16. Java模板设计模式
  17. 搭建umi框架时出现Error: Error: Plugin umi-plugin-react can't be resolved
  18. 微信小程序自驾游拼团+后台管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
  19. 记录一个海信电视(VIDAA)进入开发者方式
  20. BackTrack5漏洞评估之OpenVAS Open Vulnerability Assessment System

热门文章

  1. 牛客小白赛60(F.被抓住的小竹)61(E.排队)(数学+推公式)
  2. 使用GDB(三):调试程序反汇编方法
  3. 史上最简单的Excel导入通讯录方法
  4. [渝粤教育] 中国地质大学 陶瓷(3) 复习题
  5. android经典机型,魅族史上的经典机型大盘点 魅族 17 值得期待吗?
  6. 华为和京东方在美国专利排名快速提升,代表中国创新力持续增强
  7. Mysql索引,SQL优化
  8. FastAdmin table列表字段宽度太长,以及滚动条的解决办法。
  9. CPU圓形風扇底座怎麼拆
  10. 【wxPython】wxPython获取系统字体