<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Java基础 on withdong02</title>
    <link>https://blog.withdong02.top/categories/java%E5%9F%BA%E7%A1%80/</link>
    <description>Recent content in Java基础 on withdong02</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Thu, 10 Sep 2026 19:55:57 +0000</lastBuildDate>
    <atom:link href="https://blog.withdong02.top/categories/java%E5%9F%BA%E7%A1%80/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>JUC-3</title>
      <link>https://blog.withdong02.top/posts/juc-3/</link>
      <pubDate>Thu, 10 Sep 2026 19:55:57 +0000</pubDate>
      <guid>https://blog.withdong02.top/posts/juc-3/</guid>
      <description>&lt;p&gt;上一篇讲了线程的状态和切换方法，还讲了 AQS 的关键概念。这一篇我打算学习 AQS 的常见实现、并发容器，还有阻塞队列和线程池。&lt;/p&gt;
&lt;h2 id=&#34;aqs-的常见实现&#34;&gt;AQS 的常见实现&lt;/h2&gt;
&lt;p&gt;上一篇提到 AQS 核心内容就是：state + 等待队列。接下来我会讲解 &lt;code&gt;ReentrantLock&lt;/code&gt;、&lt;code&gt;Semaphore&lt;/code&gt;、&lt;code&gt;CountDownLatch&lt;/code&gt; 等常见实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JUC-2</title>
      <link>https://blog.withdong02.top/posts/juc-2/</link>
      <pubDate>Fri, 04 Sep 2026 21:03:57 +0000</pubDate>
      <guid>https://blog.withdong02.top/posts/juc-2/</guid>
      <description>&lt;p&gt;上一篇的概念是真多，这一篇应该代码多，大头是 AQS。&lt;/p&gt;
&lt;h2 id=&#34;lock-接口&#34;&gt;Lock 接口&lt;/h2&gt;
&lt;p&gt;上一篇结尾讲到了 synchronized，但它由于设计上的原因，有几个无法满足灵活需求的特性：&lt;/p&gt;</description>
    </item>
    <item>
      <title>JUC-1</title>
      <link>https://blog.withdong02.top/posts/juc-1/</link>
      <pubDate>Thu, 03 Sep 2026 21:03:57 +0000</pubDate>
      <guid>https://blog.withdong02.top/posts/juc-1/</guid>
      <description>&lt;p&gt;之前没有集中学习过线程、锁、并发容器和线程池等，学习时间一直很散，希望能通过这两三天的学习使自己对 java 并发编程的理解进一步加深。&lt;/p&gt;
&lt;p&gt;我打算分三篇来记录，这是第一篇。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java泛型</title>
      <link>https://blog.withdong02.top/posts/java%E6%B3%9B%E5%9E%8B/</link>
      <pubDate>Tue, 14 Oct 2025 14:40:44 +0000</pubDate>
      <guid>https://blog.withdong02.top/posts/java%E6%B3%9B%E5%9E%8B/</guid>
      <description>&lt;h2 id=&#34;泛型定义&#34;&gt;泛型定义&lt;/h2&gt;
&lt;p&gt;先看这样一个例子：&lt;/p&gt;

&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-Java&#34; data-lang=&#34;Java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArrayList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;aaa&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;bbb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;ccc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;		&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;ArrayList&lt;/code&gt;集合中可以加入任何类型的对象，我本意是用这个集合来存储字符串（因为&lt;code&gt;ArrayList&lt;/code&gt;默认存储的是&lt;code&gt;Object&lt;/code&gt;类型的对象，所以输出时需要强转 ），但我粗心的写错了&lt;code&gt;list.add(123)&lt;/code&gt;，在我运行后发现报错&lt;code&gt;java.lang.ClassCastException&lt;/code&gt;，显然报错原因就是输出时&lt;code&gt;Integer&lt;/code&gt;类型并不能强转为&lt;code&gt;String&lt;/code&gt;类型。那么如何避免这种情况呢，答案就是&lt;strong&gt;泛型&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java反射</title>
      <link>https://blog.withdong02.top/posts/java%E5%8F%8D%E5%B0%84/</link>
      <pubDate>Sun, 10 Aug 2025 15:06:57 +0000</pubDate>
      <guid>https://blog.withdong02.top/posts/java%E5%8F%8D%E5%B0%84/</guid>
      <description>&lt;h2 id=&#34;什么是反射&#34;&gt;什么是反射&lt;/h2&gt;
&lt;p&gt;在&lt;code&gt;spring&lt;/code&gt;项目中，只需要写个&lt;code&gt;@Service&lt;/code&gt;或者&lt;code&gt;@Component&lt;/code&gt;，然后在别的地方用&lt;code&gt;@Autowired&lt;/code&gt;声明一个接口变量，&lt;code&gt;Spring&lt;/code&gt;就能返回给我们一个实现了该接口的具体对象。这是如何实现的呢？它不可能在编译时就知道加了注解的类与类之间的关系，所以只能是在程序启动&lt;strong&gt;运行时&lt;/strong&gt;，Spring动态地发现了这些类，读取了他们的结构，然后创建对象。这背后的技术支撑又是什么？答案就是反射。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java序列化与反序列化</title>
      <link>https://blog.withdong02.top/posts/java%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/</link>
      <pubDate>Mon, 07 Jul 2025 21:03:57 +0000</pubDate>
      <guid>https://blog.withdong02.top/posts/java%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/</guid>
      <description>&lt;h2 id=&#34;什么是序列化和反序列化&#34;&gt;什么是序列化和反序列化&lt;/h2&gt;
&lt;p&gt;序列化，人话讲就是将对象转换为字节序列（也可以是JSON、XML等文本格式），反序列化就是把这个过程倒置。&lt;/p&gt;
&lt;p&gt;下面是维基百科关于序列化的介绍&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;序列化&lt;/strong&gt;（serialization）在&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8&#34;&gt;计算机科学&lt;/a&gt;的资料处理中，是指将&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E7%B5%90%E6%A7%8B&#34;&gt;数据结构&lt;/a&gt;或&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E7%89%A9%E4%BB%B6_%28%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%B8%29&#34;&gt;对象&lt;/a&gt;状态转换成可取用格式（例如存成文件，存于缓冲，或经由网络中发送），以留待后续在相同或另一台计算机环境中，能恢复原先状态的过程。依照序列化格式重新获取&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E4%BD%8D%E5%85%83%E7%BB%84&#34;&gt;字节&lt;/a&gt;的结果时，可以利用它来产生与原始对象相同语义的副本。对于许多对象，像是使用大量&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E5%8F%83%E7%85%A7&#34;&gt;引用&lt;/a&gt;的复杂对象，这种序列化重建的过程并不容易。面向对象中的对象序列化，并不概括之前原始对象所关系的函数。这种过程也称为对象编组（marshalling）。从一系列字节提取数据结构的反向操作，是&lt;strong&gt;反序列化&lt;/strong&gt;（也称为解编组、deserialization、unmarshalling）。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
