作者: 027导航

  • win7系统光驱打不开如何解决

    1、首先点击开始打开运行窗口,在运行输入框中输入regedit,回车打开注册表编辑器。如图所示:

    自动草稿

    2、在注册表编辑器的左侧展开定位到HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerCD BurningStagingInfoVolume{最后一组数字是806e6f6e6963}。如图所示:

    自动草稿

    3、然后在窗口的右侧中编辑StagingPath=一个任意有效的路径(默认是C:Users(你的用户名)AppDataLocalMicrosoftWindowsBurnBurn),编辑完之后保存退出注册表编辑器即可。

  • “word无法打开该文件,因为文件格式与文件扩展名不匹配”的解决方法

    OA办公系统中下载的一份word文档,打开时却提示“word无法打开该文件,因为文件格式与文件扩展名不匹配”。但是这个文档在OA系统中是可以正常打开的。

    既然提示是文件扩展名的问题,就查看一下是DOCX,我的office是2013,按常理来说word2013可以打开docx文档的,于是把扩展名改为doc完美解决。

    造成这样的原因是文件在保存好之后,扩展名被从低版本的“doc”直接修改成高版本的“docx”,所以改成doc即可。

  • 解决win10中Tiworkerexe占用CPU过高的方法

    1、使用快捷键:win+r打开系统或者的运行界面,接着在运行程序中使用命令:SERVICES.MSC,按下回车键之后我们就可以进入系统中的服务界面了!

    2、进入之后找到Windows Modules Installer (TrustedInstaller) 以及 Windows Update (wuauserv)。然后分别双击它们,将它们的启动类型设置为禁用模式就可以了!

    使用这些方法就可以在win10中解决Tiworker.exe占用CPU的问题,一般来说都是系统在自动检测,大家使用方法一以及方法二就可以解决。但是也不排除是自动更新或是系统中病毒导致的,因此大家在遇到这个问题的时候最好使用教程中的方法来排查一下!

  • 为什么IE总是提醒是否允许下载文件

    第一步:打开IE浏览器,选择右上角的”工具下拉菜单的“Internet选项”;

    第二步:选择“安全”,点击“自定义级别”;

    第三步:找到“文件下载”,选择“禁用”,之后即可没有提示直接下载。

  • 电脑关机的快捷键方法,关机快人一步

    不知道大家会不会使用快捷键关机?快捷键关机比我们使用鼠标关机要方便不少.我们都知道电脑要关机,就直接鼠标点击开始菜单,然后再点击关机就可以了.对于喜欢使用键盘操纵整个电脑的人而言,少不了快捷键关机的功能.那么下面让我带你通过电脑快捷键实现快速关机的功能吧。

      1、快捷键

    按快捷键Alt+F4可以关闭当前窗口,在桌面按Alt+F4可以进行关机操作, 但是记得先关闭所有应用。

      2、任务管理器

    按Ctrl+Alt+delete,可以弹出关机注销选项。

      3、自动关机

    按快捷键Windows+R键,弹出运行框,输入shutdown -s -t 60,然后点击“确定”,电脑就会在60秒后自动关机。60的单位是秒,可以改成自己想要设置的时间,如120就是2分钟,1800就是30分钟。

      4、定时关机

    按快捷键Windows+R键,弹出运行框,如需要5点关机,输入at 17:00 shutdown -s ,点击确定就可以设置定时关机了,时间可以根据需要自行修改。

      5、命令

    按快捷键Windows+R键,弹出运行框,输入cmd进入到管理员界面,再界面输入shuntdown /p进行关机,如下图所示。

    需要注意的是它不会有任何提示,直接就关机了,所以需要谨慎使用。

      6、滑动关机

    除了上述的关机方式,还有一种酷炫的滑动关机。

    按快捷键Windows+R键,弹出运行框,输入slidetoshutdown命令,点击确定即可。

    如果觉得每次都要输入代码很麻烦,那我们可以在右键点击桌面,新建一个快捷方式,在对象位置输入slidetoshutdown,点击下一步,给这个快捷方式取一个名字即可。

    建完成后,可以给这个快捷方式换一个比较显眼的图标,以免不小心点到了,步骤如下,右键点击这个文件,点击更改图标,选择完成后点击确定即可。

    7、直接长按主机电源键进行关机,这是比较简单粗暴的方法,但是对电脑损害较大,不到万不得已,不建议大家使用哦~

  • 10行代码让你的U盘变成纯净版winPE系统安装启动盘

    现在你还用光盘安装系统吗?相信更多的人喜欢用U盘安装。光盘安装又慢而且光驱发出的震动轰鸣声简直可以把整个电脑桌共振起来,而U盘安装方便快捷,随装随走,简直不能再方便了。当然,使用U盘安装系统的前提是你有一个U盘及U盘中已经安装了winPE系统,虽然要经过这一步骤,但winPE一次装好后基本可以使用到U盘报废。

    那么,如何制作U盘winPE启动盘呢?通常情况下我们都会下载类似软碟通等第三方软件帮忙,而想下载一个干净的引导烧录软件有点难度,稍微不注意可能就把某个全家桶都带来了。如果我仅希望能够做一个纯净的可引导的系统安装盘怎么办?这里就有一个简单的方法,不需要任何第三方工具,只需10行代码就能实现。具体如下:

    一、准备工作

    一台可以正常工作的电脑(需能识别你的U盘,别问我为什么提及这个,周围许多人在安装系统时插入U盘各种不识别,而自己的U盘一直在用肯定没有问题的,这就尴尬了)

    一个容量在4GB及以上的U盘(过程会清除数据,操作前一定要把重要数据移除来)

    系统版本在windows7或者更高

    二、制作方法

    总共在命令提示符中(CMD)输入10行代码,在操作的过程中要严格按照以下的步骤执行,否则可能会导致制作失败甚至勿删除电脑中其他数据的问题,毕竟是对磁盘进行操作。

    1.U盘插入电脑中,以windows7系统为例,待U盘识别后,以管理员身份打开命令提示符(CMD),如何打开,开始-所有程序-附件-命令提示符-右键单击以管理员身份运行就可以了。

    2.输入diskpart 回车

    待出现如下图所示的提示符时【diskpart> 】说明成功进入了diskpart工具,以后的命令都是在该提示符下操作。

     

    3.在diskpart>后面输入:List disk,回车

    这个命令是让我们了解电脑里面安装的硬盘和U盘数量,以及它们所对应的盘符位置。如下图所示小编的电脑中有一块硬盘和一个U盘,U盘对应着盘符1。注意:此处的显示信息为你电脑中挂载的磁盘块数,而不是电脑中的分区数。

    4.输入 select disk 1 回车

    我们是在U盘中安装引导系统,因此需要在U盘中操作,根据上图中的磁盘盘符及后面的容量大小可以判断磁盘盘符1对应的就是U盘,输入select disk 1 回车后会提示 磁盘1 现在是所选磁盘,说明进入到了U盘中,如果担心选择错误可以到资源管理器中查看对应的U盘。
    这一步骤非常关键且重要,也是一个具有高风险的操作,如果选错了磁盘,会直接导致后面的操作将数据清空。因此,选择的盘符数字一定要和前面执行的命令结果一致。

    5.接下来依次执行以下几个命令

    “clean”,清除U盘上的内容;

    “create partition primary”,创建主分区;

    “select partition 1”,选择第一分区;

    “active”,激活该分区;

    “format fs=fat32 quick”,以fat32快速格式化该分区;

    “assign”,分配驱动符;

    “exit”,退出diskpart工具。

    以上命令不需要输入双引号“ " ”

    6.待执行完成后,将下载好的winPE ISO系统镜像文件解压缩至U盘中,重启电脑,设置BIOS第一启动为从U盘启动,这时就可以进入到winPE系统了。

    大功告成

    下载的是纯净版win10PE系统,只有一个命令提示符窗口。

  • 打开Microoft Outlook出现“无法打开默认电子邮件文件夹,出现意外错误”如何解决?

    打开Microsoft Outlook出现“无法打开默认电子邮件文件夹,出现意外错误”如何解决?

    小编的电脑用的是Outlook 2010,在之前Outlook电子邮件账户使用一直没有问题,不知道什么原因最近在使用的时候突然出现无法打开的情况,本以为是权限的问题(小编电脑开启了UAC),但以管理员身份运行仍旧出现错误,提示“无法打开默认电子邮件文件夹。出现意外错误。MAPI无法加载信息服务msncon.dll。请检查是否已正确安装并配置了该服务。”

    该如何解决呢?

    通过弹窗的信息我们可以知道关键的信息点:MAPI无法加载信息服务msncon.dll。请检查是否已正确安装并配置了该服务,说明该信息服务未正常运行,msncon.dll文件未加载,尝试着通过重新注册该dll,仍旧解决不了问题。

    最后小编只好上网查找相关的资料,发现我们可以通过将Outlook电子邮件的原配置信息清除掉来解决该问题。通过直接打开Outlook是无法实现的,我们只能通过控制面板途径进行解决,具体操作如下:

    首先打开控制面板,把右上角的查看方式改为大图标,找到 邮件 选项,如果你的系统为64为则是 邮件(32位)

    进入到了Outlook的邮件配置界面

    在这里有电子邮件账户,数据文件,配置文件,三个选项按钮,依次点击进入你会发现这里保存的就是所配置的电子邮件账户信息。

    接下来就是依次点击电子邮件账户,数据文件,配置文件,将列表中的所有配置信息删除。

    注意在删除时数据文件是无法完全删除的,总要保留一个,这时就先不用管他,返回到邮件设置中,点击显示配置文件... 将所有的配置文件删除就可以了。

    应用确定退出,最后重新打开Outlook,你会发现恢复正常了,不过之前的Outlook配置的电子邮件账户信息全部没有了,相当于Outlook进行了初始化,所以如果你的电子邮件很重要慎重使用该方法解决问题。

    注意:以上操作在win7及以下系统中进行,在win10中由于许多的功能发生了变化,控制面板也不容易找得到了,win10中关于电子邮件账户的配置小编将在后面给大家简单地介绍。

  • php解决redi的缓存雪崩,缓存穿透,缓存击穿的问题

    一:前言
    设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。

    二:缓存穿透
    缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。请求的数据大量的没有获取到缓存,导致走数据库,有可能搞垮数据库,使整个服务瘫痪。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。
    比如文章表,一般我们的主键ID都是无符号的自增类型,有些人想要搞垮你的数据库,每次请求都用负数ID,而ID为负数的记录在数据库根本就没有。

    解决方案
    有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。
    1、对于像ID为负数的非法请求直接过滤掉,采用布隆过滤器(Bloom Filter)。
    布隆过滤器:

    <?php
    class Bloom {
     
        // 哈希函数的数量
        protected $hashNum = 3;
     
        // 位数组的大小
        protected $bitArrayCount = 1024*10;
     
        // 位数组
        protected $bitArray = [];
     
        public function __construct()
        {
            // 构建默认的位数组,全部置为 false
            $this->bitArray = array_pad([], $this->bitArrayCount, false);
        }
     
        /**
         * 获取 hash 函数;也就是在位数组中,需要改为 true 的索引
         * @param string $key 元素
         * @return array
         */
        protected function getIndexes($key)
        {
            $indexes = [];
            for ($i = 0; $i < $this->hashNum; $i ++) {
                $index = sprintf(%u, crc32($key . $i));  // 使用 crc32 散列
                $index = $index % $this->bitArrayCount;       // 获取 在位数组中的 位置
                $indexes[] = $index;
            }
     
            return $indexes;
        }
     
        /**
         * 向过滤器中添加元素
         * @param string $key 要添加的元素
         */
        public function addItem($key)
        {
            $indexes = $this->getIndexes($key);
     
            // 将 hash 结果对应的位修改为 true
            foreach ($indexes as $index) {
                $this->bitArray[$index] = true;
            }
        }
     
        /**
         * 过滤器中是否存在这个元素; true 表示很可能存在,false 表示一定不存在
         * @param string $key 元素
         * @return array
         */
        public function mightExist($key)
        {
            $indexes = $this->getIndexes($key);
     
            foreach ($indexes as $index) {
                if (! $this->bitArray[$index]) {
                    return false;
                }
            }
            return true;
        }
    }
     
    class Test
    {
        public function run()
        {
            $bloom = new Bloom();
     
            // 向过滤器中添加 1000 个元素
            for ($i = 0; $i < 100; $i ++) {
                $bloom->addItem($i);
            }
     
            // 测试 过滤器判断结果
            for ($i = 90; $i < 110; $i ++) {
                
                $mightExist = $bloom->mightExist($i);
     
                if ($mightExist) {
                    echo "might exist ", $i, PHP_EOL;
                } else {
                    echo "not exist ", $i, PHP_EOL;
                }
            }
        }
    }
     
    (new Test())->run();
    PHP

    2、针对在数据库中找不到记录的,我们仍然将该空数据存入缓存中,当然一般会设置一个较短的过期时间。

    //设置文章ID为-10000的缓存为空
    $id = -10000;
    $redis->set(article_content_ . $id, , 60);
     
    var_dump($redis->get(article_content_ . $id));
    PHP

    三:缓存雪崩
    缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。
    使缓存集中失效的原因:

    1.redis服务器挂掉了。
    2.对缓存数据设置了相同的过期时间,导致某时间段内缓存集中失效。
    解决方案
    缓存失效时的雪崩效应对底层系统的冲击非常可怕。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线 程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。这里分享一个简单方案就时讲缓存失效时间分散开,比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。
    如何解决缓存集中失效:

    1. 针对原因1,可以实现redis的高可用,Redis Cluster 或者 Redis Sentinel(哨兵) 等方案。
    2. 针对原因2,设置缓存过期时间时加上一个随机值,避免缓存在同一时间过期。
    <?php
     
    $redis = new Redis();
    $redis->connect(127.0.0.1, 6379, 60);
    $redis->auth();
     
    //设置过期时间加上一个随机值
    $redis->set(article_content_1, 文章内容, 60 + mt_rand(1, 60));
    $redis->set(article_content_2, 文章内容, 60 + mt_rand(1, 60));
    PHP
    1. 使用双缓存策略,设置两个缓存,原始缓存和备用缓存,原始缓存失效时,访问备用缓存,备用缓存失效时间设置长点。
    //原始缓存
    $redis->set(article_content_2, 文章内容, 60);
    //设置备用缓存,失效时间设置长点
    $redis->set(article_content_backup_2, 文章内容, 1800);
    PHP

    四:缓存击穿
    对于一些设置了过期时间的key,如果这些key可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑一个问题:缓存被“击穿”的问题,这个和缓存雪崩的区别在于这里针对某一key缓存,前者则是很多key。
    缓存击穿与缓存雪崩的区别是这里针对的是某一热门key缓存,而雪崩针对的是大量缓存的集中失效。

    缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

    解决方案
    1、让该热门key的缓存永不过期。
    这里的“永远不过期”包含两层意思:

    (1) 从redis上看,确实没有设置过期时间,这就保证了,不会出现热点key过期问题,也就是“物理”不过期。
    (2) 从功能上看,如果不过期,那不就成静态的了吗?所以我们把过期时间存在key对应的value里,如果发现要过期了,通过一个后台的异步线程进行缓存的构建,也就是“逻辑”过期

    从实战看,这种方法对于性能非常友好,唯一不足的就是构建缓存时候,其余线程(非构建缓存的线程)可能访问的是老数据,但是对于一般的互联网功能来说这个还是可以忍受。
    2、使用互斥锁,通过redis的setnx实现互斥锁。
    业界比较常用的做法,是使用mutex。简单地来说,就是在缓存失效的时候(判断拿出来的值为空),不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX或者Memcache的ADD)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法。

    SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果。

    <?php
     
    function getRedis()
    {
        $redis = new Redis();
        $redis->connect(127.0.0.1, 6379, 60);
        return $redis;
    }
     
    //加锁
    function lock($key, $random)
    {
        $redis = getRedis();
        //设置锁的超时时间,避免释放锁失败,del()操作失败,产生死锁。
        $ret = $redis->set($key, $random, [nx, ex => 3 * 60]);
        return $ret;
    }
     
    //解锁
    function unLock($key, $random)
    {
        $redis = getRedis();
        //这里的随机数作用是,防止更新缓存操作时间过长,超过了锁的有效时间,导致其他请求拿到了锁。
        //但上一个请求更新缓存完毕后,如果不加判断直接删除锁,就会误删其他请求创建的锁。
        if ($redis->get($key) == $random) {
            $redis->del($key);
        }
    }
     
    //从缓存中获取文章数据
    function getArticleInCache($id)
    {
        $redis = getRedis();
        $key = article_content_ . $id;
        $ret = $redis->get($key);
        if ($ret === false) {
            //生成锁的key
            $lockKey = $key . _lock;
            //生成随机数,用于设置锁的值,后面释放锁时会用到
            $random = mt_rand();
            //拿到互斥锁
            if (lock($lockKey, $random)) {
                //这里是伪代码,表示从数据库中获取文章数据
                $value = $db->getArticle($id);
                //更新缓存,过期时间可以根据情况自已调整
                $redis->set($key, $value, 2 * 60);
                //释放锁
                unLock($lockKey, $random);
            } else {
                //等待200毫秒,然后重新获取缓存值,让其他获取到锁的进程取得数据并设置缓存
                usleep(200);
                getArticleInCache($id);
            }
        } else {
            return $ret;
        }
    }
    PHP

    3、"提前"使用互斥锁(mutex key):
    在value内部设置1个超时值(timeout1), timeout1比实际的memcache timeout(timeout2)小。当从cache读取到timeout1发现它已经过期时候,马上延长timeout1并重新设置到cache。然后再从数据库加载数据并设置到cache中。

    4、资源保护:
    采用netflix的hystrix,可以做资源的隔离保护主线程池,如果把这个应用到缓存的构建也未尝不可。

    四种解决方案:没有最佳只有最合适

    八:总结

    针对业务系统,永远都是具体情况具体分析,没有最好,只有最合适。最后,对于缓存系统常见的缓存满了和数据丢失问题,需要根据具体业务分析,通常我们采用LRU策略处理溢出,Redis的RDB和AOF持久化策略来保证一定情况下的数据安全。

  • LinuxVPS中Samba服务的安装和配置

    samba基于SMB协议(Server Messages Block,信息服务块),实现在局域网上共享文件和打印机。


    我们在Linux服务器开发过程中,往往习惯在windows平台完成编码(有各种方便的IDE),然后把代码发布到Linux上进行测试,这个时候就可以使用samba实时管理Linux服务器上的文件。

    Linux上安装samba

    安装

    可以使用yum,apt-get等软件管理工具直接安装:

    yum install samba samba-client samba-swat
    Bash

    启动

    /etc/init.d/smb start
    Bash

    设置密码

    # 使用下面的方法配置用户名和密码,username替换为用户名
    smbpasswd -a username
    输入password
    Bash

    samba服务器配置

    配置文件

    samba配置文件为:/etc/samba/smb.conf,其中可以对samba进行配置,配置之后需要重启samba。

    配置文件一篇分为三部分[global][homes][printers],如下:

    [global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        log file = /var/log/samba/log.%m
        max log size = 50
        security = user
        passdb backend = tdbsam
        load printers = yes
        cups options = raw
    [homes]
        comment = Home Directories
        browseable = no
        writable = yes
    ;   valid users = %S
    ;   valid users = MYDOMAIN%S
    [printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no
        guest ok = no
        writable = no
        printable = yes
    Conf

    [global]定义全局配置,各配置含义如下:

    • workgroup:定义工作组
    • security:这里指定samba的安全等级。关于安全等级有四种:
      • share:用户不需要账户及密码即可登录samba服务器
      • user:由提供服务的samba服务器负责检查账户及密码(默认)
      • server:检查账户及密码的工作由另一台windows或samba服务器负责
      • domain:指定windows域控制服务器来验证用户的账户及密码。
    • passdb backend:用户后台模式,samba有三种用户后台:smbpasswd, tdbsam和ldapsam
    • load printers 和 cups options 两个参数用来设置打印机相关
    • hosts allow = 127. 192.168.12. 192.168.13. 用来设置允许的主机,如果在前面加”;”则表示允许所有主机
    • log file = /var/log/samba/%m.log:定义samba的日志,这里的%m是上面的netbios name
    • max log size = 50:指定日志的最大容量,单位是K

    [homes]部分为共享用户的home目录配置,对于单纯的文件共享环境来说可以注释掉

    [printers]部分内容设置打印机共享。

    管理samba用户

    在samba的配置文件中,[global]passdb backend部分指定使用什么方式管理用户。下面介绍其中的两种:

    smbpasswd模式下用smbpasswd命令管理samba用户

    • smbpasswd -a username:创建用户并设置密码

    tdbsam模式下使用pdbedit命令来管理samba用户,在/etc/samba中维护用户数据库:passdb.tdb。要创建的Samba用户必须先是系统用户,也可使用pdbedit创建Samba账户。

    • pdbedit –a username:新建Samba账户
    • pdbedit –x username:删除Samba账户
    • pdbedit –L:列出Samba用户列表
    • pdbedit –Lv:列出Samba用户列表详细信息

    samba实际应用

    共享一个目录,任何人都可以访问

    修改配置文件并重启服务:

    vim /etc/samba/smb.conf
    
    # 修改[global]部分,如下
    [global]
        workgroup = WORKGROUP
        security = share
    # 添加[share]部分
    [share]
        comment = share all
        path = /tmp/samba
        browseable = yes
        public = yes
        writable = no
    
    # 创建共享目录
    mkdir /tmp/samba
    chmod 777 /tmp/samba
    
    # 重启或启动samba服务
    /etc/init.d/smb start
    Bash

    共享一个目录,使用用户名和密码登录后才可以访问

    修改配置文件并重启服务:

    vim /etc/samba/smb.conf
    
    # 修改[global]部分,如下
    [global]
        workgroup = WORKGROUP
        server string = Samba Server Version %v
        security = user
        passdb backend = tdbsam
        load printers = yes
        cups options = raw
    # 添加下面myshare的共享规则
    [myshare]
        comment = share for users
        path = /samba/myshare
        browseable = yes
        writable = yes
        public = no
    
    # 创建共享目录
    mkdir /samba/myshare
    chmod 777 /samba/myshare
    
    # 重启或启动samba服务
    /etc/init.d/smb start
    
    # 然后添加用户,因为 passdb backend = tdbsam,所以使用pdbedit来增加用户
    useradd  user1 user2
    pdbedit -a user1  # 添加user1账号,并定义其密码
    pdbedit -a user2
    pdbedit -L # 列出所有的账号
    Bash

    访问samba服务器

    Linux平台

    Samba服务在linux下同样可以访问。前提是你的linux安装了samba-client软件包。安装完后就可以使用smbclient命令了。具体语法为:

    smbclient -L //IP/共享名  -U 用户名
    Samba无密码访问时,password: 直接回车即可。
    
    # 如下面的例子
    [root@localhost]# smbclient //192.168.127.88/myshare/ -U user1
    Password:
    Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
    smb: >
    Bash

    另外可以使用mount在本地挂载,方法如下:

    mount -t cifs //192.168.127.88/myshare /mnt -o username=user1,password=123456
    Bash

    Windows平台

    在windows平台,win+R弹出窗口,输入双反斜杆IP可以访问:192.168.127.88,然后输入用户名和密码即可。
    登陆成功后可以把地址保留下来,选择samba目录,右键,选择“映射网络驱动器”,点击“完成”即可。

    samba连接很慢

    有时候连接samba文件夹特别慢,这可能是hosts文件中的主机名和network中的主机名不一致,修改过来即可。

    # network网络信息,HOSTNAME为主机名
    cat /etc/sysconfig/network
    NETWORKING=yes 
    NETWORKING_IPV6=no 
    HOSTNAME=server
    
    # hosts配置
    cat /etc/hosts
    
    # 编辑host
    vim /etc/hosts
    127.0.0.1   server 
    Bash

    若以上方法仍然无法解决问题,可以尝试优化内存来改善SMB的连接速度。

    echo vm.swappiness=10 | tee -a /etc/sysctl.conf
    echo 1 > /proc/sys/vm/drop_caches

    然后重启

    reboot
  • MySQL删除数据库

    1.使用命令行删除一个数据库

    1.1 首先登陆进入 MySQL 操作界面,命令如下

     命令 : mysql -utest -p;

    1.2 登陆成功之后可以使用如下命令查看当前已有数据库:

     命令 : SHOW DATABASES; 

    执行结果如下图:

    如图所示当前已包含 MySQL系统数据库和之前新建的数据库 item_name。

    1.3 接下来可以删除指定的数据库

     命令 : DROP DATABASE item_name;

    执行命令如图所示:

    1.4 查看指定的数据库是否删除成功

     命令 : SHOW DATABASES;

    如下图所示,表示数据库已删除成功:

    2.使用 Navicat 客户端工具删除数据库

    2.1 打开 Navicat 工具,连接好一个数据库之后,选中需要删除的数据库如下图所示操作:

    2.2 也可是在 Navicat 界面使用 MySQL 命令删除数据库:

    如上图所示,新建查询之后即可输入 MySQL 命令:

     命令 : DROP DATABASE item_name;

    如图所示表示删除成功:

    3.小结

    本小节主要介绍如何删除数据库,需要注意的是在删除数据库之前一定要谨慎,尤其是 MySQL 没有开启binlog日志的时候,误删除是几乎无法恢复的,所以建议在删除数据库之前,做好备份,否则随意删除数据库的习惯可能给给自己造成不必要的麻烦。