更改SSH服务端远程登录的配置

windows服务端的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest。Linux的管理用户是root,普通用户默认有很多个,远程连接默认端口是22。

修改配置文件/etc/ssh/sshd_config,13行Port 22(默认端口22),改为Port 52113(范围0——65535);15行ListenAddress 0.0.0.0 (监听ip地址),改为ListenAddress 192.168.131.1;43行PermitRootLogion yes(root用户远程连接),改为PermitRootLogion no;122行UseDNS yes(DNS解析),改为UseDNS no;GSSAPIAuthentication yes(SSH连接慢),改为GSSAPIAuthentication no;

cat –n:查看行号

vim à:set nu à显示行号

diff比较2个文件的不同之处。

[root@oldboy66 ssh]# diff sshd_config sshd_config.oldboy.20161204

vimdiff以高亮方式比较2个文件的不同之处。

[root@oldboy66 ssh]# vimdiff sshd_config sshd_config.oldboy.20161204

sed替换:

  1. [root@oldboy66 ssh]# sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthenication no' sshd_config

重启生效:/etc/init.d/sshd restart(可能影响用户)或/etc/init.d/sshd reload(平滑重启)。

查看端口:

netstat -lntup|grep sshd

利用sudo控制用户对系统命令的使用权限

管理sudo命令:

visudo或vi /etc/sudoers,visudo更好。vi命令模式直接输入行数+gg到固定的行数,显示行号:set nu,yy(复制)+p(粘贴)复制当前行到下一行,shift+a到结尾处于编辑状态。

98+gg: 98 root ALL=(ALL) ALL

给oldboy授予root权限:

oldboy ALL=(ALL) ALL

oldboy ALL=(ALL) NOPASSWD:ALL(不提示输入密码)

用oldboy添加一个用户oldgirl:

  1. [oldboy@oldboy66 ~]$ sudo useradd oldgirl
  2. #输入oldboy密码
  3. [sudo] password for oldboy:
  4. #添加成功
  5. [oldboy@oldboy66 ~]$ tail -1 /etc/passwd
  6. oldgirl:x:501:501::/home/oldgirl:/bin/bash

给oldboy授予固定权限:

oldboy ALL=(ALL) /bin/touch,/usr/sbin/useradd

注意:需要命令的全路径,查看命令全路径which 命令,例如:

  1. [root@oldboy66 ~]# which useradd
  2. /usr/sbin/useradd
  3. [root@oldboy66 ~]# which touch
  4. /bin/touch

find查找:find / -type f -name "useradd"

whereis查找:whereis -b useradd

locate查找:locate useradd

环境变量:

PATH系统路径变量,执行ls、cp等非内置命令时,系统会查找PATH里对应的路径是否存在,如果没有就报告找不到该命令。当执行which cp来查看命令所在路径的时候,也就是从PATH变量去搜索。

PATH变量的临时修改 export PATH="/tmp:$PATH",永久生效将命令放到/etc/profile下,使用source /etc/profile 使得立刻生效。

Linux中文显示设置

查看当前字符编码:

  1. [root@oldboy66 tmp]# cat /etc/sysconfig/i18n
  2. LANG="en_US.UTF-8"
  3. SYSFONT="latarcyrheb-sun16"

操作前先进行备份:cp /etc/sysconfig/i18n /etc/sysconfig/i18n.oldboy.20161205

  1. [root@oldboy66 sysconfig]# sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g' /etc/sysconfig/i18n
  2. [root@oldboy66 sysconfig]# cat /etc/sysconfig/i18n
  3. LANG="zh_CN.UTF-8"
  4. SYSFONT="latarcyrheb-sun16"
  5. #立刻生效
  6. [root@oldboy66 sysconfig]# source /etc/sysconfig/i18n
  7. [root@oldboy66 sysconfig]# echo $LANG
  8. zh_CN.UTF-8

注意:客户端字符集需改为UTF-8。

设置Linux服务器时间同步

显示时间:date

修改时间:date –s "时间" àhwclock

显示日历:cal

同步互联网时间:

  1. [root@oldboy66 tmp]# /usr/sbin/ntpdate time.nist.gov

定时任务执行同步:

  1. #每5分钟执行一次同步
  2. [root@oldboy66 tmp]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1" >>/var/spool/cron/root
  3. [root@oldboy66 tmp]# crontab -l
  4. */5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

下面三种方法是等价的:

/dev/null 空设备(黑洞)

错误和正确都输出到/dev/null:

1、1>/dev/null 2>/dev/null

2、1>/dev/null 2&1

3、&>/dev/null

时间同步架构

小规模时间同步架构:

大规模时间同步架构:

设置Linux默认历史记录数

命令如下,注意此时的配置仅临时生效。

  1. #设置历史记录数5
  2. [root@oldboy66 ~]# HISTSIZE=5

把配置参数放入配置文件,使得永久生效。

  1. #设置终端超时时间
  2. [root@oldboy66 ~]# echo 'TMOUT=300' >>/etc/profile
  3. #设置历史记录数
  4. [root@oldboy66 ~]# echo 'HISTSIZE=5' >>/etc/profile
  5. #设置文件记录数cat ~/.bash_history
  6. [root@oldboy66 ~]# echo 'HISTFILESIZE=5' >>/etc/profile

TMOUT=10:连接的超时时间控制变量。

HISTSIZE=5:命令行的历史记录数量变量。

HISTFILESIZE=10:历史记录文件的命令行数量变量(~/.bash_history)。

历史记录清空:history -c。

删除指定历史记录:history -d 10(删除10号历史记录)。

加大服务器文件描述符

文件描述符的概念

1、表示形式为整数数字(0——65535)。

2、进程使用的时候会占用文件描述符(标识打开的文件)。

查看默认文件描述符

  1. [root@oldboy66 ~]# ulimit -n
  2. 1024

3、调整文件描述符

方法一:

直接把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次开机启动的时候生效。

  1. #临时生效
  2. [root@oldboy66 ~]# ulimit -SHn 65535
  3. [root@oldboy66 ~]# ulimit -n
  4. 65535

写入rc.local:

  1. cat >>/etc/rc.local<<EOF
  2. ulimit -HSn 65535
  3. ulimit -s 65535
  4. EOF

方法二:

在/etc/sercurity/limits.conf里面配置。

  1. [root@oldboy66 ~]# echo '* - nofile 65535' >>/etc/security/limits.conf
  2. [root@oldboy66 ~]# tail -1 /etc/security/limits.conf
  3. * - nofile 65536

调整内核参数文件/etc/sysctl.conf

vim编辑:shift+g切换到文件结尾

优化参数:

  1. net.ipv4.tcp_fin_timeout = 2
  2. net.ipv4.tcp_tw_reuce = 1
  3. net.ipv4.tcp_tw_recycle = 1
  4. net.ipv4.tcp_syncookies = 1
  5. net.ipv4.tcp_keepalive_time = 600
  6. net.ipv4.ip_local_port_range = 4000 65000
  7. net.ipv4.tcp_max_syn_backlog = 16384
  8. net.ipv4.tcp_max_tw_buckets = 36000
  9. net.ipv4.route.gc_timeout = 100
  10. net.ipv4.tcp_syn_retries = 1
  11. net.ipv4.tcp_synack_retries = 1
  12. net.core.somaxconn = 16384
  13. net.core.netdev_max_backlog = 16384
  14. net.ipv4.tcp_max_orphans = 16384
  15. #以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理
  16. #net.nf_conntrack_max = 25000000
  17. #net.netfilter.nf_conntrack_tcp_timeout_established = 180
  18. #net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
  19. #net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
  20. #net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

执行生效:sysctl -p

查看网络状态:netstat -an

隐藏Linux版本信息

控制Linux显示版本信息的文件

  1. [root@oldboy66 ~]# cat /etc/issue
  2. CentOS release 6.6 (Final)
  3. Kernel \r on an \m
  4.  
  5. [root@oldboy66 ~]# cat /etc/issue.net
  6. CentOS release 6.6 (Final)
  7. Kernel \r on an \m

清空这个两个文件就可以了。

锁定关键系统文件,防止提权被篡改

命令:

  1. [root@oldboy66 ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

解除锁定:chattr -i

为grub菜单加密码

为grub菜单加密码的目的是防止他人修改grub做内核等启动设置。

1、先用/sbin/grub-md5-crypt产生一个MD5密码串。

  1. [root@oldboy66 ~]# /sbin/grub-md5-crypt
  2. Password:
  3. Retype password:
  4. $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.

2、修改grub.conf文件添加

password --md5 $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.。

  1. [root@oldboy66 ~]# vim /etc/grub.conf
  2.   1 # grub.conf generated by anaconda
  3.   2 #
  4.   3 # Note that you do not have to rerun grub after making changes
  5.      to this file
  6.   4 # NOTICE: You have a /boot partition. This means that
  7.   5 # all kernel and initrd paths are relative to /boot/,
  8.      eg.
  9.   6 # root (hd0,0)
  10.   7 # kernel /vmlinuz-version ro root=/dev/sda3
  11.   8 # initrd /initrd-[generic-]version.img
  12.   9 #boot=/dev/sda
  13.  10 default=0
  14.  11 timeout=5
  15.  12 splashimage=(hd0,0)/grub/splash.xpm.gz
  16.  13 hiddenmenu
  17.  14 title CentOS 6 (2.6.32-504.el6.x86_64)
  18.  15 root (hd0,0)
  19.  16 kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=e89
  20.     62baa-4051-4832-b0ee-e27aa74f6374 rd_NO_LUKS rd_NO_LVM LANG=en
  21.     _US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto
  22.      KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
  23.  17 initrd /initramfs-2.6.32-504.el6.x86_64.img

注意:password要加在splashimage和title之间,否则可能不生效。

禁止Linux系统被ping

命令:

  1. [root@oldboy66 ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
  2. #立刻生效
  3. [root@oldboy66 ~]# sysctl -p

升级具有典型漏洞的软件版本

首先查看相关软件的版本号

  1. [root@oldboy66 ~]# rpm -qa openssl openssh bash
  2. openssl-1.0.1e-30.el6.x86_64
  3. bash-4.1.2-29.el6.x86_64
  4. openssh-5.3p1-104.el6.x86_64

执行升级已知漏洞的软件版本到最新。

  1. [root@oldboy66 ~]# yum install openssl openssh bash

配置yum源

查看当前yum源

  1. [root@oldboy66 ~]# cat /etc/yum.repos.d/CentOS-Base.repo

配置阿里云的yum源

  1. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

wget:下载,wget http://url;-O:下载到指定路径并改名;--spider:爬虫,检查网站是不是好的,不会下载只是检查;-T(--timeout):指定超时时间(--timeout=seconds);--tries:指定重试的次数(--tries=2);-q(--quiet):后台下载,关闭输出;

总结:

1、不用root管理,以普通用户的名义通过sudo授权管理。

2、更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改为只监听内网IP。

3、定时自动更新服务器时间,使其和互联网时间同步。

4、配置yum更新域,从国内更新源下载安装软件包。

5、关闭SELinux及iptables(在生产场景中,如果有外部IP一般要打开)

6、调整文件描述符的数量,进程及文件的打开都会消耗文件描述符。

7、定时自动清理邮件目录垃圾文件,防止inodes节点被占满。

8、精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog、stsstat)。

9、Linux内核参数优化/etc/sysctl.conf,执行sysctl -p 生效。

10、更改字符集,使其支持中文。

11、锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,处理后把chattr、lasttr改名。

12、清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。

13、清楚多余的系统虚拟账号。

14、为grub菜单加密码。

15、禁止被ping。

16、升级漏洞软件。

less:按屏(空格、page up/page down)或按行(回车)查看文件。

more:按屏(空格)或按行(回车)查看文件,不能向上翻。

Linux目录结构

linux只有一个顶点/(根),其他所有目录都在根下。根下面的所有目录是一个有层次的树状结构,像一颗倒挂着的大树。

  1. [root@oldboy66 ~]# tree -L 1 /
  2. /
  3. ├── bin
  4. ├── boot
  5. ├── dev
  6. ├── etc
  7. ├── home
  8. ├── lib
  9. ├── lib64
  10. ├── lost+found
  11. ├── media
  12. ├── mnt
  13. ├── oldboy
  14. ├── opt
  15. ├── proc
  16. ├── root
  17. ├── sbin
  18. ├── selinux
  19. ├── srv
  20. ├── sys
  21. ├── tmp
  22. ├── usr
  23. └── var

tree:显示目录结构,-L:指定显示多少层;-d:只显示目录。

linux的目录结构和磁盘分区是分离的,可以自由组合。

/

├── bin    àEssential command binaries

├── boot    àStatic files of the boot loader

├── dev    àDevice files

├── etc    àHost-specific system configuration

├── home    àUser home directories(optional)

├── lib    àEssential shared libraries and kernel modules

├── lib64

├── lost+found

├── media

├── mnt    àMount point for mounting a filesystem temporarily

├── oldboy

├── opt    àAdd-on application software packages

├── proc    à进程信息及内核信息(cpu、硬盘分区、内存信息等)

├── root    àHome directory for the root user(optional)

├── sbin    àEssential system binaries

├── selinux

├── srv

├── sys

├── tmp    àTemporary files

├── usr    àSecondary hierarchy

└── var    àVariable data

cat /proc/meminfo    à内存信息

cat /proc/cpuinfo àcpu信息

cat /proc/mounts     à挂载信息

cat /proc/loadavg à负载(系统繁忙程度)

小结:

1、linux系统的所有目录时一个有层次的倒着的树状目录结构,/根是所有目录的起点。

2、不同的目录数据可以跨越不同的磁盘分区或不同的磁盘设备。

/dev/ 设备目录

/etc/ 系统配置即服务配置文件、启动命令的目录

/proc 显示内核及进程信息的虚拟文件系统

/tmp 临时文件目录

/home 普通用户家目录

/root 超级管理员的家目录

/var 变化的目录,一般是日志文件,cache的目录

/usr 用户程序及数据、帮助文件、二进制命令等的目录

/bin、/sbin、/usr/sbin 用户命令的目录

Linux重要目录路径

/etc/sysconfig/network-scripts/ifcfg-eth0:配置网络地址及GW等。

  1. [root@oldboy66 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  2. DEVICE=eth0 #物理设备名,eth1表示第二块网卡
  3. HWADDR=00:0c:29:a6:d7:cb #网卡的MAC地址,48位(克隆后要删除)
  4. TYPE=Ethernet #以太网
  5. UUID=cd11ee91-579f-43be-9074-a14cabe2e0c6 #uuid唯一用户标识(克隆后要删除)
  6. ONBOOT=yes #控制网卡是不是开机启动
  7. NM_CONTROLLED=yes
  8. BOOTPROTO=dhcp #proto值:none,引导时不使用协议;static,静态分配地址;bootp,使用BOOTP协议;dhcp,使用DHCP协议
  9. DNS2=202.106.0.20 #DNS把baidu.com变成baidu服务器IP。DNS域名和IP的解析工具
  10. DNS1=8.8.8.8
  11. USERCTL=no
  12. PEERDNS=yes
  13. IPV6INIT=no

IPADDR=10.0.0.7 #addr是IP地址

NETMASK=255.255.255.0 #子网掩码,划分网络位和主机位10.0.0.0/24

GATEWAY=10.0.0.254 #网关地址,路由器的地址

修改配置生效命令:

  1. [root@oldboy66 ~]# /etc/init.d/network restart #ONBOOT=yes
  2. [root@oldboy66 ~]# ifdown eth0 && ifup eth0 #关闭和启动

ifup:启动

ifdown:关闭

/etc/resolv.conf:DNS管理

  1. [root@oldboy66 ~]# cat /etc/resolv.conf
  2. ; generated by /sbin/dhclient-script
  3. search localdomain
  4. nameserver 8.8.8.8
  5. nameserver 202.106.0.20

小结:

1、客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)。

2、客户端DNS也可以在/etc/resolv.conf里设置。

3、网卡里的设置DNS优先于/etc/resolv.conf。

/etc/hosts:设定用户IP与域名的对应解析表

对应windows的文件C:\Windows\System32\drivers\etc\hosts。

  1. [root@oldboy66 ~]# cat /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.131.128 oldboy66

hosts在企业里的作用:

1、开发、产品、测试等人员,用于通过正式的域名测试产品。

2、服务器之间的调用可以用域名(内部的DNS),方便迁移。

/etc/sysconfig/network:修改机器名及网卡启动,网关等配置。

  1. [root@oldboy66 ~]# cat /etc/sysconfig/network
  2. NETWORKING=yes
  3. HOSTNAME=oldboy66

更改主机名:

1、vi /etc/sysconfig/network

2、hostname 主机名

同时修改。

/etc/fstab:设置文件系统挂载信息的文件,使得开机能够自动挂载磁盘分区

  1. [root@oldboy66 ~]# df –h #查看磁盘挂载信息
  2. Filesystem Size Used Avail Use% Mounted on
  3. /dev/sda3 7.1G 1.4G 5.4G 21% /
  4. tmpfs 497M 0 497M 0% /dev/shm
  5. /dev/sda1 190M 27M 153M 15% /boot
  1. [root@oldboy66 ~]# cat /etc/fstab
  2. UUID=e8962baa-4051-4832-b0ee-e27aa74f6374 / ext4 defaults 1 1
  3. UUID=9782b8eb-4b2d-4919-b3b7-14ee46d04ae8 /boot ext4 defaults 1 2
  4. UUID=60b51f07-216b-4e38-9eee-d3de8d897e01 swap swap defaults 0 0
  5. tmpfs /dev/shm tmpfs defaults 0 0 #挂载的设备 挂载点    挂载文件系统类型    挂载选项(读、写)是否系统备份 是否开机自检查
  6. devpts /dev/pts devpts gid=5,mode=620 0 0
  7. sysfs /sys sysfs defaults 0 0
  8. proc /proc proc defaults 0 0
  9. [root@oldboy66 ~]#

fsck:磁盘检查(不要检查好磁盘),卸载的状态

挂载方式:

1、命令挂载

mount -t ext4 -o noexec /dev/sda1 /mnt

2、/etc/fstab

测试手动挂载:

1、创建一个虚拟的块设备。

dd if=/dev/zero of=/dev/sdb1 bs=4906 count=100

2、格式化

mkfs.ext4 /dev/sdb1

3、挂载

mount -t ext4 -o loop,noatime,noexec /dev/sda1 /mnt

4、查看

df -h

第一列挂载的设备可以是设备名或UUID、磁盘标签。

fstab出问题,修复方式:

1、开机提示输入密码修复。

2、救援模式rescue修改/etc/fatab只读状态,mount -o rw,remount /。

/etc/rc.local:用于存放开机自启动程序命令的文件

让一个程序开机启动:

1、chkconfig(/etc/init.d/sshd)。

2、放入/etc/rc.local。

选择建议:/etc/rc.local,工作中把/etc/rc.local作为服务器档案文件,所有程序开机启动放入/etc/rc.local并加注释。

rc.local与fstab区别:rc.local在系统启动完成最后加载。

NFS网络文件系统挂载是,网卡还没启动,就已经加载fstab。(mount -t nfs 10.0.0.7:/data /mnt)

/etc/inittab:设定系统启动时init进程将把系统设置成什么样的runlevel运行级别及加载相关的级别对应启动文件设置

Linux启动过程:

1、开机BIOS自检

2、MBR引导

硬盘0柱面0磁盘1扇区的前446byte。

3、grub引导菜单

cat /etc/grub.conf

4、加载内核kernel

5、启动init进程

ps -ef|grep init

/etc/init.d

/etc/profile:系统全局环境变量永久生效的配置文件

/etc/profile.d:登录后执行的脚本所在地

/etc/motd:登录后显示的字符串

/etc/issue:记录用户登录前显示的系统版本等信息

  1. [root@oldboy66 ~]# cat -n /etc/issue
  2.      1 CentOS release 6.6 (Final)
  3.      2 Kernel \r on an \m

/etc/group:设定用户的组名与相关信息

/etc/passwd:账号信息文件

/etc/shadow:密码信息文件

/etc/gshadow:组密码信息文件

/etc/sudoers:可以执行使用sudo命令的配置文件

visudo -c:检查语法

yum remove tree -y:yum删除(会删除依赖,慎用)

/var/log/messages:系统日志,自动轮询按周(rsyslog)

/var/log/secure:安全日志,SSH连接日志

dmesg:内核打印的错误信息,例如硬件故障

/var/spool/cron/root:定时任务crond配置文件

/proc/mounts:设备挂载信息与df -h类似

Linux基础介绍【第三篇】的更多相关文章

  1. Linux基础介绍【第二篇】

    远程连接Linux的原理 SHH远程连接介绍 当前,在几乎所有的互联网企业环境中,最常用的Linux提供远程连接服务的工具就是SSH软件,SSH分为SSH客户端和SSH服务端两部分.其中,SSH服务端 ...

  2. Linux基础介绍【第一篇】

    Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...

  3. Linux基础介绍【第九篇】

    服务器添加3块磁盘的体系结构 [root@oldboylinux test]# free -m              total used free shared buffers cached M ...

  4. 运维之Linux基础知识(三)

    运维之Linux基础知识(三) 1. 查看文本 cat tac more less head tail 1.1 cat 连接并显示文件 cat -n:在显示的时候,将每一行编号 -E:显示结束符$ - ...

  5. Linux基础介绍【第八篇】

    Linux网络基础 网线 568A 568B 线序:橙白橙 绿白蓝 蓝白绿 棕白棕 交换机.路由器 交换机:DLINK.H3C.CISCO 交换机(Switch)是一种用于电信号转发的网络设备.它可以 ...

  6. Linux基础介绍【第五篇】

    linux权限位 Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主权限.属组权限.其他用户权限. r:read可读权限,对应数字4: w:write可写权限,对应数字 ...

  7. Linux基础介绍【第四篇】

    Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...

  8. Linux基础介绍【第七篇】

    linux用户分类 超级用户:UID=0,root 普通用户:UID 500起,由超级用户或具有超级用户权限的用户创建的用户. 虚拟用户:UID 1-499,为了满足文件或服务启动的需要而存在,一般都 ...

  9. Linux基础介绍【第六篇】

    定时任务crond介绍 crond是什么? crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.一般情况下,安装完CentOS5/6 linux操作系统之后,默认便会启动cro ...

随机推荐

  1. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  2. HTML 事件(二) 事件的注册与注销

    本篇主要介绍HTML元素事件的注册.注销的方式. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流.事件委托 4. ...

  3. 浅谈web攻防

    CSRF 跨站请求伪造(Cross-Site Request Forgery) -原理- 从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤: 1.登录受信任网站A,并在本地生成Coo ...

  4. 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  5. C#中如何在Excel工作表创建混合型图表

    在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...

  6. 【算法】C语言实现数组的动态分配

    C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...

  7. js从数组中随机取出不同的元素

    前言 上午处理个需求需要从一个总数组中随机取出不同的元素.共使用两个方法.第一种方法较常规,经测试有bug,数据量大以后随机几次返回的对象直接是function而不是object. 当然简单数据类型应 ...

  8. 一行代码实现java list去重

    1.不带类型写法: 1 List listWithoutDup = new ArrayList(new HashSet(listWithDup)); 2.带类型写法(以String类型为例):1)Ja ...

  9. Android之SharedPreferences数据存储

    一.SharedPreferences保存数据介绍 如果有想要保存的相对较小键值集合,应使用SharedPreferences API.SharedPreferences对象指向包含键值对的文件并提供 ...

  10. JS案例之2——cycle元素轮播

    元素轮播效果是页面中经常会使用的一种效果.这个例子实现了通过元素的隐藏和显示来表现轮播效果.效果比较简单. 效果图如下: 源代码如下: <!DOCTYPE html> <html&g ...