微服务 SpringBoot 整合 Redis GEO 实现附近商户功能

⛄引言

本文参考黑马 点评项目

在点评项目中 如何 实现 附近商家的查询呢,展示出距离自己5公里内的商户,这样的功能如何实现?

答案是可以采用Redis 来实现,当然可能有很多实现方式,本文主要介绍如何使用Redis实现 附近商户的搜索功能

一、Redis GEO 数据结构用法

⛅GEO基本语法、指令

GEO 就是 GeoLocation 的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据

常见的命令

  • GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)
  • GEODIST:计算指定的两个点之间的距离并返回
  • GEOHASH:将指定member的坐标转为hash字符串形式并返回
  • GEOPOS:返回指定member的坐标
  • GEORADIUS:指定圆心、半径,找到该圆内包含的所有member,并按照与圆心之间的距离排序后返回。6.以后已废弃
  • GEOSEARCH:在指定范围内搜索member,并按照与指定点之间的距离排序后返回。范围可以是圆形或矩形。6.2.新功能
  • GEOSEARCHSTORE:与GEOSEARCH功能一致,不过可以把结果存储到一个指定的key。 6.2.新功能

⚡使用GEO存储经纬度、查询距离

本篇博文 Redis版本为 6.2版本

进入redis 查询 geo相关指令

使用 GEO 完成以下功能 实现两点之间的距离查询,以及指定范围内的地点

需求如下

  • 使用 GEO 添加 北京 (天安门 116.397469 39.908821 、故宫 116.397027 39.918056、北海公园 116.389977 39.933144) 经纬度
  • 查询 天安门 与 故宫之间的距离
  • 在以上添加的地点中查询 天安门广场 (116.397827 39.90374) 附近2公里的地点

GEOADD 添加

GEOPOS 查看指定地点 经纬度信息

GEOHASH 查看指定地址 经纬度HASH值

拓展: GEOPOS 和 GEOHASH 的区别在于 GEOHASH 节约了 经纬度存储的 内存、减少不必要的内存消耗,从而提升性能

GEODIST 查看 天安门 与故宫之间的距离

GEOSEARCH 查询 天安门广场 附近 2公里的地点

二、SpringBoot 整合Redis 导入 店铺数据 到GEO

编写SpringBoot 单元测试进行导入Redis数据

@Resource
private IShopService shopService;

@Resource
private StringRedisTemplate stringRedisTemplate;

@Test
void loadShopData() {
    //1. 查询店铺信息
    List<Shop> shopList = shopService.list();
    //2. 把店铺分组,按照typeId分组、typeId一致的放在一个集合
    Map<Long, List<Shop>> map = shopList.stream().collect(Collectors.groupingBy(Shop::getTypeId));
    //3. 分批完成写入redis
    for (Map.Entry<Long, List<Shop>> entry : map.entrySet()) {
        //3.1 获取类型id
        Long typeId = entry.getKey();
        String key = RedisConstants.SHOP_GEO_KEY + typeId;
        //3.2 获取同类型的店铺的集合
        List<Shop> value = entry.getValue();
        List<RedisGeoCommands.GeoLocation<String>> locations = new ArrayList<>(value.size());
        //3.3 写入redis GEOADD key 经度 维度 member
        for (Shop shop : value) {
            locations.add(new RedisGeoCommands.GeoLocation<>(
                shop.getId().toString(),
                new Point(shop.getX(), shop.getY())));
        }
        stringRedisTemplate.opsForGeo().add(key, locations);
    }

}
复制代码

运行完毕,查看Redis即可

三、SpringBoot 整合 Redis 实现 附近商户功能

☁️需求介绍

基于黑马点评项目实现 附近商户查询功能

  • 采用GEO 数据结构实现附近商户查询
  • 完成分页功能

思路分析:

通过传输过来的 x、y 经纬度,然后我们根据该经纬度去查询redis中附近的商户,查出后即可返回,进行封装,查出来的结果进行循环添加至 Shop 地点距离,即可完成。

⚡核心源码

ShopController

@GetMapping("/of/type")
public Result queryShopByType(
    @RequestParam("typeId") Integer typeId,
    @RequestParam(value = "current", defaultValue = "1") Integer current,
    @RequestParam(value = "x", required = false) Double x,
    @RequestParam(value = "y", required = false) Double y) {
    return shopService.queryShopByType(typeId, current, x, y);
}
复制代码

ShopService

@Override
public Result queryShopByType(Integer typeId, Integer current, Double x, Double y) {
    //1. 判断是否需要坐标查询
    if (x == null || y == null) {
        // 不需要坐标查询,按数据库查询
        Page<Shop> page = query()
            .eq("type_id", typeId)
            .page(new Page<>(current, SystemConstants.DEFAULT_PAGE_SIZE));
        // 返回数据
        return Result.ok(page.getRecords());
    }
    //2. 计算分页参数
    int form = (current - 1) * SystemConstants.DEFAULT_PAGE_SIZE;
    int end = current * SystemConstants.DEFAULT_PAGE_SIZE;
    //3. 查询redis,按照距离排序、分页 结果:shopId、distance
    String key = RedisConstants.SHOP_GEO_KEY + typeId;
    GeoResults<RedisGeoCommands.GeoLocation<String>> results = stringRedisTemplate.opsForGeo().search(
        key,
        GeoReference.fromCoordinate(x, y),
        new Distance(5000),
        RedisGeoCommands.GeoSearchCommandArgs.newGeoSearchArgs().includeDistance().limit(end));
    //4. 解析id
    if (results == null) {
        return Result.ok(Collections.emptyList());
    }
    List<GeoResult<RedisGeoCommands.GeoLocation<String>>> content = results.getContent();
    //4.1 截取from => end
    List<Long> ids = new ArrayList<>(content.size());
    Map<String, Distance> distanceMap = new HashMap<>(content.size());
    if (content.size() <= form) {
        return Result.ok(Collections.emptyList());
    }
    content.stream().skip(form).forEach(result -> {
        //4.2 获取店铺id
        String shopIdStr = result.getContent().getName();
        ids.add(Long.valueOf(shopIdStr));
        //4.2 获取距离
        Distance distance = result.getDistance();
        distanceMap.put(shopIdStr, distance);
    });
    //5. 根据id查询shop
    String idStr = StrUtil.join(",", ids);
    List<Shop> shops = query().in("id", ids).last("ORDER BY FIELD(id," + idStr + ")").list();
    // 循环将 商品距离放入对象距离属性中
    shops.forEach(shop -> {
        shop.setDistance(distanceMap.get(shop.getId().toString()).getValue());
    });
    //6. 返回结果
    return Result.ok(shops);
}
复制代码

进行测试

✅附近商户效果图

⛵小结

以上就是【Bug 终结者】对 微服务 SpringBoot 整合 Redis 实现附近商户功能 的简单介绍,附近商户搜索,是很常见的功能,掌握GEO即可完成该类似的需求,并高质量完成开发,加油! 认真练习,提升技术。 技术改变世界!!!

本文转载于网络 如有侵权请联系删除

相关文章

  • 清华姚班修改本科培养模式:姚班、智班、量信班全合并

    机器之心报道编辑:杜伟、泽南拓宽优秀学生的选择方向。今天上午,清华大学交叉信息研究院宣布了优化本科培养模式的新计划:为进一步拓宽学生基础学养,并优化专业方向选择,特调整本科生培养模式,具体要点如下: 1、三个学堂班:姚班、智班、量信班(涵盖2019级-2022级)合并为一,今后统称计算机科学实验班(简称姚班); 2、姚班下设三个专业培养方向:1)计算机科学与技术,2)人工智能,3)量子信息; 3、本科生在大一结束时根据兴趣志向自由选择专业方向; 4、达到对应方向培养方案要求的本科生授予工学学位:计算机科学与技术(计算机科学实验班)。 以上调整已获学校相关主管部门批准,将自2022年8月起实施,特此公告。人工智能、量子计算这些如今科技领域最热门的方向,同样也是姚班人才培养的重点,但在分设AI、量子计算方向仅几年后,清华又对其进行了合并。 最近的改革代表了计算机科学发展的方向。姚班、智班和量信班的发展历程姚班姚班的名称来自于2000年图灵奖得主,现任北京清华大学交叉信息研究院院长姚期智,可追溯到清华大学「软件科学实验室」,在2009年5月更名为「计算机科学实验班」(即原姚班),并在2009

  • Mac必备软件推荐,让你效率起飞

    系统工具效率Alfred 置顶,比spotlight高效,支持各种插件,没有上限Appcleaner mac卸载软件就靠它,一键拖入,彻底清理干净。想想CleanMyMac、Dr.Cleaner还收费,真是笑死人istatemenus 监控你的电脑,cpu、内存、网络、硬盘,你能想到的都有了handshaker 老罗确实改变了世界,锤子出品必属精品,mac和手机连接的神器,有线和无线均可,Android和iPhone都可以用,itunes是个啥???Duet Mac下macos10.15有随航(Sidecar),谁用这个,Windows可以用这个把ipad变为第二个屏幕,超好用,支持无线连接ParallelDesktop Mac下的虚拟机,比vituralboxVMware好用太多坚果云 最好用的网盘,已经入了4年个人专业版会员,用来多终端同步工作资料,不要太方便休息一下 20min提醒你休息一下眼睛,坐办公室挺需要的WGestures2macos自带触发角,用起来爽飞了,这是一款加强版的应用,装饰键+手势,自定义Anydesk 即开即用的轻量化远程协助工具,teamviewer还要注

  • Linux 下大文件切割与合并

    往往是因为网络传输的限制,导致很多时候,我们需要在Linux系统下进行大文件的切割。这样将一个大文件切割成为多个小文件,进行传输,传输完毕之后进行合并即可。文件切割-split在Linux系统下使用split命令进行大文件切割很方便命令语法-a:#指定输出文件名的后缀长度(默认为2个:aa,ab...) -d:#指定输出文件名的后缀用数字代替 -l:#行数分割模式(指定每多少行切成一个小文件;默认行数是1000行) -b:#二进制分割模式(支持单位:k/m) -C:#文件大小分割模式(切割时尽量维持每行的完整性) split[-a][-d][-l<行数>][-b<字节>][-C<字节>][要切割的文件][输出文件名]复制使用实例#行切割文件 $split-l300000users.sql/data/users_ #使用数字后缀 $split-d-l300000users.sql/data/users_ #按字节大小分割 $split-d-b100musers.sql/data/users_ ```bash **帮助信息** ```bash

  • PHP中调试函数debug_backtrace的使用示例代码

    前言 如果我们想知道某个方法被谁调用了?debug_backtrace可以解决。debug_backtrace()可以打印出一个页面的调用过程,从哪儿来到哪儿去一目了然。 有时候我们想知道这个函数或方法的调用堆栈,也就是它是如何一级一级是被调用到的,可以用PHP的debug_backtrace函数打印,就像这样: 示例代码publicfunctionupdate(Request$request,$id) { dd(debug_backtrace()); $getGameID=function($request){ if(!$request->game_id){ return1000+intval($request->id); } return$request->game_id; };复制$previews=$this->getGamePreviews($request->game_//【本文中一些MYSQL版本可能是以前的,MYSQL建议使用5.7以上的版本】/【尽量使用一键安装脚本,要么自己做,要么网上下载或使用我博客的,把时间用在更多的地方,少做重复劳

  • 反射执行Groovy类方法NoSuchMethodException解答

    最近我在尝试实现分布式性能测试功能的拓展,其中的一个思路就是通过反射执行jar包中写好的测试方法达到自动执行性能测试用例的目的。但是在进行技术验证的时候,遇到了一个坑,就是在使用com.funtester.frame.execute.ExecuteSource#executeMethod(java.lang.String,java.lang.Object...)方法运行用例的时候,总是会报错:INFO->当前用户:oker,工作目录:/Users/oker/IdeaProjects/funtester/,系统编码格式:UTF-8,系统MacOSX版本:10.16 WARN->方法属性处理错误! java.lang.NoSuchMethodException:com.funtest.javatest.FunTester.test() atjava.lang.Class.getMethod(Class.java:1786)~[?:1.8.0_281] atcom.funtester.frame.execute.ExecuteSource.executeMethod(Execut

  • Linux - 常用命令

    概述个人常用命令,基本就是复制粘贴具体内容一、端口netstat-lnpt#查看监听端口复制firewall-cmd--zone=public--add-port=5672/tcp--permanent#开放5672端口复制firewall-cmd--zone=public--remove-port=5672/tcp--permanent#关闭5672复制firewall-cmd--reload#配置立即生效复制firewall-cmd--zone=public--list-ports#查看防火墙所有开放的端口复制二、防火墙systemctlstopfirewalld.service#关闭防火墙复制systemctlstatusfirewalld#查看防火墙状态复制三、SeLinuxgetenforce#查看复制setenforce0#临时关闭复制修改配置文件/etc/selinux/config,将其中SELINUX设置为disabled#永久关闭复制四、Javanohupjava-jar[].jar>/dev/null2>&1&复制五、tar.gztar

  • 生态学中的中性理论

    Journal:TrendsinEcologyandEvolutionPublished:April2012回顾了中性理论,并揭示了三个主要的潜在问题。其中一个涉及中性理论和生态漂变的重要性,其他涉及模式和过程之间的联系,建模中简单性和复杂性之间的权衡,以及随机性和漂变在生态学中的作用。解释了为什么中性理论不能同时用作零假设和近似值。即使现实世界并不是中性的,但是中性理论在这两个角色中的一个是有价值的。三个关键问题没有人相信世界真的是中性的,中性理论并不是说物种(或个人)在生态上是平等的。中性理论是关于通过对复杂系统做出一些简化的假设,并看看最终的模型可以解释什么来提高理解,这是一个被许多科学分支广泛接受的过程,不要求假设是严格准确的。对于什么是“中性理论”,有许多不同的解释(框1),这导致支持者和反对者都在“辩论”,但并不清楚他们在辩论什么。正式的辩论需要一项明确的议案,而到目前为止的讨论中都缺乏这一点。我们提出如下建议:“中性理论,一种不同中性群落组合模式的集合,在生态学研究中是有用的”(框1)。中性理论的有用性不可避免地取决于使用的语境。事实上,即使是批评家也经常“利用中性理论”

  • 为什么Rust的println!不会发生所有权转移?

    macroprintln!可能是学习Rust最常用的一行代码了。我们连续多次调用它,下面的代码编译通过,再正常不过了。letx=String::from("Hello!"); println!("{}",x); println!("{}",x);复制Hello! Hello! 可是,我们明明传的是x,并非&x,为什么没有发生所有权转移呢?查查标准库的源码,如下:#[macro_export] #[stable(feature="rust1",since="1.0.0")] #[allow_internal_unstable(print_internals,format_args_nl)] macro_rules!println{ ()=>($crate::print!("\n")); ($($arg:tt)*)=>({ $crate::io::_print($crate::format_args_nl!($($arg)*)); }) } ​ #[u

  • mybatis面试点|#和$的区别

    小刀博客:https://www.lixiang.red 小刀公众号:程序员学习大本营问题详情在我们拼接mysql的语句时,通常会有大佬提醒我们,要注意#和$符号的使用: id=#{id},id=${id},那这两种写法有什么区别呢?问题解答用#号的号,可以用使用PreparedStatement+占位符的方式来拼sql语句,可以防止sql注入,更安全问题解析对#号的处理源码中,对#{}的特殊处理可以在这个位置看到然后我们断点打开解析器里面,可以看到在解析完之后,就从#{id}变成了?在换成?的同时,把id包装成parameterMapping并添加到parameterMappings中,后面还要获取出来,然后拿值,再把值放到prepareStatement中一步步debug下来,我们经过了Executor(执行器),然后到TypeHandler,找到对应的参数处理器,然后执行ps.setInt('位置','值').完成了整个过程对$号的处理这个就很简单了 在调用SqlSource.getBoundSql()去获取要执行sql的时候,就会被tok

  • 第二阶段-Java面向对象:【第四章 抽象类】

    A:抽象类和抽象方法必须用关键字abstract修饰B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类C:抽象类不能实例化→不加{}D:抽象类的子类a:是一个抽象类。b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。(多态)我们继续用猫狗案例来解释一下为什么要重写抽象类中的所有抽象方法。“猫”和“狗”都是“动物”这个类的实体,比如动物都有eat()这个方法,但是狗是吃肉的,猫是吃鱼的。所以每个动物关于具体吃的方式是需要在子类中重写的,不然的话,狗和猫不就一样了吗?//Animal类 publicabstractclassAnimal{ publicvoidsleep(){ System.out.println("我趴着睡"); } publicabstractvoideat(); }复制//Dog类 publicclassDogextendsAnimal{ publicDog(){ super(); } @Override publicvoideat(){ System.out.println("我实现了父类方法,狗吃肉"

  • swoole 协程知识点小结

    本文要点:swoole协程现状一览:学不动?其实是更简单了使用swoole协程很简单:开个协程,协程里写非阻塞代码展望swoole协程未来swoole协程现状一览swoole一直保持着颇为快速的迭代速度,快到什么程度呢--「快别更新了,学不动了」半年前还是v4.0支持完整的协程编程(CSP,go+chan),现在已经迭代到v4.3.3v4.3版本做了一次大更新,项目拆分成了swoole和swoole_async官方wiki修改了很多,协程的部分的文档增加了不少,而且提前到更加显眼的地方来一句灵魂叩问:改动这么大,那是不是真的「学不动了」?并不是!swoole是一直在为世界上最好的语言添砖加瓦:更为完整的协程编程支持,直观的效果是更加无缝无感的编程切换体验(后面细说),意味着需要了解和注意的语法细节更少,编程更轻松v4.3版本做的一次大更新,实际是优化swoole项目的架构,主项目focus协程模式的网络编程,更多网络编程相关的功能,使用扩展(ext)的方式提供(具体可以参考swoole的github主页:https://github.com/swoole,扫一眼下面有的项目,就能有所启

  • 【每天一道编程系列-2018.3.14】—— Trailing Zeros

    【题目描述】 O(logN)timeWriteanalgorithmwhichcomputesthenumberoftrailingzerosinnfactorial.Haveyoumetthisquestioninarealinterview?YesExample11!=39916800,sotheoutshouldbe2【题目大意】设计一个算法,计算出n阶乘中尾部零的个数【本题答案】packageblog; /** *@authoryesr *@create2018-03-14下午10:44 *@desc **/ publicclassTest0314{ /* *paramn:Asdesciptionreturn:Aninteger,denotethenumberoftrailing *zerosinn! */ publiclongtrailingZeros(longn){ //writeyourcodehere longcount=0; longtemp=n/5; while(temp!=0){ count+=temp; temp/=5; } returncount; } }复

  • 京东送货无人机曝光,正在农村进行测试

    用无人机送货早已不是新鲜的想法,但是目前还没有一家电商正式运营这个项目。在国内,顺丰、淘宝等企业正在尝试无人机送货。最近,京东无人机送货的实验项目浮出了水面,如火如荼。据1月29日消息,为提升配送效率的同时也为村民带来更有品质的购物体验,京东研发体系物流实验室日前在宿迁展开无人机送货实验,对无人机送货流程、飞行调动系统、设备需求、人员分工等方面进行测试。与此前一些电商和物流企业尝试的无人机送货模式不同,这次京东所测试的无人机供货不针对最终消费者的单个订单,主要在于完成从配送站到乡村推广员的农村电商核心配送环节。为什么这一环节要推行无人机送货?主要是因为地形原因。由于需要翻山、过河,配送员进行一次配送有时需要半天以上时间,让从配送站到村庄的时间成本变高。从配送站到村庄直线距离往往小于10公里,而且中小件货物的平均重量和体积都不高,非常适合采用无人机批量完成从配送站到乡村推广员的商品配送。不得不提,这种方案的可行性也很高。商品在配送站完成站点验货和包裹装机,通过无人机迅速送到推广员手中,再由他们分发给村庄中的用户。由于从配送站到推广员的飞行线路相对固定,可以通过事先的缜密勘察规划出最安全的

  • Filter如何工作

    在web.xml文件中通过<filter>和<filter-mapping>标签组合对编写的filter类进行注册,并设置它所能拦截的资源实际上,Filter可以完成与Serlvlet一样的工作,甚至比Servlet使用起来更加灵活,因为它除了提供了request和response对象外,还提供了一个FiterChain链对象,他可以让我们更加灵活地控制请求的流转.Filter相关的类结构图在Tomcat中,FilterConfig和FilterChain的实现类分别是从ApplicationFilterConfig和ApplcationFIterChian,而Fitler 的实现类由用户自定义,只要实现了FIlter接口中定义的三个接口即可,这三个接口与在Servlet中的类似.只不过还有一个AlllicationFilterChain类,此类可以将多个Filter串联成链. 详细看下Filter中的三个接口方法init<FilterConfig>:初始化接口,在用户自定义的Filter初始化时被调用,它与Servlet的init方法作用一致,Fi

  • MAC解压软件推荐——全能解压

    MAC解压软件推荐——全能解压前言一直以来,我都没有找到MAC上类似于haozip或者360压缩这样的好用的免费的压缩软件。keka这个软件不能预览压缩包内容,只能将文件解压出来看。而命令行的atool软件虽然可以预览文件,但是不能直接查看文件的内容。算是一件非常恶心的事情。不过最近看到一款软件,全能解压formac,试用了一下,感觉非常不错。优点如下:界面漂亮支持预览压缩包内容支持预览加密压缩包支持直接打开压缩包里的文件,而不用解压整体压缩包完全免费!没有深度试用,但是就目前的观感,非常不错。官方承诺,永久免费,可以放心使用。软件简介RAR文件解压利器!全能解压,Mac上最好用的解压缩软件,超千份好评的五星满分软件,Store内唯一一款无需解压就能直接预览(文档、音频、视频)的全能软件,并承诺终身免费。全新图标带来清新感受,欢迎下载体验极速解压快感。主要功能拖动压缩包到全能解压主界面可直接预览文件内容将压缩包解压到指定目录选定压缩包,右键解压到当前目录用户最真实的心声:“Mac上用过最良心好用的解压APP,程序稳定,界面漂亮,支持!”–Bert.h “UI符合macOSApp风格,使

  • 近期 Unity 提交苹果审核被拒的问题

    游戏提交苹果审核,被打回。在bugly上没有查到崩溃信息,苹果给了crash日志也说明。 拒绝原因如下:YourappcrashedoniPadoriPhonerunningiOS11.2.5connectedtoanIPv6networkduringourreview. logs日志也看不出什么,初看像是IPv6的问题,实际上与IPV6无关。 之后同事帮忙搜索文章,有一篇文章说是AB的加载方式,不要用WWW。我们游戏里没有用过这个方法,先排除掉。后来在知乎上找到一篇文章:最近好多朋友因为这个问题被IOS拒审>> 依据文章提供的线索,找到DisplayManager.mm文件中的–(id)init方法,将监听AirPlay的事件注释掉即可。 苹果审核环境的模拟:一台iPhone或iPad+一台iMac。Mac上先安装AirServer(选择试用版本http://www.airserver.com/Download) 然后移动设备的wifi连接iMac的共享网络。这样移动设备启用屏幕镜像(AirPlay)就可以模拟进

  • CCF 201509-5 最佳文章

                                    问题描述   小明最近在研究一门新的语言,叫做Q语言。Q语言单词和文章都可以用且仅用只含有小写英文字母的字符串表示,任何由这些字母组成的字符串也都是一篇合法的Q语言文章。  在Q语言的所有单词中,小明选出了他认为最重要的n个。使用这些单词,小明可以评价一篇Q语言文章的“重要度”。  文章“重要度”的定义为:在该文章中,所有重要的Q语言单词出现次数的总和。其中多次出现的单词,不论是否发生包含、重叠等情况,每次出现均计算在内。  例如,假设n=2,小明选出的单词是gvagv和agva。在文章gvagvagvagv中,gvagv出现了3次,agva出现了2次,因此这篇文章的重要度为3+2=5。  现在,小明想知道,一篇由m个字母组成的Q语言文章,重要度最高能达到多少。 输入格式   输入的第一行包含两个整数n

  • NetSNMP开源代码学习——mib扩展

    扩展MIB库关于MIB库的扩展网络文章非常多,这里我主要参考了http://blog.csdn.net/qq_27204267/article/details/51595708,这篇文章介绍的比较简单,流程清晰,内容全面,没有太多的理论讲解。闲言少叙,参考前人经验直接在我的环境里来个“傻瓜”操作并记录步骤,防止忘记。哎,年纪大了健忘啊^^^^^^同时为了后续的移植操作和深入分析做基础。1.编译MIB库文件 一.编译MIB库文件 --Test-MIB.my Test-MIBDEFINITIONS::=BEGIN IMPORTS OBJECT-GROUP,MODULE-COMPLIANCE,NOTIFICATION-GROUP FROMSNMPv2-CONF enterprises,Integer32,Unsigned32,OBJECT-TYPE,MODULE-IDENTITY, NOTIFICATION-TYPE FROMSNMPv2-SMI DisplayString FROMSNMPv2-TC; --October09,2002at14:50GMT --1.3.6.1.4.1.

  • Ubuntu系统中中文的设置

    这几天心血来潮,在实习公司真的没什么事情做,在学长的推荐下就学习了一下Ubuntu系统,感觉还是挺不错的,这个系统,所以我也推荐刚开始学习liunx系统的妹子们也可以先学一下这个。 1>你可以在网上百度进入到ubuntu的官网上去下载安装包,然后解压到D盘或者其他盘,建议不要解压到C盘避免导致自己的系统卡。下载安装好之后看下图   2>然后在系统设置里面找到下图的标识,这个是用来设置语言的 3> 打开“LanguageSupport"后我们在上面的菜单框中可以看见已安装的语言,我们可以拖动右侧的滚动条在菜单中找找有没有熟悉的汉字。若有”汉语(中国)“请跳至步骤7,没有汉字就是没有安装中文语言,选择下面的”install/Remove...“来安装语言。   4>找到Chinese(simplified)后面复选框打钩。点击右下角”ApplyChanges“。 5>输入系统用户密码确认安装 6>在这步时最好是系统能上网,因为系统需要联网下载语言安装,下载的时候可能会比较慢。 7>安装语言后,语言菜单列表就

  • 开放关闭端口

    Linux下修改Tomcat默认端口 firewall与端口 CentOS迷你版没有firewall。需要安装后才能使用。 安装yuminstallfirewalld #systemctlstartfirewalld#启动,#systemctlenablefirewalld#开机启动#systemctlstopfirewalld#关闭#systemctldisablefirewalld#取消开机启动 开放端口和关闭端口 #firewall-cmd--zone=public--add-port=8090/tcp--permanent#firewall-cmd--zone=public--remove-port=8090/tcp--permanent 使配置生效#firewall-cmd--reload     假设tomcat所在目录为/usr/local/apache-tomcat/ 1、打开tomcat配置文件#vi/usr/local/apache-tomcat/conf/server.xml 2、打开Tomcat配置文件之后按/8080 快速检索

  • Nginx的安装、基本用法、与php-frm配置,配置文件的解释

      什么是Nginx Nginx 怎么读?---A:恩静埃克斯=EngineX---B:恩静克思[ˈendʒɪnks] Nginx是lgorSysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。 Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、VirtualHost、URLRewrite、Gzip等功能。并且支持很多第三方的模块扩展。 Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。 反正很牛逼。 Nginx常用功能 1、Http代理,反向代理 作为web服务器最常用的功能之一,尤其是反向代理。 Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并

相关推荐

推荐阅读