Java-1123

news2024/11/16 9:27:49

Jedis

  1. 介绍:Jedis是一款java操作redis数据库的工具(类似JDBC)

  2. 使用步骤:

    1. 下载jedis的jar包
    2. 使用
  3. 快速入门

    //  1.获取连接
    Jedis jedis = new Jedis("localhost",6379);
    //  2.操作
    jedis.set("name","zhangsan");
    //  3.关闭连接
    jedis.close();
    
  4. jedis操作各种数据结构

    		/**
         * string操作
         */
        @Test
        public void test2(){
    
            //  1.获取连接
            Jedis jedis = new Jedis();  //  空参数的时候默认local:6379
    
            //  2.操作
            jedis.set("name","zhangsan");
            String name = jedis.get("name");
            System.out.println(name);
    
            //  可以使用setex()方法,存储可以指定过期时间的key value
            jedis.setex("activecode",20,"haha");    // 键值对存入redis,20秒后自动删除
            //  3.关闭连接
            jedis.close();
        }
    
        /**
         *  哈希
         */
        @Test
        public void test3(){
    
            //  1.获取连接
            Jedis jedis = new Jedis("localhost",6379);
            //  2.操作
            jedis.hset("user","name","ls");
            jedis.hset("user","age","23");
            jedis.hset("user","gender","male");
    
            //  获取
            String name = jedis.hget("user", "name");
            System.out.println(name);
    
            Map<String, String> user = jedis.hgetAll("user");
            Set<String> keySet = user.keySet();
            for (String key :keySet){
                System.out.print(key+":  "+user.get(key)+"  ");
                System.out.println(jedis.hget("user",key));
            }
            System.out.println(user);
    
            //  3.关闭连接
            jedis.close();
        }
    
    
        /**
         * 链表
         */
        @Test
        public void test4(){
    
            //  1.获取连接
            Jedis jedis = new Jedis("localhost",6379);
            //  2.操作
            while (jedis.rpop("queue")!=null){
                jedis.rpop("queue");
            }
            jedis.lpush("queue","E","C","A");
            jedis.rpush("queue","M","V","P");
            List<String> queue = jedis.lrange("queue", 0, -1);
            System.out.println(queue);
    
            //  3.关闭连接
            jedis.close();
        }
    
        /**
         * 集合
         */
        @Test
        public void test5(){
    
            //  1.获取连接
            Jedis jedis = new Jedis("localhost",6379);
            //  2.操作
            jedis.sadd("classmates","a");
            jedis.sadd("classmates","b");
    
            System.out.println(jedis.smembers("classmates"));
    
            jedis.zrem("classmates","b");
            System.out.println(jedis.smembers("classmates"));
    
            //  3.关闭连接
            jedis.close();
        }
    
        /**
         * 有序链表
         */
        @Test
        public void test6(){
    
            //  1.获取连接
            Jedis jedis = new Jedis("localhost",6379);
            //  2.操作
            jedis.zadd("set",90,"ys");
            jedis.zadd("set",70,"xsr");
    
            System.out.println(jedis.zrange("set",0,-1));
            
            //  3.关闭连接
            jedis.close();
        }
    
  5. jedis连接池:jedisPool

    1. 使用:

      1. 创建JedisPool连接池对象
      2. 调用
    2. 代码:

      public class JedisPoolUtils {
      
          private static JedisPool jedisPool;
      
          static {
              //  读取配置文件
              InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
              Properties pro = new Properties();
              try {
                  pro.load(is);
              } catch (IOException e) {
                  e.printStackTrace();
              }
              JedisPoolConfig config = new JedisPoolConfig();
              config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
              config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
      
              //  初始化jedisPool
              jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("post")));
          }
      
          /**
           * 获取连接方法
           */
          public static Jedis getJedis(){
      
              return jedisPool.getResource();
          }
      }
      
  6. 案例:redis缓存优化

    /**
     *	使用redis缓存
     */
    public String findAllJson(){
      //	1.先从redis中查询数据
      //	1.1获取redis客户端连接
      Jedis jedis = JedisPoolUtils.getJedis();
      String province_json = jedis.get("province");
      
      //	2.判读一下province是否为null
      if(province_json == null|| province_json.length()==0){
        //	redis没有数据,需要查询数据库,并且更新缓存
        //	2.1从数据库查询
       	List<Province> ps =	dao.findAll();
        //	2.2将list序列化到json
        ObjectMapper mapper = new ObjectMapper();
        try{
          province_json =  mapper.writeValueAsString(ps);
        }catch(JsonProcessingException e){
          e.printStacktrace();
        }
        //	2.3	将json数据存入redis中
     		jedis.set("province",province_json);
        //	释放连接,省略了try/catch和finally确认最终关闭的操作
        jedis.close();
      }else{
        //	redis中有数据,查询缓存
      }
     
      return province_json;
    }
    
    1. 注意:使用redis缓存一些不经常改变的数据,
      1. 数据库的数据一旦发生改变,则需要更新缓存。
      2. 数据库的表执行了一些增删改查的操作,需要将redis缓存数据清空,再次录入
      3. 在service对应的增删改查方法中,将redis数据删除

Maven

  1. apache出的一款项目管理工具

  2. 作用:

    1. 管理jar包:maven没有直接导入jar包,而是通过文件的配置引入所需要的jar包
    2. 编译
    3. 测试
    4. 部署
  3. 组成:

    1. 一个项目对象模型:POM.xml
    2. 一组标准集合:
    3. 一个项目生命周期:Project Lifecycle
    4. 一个依赖管理系统:
    5. 运行定义在生命周期阶段(phase)中的插件(plugin)目标(goal)的逻辑
  4. 项目结构:

请添加图片描述

  1. Maven常用命令:

    1. compile:编译命令,产出字节码文件
    2. package:打包命令(会自动先执行打包),打成war包
    3. install:安装命令,将项目安装到本地的仓库中。
  2. Maven生命周期:三套独立的生命周期

    1. Clean Lifecycle : 构建之前的清理工作
    2. Defualt Lifecycle :构建的核心部分,编译,测试,打包,部署等等
    3. Site Lifecycle :生成项目报告,站点,发布站点
    4. 同一套生命周期中,执行后边的操作,会自动执行前面所有操作
      1. 例如defulat: 编译 测试 打包 安装 ,任意执行一个都会把之前的执行一遍
      2. clean清理:
      3. site站点发布;
  3. 坐标:被Maven管理的资源的唯一标识

    1. groupId:组织名

    2. atifactId:模块名称

    3. version:版本号

      <groupId>redis.clients</groupId>	每一层代表一个目录,如果里面包含了多个点,每个点就是一个目录
      <artifactId>jedis</artifactId>
      <version>2.7.0</version>
      
  4. IDEA创建MAVEN项目

    1. new module
    2. 选择maven
    3. pom文件自动打开,添加配置选项.<package>有几种选项
      1. jar:java项目打包为jar包,默认
      2. war:web项目需要设置为war
      3. pom:maven高级配置
  5. 添加插件build标签配置

    <!--添加插件 -->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                </plugin></plugins>
        </build>
    
  6. Maven创建web项目

    1. 创建不使用骨架的web模块
    2. 添加<packaging>使用war
    3. 添加webapp.WEB-INF.web.xml目录
    4. 添加tomcat插件
    5. 修改一下配置,将右侧maven/pluginstomcat7/run命令可以集成到头部按钮
  7. 依赖配置范围

    1. pom文件里面,对于添加的依赖还可以进行依赖范围的配置

      <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet-api</artifactId>
                  <version>3.1.0</version>
                  <scope>provided</scope>	#默认值为compile,指编译环境有效
              </dependency>
      
    2. 依赖范围:我配置的jar包对哪些环境有效,默认值为compile请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++ 深度拷贝和浅拷贝

一、简介 由于20年转行之后一直用的是halcon 和c# &#xff0c;C就此搁浅&#xff0c;最近开始搞pcl慢慢的又重拾起来&#xff0c;对于深拷贝和浅拷贝我知道是什么原因造成的&#xff0c;也知道如何解决&#xff0c;但是突然被人问得时候又有点蒙蔽&#xff0c;因此做一个简单…

MCE 天然化合物相关库更新

随着现代化合物分离和鉴定技术的不断提高&#xff0c;以及人们对自然界生物多样性的持续研究&#xff0c;越来越多的天然产物被用于新药研究开发。据统计&#xff0c;截至 2013 年&#xff0c;有 547 个天然产物及天然产物衍生物被 FDA 批准上市&#xff0c;占所有 FDA 批准上市…

高通骁龙处理器天梯排行榜2022 骁龙处理器发布时间排行

骁龙处理器天梯图2022最新10月更新榜单 1、高通骁龙8 Gen1 2、高通骁龙8 Gen1 3、高通骁龙888 Plus 4、高通骁龙888 我用的手机就是活动时7.5折抢购的 点击开抢 http://shouji.adiannao.cn/7 1、工艺&#xff1a;搭载最新一代5nm制作工艺&#xff0c;为用户带来最强的处理器性能…

[附源码]Python计算机毕业设计大学生兼职系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

STM32中的独立看门狗和窗口看门狗

独立看门狗和窗口看门狗有什么区别&#xff1f;一、前言二、独立看门狗三、窗口看门狗四、结语一、前言 在早期的MCU中是没有看门狗这种东西的&#xff0c;所以产品就很容易出现死机&#xff0c;跑飞的情况。为了避免这种情况的出现&#xff0c;后期的MCU都集成了看门狗的功能…

CI/CD Jenkins容器化安装部署

环境准备 docker安装 jenkins镜像安装 CI/CD CI:持续集成 CD:连续交付 环境准备 下载前推荐先看下Jenkins硬件和软件要求部分 Jenkins官方文档 Jenkins下载 虚拟机 docker 对配置的要求 CentOS安装可跳转 VMware安装CentOS CentOS 7.8 // 查看CentOS版本命令 cat /etc…

牛客网语法篇练习循环控制(一)

1.2023年就要来到了&#xff0c;KiKi要对他的n位好朋友说n遍”Happy new year!Good luck!”的祝福语。 n int(input()) for i in range(n):print(Happy new year!Good luck!) 2.任意输入一个正整数N&#xff0c;统计1~N之间奇数的个数和偶数的个数&#xff0c;并输出。 num …

【网页设计】基于HTML在线商城购物项目设计与实现-----电脑商城6页带视频 带报告3000字

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#…

java开发者工具IDEA自定义设置主题/字体/字号大小

IDEA自定义设置主题 第一步&#xff1a;点击工具栏上的“File”选项。 第二步&#xff1a;选择“Settings…”选项。 第三步&#xff1a;点击“Appearance & Behavior > Appearance”选项。 第四步&#xff1a;点击右侧"Theme"下拉框&#xff0c;选择自己喜…

动态爬虫管理平台构建与实现_kaic

目 录 第1章 绪论 1.1背景与意义 1.2主题网络爬虫的国内外研究现状 1.2.1主题辨别算法及平台构建 1.2.2主题爬虫系统 1.3本文的研究内容 第二章 主题网络爬虫的体系结构 2.1组成模块 2.1.1基本组成 2.1.2基本流程 2.2主题页面的分布特性 2.2.1 Hub/Authority特性 2.2.2 Linkag…

一篇文章带你搞懂前端Cookie

文章目录一. 前言(一些废话)二. Cookie1. 为什么会有Cookie2. Cookie的特性3. 浏览器Cookie4. 跨站和跨域三. Cookie操作1. 获取Cookie2. 设置Cookie3. 修改Cookie4. 删除Cookie四. Cookie属性1. Cookie属性Domain2. Cookie属性path3. Cookie属性expires4. Cookie属性max-age5.…

大数据_数据中台_数据分层

目录 分层总览 ODS:操作数据层 DIM:维度数据层 DWD:明细数据层 DWS:汇总数据层 ADS:数据应用层 CDM:公共数据层 数据层级调用原则 分层总览 ODS:操作数据层 ODS(Operate Data Store&#xff09;,ODS层数据是数据仓库的第一层数据&#xff0c;是业务数据库的原始数据的复…

Oracle Primavera Unifier uDesigner 资产管理器(Asset Manager )

目录 前言 特点 优势 维护管理 独立或集成 事务管理 资产组合管理 投资组合管理能力 可持续性和能源管理 单一集成设施和资产生命周期管理 移动应用 前言 Oracle Primavera Unifier 为组织提供设施管理的行业最佳实践解决方案。从设计、构建、运行和维护&#xff0…

【深入理解Kotlin协程】Google的工程师们是这样理解Flow的?

Question&#xff1a;why there is a Flow in kotlin? 问这个问题就好比在问为什么那里会有一座山存在&#xff0c;嗯&#xff0c;这貌似是一个哲学问题。当然&#xff0c;对于kotlin中的Flow的理解可能不会上升到这么高的哲学层次&#xff0c;对于Flow相关的Api掌握并使用它…

JavaSE笔记——多态

文章目录前言一、向上转型回顾1.忘掉对象类型二、转机1.方法调用绑定2.产生正确的行为3.可扩展性三、构造器和多态1.构造器调用顺序2.构造器内部多态方法的行为四、协变返回类型总结前言 本文是学习Java编程思想记录的笔记&#xff0c;主要内容介绍在 Java 中多态的概念。 多…

Servlet API(HttpSerrvlet+HttpServletRequest+HttpServletResponse)

目录 &#x1f432; 1. HttpServlet &#x1f432; 2. HttpServletRequest HTTP请求 &#x1f984; 2.1 打印请求信息(创建 ShowRequest 类) &#x1f984; 2.2 获取 GET 请求中的参数(创建 GetParameter 类) &#x1f984; 2.3 获取 POST 请求中的参数(创建 PostParame…

java学习day57(Spring Cloud)Spring Cloud 微服务

主要课程内容 第⼀部分&#xff1a;微服务架构 互联网应用架构演进 微服务架构的体现思想及优缺点 微服务架构的核心概念 第⼆部分&#xff1a;SpringCloud概述 Sping Cloud 是什么 Sping Cloud 解决什么问题 Sping Cloud 架构 第三部分&#xff1a;案例准备 第四部分&#xff…

2022华为杯研究生数学建模竞赛DS数模选题建议

2022华为杯研究生数学建模竞赛DS数模选题建议 开放性&#xff1a;F>E>AD>BC. 难度&#xff1a;AD>BC>EF &#xff08;仅C君个人看法&#xff09; A题 移动场景超分辨定位问题 此题是物理cv类题目&#xff0c;属于比较新颖的超分辨率图像检测类任务&#xff0c…

1、Java的json得到我们想要的数据结构

Java的json得到我们想要的数据结构 第一步&#xff1a;首先我们要知道json就两种数据结构。 &#xff01;&#xff01;&#xff01;第一种数据结构&#xff1a;对象用{ }表示 &#xff01;&#xff01;&#xff01;第二种数据结构&#xff1a;数组用[ ]表示 我们用这个案例来…

在智能家居领域产品中常用芯片

芯片是当前“电子科技设备的灵魂”所在&#xff0c;几乎决定了所有电子设备的综合性能&#xff0c;现如今智能家居带来了全新的使用场景与交互方式&#xff0c;从扫地机器人、智能洗碗机、智能冰箱等智能机器&#xff0c;到智能照明、智能感知、网络通讯、家庭影音等智能系统&a…