zoukankan      html  css  js  c++  java
  • Linux 常用的一些操作

    1、查看linux中某个端口是否被占用

    1> 使用lsof

    lsof -i:端口号      查看该端口是否被占用

    2> 使用netstat

    netstat -antpu |grep 80   过滤端口80的使用状态

    2、linux中源码包编译安装后,不受systemctrl控制,启动/关闭服务方式:

    启动:/usr/local/nginx/sbin/nginx【没有报错提示,代表成功了】

    关闭:/usr/local/nginx/sbin/nginx -s stop

    报错:Address  already  in  use  【把http关掉】

    注意:同一个端口在使用过程中,不能同时被两个程序占用

    3、正常yum安装的非源码包,受systemctrl控制,可以systemctrl控制启动/关闭

    启动:systemctrl restart httpd

    关闭:systemctrl stop httpd

    启动:service start httpd

    关闭:service stop httpd

    4、Linux里面$#、$0、$1、$2、$@、$*、$$、$?、$!、$_的含义

    $#:传给脚本的变量总个数

    $0:表示脚本本身的名字

    $1:传给该shell脚本的第一个变量

    $2:传给该shell脚本的第二个变量

    $@:传给脚本的所有变量

    $*:是以一个单字符串显示所有传递给脚本的变量,与位置变量不同,这个变量可超过9个

    $$:脚本运行的当前进程ID号

    $?:显示最后命令的执行状态,0表示执行成功,非0值表示执行失败

    $!:代表最后一个后台进程的进程号,【可用于脚本进度条,执行完脚本后杀死该进程,杀死进度条】

    $_:代表上一命令的最后一个参数

    5、Linux里面隐藏所敲打的命令【常用于屏蔽显示密码及位数】

    stty -echo   隐藏键盘输入命令

    stty echo   显示键盘输入命令

    6、Linux里面的三种引号

    双引号(“ ”):界定一个完整的字符串

    单引号(‘  ’):界定一个完整的字符串,且实现屏蔽特殊符号

    反引号(` `):引用命令、提取命令结果  `命令`==$(命令)

    7、bc计算器里的scale取结果位数

     bc  [选项]

    -i:强制进入交互式模式; -l:定义使用的标准数学库; -w:对POSIX bc环境信息; -v:显示指令版本信息; -h:显示指令的帮助信息。 scale=n,管道给计算器后的值,取n位小数

    # echo "scale=2;10/3"|bc -l      # scale只对除法、取余、乘幂有效;规避办法:在最终结果加括号后除1

    3.33

    # echo "scale=2;(3.666*4.562)/1"|bc -l       #采用结果除1巧妙地把想要的结果变出来了

    16.72

    8、Linux系统里面ssh操作

      [root@room8pc205 ~]# ssh -X root@192.168.4.100   //这是正常情况下用ssh命令远程到虚拟机(ip:192.168.4.100)上

      [root@room8pc205 ~]# ssh -X -p 1992 root@192.168.4.100  //这是在虚拟机(ip:192.168.4.100)在ssh服务配置文件最后增加了端口号Port 1992的情况下远程访问方式,-X 是以支持图形界面远程,-p [端口号] 这是表示从对方ssh配置文件设置的特定端口连接对方的ssh, root@192.168.4.100是以root身份远程。

    9Linux系统里面scp操作

      [root@room8pc205 ~]# scp a.txt 192.168.4.100:/opt/   //这是正常情况下用scp命令传输文件到对方的/opt目录下

      [root@room8pc205 ~]# scp -P 1992 a.txt 192.168.4.254:/opt/  //这是在对方的ssh加了端口号1992后,传输文件到对方的/opt目录下

    10、Linux里面char与varchar的区别

      在mysql教程中char与varchar都是用来存储字符串的,但是他们的保存方式不一样,char有固定的长度,而varchar属于可变长的字符类型。

      char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。

          适宜使用char类型的情况:

    1. 存储很短的信息,比如门牌号码101,201……这样很短的信息应该用char,因为varchar还要占个byte用于存储信息长度,本来打算节约存储的现在得不偿失。
    2. 固定长度的。比如使用uuid作为主键,那用char应该更合适。因为他固定长度,varchar动态根据长度的特性就消失了,而且还要占个长度信息。
    3. 十分频繁改变的column。因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有很多的精力用于计算,而这些对于char来说是不需要的。

         使用varchar注意事项:

      还有一个关于varchar的问题是,varchar他既然可以自动适应存储空间,那我varchar(8)和varchar(255)存储应该都是一样的,那每次表设计的时候往大的方向去好了,免得以后不够用麻烦。这个思路对吗?答案是否定的。mysql会把表信息放到内存中(查询第一次后,就缓存住了...,linux下很明显,但windows下似乎没有,不知道为啥),这时内存的申请是按照固定长度来的,如果varchar很大就会有问题。所以还是应该按需索取;由于某种原因char 固定长度,所以在处理速度上要比varchar快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例。

           建意:

    • myisam 存储引擎 建议使用固定长度,数据列代替可变长度的数据列。
    • memory存储引擎 目前都使用固定数据行存储,因此无论使用char varchar列都没关系,
    • innodb 存储引擎 建意使用varchar 类型

    11、MySQL里面数值类型的数

    类型 大小 范围(有符号) 范围(无符号) 用途
    tinyint 1字节 -128~127
    0~255
    微小整数
    smallint 2字节  -32768~32767 0~65535
     小整数
    mediumint 3字节 -2^23~2^23-1
    0~2^24-1
    中整数
    int 4字节 -2^31~2^31-1
    0~2^32-1
     大整数
    bigint 8字节  -2^63~2^63-1 0~2^64-1
     极大整数
    float 4字节      单精度浮点数
    double 8字节      双精度浮点数
    decimal 对decimal(M,D),其中M为有效位数、D为小数位数,M应大与D,占M+2字节

      mysql数据库中以:数据类型(m)  来约束数据,其中数字m在不同的数据类型中表示含义是不同的;这里以整形数据为例,例如tinyint(m)、int(m)、bigint(m),其中m代表显示宽度,对输入的值的大小没有影响,当字符长度超过(m)时,显示的值就是字符的真实位数(总位数超过m位);当字符长度小于(m)时,显示值是字符值加填充值(总位数等与m位),未设置时,系统默认拿空格填充,人眼看不出变化,一般设置为zerofill(表示用0填充),这样可以保持数据完整性和美观性。

    12、Linux中重要的文件/etc/passwd和/etc/shadow

    linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后:

    1. 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的shell设置也一并读出。
    2. 然后根据UID到/etc/shadow文件中去寻找相应用户的密码,如果匹配一致
    3. 进入shell控制的阶段。

    /etc/passwd由“:”分割成7个字段

    [root@53 ~]# cat -n /etc/passwd |head -5      //按行查看/etc/passwd前5行,以“:”为分割符号,分割成7个字段
         1    root:x:0:0:root:/root:/bin/bash
         2    bin:x:1:1:bin:/bin:/sbin/nologin
         3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
         4    adm:x:3:4:adm:/var/adm:/sbin/nologin
         5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    第一字段:用户名

    第二字段:用户的密码原来直接存储在第二字段,但是为了安全,最后专门有了/etc/shadow文件,现在默认用x替代

    第三字段:用户的uid,一般情况下root为0,1-499默认为系统账号,有的更大些到1000,500-65535为用户的可登录账号,有的系统从1000开始。

    第四字段:用户的gid,linux的用户都会有两个ID,一个是用户uid,一个是用户组id,在我们登录的时候,输入用户名和密码,其实会先到/etc /passwd查看是否有你输入的账号或者用户名,有的话将该账号与对应的UID和GID(在/etc/group中)读出来。然后读出主文件夹与 shell的设置,然后再去检验密码是否正确,正确的话正常登录。

    第五字段:用户的账号说明解释

    第六字段:用户的家目录文件夹

    第七字段:用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的。

    /etc/shadow由“:”分割成9个字段

    [root@53 ~]# cat /etc/shadow |head -5
    root:$6$mRObz2Sl$lHrUUJD7SIGDupGx7GnSKceTwfg/lK.qxYHOshnMwsCgYtcEcW45QvVsdiZ5l6y89nY7qkwAF0J.646WgFcRu0:17297:0:99999:7:::
    bin:*:16579:0:99999:7:::
    daemon:*:16579:0:99999:7:::
    adm:*:16579:0:99999:7:::
    lp:*:16579:0:99999:7:::

    第一字段:用户名,跟/etc/passwd对应。

    第二字段:用户的密码加密字段,加密密码,加密算法升级为SHA512散列加密算法,如果密码位为“!!”或“*”代表没有密码,不能登录,其shell为/sbin/nologin。

    第三字段:密码最后一次修改的时间,距离Linux诞生的日期(从1970-01-01开始,为什么?因为unix1969年发布雏形,基于当时对系统的考虑,就这样了),以1970年1月1日作为标准时间,每过一天时间间隔的时间戳加1天。

    第四字段:密码最少多少天之后可以修改,要过多少天才可以更改密码,默认是0,即不限制密码的有效期

    第五字段:密码多少天之后必须修改(例子中99999就是表明可以一直不用修改密码),若设置成20,即20天后到期,必须修改密码,不然登录不了系统。

    第六字段:密码到期前的警告期限,若设置为6,即到期前6天将通知用户。密码修改之前几天提醒我修改(例子中是7天之前)

    第七字段:账号失效宽限期(和第5字段相对比),要是没有修改延长几天,若设置为2,到期过后2天后再不修改密码,用户锁定。

    第八字段:账号的生命周期(要用时间戳表示),到了指定的期限,账号将失效。无论怎样到这个时间过期(例子中的时间从1970-01-01算)

    第九字段:保留字段,目前无含义

    Linux系统推算root密码最后一次更改日期,计算距离1970-1-1时间:

    [root@52 ~]# date -u -d"1970-01-01 UTC $((13025*86400))seconds"   //这个13025是指相对1970年1月1日到现在已经经过多少天, 其中86400是一天多少秒?   60*60*24=86400秒
    2005年 08月 30日 星期二 00:00:00 UTC
    [root@52 ~]# date -u -d"1970-01-01 UTC $((17297*86400))seconds"  //例如上面例子中的root密码最后一次更改时间如此
    2017年 05月 11日 星期四 00:00:00 UTC

    13、设置ssh欢迎页面信息

    /etc/issue    #登录前提示
    /etc/motd    #登录后提示
    ssh还可以修改/etc/ssh/sshd_config里Banner项所指示的文件

    14、Linux命令查看日历

    [root@room8pc205 ~]# cal
    用法:
    cal [选项] [[[日] 月] 年]
    选项:
     -1, --one        只显示当前月份(默认)
     -3, --three      显示上个月、当月和下个月
     -s, --sunday     周日作为一周第一天
     -m, --monday     周一用为一周第一天
     -j, --julian     输出儒略日
     -y, --year       输出整年
     -V, --version    显示版本信息并退出
     -h, --help       显示此帮助并退出

    15Linux命令查看天气预报

    前提:命令行查询天气预报,需要能连上因特网的 Linux

    原理:http://wttr.in 是一个允许你搜索世界各地天气预报的网站,而且它的是以 ASCII 字符的形式来显示结果的。通过使用 curl 访问 http://wttr.in ,就能直接在终端显示查询结果了。

    [root@room8pc205 ~]# curl wttr.in/New+York  //显示纽约天气

    [root@room8pc205 ~]# curl wttr.in   //获取所在地的天气信息,根据IP地址定位,可能有误

    [root@room8pc205 ~]# curl wttr.in/shenzhen   //获取指定位置的天气

    [root@room8pc205 ~]# curl wttr.in/New+York   //你可以通过在 wttr.in 后加上斜杠和城市名称的方式来获得其他城市的天气情况。不过要把名字中的空格替换成 + 

    [root@room8pc205 ~]# curl wttr.in/New_York  //你也可以以 Unix 时区的形式来填写城市名称

    [root@room8pc205 ~]# curl wttr.in/JFK   //若你对地区的三位机场代号很熟悉,你也可以使用机场代号来查询天气。一般来说使用机场要比使用城市更贴近你,而且更精确一些。

    [root@room8pc205 ~]# curl wttr.in/~Statue+Of+Liberty  //通过使用 ~ 字符,你可以让 wttr.in 通过地标来猜测天气情况。

    [root@room8pc205 ~]# curl wttr.in/@linuxconfig.org   //你想不想知道 LinuxConfig 托管地的天气?现在有一个方法可以知道! wttr.in 可以通过域名获取天气。是的,这个功能可能不那么实用,但这很有趣啊。

    更改温度单位:默认情况下, wttr.in 会根据你的实际地址来决定显示哪种温度单位(C 还是 F)。基本上,在美国,使用的是华氏度,而其他地方显示的是摄氏度。你可以指定显示的温度单位,在 URL 后添加 ?u 会显示华氏度,而添加 ?m 会显示摄氏度。

    [root@room8pc205 ~]# curl wttr.in/New_York?m

    [root@room8pc205 ~]# curl wttr.in/Toronto?u

    在 ZSH 上有一个很奇怪的 bug,会使得这两条语句不能正常工作,如果你需要更换单位,恐怕需要改成使用 Bash 了。

    注释:ZSH是一个Linux用户很少使用的shell,这是由于大多数Linux产品安装,以及默认使用bash shell。几乎每一款Linux产品都包含有zsh,通常可以用apt-get、urpmi或yum等包管理器进行安装

    16、Linux服务器jps报process information unavailable

    在Linux下执行 jps 是快速查看Java程序进程的命令,一般情况下hadoop,hbase,storm等进程都是通过jps查看,有些时候因为进程没有被正常结束,比如资源占用过大时挂掉或者没有结束进程就直接重启计算机,会导致原有进程变为-- process information unavailable这样的空值,有时候不用管它,一段时间后会自动消失,如果一直不消失的情况下,可以使用如下方法清理: 

    进入/tmp目录 cd /tmp 可以看到有很多以hsperfdata_{用户名}这样的目录,比如:hsperfdata_hbase,hsperfdata_kafka,hsperfdata_root这样的目录,是因为进程虽然在内存中关闭了,但是Linux还会在/tmp下寻找这些临时文件,而此时临时文件并没有没正常删除,这时候直接执行 rm -rf hsperfdata_* 删除这些目录,然后再次执行 jps 查看,以上那些进程就不存在了,总的来说直接执行 rm -rf /tmp/hsperfdata_* 可以快速清除那些残留进程

    如果有很多正常运行的进程时,其中夹杂部分残留进程,这个时候不建议全部删除上面的目录,这时候要根据目录和进程的对应关系分析出残留的单个目录来删除无用的进程即可

    17、添加用户并修改用户密码以及删除用户及用户家目录:

    [root@localhost /]# useradd --help
    用法:useradd [选项] 登录
          useradd -D
          useradd -D [选项]

    选项:
      -b, --base-dir BASE_DIR       新账户的主目录的基目录        #以这个指定目录为基目录,在其目录下创建用户家目录,如不指定则默认以/home目录为基目录
      -c, --comment COMMENT         新账户的 GECOS 字段
      -d, --home-dir HOME_DIR       新账户的主目录                   #指定用户家目录,一般用绝对路径,优先级最高,指定后用户家目录为该目录,一般不指定已存在的目录,否则将不能删除用户家目录
      -D, --defaults                显示或更改默认的 useradd 配置
     -e, --expiredate EXPIRE_DATE  新账户的过期日期
      -f, --inactive INACTIVE       新账户的密码不活动期
      -g, --gid GROUP               新账户主组的名称或 ID     #指定新建用户的主组
      -G, --groups GROUPS   新账户的附加组列表        #指定新建用户附属组
      -h, --help                    显示此帮助信息并推出
      -k, --skel SKEL_DIR   使用此目录作为骨架目录
      -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
      -l, --no-log-init     不要将此用户添加到最近登录和登录失败数据库
      -m, --create-home     创建用户的主目录
      -M, --no-create-home          不创建用户的主目录
      -N, --no-user-group   不创建同名的组
      -o, --non-unique              允许使用重复的 UID 创建用户
      -p, --password PASSWORD               加密后的新账户密码
      -r, --system                  创建一个系统账户
      -R, --root CHROOT_DIR         chroot 到的目录
      -s, --shell SHELL             新账户的登录 shell
      -u, --uid UID                 新账户的用户 ID
      -U, --user-group              创建与用户同名的组
      -Z, --selinux-user SEUSER             为 SELinux 用户映射使用指定 SEUSER

    [root@localhost /]# userdel --help
    用法:userdel [选项] 登录

    选项:
      -f, --force                   force some actions that would fail otherwise e.g. removal of user still logged in or files, even if not owned by the user
      -h, --help                    显示此帮助信息并推出
      -r, --remove                  删除主目录和邮件池       #删除用户时顺带将用户家目录删除,此项最常用
      -R, --root CHROOT_DIR         chroot 到的目录
      -Z, --selinux-user            为用户删除所有的 SELinux 用户映射

    useradd -d /usr/sam sam                              #创建sam用户,并指定sam的家目录为/usr/sam。不加-d指定的话,系统默认在/home目录下创建用户的家目录

    userdel -r sam                                              #删除sam用户及sam用户的家目录,-r表示删除用户家目录及其邮件池

     useradd -b /test sara               #创建sara用户,以/test目录为基目录创建家目录,查看用户家目录为/test/sara

    useradd -M -s /sbin/nologin -g nginx nginx        #-M 创建用户时不创建用户家目录;-s 指定创建的用户所使用的shell,/sbin/nologin表示不允许登录,如果nginx组不存在时会有报错提示,需要先创建nginx组

    useradd -g sara1 -G sara2,sara3 sara            #-g 创建用户时指定用户的属组sara1

    例子1:

        [root@localhost ~]# useradd -s /bin/sh -g sara1 -G sara2,sara3 sara        #创建sara用户时,指定登录的shell是/sbin/nologin,即不允许该用户登录,-g 指定用户的主组(唯一) -G 指定用户的附属组(可以指定多个组)

        [root@localhost ~]# ls /home/                                            #若没有特殊指定,默认将用户的家目录放到/home下

        sara

        [root@localhost ~]# id sara

        uid=500(sara) gid=500(sara1) 组=500(sara1),501(sara2),502(sara3)        #主组为sara1附加组为sara2和sara3

    18、Linux中对比两个文件内容

     Windows中对比两个文件用Beyond Compare,Linux中常用diff命令,详细使用方法参考以下链接:

    https://www.cnblogs.com/wangqiguo/p/5793448.html#_label6

    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

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

     

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

     

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

     

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

     

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

     

  • 相关阅读:
    MATLAB(2)——小波工具箱使用简介
    unity Changing Game View background color
    opengl剪裁空间和视口空间中不遵从右手定则,而是遵从左手定则
    vc2010, fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt解决办法
    Xcode, does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE) 解决办法
    in App Purchases一个注意事项
    unity, Invoke延迟执行
    unity UGUI text font size对性能影响较大
    bullet, iOS真机编译错误error: identifier or immediate expression expected解决方法
    unity,实现屏幕后处理的两种方法
  • 原文地址:https://www.cnblogs.com/baichuanhuihai/p/8178203.html
Copyright © 2011-2022 走看看