起航学习网 1879460140@qq.com 180 怎样才能找到一份满意的JAVA程序员工作 - 必威备用网 http://www.epx365.cn/peixun/software/201843202.html 一般而言,达内教育很肯定的的回答你:很难!特别是很难找到对口的工作,为什么这样说?因为面试官会考察大家的java实力,如果太差就无法录取了,那想怎样才能拥有一份满意的JAVA程序员工作呢? 欢迎光临达内教育官方网站——郑州JAVA培训和自学java,哪个能快速找到工作。郑州java自学好吗,如何学好java技术,找一份优质的java工作呢? 想在工作中更有竞争优势,掌握一门过硬的技术,就重中之重。所以,达内教育建议,在找工作前,一定要把java的基础知识掌握好,最好的方法就是一旦掌握了一点,便搜些相关的demo去实践。眼高手低导致自学的效率极低,很多学子咨询达内教育,自学java能找到工作吗?一般而言,达内教育很肯定的的回答你:很难!特别是很难找到对口的工作,为什么这样说?因为面试官会考察大家的java实力,如果太差就无法录取了,那想怎样才能拥有一份满意的JAVA程序员工作呢? 达内教育建议,如果跟着JAVA培训老师学习,这就是一条捷径,在JAVA培训机构里面通过系统化的培训及学习,收获倍增,对JAVA培训机构而言,他们不仅懂得课本知识,也会十分了解公司的用人需求,自然会给大家提供更多的指点和鼓励,有了这些实践知识储备后,人们参加面试就会简单很多,不少培训公司还与专业的企业合作,只为给大家提供就业机会。 自学java能找到工作吗?这一点不能完全否定。但如果与培训学习做对比的话,还跟着学校学习更为出色,找到工作的几率也更高一些。因为学校提供的知识非常系统,也是专家总结出来的精髓,这些都是学员个人无法完成的一点。有时候公司面试人员除了考察大家的学历之外,也会询问大家在哪里学习的java技术,如果是大名鼎鼎的培训学校,面试官一般比较放心,达内JAVA培训学校,多年的老品牌JAVA机构,长期致力于校企合作,开展的都是企业级的JAVA培训课程,受到更多用人单位的青睐。 JAVA程序员 编程语言 IT培训网 编程网 2018-09-02 21:33 选择了一所好的郑州java培训机构好不 http://www.epx365.cn/peixun/software/201843201.html 如果你是应届毕业生,或者是转行人员,建议你选择一所有实力靠谱的郑州java培训机构,当下很多学Java,急迫掌握java技术的朋友已经深深意识到这点,那么你需要做到的就是理性选择Java培训机构,比如可以从师资力量、就业保障、行业口碑等等来考察。 欢迎光临达内教育官方网站——靠谱的JAVA培训,J2EE培训主要表现在哪些方面?怎么样学习java培训知识,哪家java培训机构最靠谱? 有同学问到达内教育君,JAVA工程师培训靠不靠谱?和自学有区别吗?为什么很多人都说现在去报JAVA培训班学习跟自学学到的知识差距太大呢?这样给你说吧: Java培训出来的收收获跟自学JAVA的收获差距不是一点半点,学完了出来就业简直是天壤之别,JAVA培训后大多数完全能够高薪上岗,而自学半年一载的,还未必能找到工作。 达内教育建议,学习JAVA,参加JAVA培训,我们首先树立终身学习的观念,但是学习java技术必须做到高效,减少无用功,怎么样才能高效学java技术呢?那么是建立在你拥有扎实的Java基础才能够做的到的,那么精通java技术,首先得先把Java基础打扎实,如何把Java基础打扎实呢? 如果你是应届毕业生,或者是转行人员,建议你选择一所有实力靠谱的郑州java培训机构,当下很多学Java,急迫掌握java技术的朋友已经深深意识到这点,那么你需要做到的就是理性选择Java培训机构,比如可以从师资力量、就业保障、行业口碑等等来考察。 选择了一所好的郑州java培训机构,加上你自己的不懈努力,那么把Java基础打牢是没有问题的,但是这还只是精通java技术的一个小部分,要精通java技术你能够做的有很多,比如经常性向Java行业内优秀的其他工作者取经,自己多多经历大型项目的考验,自己时刻关注新出的java技术趋势等等。 随着这几年倡导的大众创业,万众创新的出现,目前市场上Java培训行业鱼龙混杂,选择大品牌,老品牌,特别是办学时间长的培训学校,那么再怎么着都会让你收获多多,办学时间越长,说明口碑好,质量过关,课程体系完善,就业体系成熟,管理水平,教学质量都是杠杠的,达内教育专注软件开发培训,设计培训20年,学员满意度高,轻松学会,请联系达内教育网站客服,了解详细的优惠课程信息~给你更多的: 优质、便捷、省心 郑州java培训机构 编程语言 IT培训网 编程网 2018-09-02 21:24 java基础:什么是IO http://www.epx365.cn/peixun/software/201843200.html 有的时候很多人会搞不明白这个输入和输出,总是混淆怎样才是输入,怎样又是输出,我们看这个图也许就能明白了,在Java中输入流就是从某地方进行数据读取然后输入到我们的Java程序,然后有我们的Java程序再输出到某个地方,这就是一个数据传输的过程。 死磕Java基础–Java中的I/O流,看这个就够了!让你知道什么是IO,让你快速了解java方面的知识点? 网上的技术文章有很多,但是写作手法都大同小异,在这里我想以一种新颖的方式带给大家不一样的技术文章学习体验,我将采用一问一答的方式进行创作,在这里会有两个角色,即IT培训网和小白! 一、什么是IO IT培训网:小白,你知道什么是IO吗? 小白:我英文不是太好,但是在这里这个I指的应该是input,而这个O指的则是output吧!对于IO我的认识就是输入输出了,不知道这样理解是否正确! IT培训网:对于IO我们理解成输入输出很正确,但是我们一定要注意一个非常重要的点那就是“流”,什么意思呢?在这里我们更准确的来说其实是输入输出流,因为我们在讨论IO的时候,流则是关键中的关键,我也听过很多人对IO的描述就是输入输出流,这其实是IO的一种分类,在这里想给你说下对于IO我们可以如下分类 按数据流向分类 输入流和输出流 按处理的数据类型分类 字节流和字符流 不知道看到这里你有什么发现没? 小白:到这里我发现了两个比较重要的关键词,那就是数据和流 IT培训网:非常正确,我们之前说过我们在说IO的时候一定逃不过“流”的概念,而另外一个同样重要的就是数据了,那到底什么是流呢? 揭秘输入输出流中的“流” 小白:我们常说的IO流和输入输出流中的这个流应该是一样的吧! IT培训网:没错,这确实是一样的,那么该怎么理解这个流呢?这里我们完全可以类比这水流去理解,只不过我们这里的流指的则是数据了,结合两个概念“流”和“数据”也就得到我们的重点数据流,就如同我们的水流一样,对于水流,那流入流出的都是水,而我们的数据流流入流出的自然就是数据了,所以记住非常重要的一句话 流的本质就是数据传输 那么现在我问你,IO是用来干嘛的?你该怎么回答 小白:都讲到这地步了,我必须明白啊,IO就是用来进行数据传输的 IT培训网:很正确,接下来我们还需要弄清一样东西,那就是输入输出流,这对我们后续对IO的学习很重要,那你知道什么是输入输出流吗? 小白:既然流是用来传输数据的,那么输入输出流肯定是针对具体的数据而言。。。算了,不是很理解,不知道该怎么表述! 何为输入输出流 IT培训网:首先明白一点,我们这里说的IO指的是Java中的IO,那么对与Java而言我们该如何去理解这个输入输出流呢?接下来我们看一张图你会清晰很多 有的时候很多人会搞不明白这个输入和输出,总是混淆怎样才是输入,怎样又是输出,我们看这个图也许就能明白了,在Java中输入流就是从某地方进行数据读取然后输入到我们的Java程序,然后有我们的Java程序再输出到某个地方,这就是一个数据传输的过程。 那么我们学习IO到底在学习什么呢?其实这里的Java程序就是我们的额JavaIO来实现的,我们就是要学习IO中哪些东西可以将数据输入进来,哪些又可以将数据输入出去,不知道这样讲你是否明白呢? 小白:嗯嗯,经你这么一说,顿时感觉清晰了好多啊。那么解析来我们是不是就要具体学习IO中那些可以操作数据流向的知识了? IT培训网:是的,接下来我们就从第一个知识点开始,那就是我们的File类。 认真对待File类 IT培训网:可以说我们学习Java的IO第一个要学的就是File类,那么为什么要学这个类呢?因为这个类提供了很详细的对文件操作的功能,想一下我们的输入输出流,就是对数据进行操作啊,比如我们想在某个盘符下读取一个文件,将这个文件中的内容读取到然后输出到另一个盘符下的某个文件,在这个过程中我们需要做哪些操作呢? 小白:如果是这样的话闹我们就必须拿到这些文件,然后还得有特定的方法供我们使用。 IT培训网:对的,而这个File就可以帮我们完成,我们一步步来,先来看一段程序,首先我在我的电脑F盘下新建一个a.txt的文件,然后我们对这个文件进行操作 我们看这个代码,应该很容易看懂吧,我们通过创建一个File对象来拿到我们要操作的对象,只有拿到了我们想要操作的对象之后我们才能对该对象进行相应的操作。 小白:这里File的参数是不是就代表我们要操作对象的路径啊,比如这里我们要操作a.txt这个文件,那么这个F:/a.txt就是该文件在我们电脑中的位置? IT培训网:完全正确,你想啊,既然我们要操作某一文件对象,你起码要告诉我这个文件在哪吧! 小白:那这个file是不是应该还有其他的一些方法吧! IT培训网:这是必须的啊,它有这么多方法呢? 我们可以看到通过这个file我们可以调用很多方法,而对这些方法我们基本上看看名字就能知道方法的作用,而这里有一个最好的学习方法是什么呢?这里有这么多方法,我不可能一一去演示每一个方法的作用,那么该怎么办?当你需要用到哪个方法的时候尽管去尝试就行了。 小白:嗯嗯,确实,在学习的过程中我们还是要多动手才行啊,对了,咱们操作的这个文件也就是a.txt是不是咱们自己手动创建的啊? IT培训网:是的,这个文件实我事先在F盘中创建的,其实我们还可以通过程序来帮我们创建文件,比如我们在F盘下再创建一个b.txt文件,我们可以这么做 这时候你就会发现你的F盘下多了一个b.txt文件,我们可以看到,我们这里依然是使用了file的一个方法,而这个方法我们从方法名就可以知道就是一个创建新文件的方法,这也提示我们平常再编码中命名一定要有所含义,最好是其功能的说明,不要随随便便就起一个名字。 但是这里应该会有一个问题,你能想出来吗? 小白:问题嘛,我想想,这里是新创建一个文件,那么,如果我本地已经存在这个文件,那这是将原来的覆盖还是新创建一个副本啊 IT培训网:思考的非常好,其实如果本地已经有文件的话,这个方法就不会再创建新文件了,也就是只有当文件不存在才会创建一个新的文件,当然也就不存在覆盖之说了,所以正确的写法应该是这样滴。 这样写是否明白呢? 小白:必须明白啊,也没有那么难嘛,哈哈 IT培训网:那是,难了不会,会了不难,咱们继续,我们看我们以上的例子都是在创建文件,那我们通过这个File类是不是也可以创建文件夹呢?答案是肯定的,我们可以这样操作 其实对于这段代码我觉得都不用怎么说,相信你都能看懂,因为这个跟创建文件的代码几乎一样唯一不同的就是调用方法不同。 但是在这里对于创建文件夹我们有一个需要说明的,那就是这两个方法的区别 你能猜出来他们的区别嘛? 小白:这个应该都是创建文件夹,那么这个带s的是不是就意味着可以创建多级文件夹? IT培训网:对的,这个带S的可以帮你创建多个嵌套的文件夹,比如新创建一个新的文件夹a并且在a中再创建一个文件夹b,具体的我不多说,你试一下就知道了。 好了到了这里我们学习了IO中的第一个基础的东西也就是文件,关于这个主要是对File类中相关方法的运用,可以多去尝试下,接下来我们就开始学习一些流相关的东西吧! 流的操作 IT培训网:我们发现我们之前说的都是在操作文件或者或文件家,比如我们创建一个文件a.txt,我们把这个文件创建成功了,但是这个文件是一个空的,里面并没有内容,那么我们如何去在这个文件中写上一些内容的,或者一些其他的文件内容操作 小白:我觉得肯定也是有一个相应的类吧 IT培训网:要学习这里我们必须明白几个概念,我们在之前说过对于IO如果我们按数据流向也就是分为输入流和输出流,这是一个大的方向,如果我们按小的方向也就是数据类型划分的话是分为字符流和字节流的,所以这里我们要清楚什么是字节流什么是字符流,但是要说这个之前我们最好还有明白什么是二进制文件什么是文本文件? 小白:二进制文件和文本文件?我觉得文本文件应该就是那些内容是纯文本的吧,比如txt文件或者我们写的Java文件,至于二进制文件还真说不清楚! IT培训网:是的,你对文本文件理解的很正确,对于二进制文件就是我们平常见到的图片,音视频等,明白了什么是二进制文件和文本文件,那我们来看看什么是字节流和字符流 字节流 对于字节流,它是用来操作我们的二进制文件的,为什么呢?因为字节流可以操作的数据是8位,也就是一字节,我们知道1 byte = 8bit,而像一些数字和字母等都是占一个字节,这就可以使用字节流来操作,但是对于中文的话就不能使用字节流了 字符流 因为一个汉字是占两个字节,那么就是16位,字节流是操作不了的,而字符流则可以操作16位,所以对于文本文件则常用字符流操作了 小白:哦哦 ,明白了,不过这个字符流和字节流应该也是一个统称吧,具体指的是哪些呢 FileInputStream和FileOutputStrem IT培训网:是的,具体的有好几个呢,但是我们只需要学习几个重点的就行,首先就是 FileInputStream和FileOutputStrem是字节流张比较重要的操作输入和输出的两个类,我们先从它俩开始 我们之前使用File可以创建一个文件,比如我们之前创建的是一个a.txt文件,接下来我们就使用 FileInputStream和FileOutputStrem去操作一下这个txt文件吧 读取文本 小白:我们之前不是说对于文本的操作使用字符流嘛?可是这里我们不是在说字节流嘛? IT培训网:对于到底是使用字节流还是字符流我们要明白重点是什么,重点是你要操作的数据,如果是中文的话我们当然不能使用字节流而要使用字符流,但是如果你的文本内容是一些数字或者字母,这就可以使用我们的字节流啊,对于字节流和字符流是都可以用来操作文本文件的,关键看你的文本内容 小白:哦哦,明白了,要看你的内容到底是个什么玩意 IT培训网:对的,接下来我们在a.txt先手动写上abc三个字母,然后我们这样操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //创建一个File对象,拿到我们的数据 File file = new File("F:/a.txt"); if (!file.exists()){ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }else { System.out.println("文件已存在"); try { //read的返回值为-1说明文件读取完毕 FileInputStream fileInputStream = new FileInputStream(file); //read的读取方式为一个个的读取,也就是说你调用一次read就会读取下一个字节 int i = fileInputStream.read(); while (i > 0){ System.out.println((char)i); i = fileInputStream.read(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 我们知道FileInputStrem是一个输入流,可能说输入流你会犯晕,不理解,我们其实是可以把输入流理解为”拿到“,比如这里我们使用FileInputStrem就是拿到a.txt中文本内容,我的文本中有abc三个字母,然后我们第一次调用read方法会帮你拿到a,我们看返回的是一个int类型,可以知道返回的其实是a的ASCII码,我们需要使用char来进行转换,我们在代码中也说了,当read的返回值是-1的话也就代表文件读取完毕,这里我们要注意的就是read每调用一次就会读取文本内容的下一个字节那么你对这段代码是否了解呢?尤其循环中的代码 小白:嗯嗯,你这么一说我就明白了,但是我觉得我们在开发中应该不会这样做吧? IT培训网:为什么呢? 小白:这样一个个的读取,效率是不是有点低啊 IT培训网:确实,所以我们还有这么一种方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 //以byte数组方式读取 public static void main(String[] args) { File file = new File("F:/a.txt"); if (!file.exists()){ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }else { System.out.println("文件已存在"); byte[] bytes = new byte[1024]; //1kb try { FileInputStream fileInputStream = new FileInputStream(file); //以一个kb的方式去读取,如果文本内容不超过一个kb的话就会全部读取,将读取到的内容放在byte数组中并且返回文本内容的字节数 int read = fileInputStream.read(bytes); String s = new String(bytes); System.out.println(s); System.out.println(read); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 这种方式我们就是以byte数组方式读取,首先我们定义一个byte数组 byte[] bytes= newbyte[1024]; //1kb 为什么要定义这么一个数组,我们看这个byte数组其实就是1kb大小,我们之前是一个字节一个字节读取,我们现在是1kb1kb的去读,然后这样做 1 2 3 FileInputStream fileInputStream = new FileInputStream(file); //以一个kb的方式去读取,如果文本内容不超过一个kb的话就会全部读取,将读取到的内容放在byte数组中并且返回文本内容的字节数int read = fileInputStream.read(bytes); 之前一个字节读取的时候read是没有参数的,现在传入一个byte数组意味着按照byte数组大小读取,然后读取到的文本内容存放在这个byte数组中再返回一共读取的字节数 我们也需要对这个读取到的byte数组进行转换 Strings = newString(bytes); 如此一来我们就得到了我们的abc 小白:嗯嗯,看这种方式觉得才好,那么在开发当中是不是使用的这种饭是钢hi多一点啊 IT培训网:确实,其实对于read的字节读取方式我们是很少用的,就像你说的,效率低。 写入文本 小白:我们现在是将文本内容读取到了,那么我们可不可以将它再写入到一个文件 IT培训网:这个当然可以,这个我们就要使用到我们的输出流FileOutputStrem了,你看我们可以这样操作 1 2 3 4 //写入FileOutputStream fileOutputStream = new FileOutputStream("F:/b.txt"); fileOutputStream.write(bytes); 我们看就这么两行代码,那是因为我们在操作输入流的时候把一些工作已经做了,我们看第一行代码就代表着你要往哪个文件中写入文本,然后我们执行write就可以开始写入了,而这个byte就是我们之前使用输入流从a.txt中拿到的文本内容,这里有一点需要注意,我们看代码 FileOutputStream fileOutputStream = newFileOutputStream("F:/b.txt",true); 这里增加了一个true,什么意思呢?这里如果你不写的话默认就是false,那么你写入文本的时候就会覆盖之前的内容,但是如果你加上true的话就代表在原有文本之后追加 小白:嗯嗯,记着了,对了其实我一直有一个问题,我们说IO不就是InputStrem和OutputStrem嘛。为什么我们使用的是FileInputStream和FileOutputStrem IT培训网:我看你是迷糊了吧,要知道InputStrem和OutputStrem可都是接口啊,接口是不能被实例化的,我们只能使用它的实现类,明白了吧 小白:好吧,我竟然忘了InputStrem和OutputStrem都是接口了,咱这个跳过去哈 字符流 IT培训网:好的,那咱们就来看看字符流吧,对了,我们之前讲了字节流,那你知道字节流的读取单位是什么嘛? 小白:字节流是按字节读取那就是byte了 IT培训网:回答完全正确,那你知道我峨嵋你学习字符流主要学习哪几个类嘛 小白:这个嘛,我还真不清楚,还是你来说吧 IT培训网:对于字符流,像字节流中的InputStrem和OutputStrem一样,也有两个接口那就是Reader和Writer,当然我们也是需要去学习它们的实现类,同样,它们的实现类有好几个,我们不可能每一个都学,我们会说几个比较重要的。 小白:晓得了,接下来是不是先从Reader的实现类开始啊 IT培训网:是的,接下来我们就来看几个比较重要的 Reader IT培训网:对于Reader,我们需要首先熟悉并且会使用它的这几个实现类,对了,这里说的可都是输入流 BufferedReader FileReader InputStremReader InputStremReader 我们首先说一下这个InputStremReader,为什么呢?因为这个我们在平常见到的比较多,而且它和FileInputStrem也很想,我们知道对于FileInputStrem,它是一个字节流,读取的单位是byte,我们看它的参数中是可以传入byte类型数据的,而对于InputStremReader,它所不同的就是传入的参数从byte编程char了,这就是两者的区别,由此我们使用InputStremReader就可以读取中文了,因为一个汉字占两个字节,而char就是两个字节,下面我们看一个例子,首先在我们之前创建的a.txt文件中写上”一个自学的程序员“ 接下来我们读取一下试试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 File file = new File("F:/a.txt"); if (!file.exists()){ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }else { System.out.println("文件已存在"); try{ FileInputStream fileInputStream = new FileInputStream(file); //获取字符输入流 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"gbk"); char[] c = new char[64]; int read = inputStreamReader.read(c); System.out.println( new String(c)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 我们来看这段代码,使用到InputStremReader的地方在这 1 2 //获取字符输入流InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"gbk"); 我们在这里创建一个InputStremReader对象,可以在这里传入了两个参数,第一个是一个字节流,也就是说这个InputStremReader是需要传入一个字节流的,InputStremReader是比较特殊的,它可以传入编码格式,比如这里如果我不传入这个gbk,我得到的文本内容则是乱码,加了这个就可以了,要知道其他字符流是不可以的,然后我们看这段代码 1 2 3 char[] c = new char[64]; int read = inputStreamReader.read(c); System.out.println( new String(c));<code class="hljs" style="display: inline; overflow: visible; color: #333333; background: transparent; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace, sans-serif; border-radius: 3px; line-height: inherit; word-wrap: normal; border: 0px initial initial;"></code><code class="hljs" style="display: inline; overflow: visible; color: #333333; background: transparent; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace, sans-serif; border-radius: 3px; line-height: inherit; word-wrap: normal; border: 0px initial initial;"></code> 这段代码应该是比较熟悉的吧,因为这个跟我们在讲FileInputStrem读取的时候几乎是一样的,只不过这里变成了char,其他的基本上和FileInputStrem是一样的。 小白:那么这两个学习的时候就可以互相参照对比着学习了吧 IT培训网:是的,接下来我们再来说说其他的字符流 FileReader IT培训网:接下来我们看一下另一个字符输入流,那就是FileReader,那么你能知道这个FileReader怎么使用嘛? 小白:这个我觉得既然都是字符输入流,那么在使用方法上应该也很相似吧 IT培训网:这分析的倒是没错,我这里贴出FileReader的使用方式代码,你看下就知道区别了 你能看出来区别吗? 小白:我知道了,对于FileReader它不需要像InputStremReader一样传入一个字节流,同样好像也不能直接传入编码格式吧,至于其他的操作几乎就是一样的了 IT培训网:对的,其实就是这样的,相同的地方很多,不同的其实就那么一点,那么接下来我们就再来说一下这个BufferedReader。 BufferedReader IT培训网:这个BufferedReader我们可以好好说一下,因为这个在平常使用的挺多的,相信你应该也有印象,我们使用BufferedReader读取文本内容可以保证文本内容的格式不被打乱,反正吧,关于BufferedReader的用法一定要熟练,BufferedReader我们叫做缓冲流,当然是对Reader做缓冲的,所以使用BufferedReader一定会用到Reader,接下来我们看看代码就知道了 1 2 3 4 5 6 7 8 9 // 使用InputStreamReader FileInputStream fileInputStream = new FileInputStream(file); //获取字符输入流 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line = null; while ((line=bufferedReader.readLine())!= null){ System.out.println(line); } 这段代码一定要记住了,烂熟于心,我们看代码知道这个BufferedReader需要接收一个字符流 InputStreamReader,然后就可以直接调取readLine方法进行整行读取,会得到一个字符串,可以直接输出,因为是整行读取可以保持格式不乱,真的很好用,所以要记住了 小白:确实,这段代码我好像也写过,当时还不太明白呢 IT培训网:其实IO这块一些实现类很多,我们不可能每一个都掌握,我们只需要熟悉常见的并且会使用即可,至于其他的一些我们用到的时候查一下即可,下面一张图,给你感受下 这就是IO中的字节流和字符流了,而且每一种又分为相应的输入流和输出流 小白:我的个天,这是不是有点多啊 IT培训网:是啊,所以全部学完有点不太现实,我峨嵋你只需要记住常使用的即可 Writer IT培训网:我们知道有写入肯定有输出,我们之前都是将a.txt中的文本内容写入,也就是得到那些文本内容,接下来我们看看看如何将这些文本内容输出到另一个文件也就是我们的b.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 import java.io.*;public class ReaderDeno { public static void main(String[] args) { File file = new File("F:/a.txt"); File file1 = new File("F:/b.txt"); if (!file.exists()){ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }else { System.out.println("文件已存在"); try{ //使用InputStreamReader FileInputStream fileInputStream = new FileInputStream(file); //获取字符输入流 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); FileOutputStream fileOutputStream = new FileOutputStream(file1); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream); BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter); String line = null; while ((line=bufferedReader.readLine())!= null){ System.out.println(line); bufferedWriter.write(line); bufferedWriter.newLine(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }} 我这里将所有的代码都贴出来了,我们要注意输出到b.txt的代码,也就是这些 这段代码是没有错误的,但是你却发现你始终是无法完成对b.txt文件的输出,这是为什么呢? 小白:我看不出来,这是怎么回事啊 IT培训网:因为自始自终我们一直忽略了一个大问题,那就是IO流的关闭 记得IO流的关闭吗 IT培训网:因为一个流如果没有关闭,则处于被占用状态,那么一些操作我们是完成不了的,在jdk1.6及之前我们都需要手动的去关闭流,那是相当的麻烦,但是在之后的版本中就可以让Java自动帮我们关闭流了,我们只需要这样做就可以了 看明白了吗?也就是只需要在try之后加一个括号,将出现异常的代码放到这里,也就是各种流,然后Java就可以自动帮我们关闭流了,这个时候再执行程序就可以看到,b.txt已经有复制的内容了。 今天就先讲到这,后续会补充一些知识! http://www.epx365.cn/uploads/allimg/1809/12_0Z221140V2Q.png java基础,什么是IO 编程语言 IT培训网 编程网 2018-09-02 21:12 java网络编程是什么 http://www.epx365.cn/peixun/software/201843199.html Java支持基于流的通信和基于包的通信,基于流的通信使用TCP协议(传输控制协议)进行数据传输,传输是无损可靠的;基于包的通信使用UDP协议(用户数据报协议)进行数据传输,不能保证传输没有丢失。 知道什么是java吗,知道java网络编程是什么吗?本文主要是自己在java网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,介绍Java中的网络编程。 java-网络编程 1、Java支持基于流的通信和基于包的通信 基于流的通信使用TCP协议(传输控制协议)进行数据传输,传输是无损可靠的 基于包的通信使用UDP协议(用户数据报协议)进行数据传输,不能保证传输没有丢失 2、服务端和客户端套接字--基于流的通信 客户端代码 package com.wangluo;import java.io.*;import java.net.Socket;import java.net.UnknownHostException;public class Client { public static void main(String[] args) { try { //1.创建客户端Socket,指定服务器端地址和端口 Socket socket = new Socket("localhost",8888); //2.获取输出流,向服务器端发送信息 OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.write("用户名:admin2;密码:456"); pw.flush(); socket.shutdownOutput();//关闭输出流,对于 TCP 套接字,任何以前写入的数据都将被发送 //3.获取输入流,并读取服务器的响应信息 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info = br.readLine()) != null) { System.out.println("我是客户端,服务器端说:"+info); } //4.关闭资源 br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 如果服务端的端口服务没有起来,运行客户端的程序会抛异常 java.net.ConnectException: Connection refused: connect 服务端代码--服务多个客户 package com.wangluo;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args) { try { //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口 ServerSocket serverSocket = new ServerSocket(8888); //2.调用accept()方法开始监听,等待客户端 的连接 System.out.println("***服务器即将启动,等待客户端的连接***"); while (true) { //监听端口 Socket socket = serverSocket.accept(); new MyThread(socket).start(); } } catch (IOException e) { e.printStackTrace(); } } static class MyThread extends Thread{ private Socket socket; public MyThread(Socket socket){ this.socket=socket; } @Override public void run() { try { server(socket); } catch (IOException e) { e.printStackTrace(); } } private void server(Socket socket) throws IOException { //3.获取输入流,并读取客户端信息 InputStream is = socket.getInputStream();//字节输入流 InputStreamReader isr = new InputStreamReader(is);//将字节输入流转换为字符流 BufferedReader br = new BufferedReader(isr);//为输入流添加缓冲 String info = null; while((info=br.readLine())!=null) {//循环读取客户端的信息 System.out.println("我是服务器,客户端说:"+info); } OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流 pw.write("我是服务端"); pw.flush(); socket.shutdownInput();//关闭输入流 //4.关闭资源 br.close(); isr.close(); is.close(); socket.close(); } } } 如果服务端监听的端口已经被使用了,在启动服务端的服务时候会抛异常 java.net.BindException 输出结果:(先启动服务端,再启动客户端) 服务端输出:我是服务器,客户端说:用户名:admin;密码:123用户名:admin2;密码:456 客户端输出:我是客户端,服务器端说:我是服务端 3、套接字发送和接受对象 对象必须实现Serializable接口 package com.wangluo;import java.io.Serializable;public class Test implements Serializable{ private static long serialVersionUID=1L; private int num; private String name; public Test(int num, String name){ this.num=num; this.name=name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Test{" + "num=" + num + ", name='" + name + '\'' + '}'; } } 客户端代码 package com.wangluo;import java.io.*;import java.net.Socket;import java.net.UnknownHostException;public class Client { public static void main(String[] args) { try { //1.创建客户端Socket,指定服务器端地址和端口 Socket socket = new Socket("localhost",8888); //2.获取输出流,向服务器端发送信息 OutputStream os = socket.getOutputStream();//字节输出流// PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流// pw.write("用户名:admin;密码:123");// pw.write("用户名:admin2;密码:456");// pw.flush(); ObjectOutputStream objectOutputStream=new ObjectOutputStream(os); objectOutputStream.writeObject(new Test(123,"deng")); objectOutputStream.flush(); socket.shutdownOutput();//关闭输出流 //3.获取输入流,并读取服务器的响应信息 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info = br.readLine()) != null) { System.out.println("我是客户端,服务器端说:"+info); } //4.关闭资源 br.close(); is.close();// pw.close(); objectOutputStream.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 服务端代码 package com.wangluo;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args) { try { //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口 ServerSocket serverSocket = new ServerSocket(8888); //2.调用accept()方法开始监听,等待客户端 的连接 System.out.println("***服务器即将启动,等待客户端的连接***"); while (true) { //监听端口 Socket socket = serverSocket.accept(); new MyThread(socket).start(); } } catch (IOException e) { e.printStackTrace(); } } static class MyThread extends Thread{ private Socket socket; public MyThread(Socket socket){ this.socket=socket; } @Override public void run() { try { server(socket); } catch (Exception e) { e.printStackTrace(); } } private void server(Socket socket) throws Exception { //3.获取输入流,并读取客户端信息 InputStream is = socket.getInputStream();//字节输入流// InputStreamReader isr = new InputStreamReader(is);//将字节输入流转换为字符流// BufferedReader br = new BufferedReader(isr);//为输入流添加缓冲// String info = null;// while((info=br.readLine())!=null) {//循环读取客户端的信息// System.out.println("我是服务器,客户端说:"+info);// } ObjectInputStream objectInputStream=new ObjectInputStream(is); Object test=objectInputStream.readObject(); System.out.println("我是服务器,客户端说:"+test); OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流 pw.write("服务端应答"); pw.flush(); socket.shutdownInput();//关闭输入流 //4.关闭资源// br.close();// isr.close(); objectInputStream.close(); is.close(); socket.close(); } } } 输出结果: 服务端:我是服务器,客户端说:Test{num=123, name='deng'} 客户端:我是客户端,服务器端说:服务端应答 java网络编程,java是什么 编程语言 IT培训网 编程网 2018-09-02 21:08 java入职指南:常见的32道java基础面试题 http://www.epx365.cn/peixun/software/201843198.html Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 你知道如何面试java吗,知道java面试的方法吗?32道常见的Java基础面试题,助力java爱好者成功入职。也许你觉得java入职难,那是因为你不知道java面试的技巧? 因为最近在忙着找工作,看到了很多面试整理的文章,于是便有了自己也写一篇,部分原创,大部分是我四处搜集的,我想整理一份最全最新的文章,方便大家总结!废话不多说,开始! 1. 什么是 Java 虚拟机(JVM)?为什么 Java 被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。  Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 2. JDK、JRE、JVM 分别是什么关系? JDK 即为 Java 开发工具包,包含编写 Java 程序所必须的编译、运行等开发工具以及 JRE。开发工具如:用于编译 Java 程序的 javac 命令、用于启动 JVM 运行 Java 程序的 Java 命令、用于生成文档的 Javadoc 命令以及用于打包的 jar 命令等等。  JRE 即为 Java 运行环境,提供了运行 Java 应用程序所必须的软件环境,包含有 Java 虚拟机(JVM)和丰富的系统类库。系统类库即为 Java 提前封装好的功能类,只需拿来直接使用即可,可以大大的提高开发效率。 JVM 即为 Java 虚拟机,提供了字节码文件(.class)的运行环境支持。 简单说,就是 JDK 包含 JRE 包含 JVM。 3. Java 支持的数据类型有哪些? Java 支持的数据类型包括基本数据类型和引用类型。基本数据类型如下。 整数值型:byte,short,int,long  字符型:char  浮点类型:float,double  布尔型:boolean 整数默认 int 型,小数默认是 double 型。Float 和 long 类型的必须加后缀。比如 float f = 100f。  首先知道 String 是引用类型不是基本类型,引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址,实体在堆中。引用类型包括类、接口、数组等。String 类还是 final 修饰的。  4. 什么是自动拆装箱? 自动装箱和拆箱就是基本类型和引用类型之间的转换,至于为什么要转换,因为基本类型转换为引用类型后,就可以 new 对象,从而调用包装类中封装好的方法进行基本类型之间的转换或者 toString(当然用类名直接调用也可以,便于一眼看出该方法是静态的),还有就是如果集合中想存放基本类型,泛型的限定类型只能是对应的包装类型。 5. 什么是面向对象? 面向对象是一种思想,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP),Java 是一个支持并发、基于类和面向对象的计算机编程语言,面向对象软件开发具有以下优点:代码开发模块化,更易维护和修改;代码复用性强;增强代码的可靠性和灵活性;增加代码的可读性。 6. 面向对象的四大基本特性? 抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不同的需求下,需要提取的特性可能不一样。得到的抽象模型中一般包含:属性(数据)和操作(行为)。这个抽象模型我们称之为类,对类进行实例化得到对象。 封装:封装可以使类具有独立性和隔离性,保证类的高内聚。只暴露给类外部或者子类必须的属性和操作。类封装的实现依赖类的修饰符(public、protected 和 private 等)。 继承:对现有类的一种复用机制。一个类如果继承现有的类,则这个类将拥有被继承类的所有非私有特性(属性和操作)。这里指的继承包含:类的继承和接口的实现。 多态:多态是在继承的基础上实现的。多态的三个要素:继承、重写和父类引用指向子类对象。父类引用指向不同的子类对象时,调用相同的方法,呈现出不同的行为,就是类多态特性。多态可以分成编译时多态和运行时多态。 抽象、封装、继承和多态是面向对象的基础。  7. & 与 && 的区别? & 运算符有两种用法:(1) 按位与,(2) 逻辑与。&& 运算符是短路与运算。 逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是 true 整个表达式的值才是 true。&& 之所以称为短路运算是因为,如果 && 左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。 很多时候我们可能都需要用 && 而不是 &,例如在验证用户登录时判定用户名不是 null 而且不是空字符串,应当写为: 1username != null && !username.equals(“”) 二者的顺序不能交换,更不能用 & 运算符,因为第一个条件如果不成立,根本不能进行字符串的 equals 比较,否则会产生 NullPointerException 异常。 注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。 8. 什么是值传递和引用传递? 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身。一般认为,Java 内的传递都是值传递,Java 中实例对象的传递是引用传递。 9. 是否可以在 static 环境中访问非 static 变量? static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。 10. Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。 11. Java 支持多继承么?  Java 中类不支持多继承,只支持单继承(即一个类只有一个父类)。 但是 Java 中的接口支持多继承,即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)。  12. Java 中,什么是构造方法?什么是构造方法重载?什么是复制构造方法? 当新对象被创建的时候,构造方法会被调用。每一个类都有构造方法。在程序员没有给类提供构造方法的情况下,Java 编译器会为这个类创建一个默认的构造方法。 Java 中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法。每一个构造方法必须有它自己唯一的参数列表。  Java 不支持像 C++ 中那样的复制构造方法,这个不同点是因为如果你不自己写构造方法的情况下,Java 不会创建默认的复制构造方法。 13. 接口和抽象类的区别是什么? 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。  Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于: 接口中所有的方法隐含的都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法。  类可以实现很多个接口,但是只能继承一个抽象类。类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。  抽象类可以在不提供接口方法实现的情况下实现接口。 Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private,protected 或者是 public。  接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。也可以参考 JDK8 中抽象类和接口的区别。 14. 用最有效率的方法计算 2 乘以 8? 2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。 15. 手写单例模式(饿汉和懒汉模式)和工厂模式? 饿汉模式 //饿汉式单例类.在类初始化时,已经自行实例化  public class Singleton1 {  //私有的默认构造子  private Singleton1() {}  //已经自行实例化  private static final Singleton1 single = new Singleton1();  //静态工厂方法  public static Singleton1 getInstance() {  return single;  }  } 懒汉模式 //懒汉式单例类.在第一次调用的时候实例化  public class Singleton2 {  //私有的默认构造子  private Singleton2() {}  //注意,这里没有final  private static Singleton2 single=null;  //静态工厂方法  public synchronized static Singleton2 getInstance() {  if (single == null) {  single = new Singleton2();  }  return single;  }  } 工厂模式,也可以参考之前的设计模式中的工厂模式,文末有链接。 interface IFactory{  public IProduct createProduct(); } Class Factory implements IFactory{  public IProduct createProduct() {  return new Product(); } }  Public class client{  Public Static void main (String [] args){ IFactory factory=new Factory();  IProduct product=factory.createProduct();  product.ProductMethod(); } } 16. String和StringBuilder、StringBuffer的区别? Java 平台提供了两种类型的字符串:String 和 StringBuffer/StringBuilder,它们可以储存和操作字符串。 其中 String 是只读字符串,也就意味着  String 引用的字符串内容是不能被改变的。 而 StringBuffer/StringBuilder 类表示的字符串对象可以直接进行修改。StringBuilder 是 Java 5 中引入的,它和 StringBuffer 的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被 synchronized 修饰,因此它的效率也比 StringBuffer 要高。 17. Java 集合框架有哪些?说出一些集合框架的优点? 每种编程语言中都有集合,最初的 Java 版本包含几种集合类:Vector、Stack、HashTable 和 Array。随着集合的广泛使用,Java1.2 提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java 已经经历了很久。它还包括在 Java 并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:  (1)使用核心集合类降低开发成本,而非实现我们自己的集合类。  (2)随着使用经过严格测试的集合框架类,代码质量会得到提高。  (3)通过使用 JDK 附带的集合类,可以降低代码维护成本。  (4)复用性和可操作性。 18. 集合框架中的泛型有什么优点? Java1.5 引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型。因此,如果你添加其它类型的任何元素,它会在编译时报错。这避免了在运行时出现 ClassCastException,因为你将会在编译时得到报错信息。泛型也使得代码整洁,我们不需要使用显式转换和 instanceOf 操作符。它也给运行时带来好处,因为不会产生类型检查的字节码指令。 19. Java 集合框架的基础接口有哪些? Collection 为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java 平台不提供这个接口任何直接的实现。 Set 是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。  List 是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List 更像长度动态变换的数组。  Map 是一个将 key 映射到 value 的对象。一个 Map 不能包含重复的 key,每个 key 最多只能映射一个 value。  一些其它的接口有 Queue、Dequeue、SortedSet、SortedMap 和 ListIterator。 20. 为何 Collection 不从 Cloneable 和 Serializable 接口继承?  Collection 接口指定一组对象,对象即为它的元素。如何维护这些元素由 Collection 的具体实现决定。例如,一些如 List 的 Collection 实现允许重复的元素,而其它的如 Set 就不允许。很多 Collection 实现有一个公有的 clone 方法。然而,把它放到集合的所有实现中也是没有意义的。这是因为 Collection 是一个抽象表现,重要的是实现。  当与具体实现打交道的时候,克隆或序列化的语义和含义才发挥作用。所以,具体实现应该决定如何对它进行克隆或序列化,或它是否可以被克隆或序列化。在所有的实现中授权克隆和序列化,最终导致更少的灵活性和更多的限制,特定的实现应该决定它是否可以被克隆和序列化。 21. 为何 Map 接口不继承 Collection 接口? 尽管 Map 接口和它的实现也是集合框架的一部分,但 Map 不是集合,集合也不是 Map。因此,Map 继承 Collection 毫无意义,反之亦然。 如果 Map 继承 Collection 接口,那么元素去哪儿?Map 包含key-value 对,它提供抽取 key 或 value 列表集合的方法,但是它不适合“一组对象”规范。 22. 什么是迭代器(Iterator)? Iterator 接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的迭代方法。迭代器可以在迭代的过程中删除底层集合的元素,但是不可以直接调用集合的 remove(Object Obj) 删除,可以通过迭代器的 remove() 方法删除。 23. Iterator 和 ListIterator 的区别是什么? Iterator 可用来遍历 Set 和 List 集合,但是 ListIterator 只能用来遍历 List。  Iterator 对集合只能是前向遍历,ListIterator 既可以前向也可以后向。  ListIterator 实现了 Iterator 接口,并包含其他的功能。比如:增加元素,替换元素,获取前一个和后一个元素的索引等等。 24. Java 中的 HashMap 的工作原理是什么? 我们知道在 Java 中最常用的两种结构是数组和模拟指针(引用),几乎所有的数据结构都可以利用这两种来组合实现,HashMap 也是如此。实际上 HashMap 是一个“链表散列”。 HashMap 是基于 hashing 的原理,我们使用 put(key, value) 存储对象到 HashMap 中,使用 get(key) 从 HashMap 中获取对象。当我们给 put() 方法传递键和值时,我们先对键调用 hashCode() 方法,返回的 hashCode 用于找到 bucket 位置来储存 Entry 对象。 25. 当两个对象的 hashcode 相同会发生什么? 因为 hashcode 相同,所以它们的 bucket 位置相同,“碰撞”会发生。因为 HashMap 使用链表存储对象,这个 Entry(包含有键值对的 Map.Entry 对象)会存储在链表中。 26. 如果两个键的 hashcode 相同,你如何获取值对象? 当我们调用 get() 方法,HashMap 会使用键对象的 hashcode 找到 bucket 位置,然后会调用 keys.equals() 方法去找到链表中正确的节点,最终找到要找的值对象。 27. hashCode() 和 equals() 方法有何重要性? HashMap 使用 Key 对象的 hashCode() 和 equals() 方法去决定 key-value 对的索引。当我们试着从 HashMap 中获取值的时候,这些方法也会被用到。 如果这些方法没有被正确地实现,在这种情况下,两个不同 Key 也许会产生相同的 hashCode() 和 equals() 输出,HashMap 将会认为它们是相同的,然后覆盖它们,而非把它们存储到不同的地方。 同样的,所有不允许存储重复数据的集合类都使用 hashCode() 和 equals() 去查找重复,所以正确实现它们非常重要。equals() 和 hashCode() 的实现应该遵循以下规则:  如果 o1.equals(o2),那么o1.hashCode() == o2.hashCode()总是为true的。  如果 o1.hashCode() == o2.hashCode(),并不意味着o1.equals(o2)会为true。  28. HashMap 和 HashTable 有什么区别? 1. HashMap 是非线程安全的,HashTable 是线程安全的。  2. HashMap 的键和值都允许有 null 值存在,而 HashTable 则不行。  3. 因为线程安全的问题,HashMap 效率比 HashTable 的要高。  4. HashTable 是同步的,而 HashMap 不是。因此,HashMap 更适合于单线程环境,而 HashTable 适合于多线程环境。  一般现在不建议用 HashTable,一是 HashTable 是遗留类,内部实现很多没优化和冗余。二是即使在多线程环境下,现在也有同步的 ConcurrentHashMap 替代,没有必要因为是多线程而用 HashTable。 29. 如何决定选用 HashMap 还是 TreeMap? 对于在 Map 中插入、删除和定位元素这类操作,HashMap 是最好的选择。然而,假如你需要对一个有序的 key 集合进行遍历, TreeMap 是更好的选择。基于你的 collection 的大小,也许向 HashMap 中添加元素会更快,将 map 换为 TreeMap 进行有序 key 的遍历。 30. ArrayList 和 Vector 有何异同点? ArrayList 和 Vector 在很多时候都很类似。  (1)两者都是基于索引的,内部由一个数组支持。  (2)两者维护插入的顺序,我们可以根据插入顺序来获取元素。  (3)ArrayList 和 Vector 的迭代器实现都是 fail-fast 的。  (4)ArrayList 和 Vector 两者允许 null 值,也可以使用索引值对元素进行随机访问。   以下是ArrayList和Vector的不同点。  (1)Vector 是同步的,而 ArrayList 不是。然而,如果你寻求在迭代的时候对列表进行改变,你应该使用 CopyOnWriteArrayList。  (2)ArrayList 比 Vector 快,它因为有同步,不会过载。  (3)ArrayList 更加通用,因为我们可以使用 Collections 工具类轻易地获取同步列表和只读列表。 31. Array 和 ArrayList 有何区别?什么时候更适合用 Array? Array 可以容纳基本类型和对象,而 ArrayList 只能容纳对象。 Array 是指定大小的,而 ArrayList 大小是固定的。Array 没有提供 ArrayList 那么多功能,比如 addAll、removeAll 和 iterator 等。尽管 ArrayList 明显是更好的选择,但也有些时候 Array 比较好用,比如下面的三种情况。 (1)如果列表的大小已经指定,大部分情况下是存储和遍历它们。  (2)对于遍历基本数据类型,尽管 Collections 使用自动装箱来减轻编码任务,在指定大小的基本类型的列表上工作也会变得很慢。  (3)如果你要使用多维数组,使用 [][] 比 List。  32. 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么? 快速失败:当你在迭代一个集合的时候,如果有另一个线程正在修改你正在访问的那个集合时,就会抛出一个 ConcurrentModification 异常。 在 java.util 包下的都是快速失败。  安全失败:你在迭代的时候会去底层集合做一个拷贝,所以你在修改上层集合的时候是不会受影响的,不会抛出 ConcurrentModification 异常。在java.util.concurrent 包下的全是安全失败的。 java入职,java基础面试题,java面试 编程语言 IT培训网 编程网 2018-09-02 21:01 这才是教育的最大死敌,然而几乎每个家长都在做! http://www.epx365.cn/qgtk/201843197.html 石水源好前程翻转课堂 我曾经的董事长是当地知名企业家、教育家,七十岁老太太虽然退居二线、和科学家儿子定居美国,可干了一辈子革命事业的她,退休后一天也没闲着、仍然坚守在热爱的岗位上发挥余热。 这次回国探亲时,当地县政府特意邀请老太太给当地数千名师生、家长进行一场免费的教育报 石水源好前程翻转课堂   我曾经的董事长是当地知名企业家、教育家,七十岁老太太虽然退居二线、和科学家儿子定居美国,可干了一辈子“革命事业”的她,退休后一天也没闲着、仍然坚守在热爱的岗位上发挥余热。 这次回国探亲时,当地县政府特意邀请老太太给当地数千名师生、家长进行一场免费的教育报告会。被亲切称呼刘妈妈的她十五年前就是“中国首届十大杰出母亲”,在育儿的方法上不仅有很多成功经验,加上近些年来在国外定居,受先进育儿思想洗礼和不断学习,很多育儿观更加鲜明。   会上她一针见血的指出了很多家庭对娃教育的大忌,她呼吁千万家长和教育界朋友们,一定要克制身上这个毛病,为下一代多传递正能量。 她说,这世上有一种东西永远是亏本的,那就是发脾气。   这世上有一种东西永远是亏本的,那就是发脾气 教育孩子也是如此,发脾气是教育的最大死敌,脾气越大,教育效果越差。 因为: 1、一分脾气、七分害。教育界的专家指出:贫穷不会带来教育的失败,但精神的虐待一定会制造一个问题儿童。让孩子生活在精神的虐待中,就如同给她穿着枷锁走路。很多家长把孩子的任性、不听话、顽皮捣蛋归咎在孩子身上,其实每一个问题儿童的背后,必有一个问题父母,这是铁的规律。再有灵性的孩子,如果遭受了精神虐待后,都会走向消极、悲观的世界,这是不可避免的。 2、坏脾气会遗传。什么样的环境,造就什么样的娃。爱脾气的父母,教育出的娃容易叛逆、多疑敏感、心里脆弱又爱抬杠。同时孩子长大后,脾气也很暴躁、为人苛刻。严重的很可能发生性变态、神经病倾向,轮到他们为人父母时,也会继承祖辈的坏脾气,出现“城门失火、殃及池鱼”,而孩子就是我们坏脾气的重灾区。正如蒙台梭利言:每一种性格缺陷都是由童年的不幸造成的。 3、坏脾气是亲子关系最强的杀伤武器。脾气不好,让孩子不敢亲近、不敢跟你敞开心扉,时刻处在担心受怕中,没安全感,成长中会有各种各样问题。有很多这样的例子:父母脾气越大,孩子越顽劣;父母越气急败坏,孩子越难管;父母脾气升级,孩子的坏行为也跟着渐长。我记得邻家有个小男孩,非常淘气难管,后来父亲居然用绳子把他绑起来打,可这孩子并没有被打服、变乖,且仅到三年级,儿子就彻底不上学了。 父母的思想教育陷入一种奇怪的惯性,他认为吼孩子没用,就得骂,骂的“力度”不够,开始打,后来又奉行“棍棒出孝子”,实际上他不知道自己方向搞反了,力度越大情况越糟。大人应多给孩子耐心、宽容和信任空间,虽然看着孩子犯错而不马上纠正,是很考验父母的承受力,但我们要相信孩子有自我纠错能力,人的成长是一个不断自我反省、自我纠错的过程,我们应尊重孩子享受这个过程的权利。 心态调整了,脾气也会小了。   改变坏脾气的方法有很多 比如: 1、把发脾气换做沟通 随便发脾气就像到处扔垃圾,是非常不好的行为。孩子不应该成为我们负面情绪的垃圾桶,与其发火动怒,不如好好沟通。比如看到孩子作业没写完,不要一上来就咋呼,火冒三丈,你怎么还没写,天天就知道玩。搞的孩子心里不痛快,一些坏的习惯丝毫没有因你的发火而改观。 你完全可以这样说,你不按时完成作业,我真的很难过……如果你能在半小时内把作业写完,我会觉得很开心……这样做的好处是,既能达到目的,又能把伤害降到最低,表面看上去轻描淡写,却能四两拨千斤。教育中的“点到为止”,比大发雷霆效果好的多。教育的力量是一个累加过程,一次这样做,未必能看到效果,长期坚持就会看到惊人变化。父母改善自己的脾气,看上去是为孩子,实际上最终受益的还是自己。当我们学会与自己的情绪友好相处时,人生的幸福和快乐就会触手可及。 2、静心思考,以写宣泄 一味的压抑、克制脾气不是最好的办法,就像把霉变的东西放在沙发下,虽看不到,但却被难闻的味道困扰着。曾经做企业的时候,老太太处理自己脾气时有一个成功经验,就是凡遇到不顺心的事,就在办公室对着电脑或笔记本,把心里的想法敲出来。等把所有的怒气、怨气、坏脾气一股脑写出来后,心中也平息了许多。 这不仅是疼惜自己的一个举动,也是高效率处理情绪的实用方法,能够让我们的思想腾出更多“内存空间”去干有意义事,效果非常好。 3、不把坏情绪传递给孩子,让爱人做你的心理医生 我有个同学是公认的好脾气,做了妈妈后也从不发火。她说之所以从不发火,实际上是因为她有一个心理医生的爱人。 她说不管在外遇到什么事,被老板骂也好、被朋友误解也罢,只要回家跟爱人倾诉一番,心情就会恢复平静,从不担心会把负面情绪带到孩子面前。 比如, 当她气急败坏的跟爱人说某人的“坏”时,爱人不必要跟着煽风点火、献计献策,只要静静的听,跟着她的情绪说“恩 ,是的,你肯定气坏了!你真是太生气了……”只要尊重她的感受,就可让她的情绪得到宣泄。然后再平静下来理清思路,找到解决的办法,这在心理学上叫“共情”。 当对方气的发疯、发狂时,只要给她一个有力的拥抱,并用心倾听、肯定她的感受,就能够给对方带去前所未有的被理解之感,让对方永远珍惜你这位生活中的“知己”。 对于孩子也是如此。孩子做错了事、受了委屈后,不需要指责、埋怨和打骂,而是被理解、关爱和倾听,当孩子把内心的垃圾倒出来后,才能真正装得进你的良言和教诲。不管用什么样的方法控制脾气,但要有智慧、心中装满爱,就能达到很好的效果。 没有脾气的胸腔,才能装满爱的教育   一、让孩子的脾气打在空气中 父母心中无怒火,孩子脾气就发不起来。 记得有次孩子火急火燎的要吃菜,跟她说等爸爸洗好澡一起吃。可孩子不听,不但用手去抓菜,还往菜盘里喷口水、吐气,正好被我看到,用眼睛瞪她、她也反过来瞪我。她的举动令我非常愤怒,想吼她不听话、没教养,可我忍住了没发火,继续若无其事的打扫厨房台面。 接下来孩子可能知道错了。吃饭时,我对她刚才的举动只字不提,她反而比往常任何时候吃饭都要乖,不乱走动也不问这问那,吃完饭后还知道把碗放回洗漱池了。看到孩子的反常表现,我突然感觉到克制脾气是对的。在如此有挑战意义的事件上,能做到不发脾气,很佩服自己。如果我当时忍不住,对着孩子的行为大声呵斥或打骂,后果肯定不堪设想。 脾气的对持就像拔河比赛,对方的铿锵有力是以你的坚持不懈为前提。如果想让对方放弃,最好的办法是自己先放手——父母心中无怒火,孩子的脾气就发不起来。父母小小的改变,对孩子未来影响巨大。人的脾气都有互动性,你投射出去的脾气往往都会加倍反弹回来,所以,我们要让好脾气不断和我们相逢,不让坏脾气露脸。   二、与其发脾气,不如传递正能量 和孩子较量中只要你动怒、发脾气,就败了。父母若不和孩子发脾气、逞强,遇事有定力、会变通,孩子学到的也是这些智慧。 一次单位临时开会,我把孩子送到邻居照看。当看到邻居阿姨对着自己孩子的淘气,大吵大吼批评责骂,仍然不起作用时,我家六岁孩子对阿姨说,你不应该那样无缘无故的批评他,他会很难受的,你应该跟他一起想办法呀。邻居忍不住的跟我说,你这孩子真懂事,不仅嘴巴会讲,且会出主意、善动脑筋,比我家孩子小两三岁,却比我家孩子懂事。后来我家孩子又跟阿姨说,我妈妈从来都不对我发脾气。邻居又问我是不是真的。回想起来,我确实很少对孩子发火,即使她犯错、顽劣淘气,我多数情况下都忍着不怒,然后跟她一起动脑筋、想办法。 正因如此,孩子也学会了用同样的方法去解决问题。幼儿园里,一个叫蕾的小朋友把马桶盖子搞歪了,那个叫裙的同学,一看到不分青红皂白的、偏偏说是我家孩子搞坏的。放学后,孩子跟我说,她今天心情特别不好,她没有搞坏马桶,裙同学偏偏说是她弄坏的,所以她很生气、很不开心。 当时我在想,若是换做我们大人之间发生这样被冤枉的事情,是不是很想上前,对着那个冤枉我们的人揍一顿、恨不得打两下才解气。可是孩子却接着跟我说她是这样解决的,她对着裙同学说:你以后可不能这样不明不白的冤枉人了,被你冤枉了我很难过,否则你就没有朋友……这个事情让我看到,孩子遇到事情不是通过动怒、发脾气来解决,而是拥有了解决问题的意识和想法,我很欣慰。 如果你只会发火、发脾气去对待,孩子从你这里能学会什么呢?除了发火、实施暴力外,没有任何受益。 小区里有个孩子,看见别人都玩滑板车,自己也哭着嚷着要骑。结果哄不好,妈妈对着孩子脸劈头盖脸打,孩子倔强的坐在地上死哭不起来,家长火气也更大了。周围邻居纷纷说孩子太娇惯,不该任由孩子这样。可我却深深感到悲哀:一个四五岁的孩子懂什么?为什么父母不能耐着性子、停止发火,跟孩子好好讲,为什么不能跟孩子承认,你这样缠着硬要别人东西的行为是不好的,妈妈心里很难过?妈妈对你今天的表现很失望,我很伤心? 蹲下来,和孩子好好沟通,事情就会截然不同。父母永远不要把发脾气、打骂作为管教孩子的选择,这样你的注意力才会转向寻找解决问题的办法。   三、没有脾气的胸腔,才能装满爱的教育 记得有次因喊孩子吃饭,她没理我。而后又把画好的画展示给我看,我故作生气状扭头没看,她却劈脸给我一巴掌。虽然不疼,但这个行为让我震惊。当时我双目圆瞪,气的想把她打回去,可是我忍住了。而孩子却忍不住了,看我没有一点火星味,她三番两次跑到我跟前道歉说妈妈对不起,她没有过来吃饭是不对的,那是因为她的画还没有画完,她是想画一幅漂亮的画送给妈妈作为礼物呀。是的,如果我选择对孩子发脾气、打骂的话,就永远也不会知道孩子心里的想法和满满的爱,给母女交流设置严重障碍。 有时候孩子叛逆、不听话甚至顶嘴,要看到本质原因。从另一个角度看说明孩子有独立思考的能力和面对问题的勇气,总比像个木头人一样,没主见和灵魂,唯唯诺诺听命大人要好。成绩不好,但她懂事,对人热情善良、受欢迎,这也是好现象。被老板骂了,要庆幸还有工作;食堂菜烧的不好,要庆幸还有饭吃;钱包丢了,要庆幸银行卡还在;轻轻点击鼠标,世界就在眼前……太多太多的恩惠在日常。心中只要充满爱和感恩,你就会得到更多的回报,为孩子营造和谐健康环境的同时,自己也备受滋润。没有脾气的胸腔才能传递正能量,心中满藏爱和感恩,才能使爱不断传递。 祝愿每一位父母都能拥有好脾气,每个家庭都有好氛围,每个孩子都有快乐童年、健康成长。   (石水源好前程翻转课堂转载整理.) 好前程翻转课堂 职业教育 郑州石水源教育 石水源教育 2018-09-01 17:15 好前程翻转课堂教你“五到”法简单有效学好化学 http://www.epx365.cn/qgtk/201843196.html 学习化学在刚进入高中的学生而言,却是是比较难得一个科目,相对于初中的化学高中的化学难得并不是一点或者是半点,这就需要有恒心才能行的,那么除了恒心还需要什么方法呢,听听 好前程翻转课堂 的老师怎么说。 先看书复习再做作业,在做作业之前,要先复习课本和课堂笔记,把所学知识理解 学习化学在刚进入高中的学生而言,却是是比较难得一个科目,相对于初中的化学高中的化学难得并不是一点或者是半点,这就需要有恒心才能行的,那么除了恒心还需要什么方法呢,听听好前程翻转课堂的老师怎么说。   先看书复习再做作业,在做作业之前,要先复习课本和课堂笔记,把所学知识理解之后再做作业,切忌边做作业边翻书,否则达不到巩固练习的目的,当然,如果仍存在不会的题目,可以在整体作业过一遍后再看书本或询问教师和同学。   化学是以实验为基础的一门学科,因此,在复习时,要十分注意这一特点,对每一项实验,必须注意它的变化、现象,仪器装置、操作手续,从现象到本质去认识它、理解它,同时,在复习时必须对所做过的实验已观察到的变化,从现象到本质地进行回忆、复习,并且还要注意实验装置及操作手续。 就是听课要全神贯注,全神贯注就是全身心地投入课堂学习,耳到、眼到、心到、口到、手到,耳到:就是专心听讲,听老师如何讲解,如何分析,如何归纳总结,另外,还要听同学们的答问,看是否对自己有所启发。   好前程翻转课堂   眼到:就是在听讲的同时看课本和板书,看老师讲课的表情,手势和演示实验的动作、及实验现象,生动而深刻的接受老师所要表达的思想,心到:就是用心思考,跟上老师的思路,分析老师是如何抓住重点,解决疑难的。 口到:就是在老师的指导下,主动回答问题或参加讨论,手到:就是在听、看、想、说的基础上划出课文的重点,记下讲课的要点以及自己的感受或有创新思维的见解,若能做到上述五到,精力便会高度集中,课堂所学的一切重要内容便会在自己头脑中留下深刻的印象。   最后好前程翻转课堂的老师提醒各位学生,在学习的时候必须要知道怎么进行学习,并不是漫无目的的进行学习,还是需要知道为了什么而学习或者是学习为了什么,只有这样才会对学习有坚持的信心,才会有好好学习的恒心,这样成功后会发现很值得。 好前程翻转课堂 职业教育 郑州石水源教育 石水源教育 2018-09-01 15:28 参加东莞达内UI培训,站在职场新高度? http://www.epx365.cn/qgtk/201843181.html UI设计师也成为职场当中的香饽饽。大学辍学的科科同学,正好看中了UI设计的前景,参加了东莞达内UI设计培训,如今获10k高薪。 问:那么是什么原因促使你参加达内UI培训呢? 科科:由于家庭突发变故的因素,我读完大二就直接出来找工作了,现在我的这个学历对我来说是一个无法改变的伤痛。最令我 UI设计师也成为职场当中的“香饽饽”。大学辍学的科科同学,正好看中了UI设计的前景,参加了东莞达内UI设计培训,如今获10k高薪。 问:那么是什么原因促使你参加达内UI培训呢? 科科:由于家庭突发变故的因素,我读完大二就直接出来找工作了,现在我的这个学历对我来说是一个无法改变的伤痛。最令我难为情的事是找工作填写简历的时候,基本都是空白,学历、特长、经验无一占据,投递职位的时候也是犹犹豫。最后,一家公司的面试电话都没有等到。     于是,我一直在寻找逃离这种生活的机会和方式,偶然一次朋友聚会,听他们说参加IT培训可以学到一技之长,学成之后相当于一个有两年工作经验的大学生,工作薪资很可观。于是我决定尝试一下,成败在此一举 。   问:市面上的培训机构有很多,为什么会在众多机构中选择达内呢?    科科:决定参加培训之后就要考虑去哪培训,在选择培训机构方面我绞尽脑汁,社会上五花八门的培训广告使我陷入困惑和迷茫,但我始终明确的是,我需要找一家更侧重于教实际操作课程的机构,这才是以后工作中能够用到的技能。 本着这个信条,我用了大量时间对市面上的培训机构进行对比,发现达内的课程都是根据企业的招聘需求设计的,而且课程始终以实际案例贯穿,最后还会有实战项目,让学员真刀真枪自己做。 于是在综合考虑下我选择了达内教育机构,在培训方向上,我听从了老师的建议,选择了UI设计。心怀感恩,特别感谢我成功路上的所有帮助我的好心人。 http://www.epx365.cn/uploads/allimg/1808/29_0S11U6211393.jpg 东莞达内,UI培训 职业教育 东莞达内 东莞达内 2018-08-31 18:50 西安达内分析初中生学什么职业有前途 http://www.epx365.cn/qgtk/201843180.html 初中毕业生学什么技术好?什么职业比较有前途?初中生没有丰富的人生阅历,也没有高学历,正是花样年华的时候,怎样才能在这个竞争激烈的社会上立足呢?现在你可以不读大学、可以高考落榜甚至可以初中辍学,但是,一定要有足够的能力立足社会与职场,所以,学习一门技能很重要。 初中毕业生学什么技术好?什么职业比较有前途?初中生没有丰富的人生阅历,也没有高学历,正是花样年华的时候,怎样才能在这个竞争激烈的社会上立足呢?现在你可以不读大学、可以高考落榜甚至可以初中辍学,但是,一定要有足够的能力立足社会与职场,所以,学习一门技能很重要。 如今,随着互联网的迅猛发展,互联网在人们的生活中成为了必需品。据调查统计IT行业也是许多初中毕业生的首选。初中生想学门技术,莫过于来天津西安达内培训职业学校,选学一门跟计算机相关的专业,掌握一门前景好又热门的技术,毕业后好就业,就业薪资比专本毕业生还要高。 1、在西安达内培训职业学校可以学到哪些技能呢? 学校开设“零起点就业班”、“高薪就业班”、“周末班”、“名企定向班”,想学什么,就选择哪门专业,如软件开发Java、.NET、UI设计等专业都是初中生选择的热门专业。 2、在西安达内培训职业学校学IT有什么优势? 优势一:学IT,就业前景好。随着信息产业的迅猛发展,IT行业人才需求量也在逐年扩大。 优势二:花费时间少,成长快。学习时间比较灵活,学校也会定期安排学员到企业实习,真实地感受IT企业的工作氛围,积累大量的项目实战经验,成为自己以后就业必胜的筹码。 优势三:未来提升空间大。学校培养IT行业紧缺型人才,这些IT人才就业前景好,未来提升空间大。拥有比大学毕业生更优的竞争能力。天津西安达内培训职业学校不仅设有就业指导中心,还与数千家企业签订了就业协议,确保毕业学生顺利就业。 以上就是为大家介绍的关于初中毕业生学什么技术好,可以咨询我们的在线客服老师了解更多。 西安达内,初中生学什么有前途 职业教育 IT培训网 职业教育网 2018-08-31 17:42 大学生为何难就业 西安达内教育讲述缘由 http://www.epx365.cn/qgtk/201843179.html 大学选择摆地摊,到底为何找工作如此难??针对这样的问题,老师认为,不管在那个时代,在那个行业,从事哪个专业,都需要的是经验,而不是眼高手低,或者只有想法,没有行动。现在的企业单位,的都是效益,如果你的存在不能给企业带来效益,无疑是增加了企业的成本,觉得一个企业会养闲人吗 为什么现在的大学生找工作越来越难了? 大学选择摆地摊,到底为何找工作如此难??针对这样的问题,老师认为,不管在那个时代,在那个行业,从事哪个专业,都需要的是经验,而不是眼高手低,或者只有想法,没有行动。现在的企业单位,的都是效益,如果你的存在不能给企业带来效益,无疑是增加了企业的成本,觉得一个企业会养闲人吗?因此,大学生的在求职方面缺少的是社会经历,实战经验。 实战经验并非要下基层,想起积累经验,想必大家都会认为成下基层,锻炼1—2年,等那时候想要再追求职场精彩,已经输在了起跑线上。西安达内培训计算机培训机构,是集中培养大学生实战经验的摇篮,旨在最短的时间内,通过中心实战老师的核心指导,让学生在实战项目方面有一个很大的提升,为高起点求职做准备。 大学毕业生求职未果,靠摆地摊创业也不足为怪事一桩,从高等学府——清华大学毕业生卖猪肉到大学生卖臭豆腐、卖包子等个体经营户的创业之举。并不是说大学生毕业了非得要学以致用,但是这样的高等教育暴露出的异端,让人疑惑重重。 现在的大学生临到毕业,只是空有一张文凭而无真才实学,而现在的大学生,随着大学的扩招,高等教育已经从“精英教育”逐渐成为“普及教育”,十个人里面可能就有九个人可以上大学,加之专业设置的不合理,师资力量滞后,许多学生毕业之际都不知道自己想要从事什么样的工作。 大学生就业难,西安达内教育 职业教育 IT培训网 职业教育网 2018-08-31 17:38