精华内容
下载资源
问答
  • 知识精华—修改文件夹的只读属性

    千次阅读 2019-07-24 11:06:16
    百度了十几篇,然后都没有成功,都没有解决... 属性中把只读属性去掉 ---> 然后点击应用和确定即可 第二种:顽固性质的文件夹,即第一种修改根本不起作用 选中文件夹之后右键 ---> 属性 ---> 安全...

    百度了十几篇,然后都没有成功,都没有解决问题,最后问的同事。。。写下来给大家提供方便

    第一种情况:简单的修改方式即可成功

    选中文件夹之后右键 ---> 属性 ---> 常规 --->  属性中把只读属性去掉 ---> 然后点击应用和确定即可

     

    第二种:顽固性质的文件夹,即第一种修改根本不起作用

    选中文件夹之后右键 ---> 属性 ---> 安全 --->  Users(DESKTOP-OV9JDU1\Users)--->选中下方的完全控制 ---> 最后点击应用和确定

    展开全文
  • read-only file system和to push selection:Read-only file system,我在百度上查找了,要改.android中的avd文件为可读,可是改完后总是自动变为“只读”。。。
  • 如何去掉XP系统中文件夹的只读属性

    千次阅读 2016-03-04 21:29:18
    利用XP系统设置自己的服务器时,经常会出现数据库无法存储的情况,查看后发现是因为...其实,想去除XP系统中文件夹的只读属性很简单。  第一步,单击文件夹窗口菜单中的“工具”——“文件夹选项”,便

    from:http://blog.sina.com.cn/s/blog_609b68c30100dxvw.html


    利用XP系统设置自己的服务器时,经常会出现数据库无法存储的情况,查看后发现是因为包括数据库文件的那个文件夹的属性是只读的。无论怎么修改,只读属性都无法去除。其实,想去除XP系统中文件夹的只读属性很简单。

      第一步,单击文件夹窗口菜单中的“工具”——“文件夹选项”,便打开了文件夹选项窗口。

      第二步,单击“查看”标签,将“使用简单文件共享(推荐)”前面的勾去掉后,点击“确定”按钮。

      第三步,右击含有数据库文件的文件夹,选择“属性”,打开文件夹“属性”窗口。

      第四步,单击“安全”标签。给予所以用户和用户组“完全控制”权限后,确定即可。


    展开全文
  • attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性 dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件...
  • Linux 命令面试题

    万次阅读 多人点赞 2019-07-24 09:40:04
    Linux面试题: 1.Linux常用系统安全命令 ...chmod // 用来变更文件或目录的权限 setfacl // 设置文件访问控制列表 2.Linux常用进程管理命令 w // 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。 top ...

    Linux面试题:
    1.Linux常用系统安全命令
    sudo // 超级用户
    su // 用于切换当前用户身份到其他身份,变更时需输入所要变更的用户账号与密码。
    chmod // 用来变更文件或目录的权限
    setfacl // 设置文件访问控制列表
    2.Linux常用进程管理命令
    w // 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。
    top // 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
    ps // 用于报告当前系统的进程状态。
    kill // 用来删除执行中的程序或工作。
    pkill // 可以按照进程名杀死进程。
    pstree // 以树状图的方式展现进程之间的派生关系,显示效果比较直观。
    killall // 使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。
    3.Linux常用用户管理命令
    id // 可以显示真实有效的用户ID(UID)和组ID(GID)。
    usermod // 用于修改用户的基本信息。
    useradd // 用于 Linux中创建的新的系统用户。
    groupadd // 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
    userdel // 用户删除给定的用户,以及与用户相关的文件。若不加选型,则进删除用户账号,而不删除相关文件。
    4.Linux系统关机和重启
    shutdown reboot
    5.Linux系统定时任务
    contab -e //创建定时任务
    6.Linux文件内容查看
    head // 用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
    tail // 用于输入文件中的尾部内容。tail命名默认在屏幕上显示指定文件的末尾10行。
    more // 用来浏览文件档案的内容(只能向前浏览)。
    less // 用来浏览文字档案的内容,允许用户向前或向后浏览文件。使用该命令时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
    7.计划每星期天早8点服务器定时重启,如何实现?
    Crontab-e
    0008 * * 7 /sbin/init 6
    8.linux下如何改IP,主机名,DNS
    使用setup 命令可以修改IP 和DNS ,修改完后重启网络:service network restart

    临时修改即时生效,重启后失效
    hostname主机名: 修改主机名
    ifconfigeth0 IP netmask 掩码 :修改IP

    永久修改主机名: 修改:/etc/sysconfig/network 文件 HOSTNAME=主机名
    永久修改IP地址:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件
    修改完后重启网络:service network restart
    9.如何用mysql 命令进行备份和恢复? 以test 库为例,创建一个备份,并再用此备份进行恢复。
    答案:mysqldump -u root -p test > test.bak
    mysql -u root -p < test.bak
    10.linux系统中如何获取pid为100的进程所监听的tcp端口,请给出详细命令?
    netstat -nlpt |grep 100
    4.Linux常用命令
    arch 显示机器的处理器架构(1) 
    uname -m 显示机器的处理器架构(2) 
    uname -r 显示正在使用的内核版本 
    dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) 
    hdparm -i /dev/hda 罗列一个磁盘的架构特性 
    hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 
    cat /proc/cpuinfo 显示CPU info的信息 
    cat /proc/interrupts 显示中断 
    cat /proc/meminfo 校验内存使用 
    cat /proc/swaps 显示哪些swap被使用 
    cat /proc/version 显示内核的版本 
    cat /proc/net/dev 显示网络适配器及统计 
    cat /proc/mounts 显示已加载的文件系统 
    lspci -tv 罗列 PCI 设备 
    lsusb -tv 显示 USB 设备 
    date 显示系统日期 
    cal 2007 显示2007年的日历表 
    date 041217002007.00 设置日期和时间 - 月日时分年.秒 
    clock -w 将时间修改保存到 BIOS

    关机 (系统的关机、重启以及登出 ) 
    shutdown -h now 关闭系统(1) 
    init 0 关闭系统(2) 
    telinit 0 关闭系统(3) 
    shutdown -h hours:minutes & 按预定时间关闭系统 
    shutdown -c 取消按预定时间关闭系统 
    shutdown -r now 重启(1) 
    reboot 重启(2) 
    logout 注销

    文件和目录 
    cd /home 进入 ‘/ home’ 目录’ 
    cd … 返回上一级目录 
    cd …/… 返回上两级目录 
    cd 进入个人的主目录 
    cd ~user1 进入个人的主目录 
    cd - 返回上次所在的目录 
    pwd 显示工作路径 
    ls 查看目录中的文件 
    ls -F 查看目录中的文件 
    ls -l 显示文件和目录的详细资料 
    ls -a 显示隐藏文件 
    ls [0-9] 显示包含数字的文件名和目录名 
    tree 显示文件和目录由根目录开始的树形结构(1) 
    lstree 显示文件和目录由根目录开始的树形结构(2) 
    mkdir dir1 创建一个叫做 ‘dir1’ 的目录’ 
    mkdir dir1 dir2 同时创建两个目录 
    mkdir -p /tmp/dir1/dir2 创建一个目录树 
    rm -f file1 删除一个叫做 ‘file1’ 的文件’ 
    rmdir dir1 删除一个叫做 ‘dir1’ 的目录’ 
    rm -rf dir1 删除一个叫做 ‘dir1’ 的目录并同时删除其内容 
    rm -rf dir1 dir2 同时删除两个目录及它们的内容 
    mv dir1 new_dir 重命名/移动 一个目录 
    cp file1 file2 复制一个文件 
    cp dir/* . 复制一个目录下的所有文件到当前工作目录 
    cp -a /tmp/dir1 . 复制一个目录到当前工作目录 
    cp -a dir1 dir2 复制一个目录 
    ln -s file1 lnk1 创建一个指向文件或目录的软链接 
    ln file1 lnk1 创建一个指向文件或目录的物理链接 
    touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) 
    file file1 outputs the mime type of the file as text 
    iconv -l 列出已知的编码 
    iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. 
    find . -maxdepth 1 -name *.jpg -print -exec convert “{}” -resize 80x60 “thumbs/{}” ; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)

    文件搜索 
    find / -name file1 从 ‘/’ 开始进入根文件系统搜索文件和目录 
    find / -user user1 搜索属于用户 ‘user1’ 的文件和目录 
    find /home/user1 -name *.bin 在目录 ‘/ home/user1’ 中搜索带有’.bin’ 结尾的文件 
    find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 
    find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 
    find / -name *.rpm -exec chmod 755 ‘{}’ ; 搜索以 ‘.rpm’ 结尾的文件并定义其权限 
    find / -xdev -name *.rpm 搜索以 ‘.rpm’ 结尾的文件,忽略光驱、捷盘等可移动设备 
    locate *.ps 寻找以 ‘.ps’ 结尾的文件 - 先运行 ‘updatedb’ 命令 
    whereis halt 显示一个二进制文件、源码或man的位置 
    which halt 显示一个二进制文件或可执行文件的完整路径

    挂载一个文件系统 
    mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 ‘/ mnt/hda2’ 已经存在 
    umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 ‘/ mnt/hda2’ 退出 
    fuser -km /mnt/hda2 当设备繁忙时强制卸载 
    umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 
    mount /dev/fd0 /mnt/floppy 挂载一个软盘 
    mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom 
    mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom 
    mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件 
    mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统 
    mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备 
    mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享

    磁盘空间 
    df -h 显示已经挂载的分区列表 
    ls -lSr |more 以尺寸大小排列文件和目录 
    du -sh dir1 估算目录 ‘dir1’ 已经使用的磁盘空间’ 
    du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小 
    rpm -q -a --qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统) 
    dpkg-query -W -f=’ I n s t a l l e d − S i z e ; 10 t {Installed-Size;10}t InstalledSize;10t{Package}n’ | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)

    用户和群组 
    groupadd group_name 创建一个新用户组 
    groupdel group_name 删除一个用户组 
    groupmod -n new_group_name old_group_name 重命名一个用户组 
    useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 “admin” 用户组的用户 
    useradd user1 创建一个新用户 
    userdel -r user1 删除一个用户 ( ‘-r’ 排除主目录) 
    usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性 
    passwd 修改口令 
    passwd user1 修改一个用户的口令 (只允许root执行) 
    chage -E 2005-12-31 user1 设置用户口令的失效期限 
    pwck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的用户 
    grpck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组 
    newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组

    文件的权限 - 使用 “+” 设置权限,使用 “-” 用于取消 
    ls -lh 显示权限 
    ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 
    chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 
    chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 
    chown user1 file1 改变一个文件的所有人属性 
    chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 
    chgrp group1 file1 改变文件的群组 
    chown user1:group1 file1 改变一个文件的所有人和群组属性 
    find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件 
    chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 
    chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 
    chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 
    chmod g-s /home/public 禁用一个目录的 SGID 位 
    chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 
    chmod o-t /home/public 禁用一个目录的 STIKY 位

    文件的特殊属性 - 使用 “+” 设置权限,使用 “-” 用于取消 
    chattr +a file1 只允许以追加方式读写文件 
    chattr +c file1 允许这个文件能被内核自动压缩/解压 
    chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 
    chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 
    chattr +s file1 允许一个文件被安全地删除 
    chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 
    chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 
    lsattr 显示特殊的属性

    打包和压缩文件 
    bunzip2 file1.bz2 解压一个叫做 'file1.bz2’的文件 
    bzip2 file1 压缩一个叫做 ‘file1’ 的文件 
    gunzip file1.gz 解压一个叫做 'file1.gz’的文件 
    gzip file1 压缩一个叫做 'file1’的文件 
    gzip -9 file1 最大程度压缩 
    rar a file1.rar test_file 创建一个叫做 ‘file1.rar’ 的包 
    rar a file1.rar file1 file2 dir1 同时压缩 ‘file1’, ‘file2’ 以及目录 ‘dir1’ 
    rar x file1.rar 解压rar包 
    unrar x file1.rar 解压rar包 
    tar -cvf archive.tar file1 创建一个非压缩的 tarball 
    tar -cvf archive.tar file1 file2 dir1 创建一个包含了 ‘file1’, ‘file2’ 以及 'dir1’的档案文件 
    tar -tf archive.tar 显示一个包中的内容 
    tar -xvf archive.tar 释放一个包 
    tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 
    tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 
    tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 
    tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 
    tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包 
    zip file1.zip file1 创建一个zip格式的压缩包 
    zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 
    unzip file1.zip 解压一个zip格式压缩包

    RPM 包 - (Fedora, Redhat及类似系统) 
    rpm -ivh package.rpm 安装一个rpm包 
    rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 
    rpm -U package.rpm 更新一个rpm包但不改变其配置文件 
    rpm -F package.rpm 更新一个确定已经安装的rpm包 
    rpm -e package_name.rpm 删除一个rpm包 
    rpm -qa 显示系统中所有已经安装的rpm包 
    rpm -qa | grep httpd 显示所有名称中包含 “httpd” 字样的rpm包 
    rpm -qi package_name 获取一个已安装包的特殊信息 
    rpm -qg “System Environment/Daemons” 显示一个组件的rpm包 
    rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表 
    rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表 
    rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表 
    rpm -q package_name --whatprovides 显示一个rpm包所占的体积 
    rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l 
    rpm -q package_name --changelog 显示一个rpm包的修改历史 
    rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供 
    rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表 
    rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书 
    rpm --checksig package.rpm 确认一个rpm包的完整性 
    rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性 
    rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 
    rpm -Va 检查系统中所有已安装的rpm包- 小心使用 
    rpm -Vp package.rpm 确认一个rpm包还未安装 
    rpm2cpio package.rpm | cpio --extract --make-directories bin 从一个rpm包运行可执行文件 
    rpm -ivh /usr/src/redhat/RPMS/arch/package.rpm 从一个rpm源码安装一个构建好的包 
    rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包

    YUM 软件包升级器 - (Fedora, RedHat及类似系统) 
    yum install package_name 下载并安装一个rpm包 
    yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 
    yum update package_name.rpm 更新当前系统中所有安装的rpm包 
    yum update package_name 更新一个rpm包 
    yum remove package_name 删除一个rpm包 
    yum list 列出当前系统中安装的所有包 
    yum search package_name 在rpm仓库中搜寻软件包 
    yum clean packages 清理rpm缓存删除下载的包 
    yum clean headers 删除所有头文件 
    yum clean all 删除所有缓存的包和头文件

    DEB 包 (Debian, Ubuntu 以及类似系统) 
    dpkg -i package.deb 安装/更新一个 deb 包 
    dpkg -r package_name 从系统删除一个 deb 包 
    dpkg -l 显示系统中所有已经安装的 deb 包 
    dpkg -l | grep httpd 显示所有名称中包含 “httpd” 字样的deb包 
    dpkg -s package_name 获得已经安装在系统中一个特殊包的信息 
    dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表 
    dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表 
    dpkg -S /bin/ping 确认所给的文件由哪个deb包提供

    APT 软件工具 (Debian, Ubuntu 以及类似系统) 
    apt-get install package_name 安装/更新一个 deb 包 
    apt-cdrom install package_name 从光盘安装/更新一个 deb 包 
    apt-get update 升级列表中的软件包 
    apt-get upgrade 升级所有已安装的软件 
    apt-get remove package_name 从系统删除一个deb包 
    apt-get check 确认依赖的软件仓库正确 
    apt-get clean 从下载的软件包中清理缓存 
    apt-cache search searched-package 返回包含所要搜索字符串的软件包名称

    查看文件内容 
    cat file1 从第一个字节开始正向查看文件的内容 
    tac file1 从最后一行开始反向查看一个文件的内容 
    more file1 查看一个长文件的内容 
    less file1 类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作 
    head -2 file1 查看一个文件的前两行 
    tail -2 file1 查看一个文件的最后两行 
    tail -f /var/log/messages 实时查看被添加到一个文件中的内容

    什么是MongoDB?
    答:mongodb是基于分布式文件存储的nosql数据库,是一种文档型数据库,适合存储

    海量数据并提高性能存取。2.mongodb三元素:
    答:数据库、集合(表)、文档(行)

    名字空间(namespace)是什么?
    答:MongoDB存储BSON对象在丛集(collection)中。数据库名字和丛集名字以句点连结起来叫做名字空间(namespace)。

    MongoDB的特点是什么?
      答:(1)面向文档(2)高性能(3)高可用(4)易扩展(5)丰富的查询语言

    MySQL与MongoDB本质之间最基本的差别是什么?
    答:mongodb的本质还是一个数据库产品,3.0以上版本其稳定性和健壮性有很大提升。它与mysql的区别在于它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。其主要特性如下:
     面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;
     格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;
     强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力;
     完整的索引支持,支持查询计划;
     支持复制和自动故障转移;
     支持二进制数据及大型对象(文件)的高效存储;
     使用分片集群提升系统扩展性;
     使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作;。

    各个数据库存储引擎区别?
    答:mysql的存储引擎是针对表进行设置的,一个库的不同表可以设置不同的存储引擎,mysql默认支持多种存储引擎,以适用不同领域的数据库应用需要,主要的几个数据库引擎如下:
     MyISAM存储引擎
    5.5之前默认的存储引擎,不支持事务、不支持外键,表级锁,内存和硬盘空间占用率低,其优势是访问速度快,对事务完整性没有要求,以select、insert为主的应用基本上都可以使用这个引擎;
     InnoDB存储引擎
    5.5之后默认的存储引擎,提供了具有提交、回滚和奔溃恢复能力的事务安全,支持外键并提供了行级锁,其劣势在于写的处理效率相对较低,并且会占用更多的磁盘空间以保留数据和索引;
     MEMORY存储引擎
    使用存于内存中的内容来创建表,MEMORY类型的表数据存于内存访问非常的快,默认使用HASH索引,一旦数据库服务重启或关闭,表中的数据就会丢失;
     MERGE存储引擎
    MERGE存储引擎是一组MyISAM表组合,这些MyISAM表结构完全相同。MERGE表本身没有数据,对MERGE表的CRUD操作都是通过内部的MyISAM表进行的;

    mongoDB 主要使用在什么应用场景?
     答:MongoDB 的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等,以下是几个实际的应用案例:
     游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
     物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
     社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
     物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
     视频直播,使用 MongoDB 存储用户信息、礼物信息等

    6、数据库范式?
    范式 内容
    1NF 每一列都是不可分割的基本数据项,同一列无二值;无重复的域;
    2NF 实例依赖于主键部分;
    3NF 属性不依赖于其他非主属性;
    8、什么情况下设置了索引但无法使用?
    ① 以“%”开头的LIKE语句,模糊匹配
    ② OR语句前后没有同时使用索引
    ③ 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型
    9、数据库中的事务是什么?
    事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。ACID 四大特性,原子性、隔离性、一致性、持久性。

    了解XSS攻击吗?如何防止SQL注入?
    XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的Activex控件执行恶意的行为。
    使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。
    防止SQL注入的方式:
    开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime设置
    执行sql语句时使用addslashes进行sql语句转换
    Sql语句书写尽量不要省略双引号和单引号。
    过滤掉sql语句中的一些关键词:update、insert、delete、select、 * 。
    提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。
    Php配置文件中设置register_globals为off,关闭全局变量注册
    控制错误信息,不要在浏览器上输出错误信息,将错误信息写到日志文件中。

    5、Ndinx与apache的区别?
    Nginx
    轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源
    抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
    nginx 处理静态文件好,静态处理性能比 apache 高三倍以上
    nginx 的设计高度模块化,编写模块相对简单
    nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃
    nginx 作为负载均衡服务器,支持 7 层负载均衡
    nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
    启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级
    社区活跃,各种高性能模块出品迅速
    Apache
    apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache
    apache 发展到现在,模块超多,基本想到的都可以找到
    apache 更为成熟,少 bug ,nginx 的 bug 相对较多
    apache 超稳定
    apache 对 PHP 支持比较简单,nginx 需要配合其他后端用
    apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。
    apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区

    展开全文
  • js面试题

    千次阅读 多人点赞 2019-04-09 19:42:32
    缺点:不能实现私有属性和私有方法,实例对象之间也不能共享数据 var Person = { firstname : "Mark" , lastname : "Yun" , age : 25 , introduce : function ( ) { alert ( 'I am...

    JavaScript 的组成

    JavaScript 由以下三部分组成:

    • ECMAScript(核心):JavaScript 语言基础
    • DOM(文档对象模型):规定了访问 HTML 和 XML 的接口
    • BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法

    JS 的基本数据类型和引用数据类型

    • 基本数据类型:undefined、null、boolean、number、string、symbol
    • 引用数据类型:object、array、function

    检测浏览器版本版本有哪些方式?

    • 根据 navigator.userAgent // UA.toLowerCase().indexOf(‘chrome’)
    • 根据 window 对象的成员 // ‘ActiveXObject’ in window

    介绍 JS 有哪些内置对象?

    • 数据封装类对象:Object、Array、Boolean、Number、String
    • 其他对象:Function、Arguments、Math、Date、RegExp、Error
    • ES6 新增对象:Symbol、Map、Set、Promises、Proxy、Reflect

    说几条写 JavaScript 的基本规范?

    • 代码缩进,建议使用“四个空格”缩进
    • 代码段使用花括号{}包裹
    • 语句结束使用分号;
    • 变量和函数在使用前进行声明
    • 以大写字母开头命名构造函数,全大写命名常量
    • 规范定义 JSON 对象,补全双引号
    • 用{}和[]声明对象和数组

    如何编写高性能的 JavaScript?

    • 遵循严格模式:“use strict”;
    • 将 js 脚本放在页面底部,加快渲染页面
    • 将 js 脚本将脚本成组打包,减少请求
    • 使用非阻塞方式下载 js 脚本
    • 尽量使用局部变量来保存全局变量
    • 尽量减少使用闭包
    • 使用 window 对象属性方法时,省略 window
    • 尽量减少对象成员嵌套
    • 缓存 DOM 节点的访问
    • 通过避免使用 eval() 和 Function() 构造器
    • 给 setTimeout() 和 setInterval() 传递函数而不是字符串作为参数
    • 尽量使用直接量创建对象和数组
    • 最小化重绘(repaint)和回流(reflow)

    DOM 元素 e 的 e.getAttribute(propName)和 e.propName 有什么区别和联系

    • e.getAttribute(),是标准 DOM 操作文档元素属性的方法,具有通用性可在任意文档上使用,返回元素在源文件中设置的属性
    • e.propName 通常是在 HTML 文档中访问特定元素的特性,浏览器解析元素后生成对应对象(如 a 标签生成 HTMLAnchorElement),这些对象的特性会根据特定规则结合属性设置得到,对于没有对应特性的属性,只能使用 getAttribute 进行访问
    • e.getAttribute()返回值是源文件中设置的值,类型是字符串或者 null(有的实现返回"")
    • e.propName 返回值可能是字符串、布尔值、对象、undefined 等
    • 大部分 attribute 与 property 是一一对应关系,修改其中一个会影响另一个,如 id,title 等属性
    • 一些布尔属性<input hidden/>的检测设置需要 hasAttribute 和 removeAttribute 来完成,或者设置对应 property
    • <a href="../index.html">link</a>中 href 属性,转换成 property 的时候需要通过转换得到完整 URL
    • 一些 attribute 和 property 不是一一对应如:form 控件中<input value="hello"/>对应的是 defaultValue,修改或设置 value property 修改的是控件当前值,setAttribute 修改 value 属性不会改变 value property

    offsetWidth/offsetHeight,clientWidth/clientHeight 与 scrollWidth/scrollHeight 的区别

    • offsetWidth/offsetHeight 返回值包含 content + padding + border,效果与 e.getBoundingClientRect()相同
    • clientWidth/clientHeight 返回值只包含 content + padding,如果有滚动条,也不包含滚动条
    • scrollWidth/scrollHeight 返回值包含 content + padding + 溢出内容的尺寸

    描述浏览器的渲染过程,DOM 树和渲染树的区别?

    浏览器的渲染过程:

    • 解析 HTML 构建 DOM(DOM 树),并行请求 css/image/js
    • CSS 文件下载完成,开始构建 CSSOM(CSS 树)
    • CSSOM 构建结束后,和 DOM 一起生成 Render Tree(渲染树)
    • 布局(Layout):计算出每个节点在屏幕中的位置
    • 显示(Painting):通过显卡把页面画到屏幕上

    DOM 树 和 渲染树 的区别:

    • DOM 树与 HTML 标签一一对应,包括 head 和隐藏元素
    • 渲染树不包括 head 和隐藏元素,大段文本的每一个行都是独立节点,每一个节点都有对应的 css 属性

    重绘和回流(重排)的区别和关系?

    • 重绘:当渲染树中的元素外观(如:颜色)发生改变,不影响布局时,产生重绘
    • 回流:当渲染树中的元素的布局(如:尺寸、位置、隐藏/状态状态)发生改变时,产生重绘回流
    • 注意:JS 获取 Layout 属性值(如:offsetLeft、scrollTop、getComputedStyle 等)也会引起回流。因为浏览器需要通过回流计算最新值
    • 回流必将引起重绘,而重绘不一定会引起回流

    如何最小化重绘(repaint)和回流(reflow)?

    • 需要要对元素进行复杂的操作时,可以先隐藏(display:“none”),操作完成后再显示
    • 需要创建多个 DOM 节点时,使用 DocumentFragment 创建完后一次性的加入 document
    • 缓存 Layout 属性值,如:var left = elem.offsetLeft; 这样,多次使用 left 只产生一次回流
    • 尽量避免用 table 布局(table 元素一旦触发回流就会导致 table 里所有的其它元素回流)
    • 避免使用 css 表达式(expression),因为每次调用都会重新计算值(包括加载页面)
    • 尽量使用 css 属性简写,如:用 border 代替 border-width, border-style, border-color
      批量修改元素样式:elem.className 和 elem.style.cssText 代替 elem.style.xxx

    script 的位置是否会影响首屏显示时间?

    • 在解析 HTML 生成 DOM 过程中,js 文件的下载是并行的,不需要 DOM 处理到 script 节点。因此,script 的位置不影响首屏显示的开始时间。
    • 浏览器解析 HTML 是自上而下的线性过程,script 作为 HTML 的一部分同样遵循这个原则
    • 因此,script 会延迟 DomContentLoad,只显示其上部分首屏内容,从而影响首屏显示的完成时间

    解释 JavaScript 中的作用域与变量声明提升?

    JavaScript 作用域:

    • 在 Java、C 等语言中,作用域为 for 语句、if 语句或{}内的一块区域,称为作用域;
    • 而在 JavaScript 中,作用域为 function(){}内的区域,称为函数作用域。

    JavaScript 变量声明提升:

    • 在 JavaScript 中,函数声明与变量声明经常被 JavaScript 引擎隐式地提升到当前作用域的顶部。
    • 声明语句中的赋值部分并不会被提升,只有名称被提升
    • 函数声明的优先级高于变量,如果变量名跟函数名相同且未赋值,则函数声明会覆盖变量声明
    • 如果函数有多个同名参数,那么最后一个参数(即使没有定义)会覆盖前面的同名参数

    介绍 JavaScript 的原型,原型链?有什么特点?

    原型:

    • JavaScript 的所有对象中都包含了一个 [proto] 内部属性,这个属性所对应的就是该对象的原型
    • JavaScript 的函数对象,除了原型 [proto] 之外,还预置了 prototype 属性
    • 当函数对象作为构造函数创建实例时,该 prototype 属性值将被作为实例对象的原型 [proto]。

    原型链:

    • 当一个对象调用的属性/方法自身不存在时,就会去自己 [proto] 关联的前辈 prototype 对象上去找
    • 如果没找到,就会去该 prototype 原型 [proto] 关联的前辈 prototype 去找。依次类推,直到找到属性/方法或 undefined 为止。从而形成了所谓的“原型链”

    原型特点:

    • JavaScript 对象是通过引用来传递的,当修改原型时,与之相关的对象也会继承这一改变

    JavaScript 有几种类型的值?,你能画一下他们的内存图吗

    • 原始数据类型(Undefined,Null,Boolean,Number、String)-- 栈
    • 引用数据类型(对象、数组和函数)-- 堆
    • 两种类型的区别是:存储位置不同:
    • 原始数据类型是直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据;
    • 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;
    • 引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。
    • 当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

    JavaScript 如何实现一个类,怎么实例化这个类?

    1. 构造函数法(this + prototype) – 用 new 关键字 生成实例对象
      • 缺点:用到了 this 和 prototype,编写复杂,可读性差
      function Mobile(name, price){
         this.name = name;
         this.price = price;
       }
       Mobile.prototype.sell = function(){
          alert(this.name + ",售价 $" + this.price);
       }
       var iPhone7 = new Mobile("iPhone7", 1000);
       iPhone7.sell();
    
    1. Object.create 法 – 用 Object.create() 生成实例对象
      • 缺点:不能实现私有属性和私有方法,实例对象之间也不能共享数据
     var Person = {
         firstname: "Mark",
         lastname: "Yun",
         age: 25,
         introduce: function(){
             alert('I am ' + Person.firstname + ' ' + Person.lastname);
         }
     };
    
     var person = Object.create(Person);
     person.introduce();
    
     // Object.create 要求 IE9+,低版本浏览器可以自行部署:
     if (!Object.create) {
        Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
      };
     }
    
    1. 极简主义法(消除 this 和 prototype) – 调用 createNew() 得到实例对象
      • 优点:容易理解,结构清晰优雅,符合传统的"面向对象编程"的构造
     var Cat = {
       age: 3, // 共享数据 -- 定义在类对象内,createNew() 外
       createNew: function () {
         var cat = {};
         // var cat = Animal.createNew(); // 继承 Animal 类
         cat.name = "小咪";
         var sound = "喵喵喵"; // 私有属性--定义在 createNew() 内,输出对象外
         cat.makeSound = function () {
           alert(sound);  // 暴露私有属性
         };
         cat.changeAge = function(num){
           Cat.age = num; // 修改共享数据
         };
         return cat; // 输出对象
       }
     };
    
     var cat = Cat.createNew();
     cat.makeSound();
    
    1. ES6 语法糖 class – 用 new 关键字 生成实例对象
         class Point {
           constructor(x, y) {
             this.x = x;
             this.y = y;
           }
           toString() {
             return '(' + this.x + ', ' + this.y + ')';
           }
         }
    
      var point = new Point(2, 3);
    

    Javascript 如何实现继承?

    1. 构造函数绑定:使用 call 或 apply 方法,将父对象的构造函数绑定在子对象上
    function Cat(name,color){
      Animal.apply(this, arguments);
      this.name = name;
      this.color = color;
    }
    
    1. 实例继承:将子对象的 prototype 指向父对象的一个实例
    Cat.prototype = new Animal();
    Cat.prototype.constructor = Cat;
    
    1. 拷贝继承:如果把父对象的所有属性和方法,拷贝进子对象
    function extend(Child, Parent) {
       var p = Parent.prototype;
       var c = Child.prototype;
       for (var i in p) {
          c[i] = p[i];
       }
       c.uber = p;
    }
    
    1. 原型继承:将子对象的 prototype 指向父对象的 prototype
    function extend(Child, Parent) {
        var F = function(){};
         F.prototype = Parent.prototype;
         Child.prototype = new F();
         Child.prototype.constructor = Child;
         Child.uber = Parent.prototype;
    }
    
    1. ES6 语法糖 extends:class ColorPoint extends Point {}
    class ColorPoint extends Point {
        constructor(x, y, color) {
            super(x, y); // 调用父类的constructor(x, y)
            this.color = color;
        }
        toString() {
            return this.color + ' ' + super.toString(); // 调用父类的toString()
        }
    }
    

    js 继承方式及其优缺点

    原型链继承的缺点

    • 一是字面量重写原型会中断关系,使用引用类型的原型,并且子类型还无法给超类型传递参数。

    借用构造函数(类式继承)

    • 借用构造函数虽然解决了刚才两种问题,但没有原型,则复用无从谈起。所以我们需要原型链+借用构造函数的模式,这种模式称为组合继承

    组合式继承

    • 组合式继承是比较常用的一种继承方法,其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又保证每个实例都有它自己的属性。

    javascript 创建对象的几种方式?

    javascript 创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用 JSON;但写法有很多种,也能混合使用

    1. 对象字面量的方式
    person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};
    
    1. 用 function 来模拟无参的构造函数
     function Person(){}
        var person=new Person();//定义一个function,如果使用new"实例化",该function可以看作是一个Class
            person.name="Mark";
            person.age="25";
            person.work=function(){
            alert(person.name+" hello...");
        }
    person.work();
    
    1. 用 function 来模拟参构造函数来实现(用 this 关键字定义构造的上下文属性)
    function Pet(name,age,hobby){
        this.name=name;//this作用域:当前对象
        this.age=age;
        this.hobby=hobby;
        this.eat=function(){
            alert("我叫"+this.name+",我喜欢"+this.hobby+",是个程序员");
        }
    }
    var maidou =new Pet("麦兜",25,"coding");//实例化、创建对象
    maidou.eat();//调用eat方法
    
    1. 用工厂方式来创建(内置对象)
    var wcDog =new Object();
         wcDog.name="旺财";
         wcDog.age=3;
    wcDog.work=function(){
        alert("我是"+wcDog.name+",汪汪汪......");
    }
    wcDog.work();
    
    1. 用原型方式来创建
    function Dog(){
    
        }
    Dog.prototype.name="旺财";
    Dog.prototype.eat=function(){
        alert(this.name+"是个吃货");
    }
    var wangcai =new Dog();
    wangcai.eat();
    
    1. 用混合方式来创建
    function Car(name,price){
        this.name=name;
        this.price=price;
    }
        Car.prototype.sell=function(){
        alert("我是"+this.name+",我现在卖"+this.price+"万元");
        }
    var camry =new Car("凯美瑞",27);
    camry.sell();
    

    Javascript 作用链域?

    • 全局函数无法查看局部函数的内部细节,但局部函数可以查看其上层的函数细节,直至全局细节
    • 如果当前作用域没有找到属性或方法,会向上层作用域查找,直至全局函数,这种形式就是作用域链

    谈谈 this 对象的理解

    • this 总是指向函数的直接调用者
    • 如果有 new 关键字,this 指向 new 出来的实例对象
    • 在事件中,this 指向触发这个事件的对象
    • IE 下 attachEvent 中的 this 总是指向全局对象 Window

    eval 是做什么的?

    eval 的功能是把对应的字符串解析成 JS 代码并运行

    • 应该避免使用 eval,不安全,非常耗性能(先解析成 js 语句,再执行)
    • 由 JSON 字符串转换为 JSON 对象的时候可以用 eval(’(’+ str +’)’);

    什么是 Window 对象? 什么是 Document 对象?

    • Window 对象表示当前浏览器的窗口,是 JavaScript 的顶级对象。
    • 我们创建的所有对象、函数、变量都是 Window 对象的成员。
    • Window 对象的方法和属性是在全局范围内有效的。
    • Document 对象是 HTML 文档的根节点与所有其他节点(元素节点,文本节点,属性节点, 注释节点)
    • Document 对象使我们可以通过脚本对 HTML 页面中的所有元素进行访问
    • Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问

    介绍 DOM 的发展

    • DOM:文档对象模型(Document Object Model),定义了访问 HTML 和 XML 文档的标准,与编程语言及平台无关
    • DOM0:提供了查询和操作 Web 文档的内容 API。未形成标准,实现混乱。如:document.forms[‘login’]
    • DOM1:W3C 提出标准化的 DOM,简化了对文档中任意部分的访问和操作。如:JavaScript 中的 Document 对象
    • DOM2:原来 DOM 基础上扩充了鼠标事件等细分模块,增加了对 CSS 的支持。如:getComputedStyle(elem, pseudo)
    • DOM3:增加了 XPath 模块和加载与保存(Load and Save)模块。如:XPathEvaluator

    介绍 DOM0,DOM2,DOM3 事件处理方式区别

    DOM0 级事件处理方式:

    • btn.onclick = func;
    • btn.onclick = null;

    DOM2 级事件处理方式:

    • btn.addEventListener(‘click’, func, false);
    • btn.removeEventListener(‘click’, func, false);
    • btn.attachEvent(“onclick”, func);
    • btn.detachEvent(“onclick”, func);

    DOM3 级事件处理方式:

    • eventUtil.addListener(input, “textInput”, func);
    • eventUtil 是自定义对象,textInput 是 DOM3 级事件

    事件的三个阶段

    捕获、目标、冒泡

    介绍事件“捕获”和“冒泡”执行顺序和事件的执行次数?

    按照 W3C 标准的事件:首是进入捕获阶段,直到达到目标元素,再进入冒泡阶段

    事件执行次数(DOM2-addEventListener):元素上绑定事件的个数

    • 注意 1:前提是事件被确实触发
    • 注意 2:事件绑定几次就算几个事件,即使类型和功能完全一样也不会“覆盖”

    事件执行顺序:判断的关键是否目标元素

    • 非目标元素:根据 W3C 的标准执行:捕获->目标元素->冒泡(不依据事件绑定顺序)
    • 目标元素:依据事件绑定顺序:先绑定的事件先执行(不依据捕获冒泡标准)
    • 最终顺序:父元素捕获->目标元素事件 1->目标元素事件 2->子元素捕获->子元素冒泡->父元素冒泡
    • 注意:子元素事件执行前提 事件确实“落”到子元素布局区域上,而不是简单的具有嵌套关系

    在一个 DOM 上同时绑定两个点击事件:一个用捕获,一个用冒泡。事件会执行几次,先执行冒泡还是捕获?

    • 该 DOM 上的事件如果被触发,会执行两次(执行次数等于绑定次数)
    • 如果该 DOM 是目标元素,则按事件绑定顺序执行,不区分冒泡/捕获
    • 如果该 DOM 是处于事件流中的非目标元素,则先执行捕获,后执行冒泡

    事件的代理/委托

    事件委托是指将事件绑定目标元素的到父元素上,利用冒泡机制触发该事件

    优点:

    • 可以减少事件注册,节省大量内存占用
    • 可以将事件应用于动态添加的子元素上

    缺点: 使用不当会造成事件在不应该触发时触发

    示例:

    ulEl.addEventListener('click', function(e){
        var target = event.target || event.srcElement;
        if(!!target && target.nodeName.toUpperCase() === "LI"){
            console.log(target.innerHTML);
        }
    }, false);
    

    IE 与火狐的事件机制有什么区别? 如何阻止冒泡?

    IE 只事件冒泡,不支持事件捕获;火狐同时支持件冒泡和事件捕获。

    阻止冒泡:

    • 取消默认操作: w3c 的方法是 e.preventDefault(),IE 则是使用 e.returnValue = false;
    • return false javascript 的 return false 只会阻止默认行为,而是用 jQuery 的话则既阻止默认行为又防止对象冒泡。
    • 阻止冒泡 w3c 的方法是 e.stopPropagation(),IE 则是使用 e.cancelBubble = true
    [js] view plaincopy
    function stopHandler(event)
    
        window.event?window.event.cancelBubble=true:event.stopPropagation();
    
    }
    

    参考链接:浅谈 javascript 事件取消和阻止冒泡-开源中国 2015

    IE 的事件处理和 W3C 的事件处理有哪些区别?(必考)

    绑定事件

    • W3C: targetEl.addEventListener(‘click’, handler, false);
    • IE: targetEl.attachEvent(‘onclick’, handler);

    删除事件

    • W3C: targetEl.removeEventListener(‘click’, handler, false);
    • IE: targetEl.detachEvent(event, handler);

    事件对象

    • W3C: var e = arguments.callee.caller.arguments[0]
    • IE: window.event

    事件目标

    • W3C: e.target
    • IE: window.event.srcElement

    阻止事件默认行为

    • W3C: e.preventDefault()
    • IE: window.event.returnValue = false’

    阻止事件传播

    • W3C: e.stopPropagation()
    • IE: window.event.cancelBubble = true

    W3C 事件的 target 与 currentTarget 的区别?

    • target 只会出现在事件流的目标阶段
    • currentTarget 可能出现在事件流的任何阶段
    • 当事件流处在目标阶段时,二者的指向相同
    • 当事件流处于捕获或冒泡阶段时:currentTarget 指向当前事件活动的对象(一般为父级)

    如何派发事件(dispatchEvent)?(如何进行事件广播?)

    • W3C: 使用 dispatchEvent 方法
    • IE: 使用 fireEvent 方法
    var fireEvent = function(element, event){
        if (document.createEventObject){
            var mockEvent = document.createEventObject();
            return element.fireEvent('on' + event, mockEvent)
        }else{
            var mockEvent = document.createEvent('HTMLEvents');
            mockEvent.initEvent(event, true, true);
            return !element.dispatchEvent(mockEvent);
        }
    }
    

    什么是函数节流?介绍一下应用场景和原理?

    • 函数节流(throttle)是指阻止一个函数在很短时间间隔内连续调用。 只有当上一次函数执行后达到规定的时间间隔,才能进行下一次调用。 但要保证一个累计最小调用间隔(否则拖拽类的节流都将无连续效果)
    • 函数节流用于 onresize, onscroll 等短时间内会多次触发的事件
    • 函数节流的原理:使用定时器做时间节流。 当触发一个事件时,先用 setTimout 让这个事件延迟一小段时间再执行。 如果在这个时间间隔内又触发了事件,就 clearTimeout 原来的定时器, 再 setTimeout 一个新的定时器重复以上流程。

    函数节流简单实现:

    function throttle(method, context) {
         clearTimeout(methor.tId);
         method.tId = setTimeout(function(){
             method.call(context);
         }100); // 两次调用至少间隔 100ms
    }
    // 调用
    window.onresize = function(){
        throttle(myFunc, window);
    }
    

    区分什么是“客户区坐标”、“页面坐标”、“屏幕坐标”?

    • 客户区坐标:鼠标指针在可视区中的水平坐标(clientX)和垂直坐标(clientY)
    • 页面坐标:鼠标指针在页面布局中的水平坐标(pageX)和垂直坐标(pageY)
    • 屏幕坐标:设备物理屏幕的水平坐标(screenX)和垂直坐标(screenY)

    如何获得一个 DOM 元素的绝对位置?

    • elem.offsetLeft:返回元素相对于其定位父级左侧的距离
    • elem.offsetTop:返回元素相对于其定位父级顶部的距离
    • elem.getBoundingClientRect():返回一个 DOMRect 对象,包含一组描述边框的只读属性,单位像素

    分析 [‘1’, ‘2’, ‘3’].map(parseInt) 答案是多少?(常考)

    答案:[1, NaN, NaN]

    parseInt(string, radix) 第 2 个参数 radix 表示进制。省略 radix 或 radix = 0,则数字将以十进制解析

    map 每次为 parseInt 传 3 个参数(elem, index, array),其中 index 为数组索引

    因此,map 遍历 [“1”, “2”, “3”],相应 parseInt 接收参数如下

    parseInt('1', 0);  // 1
    parseInt('2', 1);  // NaN
    parseInt('3', 2);  // NaN
    

    所以,parseInt 参数 radix 不合法,导致返回值为 NaN

    new 操作符具体干了什么?

    • 创建实例对象,this 变量引用该对象,同时还继承了构造函数的原型
    • 属性和方法被加入到 this 引用的对象中
    • 新创建的对象由 this 所引用,并且最后隐式的返回 this

    用原生 JavaScript 的实现过什么功能吗?

    封装选择器、调用第三方 API、设置和获取样式(自由回答)

    解释一下这段代码的意思吗?

      [].forEach.call($$("*"), function(el){
          el.style.outline = "1px solid #" + (~~(Math.random()*(1<<24))).toString(16);
      })
    

    解释:获取页面所有的元素,遍历这些元素,为它们添加 1 像素随机颜色的轮廓(outline)

    • ( s e l ) / / (sel) // (sel)//函数被许多现代浏览器命令行支持,等价于 document.querySelectorAll(sel)
    • [].forEach.call(NodeLists) // 使用 call 函数将数组遍历函数 forEach 应到节点元素列表
    • el.style.outline = “1px solid #333” // 样式 outline 位于盒模型之外,不影响元素布局位置
    • (1<<24) // parseInt(“ffffff”, 16) == 16777215 == 2^24 - 1 // 1<<24 == 2^24 == 16777216
    • Math.random()*(1<<24) // 表示一个位于 0 到 16777216 之间的随机浮点数
    • ~~Math.random()*(1<<24) // ~~ 作用相当于 parseInt 取整
    • (~~(Math.random()*(1<<24))).toString(16) // 转换为一个十六进制-

    JavaScript 实现异步编程的方法?

    • 回调函数
    • 事件监听
    • 发布/订阅
    • Promises 对象
    • Async 函数[ES7]

    web 开发中会话跟踪的方法有哪些

    • cookie
    • session
    • url 重写
    • 隐藏 input
    • ip 地址

    什么是闭包(closure),为什么要用它?

    闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域

    闭包的特性:

    • 函数内再嵌套函数
    • 内部函数可以引用外层的参数和变量
    • 参数和变量不会被垃圾回收机制回收

    javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么?

    use strict 是一种 ECMAscript 5 添加的(严格)运行模式,这种模式使得 Javascript 在更严格的条件下运行,使 JS 编码更加规范化的模式,消除 Javascript 语法的一些不合理、不严谨之处,减少一些怪异行为

    如何判断一个对象是否属于某个类?

    // 使用instanceof (待完善)
       if(a instanceof Person){
           alert('yes');
       }
    

    js 延迟加载的方式有哪些?

    defer 和 async、动态创建 DOM 方式(用得最多)、按需异步载入 js

    defer 和 async

    defer 并行加载 js 文件,会按照页面上 script 标签的顺序执行 async 并行加载 js 文件,下载完成立即执行,不会按照页面上 script 标签的顺序执行

    Ajax 是什么? 如何创建一个 Ajax?

    ajax 的全称:Asynchronous Javascript And XML

    异步传输+js+xml

    所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验

    • 创建 XMLHttpRequest 对象,也就是创建一个异步调用对象
    • 建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信息
    • 设置响应 HTTP 请求状态变化的函数
    • 发送 HTTP 请求
    • 获取异步调用返回的数据
    • 用 JavaScript 和 DOM 实现局部刷新

    同步和异步的区别?

    • 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作
    • 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容

    documen.write 和 innerHTML 的区别

    • document.write 只能重绘整个页面
    • innerHTML 可以重绘页面的一部分

    DOM 操作——怎样添加、移除、移动、复制、创建和查找节点?

    创建新节点

    • createDocumentFragment() //创建一个 DOM 片段
    • createElement() //创建一个具体的元素
    • createTextNode() //创建一个文本节点

    添加、移除、替换、插入

    • appendChild()
    • removeChild()
    • replaceChild()
    • insertBefore() //在已有的子节点前插入一个新的子节点

    查找

    • getElementsByTagName() //通过标签名称
    • getElementsByName() // 通过元素的 Name 属性的值(IE 容错能力较强,会得到一个数组,其中包括 id 等于 name 值的) * getElementById() //通过元素 Id,唯一性

    那些操作会造成内存泄漏?

    • 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在
    • 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收
    • setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏
    • 闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

    渐进增强和优雅降级

    • 渐进增强 :针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
    • 优雅降级 :一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

    Javascript 垃圾回收方法

    标记清除(mark and sweep)

    • 这是 JavaScript 最常见的垃圾回收方式,当变量进入执行环境的时候,比如函数中声明一个变量,垃圾回收器将其标记为“进入环境”,当变量离开环境的时候(函数执行结束)将其标记为“离开环境”
    • 垃圾回收器会在运行的时候给存储在内存中的所有变量加上标记,然后去掉环境中的变量以及被环境中变量所引用的变量(闭包),在这些完成之后仍存在标记的就是要删除的变量了

    引用计数(reference counting)

    • 在低版本 IE 中经常会出现内存泄露,很多时候就是因为其采用引用计数方式进行垃圾回收。引用计数的策略是跟踪记录每个值被使用的次数,当声明了一个 变量并将一个引用类型赋值给该变量的时候这个值的引用次数就加 1,如果该变量的值变成了另外一个,则这个值得引用次数减 1,当这个值的引用次数变为 0 的时 候,说明没有变量在使用,这个值没法被访问了,因此可以将其占用的空间回收,这样垃圾回收器会在运行的时候清理掉引用次数为 0 的值占用的空间

    参考链接 内存管理-MDN

    用过哪些设计模式?

    1. 工厂模式:
    • 主要好处就是可以消除对象间的耦合,通过使用工程方法而不是 new 关键字。将所有实例化的代码集中在一个位置防止代码重复
    • 工厂模式解决了重复实例化的问题 ,但还有一个问题,那就是识别问题,因为根本无法 搞清楚他们到底是哪个对象的实例
    function createObject(name,age,profession){
        //集中实例化的函数
        var obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.profession = profession;
        obj.move = function () {
            return this.name + ' at ' + this.age + ' engaged in ' + this.profession;
        };
        return obj;
    }
    var test1 = createObject('trigkit4',22,'programmer');//第一个实例var test2 = createObject('mike',25,'engineer');//第二个实例
    
    1. 构造函数模式
    • 使用构造函数的方法 ,即解决了重复实例化的问题 ,又解决了对象识别的问题,该模式与工厂模式的不同之处在于
    • 构造函数方法没有显示的创建对象 (new Object());
    • 直接将属性和方法赋值给 this 对象;
    • 没有 renturn 语句

    说说你对闭包的理解

    使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在 js 中,函数即闭包,只有函数才会产生作用域的概念

    闭包有三个特性:

    • 函数嵌套函数
    • 函数内部可以引用外部的参数和变量
    • 参数和变量不会被垃圾回收机制回收

    请解释一下 JavaScript 的同源策略

    • 概念:同源策略是客户端脚本(尤其是 Javascript)的重要的安全度量标准。它最早出自 Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议
    • 指一段脚本只能读取来自同一来源的窗口和文档的属性

    为什么要有同源限制?

    我们举例说明:比如一个黑客程序,他利用 Iframe 把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过 Javascript 读取到你的表单中 input 中的内容,这样用户名,密码就轻松到手了。]

    缺点: 现在网站的 JS 都会进行压缩,一些文件用了严格模式,而另一些没有。这时这些本来是严格模式的文件,被 merge 后,这个串就到了文件的中间,不仅没有指示严格模式,反而在压缩后浪费了字节

    实现一个函数 clone,可以对 JavaScript 中的 5 种主要的数据类型(包括 Number、String、Object、Array、Boolean)进行值复制(常考)

    function deepClone(obj) {
        if (!isObject(obj)) {
            throw new Error('obj 不是一个对象!')
        }
    
        let isArray = Array.isArray(obj)
        let cloneObj = isArray ? [] : {}
        for (let key in obj) {
            cloneObj[key] = isObject(obj[key]) ? deepClone(obj[key]) : obj[key]
        }
    
        return cloneObj
    }
    

    注意:for…in 法不支持拷贝 func、date、reg 和 err

    // 代理法
    function deepClone(obj) {
        if (!isObject(obj)) {
            throw new Error('obj 不是一个对象!')
        }
    
        let isArray = Array.isArray(obj)
        let cloneObj = isArray ? [...obj] : { ...obj }
        Reflect.ownKeys(cloneObj).forEach(key => {
            cloneObj[key] = isObject(obj[key]) ? deepClone(obj[key]) : obj[key]
        })
    
        return cloneObj
    }
    

    说说严格模式的限制

    • 严格模式主要有以下限制:
    • 变量必须声明后再使用
    • 函数的参数不能有同名属性,否则报错
    • 不能使用 with 语句
    • 不能对只读属性赋值,否则报错
    • 不能使用前缀 0 表示八进制数,否则报错
    • 不能删除不可删除的属性,否则报错
    • 不能删除变量 delete prop,会报错,只能删除属性 delete global[prop]
    • eval 不会在它的外层作用域引入变量
    • eval 和 arguments 不能被重新赋值
    • arguments 不会自动反映函数参数的变化
    • 不能使用 arguments.callee
    • 不能使用 arguments.caller
    • 禁止 this 指向全局对象
    • 不能使用 fn.caller 和 fn.arguments 获取函数调用的堆栈
    • 增加了保留字(比如 protected、static 和 interface)

    如何删除一个 cookie

    将时间设为当前时间往前一点

    var date = new Date();
    date.setDate(date.getDate() - 1);//真正的删除
    

    setDate()方法用于设置一个月的某一天

    expires 的设置

      document.cookie = 'user='+ encodeURIComponent('name')  + ';expires = ' + new Date(0)
    

    编写一个方法 求一个字符串的字节长度

    假设:一个英文字符占用一个字节,一个中文字符占用两个字节

    function GetBytes(str){
    
            var len = str.length;
    
            var bytes = len;
    
            for(var i=0; i<len; i++){
    
                if (str.charCodeAt(i) > 255) bytes++;
    
            }
    
            return bytes;
    
        }
    
    alert(GetBytes("你好,as"));
    

    请解释什么是事件代理

    事件代理(Event Delegation),又称之为事件委托。是 JavaScript 中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是 DOM 元素的事件冒泡。使用事件代理的好处是可以提高性能

    attribute 和 property 的区别是什么?

    • attribute 是 dom 元素在文档中作为 html 标签拥有的属性;
    • property 就是 dom 元素在 js 中作为对象拥有的属性。
    • 对于 html 的标准属性来说,attribute 和 property 是同步的,是会自动更新的
    • 但是对于自定义的属性来说,他们是不同步的

    页面编码和被请求的资源编码如果不一致如何处理?

    • 后端响应头设置 charset
    • 前端页面<meta>设置 charset

    <script> 放在 </body> 之前和之后有什么区别?浏览器会如何解析它们?

    按照 HTML 标准,在结束后出现<script>或任何元素的开始标签,都是解析错误
    虽然不符合 HTML 标准,但浏览器会自动容错,使实际效果与写在</body>之前没有区别
    浏览器的容错机制会忽略<script>之前的,视作<script>仍在 body 体内。省略</body></html>闭合标签符合 HTML 标准,服务器可以利用这一标准

    <script> 放在 </head> 中会有什么问题?

    在浏览器渲染页面之前,它需要通过解析HTML标记然后构建DOM树。在这个过程中,如果解析器遇到了一个脚本(script),它就会停下来,并且执行这个脚本,然后才会继续解析HTML。如果遇到了一个引用外部资源的脚本(script),它就必须停下来等待这个脚本资源的下载,而这个行为会导致一个或者多个的网络往返,并且会延迟页面的首次渲染时间。

    还有一点是需要我们注意的,那就是外部引入的脚本(script)会阻塞浏览器的并行下载,HTTP/1.1规范表明,浏览器在每个主机下并行下载的组件不超过两个(也就是说,浏览器一次只能够同时从同一个服务器加载两个脚本);如果你网站的图片是通过多个服务器提供的,那么按道理来说,你的网站可以一次并行下载多张图片。但是,当我们网站在加载脚本的时候;浏览器不会再启动任何其它的下载,即使这些组件来自不同的服务器。

    异步加载 JS 的方式有哪些?

    • 设置<script>属性 async=“async” (一旦脚本可用,则会异步执行)
    • 动态创建 script DOM:document.createElement(‘script’);
    • XmlHttpRequest 脚本注入
    • 异步加载库 LABjs
    • 模块加载器 Sea.js

    JavaScript 中,调用函数有哪几种方式?

    • 方法调用模式 Foo.foo(arg1, arg2);
    • 函数调用模式 foo(arg1, arg2);
    • 构造器调用模式 (new Foo())(arg1, arg2);
    • call/applay 调用模式 Foo.foo.call(that, arg1, arg2);
    • bind 调用模式 Foo.foo.bind(that)(arg1, arg2)();

    简单实现 Function.bind 函数?

      if (!Function.prototype.bind) {
        Function.prototype.bind = function(that) {
          var func = this, args = arguments;
          return function() {
            return func.apply(that, Array.prototype.slice.call(args, 1));
          }
        }
      }
      // 只支持 bind 阶段的默认参数:
      func.bind(that, arg1, arg2)();
    
      // 不支持以下调用阶段传入的参数:
      func.bind(that)(arg1, arg2);
    

    列举一下 JavaScript 数组和对象有哪些原生方法

    • 数组:
      • arr.concat(arr1, arr2, arrn);
      • arr.join(",");
      • arr.sort(func);
      • arr.pop();
      • arr.push(e1, e2, en);
      • arr.shift();
      • unshift(e1, e2, en);
      • arr.reverse();
      • arr.slice(start, end);
      • arr.splice(index, count, e1, e2, en);
      • arr.indexOf(el);
      • arr.includes(el); // ES6
    • 对象:
      • object.hasOwnProperty(prop);
      • object.propertyIsEnumerable(prop);
      • object.valueOf();
      • object.toString();
      • object.toLocaleString();
      • Class.prototype.isPropertyOf(object);

    Array.slice() 与 Array.splice() 的区别?

    • slice – “读取”数组指定的元素,不会对原数组进行修改

      • 语法:arr.slice(start, end)
      • start 指定选取开始位置(含)
      • end 指定选取结束位置(不含)
    • splice

      • “操作”数组指定的元素,会修改原数组,返回被删除的元素
      • 语法:arr.splice(index, count, [insert Elements])
      • index 是操作的起始位置
      • count = 0 插入元素,count > 0 删除元素
      • [insert Elements] 向数组新插入的元素

    JavaScript 对象生命周期的理解?

    • 当创建一个对象时,JavaScript 会自动为该对象分配适当的内存
    • 垃圾回收器定期扫描对象,并计算引用了该对象的其他对象的数量
    • 如果被引用数量为 0,或惟一引用是循环的,那么该对象的内存即可回收

    哪些操作会造成内存泄漏?

    • JavaScript 内存泄露指对象在不需要使用它时仍然存在,导致占用的内存不能使用或回收
    • 未使用 var 声明的全局变量
    • 闭包函数(Closures)
    • 循环引用(两个对象相互引用)
    • 控制台日志(console.log)
    • 移除存在绑定事件的 DOM 元素(IE)

    在 javascript 中,1 与 Number(1)有什么区别 [易混淆]

    var a = Number(1) // 1
    var b = new Number(1)  // Number {[[PrimitiveValue]]: 1}
    typeof (a) // number
    typeof (b) // object
    a == b // true
    
    • var a = 1 是一个常量,而 Number(1)是一个函数
    • new Number(1)返回的是一个对象
    • a==b 为 true 是因为所以在求值过程中,总是会强制转为原始数据类型而非对象,例如下面的代码:
    typeof 123 // "number"
    typeof new Number(123) // "object"
    123 instanceof Number // false
    (new Number(123)) instanceof Number // true
    123 === new Number(123) // false
    

    参考地址:面试题:在 javascript 中,1 与 Number(1)有什么区别

    console.log(!!(new Boolean(false))输出什么 [易混淆]

    true

    布尔的包装对象 Boolean 的对象实例,对象只有在 null 与 undefined 时,才会认定为布尔的 false 值,布尔包装对象本身是个对象,对象->布尔 都是 true,所以 new Boolean(false)其实是布尔的 true,看下面这段代码:

    if(new Boolean(false)){
        alert('true!!');
    }
    

    只有使用了 valueOf 后才是真正的转换布尔值,与上面包装对象与原始资料转换说明的相同:

    !!(new Boolean(false))  //true
    (new Boolean(false)).valueOf() //false
    

    为什么 JS 是单线程,而不是多线程 [常考]

    • 单线程是指 JavaScript 在执行的时候,有且只有一个主线程来处理所有的任务。
    • 目的是为了实现与浏览器交互。
    • 我们设想一下,如果 JavaScript 是多线程的,现在我们在浏览器中同时操作一个 DOM,一个线程要求浏览器在这个 DOM 中添加节点,而另一个线程却要求浏览器删掉这个 DOM 节点,那这个时候浏览器就会很郁闷,他不知道应该以哪个线程为准。所以为了避免此类现象的发生,降低复杂度,JavaScript 选择只用一个主线程来执行代码,以此来保证程序执行的一致性。

    浏览器中的 Event Loop

    浏览器中的Eventloop

    • 主线程运行的时候会生成堆(heap)和栈(stack);
    • js 从上到下解析方法,将其中的同步任务按照执行顺序排列到执行栈中;
    • 当程序调用外部的 API 时,比如 ajax、setTimeout 等,会将此类异步任务挂起,继续执行执行栈中的任务,等异步任务返回结果后,再按照执行顺序排列到事件队列中;
    • 主线程先将执行栈中的同步任务清空,然后检查事件队列中是否有任务,如果有,就将第一个事件对应的回调推到执行栈中执行,若在执行过程中遇到异步任务,则继续将这个异步任务排列到事件队列中。
    • 主线程每次将执行栈清空后,就去事件队列中检查是否有任务,如果有,就每次取出一个推到执行栈中执行,这个过程是循环往复的… …,这个过程被称为“Event Loop 事件循环”

    参考地址:Event Loop 这个循环你晓得么?(附 GIF 详解)-饿了么前端

    展开全文
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    属性 类修饰符 class 类名{类体} 其中,关键字class、类名和类体是必须的,其它项是可选项。类修饰符包括new、public、protected、internal、private、abstract和sealed,这些类修饰符以后介绍。类体用于定义类的...
  • 软件测试面试题汇总

    万次阅读 多人点赞 2018-09-27 12:31:09
    转载自: ... 软件测试面试题汇总 测试技术面试题 ...........................................................................................................
  • 如何去掉Access的只读属性之解药

    千次阅读 2008-03-17 17:02:00
     如果提示handle.asp文件执行有错误, 请将lyb.mdb数据库文件只读属性去掉。”昨天boy给我设计的asp站点,今天打开时,就报错,addnew错误,也是Access的问题。需要将Access的属性设置为只读。  解决的方法: ...
  • linux常用命令

    千次阅读 多人点赞 2016-12-22 11:24:58
    文件>或–exclude-from=<文件> 在<文件>指定目录或文件。 –exclude=< 目录或文件> 略过指定的目录或文件。 –max-depth=< 目录层数> 超过指定层数的目录后,予以忽略。 –help 显示帮助。 –version ...
  • WPF开发教程

    万次阅读 多人点赞 2019-07-02 23:13:20
    ------WPF开发教程 目录 WPF基础入门....... 1. WPF基础之体系结构......4. WPF基础之属性系统... 26 5. WPF基础之路由事件... 33 6. WPF基础之布局系统... 46 7. WPF基础之样式设置和模板化... ...
  • linux命令大全

    千次阅读 2015-12-24 08:44:14
    chfn指令可用来更改执行finger指令时所显示的信息,这些信息都存放在/etc目录里的asswd文件里。若不指定任何参数,则chfn指令会进入问答式界面。 参 数:  -f<真实姓名>或--full-name<真实姓名> 设置真实...
  • 易语言 运行命令之修改文件属性

    千次阅读 2016-07-11 15:59:17
    内容, 假, )易语言操作命令之全显示文件:运行 (“attrib -a -s -h -r ” + 文件全路径, 假, )记录一下各个属性的意思(1)选用r参数,将指定文件设为只读属性,使得该文件只能读取,无法写入数据或删除;...
  • linux及windows文件共享

    万次阅读 2016-07-02 20:44:57
    http://blog.csdn.net/pipisorry/article/details/51812022本文主要说明 linux和windows文件共享, ...(ubuntu16.04, 14.04和win7测试通过)linux和windows文件共享window对linux文件内容进行操作,利用linux samba
  • Windows 无法删除文件夹的只读

    千次阅读 2012-02-03 12:40:00
    在Windows XP中,所有的文件夹都具有“只读”属性,取消只读属性后再次察看会发现依然是只读的,但是这不影响文件的使用。因为在Windows XP中,文件夹属性中的“只读”不再代表原来的字面含义: 对于文件...
  • Linux常用命令全集

    千次阅读 多人点赞 2013-01-22 13:40:35
    文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消 chattr +a file1 只允许以追加方式读写文件 chattr +c file1 允许这个文件能被内核自动压缩/解压 chattr +d file1 在进行文件系统备份时,dump...
  • win10所有文件夹全变成只读

    千次阅读 2020-10-24 10:31:46
    并且无论怎么取消只读,点击确认后都会自动恢复只读: 但是所有文件夹里面的文件属性并没有勾选只读: 网上搜索一波,有的说是文件共享的问题,又有说是权限的问题,这些都排除后问题还是没解决,一度以为电脑中...
  • Linux实用教程(第三版)

    万次阅读 多人点赞 2019-08-27 22:55:59
    13.4 VNC服务器配置 13.5 连接VNC服务器 第14章 NFS服务器配置 14.1 NFS简介 14.2 NFS服务器安装和配置 14.3 管理NFS共享目录 14.4 挂载和卸载NFS共享目录 第15章 DHCP服务器配置 15.1 DHCP简介 15.2 DHCP服务器安装...
  • 环境 服务器 centos 7.x 服务器240 (访问端): 172.16.0.240 服务器235 (被访问端,共享端): 172.16.0.235 安装必须 两台服务器必须要安装 ...配置共享属性 vim /etc/exports /www/wwwroot/www.test.cn 172.16.0.2...
  • 【通用设置】可以设置工程最基本、最通用的属性,如显示工程文件的路径、工程的主目录、标题、选取颜色、地图背景色、记录保存路径的方式、是否启用抗锯齿等。 ①工程文件:在只读文本框中查看工程文件在磁盘...
  • c++ 内存映射文件进程间共享数据

    千次阅读 2016-01-11 13:55:56
    int main(int argc, char *argv[])  {   //RecursiveDelete("C:\\20_128\\");   //SelfRun("runModel");... //进程间内存共享   LPCTSTR lpName= "hello";   LPCTSTR lpContent = "123456";
  • python语法基础汇总

    千次阅读 多人点赞 2019-11-05 10:29:42
    我们一般会将Python代码编写到一个py文件中,然后通过python指令来执行文件中的代码 Python和Sublime的整合 1.在Sublime中执行Python代码,ctrl + b 自动在Sublime内置的控制台中执行 这种执行方式,在某些...
  • shell脚本总结

    千次阅读 多人点赞 2014-07-02 21:52:35
    建立shell脚本的步骤:建立shell脚本,编写任意多行操作系统命令或shell命令,增加文件的执行权限,结束   shell变量 shell允许用户建立变量存储数据,但不支持数据类型。将任何赋给变量的值都解释为一串字符 ...
  • C++ 面试题大全

    千次阅读 多人点赞 2017-05-31 09:42:54
    主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引用(或...
  • 1.0 能够编目索引的文件属性可以是只读、归档、正常和子目录,不能包含隐藏、系统、临时、连接档属性。输出为文本文件。 使用方法: 被索引文件属性:无论选择多少项,只要搜索到的文件某一项属性符合即被选择,...
  • 文件索引生成器1.5

    2016-01-07 22:30:40
    1.0 能够编目索引的文件属性可以是只读、归档、正常和子目录,不能包含隐藏、系统、临时、连接档属性。输出为文本文件。 使用方法: 被索引文件属性:无论选择多少项,只要搜索到的文件某一项属性符合即被选择,...
  • 监控共享文件

    千次阅读 2007-08-19 14:26:00
    监控共享文件 由于经费等多种原因的限制,不少办公室的电脑是多人合用的,本地用户经常需要相互共享文件。出于保密等多方面的原因,不少文件往往要求只能查看不能修改,或者只允许特定用户修改或查看,此时使用一般...
  • MFC-利用内存映射文件来读写文件

    千次阅读 2016-03-31 19:02:17
    文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足...
  • Linux Btrfs 文件系统

    千次阅读 2019-03-22 23:15:04
    Btrfs文件系统的核心特性及其使用操作。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,207
精华内容 9,282
关键字:

共享文件取消只读属性