【第22期】观点:IT 行业加班,到底有没有价值?

统计源码行数命令:

原创 2015年07月10日 14:53:56

wc -l find ./ -name "*.scala";find -name "*.h"

实战:统计spark-1.4.0核心代码行数:

xxx@master:~/spark_src/spark-1.4.0/core/src/main/scala/org/apache/spark$ wc -l find ./ -name "*.scala";find -name "*.h"
1178 ./rdd/PairRDDFunctions.scala
152 ./rdd/ZippedPartitionsRDD.scala
174 ./rdd/CheckpointRDD.scala
151 ./rdd/RDDCheckpointData.scala
70 ./rdd/PartitionwiseSampledRDD.scala
82 ./rdd/PartitionPruningRDD.scala
1695 ./rdd/RDD.scala
72 ./rdd/ZippedWithIndexRDD.scala
134 ./rdd/AsyncRDDActions.scala
97 ./rdd/UnionRDD.scala
189 ./rdd/PipedRDD.scala
275 ./rdd/NewHadoopRDD.scala
23 ./rdd/package.scala
208 ./rdd/CoGroupedRDD.scala
93 ./rdd/CartesianRDD.scala
113 ./rdd/PartitionerAwareUnionRDD.scala
155 ./rdd/RDDOperationScope.scala
98 ./rdd/ShuffledRDD.scala
92 ./rdd/BlockRDD.scala
137 ./rdd/SubtractedRDD.scala
34 ./rdd/EmptyRDD.scala
211 ./rdd/JdbcRDD.scala
71 ./rdd/SampledRDD.scala
240 ./rdd/DoubleRDDFunctions.scala
101 ./rdd/OrderedRDDFunctions.scala
117 ./rdd/SequenceFileRDDFunctions.scala
354 ./rdd/CoalescedRDD.scala
36 ./rdd/MapPartitionsRDD.scala
51 ./rdd/BinaryFileRDD.scala
162 ./rdd/ParallelCollectionRDD.scala
421 ./rdd/HadoopRDD.scala
156 ./mapred/SparkHadoopMapRedUtil.scala
591 ./storage/MemoryStore.scala
71 ./storage/BlockStore.scala
83 ./storage/BlockInfo.scala
60 ./storage/BlockManagerSource.scala
171 ./storage/DiskStore.scala
225 ./storage/BlockManagerMaster.scala
20 ./storage/BlockNotFoundException.scala
230 ./storage/StorageLevel.scala
22 ./storage/BlockException.scala
32 ./storage/PutResult.scala
30 ./storage/FileSegment.scala
175 ./storage/DiskBlockManager.scala
215 ./storage/TachyonBlockManager.scala
1279 ./storage/BlockManager.scala
121 ./storage/BlockManagerId.scala
102 ./storage/ExternalBlockManager.scala
357 ./storage/ShuffleBlockFetcherIterator.scala
61 ./storage/RDDInfo.scala
135 ./storage/BlockId.scala
181 ./storage/ExternalBlockStore.scala
275 ./storage/StorageUtils.scala
510 ./storage/BlockManagerMasterEndpoint.scala
111 ./storage/BlockManagerMessages.scala
94 ./storage/BlockManagerSlaveEndpoint.scala
94 ./storage/StorageStatusListener.scala
249 ./storage/BlockObjectWriter.scala
192 ./CacheManager.scala
118 ./deploy/PythonRunner.scala
66 ./deploy/SparkCuratorUtil.scala
116 ./deploy/mesos/MesosClusterDispatcher.scala
180 ./deploy/mesos/ui/DriverPage.scala
49 ./deploy/mesos/ui/MesosClusterUI.scala
117 ./deploy/mesos/ui/MesosClusterPage.scala
65 ./deploy/mesos/MesosDriverDescription.scala
101 ./deploy/mesos/MesosClusterDispatcherArguments.scala
92 ./deploy/RRunner.scala
102 ./deploy/JsonProtocol.scala
1002 ./deploy/SparkSubmit.scala
29 ./deploy/Command.scala
48 ./deploy/ApplicationDescription.scala
131 ./deploy/ClientArguments.scala
37 ./deploy/DriverDescription.scala
257 ./deploy/history/HistoryServer.scala
223 ./deploy/history/HistoryPage.scala
500 ./deploy/history/FsHistoryProvider.scala
90 ./deploy/history/HistoryServerArguments.scala
65 ./deploy/history/ApplicationHistoryProvider.scala
234 ./deploy/worker/DriverRunner.scala
67 ./deploy/worker/DriverWrapper.scala
51 ./deploy/worker/WorkerSource.scala
176 ./deploy/worker/WorkerArguments.scala
153 ./deploy/worker/ui/WorkerPage.scala
164 ./deploy/worker/ui/LogPage.scala
58 ./deploy/worker/ui/WorkerWebUI.scala
176 ./deploy/worker/ExecutorRunner.scala
583 ./deploy/worker/Worker.scala
79 ./deploy/worker/WorkerWatcher.scala
111 ./deploy/worker/CommandUtils.scala
528 ./deploy/SparkSubmitArguments.scala
116 ./deploy/ExternalShuffleService.scala
208 ./deploy/Client.scala
34 ./deploy/ExecutorDescription.scala
190 ./deploy/DeployMessage.scala
79 ./deploy/master/ZooKeeperPersistenceEngine.scala
100 ./deploy/master/MasterArguments.scala
24 ./deploy/master/WorkerState.scala
98 ./deploy/master/PersistenceEngine.scala
947 ./deploy/master/Master.scala
77 ./deploy/master/RecoveryModeFactory.scala
42 ./deploy/master/MasterMessages.scala
121 ./deploy/master/ui/ApplicationPage.scala
90 ./deploy/master/ui/MasterWebUI.scala
73 ./deploy/master/ui/HistoryNotFoundPage.scala
254 ./deploy/master/ui/MasterPage.scala
33 ./deploy/master/DriverState.scala
27 ./deploy/master/ApplicationState.scala
128 ./deploy/master/ApplicationInfo.scala
47 ./deploy/master/MasterSource.scala
110 ./deploy/master/WorkerInfo.scala
83 ./deploy/master/FileSystemPersistenceEngine.scala
43 ./deploy/master/LeaderElectionAgent.scala
24 ./deploy/master/RecoveryState.scala
52 ./deploy/master/ExecutorDesc.scala
90 ./deploy/master/ZooKeeperLeaderElectionAgent.scala
41 ./deploy/master/ApplicationSource.scala
51 ./deploy/master/DriverInfo.scala
450 ./deploy/FaultToleranceTest.scala
364 ./deploy/SparkHadoopUtil.scala
87 ./deploy/LocalSparkCluster.scala
27 ./deploy/ExecutorState.scala
206 ./deploy/client/AppClient.scala
58 ./deploy/client/TestClient.scala
39 ./deploy/client/AppClientListener.scala
27 ./deploy/client/TestExecutor.scala
36 ./deploy/rest/SubmitRestProtocolException.scala
158 ./deploy/rest/mesos/MesosRestServer.scala
85 ./deploy/rest/SubmitRestProtocolResponse.scala
418 ./deploy/rest/RestSubmissionClient.scala
78 ./deploy/rest/SubmitRestProtocolRequest.scala
318 ./deploy/rest/RestSubmissionServer.scala
198 ./deploy/rest/StandaloneRestServer.scala
146 ./deploy/rest/SubmitRestProtocolMessage.scala
55 ./api/python/PythonPartitioner.scala
309 ./api/python/PythonWorkerFactory.scala
190 ./api/python/WriteInputFormatTestDataGenerator.scala
64 ./api/python/PythonGatewayServer.scala
70 ./api/python/PythonUtils.scala
888 ./api/python/PythonRDD.scala
191 ./api/python/PythonHadoopUtil.scala
245 ./api/python/SerDeUtil.scala
145 ./api/r/RBackend.scala
456 ./api/r/RRDD.scala
346 ./api/r/SerDe.scala
223 ./api/r/RBackendHandler.scala
1039 ./api/java/JavaPairRDD.scala
43 ./api/java/JavaNewHadoopRDD.scala
209 ./api/java/JavaRDD.scala
699 ./api/java/JavaRDDLike.scala
95 ./api/java/JavaUtils.scala
23 ./api/java/package.scala
72 ./api/java/JavaSparkStatusTracker.scala
846 ./api/java/JavaSparkContext.scala
282 ./api/java/JavaDoubleRDD.scala
43 ./api/java/JavaHadoopRDD.scala
184 ./rpc/RpcEnv.scala
327 ./rpc/akka/AkkaRpcEnv.scala
148 ./rpc/RpcEndpoint.scala
41 ./rpc/RpcCallContext.scala
119 ./rpc/RpcEndpointRef.scala
101 ./util/MutableURLClassLoader.scala
323 ./util/random/StratifiedSamplingUtils.scala
23 ./util/random/package.scala
104 ./util/random/XORShiftRandom.scala
163 ./util/random/SamplingUtils.scala
356 ./util/random/RandomSampler.scala
30 ./util/random/Pseudorandom.scala
47 ./util/CollectionsUtils.scala
463 ./util/ClosureCleaner.scala
179 ./util/AsynchronousListenerBus.scala
888 ./util/JsonProtocol.scala
136 ./util/EventLoop.scala
49 ./util/CompletionIterator.scala
34 ./util/TaskCompletionListenerException.scala
69 ./util/BoundedPriorityQueue.scala
31 ./util/IntParam.scala
171 ./util/TimeStampedWeakValueHashMap.scala
87 ./util/Distribution.scala
75 ./util/ListenerBus.scala
94 ./util/io/ByteArrayChunkOutputStream.scala
32 ./util/SparkExitCode.scala
89 ./util/ThreadUtils.scala
65 ./util/ManualClock.scala
86 ./util/TimeStampedHashSet.scala
163 ./util/logging/RollingFileAppender.scala
180 ./util/logging/FileAppender.scala
139 ./util/logging/RollingPolicy.scala
60 ./util/SignalLogger.scala
54 ./util/SerializableBuffer.scala
23 ./util/package.scala
150 ./util/TimeStampedHashMap.scala
358 ./util/SizeEstimator.scala
60 ./util/RpcUtils.scala
88 ./util/NextIterator.scala
52 ./util/SparkUncaughtExceptionHandler.scala
37 ./util/ParentClassLoader.scala
70 ./util/ActorLogReceive.scala
148 ./util/StatCounter.scala
27 ./util/ThreadStackTrace.scala
49 ./util/MutablePair.scala
32 ./util/MemoryParam.scala
33 ./util/TaskCompletionListener.scala
81 ./util/ByteBufferInputStream.scala
158 ./util/Vector.scala
67 ./util/Clock.scala
2325 ./util/Utils.scala
31 ./util/IdGenerator.scala
92 ./util/collection/PartitionedPairBuffer.scala
120 ./util/collection/Spillable.scala
161 ./util/collection/CompactBuffer.scala
222 ./util/collection/BitSet.scala
113 ./util/collection/WritablePartitionedPairCollection.scala
39 ./util/collection/Sorter.scala
44 ./util/collection/PartitionedAppendOnlyMap.scala
146 ./util/collection/ChainedBuffer.scala
41 ./util/collection/SizeTrackingAppendOnlyMap.scala
294 ./util/collection/AppendOnlyMap.scala
24 ./util/collection/PairIterator.scala
111 ./util/collection/SortDataFormat.scala
294 ./util/collection/OpenHashSet.scala
166 ./util/collection/OpenHashMap.scala
133 ./util/collection/PrimitiveKeyOpenHashMap.scala
105 ./util/collection/SizeTracker.scala
507 ./util/collection/ExternalAppendOnlyMap.scala
855 ./util/collection/ExternalSorter.scala
39 ./util/collection/SizeTrackingVector.scala
39 ./util/collection/Utils.scala
91 ./util/collection/PrimitiveVector.scala
265 ./util/collection/PartitionedSerializedPairBuffer.scala
110 ./util/MetadataCleaner.scala
243 ./util/AkkaUtils.scala
117 ./Dependency.scala
86 ./HttpFileServer.scala
48 ./SerializableWritable.scala
265 ./ContextCleaner.scala
297 ./shuffle/FileShuffleBlockResolver.scala
102 ./shuffle/sort/SortShuffleWriter.scala
84 ./shuffle/sort/SortShuffleManager.scala
65 ./shuffle/ShuffleManager.scala
59 ./shuffle/FetchFailedException.scala
33 ./shuffle/ShuffleReader.scala
30 ./shuffle/BaseShuffleHandle.scala
34 ./shuffle/ShuffleWriter.scala
28 ./shuffle/ShuffleHandle.scala
122 ./shuffle/IndexShuffleBlockResolver.scala
69 ./shuffle/hash/HashShuffleReader.scala
98 ./shuffle/hash/BlockStoreShuffleFetcher.scala
119 ./shuffle/hash/HashShuffleWriter.scala
72 ./shuffle/hash/HashShuffleManager.scala
205 ./shuffle/unsafe/UnsafeShuffleManager.scala
126 ./shuffle/ShuffleMemoryManager.scala
41 ./shuffle/ShuffleBlockResolver.scala
86 ./ui/storage/StorageTab.scala
67 ./ui/storage/StoragePage.scala
142 ./ui/storage/RDDPage.scala
389 ./ui/UIUtils.scala
129 ./ui/ConsoleProgressBar.scala
215 ./ui/exec/ExecutorsPage.scala
121 ./ui/exec/ExecutorsTab.scala
86 ./ui/exec/ExecutorThreadDumpPage.scala
170 ./ui/WebUI.scala
194 ./ui/SparkUI.scala
351 ./ui/jobs/AllJobsPage.scala
57 ./ui/jobs/PoolPage.scala
875 ./ui/jobs/StagePage.scala
235 ./ui/jobs/StageTable.scala
36 ./ui/jobs/JobsTab.scala
147 ./ui/jobs/ExecutorTable.scala
116 ./ui/jobs/UIData.scala
34 ./ui/jobs/TaskDetailsClassNames.scala
53 ./ui/jobs/StagesTab.scala
343 ./ui/jobs/JobPage.scala
138 ./ui/jobs/AllStagesPage.scala
529 ./ui/jobs/JobProgressListener.scala
75 ./ui/jobs/PoolTable.scala
197 ./ui/scope/RDDOperationGraph.scala
147 ./ui/scope/RDDOperationGraphListener.scala
79 ./ui/ToolTips.scala
54 ./ui/env/EnvironmentPage.scala
49 ./ui/env/EnvironmentTab.scala
251 ./ui/JettyUtils.scala
119 ./ui/UIWorkloadGenerator.scala
387 ./serializer/KryoSerializer.scala
140 ./serializer/JavaSerializer.scala
315 ./serializer/SerializationDebugger.scala
25 ./serializer/package.scala
213 ./serializer/Serializer.scala
46 ./partial/StudentTCacher.scala
59 ./partial/MeanEvaluator.scala
29 ./partial/BoundedDouble.scala
72 ./partial/GroupedCountEvaluator.scala
56 ./partial/CountEvaluator.scala
69 ./partial/SumEvaluator.scala
140 ./partial/PartialResult.scala
28 ./partial/package.scala
27 ./partial/ApproximateEvaluator.scala
80 ./partial/GroupedMeanEvaluator.scala
88 ./partial/GroupedSumEvaluator.scala
88 ./partial/ApproximateActionListener.scala
30 ./executor/ExecutorBackend.scala
33 ./executor/CommitDeniedException.scala
43 ./executor/ExecutorEndpoint.scala
401 ./executor/TaskMetrics.scala
24 ./executor/package.scala
75 ./executor/ExecutorSource.scala
265 ./executor/CoarseGrainedExecutorBackend.scala
64 ./executor/ExecutorExitCode.scala
468 ./executor/Executor.scala
124 ./executor/MesosExecutorBackend.scala
396 ./MapOutputTracker.scala
98 ./TaskContextImpl.scala
156 ./TestUtils.scala
53 ./TaskState.scala
23 ./metrics/source/package.scala
29 ./metrics/source/JvmSource.scala
25 ./metrics/source/Source.scala
101 ./metrics/MetricsConfig.scala
68 ./metrics/sink/Slf4jSink.scala
24 ./metrics/sink/Sink.scala
93 ./metrics/sink/GraphiteSink.scala
23 ./metrics/sink/package.scala
40 ./metrics/sink/JmxSink.scala
74 ./metrics/sink/CsvSink.scala
65 ./metrics/sink/ConsoleSink.scala
68 ./metrics/sink/MetricsServlet.scala
224 ./metrics/MetricsSystem.scala
626 ./SparkConf.scala
206 ./io/CompressionCodec.scala
23 ./io/package.scala
35 ./StatusAPIImpl.scala
32 ./SparkException.scala
157 ./Logging.scala
38 ./scheduler/ExecutorLossReason.scala
40 ./scheduler/ResultStage.scala
375 ./scheduler/SparkListener.scala
89 ./scheduler/TaskScheduler.scala
80 ./scheduler/SchedulingAlgorithm.scala
70 ./scheduler/ResultTask.scala
199 ./scheduler/MapStatus.scala
24 ./scheduler/WorkerOffer.scala
48 ./scheduler/Schedulable.scala
121 ./scheduler/Pool.scala
48 ./scheduler/DAGSchedulerSource.scala
80 ./scheduler/ReplayListenerBus.scala
185 ./scheduler/InputFormatInfo.scala
29 ./scheduler/SchedulingMode.scala
73 ./scheduler/TaskLocation.scala
56 ./scheduler/ApplicationEventListener.scala
109 ./scheduler/TaskInfo.scala
52 ./scheduler/SchedulerBackend.scala
85 ./scheduler/SplitInfo.scala
28 ./scheduler/JobListener.scala
87 ./scheduler/Stage.scala
40 ./scheduler/ActiveJob.scala
1477 ./scheduler/DAGScheduler.scala
204 ./scheduler/Task.scala
24 ./scheduler/package.scala
77 ./scheduler/JobWaiter.scala
89 ./scheduler/ShuffleMapTask.scala
93 ./scheduler/cluster/CoarseGrainedClusterMessage.scala
163 ./scheduler/cluster/SparkDeploySchedulerBackend.scala
31 ./scheduler/cluster/mesos/MemoryUtils.scala
95 ./scheduler/cluster/mesos/MesosSchedulerUtils.scala
134 ./scheduler/cluster/mesos/MesosClusterPersistenceEngine.scala
51 ./scheduler/cluster/mesos/MesosTaskLaunchData.scala
289 ./scheduler/cluster/mesos/CoarseMesosSchedulerBackend.scala
651 ./scheduler/cluster/mesos/MesosClusterScheduler.scala
40 ./scheduler/cluster/mesos/MesosClusterSchedulerSource.scala
359 ./scheduler/cluster/mesos/MesosSchedulerBackend.scala
142 ./scheduler/cluster/mesos/MesosSchedulerBackendUtil.scala
38 ./scheduler/cluster/ExecutorData.scala
160 ./scheduler/cluster/YarnSchedulerBackend.scala
72 ./scheduler/cluster/SimrSchedulerBackend.scala
46 ./scheduler/cluster/ExecutorInfo.scala
402 ./scheduler/cluster/CoarseGrainedSchedulerBackend.scala
182 ./scheduler/OutputCommitCoordinator.scala
916 ./scheduler/TaskSetManager.scala
132 ./scheduler/TaskResultGetter.scala
65 ./scheduler/SparkListenerBus.scala
79 ./scheduler/DAGSchedulerEvent.scala
127 ./scheduler/local/LocalBackend.scala
32 ./scheduler/TaskLocality.scala
33 ./scheduler/JobResult.scala
85 ./scheduler/StageInfo.scala
46 ./scheduler/LiveListenerBus.scala
84 ./scheduler/ShuffleMapStage.scala
316 ./scheduler/EventLoggingListener.scala
563 ./scheduler/TaskSchedulerImpl.scala
43 ./scheduler/TaskDescription.scala
35 ./scheduler/TaskSet.scala
154 ./scheduler/SchedulableBuilder.scala
49 ./scheduler/AccumulableInfo.scala
275 ./scheduler/JobLogger.scala
100 ./scheduler/TaskResult.scala
142 ./TaskContext.scala
176 ./SparkHadoopWriter.scala
451 ./SecurityManager.scala
44 ./InterruptibleIterator.scala
47 ./package.scala
155 ./HeartbeatReceiver.scala
31 ./Partition.scala
177 ./TaskEndReason.scala
166 ./HttpServer.scala
50 ./ExecutorAllocationClient.scala
27 ./TaskKilledException.scala
2655 ./SparkContext.scala
36 ./network/BlockDataManager.scala
41 ./network/nio/MessageChunk.scala
114 ./network/nio/BufferMessage.scala
217 ./network/nio/NioBlockTransferService.scala
36 ./network/nio/ConnectionId.scala
619 ./network/nio/Connection.scala
160 ./network/nio/BlockMessageArray.scala
1153 ./network/nio/ConnectionManager.scala
114 ./network/nio/Message.scala
197 ./network/nio/BlockMessage.scala
160 ./network/nio/SecurityMessage.scala
37 ./network/nio/ConnectionManagerId.scala
83 ./network/nio/MessageChunkHeader.scala
120 ./network/BlockTransferService.scala
155 ./network/netty/NettyBlockTransferService.scala
73 ./network/netty/SparkTransportConf.scala
73 ./network/netty/NettyBlockRpcServer.scala
101 ./Aggregator.scala
50 ./launcher/WorkerCommandBuilder.scala
25 ./launcher/SparkSubmitArgumentsParser.scala
25 ./TaskNotSerializableException.scala
80 ./mapreduce/SparkHadoopMapReduceUtil.scala
305 ./Partitioner.scala
68 ./broadcast/BroadcastManager.scala
150 ./broadcast/Broadcast.scala
50 ./broadcast/BroadcastFactory.scala
47 ./broadcast/HttpBroadcastFactory.scala
25 ./broadcast/package.scala
269 ./broadcast/HttpBroadcast.scala
230 ./broadcast/TorrentBroadcast.scala
47 ./broadcast/TorrentBroadcastFactory.scala
333 ./FutureAction.scala
39 ./SparkFiles.scala
476 ./SparkEnv.scala
93 ./status/api/v1/JacksonMessageWriter.scala
55 ./status/api/v1/SimpleDateParam.scala
98 ./status/api/v1/AllJobsResource.scala
150 ./status/api/v1/OneStageResource.scala
41 ./status/api/v1/OneJobResource.scala
34 ./status/api/v1/OneRDDResource.scala
228 ./status/api/v1/api.scala
94 ./status/api/v1/ApplicationListResource.scala
309 ./status/api/v1/AllStagesResource.scala
36 ./status/api/v1/ExecutorListResource.scala
38 ./status/api/v1/SecurityFilter.scala
31 ./status/api/v1/OneApplicationResource.scala
255 ./status/api/v1/ApiRootResource.scala
104 ./status/api/v1/AllRDDResource.scala
107 ./SparkStatusTracker.scala
625 ./ExecutorAllocationManager.scala
178 ./SSLOptions.scala
221 ./input/PortableDataStream.scala
119 ./input/WholeTextFileRecordReader.scala
86 ./input/FixedLengthBinaryInputFormat.scala
127 ./input/FixedLengthBinaryRecordReader.scala
63 ./input/WholeTextFileInputFormat.scala
355 ./Accumulators.scala
25 ./annotation/package.scala
80981 total

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

代码行数统计器

--Visual Studio 2005插件开发         前段日子也写篇关于开发Visual Studio 2005插件的文章,《用Visual Studio 2005 开发VB.NET-C#...

group by 统计行数

xxx

推荐一个代码行数统计工具cloc

代码行数统计工具cloc,它不但能统计代码行数,还能自动过滤掉代码中的注释,使用起来也很方便,强力推荐。 安装很方便,Ubuntu上直接udo apt-get install cloc就可以了

统计项目代码行数Count Lines of Code(CLOC)

统计代码总行数挺麻烦的 VS2010里虽然有Code Metrics Analyze 但这个工具只能用在托管的项目中 于是在这里找到一个小的命令行工具统计代码行数 用法很简单 如下(转自Wiki) ...

统计你写的java代码行数

统计你写的java代码行数,http://www.examda.com/ncre2/JAVA/bianc/20100308/084704853.html,http://hi.baidu.com/%B7...
  • WYZSC
  • WYZSC
  • 2011-02-24 14:13
  • 5150

PHP源代码数组统计count分析

偶然在百度知道中看到有个同学问起count及strlen的效率问题,好吧这个问题我当初没理解透彻,认为其不属两个不一样的东西不可比较,后来看了楼主的回复才反应过来,所以自己也去找了下源码查看下。现在总...

php(问题记录表)统计页面

问题记录表统计页完整代码 统计 更多文章
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)