2009年是什么年| 室性早搏是什么原因引起的| 灰指甲医院挂什么科| 左手小指和无名指发麻是什么原因| 为什么同房会有刺痛感| 左边偏头痛什么原因| 什么是药食同源| 痔疮挂什么科| 为什么会说梦话| 梦见摘水果是什么意思| 梦到门坏了是什么意思| 积劳成疾的疾是什么意思| 蛋白粉适合什么人群吃| 连号的钱为什么不能花| 痛风喝什么水| 用加一笔是什么字| 股骨头坏死什么症状| 三亚是什么海| gas是什么意思| 胃寒吃什么中成药| 早射吃什么药最好| 吃什么能降低尿蛋白| 全员加速中什么时候播| 京东什么时候优惠最大| simon什么意思| 鸡生肖配什么生肖最好| 清白是什么意思| 七月三号什么星座| 脾是起什么作用的| 谷氨酰基转移酶高是什么原因| 什么是唐氏综合征| 手掌中间那条线是什么线| 什么叫资本运作| 缄默什么意思| 肾虚腰疼吃什么药最有效| 孩子铅高有什么症状| 龙的幸运色是什么颜色| 红细胞低吃什么补得快| 五塔标行军散有什么功效| 伤口拆线挂什么科| 女人胯骨疼是什么原因| 脚面浮肿是什么原因| ccp抗体是什么意思| 舌头变肥大什么原因| only什么意思| 息肉有什么危害| 臭嗨是什么意思| 小三最怕什么| 下呼吸道是指什么部位| 头痛吃什么药效果好| 贫血吃什么最好| 屁特别臭是什么原因| 27年属什么生肖| 直落是什么意思| 党工委书记是什么级别| 身份证末尾x代表什么| 一朵什么| 浅粉色配什么颜色好看| 为什么喝水血糖也会高| 感冒流鼻涕咳嗽吃什么药好| 12月什么星座| 虾仁和什么包饺子好吃| 煤气是什么味道| 来曲唑片什么时候吃最好| 相公是什么意思| 夹页念什么| pdn是什么意思| 算筹指的是什么| 什么人容易得老年痴呆| 达英35是什么药| 口干舌燥是什么意思| 女性寒性体质喝什么茶| 什么零食热量低有利于减肥| 褪黑素什么时候吃| 乙肝135阳性是什么意思| 什么是六爻| 灬是什么意思| 规格型号是什么意思| 谷丙转氨酶偏高吃什么药| 父母是什么意思| 诸君是什么意思| 什么时候立夏| 智齿为什么会横着长| 流鼻涕吃什么药好得快| 坪效是什么意思| 黄晓明的老婆叫什么名字| 肝脏b超能检查出什么| 什么眉头| 今年25岁属什么生肖的| 开放性神经管缺陷是什么意思| 鳄鱼的天敌是什么动物| 什么芒果好吃| 鼻窦炎是什么原因引起的呢| 什么是免疫力| 书卷气是什么意思| 打九价是什么意思| 海肠是什么| 速干裤是什么面料| 豆腐和什么不能一起吃| 头是什么意思| 贫血吃什么药效果好| 临界是什么意思| 375是什么意思| 孕妇梦见下雨是什么意思| 手淫是什么意思| lcr是什么意思| 头痛呕吐什么原因| 西地那非有什么副作用| 喜闻乐见什么意思| 这是什么车| pm是什么的缩写| 规培证什么时候发| ox什么意思| 什么的葡萄| 舌头上有溃疡是什么原因| 豆汁是什么做的| abo是什么意思| 积食吃什么药| 脑肿瘤有什么症状| 民族是什么意思| 二院是什么医院| 做狐臭手术挂什么科| 尿有味是什么原因| 皮肤溃烂化脓用什么药| 小处男是什么意思| 医联体是什么意思| 什么玉最好有灵性养人| 什么花不能浇水| 吃饭容易出汗是什么原因| 甲沟炎用什么药膏| 珍珠母贝是什么东西| 身上搓出来的泥是什么| 痈疡是什么意思| 空调为什么不制冷| 臆想是什么意思| 舒畅的舅舅是做什么的| 手指发红是什么原因| 水逆是什么意思| 碘伏用什么可以洗掉| 笑哭表情什么意思| 黄精和什么煲汤好| 煮虾放什么| 头疼是什么原因引起| 维生素c不能和什么一起吃| 为什么会得胆结石| 间接胆红素偏高吃什么药| 送男生什么生日礼物好| 50年是什么婚| ooh什么意思| 黄色裤子配什么上衣好看| 吃什么会拉肚子| 外阴瘙痒用什么药膏| 周海媚什么病| 9.1号是什么星座| 崩溃什么意思| 随访是什么意思| hdv是什么病毒| 生地和熟地有什么区别| 麦冬的功效与作用是什么| 为什么十五的月亮十六圆| 女性多囊是什么意思| 小孩一到晚上就发烧是什么原因| 阁五行属什么| 76年属什么生肖| 斩金念什么| 脉络是什么意思| ca724是什么意思| 特别提款权是什么意思| 无聊干什么| dha有什么作用| 浑身痒是什么原因| 1963属什么| 糖尿病人可以吃什么水果| 糖尿病人喝什么茶最好| 阴道有褐色分泌物是什么原因| 5月30是什么星座| 一天老是放屁是什么原因| 知了猴什么时候出土| 什么无比| 什么时候入梅| 多巴胺是什么药| 冷暴力是什么意思| abs材质是什么| 胎儿靠什么吸收营养| 支气管炎什么症状| 腰果不能和什么一起吃| 蜂窝数据什么意思| 一班三检是指什么| 行动派是什么意思| 庚辰五行属什么| 怀孕了用排卵试纸测会显示什么| 苏轼是什么派词人| 汇字五行属什么| 女人眉心有痣代表什么| 素鲍鱼是什么做的| 贪嗔痴是什么意思| 芬太尼是什么| 鱼肝油有什么功效| 爱新觉罗是什么意思| 鸭锁骨是什么部位| 狐狸的尾巴有什么作用| 牛市是什么意思| 脚气去医院挂什么科| 夫妻分房睡意味着什么| 老年人缺钾是什么原因引起的| 男蛇配什么属相最好| 溜车是什么意思| 心痛吃什么药效果好| 脂肪肝是什么引起的| 夏令时是什么意思| 纯钛是什么材质| 紫茉莉什么时候开花| lr是什么意思| 迪丽热巴是什么族| 浮尘是什么意思| bbd是什么意思| mrv是什么检查| 没有斗代表什么| 木加号读什么| 荷花和莲花有什么区别| 穿刺活检能查出肿瘤是什么性质吗| 鼻息肉长什么样| 潜叶蝇打什么药效果好| 抗体高是什么意思| 3月16号是什么星座| b群链球菌是什么意思| 心衰竭是什么病严重吗| 什么是香油| 烧烤用什么油| 渗透压是什么意思| 梦见仙鹤是什么意思| 最是什么意思| 巨蟹座什么性格| KH是什么| 大枣枸杞泡水喝有什么好处| 淋巴细胞偏低是什么原因| 什么是股癣| petct是什么| 煮虾放什么| 失眠是什么原因导致的| 狂狷是什么意思| 电位是什么| 肝囊肿是什么| 老年人腿浮肿是什么原因引起的| 盐酸安罗替尼胶囊主要治疗什么| 为什么相爱的人却不能在一起| 舌吻是什么意思| 下雨了是什么意思| 纱布是什么材质| 胡子长得快是什么原因| vegan是什么意思| 女生取什么名字好听| 晚年是什么意思| 深情什么意思| 什么生金| 身上瘙痒是什么原因| 梦见吃核桃是什么意思| 子宫内膜增生是什么原因| 送手镯的寓意是什么| 汤圆和元宵有什么区别| 维生素c十一什么意思| 试金石是什么意思| 送女生什么生日礼物比较好| 西门子洗衣机不脱水是什么原因| 百度
百度 她是家里这一代唯一一个跟着爷爷奶奶长大的孩子,而爷爷对她影响最大。

Source lines of code (SLOC), also known as lines of code (LOC), is a software metric used to measure the size of a computer program by counting the number of lines in the text of the program's source code. SLOC is typically used to predict the amount of effort that will be required to develop a program, as well as to estimate programming productivity or maintainability once the software is produced.

Measurement methods

edit

Multiple useful comparisons involve only the order of magnitude of lines of code in a project. Using lines of code to compare a 10,000-line project to a 100,000-line project is far more useful than when comparing a 20,000-line project with a 21,000-line project. While it is debatable exactly how to measure lines of code, discrepancies of an order of magnitude can be clear indicators of software complexity or man-hours.

There are two major types of SLOC measures: physical SLOC (LOC) and logical SLOC (LLOC). Specific definitions of these two measures vary, but the most common definition of physical SLOC is a count of lines in the text of the program's source code excluding comment lines.[1]

Logical SLOC attempts to measure the number of executable "statements", but their specific definitions are tied to specific computer languages (one simple logical SLOC measure for C-like programming languages is the number of statement-terminating semicolons). It is much easier to create tools that measure physical SLOC, and physical SLOC definitions are easier to explain. However, physical SLOC measures are more sensitive to logically irrelevant formatting and style conventions than logical SLOC. However, SLOC measures are often stated without giving their definition, and logical SLOC can often be significantly different from physical SLOC.

Consider this snippet of C code as an example of the ambiguity encountered when determining SLOC:

for (i = 0; i < 100; i++) printf("hello"); /* How many lines of code is this? */

In this example we have:

  • 1 physical line of code (LOC),
  • 2 logical lines of code (LLOC) (for statement and printf statement),
  • 1 comment line.

Depending on the programmer and coding standards, the above "line" of code could be written on multiple separate lines:

/* Now how many lines of code is this? */
for (i = 0; i < 100; i++)
{
    printf("hello");
}

In this example we have:

  • 4 physical lines of code (LOC): is placing braces work to be estimated?
  • 2 logical lines of code (LLOC): what about all the work writing non-statement lines?
  • 1 comment line: tools must account for all code and comments regardless of comment placement.

Even the "logical" and "physical" SLOC values can have a large number of varying definitions. Robert E. Park (while at the Software Engineering Institute) and others developed a framework for defining SLOC values, to enable people to carefully explain and define the SLOC measure used in a project. For example, most software systems reuse code, and determining which (if any) reused code to include is important when reporting a measure.

Origins

edit

At the time when SLOC was introduced as a metric, the most commonly used languages, such as FORTRAN and assembly language, were line-oriented languages. These languages were developed at the time when punched cards were the main form of data entry for programming. One punched card usually represented one line of code. It was one discrete object that was easily counted. It was the visible output of the programmer, so it made sense to managers to count lines of code as a measurement of a programmer's productivity, even referring to such as "card images". Today, the most commonly used computer languages allow a lot more leeway for formatting. Text lines are no longer limited to 80 or 96 columns, and one line of text no longer necessarily corresponds to one line of code.

Usage of SLOC measures

edit

SLOC measures are somewhat controversial, particularly in the way that they are sometimes misused. Experiments have repeatedly confirmed that effort is highly correlated with SLOC[citation needed], that is, programs with larger SLOC values take more time to develop. Thus, SLOC can be effective in estimating effort. However, functionality is less well correlated with SLOC: skilled developers may be able to develop the same functionality with far less code, so one program with fewer SLOC may exhibit more functionality than another similar program. Counting SLOC as productivity measure has its caveats, since a developer can develop only a few lines and yet be far more productive in terms of functionality than a developer who ends up creating more lines (and generally spending more effort). Good developers may merge multiple code modules into a single module, improving the system yet appearing to have negative productivity because they remove code. Furthermore, inexperienced developers often resort to code duplication, which is highly discouraged as it is more bug-prone and costly to maintain, but it results in higher SLOC.

SLOC counting exhibits further accuracy issues at comparing programs written in different languages unless adjustment factors are applied to normalize languages. Various computer languages balance brevity and clarity in different ways; as an extreme example, most assembly languages would require hundreds of lines of code to perform the same task as a few characters in APL. The following example shows a comparison of a "hello world" program written in BASIC, C, and COBOL (a language known for being particularly verbose).

BASIC C COBOL
PRINT "hello, world"
#include <stdio.h>

int main() {
    printf("hello, world\n");
}
      identification division.
      program-id. hello .
      procedure division.
      display "hello, world"
      goback .
      end program hello .
Lines of code: 1
(no whitespace)
Lines of code: 4
(excluding whitespace)
Lines of code: 6
(excluding whitespace)

Another increasingly common problem in comparing SLOC metrics is the difference between auto-generated and hand-written code. Modern software tools often have the capability to auto-generate enormous amounts of code with a few clicks of a mouse. For instance, graphical user interface builders automatically generate all the source code for a graphical control elements simply by dragging an icon onto a workspace. The work involved in creating this code cannot reasonably be compared to the work necessary to write a device driver, for instance. By the same token, a hand-coded custom GUI class could easily be more demanding than a simple device driver; hence the shortcoming of this metric.

There are several cost, schedule, and effort estimation models which use SLOC as an input parameter, including the widely used Constructive Cost Model (COCOMO) series of models by Barry Boehm et al., PRICE Systems True S and Galorath's SEER-SEM. While these models have shown good predictive power, they are only as good as the estimates (particularly the SLOC estimates) fed to them. Many[2] have advocated the use of function points instead of SLOC as a measure of functionality, but since function points are highly correlated to SLOC (and cannot be automatically measured) this is not a universally held view.

Example

edit

According to Vincent Maraia,[3] the SLOC values for various operating systems in Microsoft's Windows NT product line are as follows:

Year Operating system SLOC (million)
1993 Windows NT 3.1 4–5[3]
1994 Windows NT 3.5 7–8[3]
1996 Windows NT 4.0 11–12[3]
2000 Windows 2000 more than 29[3]
2001 Windows XP 45[4][5]
2003 Windows Server 2003 50[3]

David A. Wheeler studied the Red Hat distribution of the Linux operating system, and reported that Red Hat Linux version 7.1[6] (released April 2001) contained over 30 million physical SLOC. He also extrapolated that, had it been developed by conventional proprietary means, it would have required about 8,000 person-years of development effort and would have cost over $1 billion (in year 2000 U.S. dollars).

A similar study was later made of Debian GNU/Linux version 2.2 (also known as "Potato"); this operating system was originally released in August 2000. This study found that Debian GNU/Linux 2.2 included over 55 million SLOC, and if developed in a conventional proprietary way would have required 14,005 person-years and cost US$1.9 billion to develop. Later runs of the tools used report that the following release of Debian had 104 million SLOC, and as of year 2005, the newest release is going to include over 213 million SLOC.

Year Operating system SLOC (million)
2000 Debian 2.2 55–59[7][8]
2002 Debian 3.0 104[8]
2005 Debian 3.1 215[8]
2007 Debian 4.0 283[8]
2009 Debian 5.0 324[8]
2012 Debian 7.0 419[9]
2009 OpenSolaris 9.7
FreeBSD 8.8
2005 Mac OS X 10.4 86[10][n 1]
1991 Linux kernel 0.01 0.010239
2001 Linux kernel 2.4.2 2.4[6]
2003 Linux kernel 2.6.0 5.2
2009 Linux kernel 2.6.29 11.0
2009 Linux kernel 2.6.32 12.6[11]
2010 Linux kernel 2.6.35 13.5[12]
2012 Linux kernel 3.6 15.9[13]
2025-08-07 Linux kernel pre-4.2 20.2[14]

Utility

edit

Advantages

edit
  1. Scope for automation of counting: since line of code is a physical entity, manual counting effort can be easily eliminated by automating the counting process. Small utilities may be developed for counting the LOC in a program. However, a logical code counting utility developed for a specific language cannot be used for other languages due to the syntactical and structural differences among languages. Physical LOC counters, however, have been produced which count dozens of languages.
  2. An intuitive metric: line of code serves as an intuitive metric for measuring the size of software because it can be seen, and the effect of it can be visualized. Function points are said to be more of an objective metric which cannot be imagined as being a physical entity, it exists only in the logical space. This way, LOC comes in handy to express the size of software among programmers with low levels of experience.
  3. Ubiquitous measure: LOC measures have been around since the earliest days of software.[15] As such, it is arguable that more LOC data is available than any other size measure.

Disadvantages

edit
  1. Lack of accountability: lines-of-code measure suffers from some fundamental problems. Some [who?] think that it isn't useful to measure the productivity of a project using only results from the coding phase, which usually accounts for only 30% to 35% of the overall effort.[citation needed]
  2. Lack of cohesion with functionality: though experiments [by whom?] have repeatedly confirmed that while effort is highly correlated with LOC, functionality is less well correlated with LOC. That is, skilled developers may be able to develop the same functionality with far less code, so one program with less LOC may exhibit more functionality than another similar program. In particular, LOC is a poor productivity measure of individuals, because a developer who develops only a few lines may still be more productive than a developer creating more lines of code – even more: some good refactoring like "extract method" to get rid of redundant code and keep it clean will mostly reduce the lines of code.
  3. Adverse impact on estimation: because of the fact presented under point #1, estimates based on lines of code can adversely go wrong, in all possibility.
  4. Developer's experience: implementation of a specific logic differs based on the level of experience of the developer. Hence, number of lines of code differs from person to person. An experienced developer may implement certain functionality in fewer lines of code than another developer of relatively less experience does, though they use the same language.
  5. Difference in languages: consider two applications that provide the same functionality (screens, reports, databases). One of the applications is written in C++ and the other application written in a language like COBOL. The number of function points would be exactly the same, but aspects of the application would be different. The lines of code needed to develop the application would certainly not be the same. As a consequence, the amount of effort required to develop the application would be different (hours per function point). Unlike lines of code, the number of function points will remain constant.
  6. Advent of GUI tools: with the advent of GUI-based programming languages and tools such as Visual Basic, programmers can write relatively little code and achieve high levels of functionality. For example, instead of writing a program to create a window and draw a button, a user with a GUI tool can use drag-and-drop and other mouse operations to place components on a workspace. Code that is automatically generated by a GUI tool is not usually taken into consideration when using LOC methods of measurement. This results in variation between languages; the same task that can be done in a single line of code (or no code at all) in one language may require several lines of code in another.
  7. Problems with multiple languages: in today's software scenario, software is often developed in more than one language. Very often, a number of languages are employed depending on the complexity and requirements. Tracking and reporting of productivity and defect rates poses a serious problem in this case, since defects cannot be attributed to a particular language subsequent to integration of the system. Function point stands out to be the best measure of size in this case.
  8. Lack of counting standards: there is no standard definition of what a line of code is. Do comments count? Are data declarations included? What happens if a statement extends over several lines? – These are the questions that often arise. Though organizations like SEI and IEEE have published some guidelines in an attempt to standardize counting, it is difficult to put these into practice especially in the face of newer and newer languages being introduced every year.
  9. Psychology: a programmer whose productivity is being measured in lines of code will have an incentive to write unnecessarily verbose code. The more management is focusing on lines of code, the more incentive the programmer has to expand their code with unneeded complexity. This is undesirable, since increased complexity can lead to increased cost of maintenance and increased effort required for bug fixing.

In the PBS documentary Triumph of the Nerds, Microsoft executive Steve Ballmer criticized the use of counting lines of code:

In IBM there's a religion in software that says you have to count K-LOCs, and a K-LOC is a thousand lines of code. How big a project is it? Oh, it's sort of a 10K-LOC project. This is a 20K-LOCer. And this is 50K-LOCs. And IBM wanted to sort of make it the religion about how we got paid. How much money we made off OS/2, how much they did. How many K-LOCs did you do? And we kept trying to convince them – hey, if we have – a developer's got a good idea and he can get something done in 4K-LOCs instead of 20K-LOCs, should we make less money? Because he's made something smaller and faster, less K-LOC. K-LOCs, K-LOCs, that's the methodology. Ugh! Anyway, that always makes my back just crinkle up at the thought of the whole thing.

According to the Computer History Museum Apple Developer Bill Atkinson in 1982 found problems with this practice:

When the Lisa team was pushing to finalize their software in 1982, project managers started requiring programmers to submit weekly forms reporting on the number of lines of code they had written. Bill Atkinson thought that was silly. For the week in which he had rewritten QuickDraw’s region calculation routines to be six times faster and 2000 lines shorter, he put “-2000″ on the form. After a few more weeks the managers stopped asking him to fill out the form, and he gladly complied.[16][17]

See also

edit

Notes

edit
  1. ^ Possibly including the whole iLife suite, not just the operating system and usually bundled applications.

References

edit
  1. ^ Vu Nguyen; Sophia Deeds-Rubin; Thomas Tan; Barry Boehm (2007), A SLOC Counting Standard (PDF), Center for Systems and Software Engineering, University of Southern California
  2. ^ IFPUG "Quantifying the Benefits of Using Function Points"
  3. ^ a b c d e f "How Many Lines of Code in Windows?". Knowing.NET. December 6, 2005. Retrieved 2025-08-07.
    This in turn cites Vincent Maraia's The Build Master as the source of the information.
  4. ^ "How Many Lines of Code in Windows XP?". Microsoft. January 11, 2011. Archived from the original on 2025-08-07.
  5. ^ "A history of Windows - Microsoft Windows". 2025-08-07. Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  6. ^ a b David A. Wheeler (2025-08-07). "More Than a Gigabuck: Estimating GNU/Linux's Size".
  7. ^ González-Barahona, Jesús M.; Miguel A. Ortu?o Pérez; Pedro de las Heras Quirós; José Centeno González; Vicente Matellán Olivera. "Counting potatoes: the size of Debian 2.2". debian.org. Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  8. ^ a b c d e Robles, Gregorio. "Debian Counting". Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  9. ^ Debian 7.0 was released in May 2013. The number is an estimate published on 2025-08-07, using the code base which would become Debian 7.0, using the same software method as for the data published by David A. Wheeler. James Bromberger. "Debian Wheezy: US$19 Billion. Your price... FREE!". Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  10. ^ Jobs, Steve (August 2006). "Live from WWDC 2006: Steve Jobs Keynote". Retrieved 2025-08-07. 86 million lines of source code that was ported to run on an entirely new architecture with zero hiccups.
  11. ^ Thorsten Leemhuis (2025-08-07). "What's new in Linux 2.6.32". Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  12. ^ Greg Kroah-Hartman; Jonathan Corbet; Amanda McPherson (April 2012). "Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It". The Linux Foundation. Retrieved 2025-08-07.
  13. ^ Thorsten Leemhuis (2025-08-07). "Summary, Outlook, Statistics - The H Open: News and Features". Archived from the original on 2025-08-07.
  14. ^ "Linux-Kernel durchbricht die 20-Millionen-Zeilen-Marke". 30 June 2015.
  15. ^ IFPUG "a short history of lines of code (loc) metrics"
  16. ^ "MacPaint and QuickDraw Source Code". CHM. 2025-08-07. Retrieved 2025-08-07.
  17. ^ "Folklore.org: -2000 Lines Of Code". www.folklore.org. Retrieved 2025-08-07.

Further reading

edit
edit
6月5号是什么星座的 猴子尾巴的作用是什么 多囊不能吃什么食物 女排精神是什么 乳晕是什么
豆沫是什么做的 脾胃虚吃什么水果好 领养孩子需要什么条件 什么的尘土 黄褐斑是什么样的图片
大人是什么意思 出差什么意思 夏字五行属什么 孕检挂什么科 姨妈期间不能吃什么
对方忙线中什么意思 嘌呤是什么东西 八婆什么意思 鸡杂是什么 老爹鞋适合什么人穿
头皮发麻是什么病的前兆hcv9jop6ns1r.cn 睡觉起来脸肿是什么原因引起的hcv9jop4ns6r.cn 不思量 自难忘什么意思chuanglingweilai.com 梦见黄鼠狼是什么意思hcv8jop8ns8r.cn 什么是再生障碍性贫血hcv8jop4ns9r.cn
舌头白腻厚苔是什么原因hcv9jop4ns8r.cn 什么外之什么hcv9jop8ns3r.cn 还行吧是什么意思hcv8jop5ns1r.cn 淀粉样变性是什么病hcv8jop8ns1r.cn 鲨鱼吃什么hcv8jop9ns6r.cn
雌二醇高有什么症状hcv7jop6ns6r.cn 四大是什么hcv7jop9ns1r.cn 儿童结膜炎用什么眼药水dayuxmw.com 做乳腺彩超挂什么科sanhestory.com 参加追悼会穿什么衣服ff14chat.com
来月经头晕是什么原因hcv7jop9ns2r.cn 胺试验阳性是什么意思hcv9jop5ns9r.cn 血压低是什么原因hcv8jop2ns8r.cn 湿疹是什么病hcv9jop6ns7r.cn 什么的衣裳hcv9jop4ns8r.cn
百度