EdmondFrank's 时光足迹

この先は暗い夜道だけかもしれない それでも信じて進むんだ。星がその道を少しでも照らしてくれるのを。
或许前路永夜,即便如此我也要前进,因为星光即使微弱也会我为照亮前途。
——《四月は君の嘘》

Linux进程内存管理

Linux进程内存管理

1.程序的结构与进程结构

$ size test

text data bss dec hex filename
181617 432 18844 200893 310bd ./book

一个可执行程序包括三个部分
代码段:存放指令,操作以及只读的常量
数据段:全局或者静态的已经初始化的变量
BSS段 :全局或者静态的未初始化的变量

2.进程管理的过程

在执行程序时,系统首先在内核空间中创建一个进程,为这个进程申请一个PCB (进程控制块task_struct),用于管理整个进程的所有资源,其中mm_struct成员用来管理与当前 进程相关的所有内存资源.

(1)代码段,数据段,BSS段,直接从磁盘拷贝到当前内存空间,大小相等.
(2)动态的空间:堆,栈空间,mmap段(用于映射其他的库的相关信息)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$ cat /proc/7450/maps
08048000-08152000 r-xp 00000000 08:01 36175926   /bin/bash
08152000-08153000 r--p 00109000 08:01 36175926   /bin/bash
08153000-08158000 rw-p 0010a000 08:01 36175926   /bin/bash
08158000-0815d000 rw-p 00000000 00:00 0 
084cf000-08994000 rw-p 00000000 00:00 0          [heap]
b710d000-b7118000 r-xp 00000000 08:01 21496849   /lib/i386-linux-gnu/libnss_files-2.23.so
b7118000-b7119000 r--p 0000a000 08:01 21496849   /lib/i386-linux-gnu/libnss_files-2.23.so
b7119000-b711a000 rw-p 0000b000 08:01 21496849   /lib/i386-linux-gnu/libnss_files-2.23.so
b711a000-b7120000 rw-p 00000000 00:00 0 
b7120000-b712b000 r-xp 00000000 08:01 21496770   /lib/i386-linux-gnu/libnss_nis-2.23.so
b712b000-b712c000 r--p 0000a000 08:01 21496770   /lib/i386-linux-gnu/libnss_nis-2.23.so
b712c000-b712d000 rw-p 0000b000 08:01 21496770   /lib/i386-linux-gnu/libnss_nis-2.23.so
b7151000-b7158000 r--s 00000000 08:01 48245384   /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache
b7158000-b730b000 r--p 002d7000 08:01 48234512   /usr/lib/locale/locale-archive
b730b000-b750b000 r--p 00000000 08:01 48234512   /usr/lib/locale/locale-archive
b750b000-b750c000 rw-p 00000000 00:00 0 
b750c000-b76bb000 r-xp 00000000 08:01 21497064   /lib/i386-linux-gnu/libc-2.23.so
b76bb000-b76bc000 ---p 001af000 08:01 21497064   /lib/i386-linux-gnu/libc-2.23.so
b76bc000-b76be000 r--p 001af000 08:01 21497064   /lib/i386-linux-gnu/libc-2.23.so
b76be000-b76bf000 rw-p 001b1000 08:01 21497064   /lib/i386-linux-gnu/libc-2.23.so
b76bf000-b76c2000 rw-p 00000000 00:00 0 
b76c2000-b76c5000 r-xp 00000000 08:01 21497066   /lib/i386-linux-gnu/libdl-2.23.so
b76c5000-b76c6000 r--p 00002000 08:01 21497066   /lib/i386-linux-gnu/libdl-2.23.so
b76c6000-b76c7000 rw-p 00003000 08:01 21497066   /lib/i386-linux-gnu/libdl-2.23.so
b76c7000-b76e7000 r-xp 00000000 08:01 21496816   /lib/i386-linux-gnu/libtinfo.so.5.9
b76e7000-b76e9000 r--p 0001f000 08:01 21496816   /lib/i386-linux-gnu/libtinfo.so.5.9
b76e9000-b76ea000 rw-p 00021000 08:01 21496816   /lib/i386-linux-gnu/libtinfo.so.5.9
b76ef000-b7706000 r-xp 00000000 08:01 21496768   /lib/i386-linux-gnu/libnsl-2.23.so
b7706000-b7707000 r--p 00016000 08:01 21496768   /lib/i386-linux-gnu/libnsl-2.23.so
b7707000-b7708000 rw-p 00017000 08:01 21496768   /lib/i386-linux-gnu/libnsl-2.23.so
b7708000-b770a000 rw-p 00000000 00:00 0 
b770a000-b7712000 r-xp 00000000 08:01 21496134   /lib/i386-linux-gnu/libnss_compat-2.23.so
b7712000-b7713000 r--p 00007000 08:01 21496134   /lib/i386-linux-gnu/libnss_compat-2.23.so
b7713000-b7714000 rw-p 00008000 08:01 21496134   /lib/i386-linux-gnu/libnss_compat-2.23.so
b7714000-b7715000 r--p 002d4000 08:01 48234512   /usr/lib/locale/locale-archive
b7715000-b7717000 rw-p 00000000 00:00 0 
b7717000-b7719000 r--p 00000000 00:00 0          [vvar]
b7719000-b771a000 r-xp 00000000 00:00 0          [vdso]
b771a000-b773c000 r-xp 00000000 08:01 21497056   /lib/i386-linux-gnu/ld-2.23.so
b773c000-b773d000 rw-p 00000000 00:00 0 
b773d000-b773e000 r--p 00022000 08:01 21497056   /lib/i386-linux-gnu/ld-2.23.so
b773e000-b773f000 rw-p 00023000 08:01 21497056   /lib/i386-linux-gnu/ld-2.23.so
bff73000-bff94000 rw-p 00000000 00:00 0          [stack]

所示地址并不是真正的物理地址,而是虚拟地址.使用虚拟地址是出于对资源的保护 对系统来说,内存资源是宝贵的,而一个程序执行并不需要立即将所有资源加载到内存, 而实际上可采用写时申请的方法

虚拟地址的优点:

  1. 保护系统,避免用户程序非法访问内存造成内核崩溃.
  2. 节约资源,采用映射方法,使用时全用缺页的方法申请物理空间,即提高了效率也节约物理空间

3.进程地址空间的申请

32bit平台下,一个进程拥有4G的虚拟地址空间

映射规则
1. 代码段,数据段,BSS段,直接从磁盘拷贝至内存.在linux 32bit平台上起始地址一般为 0x08048000
2. 堆栈,动态变化.
3. mmap映射的文件(普通文件以及库),用户需自行调用mmap函数
4. 高地址1G空间:供内核映射处理,用户空间不能直接访问

堆和栈的起始地址是随机产生的,其目的是避免产生安全漏洞,但是可以使用brk/sbrk函数指定在堆中申请空间的起始地址

brk/sbrk函数声明

1
2
3
4
5
   #include <unistd.h>

   int brk(void *addr);  //指定下次申请堆空间的起始地址

   void *sbrk(intptr_t increment);  //在当前地址位置后移increament字节,为0时返回当前地址

代码示例:

1
2
3
4
5
6
7
8
9
10
11
 #include<stdlib.h>
 #include<stdio.h>
 int i = 10;
 int main(int argc,char *argv[])
 {
     brk(0x09e50000);
     printf("brk return:%p\n",sbrk(0));
     char *ptr = malloc(102400);
     printf("new malloc:%p \n",ptr);
     return 0;
 }

输出结果
brk return:0x9e50000
new malloc:0x9e51010

strace工具可以追踪进程空间的加载

4.空间分配规则

  1. 代码段,数据段,BSS段的地址在编译时已经固定.
  2. BSS的结束段与堆的起始地址之间有一定间隙,间隙大小随机.
  3. brk调整的仅仅是堆中申请空间的起始值
  4. 系统默认认为每个进程分配的堆空间大小是固定的.使用sbrk(0)得到的是我们堆空间的结束值.
  5. 真正编程中,很少使用brk/sbrk调整位置

5.栈的说明

栈:从高地址向低地址增长,起始值也是随机的.主要存放局部变量, 新调用子函数时函数的参数以及返回值,由OS自动管理.

Linux程序开发-命令行选项及参数

Linux程序开发-命令行选项及参数

1.C语言中命令行参数的读取与输出

1
2
3
4
5
6
7
8
9
 #include <stdio.h>
 int main(int argc,char* argv[])
 {
    int i;
    for(i=0;i<argc;i++)
    {
        printf("argv[%d] = %s\n",i,argv[i]);
    }
 }

当命令行选项很多时,可以使用库函数获取

1
2
getopt      //短选项
getlongopt  //长选项

函数声明

1
2
 #include <unistd.h>
 int getopt(int argc,char* const argv[],const char *optstring);

以下全局变量用于配合getopt函数

extern char *optargr;
extern int optind;
extern int optopt;
extern int opterr;

2.有关选项和参数的区别

eg:

-a : 选项,一般表示所有

-h host: 其中,h表示选项,而host代表了一个主机ip也就是选项h的参数

具体参数的解析,可以参考getopt的第三个参数的使用约定

3.getopt的执行过程

当getopt每成功执行一次

1
2
3
4
extern char *optarg; //指向下一个要扫描的参数
extern int optind;   //索引修改为下一个要处理的指针的下标
extern int optopt;   //用于存储可能的错误
extern int opterr;   //如果opterr == 0;则不将错误输出到标准错误输出设备

4.getopt使用实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char** argv)
{
    int result;
    opterr = 0;
    while ((result = getopt(argc,argv,"ab:c::"))!= -1)
    {
        switch(result)
        {
        case 'a':
            printf("option=a,optopt=%c,optarg=%s\n",optopt,optarg);
            break;
        case 'b':
            printf("option=b,optopt=%c,optarg=%s\n",optopt,optarg);
            break;
        case 'c':
            printf("option=c,optopt=%c,optarg=%s\n",optopt,optarg);
            break;
        case '?':
            printf("result=?,optopt=%c,optarg=%s\n",optopt,optarg);
        default:
            printf("default,result=%c\n",result);
        }
        printf("argv[%d]=%s\n",optind,argv[optind]);
    }
    printf("result=-1,optind=%d\n",optind);
    return 0;
}

输入示例 ./first -a -b host -cShell

1
2
3
4
5
6
7
8
输出结果
option=a,optopt=,optarg=(null)
argv[2]=-b
option=b,optopt=,optarg=host
argv[4]=-cShell
option=c,optopt=,optarg=Shell
argv[5]=(null)
result=-1,optind=5

5.长选项判断函数getopt_long的声明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <unistd.h>

int getopt(int argc, char * const argv[],
                  const char *optstring);

extern char *optarg;
extern int optind, opterr, optopt;

#include <getopt.h>

int getopt_long(int argc,
                  char * const argv[],
                  const char *optstring,          //当前支持的短选项列表
                  const struct option *longopts,  //长选项信息
                  int *longindex);                //索引

struct option {
               const char *name;         //选项名
               int         has_arg;      //是否有参数
               int        *flag;         //标志
               int         val;          //返回值
                                };
int getopt_long_only(int argc, char * const argv[],
                  const char *optstring,
                  const struct option *longopts, int *longindex);

第四个参数的使用示例:

1
2
3
4
struct optino my_option = {
   {"help",0,NULL,'h'},
   {"output",1,NULL,'o'}
}

除了以上区别外,长选项与短选项的使用方法类似.

百度前端技术学院-任务7

百度前端技术学院-任务七

任务七:实现常见的技术产品官网的页面架构及样式布局

style.css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
* {
  padding: 0;
  margin: 0;
}

body {
  min-width: 1024px;
  font-family: 微软雅黑 ,sans-serif;
}

nav {
  height: 60px;
  width: 90%;
  margin: 0 auto;
}

a {
  text-decoration: none;
}

li {
  list-style: none;
}

.brand {
  float: left;
  height: 60px;
  line-height: 60px;
  font-size: 22px;
}

.brand em {
  display: inline-block;
  background: url(img/logo-middle.png) center center no-repeat;
  background-size:60%;
  width: 60px;
  height: 60px;
  float: left;
}

#nav-ul {
  float: right;
  height: 60px;
  line-height: 60px;
}


.nav-list {
  display: inline-block;
  width: 80px;
  text-align: center;
  height: 56px;
}

.fix {
  border-bottom: 4px solid red;
}

.nav-list a {
  text-decoration: none;
  color: #9E9E9E;
  font-size: 14px;
}

.nav-list:first-child a {
  color: red;
}

.nav-list:hover {
  border-bottom: 4px solid red;
}

.login {
  display: inline-block;
  background: url(img/login-icon.png) left center no-repeat;
  text-indent: 20px;
  color: red !important;
}

.poster {
  position: relative;
  background: url(img/back-img.jpg)no-repeat;
  background-size: 100%;
  height: 800px;
}

.slogan {
  position: absolute;
  left: 150px;
  top: 250px;
}

h2 {
  color: white;
  font-size: 70px;
  font-weight: normal;
  margin-bottom: 10px;
}

.slogan p {
  text-indent: 6px;
  color: white;
  font-size: 30px;
  margin-bottom: 5px;
}

.join-btn {
  margin-top: 40px;
  width: 300px;
  height: 50px;
  line-height: 50px;
}

.join-btn a {
  display: block;
  width: 100%;
  height: 100%;
  padding: 5px 0 5px 0;
  color: white;
  font-size: 25px;
  text-align: center;
  background-color: #e74f4d;
  letter-spacing: 3px;
  transition: background .3s;
}

.join-btn a:hover {
  background-color: #FF9800;
}

.effect {
  margin-top: 50px;
  overflow: hidden;
  margin-bottom: 50px;
}

.section-list {
  width: 25%;
  float: left;
  text-align: center;
}

.section-list p {
  padding-left: 55px;
  padding-right: 55px;
  color: #999;
  margin: 15px auto;
  letter-spacing: 1px;
  font-size: 15px;
  border-right: 2px solid #999;
}

.section-list:nth-child(4) p {
  border-right:0;
}

.introduce {
  text-align: center;
  background-color: #edecec;
  padding-top: 80px;
  padding-bottom: 80px;
}

.introduce h3 {
  padding-top: 30px;
  text-align: center;
  color: #a1a1a1;
  font-size: 50px;
  font-weight: normal;
  letter-spacing: 1px;
}

.map {
  height: 340px;
  background: url(img/map.jpg) no-repeat;
  background-size: 100%;
}

.map-introduce {
  padding-top: 50px;
  text-align: center;
  color: white;
}

.map-introduce p {
  font-size: 20px;
  padding-bottom: 3px;
}

.map-introduce span{
  margin: 0 auto;
  display: block;
  width: 20px;
  height: 2px;
  background-color:white;
  margin-bottom: 10px;
}

.map-introduce i{
  display: block;
  font-style: normal;
  font-size: 13px;
}

.select-con {
  width: 80%;
  margin: 0 auto;
  margin-top:50px;
}

.select-list {
  float: left;
  width: 20%;
  margin-right: 5%;
  position: relative;
  cursor: pointer;
}

.select-title {
  height: 35px;
  line-height: 35px;
  background-color: white;
  color: #000;
  text-indent: 10px;
  position: relative;
}

.email {
  display: block;
  position: absolute;
  top: 50%;
  right: 10px;
  width: 25px;
  height: 20px;
  margin-top: -10px;
  background-color: #be4e48;
}

.email em {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -4px;
  margin-top: -6px;
  z-index: 3;
  display: inline-block;
  width: 6px;
  height: 6px;
  border-left: 2px solid white;
    border-bottom: 2px solid white;
    transform:rotate(-45deg);
}

.select-list ul {
  display: none;
  width: 100%;
  position: absolute;
  top: 35px;
  left: 0;    
  background-color: #e4e3e5;
  padding-bottom: 15px;
  color: black;
}

.select-list:hover ul {
  display: block;
}

.select-list li {
  height: 30px;
  line-height: 30px;
  cursor: pointer;
}

.select-list li:hover {
  color: white;
  background-color: #be4e48;
}

.select-list li:hover i{
  opacity: 1;
}

.select-list i {
  opacity: 0;
  width: 20px;
  height: 20px;
  margin-right: 5px;
  margin-left: 5px;
  display: inline-block;
}

.select-list i:after{
  content: '√';
}

.select-btn {
  height: 35px;
  line-height: 35px;
  background-color: #be4e48;
  text-align: center;
  color: white;
  letter-spacing: 15px;
}

.activity {
  overflow: hidden;
  padding: 100px 0 100px 0;
  background-color: #f7f7f7;
}

.acvivity-con {
  width: 80%;
  text-align: center;
  margin: 0 auto;
}

.activity-list {
  width: 25%;
  float: left;
}

.activity-list img {
  border-width: 10px 7px;
  border-color: white;
  border-style: solid;
}

.act-site {
  padding-top: 15px;
  font-size: 15px;
}

.act-site-top {
  text-align: center;
  font-size: 20px;
  letter-spacing: 20px;
  text-indent: 20px;
}

.act-site-top + p{
  padding-bottom: 20px;
  color: #b5b5b5;
  font-size: 14px;
}

.activity-list p:nth-child(3) {
  color: #b5b5b5;
  padding-top: 5px;
  font-size: 14px;
}

.rule-1 {
  overflow: hidden;
}

.socks {
  text-align: center;
  color: white;
  position: relative;
  width: 66.7%;
  height: 44vw;
  min-height: 450px;
  background: url(img/socks.jpg) center center no-repeat;
  background-size: cover;
  float: left;
}

.socks-text {
  width: 400px;
  height: 300px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -200px;
  margin-top: -150px;
}

.socks-text p:nth-child(1) {
  font-size: 3em;
}

.socks-text p:nth-child(2) {
  font-size: 8em;
  font-weight: lighter;
}

.socks-text p:nth-child(3),.socks-text p:nth-child(4) {
  font-size: 1.5em;
}

.trangle {
  width: 0;
    height: 0;
    border-top: 20px solid transparent;
    border-right: 40px solid white;
    border-bottom: 20px solid transparent;
    position: absolute;
    top: 50%;
    right: 0;
    margin-top: -20px;
}

.socks-right {
  position: relative;
  float: left;
  text-align: center;
  height: 44vw;
  min-height: 450px;
  width: 33.3%;
}

.world-content {
  position: absolute;
  height: 300px;
  width: 300px;
  top: 50%;
  left: 50%;
  margin-left: -150px;
  margin-top: -150px;
}

.world-content-title {
  font-size: 24px;
  height: 40px;
  line-height: 40px;
}

.world-content-title span:nth-child(2):after {
  content: '/';
  color: #666;

}

.world-content-title span:nth-child(3) {
  color: red;
}

.world-content p {
  margin-top: 20px;
  color: #aaaaaa;
  font-size: 14px;
  line-height: 30px;
}

.world-content a {
  display: block;
  width: 110px;
    height: 35px;
    line-height: 35px;
    margin: 40px auto 0 auto;
    text-align: center;
    border: 1px solid #e74f4d;
    color: #e74f4d;
    font-size: 13px;
    font-weight: bold;
}

.world-btn {
  text-align: center;
  margin-top: 10px;
}

.world-btn  span{
  display: inline-block;
    width: 10px;
    height: 10px;
    margin: 0 8px;
    border-radius: 5px;
    box-sizing: border-box;
    border: 1px solid #919292;
}

.selected {
  background-color: #919292;
}

.rule-2 {
  overflow: hidden;
}

.rule-part {
  float: left;
  width: 33.3%;
  min-height: 400px;
  height: 40vw;
  position: relative;
}

.new-time {
  text-align: center;
  width: 300px;
  height: 200px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -150px;
  font-size: 1.3em;
  margin-top: -100px;
}

.new-time > * {
  margin-bottom: 20px;
}

.new-time span {
  display: inline-block;
  width: 30px;
  height: 2px;
  background-color: white;
}

.new-time a {
  display: block;
  color: white;
  width: 150px;
  height: 40px;
  line-height: 40px;
  margin: 0 auto;
  border: 2px solid white;
}

.red-bj {
  background-color: #e7504d;
  color: white;
}

.white-bj span {
  background-color: #abaaaa;
}

.white-bj a {
  border-color: #e7504d;
  color: #e7504d;
}

.photo-bj {
  background: url(img/woman.jpg) no-repeat;
  background-size: cover;
}

.left-trangle {
  width: 0;
    height: 0;
    border-top: 20px solid transparent;
    border-left: 40px solid white;
    border-bottom: 20px solid transparent;
    position: absolute;
    top: 50%;
    left: 0;
    margin-top: -20px;
}

.invitation {
  margin-top: 100px !important;
  overflow: hidden;

}

.invitation-title {
  margin-bottom: 50px !important;
  text-align: center;
}

.invitation-title h4 {
  font-weight: normal;
  font-size: 20px;
}

.invitation-title span {
  display: inline-block;
  width: 20px;
  height: 2px;
  background-color: #ea6563;
}

.invitation-title p {
  margin-top: 15px;
  color: #b7b7b7;
  font-size: 12px;
}

.invition-area {
  width: 80%;
  margin: 30px auto;
}

.invitation-protocol {
  float: left;
  width: 40%;
}

.invitation-login {
  width: 60%;
  float: left;
}

.invitation-protocol h4 {
  color: #807c7c;
  font-weight: normal;
  margin-bottom: 15px;
}

.invitation-protocol h4:nth-child(7) {
  margin-bottom: 0;
}

.invitation-protocol p {
  width: 80%;
  color:#6e6e6e;
  font-size: 12px;
}

.invitation-protocol span {
  display: inline-block;
  line-height: 15px;
  margin-right: 4px;
  width: 5px;
    height: 5px;
    border-left: 2px solid #ccc;
    border-bottom: 2px solid #ccc;
    transform: rotate(-45deg);
}

.invitation-protocol  a{
  width: 80%;
  height: 15px;
  line-height: 15px;
  display: block;
  text-align: right;
  color: #adabab;
  font-size: 10px;
  margin-bottom: 40px;
}

.input-group {
  padding-left: 3px;
    display: inline-block;
  width: calc(50% - 20px);
    margin: 5px;
    text-indent: 0px;
    background-color: #ededef;
    position: relative;
    cursor: pointer;
    font-size: 14px;  
}

.input-group:before {
  content: attr(data-label);
  position:absolute;
  height: 20px;
  line-height: 20px;
  top: 50%;
  margin-top: -12px;
}

.input-group input {
  text-indent: 80px;
  width: 100%;
  display: inline;
  background-color: #ededef;
  border: 0;
  height: 35px;
    line-height: 35px;
}

.textarea {
  width: calc(100% - 20px);
  font-size: 13px;
}

.textarea:before {
  height: 20px;
  line-height: 20px;
  top: 19px;
}

textarea {
  padding-top: 9px;
  width: 100%;
  height: 120px;
  background-color: #ededef;
  border:0;
  text-indent: 160px;
}

.login-row a {
  padding-left: 3px;
  text-align: center;
  width: calc(100% - 20px);
  height: 30px;
  line-height: 30px;
  display: block;
  margin: 5px;
  background-color: #ededef;
  color: black;
}

footer {
  margin-top: 100px;
}

.top-f {
  background-color: #32353e;
  height: 300px;
  position: relative;
}


.contact {
  width: 500px;
  height: 150px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -250px;
  margin-top: -100px;
  text-align: center;
  color: white;  
}

.contact h4 {
  font-weight: lighter;
  font-size: 20px;
  padding-bottom: 8px;
}

.contact p {
  font-size: 14px;
}

.grid-email {
  position: relative;
  width: 80%;
  height: 45px;
  line-height: 45px;
  margin: 20px auto;
}

.grid-email:after {
  content: attr(data-label);
  background-color: #6f7278;
  position: absolute;
  top: 1px;
  right: 0;
  width: 70px;
  height: 45px;
  line-height: 45px;
  cursor: pointer;
}

.grid-email input {
  height: 45px;
  border: 0;
  width: 100%;
  text-indent: 15px;
  font-size: 18px;
}

.tools {
  text-align: center;
}

.tools a {
  display: inline-block;
  height: 30px;
  width: 30px;
  margin: 10px;
}

#qq {
  background: url(img/qq.png) center center no-repeat;
}

#weibo {
  background: url(img/weibo.png) center center no-repeat;
}

#twitter {
  background: url(img/twitter.png) center center no-repeat;
}

#earth {
  background: url(img/earth.png) center center no-repeat;
}

.bot-f {
  background-color: #2f2f38;
}

.links {
  width: 85%;
  height: 50px;
  margin: 0 auto;
}

.links a {
  color: white;  
  line-height: 50px;
  font-size: 12px;
}

.links a:nth-child(2) {
  float: right;
}

index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Language" content="zh-ch"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="stylesheet" href="style.css" type="text/css"/>
  <title>任务七</title>
</head>
<body>
  <header>
      <nav>
          <div class="brand">
              <em></em>
              新世界
          </div>
          <ul id="nav-ul">
              <li class="nav-list fix"><a href="#">首页</a></li>
              <li class="nav-list"><a href="#">最新活动</a></li>
              <li class="nav-list"><a href="#">项目介绍</a></li>
              <li class="nav-list"><a href="#">爱心社区</a></li>
              <li class="nav-list"><a href="#" class="login">登录</a></li>
          </ul>
      </nav>
      <div class="poster">
          <div class="slogan">
              <h2 class="slogin-title">Time of new life</h2>
              <p>新时代,年轻的人们让我们一起</p>
              <p>体验新生活,享受新生活</p>

              <div class="join-btn">
                  <a href="#">开始体验</a>
              </div>
          </div>
      </div>
  </header>
  
  <div class="container">
      <section class="effect">
          <div class="section-list">
              <img src="img/icon-1.png" alt="">
              <p>打造全新世界,让你更爱你的生活</p>
          </div>
          <div class="section-list">
              <img src="img/icon-2.png" alt="">
              <p>丰富多彩的公益活动,发挥新世界的主人公意识</p>
          </div>
          <div class="section-list">
              <img src="img/icon-3.png" alt="">
              <p>时尚的新理念,超前体验未知的生活</p>
          </div>
          <div class="section-list">
              <img src="img/icon-4.png" alt="">
              <p>完善的培养机制,培养你的全新的世界观</p>
          </div>
      </section>

      <section class="introduce">
          <img src="img/logo-middle.png" alt="">
          <h3>关于新世界,你不知道的还有些什么</h3>   
      </section>

      <section class="map">
          <div class="map-introduce">
              <p>查找新世界城市活动信息</p>
              <span></span>
              <i>每个城市的有不同的信息,请自主查询您需要了解的城市</i>                
          </div>
          <div class="select-con">
              <div class="select-list">
                  <div class="select-title">中国
                      <em class="email"><em></em></em>
                  </div>
                  <ul>
                      <li><i></i>美国</li>
                      <li><i></i>法国</li>
                      <li><i></i>德国</li>
                      <li><i></i>新西兰</li>
                      <li><i></i>俄罗斯</li>
                      <li><i></i>日本</li>
                  </ul>
              </div>
              <div class="select-list">
                  <div class="select-title">省份
                      <em class="email"><em></em></em>
                  </div>
                  <ul>
                      <li><i></i>北京市</li>
                      <li><i></i>天津市</li>
                      <li><i></i>河北省</li>
                      <li><i></i>山西省</li>
                      <li><i></i>内蒙古自治区</li>
                      <li><i></i>辽宁省</li>
                  </ul>
              </div>
              <div class="select-list">
                  <div class="select-title">城市
                      <em class="email"><em></em></em>
                  </div>
                    <ul>
                        <li><i></i>广州</li>
                        <li><i></i>肇庆</li>
                        <li><i></i>增城</li>
                        <li><i></i>江门</li>
                    </ul>
              </div>
              <div class="select-list">
                  <div class="select-btn">搜索</div>
              </div>
          </div>
      </section>
      
      <section class="activity">
          <div class="acvivity-con">
              <div class="activity-list">
                  <img src="img/pic1.jpg" alt="">
                  <p class="act-site">北京活动</p>
                  <p>新社区大联盟</p>                       
              </div>
              <div class="activity-list">
                  <p class="act-site-top">上海活动</p>
                  <p>新社区大联盟</p>                       
                  <img src="img/pic2.jpg" alt="">
              </div>
              <div class="activity-list">
                  <img src="img/pic3.jpg" alt="">
                  <p class="act-site">深圳活动</p>
                  <p>全新海岸线观点站</p>                     
              </div>
              <div class="activity-list">
                  <img src="img/pic4.jpg" alt="">
                  <p class="act-site">香港活动</p>
                  <p>奢侈品消费大派送</p>                     
              </div>
              
          </div>
      </section>

      <section class="rules">
          <div class="rule-1">
              <div class="socks">
                  <div class="socks-text">
                      <p>新世界</p>
                      <p>TIME</p>
                      <p>@新世界-北京</p>
                      <p>2016.04.01</p>
                  </div>
                  <div class="trangle">    
                  </div>
              </div>
              <div class="socks-right">
                  <div class="world-content">
                      <div class="world-content-title">
                          <span>新世界</span>
                          <span></span>
                          <span>01</span>
                      </div>
                      <p>新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界新世界</p>

                      <a href="#">点击详情</a>

                      <div class="world-btn">
                          <span class="selected"></span>
                          <span></span>
                          <span></span>
                      </div>
                  </div>
              </div>
          </div>

          <div class="rule-2">
              <div class="rule-part red-bj">
                  <div class="new-time">
                      <p>新时代</p>
                      <p>关于爱生活的我们</p>
                      <span></span>
                      <a href="#">查看更多</a>
                  </div>                    
              </div>    
              <div class="rule-part white-bj">
                  <div class="new-time">
                      <p>新时代</p>
                      <p>关于爱生活的我们</p>
                      <span></span>
                      <a href="#">查看更多</a>
                  </div>                    
                  
              </div>    
              <div class="rule-part photo-bj">
                  <div class="left-trangle">   
                  </div>
              </div>    
          </div>
      </section>

      <section class="invitation">
          <div class="invitation-title">
              <h4>成为我们的志愿者</h4>
              <span></span>
              <p>新世界的大家庭需要每一个爱生活的人的加入,如果你够年轻,有梦想,有激情<br>那就不要犹豫快来计入我们,改变所有人的生活</p>
          </div>
          <div class="invition-area">
              <div class="invitation-protocol">
                  
                      <h4>新世界志愿者协议</h4>
                      <p>加入新世界志愿者的人员必须遵守中华人民共共和国的
                          相关法律法规,并且本着平等资源的原则
                      </p>
                      <a href="#"><span></span>more</a>

                      <h4>新世界志愿者协议</h4>
                      <p>加入新世界志愿者的人员必须遵守中华人民共共和国的
                          相关法律法规,并且本着平等资源的原则
                      </p>
                      <a href="#"><span></span>more</a>

                      <h4>更多条款</h4>
                      <a href="#"><span></span>more</a>
              </div>

              <div class="invitation-login">
                  <div class="login-row">
                      <div class="input-group" data-label="姓名">   
                          <input type="text" name="name" id="name">                          
                      </div>
                      <div class="input-group" data-label="年龄">   
                          <input type="text" name="name" id="name">                          
                      </div>
                  </div>
                  <div class="login-row">
                      <div class="input-group" data-label="联系方式"> 
                          <input type="text" name="name" id="name">                          
                      </div>
                      <div class="input-group" data-label="联系地址"> 
                          <input type="text" name="name" id="name">                          
                      </div>
                  </div>
                  <div class="login-row">
                      <div class="input-group textarea" data-label="请简单描述您梦想的生活">   
                          <textarea></textarea>                       
                      </div>
                  </div>
                  <div class="login-row">
                      <a href="#">提交申请</a>   
                  </div>
              </div>
              
          </div>
      </section>
  </div>
  
  <footer>
      <div class="top-f">
          <div class="contact">
              <h4>联系我们</h4>
              <p>为了更好的获取我们最新的产品资讯,您可以留下您的电子邮箱快速订阅我们的产品资讯
              也可以通过以下任何方式关注我们动态</p>
              <div class="grid-email" data-label="提交">
                  <input type="email" placeholder="someone's@email.com">
              </div>
              <div class="tools">
                  <a href="#" id="qq"></a>
                  <a href="#" id="weibo"></a>
                  <a href="#" id="twitter"></a>
                  <a href="#" id="earth"></a>
              </div>
          </div>
      </div>
      <div class="bot-f">
          <div class="links">
              <a href="">@2016新世界</a>
              <a href="">back to top</a>
          </div>
      </div>
  </footer>
</body>
</html>

错误:Could Not Reserve Enough Space for Object Heap的解决方案

错误:Could not reserve enough space for object heap的解决方案

Reason:

If you go thru this IBM link on java, it says that on 32 bit windows the recommended heap size is 1.5 GB and the Maximum heap size is 1.8 GB. So your jvm does not gets initialized for -Xmx2G and above.

Also if you go thru this SO answer, clearly the DLL bindings are an issue for memory reservation changing which is no trivial task. Hence what may be recommended is that you go for 64-bit Windows and a 64-bit JVM. while it will chew up more RAM, you will have much more contiguous virtual address space.

Method to fix:

For Windows

Go to Start → Control Panel → System → Advanced system settings → advanced(tab) → Environment Variables → System Variables → New:

Variable name: _JAVA_OPTIONS Variable value: -Xmx512M

For Linux

1
export _JAVA_OPTIONS=-Xmx512M

or

1
export _JAVA_OPTIONS=-Xmx1024M 

For Android Studio

Project > Gradle Scripts > gradle.properties

org.gradle.jvmargs=-Xms512m -Xmx1024m