精华内容
下载资源
问答
  • 一级反向代理:就是从A站配置到B服务器站 二级反向代理:就是在B站服务器基础上再分到C服务器站 1.设置httpd.conf 打开Apache24/conf文件夹下的httpd.conf设置文件,找到一下几行把前面的注释‘#’删除 ...

     

    一级反向代理:就是从A站配置到B服务器站

    二级反向代理:就是在B站服务器基础上再分到C服务器站

    1.设置httpd.conf

    打开Apache24/conf文件夹下的httpd.conf设置文件,找到一下几行把前面的注释‘#’删除
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_connect_modulemodules/mod_proxy_connect.so
    LoadModule proxy_ftp_modulemodules/mod_proxy_ftp.so
    LoadModuleproxy_http_modulemodules/mod_proxy_http.so

    (Ps:很多人都会注释LoadModuleproxy_balancer_modulemodules/mod_proxy_balancer.so,然而这个是做负载均衡用的一个功能,单纯做反向代理的话,不需要用这个,而且取消了这里的注释不进行相应的设置的话,会导致apache服务无法开启)
    然后找到
    Include conf/extra/httpd-vhosts.conf
    这一行前面的注释‘#’也删除,引入这个文件

    apache配置一级反向代理,在a站服务器上进行配置

    <VirtualHost *:80>

    ServerName 您的A站域名

    ProxyPassMatch ^/news(.*)$  b站ip:b站端口/news$1

    ProxyPassMatch ^/news(.*)/$ b站ip:b站端口/news$1
    ProxyPass /news b站ip:b站端口/news
    ProxyPassReverse /news b站ip:b站端口/news

    </VirtualHost>

    apache在一级反向代理的基础上配置二级反向代理,在b站服务器上进行配置

     

    <VirtualHost *:80>

    ServerName 您的b站ip

    ProxyPassMatch ^/newsaa(.*)$  c站ip:c站端口/newsaa$1

    ProxyPassMatch ^/newsaa(.*)/$ c站ip:c站端口/news$1
    ProxyPass /newsaa c站ip:c站端口/newsaa
    ProxyPassReverse /newsaa c站ip:c站端口/newsaa

    </VirtualHost>

    apache还有更多的功能,比如配置多目录反向代理管理等等

    以上就是在目录news下分级newsaa到c服务器的实现配置,未来智库(https://www.7428.cn)提供帮助和二级目录程序服务。  https://www.7428.cn/fml/fml.html

     

    展开全文
  • Hibernate一级缓存和二级缓存详解

    万次阅读 多人点赞 2014-10-14 09:02:38
    一、一级缓存二级缓存的概念解释 (1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个 session(一定要同一个session)又做了同一个操作,...

    一、一级缓存二级缓存的概念解释

    (1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个

    session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据;

    (2)二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory

    创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库;

    (3)Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理

    的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓

    存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存;


    二、一级缓存和二级缓存的比较


    (1)第一级缓存 第二级缓存 存放数据的形式相互关联的持久化对象 对象的散装数据 缓存的范围事务范围,每个事务都有单独的第一级

    缓存进程范围或集群范围,缓存被同一个进程或集群范围内的所有事务共享并发访问策略由于每个事务都拥有单独的第一级缓存,不

    会出现并发问题,无需提供并发访问策略由于多个事务会同时访问第二级缓存中相同数据,因此必须提供适当的并发访问策略,来保

    证特定的事务隔离级别数据过期策略没有提供数据过期策略。

    (2)处于一级缓存中的对象永远不会过期,除非应用程序显式清空缓存或者

    清除特定的对象必须提供数据过期策略,如基于内存的缓存中的对象的最大数目,允许对象处于缓存中的最长时间,以及允许对象处

    于缓存中的最长空闲时间物理存储介质内存内存和硬盘。

    (3)对象的散装数据首先存放在基于内存的缓存中,当内存中对象的数目达到数

    据过期策略中指定上限时,就会把其余的对象写入基于硬盘的缓存中。

    (4)缓存的软件实现在Hibernate的Session的实现中包含了缓存的

    实现由第三方提供,Hibernate仅提供了缓存适配器(CacheProvider)。用于把特定的缓存插件集成到Hibernate中。

    (5)启用缓存的方式

    只要应用程序通过Session接口来执行保存、更新、删除、加载和查询数据库数据的操作,Hibernate就会启用第一级缓存,把数据库

    中的数据以对象的形式拷贝到缓存中,对于批量更新和批量删除操作,如果不希望启用第一级缓存,可以绕过Hibernate API,直接

    通过JDBC API来执行指操作。

    (6)用户可以在单个类或类的单个集合的粒度上配置第二级缓存。如果类的实例被经常读但很少被修改,就

    可以考虑使用第二级缓存。

    (7)只有为某个类或集合配置了第二级缓存,Hibernate在运行时才会把它的实例加入到第二级缓存中。

    用户管理缓存的方式第一级缓存的物理介质为内存,由于内存容量有限,必须通过恰当的检索策略和检索方式来限制加载对象的数目。

    Session的 evit()方法可以显式清空缓存中特定对象,但这种方法不值得推荐。第二级缓存的物理介质可以是内存和硬盘,因此第二

    级缓存可以存放大量的数据,数据过期策略的maxElementsInMemory属性值可以控制内存中的对象数目。

    (8)管理第二级缓存主要包括两个方面:选择需要使用第二级缓存的持久类,设置合适的并发访问策略:选择缓存适配器,设置合适的数据过期策略。


    三、 一级缓存的管理


    (1)当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或

    filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,

    Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj)

    :从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象。

    (2)save、update、saveOrupdate、load、list、iterate、lock会向一级缓存存放数据;

    save 案例:
    	//添加一个学生
    			Student student=new Student();
    			student.setName("小东");
    			
    			s.save(student);//放入一级缓存
    			
    			//我马上查询
    			Student stu2=(Student) s.get(Student.class, student.getId()); //select
    			System.out.println("你刚刚加入的学生名字是"+stu2.getName());

    (3)什么操作会从一级缓存取数据get、load、list

     

    get / load 会首先从一级缓存中取,如没有.再有不同的操作[get 会立即向数据库发请求,而load 会返回一个代理对象,直到用户真的去使用数据,才会向数据库发请求

    //查询45号学生
    		
    			Student stu=(Student) s.get(Student.class, 45);
    			
    			System.out.println("|||||||||||||||||||");
    			
    			String hql="from Student where id=45";
    			
    			
    			Student stu2=(Student) s.createQuery(hql).uniqueResult();
    			
    			System.out.println(stu2.getName());

    从上面的案例,我们看出 query.list() query.uniueResut() 不会从一级缓取数据但是query.list 或者query.uniqueRestu() 会向一级缓存放数据的.

    注意:

    ① 一级缓存不需要配置,就可以使用,它本身没有保护机制,所以我们程序员要考虑这个问题,我们可以同 evict 或者 clear来清除session缓存中对象. evict 是清除一个对象,clear是清除所有的sesion缓存对象

    ② session级缓存中对象的生命周期session关闭后,就自动销毁.

    ③ 我们自己用HashMap来模拟一个Session缓存,加深对缓存的深入.

    四、Hibernate二级缓存的管理


    1. Hibernate二级缓存策略的一般过程如下:

    1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。

    2) 把获得的所有数据对象根据ID放入到第二级缓存中。

    3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。

    4) 删除、更新、增加数据的时候,同时更新缓存。

    Hibernate二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。

    5) 二级缓存的对象可能放在内存,也可能放在磁盘.


    2. 什么样的数据适合存放到第二级缓存中? 

    1) 很少被修改的数据 

    2) 不是很重要的数据,允许出现偶尔并发的数据 

    3) 不会被并发访问的数据 

    4) 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。

    3. 不适合存放到第二级缓存的数据? 

    1) 经常被修改的数据 

    2) 财务数据,绝对不允许出现并发 

    3) 与其他应用共享的数据。

    4. 常用的缓存插件 Hibernater二级缓存是一个插件,下面是几种常用的缓存插件:

    ◆EhCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,对Hibernate的查询缓存提供了支持。

    ◆OSCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,提供了丰富的缓存数据过期策略,对Hibernate的查询

    缓存提供了支持。

    ◆SwarmCache:可作为群集范围内的缓存,但不支持Hibernate的查询缓存。

    ◆JBossCache:可作为群集范围内的缓存,支持事务型并发访问策略,对Hibernate的查询缓存提供了支持。


    5. 配置Hibernate二级缓存的主要步骤:

    1) 选择需要使用二级缓存的持久化类,设置它的命名缓存的并发访问策略。这是最值得认真考虑的步骤。

    2) 选择合适的缓存插件,然后编辑该插件的配置文件。

    <property name="hbm2ddl.auto">update</property>
    	<!-- 启动二级缓存 -->
    	<property name="cache.use_second_level_cache">true</property>
    	<!-- 指定使用哪种二级缓存 -->
    	<property name="cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
    	<mapping resource="com/hsp/domain/Department.hbm.xml" />
    	<mapping resource="com/hsp/domain/Student.hbm.xml" />
    	<!-- 指定哪个domain启用二级缓存 
    	特别说明二级缓存策略:
    	1. read-only
    	2. read-write
    	3. nonstrict-read-write
    	4. transcational
    	-->
    	<class-cache class="com.hsp.domain.Student" usage="read-write"/>

    3)可以把oscache.properties文件放在 src目录下,这样你可以指定放入二级缓存的对象capacity 大小默认1000

    6.使用二级缓存:

    // TODO Auto-generated method stub
    		//通过获取一个sesion,让hibernate框架运行(config->加载hibernate.cfg.xml)
    		Session s=null;
    		Transaction tx=null;
    		
    		try {
    			//我们使用基础模板来讲解.
    			s=HibernateUtil.openSession();
    			tx=s.beginTransaction();
    			
    			//查询45号学生
    		
    			Student stu1=(Student) s.get(Student.class, 45);//45->一级缓存		
    			System.out.println(stu1.getName());
    			
    			
    			tx.commit();
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    			if(tx!=null){
    				tx.rollback();
    			}
    		}finally{
    			
    			if(s!=null && s.isOpen()){
    				s.close();
    			}
    		}
    		
    		System.out.println("*********************************");
    		try {
    			//我们使用基础模板来讲解.
    			s=HibernateUtil.openSession();
    			tx=s.beginTransaction();
    			
    			//查询45号学生
    		
    			Student stu1=(Student) s.get(Student.class, 45);	
    			System.out.println(stu1.getName());
    			
    			Student stu3=(Student) s.get(Student.class, 46);	
    			System.out.println(stu3.getName());
    				tx.commit();
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    			if(tx!=null){
    				tx.rollback();
    			}
    		}finally{
    			
    			if(s!=null && s.isOpen()){
    				s.close();
    			}
    		}
    		
    		//完成一个统计,统计的信息在Sessfactory
    		//SessionFactory对象.
    		Statistics statistics= HibernateUtil.getSessionFactory().getStatistics();
    		System.out.println(statistics);
    		System.out.println("放入"+statistics.getSecondLevelCachePutCount());
    		System.out.println("命中"+statistics.getSecondLevelCacheHitCount());
    		System.out.println("错过"+statistics.getSecondLevelCacheMissCount());

    在配置了二级缓存后,请大家要注意可以通过 Statistics,查看你的配置命中率高不高



    展开全文
  • // 由于session的实现是SqlSessionTemplate的动态代理实现 // 它已经在代理类内执行了session.close(),所以无需手动关闭session return session.selectOne("dao.userdao.selectUserByID", id); } }
  • 简介 前两天遇到开设子域名的问题,也就是二级域名,所以便开始对这方面进行了解。一直以为 www 开头的...需求:假设现在已有个顶级域名abc.com,一般要求以 www 开头作为二级域名进行备案。服务器上运行着两个...

    简介

    前两天遇到开设子域名的问题,也就是二级域名,所以便开始对这方面进行了解。一直以为 www 开头的域名就是顶级域名,那真是太天真~~以 QQ 为例,顶级域名是 qq.com,而www.qq.com其实是二级域名,而mail.qq.com也是二级域名,与www.qq.com是同级的。

    • 需求:假设现在已有一个顶级域名abc.com,一般要求以 www 开头作为二级域名进行备案。服务器上运行着两个服务:
    1. SpringBoot项目,一个主站服务,端口 443(此处是 HTTPS 默认端口);
    2. Node.js项目,一个简单的 OCR 小屁项目,端口 8888(随便指定的端口);
    • 目标:
    1. SpringBoot项目,访问地址:www.abc.com
    2. Node.js项目,访问地址:ocr.abc.com

    第一步 域名云解析,添加 A 记录

    阿里云、腾讯云、华为云等都可以进行云解析;这里以阿里云、腾讯云为例。

    • 阿里云解析

    2019-04-30-NginxAliA.png

    • 腾讯云解析

    2019-04-30-NginxTencentA.png

    第二步 在 Nginx 中完成反向代理配置

    • 编辑 Nginx 配置文件,在 nginx.conf 文件中新增server节点如下(通过vi /etc/nginx/nginx.conf修改)
    server {
        listen 80;
        server_name www.abc.com;
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $http_host;
            proxy_pass https://127.0.0.1:443;
        }
    }
    
    server {
        listen 80;
        server_name ocr.abc.com;
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $http_host;
            proxy_pass http://127.0.0.1:8888;
        }
    }
    

    第三步 验证二级域名

    切记,验证之前先要使用nginx -s reload刷新 Nginx 配置。

    • 访问www.abc.com,实现对SpringBoot主站项目的访问;
    • 访问地址:ocr.abc.com,实现对Node.js其他项目的访问;

    Notes:

    1. 文中所使用的顶级域名abc.com纯属虚构;
    2. 建议80端口(HTTP默认端口)分配给Nginx来监听,便于实现对入站请求的统一拦截;
    3. 在云解析添加 A 记录后,可能需要等几分钟,添加的二级域名解析才会生效,一般为 10 分钟左右;

    至此,基于 Nginx 的反向代理,实现了二级域名的转发,下一篇再去了解下Nginx负载均衡


    If you have any questions or any bugs are found, please feel free to contact me.

    Your comments and suggestions are welcome!

    展开全文
  • 利用Bitvise SSH Client设置二级代理

    千次阅读 2017-09-26 23:28:26
    浏览器设置代理很多时候需要我们自己设置浏览器代理上网,也就是说就是通过代理服务器上网,那我简单说下使用浏览器设置代理,以搜狗...二级代理不知道自己是不是理解错“二级”了,反正就是两次代理,姑且就说是二级吧

    浏览器设置代理

    很多时候需要我们自己设置浏览器代理上网,也就是说就是通过代理服务器 上网,那我简单说下使用浏览器设置代理,以搜狗为例。首先找到设置代理的位置工具->代理设置->添加新代理,然后就是输入代理名字,这个名字无所谓的,填写代理IP以及端口,一般不需要登录,最后保存关闭,上网就ok了。(有点废话,就当是给自己复习了)

    二级代理

    不知道自己是不是理解错“二级”了,反正就是两次代理,姑且就说是二级吧。二级代理的话就没有那么容易了,需要用到一些工具,这里以bitivise ssh Client为例。安装跳过。(图网上找的)

    Host 为第一跳也就是一级代理的IP,然后是端口,右边为代理服务器认证。

    Mou icon
    不需要的服务可以关闭
    Mon icon
    设置Services这里是绑定IP以及端口,这里表示将代理服务器的端口映射到你本地设置的端口,这里端口是7070,记一下,待会有用。在别人看来,来访IP是那个服务器的并不是你的,而是代理服务器的。
    Mon icon
    我们重新打开一个bitvise ssh client 作为第二跳代理,点击Proxy,如图选择Use Proxy然后IP为127.0.0.1,端口为刚刚设置的7070端口,其他步骤同上。(注意:监听不再是127.0.0.1,修改为0.0.0.0,表示监听所有而不只是本地,端口为7071)最后先后login就ok 了。
    Mon icon
    第一次写博客,不喜勿喷,有错误的地方还请多多指教。

    展开全文
  • Centos7下Nginx代理和二级域名配置

    千次阅读 2018-07-06 16:55:56
    Centos7下Nginx代理和二级域名配置nginx的安装请阅读上篇文章。、nginx的反向代理配置编辑nginx的配置文件(找到自己的配置文件)vim /usr/local/nginx/conf/nginx.confuser root; #这里是nginx运行的用户 ...
  • Squid配置二级代理(父代理)

    千次阅读 2018-10-31 14:15:56
    如果您希望Squid成为代理层次结构的部分,或者您只是希望Squid不直接从Web服务器获取内容,而是间接从另代理获取内容,那么请阅读如何执行此操作。您可以使用cache_peer指令添加Squid将要求内容的父代理。此外...
  • Mitmproxy详细教程及二级代理

    千次阅读 2020-04-27 19:26:48
    文章目录简介-参考安装Linux下的安装Mac下的安装安装数字证书windowsmacandroid and iosweb安装操作命令pip install mitmproxy启动参数拦截pc请求设置示例代码配置二级代理方法修改X2yyy配置文件拦截文件启动文件...
  • Java两种动态代理JDK动态代理和CGLIB动态代理

    万次阅读 多人点赞 2018-08-07 15:33:35
    代理模式是23种设计模式的种,他是指个对象A通过持有另个对象B,可以具有B同样的行为的模式。为了对外开放协议,B往往实现了个接口,A也会去实现接口。但是B是“真正”实现类,A则比较“虚”,他借用了B的...
  • 在这里,内网根据IP范围分成两部分,部分为可上网区,部分为不可上网区,如果不可上网区的电脑通过可上网区的某台电脑的“中转”而上网,那么我们就可以说这台“中转”电脑就是(非法)二级代理(图1中的B)。...
  • 【MyBatis】查询缓存(一级缓存和二级缓存)

    万次阅读 多人点赞 2017-02-27 14:01:56
    一级缓存:是SQlSession级别的缓存。在操作数据库时需要构造SqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的SqlSession之间的缓存数据区域(HashMap)是互相不影响的。  二级缓存:是...
  • 今天前后端分离项目,部署时需要通过二级目录来区分前端后端,参考了网上文章。 前端是静态页面,当客户访问http://localhost/ ,当访问路径是 / \color{red}{/} / 时,访问的是前端页面。 后端服务接口,url 是 ...
  • Nginx 反向代理 虚拟二级目录

    万次阅读 2019-04-16 13:18:30
    “ 在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给...第种: location /proxy/ { proxy_passhttp://127.0.0.1/; } 代理到U...
  • 1. 先解释下什么是反向代理?...2. 如何设置二级域名nginx反向代理 步骤: 解析二级域名 首先得去解析二级域名,去你买的域名那解析如图 这个jenkins就是我解析的二级域名(直接访问那
  • mybatis的缓存机制(一级缓存二级缓存刷新缓存)mybatis整合ehcache
  • linux下二级代理软件desproxy教程

    千次阅读 2007-08-05 21:28:00
    desproxy的功能就是一级代理+端口映射对本地指定的一个端口的请求会经过代理送到远程的主机远程主机是代理服务器的话就实现了二级代理的功能:) 怎样获得Desproxy?http://desproxy.sourceforge.net/页面最下面右...
  • mybatis中一级缓存和二级缓存

    万次阅读 2019-05-05 16:28:46
    1.一级缓存 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响...
  • MyBatis实战(5)缓存机制(一级缓存、二级缓存)

    千次阅读 多人点赞 2019-11-30 09:49:01
    这篇博客对Mybatis中的一级缓存和二级缓存做了比较详细的阐述,并有完整的代码实现。
  • MyBatis缓存分为一级缓存和二级缓存 一级缓存 MyBatis的一级缓存指的是在一个Session域内,session为关闭的时候执行的查询会根据SQL为key被缓存(跟mysql缓存一样,修改任何参数的值都会导致缓存失效) 1)单独使用...
  • 无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。...如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印IP地...
  • 正向代理与反向代理区别

    千次阅读 2015-12-24 17:22:41
    本文转载自 : 正向代理与反向代理区别一、正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像个跳板,简单的说,我是个用户,我访问不了某网站,但是我能访问代理服务器,这个代理服务器呢,他能...
  • #user nobody; user www www; worker_processes 8; error_log /usr/local/nginx/logs/error.log crit; #error_log logs/error.log notice;...#error_log logs/error.log info;...pid /usr/local/nginx/n
  • Mybatis 实现原理之 一二级缓存

    千次阅读 2018-10-15 15:19:20
    本片文章讲述的是Mybatis是如何无感知的让用户使用到一二级缓存,以及一二级缓存的实现细节实现原理。 结论:Mybatis 下文通过代码DEMO的展示, 以及源码的解说介绍JDK动态代理Mybatis对其的应用。 ...
  • 设置反向代理泛目录(二级目录)的方法 1.设置httpd.conf 打开Apache24/conf文件夹下的httpd.conf设置文件,找到一下几行把前面的注释‘#’删除 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_...
  • 前序最近在家里的服务器上装了大堆的服务器软件,大多数都需要Web网站访问的,比如:Gitlab、...简介Nginx 主要的作用就是反向代理和负载均衡了,一般在互联网公司内,作为负载均衡比较多。但是别忘了,它的
  • 去域名服务商增加二级域名解析 2.修改nginx.conf文件  增加对应的server server {  listen 80;  server_name music.awesomehan.com ;   // 匹配的二级域名地址  location / {  proxy_set_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 237,912
精华内容 95,164
关键字:

一级代理和二级代理的区别