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
JUC面试题汇总
并发编程 | JMM、volitle、CAS
本文是
juc
专题视频的笔记哔哩哔哩尚硅谷
juc
专题p56-p79中间跳过了一些native方法的讲解,比如UnSafe类,还有读写屏障(就是内存屏障)没听清的点是:为啥volitle不是原子性的+8个happens-before
w_3123454
·
2023-08-31 19:00
并发编程
java
并发编程
JUC
并发编程详细讲解
目录
JUC
并发编程(1.Java线程)
JUC
并发编程(2.Java线程)
JUC
并发编程(3.Java线程)
JUC
并发编程(4.Java线程)
JUC
并发编程(5.Java线程)
JUC
并发编程(6.Java
Smile sea breeze
·
2023-08-31 19:30
知识点合集
java
数据库
服务器
juc
并发编程02——JMM模型
我们在这篇文章中将介绍JMM模型,也就是java内存模型。注意,本文所提到的JMM模型与JVM内存模型属于不同层次的内容。JVM内存模型讲的是物理内存空间的分配,而JMM则强调对于JVM内存模型的抽象。1.java内存模型在计算机中,为了解决主内存的速度跟不上处理器速度的问题,我们给每个处理器添加一级或多级高速缓存(如下图)。但是,每个处理器上缓存的数据如何保证一致性呢?为了实现缓存数据的一致性,
半旧518
·
2023-08-31 19:57
juc
java
Java多线程进阶知识梳理(上)
目录1.什么是
JUC
并发编程2.线程和进程3.Lock(锁)4.生产者和消费者5.集合线程不安全6.Callable接口7.常用辅助类(必须会)7.1.CountDownLatch(减法计数器)7.2.
彼岸花@开
·
2023-08-31 11:56
多线程
JAVA多线程进阶篇 9、
JUC
工具类之LockSupport
文章目录1.LockSupport的使用示例总结LockSupport实现了线程A控制线程B的阻塞与唤醒。如果要实现线程阻塞,一般需要使用锁对象,LockSupport不需要锁可以直接阻塞住线程。如果要实现线程唤醒,以前都是notify或者notifyall方法,但是这样会把锁对象上的所有线程都唤醒,无法精准控制换醒哪个线程。LockSupport可以实现精准唤醒。1.LockSupport的使用
悟空学编程
·
2023-08-31 11:54
JAVA多线程进阶篇
java
开发语言
JAVA多线程进阶篇 8、
JUC
同步器之Exchanger
文章目录1.Exchanger的应用场景2.Exchanger的使用示例一3.Exchanger的使用示例二总结
JUC
即java.util.concurrent包,提供了大量的工具类来简化并发编程。
悟空学编程
·
2023-08-31 11:24
JAVA多线程进阶篇
java
开发语言
后端
linux
【Java】多线程(进阶)
多线程进阶常见的所策略乐观锁和悲观锁重量级锁和轻量级锁自旋锁和挂起等待锁自旋锁挂起等待锁读写锁和互斥锁读写锁互斥锁公平锁和非公平锁公平锁非公平锁可重入锁和不可重入锁可重入锁不可重入锁CASCAS应用实现原子类实现自旋锁CAS的ABA问题synchronized原理基本特点加锁工作过程偏向锁轻量级锁重量级锁其他的优化操作锁消除锁粗化
JUC
沉着的码农
·
2023-08-31 11:23
Java
java
python
linux
JavaSE(四)
详细知识点可以点击标题超链接一、多线程&
JUC
并发与并行多线程的三种实现方式第一种继承Thread类第二种实现Runnable接口第三种实现Callable接口对比常用方法基础优先级守护线程礼让线程(了解
( ̄(工) ̄)霸天下
·
2023-08-31 10:08
Java
java
开发语言
常见前端面试之VUE
面试题汇总
十一
31.Vuex有哪几种属性?有五种,分别是State、Getter、Mutation、Action、Modulestate=>基本数据(数据源存放地)getters=>从基本数据派生出来的数据mutations=>提交更改数据的方法,同步actions=>像一个装饰器,包裹mutations,使之可以异步。modules=>模块化Vuex32.Vuex和单纯的全局对象有什么区别?Vuex的状态存储
爱敲代码的学长
·
2023-08-30 19:42
前端开发
前端
面试
vue.js
职场和发展
开发语言
javascript
前端框架
常见前端面试之VUE
面试题汇总
十二
35.defineProperty和proxy的区别Vue在实例初始化时遍历data中的所有属性,并使用Object.defineProperty把这些属性全部转为getter/setter。这样当追踪数据发生变化时,setter会被自动调用。Object.defineProperty是ES5中一个无法shim的特性,这也就是Vue不支持IE8以及更低版本浏览器的原因。但是这样做有以下问题:1.添
爱敲代码的学长
·
2023-08-30 19:42
前端开发
前端
vue.js
javascript
职场和发展
开发语言
面试
前端框架
常见前端面试之VUE
面试题汇总
十三
39.Vue中key的作用vue中key值的作用可以分为两种情况来考虑:第一种情况是v-if中使用key。由于Vue会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。因此当使用v-if来实现元素切换的时候,如果切换前后含有相同类型的元素,那么这个元素就会被复用。如果是相同的input元素,那么切换前后用户的输入不会被清除掉,这样是不符合需求的。因此可以通过使用key来唯一的标识一个元素
爱敲代码的学长
·
2023-08-30 19:42
前端开发
vue.js
前端
javascript
职场和发展
开发语言
面试
前端框架
常见前端面试之VUE
面试题汇总
十二
35.defineProperty和proxy的区别Vue在实例初始化时遍历data中的所有属性,并使用Object.defineProperty把这些属性全部转为getter/setter。这样当追踪数据发生变化时,setter会被自动调用。Object.defineProperty是ES5中一个无法shim的特性,这也就是Vue不支持IE8以及更低版本浏览器的原因。但是这样做有以下问题:1.添
学长是个程序员
·
2023-08-30 12:23
前端开发
前端
vue.js
javascript
职场和发展
面试
前端框架
vue
常见前端面试之VUE
面试题汇总
十
28.Vuex和localStorage的区别(1)最重要的区别vuex存储在内存中localstorage则以文件的方式存储在本地,只能存储字符串类型的数据,存储对象需要JSON的stringify和parse方法进行处理。读取内存比读取硬盘速度要快(2)应用场景Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测
学长是个程序员
·
2023-08-30 12:22
前端开发
前端
面试
vue.js
职场和发展
javascript
前端框架
vue
常见前端面试之VUE
面试题汇总
十一
31.Vuex有哪几种属性?有五种,分别是State、Getter、Mutation、Action、Modulestate=>基本数据(数据源存放地)getters=>从基本数据派生出来的数据mutations=>提交更改数据的方法,同步actions=>像一个装饰器,包裹mutations,使之可以异步。modules=>模块化Vuex32.Vuex和单纯的全局对象有什么区别?Vuex的状态存储
学长是个程序员
·
2023-08-30 12:22
前端开发
前端
面试
vue.js
职场和发展
javascript
前端框架
vue
常见前端面试之VUE
面试题汇总
十三
39.Vue中key的作用vue中key值的作用可以分为两种情况来考虑:第一种情况是v-if中使用key。由于Vue会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。因此当使用v-if来实现元素切换的时候,如果切换前后含有相同类型的元素,那么这个元素就会被复用。如果是相同的input元素,那么切换前后用户的输入不会被清除掉,这样是不符合需求的。因此可以通过使用key来唯一的标识一个元素
学长是个程序员
·
2023-08-30 12:46
前端开发
前端
面试
vue.js
职场和发展
javascript
前端框架
vue
【
juc
】读写锁ReentrantReadWriteLock
目录一、说明二、读读不互斥2.1代码示例2.2截图示例三、读写互斥3.1代码示例3.2截图示例四、写写互斥4.1代码示例4.2截图示例五、注意事项5.2.1代码示例5.2.2截图示例一、说明1.当读操作远远高于写操作时,使用读写锁让读读可以并发,来提高性能2.类似于数据库中的select…from…lockinsharemode3.提供一个数据容器类,内部分别使用读锁保护数据的read()方法,写
王佑辉
·
2023-08-30 10:27
juc
juc
JUC
并发编程--------基础篇
一、多线程的相关知识栈与栈帧我们都知道JVM中由堆、栈、方法区所组成,其中栈内存是给谁用的呢?其实就是线程,每个线程启动后,虚拟机就会为其分配一块栈内存。每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法线程上下文切换上下文切换可以更详细地描述为内核(即操作系统的核心)对CPU上的进程(包括线程)执行以下活动:1.暂停一个进
Promise_J_Z
·
2023-08-30 05:54
JAVA---并发编程
java
[Java]重学Java-原子类
JUC
包下的原子类
JUC
就是大名鼎鼎的java并发包,我们今天来看看基于非阻塞性算法的CAS封装的原子类.
JUC
下有AtomicInteger、AtomicLong、AtomicBoolean等类,UML
AbstractCulture
·
2023-08-30 04:45
软件测试
面试题汇总
很快就2022年了,相信很多小伙伴都会有寻找新工作的想法,那么这篇文章应该会有能帮助到大家的地方。提前祝大家新年快乐。1、什么是软件测试?答:从广义上说,软件测试是软件生命周期中的所有检查、评审和确认工作,包括在分析、设计阶段,以及完成开发后确认阶段的各类文档、代码的审查和确认。从狭义上说,是识别软件缺陷的过程,即实际结果与预期结果不一致。2、软件测试的目标?答:最终目标是确保软件功能符合用户需求
沐光星灵
·
2023-08-30 00:07
面试
测试工程师
经验分享
从源码全面解析 Java SPI 的来龙去脉
作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、
JUC
源码系列
爱敲代码的小黄
·
2023-08-29 15:11
#
dubbo
java
开发语言
面试
后端
SPI
JAVA多线程-集合类线程不安全问题
ArrayList线程不安全案例package
JUC
;importjava.util.ArrayList;importjava.util.List;importjava.util.UUID;/***@authorzhaolimin
Noblegasesgoo
·
2023-08-29 12:36
JAVA学习
JAVA八股文
java
开发语言
juc
多线程
线程安全
JUC
高并发编程
目录一、
JUC
简介什么是
JUC
进程和线程的概念进程状态wait()/sleep()的区别并发与并行管程用户线程和守护线程二、Lock接口三、线程间通信四、集合的线程安全五、多线程锁锁的八个问题公平锁和非公平锁可重入锁
lemon很酸
·
2023-08-29 05:45
java
开发语言
后端
《尚硅谷高级技术之
JUC
高并发编程》09——阻塞队列
文章目录01BlockingQueue简介02BlockingQueue核心方法BlockingQueue的核心方法03常见的BlockingQueueArrayBlockingQueue(常用)LinkedBlockingQueue(常用)DelayQueuePriorityBlockingQueueSynchronousQueueLinkedTransferQueueLinkedBlockin
知识焦虑症患者
·
2023-08-29 05:44
juc
JUC
并发编程——深入了解synchronized关键字
目录一、引言二、synchronized的使用三、Synchronized如何保证线程安全四、锁优化Java对象结构64位虚拟机MarkWord组成无锁、偏向锁、轻量级锁、重量级锁五、Synchronized与ReentrantLock一、引言在Java中线程同步使用synchronized关键字,每个java对象都有一把隐含的锁,称为Java内置锁或者对象锁。二、synchronized的使用p
熟透的蜗牛
·
2023-08-29 05:14
JUC
JUC
并发编程
synchronized
JUC
并发编程——ThreadLocal
目录一、什么是ThreadLocal二、ThreadLocal的使用三、ThreadLocal源码分析四、ThreadLocal导致内存泄漏一、什么是ThreadLocalThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。当线程结束后,每个线程所拥有的那个本地值会被释放。在多线程并发操作“线程本地变量"的时候,
熟透的蜗牛
·
2023-08-29 05:14
JUC
源码分析
JUC
并发编程
ThreadLocal
《尚硅谷高级技术之
JUC
高并发编程》学习笔记07——
JUC
三大辅助类
文章目录减少计数:CountDownLatch循环栅栏CyclicBarrier信号灯Semaphore总结
JUC
中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时Lock锁的频繁操作
知识焦虑症患者
·
2023-08-29 05:14
juc
JUC
并发编程——锁
目录1、自旋锁和自适应锁2、轻量级锁和重量级锁轻量级锁加锁过程轻量级锁解锁过程3、偏向锁4、可重入锁和不可重入锁5、悲观锁和乐观锁6、公平锁和非公平锁7、共享锁和独占锁8、可中断锁和不可中断锁当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。但是
熟透的蜗牛
·
2023-08-29 05:44
JUC
JUC
多线程
锁
【
JUC
高并发编程】—— 初见
JUC
一、
JUC
概述什么是
JUC
JUC
是Java并发编程的缩写,指的是Java.util.concurrent即Java工具集下的并发编程库【说白了就是处理线程的工具包】
JUC
提供了一套并发编程工具,这些工具是
Bow.贾斯汀
·
2023-08-29 05:44
Java并发编程
java
jvm
面试
juc
多线程
Java——
JUC
并发编程
文章目录1、什么是
JUC
2、线程和进程3、Lock锁3.2、Synchronized和Lock区别4、生产者和消费者的问题4.1、Synchronized版4.1.2、问题纯在(A,B,CD)4个线程!
小吴在敲Bug
·
2023-08-29 05:43
Java笔记
juc
java
JUC
——并发容器BlockingQueue数据共享通道源码解析
文章目录1:BlockingQueue数据共享通道介绍2:BlockingQueue的用处3:BlockingQueue的核心方法4:BlockingQueue工作机制——源码解析5:BlockingQueue实现生产者消费者模式1:BlockingQueue数据共享通道介绍对于并发程序而言,高性能自然是个我们需要追求的目标,但多线程的开发模式还会引入一个问题,那就是如何进行多个线程间的数据共享呢
福建选手阿俊
·
2023-08-29 05:13
Java高并发
java
队列
并发编程
juc
JUC
——并发容器ConcurrentLinkedQueue源码解读
文章目录1:ConcurrentLinkedQueue的介绍1.1初始化分析1.2入队列分析1.3出队列情况分析1.4队列判空分析1.5updateHead方法分析2:使用debug进行源码分析1:ConcurrentLinkedQueue的介绍ConcurrentLinkedQueue的实现原理:是基于CAS,通过head/ail指针记录队列头部和尾部。首先,它是一个单向链表,定义如下。publ
福建选手阿俊
·
2023-08-29 05:13
Java高并发
juc
并发编程
源码
高级技术之
JUC
高并发编程
高级技术之
JUC
高并发编程课程内容概览1、什么是
JUC
2、Lock接口3、线程间通信4、集合的线程安全5、多线程锁6、Callable接口7、
JUC
三大辅助类:CountDownLatchCyclicBarrierSemaphore8
@Ransw
·
2023-08-29 05:42
javaSE
java
尚硅谷
JUC
高并发编程学习笔记(1)
JUC
简介与Lock接口
一、什么是
JUC
1、
JUC
简介在Java中,线程部分是一个重点,本篇文章说的
JUC
也是关于线程的。
JUC
就是java.util.concurrent工具包的简称。
exodus3
·
2023-08-29 05:42
多线程并发
java
开发语言
后端
JUC
——并发编程—第一部分
准备工作搞一个空的Maven项目确保这里lambda这里是8版本.javac这里也改成是81.什么是
JUC
()
JUC
全称是JavautilConcurrent.java里面的三个包。
北岭山脚鼠鼠
·
2023-08-29 05:41
JVM+JUC
java
开发语言
JUC
之玩转Condition
每期总结一个小的知识点和相关面试题,嘿嘿,又来和大家共同学习了。GUC中有个类我们用的比较少,但是他确是很多类中不可或缺的成员。他就是Condition。从字面意思理解就是条件,那条件的话就有trueorfalse。那Condition是起到一个多线程共享标识位执行阻塞的作用,true的时候通过,false的时候等待。1、Condition的使用通过下面的一个代码可以看出来如何使用它。//thre
猿必过
·
2023-08-29 01:31
Java开发
面试题汇总
-- 精选版(附答案)
目前流行的开发技术、常见的面试问题以及问题的答案都已经写的特别清楚了,今天我在之前的基础上,再基于面个人的经验继续精选一些面试题给大家阅读参考。image1,Java的反射Java反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法。这种在运行时动态的获取信息以及动态调用对象的方法的功能称为Java的反射机制。反射也就是动态加载
java伯爵
·
2023-08-29 00:09
python测开
面试题汇总
如果一个普通用户,他的百度首页打不开,问题怎么定位?写出定位流程。压力测试和负载测试的区别1、压力测试压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。压力测试可以被看作是负
软件测试进阶中
·
2023-08-28 21:43
软件测试
python
JUC
工具类-LockSupport概述
前言多线程并发场景中,时常需要线程协同,故而需要对当前线程进行阻塞,并唤醒需要协同的线程来一起完成任务。通常处理方式有三种:1)Synchronized加锁的线程使用Object类下所提供的方法:wait():让当前线程处于等待状态,并释放当前拥有的锁;notify():随机唤醒等待该锁的其他线程,重新获取锁,并执行后续的流程,只能唤醒一个线程;notifyAll():唤醒所有等待该锁的线程(锁只
静看º一季花开花落
·
2023-08-28 15:43
多线程与线程并发
java
AbstractQueuedSynchronizer(AQS)抽丝剥茧深入了解
JUC
框架原理
[TOC]简介AQS(AbstractQueuedSynchronizer)是并发开发中一个基础组件。主要实现了同步状态管理、线程队列管理、线程等待、线程唤醒等底层操作。JDK中许多的并发类都是依赖AQS的。ReentrantLock(可重入锁)、Semaphore(信号量)、CountDownLatch(计数器)。Lock简单实用介绍原理前我们简单来看看Lock使用。publicstaticvo
zxhtom
·
2023-08-28 12:30
【30天熟悉Go语言】11 数组的全方位使用与解析
SpringCloud源码系列(含:Ribbon、Feign)、Nacos源码系列、RocketMQ源码系列、SpringCloudGateway使用到源码分析系列、分布式事务Seata使用到源码分析系列、
JUC
秃秃爱健身
·
2023-08-28 11:54
#
30天熟悉GO语言
golang
JUC
基础笔记(尚硅谷周阳
JUC
的笔记)
JUC
概述卖票Lambda表达式线程间的通信一道经典的线程按顺序打印多线程8锁集合线程不安全实现多线程方式CountDownLatchCyclicBarrier读写锁阻塞队列线程池strem流式计算分支合并框架异步回调
dogs~xiaofei
·
2023-08-28 09:24
juc
juc
基础(四)
目录一、ThreadPool线程池1、参数说明2、拒绝策略3、线程池种类(1)newCachedThreadPool(常用)(2)newFixedThreadPool(常用)(3)newSingleThreadExecutor(常用)(4)newScheduleThreadPool(了解)(5)newWorkStealingPool4、线程池入门案例5、注意事项二、Fork/Join1、框架简介2
zoeil
·
2023-08-28 09:23
juc
java
后端
juc
juc
基础(二)
目录一、集合的线程安全1、List集合2、hashset3、hashmap二、多线程锁三、Callable&Future接口1、Callable接口2、Future接口3、FutureTask四、
JUC
zoeil
·
2023-08-28 09:22
juc
gulimall
java
后端
开发语言
多线程
Juc
juc
基础(三)
目录一、读写锁1、读写锁介绍2、ReentrantReadWriteLock3、例子4、小结二、阻塞队列1、BlockingQueue简介2、BlockingQueue核心方法3、案例4、常见的BlockingQueue(1)ArrayBlockingQueue(常用)(2)LinkedBlockingQueue(常用)(3)DelayQueue(4)PriorityBlockingQueue(5
zoeil
·
2023-08-28 09:18
juc
java
后端
juc
JUC
——多线程补充
前置可看Java——多线程和锁_java多线程锁_北岭山脚鼠鼠的博客-CSDN博客线程创建的三种方式Thread、Runnable、CallableThread类Runable接口Callable接口Lamda表达式Lamda表达式_北岭山脚鼠鼠的博客-CSDN博客静态代理模式(Thread类的原理)如下代码中真实对象和代理对象都实现了同一个接口代理对象代理真实角色好处:代理对象可以做很多真实对象
北岭山脚鼠鼠
·
2023-08-28 07:15
JVM+JUC
java
多线程
Java-
JUC
(七)
1.Java中实现多线程有几种方法创建线程的常用的几种方式:继承Thread类实现Runnable接口(重写run方法,无返回值)实现Callable接口(JDK1.5>=,重写call方法,可以自定义返回值)线程池方式创建2.线程的几个基本状态新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线
学习才能变得强大
·
2023-08-28 06:02
juc
java
java
开发语言
JUC
并发编程(一)
JUC
并发编程1.查看进程和线程的方法1.1Windows1.2Linux1.查看进程和线程的方法1.1Windows任务管理器可以查看进程和线程数,也可以用来杀死进程tasklist查看进程taskkill
boy快快长大
·
2023-08-28 03:10
Java并发编程
java
JUC
的常见类
Callableinterfacce也是一种创建线程的方式Runnable能表示一个任务(run方法),返回voidCallable也能表示一个任务(call方法),返回一个具体的值,类型可以通过泛型参数来指定(object)如果进行多线程操作,如果你只是关心多线程的执行过程,使用Runnable即可,如果是关心多线程的计算结果,使用Callable更合适使用Callable不能直接作为Threa
墨溱
·
2023-08-28 03:36
服务器
数据库
java
JUC
AQS ReentrantLock源码分析
Java的内置锁一直都是备受争议的,在JDK1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放锁的可操作性,可中断、超时获取锁,且它为独占式在高并发场景下性能大打折扣。如
子路玩Java
·
2023-08-27 20:23
阿里面试
什么时候进行初始化为什么初始容量总是二的次幂多线程下的问题,扩容的实现线程线程实现顺序调度的方案thread.join原理启动线程的方式,启动进程的方式线程池核心参数,阻塞队列有几种有什么不同点,自带的拒绝策略,如何自定义拒绝策略
juc
atomic
水表学Java
·
2023-08-27 19:44
上一页
23
24
25
26
27
28
29
30
下一页
按字母分类:
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
其他