• MyBatis在DAO层定义接口返回类型泛型无效的解决

    2021-07-30 16:53:36

    MyBatis DAO层定义接口返回类型泛型无效今天很偶然的因为一次粗心而发现的一个mybatis问题,这里就写出来与大家分享一下。DAO层定义了一个接口,返回String集合,用于获取最热门的搜索信息。mapper.xml文件接口返回的类型却是search对象。调用接口,返回的是search对象集合,没有报错,泛型没起到作用。仔细一想,泛型是在编译阶段将我们的返回值类型匹配到一具体类型,而DAO

  • MyBatis在DAO层定义接口返回类型泛型无效的解决

    2021-07-30 16:53:36

    MyBatis DAO层定义接口返回类型泛型无效今天很偶然的因为一次粗心而发现的一个mybatis问题,这里就写出来与大家分享一下。DAO层定义了一个接口,返回String集合,用于获取最热门的搜索信息。mapper.xml文件接口返回的类型却是search对象。调用接口,返回的是search对象集合,没有报错,泛型没起到作用。仔细一想,泛型是在编译阶段将我们的返回值类型匹配到一具体类型,而DAO

  • Mybatis配置解析看这一篇就够了

    2021-07-30 16:51:35

    目录核心配置文件environments元素mappers元素Mapper文件Properties优化typeAliases优化生命周期和作用域总结核心配置文件    mybatis-config.xml 系统核心配置文件    MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。    能配置的内容如下:configuration(配置)properties(属性)

  • Mybatis配置解析看这一篇就够了

    2021-07-30 16:51:35

    目录核心配置文件environments元素mappers元素Mapper文件Properties优化typeAliases优化生命周期和作用域总结核心配置文件    mybatis-config.xml 系统核心配置文件    MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。    能配置的内容如下:configuration(配置)properties(属性)

  • mybatis使用foreach遍历list集合或者array数组方式

    2021-07-30 16:51:08

    一、准备工作1.db.properties文件(记得修改自己的数据库和用户名、密码)dataSource.driver=com.mysql.jdbc.DriverdataSource.url=jdbc:mysql://localhost:3306/mybatisuseUnicode=true&characterEncoding=utf8dataSource.username=blogdataSou

  • mybatis使用foreach遍历list集合或者array数组方式

    2021-07-30 16:51:08

    一、准备工作1.db.properties文件(记得修改自己的数据库和用户名、密码)dataSource.driver=com.mysql.jdbc.DriverdataSource.url=jdbc:mysql://localhost:3306/mybatisuseUnicode=true&characterEncoding=utf8dataSource.username=blogdataSou

  • SpringBoot使用protobuf格式的接口方式

    2021-07-30 12:55:53

    SpringBoot使用protobuf格式的接口建立SpringBoot项目,pom.xml内容如下:<xml version="1.0" encoding="UTF-8"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  • SpringBoot使用protobuf格式的接口方式

    2021-07-30 12:55:53

    SpringBoot使用protobuf格式的接口建立SpringBoot项目,pom.xml内容如下:<xml version="1.0" encoding="UTF-8"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  • Java设计模式之GOF23全面讲解

    2021-07-29 14:53:23

    一、什么是设计模式设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目的是实现代码的高内聚和低耦合。二、设计模式的三大分类及关键点 1、创建型模式对象实例化的模式,创建型模式用于解耦对象的实例化过程。单例模式:某个类智能有一个实例,

  • Java设计模式之GOF23全面讲解

    2021-07-29 14:53:23

    一、什么是设计模式设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目的是实现代码的高内聚和低耦合。二、设计模式的三大分类及关键点 1、创建型模式对象实例化的模式,创建型模式用于解耦对象的实例化过程。单例模式:某个类智能有一个实例,

  • Springboot+AOP实现返回数据提示语国际化的示例代码

    2021-07-25 06:55:06

    前言本篇内容:提示语的国际化返回,自定义多语言。本文使用aop方式,拦截接口返回的数据,进行转换。正文  先看这次示例教学的项目 目录结构: (当然resource里面的i18n文件夹和三个properties文件也是要我们自己建的,但是 那个Resource Bundle 不用管,这个在yml加上对应配置项自动生成的。 不清楚的继续往下看教学就好)开始敲(CV)代码:pom.xml 依赖:<de

  • Springboot+AOP实现返回数据提示语国际化的示例代码

    2021-07-25 06:55:06

    前言本篇内容:提示语的国际化返回,自定义多语言。本文使用aop方式,拦截接口返回的数据,进行转换。正文  先看这次示例教学的项目 目录结构: (当然resource里面的i18n文件夹和三个properties文件也是要我们自己建的,但是 那个Resource Bundle 不用管,这个在yml加上对应配置项自动生成的。 不清楚的继续往下看教学就好)开始敲(CV)代码:pom.xml 依赖:<de

  • Java日常练习题,每天进步一点点(28)

    2021-07-23 17:53:55

    目录1、为AB类的一个无形式参数无返回值的方法method书写方法头,可以用AB.method()方式调用,该方法头的形式为( )。2、以下类定义中的错误是什么?()3、请问以下代码运行结果是:4、关于继承和实现说法正确的是 ? ( )5、以下哪一个不是赋值符号?6、以下代码将打印出7、以下哪个式子有可能在某个进制下成立()?8、Java语言中,下面哪个语句是创建数组的正确语句?( )9、执行如下

  • Java日常练习题,每天进步一点点(28)

    2021-07-23 17:53:55

    目录1、为AB类的一个无形式参数无返回值的方法method书写方法头,可以用AB.method()方式调用,该方法头的形式为( )。2、以下类定义中的错误是什么?()3、请问以下代码运行结果是:4、关于继承和实现说法正确的是 ? ( )5、以下哪一个不是赋值符号?6、以下代码将打印出7、以下哪个式子有可能在某个进制下成立()?8、Java语言中,下面哪个语句是创建数组的正确语句?( )9、执行如下

  • Java日常练习题,每天进步一点点(27)

    2021-07-23 17:52:52

    目录1、与未加访问控制符的缺省情况相比,public和protected修饰符扩大了属性和方法的被访问范围,private修饰符则缩小了这种范围。2、下列叙述错误的是( )3、能用来修饰interface的有()4、关于访问权限,说法正确的是? ( )5、下列说法正确的有()6、Java数据库连接库JDBC用到哪种设计模式7、public void test() {8、如何获取ServletCon

  • Java日常练习题,每天进步一点点(27)

    2021-07-23 17:52:52

    目录1、与未加访问控制符的缺省情况相比,public和protected修饰符扩大了属性和方法的被访问范围,private修饰符则缩小了这种范围。2、下列叙述错误的是( )3、能用来修饰interface的有()4、关于访问权限,说法正确的是? ( )5、下列说法正确的有()6、Java数据库连接库JDBC用到哪种设计模式7、public void test() {8、如何获取ServletCon

  • Java日常练习题,每天进步一点点(25)

    2021-07-23 15:51:12

    目录1、下面程序段执行后b的值是()。2、以下关于继承的叙述正确的是3、下面关于依赖注入(DI)的说法不正确的是()4、下列整型常量 i 的定义中,正确的是( )5、下面关于Java package的描述,哪个是正确的:()6、下面这段程序的输出结果是()7、Thread. sleep()是否会抛出checked exception8、下列哪个选项是正确计算42度(角度)的余弦值?9、以下描述正确

  • Java日常练习题,每天进步一点点(25)

    2021-07-23 15:51:12

    目录1、下面程序段执行后b的值是()。2、以下关于继承的叙述正确的是3、下面关于依赖注入(DI)的说法不正确的是()4、下列整型常量 i 的定义中,正确的是( )5、下面关于Java package的描述,哪个是正确的:()6、下面这段程序的输出结果是()7、Thread. sleep()是否会抛出checked exception8、下列哪个选项是正确计算42度(角度)的余弦值?9、以下描述正确

  • TypeScript定义接口(interface)案例教程

    2021-07-23 13:51:12

    接口的作用:接口,英文:interface,其作用可以简单的理解为:为我们的代码提供一种约定。在Typescript中是这么描述的:    TypeScript的核心原则之一是对值所具有的结构进行类型检查。它有时被称做“鸭式辨型法”或“结构性子类型化”。    在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。举个例子:// 定义接口 Personinterf

  • TypeScript定义接口(interface)案例教程

    2021-07-23 13:51:12

    接口的作用:接口,英文:interface,其作用可以简单的理解为:为我们的代码提供一种约定。在Typescript中是这么描述的:    TypeScript的核心原则之一是对值所具有的结构进行类型检查。它有时被称做“鸭式辨型法”或“结构性子类型化”。    在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。举个例子:// 定义接口 Personinterf

  • TypeScrip中泛型的案例详解

    2021-07-23 11:51:25

    泛型的定义// 需求一: 泛型 可以支持不特定的数据类型, 要求,传入的参数和返回参数一致// 这种方式虽然能实现传入和返回的参数一致,但是失去类型参数检验/*function getData(value: any): any {    return "success"}*/// 定义泛型解决需求一// T表示泛型(这里的大写字母可以随便定义,但一般默认为T) 具体什么类型是调用这个方法的时候决定

  • TypeScrip中泛型的案例详解

    2021-07-23 11:51:25

    泛型的定义// 需求一: 泛型 可以支持不特定的数据类型, 要求,传入的参数和返回参数一致// 这种方式虽然能实现传入和返回的参数一致,但是失去类型参数检验/*function getData(value: any): any {    return "success"}*/// 定义泛型解决需求一// T表示泛型(这里的大写字母可以随便定义,但一般默认为T) 具体什么类型是调用这个方法的时候决定

  • mybatis 运行时加载自定义mapper文件方式

    2021-07-22 18:53:24

    mybatis 运行时加载自定义mapper文件用mybatis一定要写mapper文件,这是使用mybatis的常识,但有时候应用需求,mapper文件中的节点需要动态生成,或者根据业务场景进行组装,那这个时候的SQL语句直接写在mapper文件显然不可取,又或者采用动态SQL完成,今天介绍一种方式,支行时加载自定义mapper配置文件。我首先介绍一种mapper文件存在的写法,也是大家常用的,

  • mybatis 运行时加载自定义mapper文件方式

    2021-07-22 18:53:24

    mybatis 运行时加载自定义mapper文件用mybatis一定要写mapper文件,这是使用mybatis的常识,但有时候应用需求,mapper文件中的节点需要动态生成,或者根据业务场景进行组装,那这个时候的SQL语句直接写在mapper文件显然不可取,又或者采用动态SQL完成,今天介绍一种方式,支行时加载自定义mapper配置文件。我首先介绍一种mapper文件存在的写法,也是大家常用的,

  • 使用Spring启动时运行自定义业务

    2021-07-22 18:51:16

    在Spring应用启动时运行自定义业务的场景很常见,但应用不当也可能会导致一些问题。基于Spring控制反转(Inverse of Control)功能用户几乎不用干预bean实例化过程,对于自定义业务则需要控制部分流程及容器,因此值得须特别关注。1. Spring启动时运行自定义业务我们不能简单包括自定义业务在bean的构造函数或在实例化任何对象之后调用方法,这些过程不由我们控制。请看示例:@C

  • 使用Spring启动时运行自定义业务

    2021-07-22 18:51:16

    在Spring应用启动时运行自定义业务的场景很常见,但应用不当也可能会导致一些问题。基于Spring控制反转(Inverse of Control)功能用户几乎不用干预bean实例化过程,对于自定义业务则需要控制部分流程及容器,因此值得须特别关注。1. Spring启动时运行自定义业务我们不能简单包括自定义业务在bean的构造函数或在实例化任何对象之后调用方法,这些过程不由我们控制。请看示例:@C

  • Mybatis中使用万能的Map传参实现

    2021-07-22 12:51:58

    在编程中,有可能遇到我们的实体类或者数据库中表的字段或参数过多的情况,那这时候用Map传参是比较理想的选择。Map的特性是键值对应的,只要确定了一个键key,那么值value可以是任何的数据,这样就可以在map内存中存入任何数据。下面例子演示在mybatis中结合Map实现基本的增删改查数据库表(fruits)结构:实体类:package com.pojo.pp1; import java.mat

  • Mybatis中使用万能的Map传参实现

    2021-07-22 12:51:58

    在编程中,有可能遇到我们的实体类或者数据库中表的字段或参数过多的情况,那这时候用Map传参是比较理想的选择。Map的特性是键值对应的,只要确定了一个键key,那么值value可以是任何的数据,这样就可以在map内存中存入任何数据。下面例子演示在mybatis中结合Map实现基本的增删改查数据库表(fruits)结构:实体类:package com.pojo.pp1; import java.mat

  • Java使用Semaphore对单接口进行限流

    2021-07-21 16:58:54

    目录一、实战说明1.1 效果说明1.2 核心知识点二、 环境搭建三、限流演示3.1 并发请求工具3.2 效果示例图一、实战说明1.1 效果说明本篇主要讲如何使用Semaphore对单接口进行限流,例如有如下场景a. A系统的有a接口主要给B系统调用,现在希望对B系统进行限流,例如处理峰值在100,超过100的请求快速失败b. 接口作为总闸入口,希望限制所有外来访问,例如某个房间只能同时100个玩家

  • Java使用Semaphore对单接口进行限流

    2021-07-21 16:58:54

    目录一、实战说明1.1 效果说明1.2 核心知识点二、 环境搭建三、限流演示3.1 并发请求工具3.2 效果示例图一、实战说明1.1 效果说明本篇主要讲如何使用Semaphore对单接口进行限流,例如有如下场景a. A系统的有a接口主要给B系统调用,现在希望对B系统进行限流,例如处理峰值在100,超过100的请求快速失败b. 接口作为总闸入口,希望限制所有外来访问,例如某个房间只能同时100个玩家

  • 使用Spring Boot实现操作数据库的接口的过程

    2021-07-21 16:58:51

    一、Spring Boot原理用户从页面前端,也就是我们所说的 view 层进行查询访问,进入到 controller 层找到对应的接口,接 着 controller 进行对 service 层进行业务功能的调用,service 要进入 dao 层查询数据,dao 层调用 mapper.xml 文件生成 sql 语句到数据库中进行查询二、实现过程2.1、准备数据库user表插入四条数据2.2、mo

  • 使用Spring Boot实现操作数据库的接口的过程

    2021-07-21 16:58:51

    一、Spring Boot原理用户从页面前端,也就是我们所说的 view 层进行查询访问,进入到 controller 层找到对应的接口,接 着 controller 进行对 service 层进行业务功能的调用,service 要进入 dao 层查询数据,dao 层调用 mapper.xml 文件生成 sql 语句到数据库中进行查询二、实现过程2.1、准备数据库user表插入四条数据2.2、mo

  • Pytest+request+Allure实现接口自动化框架

    2021-07-21 16:58:14

    目录前言:一、简单介绍二、代码结构与框架流程三、详细功能和使用说明四、Allure报告及Email五、后续优化前言:接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱。接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试。本次文章着重介绍第一种,功能性的接口自动化框架。一、简单介绍环境:Mac、Python 3,Pytest,Allure,

  • Pytest+request+Allure实现接口自动化框架

    2021-07-21 16:58:14

    目录前言:一、简单介绍二、代码结构与框架流程三、详细功能和使用说明四、Allure报告及Email五、后续优化前言:接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱。接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试。本次文章着重介绍第一种,功能性的接口自动化框架。一、简单介绍环境:Mac、Python 3,Pytest,Allure,

  • java实现在普通类中注入service或mapper

    2021-07-21 12:51:16

    普通类中注入service或mapper1、类加@Component注解2、注入需要引入的service  @Autowired  private UserService userService;3、建静态文件   private static UserService users;4、初始化方法  @PostConstruct  public void init() {      users= u

  • java实现在普通类中注入service或mapper

    2021-07-21 12:51:16

    普通类中注入service或mapper1、类加@Component注解2、注入需要引入的service  @Autowired  private UserService userService;3、建静态文件   private static UserService users;4、初始化方法  @PostConstruct  public void init() {      users= u

  • java设计模式--桥接模式详解

    2021-07-21 10:52:51

    目录引例桥接模式实战示例代码:总结引例需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如: 开机、关机、打电话)。先来说说一般解法:将不同手机类型继承父类手机,最后各个品牌再继承对应手机类型:弊端:乍一看没问题,但其实不易扩展(类爆炸),如果增加新的手机类型(比如新兴的折叠式),就需要增加各个手机品牌的类去继承(比如已继承智能手机的华为小

  • java设计模式--桥接模式详解

    2021-07-21 10:52:51

    目录引例桥接模式实战示例代码:总结引例需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如: 开机、关机、打电话)。先来说说一般解法:将不同手机类型继承父类手机,最后各个品牌再继承对应手机类型:弊端:乍一看没问题,但其实不易扩展(类爆炸),如果增加新的手机类型(比如新兴的折叠式),就需要增加各个手机品牌的类去继承(比如已继承智能手机的华为小

  • java设计模式--七大原则详解

    2021-07-19 16:56:17

    目录设计模式单一职责原则接口隔离原则依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则总结设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。打个比方就像盖大厦和小木屋,当功能简单,函数和代码少时,我们能较轻松的直接上手;但如果

  • java设计模式--七大原则详解

    2021-07-19 16:56:17

    目录设计模式单一职责原则接口隔离原则依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则总结设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。打个比方就像盖大厦和小木屋,当功能简单,函数和代码少时,我们能较轻松的直接上手;但如果

  • java设计模式--三种工厂模式详解

    2021-07-19 16:55:04

    目录简单工厂代码:1.产品接口2.产品接口实现子类3.简单工厂类4.调用工厂5.测试工厂方法代码:1.工厂接口2.工厂实现子类3.产品接口4.产品实现子类5.调用6.测试1.产品接口2.产品抽象子类-普通产品抽象工厂3.1产品抽象子类-魔法产品4.工厂接口5.工厂实现子类-普通工厂6.工厂实现子类-魔法工厂7.调用8.测试总结简单工厂简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由

  • java设计模式--三种工厂模式详解

    2021-07-19 16:55:04

    目录简单工厂代码:1.产品接口2.产品接口实现子类3.简单工厂类4.调用工厂5.测试工厂方法代码:1.工厂接口2.工厂实现子类3.产品接口4.产品实现子类5.调用6.测试1.产品接口2.产品抽象子类-普通产品抽象工厂3.1产品抽象子类-魔法产品4.工厂接口5.工厂实现子类-普通工厂6.工厂实现子类-魔法工厂7.调用8.测试总结简单工厂简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由

  • java设计模式--原型模式详解

    2021-07-19 16:54:29

    目录引例原型模式浅拷贝在原先Sheep类基础上实现Cloneable接口,重写clone方法。客户端调用Sheep类新添的Cow类客户端调用克隆深拷贝1.Cow类也实现Cloneable接口Sheep类的clone再添加调用cow的clone客户端调用1.Cow类实现序列化接口,不必实现Cloneable接口了2.在Sheep类实现序列化接口3.客户端调用总结引例问题:现在有一只羊(包含属性:名字

  • java设计模式--原型模式详解

    2021-07-19 16:54:29

    目录引例原型模式浅拷贝在原先Sheep类基础上实现Cloneable接口,重写clone方法。客户端调用Sheep类新添的Cow类客户端调用克隆深拷贝1.Cow类也实现Cloneable接口Sheep类的clone再添加调用cow的clone客户端调用1.Cow类实现序列化接口,不必实现Cloneable接口了2.在Sheep类实现序列化接口3.客户端调用总结引例问题:现在有一只羊(包含属性:名字

  • SpringCloud Config使用配置方法

    2021-07-19 14:53:58

    Config 介绍Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。构建配置中心配置中心服务端配置新建一个配置中心模块,且注册到eureka中,在其他服务的基础上增加如下配置pom文件增加配置服务端

  • SpringCloud Config使用配置方法

    2021-07-19 14:53:58

    Config 介绍Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。构建配置中心配置中心服务端配置新建一个配置中心模块,且注册到eureka中,在其他服务的基础上增加如下配置pom文件增加配置服务端

  • java设计模式--策略模式详解

    2021-07-19 12:54:10

    目录策略模式Demo代码:总结策略模式策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。用算法族分别封装起来,实现同一个接口,让他们之间可以互相替换,让算法的变化独立于使用算法的客户。    主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。    如何解决:将这些算法封装成一个一个的类,任意地

  • java设计模式--策略模式详解

    2021-07-19 12:54:10

    目录策略模式Demo代码:总结策略模式策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。用算法族分别封装起来,实现同一个接口,让他们之间可以互相替换,让算法的变化独立于使用算法的客户。    主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。    如何解决:将这些算法封装成一个一个的类,任意地

  • Mybatis查找返回Map,List集合类型的数据方式

    2021-07-19 10:51:10

    Mybatis查找返回Map,List集合类型的数据一、查找返回Bean对象的List集合基本与返回Bean对象没什么区别,resultType依然为Bean对象的全类名,只是接口中的方法类型要进行修改public List<Employee> getEmpListByEmail(String email);二、查询返回Bean对象的Map集合同样,resultType依然为Bean对象的全类名,

  • Mybatis查找返回Map,List集合类型的数据方式

    2021-07-19 10:51:10

    Mybatis查找返回Map,List集合类型的数据一、查找返回Bean对象的List集合基本与返回Bean对象没什么区别,resultType依然为Bean对象的全类名,只是接口中的方法类型要进行修改public List<Employee> getEmpListByEmail(String email);二、查询返回Bean对象的Map集合同样,resultType依然为Bean对象的全类名,

 795    1 2 3 4 5 6 7 8 9 10 下一页 尾页

分类点击榜

    栏目ID=0的表不存在(操作类型=0)

分类评论榜

    栏目ID=0的表不存在(操作类型=0)

微信扫一扫

易采站长站微信账号