<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AMGHC的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AMGHC</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AMGHC]]></copyright><item><title><![CDATA[Java学习笔记：Lambda表达式（五）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143160010</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143160010</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:42:39 +0800</pubDate><description><![CDATA[Lambda强调的是“做什么”而不是“怎么做”，所以凡是可以根据上下文推导得知的信息，都可以省略。备注：掌握这些省略规则后，请对应地回顾本章开头的多线程案例。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：Lambda表达式（四）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159985</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159985</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:42:05 +0800</pubDate><description><![CDATA[/ 第二个参数为排序规则，即Comparator接口实例。对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序。new Person("马尔扎哈", 20) };接口的实例（使用了匿名内部类）代表了“按照年龄从小到大”的排序规则。new Person("古力娜扎", 19),new Person("迪丽热巴", 18),new Person("古力娜扎", 19),new Person("迪丽热巴", 18),// 本来年龄乱序的对象数组。接口实例来指定排序的规则。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：Lambda表达式（三）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159955</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159955</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:41:06 +0800</pubDate><description><![CDATA[另一方面，匿名内部类的语法——]]></description><category></category></item><item><title><![CDATA[Java学习笔记：Lambda表达式（二）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159905</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159905</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:39:44 +0800</pubDate><description><![CDATA[—这才是我们真正的目的。如果我们将关注点从“怎么做”回归到“做什么”的本质上，就会发现只要能够更好地达到目的，过程与形式其实并不重要。我们的真正目的是到达上海，而如何才能到达上海的形式并不重要，所以我们一直在探索有没有比高铁更好的方式——搭乘飞机。这段代码和刚才的执行效果是完全一样的，可以在1.8或更高的编译级别下通过。从代码的语义中可以看出：我们启动了一个线程，而线程任务的内容以一种更加简洁的形式被指定。不再有“不得不创建接口对象”的束缚，不再有“抽象方法覆盖重写”的负担，就是这么简单！]]></description><category></category></item><item><title><![CDATA[Java学习笔记：Lambda表达式（一）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159863</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159863</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:38:49 +0800</pubDate><description><![CDATA[在数学中，函数就是有输入量、输出量的一套计算方案，也就是“拿什么东西做什么事情”。相对而言，面向对象过分强调“必须通过对象的形式来做事情”，而函数式思想则尽量忽略面向对象的复杂语法——强调做什么，而不是以什么形式做。面向对象的思想:​ 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想:​ 只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：线程（五）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159746</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159746</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:35:46 +0800</pubDate><description><![CDATA[我们使用线程的时候就去创建一个线程，这样实现起来非常简便，但是就会有一个问题：如果并发的线程数量很多，并且每个线程都是执行一个时间很短的任务就结束了，这样频繁创建线程就会大大降低系统的效率，因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用，就是执行完一个任务，并不被销毁，而是可以继续执行其他的任务？在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：线程（四）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159648</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159648</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:34:16 +0800</pubDate><description><![CDATA[这是多个线程间的一种。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：线程（三）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159588</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159588</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:31:31 +0800</pubDate><description><![CDATA[当线程被创建并启动以后，它既不是一启动就进入了执行状态，也不是一直处于执行状态。在线程的生命周期中，有几种状态呢？在API中这个枚举中给出了六种线程状态：这里先列出各个线程状态发生的条件，下面将会对每种状态进行详细解析线程状态导致状态发生条件NEW（新建）线程刚被创建，但是并未启动。还没调用start方法。Runnable（可运行）线程可以在java虚拟机中运行的状态，可能正在运行自己代码，也可能没有，这取决于操作系统处理器。Blocked（锁阻塞）]]></description><category></category></item><item><title><![CDATA[Java学习笔记：线程（二）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159544</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159544</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:30:12 +0800</pubDate><description><![CDATA[如果有多个线程在同时运行，而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的，而且其他的变量的值也和预期的是一样的，就是线程安全的。System.out.println(name + "正在卖:" + ticket--);//                    System.out.println(name+"正在卖:"+ticket--);同步方法 :使用synchronized修饰的方法,就叫做同步方法,保证A线程执行该方法的时候,其他线程只能在方法外等着。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：线程（一）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143159403</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143159403</guid><author>AMGHC</author><pubDate>Tue, 22 Oct 2024 15:26:50 +0800</pubDate><description><![CDATA[同理,线程也是一样的，从宏观角度上理解线程是并行运行的，但是从微观角度上分析却是串行运行的，即一个线程一个线程的去运行，当系统只有一个CPU时，线程会以某种顺序执行多个线程，我们把这种情况称之为线程调度。在操作系统中，安装了多个程序，并发指的是在一段时间内宏观上有多个程序同时运行，这在单 CPU 系统中，每一时刻只能有一道程序执行，即微观上这些程序是分时的交替运行，只不过是给人的感觉是同时运行，那是因为分时交替运行的时间是非常短的。使用线程的内匿名内部类方式，可以方便的实现每个线程执行不同的线程任务操作。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（十）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116584</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116584</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:45:43 +0800</pubDate><description><![CDATA[模拟斗地主洗牌发牌按照斗地主的规则，完成洗牌发牌的动作。组装54张扑克牌将54张牌顺序打乱三个玩家参与游戏，三人交替摸牌，每人17张牌，最后三张留作底牌。查看三人各自手中的牌、底牌，并按照牌的大小排序(代码二）规则：手中扑克牌从大到小的摆放顺序：大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（九）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116544</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116544</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:44:48 +0800</pubDate><description><![CDATA[现实生活中，我们常会看到这样的一种集合：IP地址与主机名，身份证号与个人，系统用户名与系统用户对象等，这种一一对应的关系，就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象，即接口。Collection中的集合，元素是孤立存在的（理解为单身），向集合中存储元素采用一个个元素的方式存储。Map中的集合，元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成，通过键可以找对所对应的值。Collection中的集合称为单列集合，Map中的集合称为双列集合。需要注意的是，Map。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（八）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116513</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116513</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:43:31 +0800</pubDate><description><![CDATA[实现此接口的对象列表（和数组）可以通过Collections.sort（和Arrays.sort）进行自动排序，对象可以用作有序映射中的键或有序集合中的元素，无需指定比较器。String类实现了这个接口，并完成了比较规则的定义，但是这样就把这种规则写死了，那比如我想要字符串按照第一个字符降序排列，那么这样就要修改String的源代码，这是不可能的了，那么这个时候我们可以使用。说到排序了，简单的说就是两个对象之间比较大小，那么在JAVA中提供了两种比较实现的方式，一种是比较死板的采用。//以学生的年龄降序。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（七）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116477</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116477</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:42:18 +0800</pubDate><description><![CDATA[是Set接口的一个实现类，它所存储的元素是不可重复的，并且元素都是无序的(即存取顺序不一致)。底层的实现其实是一个支持，由于我们暂时还未学习，先做了解。HashSet是根据对象的哈希值来确定元素在集合中的存储位置，因此具有良好的存取和查找性能。hashCode与equals方法。我们先来使用一下Set集合存储，看下现象，再进行原理的讲解:Java12345678910111213141516//创建 Set集合//添加元素//遍历。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（六）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116451</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116451</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:41:37 +0800</pubDate><description><![CDATA[LinkedList是List的子类，List中的方法LinkedList都是可以使用，这里就不做详细介绍，我们只需要了解LinkedList的特有方法即可。在开发时，LinkedList集合也可以作为堆栈，队列的结构使用。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作，而LinkedList提供了大量首尾操作的方法。元素增删慢，查找快，由于日常开发中使用最多的功能为查询数据、遍历数据，所以。LinkedList是一个双向链表，那么双向链表是什么样子的呢，我们用个图了解下。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（五）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116401</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116401</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:40:50 +0800</pubDate><description><![CDATA[接口继承自Collection接口，是单列集合的一个重要分支，习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素，所有的元素是以一种线性方式进行存储的，在程序中可以通过索引来访问集合中的指定元素。另外，List集合还有一个特点就是元素有序，即元素的存入顺序和取出顺序一致。看完API，我们总结一下：它是一个元素存取有序的集合。例如，存元素的顺序是11、22、33。那么集合中，元素的存储就是按照11、22、33的顺序完成的）。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（四）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116353</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116353</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:39:15 +0800</pubDate><description><![CDATA[写程序这件事，和开车一样，经验可以起到很大作用，但如果你不知道底层是怎么工作的，就永远只能开车，既不会修车，也不能造车。每种数据结构有自己的优点和缺点，想想如果Google的数据用的是数组的存储，我们还能方便地查询到所需要的数据吗？例如，子弹压进弹夹，先压进去的子弹在下面，后压进去的子弹在上面，当开枪时，先弹出上面的子弹，然后才能弹出下面的子弹。当你用着java里面的容器类很爽的时候，你有没有想过，怎么ArrayList就像一个无限扩充的数组，也好像链表之类的。也就意味着，树的键值仍然是有序的。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（三）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116310</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116310</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:37:46 +0800</pubDate><description><![CDATA[在前面学习集合时，我们都知道集合中是可以存放任意对象的，只要把对象存储集合后，那么这时他们都会被提升成Object类型。当我们在取出每一个对象，并且进行相应的操作，这时必须采用类型转换。大家观察下面代码：Java1234567891011121314//由于集合没有做任何限定，任何类型都可以给其中存放//需要打印每个字符串的长度,就要把迭代出来的对象转成String类型程序在运行时发生了问题。为什么会发生类型转换异常呢？]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（二）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116274</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116274</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:36:42 +0800</pubDate><description><![CDATA[在调用Iterator的next方法之前，迭代器的索引位于第一个元素之前，不指向任何元素，当第一次调用迭代器的next方法后，迭代器的索引会向后移动一位，指向第一个元素并将该元素返回，当再次调用next方法时，迭代器的索引会指向第二个元素并将该元素返回，依此类推，直到hasNext方法返回false，表示到达了集合的末尾，终止对元素的遍历。它的内部原理其实是个Iterator迭代器，所以在遍历的过程中，不能对集合中的元素进行增删操作。通常只进行遍历元素，不要在遍历的过程中对集合元素进行增删操作。]]></description><category></category></item><item><title><![CDATA[Java学习笔记：集合类与常用数据结构的典型用法（一）]]></title><link>https://blog.youkuaiyun.com/AMGHC/article/details/143116014</link><guid>https://blog.youkuaiyun.com/AMGHC/article/details/143116014</guid><author>AMGHC</author><pubDate>Mon, 21 Oct 2024 16:31:03 +0800</pubDate><description><![CDATA[在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢?集合：集合是java中提供的一种容器，可以用来存储多个数据。集合和数组既然都是容器，它们有啥区别呢？数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素，可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候，使用集合进行存储。]]></description><category></category></item></channel></rss>