• Java-1122


    JSON

    1. 基本概念:JavaScript Object Notation javaScript对象表示法

      1. json多用于存储和交换文本信息的语法
      2. 进行数据传输,类似于XML,但是更小更快
    2. 语法:

      1. 基本规则:
        1. 数据在名称/值对中:json数据是由键值对构成
          1. 键用引号(单双都可)引起来,也可以不使用引号
          2. 值对取直类型:
            1. 数字
            2. 字符串(双引号中)
            3. 逻辑值{true或false}
            4. 数组(在方括号中)
            5. Json对象(在花括号中)
            6. null
        2. 数据由逗号分隔
          1. 多个键值对之间由逗号分隔
        3. 花括号保存对象:实验{ }定义json格式
        4. 方括号保存数组:[ ]
      2. 获取数据:
        1. json对象.键名
        2. json对象[“键名”]
        3. 数组对象[索引]
    3. JSON数据和java对象的相互转换

      1. JSON解析器:封装好的JSON工具类,节省代码编写

        1. Jsonlib
        2. Gson
        3. fastjson
        4. jackson(Spring框架内值解析器)
      2. JSON转为Java对象

      3. Java对象转换JSON

        1. 步骤:

          1. 导入jackson的jar包
          2. 创建Jackson核心对象ObjectMapper
          3. 调用ObjectMapper的相关方法(writeValue)进行转换
        2. 转换方式:

          1. writeValue(参数1,obj对象)

            1. 参数1有很多重载形式:

              1. File:将obj对象转换为JSON字符串,并保存到指定的文件中
              2. Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流
              3. OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流
              4. writeValueAsString(obj):将obj对象转换为JSON字符串,直接返回给用户writeValueAsString(obj):将对象转为json字符串
            2. 代码:

              Person p = new Person();
                      p.setName("dyg");
                      p.setAge(23);
                      p.setGender("男");
              
                      //  2.创建Jackson的核心对象  ObjectMapper
                      ObjectMapper mapper = new ObjectMapper();
              
                      //  3.转换
                      String json = mapper.writeValueAsString(p);
                      System.out.println(json);
              
                      //  写入文件
                      mapper.writeValue(new File("./a.txt"),p);
              
                      //  关联到writer中
                      mapper.writeValue(new FileWriter("./b.txt"),p);
              
              • 1
              • 2
              • 3
              • 4
              • 5
              • 6
              • 7
              • 8
              • 9
              • 10
              • 11
              • 12
              • 13
              • 14
              • 15
              • 16
              • 17
            3. 注解:

              1. @JsonIgnore:排除属性(加在对象类的属性上)

                @JsonIgnore
                    private Date birthday;
                
                • 1
                • 2
              2. @JsonFotmat:属性值格式化

                @JsonFormat(pattern = "yyyy-MM-dd")
                    private Date birthday;
                
                • 1
                • 2
            4. 复杂的java对象如果转json

              1. List:数组
              2. Map:跟对象格式一致
              3. 两个都可以直接转
      4. JSON对象转Java

        1. 步骤:

          1. 导入jackson的jar包
          2. 创建Jackson核心对象ObjectMapper
          3. 调用ObjectMapper的相关方法(readValue)进行转换
        2. readValue(json字符串数据,Class)

          //  1.
                  String json = "{\"gender\":true,\"name\":\"zs\",\"age\":23}";
                  //  2.
                  ObjectMapper mapper = new ObjectMapper();
                  //  3.
                  Person person = mapper.readValue(json, Person.class);
                  System.out.println(person);
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7

    redis

    1. 概念:redis是一款高性能的NPSQL系列的非关系型数据库

      1. Not Only SQL,泛指非关系型数据库
      2. 对比关系型和非关系型数据库:
        1. 关系型:mysql、oracle
          1. 数据之间有关联关系
          2. 数据存储在硬盘的文件(表)中
        2. 非关系型:redis(键值型)、hbase(列存储)、MongoDB(文档型)、Neo4J(图形数据库)
          1. 没有表的概念,所有数据全部是key:value的键值对的形式
          2. 数据之间没有关联关系
          3. 数据存储在内存中,相比操作IO快很多
      3. Redis:C语言开发、高性能键值对数据库,
      4. 应用场景:
        1. 缓存(数据查询、短链接、新闻内容、商品内容)
        2. 聊天室的在线好友列表
        3. 任务队列(秒杀、抢购)
        4. 应用排行榜
        5. 网站访问统计
        6. 数据过期处理
    2. 使用:

      1. redis.conf:配置文件

      2. 运行命令:

        #	运行服务器端
        $ redis-server
        
        #	连接redis 
        $ redis-cli -p 6379 -h 127.0.0.1
        
        # 存值
        $ set name "Parzival"
        
        # 取值
        $ get name
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
    3. redis的数据结构

      1. redis存储的是:key,value格式的数据,其中key都是字符串,value有5种
        1. 字符串类型 string
        2. 哈希类型 hash (map格式)
        3. 列表类型 list (链表格式)允许重复元素
        4. 集合类型 set (hashSet)不允许重复元素
        5. 有序集合类型 sortedset 不允许重复元素,且有序
    4. 命令操作:

      1. 字符串类型 string
        1. 存储:set key value
        2. 获取:get key
        3. 删除:del key
      2. 哈希类型 hash
        1. 存储:hset key field value
        2. 获取指定field:hget key field
          1. 获取全部field值:hgetall key
        3. 删除:hdel key field
      3. 列表类型 list (按照插入顺序排序),可以添加一个元素到列表头部(左侧)或尾部(右侧)
        1. 添加:
          1. 左侧添加: lpush key value
          2. 右侧添加: rpush key value
        2. 获取:
          1. 范围获取: lrange key start end
            1. 如果获取所有的话:start为0,end为-1
        3. 删除:
          1. 左侧弹出: lpop key
          2. 右侧弹出: rpop key
      4. 集合类型 set :不允许重复
        1. 存储:sadd key value1 value2 value3
        2. 获取: smembers key:获取set集合中所有元素
        3. 删除:srem key value:删除set集合中的某个元素
      5. 有序集合类型 sortedset :不允许重复元素,且元素有序(按照分数进行排序,分数也要存储)
        1. 存储:zadd key score value
        2. 获取:zrange key start end
          1. 获取同时获取分数:zrange key start end with scores
        3. 删除:zrem key value
      6. 通用命令:
        1. keys * : 获取所有的键值
        2. type key:获取对应键值的类型
        3. del key :删除指定键值
    5. 持久化

      1. redis是一个内存数据库,当redis服务器重启数据会丢失,我们可以将redis内存中的数据持久化保存到内存中。

      2. 持久化机制:

        1. RDB:默认方式,不需要配置默认使用这种机制

          1. 在一定的间隔时间中,检测key变化情况,然后去持久化数据

          2. 较为推荐,对性能影响比较低

          3. 使用方式:

            1. 编辑redis.conf配置文件

              #   In the example below the behaviour will be to save:
              #   after 900 sec (15 min) if at least 1 key changed
              save 900 1
              #   after 300 sec (5 min) if at least 10 keys changed
              save 300 10
              #   after 60 sec if at least 10000 keys changed
              save 60 10000
              
              save 10 5
              
              • 1
              • 2
              • 3
              • 4
              • 5
              • 6
              • 7
              • 8
              • 9
            2. 重新启动服务器,并指定配置文件

              $ redis-server redis.conf
              
              • 1
        2. AOF:日志记录方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据

          1. 使用步骤:

            1. 打开配置文件,找到appendonly ,默认值为no ,改为yes

              # appendfsync always	:	每一次操作都进行持久化
              appendfsync everysec	:	每间一秒操作都进行持久化(默认)
              # appendfsync no			:	不进行持久化
              
              • 1
              • 2
              • 3
            2. 重新启动服务器,并指定配置文件

  • 相关阅读:
    第二章 编译运行Android Wenet语音识别
    RestCloud ETL解决shell脚本参数化
    通过JS生成蜂巢背景图(六边形背景图)
    一文详解训练LLM流程
    Linux下将驱动编译进内核
    ceph 004 纠删码池 修改参数 cephx认证
    【Elastic-1】ELK基本概念、环境搭建、快速开始文档
    浅析安防监控系统/AI视频智能分析算法:河道水文水位超标算法应用
    21 | 多线程3
    数据结构-----【链表:刷题】
  • 原文地址:https://blog.csdn.net/lannister_awalys_pay/article/details/127992433