E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
java并发编程实战
Java并发编程实战
读书笔记二
第五章基础构建模块5.1同步容器类5.1.1同步容器类的问题如下,如果list含有10个元素,线程A调用getLast的同时线程B调用deleteLast,那么getLast可能会报ArrayIndexOutOfBoundsException改为如下方式能确保size和get一致Vector迭代也可能引发异常改进后的方式安全了,但降低了并发性5.1.3隐藏迭代器如下可能抛出ConcurrentMo
李父贵
·
2023-06-08 09:50
并发
java
《
Java并发编程实战
》课程笔记(十四)
原子类:无锁工具类的典范对于简单的原子性问题,还有一种无锁方案。JavaSDK并发包将这种无锁方案封装提炼之后,实现了一系列的原子类。无锁方案相对互斥锁方案,最大的好处就是性能。互斥锁方案为了保证互斥性,需要执行加锁、解锁操作,而加锁、解锁操作本身就消耗性能;同时拿不到锁的线程还会进入阻塞状态,进而触发线程切换,线程切换对性能的消耗也很大。相比之下,无锁方案则完全没有加锁、解锁的性能消耗,同时还能
fangzhan666
·
2023-06-08 09:47
Java
基础
java
笔记
jvm
《
Java并发编程实战
》课程笔记(十五)
Executor与线程池:如何创建正确的线程池?线程池是一种生产者-消费者模式线程是一个重量级的对象,应该避免频繁创建和销毁。那如何避免呢?应对方案就是线程池。目前业界线程池的设计,普遍采用的都是生产者-消费者模式。线程池的使用方是生产者,线程池本身是消费者。如何使用Java中的线程池Java并发包里提供的线程池,最核心的是ThreadPoolExecutor,它强调的是Executor,而不是一
fangzhan666
·
2023-06-08 09:17
Java
基础
java
笔记
jvm
《
Java并发编程实战
》课程笔记(十三)
并发容器同步容器及其注意事项Java中的容器主要可以分为四个大类,分别是List、Map、Set和Queue,但并不是所有的Java容器都是线程安全的。例如,我们常用的ArrayList、HashMap就不是线程安全的。如何将非线程安全的容器变成线程安全的容器?只要把非线程安全的容器封装在对象内部,然后控制好访问路径就可以了。组合操作需要注意竞态条件问题,即便每个操作都能保证原子性,也并不能保证组
fangzhan666
·
2023-06-08 09:16
Java
基础
java
笔记
jvm
Java并发编程实战
读书笔记
http://note.youdao.com/noteshare?id=3d02d4751355fbfcdda050442432d492&sub=B2D84548E3A74D2D8C0CC1AA2CEBF5F0点击打开链接1.进程:进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单
GUO_YANG_FAN
·
2023-06-08 09:13
java
读书笔记
并发编程实战
JAVA并发编程实战
读书笔记-1
其实并发编程可以总结为三个核心问题:分工、同步、互斥。所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共享资源。01|可见性、原子性和有序性问题:并发编程Bug的源头CPU、内存、I/O设备都在不断迭代,不断朝着更快的方向努力。但是,在这个快速发展的过程中,有一个核心矛盾一直存在,就是这三者的速度差异。CPU和内存的速度差异可以形象
ByLir
·
2023-06-08 09:42
1024程序员节
java
《
Java并发编程实战
》课程笔记(七)
Java线程Java线程的生命周期通用的线程生命周期通用的线程生命周期基本上可以用下图这个“五态模型”来描述。这五态分别是:初始状态、可运行状态、运行状态、休眠状态和终止状态。Java中线程的生命周期Java语言中线程共有六种状态,分别是:NEW(初始化状态)RUNNABLE(可运行/运行状态)BLOCKED(阻塞状态)WAITING(无时限等待)TIMED_WAITING(有时限等待)TERMI
fangzhan666
·
2023-06-08 09:10
Java
基础
java
笔记
jvm
Java并发编程实战
第五章笔记
第五章笔记5.1同步容器类同步容器类包括Vector和Hashtable,还有Collections.synchronizedXxx等。5.1.1同步容器类的问题同步线程类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作。迭代条件运算(检查在Map中是否存在键值K,如果没有,就加入二元组)在并发容器中,这些复合操作也是线程安全的,但当其他线程并发修改容器时,可能会出现意料之外的
逍遥白亦
·
2023-06-07 01:07
《
Java并发编程实战
》中关于allowCoreThreadTimeOut描述的个人见解
最近在看《
Java并发编程实战
》这本书,的确有很大的收获。
LouisLee变强大
·
2023-04-19 18:27
Java并发
ThreadPool
Java并发编程实战
(2)- Java内存模型
本文主要描述了在Java并发编程中非常重要的Java内存模型以及Happens-Before规则。概述对于Java并发程序问题存在的各种问题,主要有3个根源:由缓存引发的可见性问题由线程切换引发的原子性问题由编译优化引发的有序性问题为了解决可见性和有序性的问题,Java引入了Java内存模型,我们这篇文章来介绍一下它。可见性问题和有序性问题由缓存和编译优化造成的,那么最直接的方法就是禁用缓存和编译
技术修行者
·
2023-04-15 01:31
【
java并发编程实战
读书总结4】并发工具类
使用同步工具类闭锁在线程执行过程中用一把锁把门锁住,在开锁之前线程无法通过这道门,只有当满足了开锁的条件之后,锁才会自动打开。常用的闭锁工具类:CountDownLatch、CyclicBarrier、FutureTask。闭锁应用场景1.有a、b、c三个线程一起执行,可是a线程需要等待b、c线程任务执行完毕才继续往下执行。2.一个线程的某步计算依赖于其它线程的执行结果。用生活例子举例,小明约小张
powerjiajun
·
2023-04-13 14:27
Java基础+集合+多线程+JVM(三)
目录1Java基础2Java集合3Java多线程4JVM5常见问题汇总参考资料·《Java编程思想》·《JavaWeb技术内幕》·《
Java并发编程实战
》5常见问题汇总5.1项目打成jar包后,读取资源文件
小小千千
·
2023-04-11 06:16
Java并发编程实战
_《
Java并发编程实战
》PDF版本下载
一、目录介绍第1章简介1.1并发简史1.2线程的优势1.2.1发挥多处理器的强大能力1.2.2建模的简单性1.2.3异步事件的简化处理1.2.4响应更灵敏的用户界面1.3线程带来的风险1.3.1安全性问题1.3.2活跃性问题1.3.3性能问题1.4线程无处不在第一部分基础知识第2章线程安全性2.1什么是线程安全性2.2原子性2.2.1竞态条件2.2.2示例:延迟初始化中的竞态条件2.2.3复合操作
汤義喆
·
2023-04-06 00:35
Java并发编程实战
多线程——synchronized详解
当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的”——《
Java
Pluto372
·
2023-04-04 22:41
java基础
JVM
java
jvm
开发语言
Java面试技术体系整理
34337272/article/details/79805764https://www.nowcoder.com/discuss/5941面试网站及书籍:牛客网牛客网剑指offer深入理解JVM虚拟机编程之美,
JAVA
Mr_YDK
·
2023-04-04 08:45
随笔
面试题
《深入理解Java虚拟机》读书笔记----线程安全与锁优化
点击跳转线程安全
Java并发编程实战
的作者BrianGoetz为“线程安全”做出了一个比较恰当的定义:“当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步
JaneRoad
·
2023-04-03 08:41
编程语言
多线程
java
人工智能
并发编程
Java线程池设置多少线程合适
一、经典方法来自《
Java并发编程实战
》二、要点分析1.确定CPU的数量intN_CPUS=Runtime.getRuntime().availiableProce
FA-117
·
2023-04-02 13:17
Java基础
java
开发语言
jvm
《
Java并发编程实战
》第二章笔记
第一部分一个对象是否需要是线程安全的,取决于它是否被多个线程访问。这值得是在程序中访问对象的方式,而不是对象要实现的功能。当多个线程访问某个状态变量并且其中有一个线程执行写入操作时,必须采用同步机制来协同这些线程对变量的访问。如果当多个线程访问同一个可变的状态变量时没有使用适合的同步,那么程序就会出现错误。有3种方式可以修复这个问题:不在线程之间共享该状态变量将状态变量修改为不可变变量在访问状态变
熊熊要更努力
·
2023-04-01 20:49
【极客时间】《
Java并发编程实战
》学习笔记
目录:开篇词|你为什么需要学习并发编程?内容来源:开篇词|你为什么需要学习并发编程?-极客时间例如,Java里synchronized、wait()/notify()相关的知识很琐碎,看懂难,会用更难。但实际上synchronized、wait()、notify()不过是操作系统领域里管程模型的一种实现而已,JavaSDK并发包里的条件变量Condition也是管程里的概念,synchronize
Coder_Cui
·
2023-03-29 10:26
Java
java
极客时间《
Java并发编程实战
》笔记---并发工具类章节杂记
文章目录19|CountDownLatch和CyclicBarrier:如何让多线程步调一致?20|并发容器-选对容器,才是最关键的1.List----CopyOnWriteArrayList坑点:2.Map----ConcurrentHashMap和ConcurrentSkipListMap3.Set----CopyOnWriteArraySet和ConcurrentSkipListSet4.Q
Tattoo_Welkin
·
2023-03-29 09:55
JAVA并发编程
多线程
java
java并发修行之基础篇:线程安全
在阅读《
java并发编程实战
》的过程中觉得说的很好:在线程安全性的定义中,最核心的概念就是正
crrrrw
·
2023-03-27 04:26
优秀的Java程序员都在看哪些书?
目录一、立志存高远,笃行践初心二、经典书籍1、Java核心技术2、Java编程思想3、Java语言程序设计4、EffectiveJava中文版(原书第3版)5、
Java并发编程实战
6、Java虚拟机规范
哪 吒
·
2023-03-26 01:29
搬砖工逆袭Java架构师
java
【JDK1.8源码学习】ThreadLcoal
如果仅在单线程内访问数据,就不需要同步,这种技术称为线程封闭(threadconfinement)【摘自《
Java并发编程实战
》】实现线程封闭的三种手段:(1)Ad-hoc线程封闭:开发者自己实现线程封闭
实力派吃货
·
2023-03-25 10:35
Java并发编程实战
(5)- 线程生命周期
在这篇文章中,我们来聊一下线程的生命周期。概述线程是操作系统中的一个概念,在Java中,它是实现并发程序的主要手段。Java中的线程,本质上就是操作系统中的线程。操作系统中的线程有“生老病死”,专业说法就是生命周期,虽然不同的开发语言对于操作系统的线程做了不同的封装,但是对于线程生命周期来说,基本上是大同小异的。我们在学习线程的生命周期时,只要能理解生命周期中各个节点的状态转换机制就可以了。操作系
技术修行者
·
2023-03-23 02:13
【
java并发编程实战
4】偏向锁-轻量锁-重量锁的那点秘密(synchronize实现原理)
目录【SpringBoot2.0文章汇总目录,java多线程教程文章汇总长期更新系列】请多多支持在多线程并发编程中,synchronized一直都是元老级别的角色,人们都通常称呼它为重量锁,但是在jdk1.6版本之后,jdk就对synchronized做了大量的优化,这时候我们就不能称呼它为重量锁了,有的时候它也是很轻的,那么接下来我们就调调,synchronized是怎么被优化的,它跟偏向锁、轻
余空啊
·
2023-03-23 02:00
Java并发编程实战
学习(一)
任务执行任务:大多数服务器应用以用户的请求作为任务边界。串行化任务:所有任务依次执行,受到网络,IO,DB等的影响,任务阻塞耗时长,导致程序响应慢,吞吐量低。只有在任务少,少量用户量的情况下才适用。并行每个任务创建一个线程是不合理的。1.线程数量的上限有限制的,超出会影响系统稳定OOM异常:32位系统地址空间大约是3g,,预留空间136M,xss0.5M,数量1万左右,另外linux文件里面也规定
魔理沙
·
2023-03-21 06:05
[
Java并发编程实战
] Executor框架(含思维导图)
亦余心之所善兮,虽九死其犹未悔。———屈原《离骚》这句话的意思是“这些都是我内心之所珍爱,就是让我九死(或多死)还是不后悔。”这两句表现了诗人对美好理想执着追求的精神。PS:如果觉得本文有用的话,请帮忙点赞,留言评论支持一下哦,您的支持是我最大的动力!谢谢啦~这篇文章介绍Executor框架,我用Xmind软件画了这篇文章内容的思维导图。这是我第一次用思维导图软件,发现真的很好用,将整个文章提取然
seaicelin
·
2023-03-20 14:09
并发编程有关知识点(五)
JAVA线程间的状态转换锁:锁机制:synchronized、Lock、ConditionJava中的锁并发编程:Java并发编程:Thread类的使用Java多线程编程总结Java并发编程的总结与思考
Java
谷哥得小弟
·
2023-03-19 05:34
Java并发编程实战
:掌握多线程编程的交错优化和高效实践
Java并发编程是指在多个线程同时执行的情况下,协调和管理这些线程的过程。在现代计算机系统中,使用多线程并发编程可以显著提高应用程序的性能和响应速度。Java作为一门流行的编程语言,具有强大的并发编程能力。本文将介绍Java并发编程的基本原理和实践技巧,帮助读者更好地掌握这一领域的知识。欢迎点赞收藏⭐留言如有错误敬请指正!目录一、Java并发编程的基本原理1.1线程和进程1.2同步和互斥1.3线程
陈书予
·
2023-03-16 07:04
java
java
jvm
开发语言
SpringBoot使用策略模式彻底消除if-else
主要是因为楼主最近一直在苦读的过程中,12月份完成了两本书的阅读,一本是Brain《
Java并发编程实战
》,另外一本则是12月29日完成的瑞·达利欧满怀真诚的著作**《原则》**一书,这本书也是之前我徒弟用获得的购书卡给我买的
思影影思
·
2023-03-13 10:52
Java
编程思想
实践
策略模式
spring
boot
java
Java并发编程实战
(1)- 并发程序的bug源头
概述并发编程一般属于编程进阶部分的知识,它会涉及到很多底层知识,包括操作系统。编写正确的并发程序是一件很困难的事情,由并发导致的bug,有时很难排查或者重现,这需要我们理解并发的本质,深入分析Bug的源头。并发程序问题的源头为了提升系统性能,在过去几十年中,我们一直在不断的提升硬件的设计,包括CPU、内存以及I/O设备,但存在一个主要矛盾:三者之间速度有很大差异,CPU最快,内存其次,I/O设备最
技术修行者
·
2023-03-11 02:14
Java并发编程实战
第二章 线程安全性 知识总括
第二章线程安全性1.编写线程安全代码的核心:对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问。2.如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误。解决方法:不在线程之间共享该状态变量。将状态变量修改为不可变的变量。在访问状态变量时使用同步。3.正确性:某个类的形为与其规范完全一致。线程安全:当多个线程访问某个类时,这个类始
情海丶
·
2023-02-20 23:55
Java并发编程实战
多线程
java
实现异步转同步
极客时间-《
Java并发编程实战
》学习笔记异步方法:调用方法,在方法中启动子线程异步调用:启动子线程调用方法异步转同步:由于同步简单易用,将异步方法进行封装,同步调用,等待结果Lock和ConditionLocklock
leo小超
·
2023-01-31 16:49
JVM中的锁
在
Java并发编程实战
中,当多个线程同时访问同一个对象的时候,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象都会产生正确的结果
3358dceda19d
·
2023-01-29 15:32
年底了,感谢大家2022年的支持,虚竹哥送10本JAVA好书
文章目录前言《Java核心技术卷I:开发基础(原书第12版)》《EffectiveJava中文版(原书第3版)》《
Java并发编程实战
》《Java多
小虚竹
·
2022-12-22 09:24
好书收藏
java
开发语言
jvm
java并发编程实战
读书笔记--第五章
java高并发读书笔记——第五章5.2:并发容器5.2.1:ConcurrentHashMap1、每个操作都是线程安全的get、contains等包含大量工作,但加锁了所以安全2、基于散列的Map3、粒度更细的加锁机制:分段锁---->高并发时吞吐量更高,单线程时性能损失小4、弱一致性:size和isEmpty等操作可以返回结果已经过期,实际只是一个估计值5、没有对Map加锁提供独占访问,而Has
白色小衬衫
·
2022-11-09 12:02
java并发编程实战
java
极客时间《
Java并发编程实战
》---并发编程BUG的源头与Java如何解决可见性和有序性问题笔记
文章目录并发编程bug的源头之一:缓存导致的可见性问题并发编程bug的源头之二:线程切换带来的原子性问题并发编程bug的源头之三:编译优化带来的有序性问题Java内存模型-----解决可见性和有序性问题volatile关键字六项Happens-Before规则---前面一个操作的结果对后续操作可见1.程序的顺序性规则2.volatile变量规则2.传递性----如果AHappens-BeforeB
Tattoo_Welkin
·
2022-11-09 11:00
JAVA并发编程
java
volatile能保持线程安全吗_volatile变量能保证线程安全性吗?为什么?
在《
Java并发编程实战
》一书中是这么定义volatile的——Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。
weixin_39839541
·
2022-11-03 20:16
阿里百万架构师打造的
Java并发编程实战
笔记,理论到实践一键搞定
前言并发编程式Java语言的重要特性之一,当然也是最难以掌握的内容。编写可靠的并发程序是一项不小的挑战。但是,作为程序员的我们,要变得更有价值,就需要啃一些硬骨头了。因此,理解并发编程的基础理论和编程实践,让自己变得更值钱吧。1、简介2、线程安全性3、对象的共享4、对象的组合5、基础构建模块6、任务执行7、取消与关闭8、线程池的使用9、图形用户界面应用程序10、避免活跃性危险11、性能与可伸缩性1
Java技术那些事儿
·
2022-10-12 18:04
java
开发语言
后端
并发
Java并发编程实战
读书笔记——第六章 任务执行
任务通常是一些抽象的且离散的工作单元。通过把应用程序的工作分解到多个任务中,可以简化程序的组织结构,提供一种自然的事务边界来优化错误恢复过程,以及提供一种自然的并行工作结构来提升并发性。6.1在线程中执行任务第一步就是要找出清晰的任务边界。独立性有助于实现并发,因为如果存在足够多的处理资源,那么这些独立的任务都可以并行执行。服务器应用程序应该同时表现出良好的吞吐量和快速的响应性。应用程序提供商希望
AhahaGe
·
2022-09-24 21:18
Java
并发
Java
【
Java并发编程实战
】(二):并发编程Bug的源头——可见性、原子性和有序性问题
引言如果你细心观察的话,你会发现,不管是哪一门编程语言,并发类的知识都是在高级篇里。换句话说,这块知识点其实对于程序员来说,是比较进阶的知识。我自己这么多年学习过来,也确实觉得并发是比较难的,因为它会涉及到很多的底层知识,比如若你对操作系统相关的知识一无所知的话,那去理解一些原理就会费些力气。这是我们整个专栏的第一篇文章,我说这些话的意思是如果你在中间遇到自己没想通的问题,可以去查阅资料,也可以在
少侠露飞
·
2022-09-22 16:11
《WEB开发》并发编程
java
并发编程
多线程
Java并发编程实战
_盖兹
文章目录第一部分基础知识第1章简介1.1并发简史1.2线程的优势1.3线程带来的风险1.4线程无处不在(框架线程或类线程并发注意点)第2章线程安全性2.1什么是线程安全性2.2原子性2.3加锁机制内置锁:Synchronized关键字可重入锁:获取锁的操作粒度是“线程”而不是调用用锁来保护状态活跃性与性能性第3章对象的共享3.1可见性3.2发布与逸出3.3线程封闭3.4对象的不变性3.5安全发布第
sup_bkht
·
2022-09-21 11:07
书籍总结
Java
并发编程
java
《
Java并发编程实战
》【第一部分 基础知识】
文章目录第1章简介1.1并发简史1.2线程的优势1.2.1发挥多处理器的强大能力1.2.2建模的简单性1.2.3异步事件的简化处理1.2.4响应更灵敏的用户界面1.3线程带来的风险1.3.1安全性问题1.3.2活跃性问题1.3.3性能问题1.4线程无处不在第一部分基础知识第2章线程安全性2.1什么是线程安全性示例一个无状态的Servlet2.2原子性2.2.1竞态条件2.2.2示例延迟初始化中的竞
lyw4631
·
2022-09-21 11:36
JUC
Java书籍
java
开发语言
后端
《深入了解java虚拟机》高效并发读书笔记——Java内存模型,线程,线程安全 与锁优化
高效并发读书笔记——Java内存模型,线程,线程安全与锁优化本文主要参考《深入了解java虚拟机》高效并发章节关于锁升级,偏向锁,轻量级锁参考《Java并发编程的艺术》关于线程安全和线程安全的程度参考了《
Java
Cuzzz
·
2022-07-31 11:00
JUC源码学习笔记2——AQS共享和Semaphore,CountDownLatch
本文主要讲述AQS的共享模式,共享和独占具有类似的套路,所以如果你不清楚AQS的独占的话,可以看我的《JUC源码学习笔记1》主要参考内容有《Java并发编程的艺术》,《
Java并发编程实战
》和下面两位博主的博客
Cuzzz
·
2022-07-17 23:00
一文读懂《
Java并发编程实战
》:第2章 影响线程安全性的原子性和加锁机制
点击上方蓝字关注我们上文《
Java并发编程实战
》的第1章“多线程安全性与风险”,讲述了多线程带来的好处与风险。本文承接上文,继续总结《
Java并发编程实战
》的第二章:线程安全性。
一枚野生程序猿
·
2022-06-28 00:31
带你读完《Java
并发编程实战》
多线程
java
编程语言
spring
并发编程
社招两年半10个公司28轮面试面经(含字节、拼多多、美团、滴滴......)
我看过的Java相关的书单如下:Java:《Java并发编程的艺术》、《
Java并发编程实战
》JVM:《深入理解Java虚拟机》第三版、《深入Java虚拟机:JVMG1GC的算
·
2022-06-27 10:16
后端面试简历字节跳动java
【笔记】【
Java并发编程实战
】2线程安全
注:本文为笔者阅读《
JAVA并发编程实战
》(BrianGoetz等注)一书的学习笔记,如有错漏,敬请指出。
心中有光,不惧路长
·
2022-06-26 13:50
笔记
java入门
java
并发编程
第十章、核心8:线程安全-多线程会导致的问题
什么是线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的————《
Java
Venlenter
·
2022-06-12 04:23
深入浅出Java并发多线程
多线程
线程安全
a++
那些优秀的程序员都在看哪些书?
核心技术卷2高级特性(原书第11版)[CoreJava]四、Java语言程序设计基础篇(原书第12版)五、Java编程思想[ThinkinginJava]六、EffectiveJava中文版(原书第3版)七、
Java
哪 吒
·
2022-05-25 11:59
搬砖工逆袭Java架构师
java
程序人生
java-ee
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他