• 使用spring的restTemplate注意点

    2021-10-28 11:58:26

    目录使用spring的restTemplate注意点下面看spring的RestTemplate的源码spring的RestTemplate使用指南一:restTemplate简介二:restTemplate的配置方法三:restUtil工具类四:使用示例五:总结使用spring的restTemplate注意点spring的restTemplate可以向一个url发送请求并接收服务器端的响应信息。

  • 使用spring的restTemplate注意点

    2021-10-28 11:58:26

    目录使用spring的restTemplate注意点下面看spring的RestTemplate的源码spring的RestTemplate使用指南一:restTemplate简介二:restTemplate的配置方法三:restUtil工具类四:使用示例五:总结使用spring的restTemplate注意点spring的restTemplate可以向一个url发送请求并接收服务器端的响应信息。

  • Spring使用RestTemplate和Junit单元测试的注意事项

    2021-10-28 11:54:27

    目录使用RestTemplate和Junit单元测试的注意事项springboot中的单元测试MockMVC和TestRestTemplate的使用与对比MockMVCRestTemlate使用RestTemplate和Junit单元测试的注意事项对于之前写单元测试注入的的service,这样单元测试也可以跑通。springboot中的单元测试但是如果现在送RestTemplate,代码如下:运行

  • Spring使用RestTemplate和Junit单元测试的注意事项

    2021-10-28 11:54:27

    目录使用RestTemplate和Junit单元测试的注意事项springboot中的单元测试MockMVC和TestRestTemplate的使用与对比MockMVCRestTemlate使用RestTemplate和Junit单元测试的注意事项对于之前写单元测试注入的的service,这样单元测试也可以跑通。springboot中的单元测试但是如果现在送RestTemplate,代码如下:运行

  • SpringBoot开发技巧之使用AOP记录日志示例解析

    2021-10-28 11:51:28

    目录为什么要用AOP?常用的工作场景必须知道的概念AOP 的相关术语Spring 中使用注解创建切面实战应用-利用AOP记录日志定义日志信息封装统一日志处理切面为什么要用AOP?答案是解耦!Aspect Oriented Programming 面向切面编程。解耦是程序员编码开发过程中一直追求的。AOP也是为了解耦所诞生。具体思想是:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业

  • SpringBoot开发技巧之使用AOP记录日志示例解析

    2021-10-28 11:51:28

    目录为什么要用AOP?常用的工作场景必须知道的概念AOP 的相关术语Spring 中使用注解创建切面实战应用-利用AOP记录日志定义日志信息封装统一日志处理切面为什么要用AOP?答案是解耦!Aspect Oriented Programming 面向切面编程。解耦是程序员编码开发过程中一直追求的。AOP也是为了解耦所诞生。具体思想是:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业

  • 解析JavaScript中 querySelector 与 getElementById 方法的区别

    2021-10-28 11:50:13

    目录1. 概述1.1 querySelector() 和 querySelectorAll() 的用法1.2 getElement(s)Byxxxx 的用法2. 区别2.1 getElement(s)Byxxxx 获取的是动态集合,querySelector 获取的是静态集合2.2 接收的参数不同2.3 浏览器兼容不同2.4 querySelector 属于 W3C 中的 Selectors AP

  • 解析JavaScript中 querySelector 与 getElementById 方法的区别

    2021-10-28 11:50:13

    目录1. 概述1.1 querySelector() 和 querySelectorAll() 的用法1.2 getElement(s)Byxxxx 的用法2. 区别2.1 getElement(s)Byxxxx 获取的是动态集合,querySelector 获取的是静态集合2.2 接收的参数不同2.3 浏览器兼容不同2.4 querySelector 属于 W3C 中的 Selectors AP

  • Java多线程之同步工具类CyclicBarrier

    2021-10-28 11:48:58

    目录1 CyclicBarrier方法说明2 CyclicBarrier实例3 CyclicBarrier源码解析CyclicBarrier构造函数await方法nextGeneration的源码breakBarrier源码isBroken方法reset方法getNumberWaiting方法前言:CyclicBarrier是一个同步工具类,它允许一组线程互相等待,直到达到某个公共屏障点。与Cou

  • Java多线程之同步工具类CyclicBarrier

    2021-10-28 11:48:58

    目录1 CyclicBarrier方法说明2 CyclicBarrier实例3 CyclicBarrier源码解析CyclicBarrier构造函数await方法nextGeneration的源码breakBarrier源码isBroken方法reset方法getNumberWaiting方法前言:CyclicBarrier是一个同步工具类,它允许一组线程互相等待,直到达到某个公共屏障点。与Cou

  • Java多线程 Callable、Future 和FutureTask

    2021-10-27 18:49:34

    目录1 Callable介绍2 Future介绍2.1 在Future接口中声明方法2.2 Future提供了三种功能3 FutureTask4 Future和FutureTask的使用4.1 使用Callable+Future获取执行结果4.2 使用Callable+Future获取执行结果前言:创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有

  • Java多线程 Callable、Future 和FutureTask

    2021-10-27 18:49:34

    目录1 Callable介绍2 Future介绍2.1 在Future接口中声明方法2.2 Future提供了三种功能3 FutureTask4 Future和FutureTask的使用4.1 使用Callable+Future获取执行结果4.2 使用Callable+Future获取执行结果前言:创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有

  • python基础之并发编程(一)

    2021-10-27 18:49:18

    目录一、进程(Process)二、线程(Thread)三、并发编程解决方案:四、多线程实现 (两种)1、第一种 函数方法2、第二种 类方法包装五、守护线程与子线程1、线程在分法有:2、守护线程六、锁七、死锁八、信号量(Semaphore)九、事件(Event)十、线程通信-队列1使用的队列的好处:2Queue模块中的常用方法:十一、生产者和消费者模式总结一、进程(Process)是一个具有一定独立

  • python基础之并发编程(一)

    2021-10-27 18:49:18

    目录一、进程(Process)二、线程(Thread)三、并发编程解决方案:四、多线程实现 (两种)1、第一种 函数方法2、第二种 类方法包装五、守护线程与子线程1、线程在分法有:2、守护线程六、锁七、死锁八、信号量(Semaphore)九、事件(Event)十、线程通信-队列1使用的队列的好处:2Queue模块中的常用方法:十一、生产者和消费者模式总结一、进程(Process)是一个具有一定独立

  • python基础之并发编程(二)

    2021-10-27 18:49:16

    目录一、多进程的实现方法一方法二:二、使用进程的优缺点1、优点2、缺点三、进程的通信1、Queue 实现进程间通信2、Pipe 实现进程间通信(一边发送send(obj),一边接收(obj))四、Manager管理器五、进程池总结一、多进程的实现方法一# 方法包装   多进程from multiprocessing import Processfrom time import sleepdef f

  • python基础之并发编程(二)

    2021-10-27 18:49:16

    目录一、多进程的实现方法一方法二:二、使用进程的优缺点1、优点2、缺点三、进程的通信1、Queue 实现进程间通信2、Pipe 实现进程间通信(一边发送send(obj),一边接收(obj))四、Manager管理器五、进程池总结一、多进程的实现方法一# 方法包装   多进程from multiprocessing import Processfrom time import sleepdef f

  • python 面向对象三大特征详解

    2021-10-27 18:49:07

    目录一、面向对象三大特征介绍1、封装(隐藏)2、继承3、多态二、继承1、语法格式2、类成员的继承和重写3、super()获得父类定义4、设计模式_工厂模式实现5、设计模式_单例模式实现总结一、面向对象三大特征介绍Python 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。1、封装(隐藏)隐藏对象的属性和实现细节,只对外提供必要的方法。通过“私有属性、私有方法”的方式,实

  • python 面向对象三大特征详解

    2021-10-27 18:49:07

    目录一、面向对象三大特征介绍1、封装(隐藏)2、继承3、多态二、继承1、语法格式2、类成员的继承和重写3、super()获得父类定义4、设计模式_工厂模式实现5、设计模式_单例模式实现总结一、面向对象三大特征介绍Python 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。1、封装(隐藏)隐藏对象的属性和实现细节,只对外提供必要的方法。通过“私有属性、私有方法”的方式,实

  • Python装饰器代码详解

    2021-10-27 16:50:17

    目录一、理解装饰器二、装饰器原型1、不带参数的装饰器2.带参数的被装饰的函数3.带参数的装饰器4.使用类作为装饰器5.使用对象作为装饰器6.多层装饰器的嵌套总结一、理解装饰器所有东西都是对象(函数可以当做对象传递)由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。def function_one():    print("测试函数")#可以将一个函数赋值给一个变量,

  • Python装饰器代码详解

    2021-10-27 16:50:17

    目录一、理解装饰器二、装饰器原型1、不带参数的装饰器2.带参数的被装饰的函数3.带参数的装饰器4.使用类作为装饰器5.使用对象作为装饰器6.多层装饰器的嵌套总结一、理解装饰器所有东西都是对象(函数可以当做对象传递)由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。def function_one():    print("测试函数")#可以将一个函数赋值给一个变量,

  • Python 正则表达式详解

    2021-10-27 16:50:14

    目录1.正则表达式是什么2.1用正则表达式2.2匹配原理2.3常用函数总结1.正则表达式是什么很简单就是一种字符串匹配,eg: 比如你在注册账户时我们需要对用户的用户名判断是否合法,这时候就需要对用户输入的检索,或者给你5-11位的数字你确定他是否为qq号。2.1用正则表达式import re2.2匹配原理import  remsg = '董小姐桥边姑娘南方小姐'pattern = re.comp

  • Python 正则表达式详解

    2021-10-27 16:50:14

    目录1.正则表达式是什么2.1用正则表达式2.2匹配原理2.3常用函数总结1.正则表达式是什么很简单就是一种字符串匹配,eg: 比如你在注册账户时我们需要对用户的用户名判断是否合法,这时候就需要对用户输入的检索,或者给你5-11位的数字你确定他是否为qq号。2.1用正则表达式import re2.2匹配原理import  remsg = '董小姐桥边姑娘南方小姐'pattern = re.comp

  • Java多线程基础

    2021-10-27 16:49:37

    目录一、线程二、创建多线程的方式1、继承Thread类实现多线程2、实现Runnable接口方式实现多线程3、Callable接口创建线程三、线程的生命周期与状态四、线程的执行顺序1、定时器2、线程的互斥与同步通信3、线程同步通信技术一、线程什么是线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。什么是多线程:多线程指在单个程序中可以同时运行多个不同的

  • Java多线程基础

    2021-10-27 16:49:37

    目录一、线程二、创建多线程的方式1、继承Thread类实现多线程2、实现Runnable接口方式实现多线程3、Callable接口创建线程三、线程的生命周期与状态四、线程的执行顺序1、定时器2、线程的互斥与同步通信3、线程同步通信技术一、线程什么是线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。什么是多线程:多线程指在单个程序中可以同时运行多个不同的

  • 2021 年的人工智能现状:语言模型、医疗保健

    2021-10-27 16:14:29

    人工智能正在人类活动和市场投资的两个关键领域扩展——健康和语言。《2021 年 AI 现状》报告的作者Nathan Benaich 和 Ian  Hogarth讨论了这些领域的 AI 应用和研究 。去年,Benaich 和 Hogarth  证明生物学正在经历人工智能时代。他们解释说,这反映了已发表研究的巨大变化,从根本上摒弃了对生物实验进行某种统计分析的老派方法。新方法在

  • 2021 年的人工智能现状:语言模型、医疗保健

    2021-10-27 16:14:29

    人工智能正在人类活动和市场投资的两个关键领域扩展——健康和语言。《2021 年 AI 现状》报告的作者Nathan Benaich 和 Ian  Hogarth讨论了这些领域的 AI 应用和研究 。去年,Benaich 和 Hogarth  证明生物学正在经历人工智能时代。他们解释说,这反映了已发表研究的巨大变化,从根本上摒弃了对生物实验进行某种统计分析的老派方法。新方法在

  • Java Socket上的Read操作阻塞问题详解

    2021-10-27 14:54:17

    目录Socket上的Read操作阻塞问题从Socket上读取对端发过来的数据一般有两种方法总结一下,有这么几个方法Socket编程---read方法阻塞问题Socket上的Read操作阻塞问题从Socket上读取对端发过来的数据一般有两种方法1)按照字节流读取        BufferedInputStream in = new BufferedInputStream(socket.getInp

  • Java Socket上的Read操作阻塞问题详解

    2021-10-27 14:54:17

    目录Socket上的Read操作阻塞问题从Socket上读取对端发过来的数据一般有两种方法总结一下,有这么几个方法Socket编程---read方法阻塞问题Socket上的Read操作阻塞问题从Socket上读取对端发过来的数据一般有两种方法1)按照字节流读取        BufferedInputStream in = new BufferedInputStream(socket.getInp

  • 关于Android输入法弹窗bug的优雅处理

    2021-10-27 14:52:27

    目录前言别人家的产品处理实现掘金的输入框弹窗实现weChat聊天背景不会被压缩的问题解决方法方法一方法二方法三总结前言最近发现一个bug,在项目中的某个界面,每当弹出输入法时,背景总是随着输入法上移,导致背景被压缩,虽然不打紧,但发现这个bug之后极其不愉快。别人家的产品处理随手拿了一部手机举例搜索框应该在顶部,这样即使弹出输入法也不会遮挡掘金评论类似的输入框在底部,输入内容时,输入框跟随输入法上

  • 关于Android输入法弹窗bug的优雅处理

    2021-10-27 14:52:27

    目录前言别人家的产品处理实现掘金的输入框弹窗实现weChat聊天背景不会被压缩的问题解决方法方法一方法二方法三总结前言最近发现一个bug,在项目中的某个界面,每当弹出输入法时,背景总是随着输入法上移,导致背景被压缩,虽然不打紧,但发现这个bug之后极其不愉快。别人家的产品处理随手拿了一部手机举例搜索框应该在顶部,这样即使弹出输入法也不会遮挡掘金评论类似的输入框在底部,输入内容时,输入框跟随输入法上

  • Java Apache Shiro安全框架快速开发详解流程

    2021-10-27 13:00:08

    目录一、Shiro简介:shiro功能:Shiro架构(外部)Shiro架构(内部)二、快速入门1.拷贝案例2.分析代码三、SpringBoot 集成 Shiro1.编写测试环境2.使用1.登录拦截2.用户认证四、Shiro整合Mybatis五、实现请求授权六、Shiro整合Thymeleaf一、Shiro简介:Apache Shiro是一个Java的安全(权限)框架。Shiro 可以非常容易的开

  • Java Apache Shiro安全框架快速开发详解流程

    2021-10-27 13:00:08

    目录一、Shiro简介:shiro功能:Shiro架构(外部)Shiro架构(内部)二、快速入门1.拷贝案例2.分析代码三、SpringBoot 集成 Shiro1.编写测试环境2.使用1.登录拦截2.用户认证四、Shiro整合Mybatis五、实现请求授权六、Shiro整合Thymeleaf一、Shiro简介:Apache Shiro是一个Java的安全(权限)框架。Shiro 可以非常容易的开

  • Java SpringBoot详解集成以及配置Swagger流程

    2021-10-27 12:58:43

    一、swagge简介前后端分离:后端︰后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】前后端通过API进行交互前后端相对独立且松耦合产生问题:前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发解决方法:首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险前后端分离: 前端测试后端接口:postman后端提供接口,需要

  • Java SpringBoot详解集成以及配置Swagger流程

    2021-10-27 12:58:43

    一、swagge简介前后端分离:后端︰后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】前后端通过API进行交互前后端相对独立且松耦合产生问题:前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发解决方法:首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险前后端分离: 前端测试后端接口:postman后端提供接口,需要

  • java高并发之线程的基本操作详解

    2021-10-27 12:58:05

    目录新建线程终止线程线程中断等待(wait)和通知(notify)挂起(suspend)和继续执行(resume)线程等待线程结束(join)和谦让(yeild)总结新建线程新建线程很简单。只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可。Thread thread1 = new Thread1();t1.start();那么线程start()之后,会干什么呢?线程有

  • java高并发之线程的基本操作详解

    2021-10-27 12:58:05

    目录新建线程终止线程线程中断等待(wait)和通知(notify)挂起(suspend)和继续执行(resume)线程等待线程结束(join)和谦让(yeild)总结新建线程新建线程很简单。只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可。Thread thread1 = new Thread1();t1.start();那么线程start()之后,会干什么呢?线程有

  • java中对象的比较equal、Comparble、Comparator的区别

    2021-10-27 12:56:18

    目录关于对象值相等的比较三种比较风格覆写基类的equal关于对象值大于、等于、小于的比较–基于自然顺序(按照<小于号的形式)基于Comparble接口类的比较关于对象值大于、等于、小于的比较-- 基于比较器比较基于Comparator接口类的比较三种比较方式对比关于对象值相等的比较三种比较风格    比较身份:==,通过等号来比较身份    比较值:通过使用equals方法,它是Object这个祖

  • java中对象的比较equal、Comparble、Comparator的区别

    2021-10-27 12:56:18

    目录关于对象值相等的比较三种比较风格覆写基类的equal关于对象值大于、等于、小于的比较–基于自然顺序(按照<小于号的形式)基于Comparble接口类的比较关于对象值大于、等于、小于的比较-- 基于比较器比较基于Comparator接口类的比较三种比较方式对比关于对象值相等的比较三种比较风格    比较身份:==,通过等号来比较身份    比较值:通过使用equals方法,它是Object这个祖

  • Java中的复合数据类型

    2021-10-27 12:55:10

    目录1、Java字符串2、Java中的包装类3、Java容器ArrayListHashSetHashMap4、工具类StackQueue1、Java字符串在 Java 中字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中,默认情况下该包自动导入。String对象创建后不会被修改,当我们修改某个字符串对象实际上是将原引用指向了新创建的内存空间。并且相同的字符

  • Java中的复合数据类型

    2021-10-27 12:55:10

    目录1、Java字符串2、Java中的包装类3、Java容器ArrayListHashSetHashMap4、工具类StackQueue1、Java字符串在 Java 中字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中,默认情况下该包自动导入。String对象创建后不会被修改,当我们修改某个字符串对象实际上是将原引用指向了新创建的内存空间。并且相同的字符

  • java高并发的用户线程和守护线程详解

    2021-10-27 12:51:25

    目录程序只有守护线程时,系统会自动退出设置守护线程,需要在start()方法之前进行线程daemon的默认值总结守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程、JIT线程都是守护线程。与之对应的是用户线程,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作。如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。所以当系统只

  • java高并发的用户线程和守护线程详解

    2021-10-27 12:51:25

    目录程序只有守护线程时,系统会自动退出设置守护线程,需要在start()方法之前进行线程daemon的默认值总结守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程、JIT线程都是守护线程。与之对应的是用户线程,用户线程可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作。如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。所以当系统只

  • python中分组函数groupby和分组运算函数agg的使用

    2021-10-27 12:49:03

    目录groupby:agg:今天来介绍pandas中一个很有用的函数groupby,其实和hive中的groupby的效果是一样的,区别在于两种语言的写法问题。groupby在Python中的分组统计中很有用~groupby:首先创建数据:import pandas as pdimport numpy as npdf = pd.DataFrame({'A': ['a', 'b', 'a', 'c'

  • python中分组函数groupby和分组运算函数agg的使用

    2021-10-27 12:49:03

    目录groupby:agg:今天来介绍pandas中一个很有用的函数groupby,其实和hive中的groupby的效果是一样的,区别在于两种语言的写法问题。groupby在Python中的分组统计中很有用~groupby:首先创建数据:import pandas as pdimport numpy as npdf = pd.DataFrame({'A': ['a', 'b', 'a', 'c'

  • Java面向对象的封装特征深度解析

    2021-10-26 18:58:29

    目录面向对象三大特征封装private关键字——实现类封装访问器方法和更改器方法包——类的集合导入包从人的角度理解包不加访问权限——实现包封装总结在上一篇文章中,我们了解了面向对象的基础内容,这一篇将会更加深入地了解面向对象的特征。面向对象三大特征面向对象语言有三大特征:    封装    继承    多态封装对一个类实现封装,意味着限制其它类对该类数据的访问。简单来讲,封装就是隐藏数据,就是保护

  • Java面向对象的封装特征深度解析

    2021-10-26 18:58:29

    目录面向对象三大特征封装private关键字——实现类封装访问器方法和更改器方法包——类的集合导入包从人的角度理解包不加访问权限——实现包封装总结在上一篇文章中,我们了解了面向对象的基础内容,这一篇将会更加深入地了解面向对象的特征。面向对象三大特征面向对象语言有三大特征:    封装    继承    多态封装对一个类实现封装,意味着限制其它类对该类数据的访问。简单来讲,封装就是隐藏数据,就是保护

  • 详解Java CompletableFuture使用方法以及与FutureTask的区别

    2021-10-26 18:55:23

    目录futureTask 创建异步任务创建任务1. .supplyAsync2. .runAsync异步回调1. .thenApply2. .thenAccept3. .exceptionally4. .whenComplete组合处理总的来说简洁了FutureTask与线程池的配合使用没啥太大区别吧我觉得, 使用方法不一样, 多了一些方法 futureTask 创建异步任务        Fut

  • 详解Java CompletableFuture使用方法以及与FutureTask的区别

    2021-10-26 18:55:23

    目录futureTask 创建异步任务创建任务1. .supplyAsync2. .runAsync异步回调1. .thenApply2. .thenAccept3. .exceptionally4. .whenComplete组合处理总的来说简洁了FutureTask与线程池的配合使用没啥太大区别吧我觉得, 使用方法不一样, 多了一些方法 futureTask 创建异步任务        Fut

  • 一篇文章带你了解Java SpringMVC返回null

    2021-10-26 18:53:33

    目录1、回顾一下2、思考一个问题3、springmvc 的处理流程4、使用场景5、总结1、回顾一下大家有没有注意到,目前讲到的所有 controller 中的方法接收到请求之后,都是有返回值的,返回值主要有 2 种类型:1、 输出的是页面:也就是视图(会向客户端输出页面),此时方法的返回值可以是 String(视图名称)、ModelAndView(页面中有数据的情况)2、输出的是 json 格式的

  • 一篇文章带你了解Java SpringMVC返回null

    2021-10-26 18:53:33

    目录1、回顾一下2、思考一个问题3、springmvc 的处理流程4、使用场景5、总结1、回顾一下大家有没有注意到,目前讲到的所有 controller 中的方法接收到请求之后,都是有返回值的,返回值主要有 2 种类型:1、 输出的是页面:也就是视图(会向客户端输出页面),此时方法的返回值可以是 String(视图名称)、ModelAndView(页面中有数据的情况)2、输出的是 json 格式的

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

分类点击榜

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

分类评论榜

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

微信扫一扫

易采站长站微信账号