RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-450423

Yan Zaitsau's questions

Martin Hope
Yan12
Asked: 2024-01-09 23:46:55 +0000 UTC

请建议一种查询算法,用于根据代码按组计算不同对象的数量并按性别在视图中显示

  • 5

我有 4 个表,其中 3 个涉及多对多关系,第四个涉及主要两个实体:

主题,始终创建

ID 姓名 地址ID 性别 有对象
75675 安娜 4 F 错误的
75677 山姆 7 米 真的
75678 托马 3 F 真的

客体,与主体一起创建,但不是必需的。

ID 姓名 地址ID 是假的
3434 房子 3 错误的
3435 停車處 3 真的
3433 店铺 6 错误的

sub_obj,链接表的中间体

ID 子id 对象 ID
1 75678 3434
2 75677 3433
3 75675 3435

地址,其id为前两位

ID 代码 城市 国家 大陆
1 100 100 100 罗马 意大利 欧洲
2 100 130 234 威尼斯 意大利 欧洲
3 100 200 343 巴黎 法国 欧洲
4 100 200 643 布雷斯特 法国 欧洲
5 100 200 244 好的 法国 欧洲
6 200 340 244 巴西利亚 巴西 南美洲
7 200 250 244 里约热内卢 巴西 南美洲

假设地址代码将发送到视图(按大陆分组的空值,或按国家/地区报告的大陆代码,或按城市分组的国家/地区代码),并取决于它(按世界) 、大陆和国家)将计算欧洲国家中按地址名称按性别的主题和主题的总和

名称_区域 Count_male subject_total Count_male subject_with_object 计数_男性主体_with_object 按男性计数对象 Count_female subject_total Count_female_subject_with_object 按女性计数对象
意大利 0 0 0 0 0 0
法国 0 0 0 2 1 1

按大陆

名称_区域 Count_male subject_total Count_male subject_with_object 计数_男性主体_with_object 按男性计数对象 Count_female subject_total Count_female_subject_with_object 按女性计数对象
欧洲 0 0 0 2 1 1
南美洲 1 1 1 0 0 0

如何查找某个洲的国家并按其分组,如果已知该国家的第一位数字对应于后端发送的洲号(x00000000)的第一位,并且将来可以计算 obj 和 subj 相对于这个国家的数量

欧洲国家(输入参数100000000)

名称_区域 Count_male subject_total Count_male subject_with_object 计数_男性主体_with_object 按男性计数对象 Count_female subject_total Count_female_subject_with_object 按女性计数对象
意大利 0 0 0 0 0 0
法国 0 0 0 2 1 1
sql
  • 1 个回答
  • 35 Views
Martin Hope
Yan Zaitsau
Asked: 2022-09-05 22:13:45 +0000 UTC

在heroku上部署java项目时出错

  • 0

将项目推送到heroku时,我在maven中遇到错误:

$ git push heroku 枚举对象:718,完成。计数对象:100% (718/718),完成。使用多达 12 个线程的 Delta 压缩压缩对象:100% (439/439),完成。写入对象:100% (718/718),1.16 MiB | 1005.00 KiB/s,完成。总计 718(增量 309),重用 415(增量 165),打包重用 0 远程:压缩源文件...完成。远程:构建源:远程:远程:-----> 在 Heroku-20 堆栈上构建远程:-----> 确定要用于此应用程序远程的构建包:-----> Java 应用程序检测到远程: -----> 安装 OpenJDK 1.8... 远程完成: -----> 执行 Maven 远程: $ ./mvnw -DskipTests clean dependency:list install remote: [INFO] Scanning for projects... .. 。偏僻的:
[INFO] BUILD FAILURE 远程:[INFO] ---------------------------------------------------- -------------------------------- 远程:[INFO] 总时间:10.547 秒远程:[INFO] 完成时间: 2022-07-05T13:53:18Z 远程:[信息]------------------------------------ ------------------------------------远程:[错误]无法执行目标org.apache.maven .plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project springboot_touristsite: Fatal error compile: invalid target release: 11 -> [Help 1] remote:
[ERROR] remote: [ERROR] 查看错误的完整堆栈跟踪,使用 -e 开关重新运行 Maven。远程:[错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。偏僻的:
[ERROR] remote: [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章:remote:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 远程:远程:!错误:无法使用 Maven 远程构建应用程序:
很抱歉,此构建失败!如果您在应用程序代码中找不到问题,请远程:请提交工单以便我们提供帮助:https ://help.heroku.com/远程:远程:!推送被拒绝,无法编译 Java 应用程序。远程:远程:!推送失败的远程:验证部署...远程:远程:!推送到 springbootouristsite 被拒绝。远程:到 https://git.heroku.com/springboottouristsite.git ![远程拒绝] master -> master (pre-receive hook denied) 错误:未能将一些参考推送到“https://git.heroku.com/springboottouristsite.git”

我很尴尬的是正在下载jdk 1.8:

远程:-----> 安装 OpenJDK 1.8... 完成

所以我在application.properties中设置了java.runtime.version=11,我在项目结构中也设置了11,在rum文件中,但是还是下载了1.8

<?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"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zaitsava</groupId>
<artifactId>springboot_touristsite</artifactId>
<version>1.0</version>
<name>springboot_touristsite</name>
<description>springboot_touristsite</description>

    <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
<dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>net.sourceforge.nekohtml</groupId>
        <artifactId>nekohtml</artifactId>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                    <configuration>
                        <additionalProperties>
                            <encoding.source>${project.build.sourceEncoding}</encoding.source>
                            <encoding.reporting>${project.reporting.outputEncoding}</encoding.reporting>
                            <java.source>${maven.compiler.source}</java.source>
                            <java.target>${maven.compiler.target}</java.target>
                        </additionalProperties>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我知道 pom 文件中有一些不喜欢的地方,尤其是在 maven 插件中,但是究竟需要更改什么?

java maven
  • 1 个回答
  • 26 Views
Martin Hope
Yan Zaitsau
Asked: 2022-07-13 23:37:56 +0000 UTC

如何使用 Spring Boot+JPA 获取当前用户

  • 0

在这个视频的帮助下,我正在尝试制作一个类似的购物车。在这个阶段,我试图在用户的购物篮中获取有关产品(游览)的信息。已达到 35 分钟 在此处输入链接说明

我有一个连接旅游和用户的模型

@Entity 
@Table(name = "cart_items") public class CartItem {  
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY)  
private int id;
     
@ManyToOne  @JoinColumn(name = "tour_id")  
private Tour tour;
     
@ManyToOne  @JoinColumn(name = "user_id")  
private User user;
@Column(name = "order_date")  private Date date=new Date(); 
//getters and setters 
}

普通用户模型

package com.zaitsava.springboot_touristsite.entity;

import javax.persistence.*;
import java.util.Set;


@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "firstname")
    private String firstname;

    @Column(name = "lastname")
    private String lastname;

    @Column(name = "patronymic")
    private String patronymic;

    @Column(name = "email")
    private String email;

    @Column(name = "phone")
    private String phone;

    @Column(name = "password")
    private String password;

    @Column(name = "active")
    private int active;

    @ManyToMany(cascade=CascadeType.ALL)
    @JoinTable(name="user_role", joinColumns=@JoinColumn(name="user_id"),
            inverseJoinColumns=@JoinColumn(name="role_id"))
    private Set<Role> roles;
    //gettes and setters
}

服务

import com.zaitsava.springboot_touristsite.entity.CartItem;
import com.zaitsava.springboot_touristsite.entity.User;
import com.zaitsava.springboot_touristsite.repository.CartItemRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ShoppingCartService {
    @Autowired
    private CartItemRepository cartItemRepository;

    public List<CartItem> cartItemList(User user){
        return cartItemRepository.findByUser(user);
    };
}

和存储库:

package com.zaitsava.springboot_touristsite.repository;

import com.zaitsava.springboot_touristsite.entity.CartItem;
import com.zaitsava.springboot_touristsite.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface CartItemRepository extends JpaRepository<CartItem,Integer> {
    public List<CartItem> findByUser(User user);
}

一切都通过测试很好地添加并写入数据库 在此处输入图像描述

说到产品显示控制器,问题就开始了。因为作者的实现用不同的方法扩展了User类,所以无法在控制器中获取当前用户。我试着做

package com.zaitsava.springboot_touristsite.controller;

import com.zaitsava.springboot_touristsite.entity.CartItem;
import com.zaitsava.springboot_touristsite.entity.CurrentUser;
import com.zaitsava.springboot_touristsite.entity.User;
import com.zaitsava.springboot_touristsite.service.ShoppingCartService;
import com.zaitsava.springboot_touristsite.service.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;


import java.util.List;

@Controller
public class ShoppingCartController {
    @Autowired
    private ShoppingCartService cartService;
    @Autowired
    private UserServiceImpl userService;

    @GetMapping("/cart")
    public String showCart(Model model,@CurrentUser User user){

        if(user==null) System.out.println("User is null");

        List<CartItem> cartItemList=cartService.cartItemList(user);
        model.addAttribute("cartItems",cartItemList);
        return "user/cart";
    }


}

通过当前用户的注解

package com.zaitsava.springboot_touristsite.entity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import java.lang.annotation.*;

@Target({ElementType.PARAMETER, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@AuthenticationPrincipal
public @interface CurrentUser {}

但是,我得到一个空用户,即使我通过 id 为 4 的用户登录。我也尝试通过参数

 public String showCart(Model model,Principal principal){
        Authentication authentication = (Authentication) principal;
        User user= (User) authentication.getPrincipal();
        //остальной код
}

但后来我收到有关不正确类型转换的错误

更新 了添加的 Spring Security 设置

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

    @Autowired
    private DataSource dataSource;

    private final String USERS_QUERY = "select email, password, active from user where email=?";
    private final String ROLES_QUERY = "select u.email, r.role from user u inner join user_role ur on (u.id = ur.user_id) inner join role r on (ur.role_id=r.role_id) where u.email=?";

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication()
                .usersByUsernameQuery(USERS_QUERY)
                .authoritiesByUsernameQuery(ROLES_QUERY)
                .dataSource(dataSource)
                .passwordEncoder(bCryptPasswordEncoder);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/").permitAll()
                .antMatchers("/user/cart").authenticated()
                .antMatchers("/login").permitAll()
                .antMatchers("/signup").permitAll()
                .antMatchers("favicon.ico").permitAll()
               /* .antMatchers("/admin/**").access("hasRole('ADMIN')")*/
                .antMatchers("/main/**").hasAuthority("ADMIN").anyRequest()
                .authenticated().and().csrf().disable()
                .formLogin().loginPage("/login").permitAll().failureUrl("/login?error=true")
                .defaultSuccessUrl("/")
                .usernameParameter("email")
                .passwordParameter("password")
                .and().logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/")
                .and().rememberMe()
                .tokenRepository(persistentTokenRepository())
                .tokenValiditySeconds(60 * 60)
                .and().exceptionHandling().accessDeniedPage("/access_denied");

    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring()
                .antMatchers("/images/**")
                .antMatchers("/fonts/**");
    }

    @Bean
    public PersistentTokenRepository persistentTokenRepository() {
        JdbcTokenRepositoryImpl db = new JdbcTokenRepositoryImpl();
        db.setDataSource(dataSource);

        return db;
    }
}

用户控制器:

package com.zaitsava.springboot_touristsite.controller;


import javax.validation.Valid;

import com.zaitsava.springboot_touristsite.entity.User;
import com.zaitsava.springboot_touristsite.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/signup")
    public ModelAndView signup() {
        ModelAndView model = new ModelAndView();
        User user = new User();
        model.addObject("user", user);
        model.setViewName("user/signup");
        return model;
    }

    @PostMapping("/signup")
    public ModelAndView createUser(@Valid User user, BindingResult bindingResult) {
        ModelAndView model = new ModelAndView();
        User userExists = userService.findUserByEmail(user.getEmail());

        if(userExists != null) {
            bindingResult.rejectValue("email", "error.user", "User with this email exists");
        }
        if(bindingResult.hasErrors()) {
            model.setViewName("user/signup");
        } else {
            userService.saveUser(user);
            model.addObject("msg", "User succesful register!");
            model.addObject("user", new User());
            model.setViewName("redirect:home/main");
        }

        return model;
    }



    @GetMapping("/home/main")
    public ModelAndView home() {
        ModelAndView model = new ModelAndView();
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        User user = userService.findUserByEmail(auth.getName());

        model.addObject("userName", "Hello,"+user.getFirstname() + " " + user.getLastname()+" "+user.getPatronymic());
        model.setViewName("redirect:/");
        return model;
    }

    @GetMapping("/access_denied")
    public ModelAndView accessDenied() {
        ModelAndView model = new ModelAndView();
        model.setViewName("errors/access_denied");
        return model;
    }
}

我不明白我需要做什么才能让控制器正常工作

spring-boot spring-security
  • 1 个回答
  • 106 Views
Martin Hope
Yan Zaitsau
Asked: 2022-06-28 20:38:22 +0000 UTC

循环中的 Thymeleaf 显示一条记录的重复项

  • 0

我的数据库中有 5 条 Tour 实体记录。以此类推,我创建了一个类

@Entity
@Table(name="tours")
public class Tour {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "title")
    private String title;
    @Column(name = "description")
    private String description;
    @Column(name = "startTime",length=20)
    private String startTime;
    @Column(name = "endTime",length=20)
    private String endTime;
    @Column(name = "price")
    private double price;

//геттеры и сеттеры

}

我想用 Thymeleaf 将它们显示在 html 页面中。创建了一个控制器:

    @Controller
    public class MainController {
        @Autowired
        private TourRepository tourRepository;
    
        @GetMapping("/")
        public String mainPage(Model model) {    
           
        List<Tour> tourList=tourRepository.findAll();    
        model.addAttribute("tours",tourList);
    
        return "home/main";
        }    

        @RequestMapping("/main")
        public String main() {
   
        return "redirect:/";}
}

和存储库:

public interface TourRepository extends JpaRepository<Tour,Integer> {  
}

应用程序属性:

# hibernate configurations
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update


# thumeleaf configurations
spring.thymeleaf.mode= HTML
spring.thymeleaf.cache=false

我试图以表格的形式通过循环传递字段的值

<table>
    <thead>
        <tr>
            <th>Title</th>
            <th>Price</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each ="tour : ${tours}">
            <td th:utext="${tour.title}">...</td>
            <td th:utext="${tour.price}">...</td>
        </tr>
    </tbody>
</table>

但是,由于某种原因,它显示了数据库中第一条记录的 5 个重复项。

在此处输入图像描述

在 IDE 本身中,变量带有红色下划线

在此处输入图像描述

谁能解释为什么会发生这种情况以及如何解决?

spring-boot thymeleaf
  • 1 个回答
  • 31 Views
Martin Hope
Yan Zaitsau
Asked: 2022-07-04 23:34:20 +0000 UTC

Java中的投票系统,为对象分配投票

  • 0

我正在为最终项目的任何问题开发一个用于投票公寓的多线程应用程序。

创建 Apartment 类后,我不太明白如何制作,以便随机生成支持/反对/弃权的答案并写入类本身。

应用程序本身将由应用程序版主运行,即 他使用昵称\密码检查进入应用程序,输入建议和解决方案。从投票参与者的角度来看,目前只需要生成响应(它们应该是机器人),以便稍后可以将它们用作投票结果的计算。

public enum Choice {
    NO, // 0
    YES, // 1
    DKNOW // 2
}
public class RandomChoice {

    Random rand = new Random();

    public Choice ask() {
        int prob = (int) (100 * rand.nextDouble());
        if (prob < 10) {
            return Choice.DKNOW; // 10%
        } else if (prob < 55) {
            return Choice.YES; // 55%
        } else {
            return Choice.NO; // 35%
        }
    }
}
public class AskMe {

    public static void answer(Choice result) {
        switch (result) {
            case NO:
                System.out.println("Против");
                break;
            case YES:
                System.out.println("За");
                break;
            case DKNOW:
                System.out.println("Boздержаться");
                break;
        }
    }
}
java
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5