• Java 多线程之间共享数据

    2021-10-27 18:51:24

    目录1、线程范围的共享变量2、使用Map实现线程范围内数据的共享3、ThreadLocal实现线程范围内数据的共享4、优化5、实例1、线程范围的共享变量多个业务模块针对同一个static变量的操作 要保证在不同线程中 各模块操作的是自身对应的变量对象public class ThreadScopeSharaData {    private static  int data = 0 ;    pu

  • Java 多线程之间共享数据

    2021-10-27 18:51:24

    目录1、线程范围的共享变量2、使用Map实现线程范围内数据的共享3、ThreadLocal实现线程范围内数据的共享4、优化5、实例1、线程范围的共享变量多个业务模块针对同一个static变量的操作 要保证在不同线程中 各模块操作的是自身对应的变量对象public class ThreadScopeSharaData {    private static  int data = 0 ;    pu

  • 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("测试函数")#可以将一个函数赋值给一个变量,

  • Go 中闭包的底层原理

    2021-10-27 16:49:11

    目录1. 什么是闭包2. 复杂的闭包场景3. 闭包的底层原理4. 迷题揭晓5. 再度变题6. 最后一个问题1. 什么是闭包一个函数内引用了外部的局部变量,这种现象,就称之为闭包。例如下面的这段代码中,adder 函数返回了一个匿名函数,而该匿名函数中引用了 adder 函数中的局部变量 sum ,那这个函数就是一个闭包。package main  import "fmt"  func adder(

  • Go 中闭包的底层原理

    2021-10-27 16:49:11

    目录1. 什么是闭包2. 复杂的闭包场景3. 闭包的底层原理4. 迷题揭晓5. 再度变题6. 最后一个问题1. 什么是闭包一个函数内引用了外部的局部变量,这种现象,就称之为闭包。例如下面的这段代码中,adder 函数返回了一个匿名函数,而该匿名函数中引用了 adder 函数中的局部变量 sum ,那这个函数就是一个闭包。package main  import "fmt"  func adder(

  • 解析C/C++值传递和址传递的区别

    2021-10-27 14:53:39

    C/C++的按值传递和按地址传递有明显不同,下面对他们作个区别:按值传递:在调用函数中将原函数的值拷贝一份过去被调用的函数,在被调用函数中对该值的修改不会影响原函数的值。按地址传递:在调用函数的时候将原函数的值所在的地址拷贝一份过去,被调用函数对这个地址所作的修改会影响原来的值。概述:首先我们要知道 “a的地址”和“a地址中的内容”的区别,数据是存放在内存中的,每一个变量都有一个内存地址, 变量的

  • 解析C/C++值传递和址传递的区别

    2021-10-27 14:53:39

    C/C++的按值传递和按地址传递有明显不同,下面对他们作个区别:按值传递:在调用函数中将原函数的值拷贝一份过去被调用的函数,在被调用函数中对该值的修改不会影响原函数的值。按地址传递:在调用函数的时候将原函数的值所在的地址拷贝一份过去,被调用函数对这个地址所作的修改会影响原来的值。概述:首先我们要知道 “a的地址”和“a地址中的内容”的区别,数据是存放在内存中的,每一个变量都有一个内存地址, 变量的

  • 全面理解Java中的引用传递和值传递

    2021-10-27 12:51:30

    目录1.基本类型和引用类型在内存中的保存2.变量的基本类型和引用类型的区别3.引用传递和值传递4.结论关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题,有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性,感兴趣的同学一起讨论。1.基本类型和引用类型在内存中的保存Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类

  • 全面理解Java中的引用传递和值传递

    2021-10-27 12:51:30

    目录1.基本类型和引用类型在内存中的保存2.变量的基本类型和引用类型的区别3.引用传递和值传递4.结论关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题,有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性,感兴趣的同学一起讨论。1.基本类型和引用类型在内存中的保存Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类

  • java高并发的volatile与Java内存模型详解

    2021-10-27 12:50:51

    public class Demo09 {    public static boolean flag = true;    public static class T1 extends Thread {        public T1(String name) {            super(name);        }        @Override        public v

  • java高并发的volatile与Java内存模型详解

    2021-10-27 12:50:51

    public class Demo09 {    public static boolean flag = true;    public static class T1 extends Thread {        public T1(String name) {            super(name);        }        @Override        public v

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

    2021-10-26 18:58:29

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

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

    2021-10-26 18:58:29

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

  • Python在游戏中的热更新实现

    2021-10-26 18:49:37

    目录介绍:原理:1.标准import2.reload函数实现:总结:介绍:热更新,就是在服务器不重启的的情况下,对游戏增加新的功能或者修复出现bug 的代码。游戏更新迭代速度快,催生了热更技术的需求,在我经历过的游戏项目中,无论是服务端还是客户端,版本的更新都是围绕着热更新,特别是现在游戏动辄几个G,每次让玩家下载完整的包不现实,随意游戏必须要支持热更。下面来谈一下客户端Python热更新的处理。

  • Python在游戏中的热更新实现

    2021-10-26 18:49:37

    目录介绍:原理:1.标准import2.reload函数实现:总结:介绍:热更新,就是在服务器不重启的的情况下,对游戏增加新的功能或者修复出现bug 的代码。游戏更新迭代速度快,催生了热更技术的需求,在我经历过的游戏项目中,无论是服务端还是客户端,版本的更新都是围绕着热更新,特别是现在游戏动辄几个G,每次让玩家下载完整的包不现实,随意游戏必须要支持热更。下面来谈一下客户端Python热更新的处理。

  • C++程序的五大内存分区实例详解

    2021-10-26 12:54:14

    目录1、栈内存区1.1、调用函数时通过栈来传递函数的参数值       1.2、线程占用的栈内存是有上限的2、堆内存区3、全局/静态内存区4、文字常量区5、程序代码区C++程序在运行时所占用的内存区域,一般可分为栈内存区、堆内存区、全局/静态内存区、文字常量内存区及程序代码区5大分区:下面使用日常开发中的编程实例,详细介绍一下这5个分区,以便大家能更深刻的理解这5大内存分区。1、栈内存区

  • C++程序的五大内存分区实例详解

    2021-10-26 12:54:14

    目录1、栈内存区1.1、调用函数时通过栈来传递函数的参数值       1.2、线程占用的栈内存是有上限的2、堆内存区3、全局/静态内存区4、文字常量区5、程序代码区C++程序在运行时所占用的内存区域,一般可分为栈内存区、堆内存区、全局/静态内存区、文字常量内存区及程序代码区5大分区:下面使用日常开发中的编程实例,详细介绍一下这5个分区,以便大家能更深刻的理解这5大内存分区。1、栈内存区

  • 解析iReport自定义行数分页的操作方法

    2021-10-26 12:50:58

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。iReport是一个能够创建复杂报表的开源项目。它100%使用Java语言编写。是目前全球最为流行的开源报表设计器。ireport默认都是自动分页数据超出页面长度就会自动分到下一页,但有时候业务需要一页只显示固定几行这时候就需要自定义条数了。下面看具体操作1:先在Vari

  • 解析iReport自定义行数分页的操作方法

    2021-10-26 12:50:58

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。iReport是一个能够创建复杂报表的开源项目。它100%使用Java语言编写。是目前全球最为流行的开源报表设计器。ireport默认都是自动分页数据超出页面长度就会自动分到下一页,但有时候业务需要一页只显示固定几行这时候就需要自定义条数了。下面看具体操作1:先在Vari

  • python算法练习之兔子产子(斐波那切数列)

    2021-10-26 12:49:25

    目录1.问题描述2.问题分析3.算法设计4.完整程序1.问题描述有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?2.问题分析兔子产子问题是一个有趣的古典数学问题,我们画一张表来找下兔子数的规律,如下表所示                        月数            小兔子对数

  • python算法练习之兔子产子(斐波那切数列)

    2021-10-26 12:49:25

    目录1.问题描述2.问题分析3.算法设计4.完整程序1.问题描述有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?2.问题分析兔子产子问题是一个有趣的古典数学问题,我们画一张表来找下兔子数的规律,如下表所示                        月数            小兔子对数

  • python的函数最详解

    2021-10-26 12:49:25

    目录一、函数入门1.概念2.定义函数的语法格式函数名形参列表返回值3.函数的文档(注释→help)4.举例二、函数的参数1.可变对象2.参数收集(不定个数的参数)3.解决一个实际问题4.参数收集(收集关键字参数)5.逆向参数收集(炸开参数)6.参数的内存管理7.函数中变量的作用域8.获取指定范围内的变量三、局部函数(函数的嵌套)四、函数的高级内容1.函数作为函数的形参2.使用函数作为返回值3.递归

  • python的函数最详解

    2021-10-26 12:49:25

    目录一、函数入门1.概念2.定义函数的语法格式函数名形参列表返回值3.函数的文档(注释→help)4.举例二、函数的参数1.可变对象2.参数收集(不定个数的参数)3.解决一个实际问题4.参数收集(收集关键字参数)5.逆向参数收集(炸开参数)6.参数的内存管理7.函数中变量的作用域8.获取指定范围内的变量三、局部函数(函数的嵌套)四、函数的高级内容1.函数作为函数的形参2.使用函数作为返回值3.递归

  • 详谈C语言指针

    2021-10-26 12:48:56

    #include<stdio.h>int main(){int a = 10;int b = 20;int* p = &a;//*定义指针变量*p = 100;//*间接访问,解引用,a = 100p = &b;//p保存b的地址*p = 200;//b = 200int** pp = &p;//对指针取地址,二级指针*pp = &a;//解一次引用,一级指针p保存的值,即a的地址**pp = 1

  • 详谈C语言指针

    2021-10-26 12:48:56

    #include<stdio.h>int main(){int a = 10;int b = 20;int* p = &a;//*定义指针变量*p = 100;//*间接访问,解引用,a = 100p = &b;//p保存b的地址*p = 200;//b = 200int** pp = &p;//对指针取地址,二级指针*pp = &a;//解一次引用,一级指针p保存的值,即a的地址**pp = 1

  • C语言指针必备基础全面覆盖

    2021-10-25 18:58:38

    目录前言一、指针是什么?1.数据在内存中的存储2.一个小的单元到底是多大?二、指针变量1.什么是指针变量2.指针类型3.指针类型的作用三、野指针1.什么是野指针2.野指针成因2.1. 指针未初始化2.2指针越界访问2.3指针指向的空间释放3.如何规避野指针四、指针运算1.指针±整数2.指针-指针五、指针和数组1.数组元素的指针2.通过指针引用数组元素六、二级指针七、指针数组最后前言指针是C语言中的

  • C语言指针必备基础全面覆盖

    2021-10-25 18:58:38

    目录前言一、指针是什么?1.数据在内存中的存储2.一个小的单元到底是多大?二、指针变量1.什么是指针变量2.指针类型3.指针类型的作用三、野指针1.什么是野指针2.野指针成因2.1. 指针未初始化2.2指针越界访问2.3指针指向的空间释放3.如何规避野指针四、指针运算1.指针±整数2.指针-指针五、指针和数组1.数组元素的指针2.通过指针引用数组元素六、二级指针七、指针数组最后前言指针是C语言中的

  • Java程序结构与常量变量难点解析

    2021-10-25 18:57:57

    目录前言一、java程序结构二、java程序的运行1.运行过程2.JVM是什么?三、常量与变量1. 计算机工作原理2.变量和类型3.变量的命名规则4.变量的作用范围总结前言新征程,进入java的学习。给自己定下一个铁律:学习,刷题。一、java程序结构下面先上一个最简单的java程序:public class HelloWorld{public static void main(String[]

  • Java程序结构与常量变量难点解析

    2021-10-25 18:57:57

    目录前言一、java程序结构二、java程序的运行1.运行过程2.JVM是什么?三、常量与变量1. 计算机工作原理2.变量和类型3.变量的命名规则4.变量的作用范围总结前言新征程,进入java的学习。给自己定下一个铁律:学习,刷题。一、java程序结构下面先上一个最简单的java程序:public class HelloWorld{public static void main(String[]

  • C语言结构体的全方面解读

    2021-10-25 18:57:56

    目录前言一、结构体的声明与定义1.结构体的声明2.结构成员的类型3.结构体的定义二、初始化结构体三、访问结构体成员四、结构体嵌套五、结构体指针六、结构体传参总结前言C语言提供了不同的数据类型,比如说int、float、double、char等,不同的类型决定了一个变量在内存中应该占据的空间以及表现形式。但是,当我们定义一个人的时候,人的不同属性就比较难用同一个数据类型来定义了,因为人的身高、年龄、

  • C语言结构体的全方面解读

    2021-10-25 18:57:56

    目录前言一、结构体的声明与定义1.结构体的声明2.结构成员的类型3.结构体的定义二、初始化结构体三、访问结构体成员四、结构体嵌套五、结构体指针六、结构体传参总结前言C语言提供了不同的数据类型,比如说int、float、double、char等,不同的类型决定了一个变量在内存中应该占据的空间以及表现形式。但是,当我们定义一个人的时候,人的不同属性就比较难用同一个数据类型来定义了,因为人的身高、年龄、

  • 初识JavaScript的基础

    2021-10-25 18:54:20

    目录一、JavaScript的书写位置二、JavaScript常用的输入输出语句1.浏览器弹出警告框:2.浏览器控制台打印输出信息:3.浏览器弹出输入框,让用户可以输入:三、变量1.变量的使用:2.读取输入的值(cin>>)3.JavaScript中数值的最大最小值、无穷4.使用isNaN来判断是否为数字5.typeof检测变量数据类型6.数据类型转换6.1转换为字符串6.2转化成数字型6.3转化

  • 初识JavaScript的基础

    2021-10-25 18:54:20

    目录一、JavaScript的书写位置二、JavaScript常用的输入输出语句1.浏览器弹出警告框:2.浏览器控制台打印输出信息:3.浏览器弹出输入框,让用户可以输入:三、变量1.变量的使用:2.读取输入的值(cin>>)3.JavaScript中数值的最大最小值、无穷4.使用isNaN来判断是否为数字5.typeof检测变量数据类型6.数据类型转换6.1转换为字符串6.2转化成数字型6.3转化

  • Spring中的PathVariable注释解析

    2021-10-25 16:50:24

    目录Spring的PathVariable注释例子多个@PathVariable批注@PathVariable vs @RequestParam结论使用@PathVariable的坑发现问题解决过程解决方案Spring的PathVariable注释就像@RequestParam一样,@PathVariable批注用于从HTTP request中提取数据。但是,它们略有不同。区别在于@Request

  • Spring中的PathVariable注释解析

    2021-10-25 16:50:24

    目录Spring的PathVariable注释例子多个@PathVariable批注@PathVariable vs @RequestParam结论使用@PathVariable的坑发现问题解决过程解决方案Spring的PathVariable注释就像@RequestParam一样,@PathVariable批注用于从HTTP request中提取数据。但是,它们略有不同。区别在于@Request

  • Python变量和数据类型详解

    2021-10-25 16:50:21

    目录1.Python变量和数据类型1.1Python基础数据类型字符串布尔值空值1.2Python定义变量的方法合法的变量名定义变量1.3Python的整数与浮点数取模运算地板除小数点位数1.4Python的布尔类型与运算或运算非运算短路计算1.5Python的字符串1.6Python中raw字符串与多行字符串1.7 Python的字符串format1.8Python的字符串编码1.9Python

  • Python变量和数据类型详解

    2021-10-25 16:50:21

    目录1.Python变量和数据类型1.1Python基础数据类型字符串布尔值空值1.2Python定义变量的方法合法的变量名定义变量1.3Python的整数与浮点数取模运算地板除小数点位数1.4Python的布尔类型与运算或运算非运算短路计算1.5Python的字符串1.6Python中raw字符串与多行字符串1.7 Python的字符串format1.8Python的字符串编码1.9Python

  • Java核心技术巩固篇之控制流程与大数值及数组详解

    2021-10-25 14:48:55

    目录1. 控制流程1.1 块作用域1.2 条件语句2. 大数值3. 数组3.1 命令行参数前言: 个人已经学习了一遍 Java,为了巩固基础查漏补缺,自己再看一遍核心卷。该文章主要补充了一些自己没有了解的、重要的、易忘记的知识点,所以并不是用来专门学习 Java 的文章,而是主要用来帮助大家巩固自己的内功的。如果大家想要看 Java 学习的文章,可以去我的 JavaSE 专栏,里面都是关于 Jav

  • Java核心技术巩固篇之控制流程与大数值及数组详解

    2021-10-25 14:48:55

    目录1. 控制流程1.1 块作用域1.2 条件语句2. 大数值3. 数组3.1 命令行参数前言: 个人已经学习了一遍 Java,为了巩固基础查漏补缺,自己再看一遍核心卷。该文章主要补充了一些自己没有了解的、重要的、易忘记的知识点,所以并不是用来专门学习 Java 的文章,而是主要用来帮助大家巩固自己的内功的。如果大家想要看 Java 学习的文章,可以去我的 JavaSE 专栏,里面都是关于 Jav

  • Ireport的安装与使用教程

    2021-10-25 12:00:14

    Ireport的安装及使用一、 安装ireport1.点击安装包,可以一直点击下一步,安装完成。2.安装完成后,要在如下安装目录下添加ojdbc14.jar。3.数据源的添加和修改(1)进入ireport,点击如下位置,可以添加数据源。(2)选择JDBC数据连接方式。选择第一个,点击下一步。(3)在如下界面中,编辑所要连接的数据库。在填写password时,右侧的save password要勾选上

  • Ireport的安装与使用教程

    2021-10-25 12:00:14

    Ireport的安装及使用一、 安装ireport1.点击安装包,可以一直点击下一步,安装完成。2.安装完成后,要在如下安装目录下添加ojdbc14.jar。3.数据源的添加和修改(1)进入ireport,点击如下位置,可以添加数据源。(2)选择JDBC数据连接方式。选择第一个,点击下一步。(3)在如下界面中,编辑所要连接的数据库。在填写password时,右侧的save password要勾选上

  • Python编程不要再使用print调试代码了

    2021-10-25 11:53:57

    目录1. 快速安装2. 简单案例3. 详细使用3.1 重定向到日志文件3.2 跟踪非局部变量值3.3 设置跟踪函数的深度3.4 设置调试日志的前缀3.5 设置最大的输出长度3.6 支持多线程调试模式3.7 自定义对象的格式输出给大家推荐本我自己写的电子书《PyCharm中文指南》,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来。有兴趣的可以看它的在线文档:http://pyc

  • Python编程不要再使用print调试代码了

    2021-10-25 11:53:57

    目录1. 快速安装2. 简单案例3. 详细使用3.1 重定向到日志文件3.2 跟踪非局部变量值3.3 设置跟踪函数的深度3.4 设置调试日志的前缀3.5 设置最大的输出长度3.6 支持多线程调试模式3.7 自定义对象的格式输出给大家推荐本我自己写的电子书《PyCharm中文指南》,把各种 PyCharm 的高效的使用技巧用GIF动态图的形式展示出来。有兴趣的可以看它的在线文档:http://pyc

  • Java 面向对象之继承篇详解原理与特点

    2021-10-24 19:54:21

    目录一、前言二、继承什么是继承呢?继承的好处与弊端继承的使用场景?继承的格式:继承的特点:重写的概念:super关键字super和this的比较一、前言前面我也们讲述了相关封装的,现在我们先认识的继承的概念和使用。二、继承什么是继承呢?继承在显示生活中也不少见,比如继承财产之类的,在我们java学习中也有类似的使用,继承者称作子类也叫派生类,被继承者称作父类、基类或超类,objec类是所有类的父类

  • Java 面向对象之继承篇详解原理与特点

    2021-10-24 19:54:21

    目录一、前言二、继承什么是继承呢?继承的好处与弊端继承的使用场景?继承的格式:继承的特点:重写的概念:super关键字super和this的比较一、前言前面我也们讲述了相关封装的,现在我们先认识的继承的概念和使用。二、继承什么是继承呢?继承在显示生活中也不少见,比如继承财产之类的,在我们java学习中也有类似的使用,继承者称作子类也叫派生类,被继承者称作父类、基类或超类,objec类是所有类的父类

  • 关于前端JavaScript ES6详情

    2021-10-24 19:51:47

    目录1、简介1.1 Babel 转码器1.2 polyfill2、let 和 const2.1 let2.2 const3、解构3.1 对象解构3.2 数组解构3.3 函数参数解构3.4 常见场景4、扩展4.1 字符串扩展4.2 函数扩展4.3 数组扩展4.4 对象扩展4.5 运算符扩展5、for…of6、小结1、简介ES6是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,

  • 关于前端JavaScript ES6详情

    2021-10-24 19:51:47

    目录1、简介1.1 Babel 转码器1.2 polyfill2、let 和 const2.1 let2.2 const3、解构3.1 对象解构3.2 数组解构3.3 函数参数解构3.4 常见场景4、扩展4.1 字符串扩展4.2 函数扩展4.3 数组扩展4.4 对象扩展4.5 运算符扩展5、for…of6、小结1、简介ES6是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,

  • python 标准库原理与用法详解之os.path篇

    2021-10-24 19:49:21

    os中的path查看源码会看到,在os.py中有这样几行if 'posix' in _names:    name = 'posix'    linesep = '\n'    from posix import *    #省略若干代码elif 'nt' in _names:    from nt import *    try:        from nt import _exit

  • python 标准库原理与用法详解之os.path篇

    2021-10-24 19:49:21

    os中的path查看源码会看到,在os.py中有这样几行if 'posix' in _names:    name = 'posix'    linesep = '\n'    from posix import *    #省略若干代码elif 'nt' in _names:    from nt import *    try:        from nt import _exit

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

分类点击榜

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

分类评论榜

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

微信扫一扫

易采站长站微信账号