作者归档:admin

Spring 统一接口后过滤自定义字段

继上一篇文章 Spring 实现 RESTful 统一返回值和错误处理 之后, 我又遇到了一个需求, 那就是如何过滤有些不需要的字段, 比如我现在要获取一个用户的所有资料, 但是不包括密码和邮箱, 那我是可以写一条 SQL 语句去避开他的, 但是如果我明天不想要密码, 但是我想要邮箱了呢, 那我再写一条?
这当然也没什么问题, 只是如果变换多了之后写起来还是挺蛋疼的
继续阅读

Spring 实现 RESTful 统一返回值和错误处理

背景

最近在折腾一些有的没的, 实现一些接口, 而且我最近有些完美主义, 明明能花几分钟写完的代码却是喜欢花更多是时间去看看别人怎么写的, 然后再借鉴(ctrl+v)
至于 RESTful 的介绍可以看 维基百科 上的介绍

接口设计

我的设计目前还是比较简单

/user/register
/user/delete
/user/{id}/detail
/user/changePassword

总的来说就是增删查改
这个增删查改我们用 4 种提交方式来对应他们
分别是POST, DELETE, GET, PUT
而我这里采用的状态码分别是

继续阅读

C++ 容器 父类转子类 子类转父类

众所周知,C++中父类子类的互转可以使用 dynamic_cast 进行类型转换,但是可能会丢失一些数据

如果是容器里面的父类,子类互转的话,就要用到 reinterpret_cast 进行转换,同样的也会丢失一些数据

先随便声明 3 个类

class A {
public:
    int a = 1;
};

class B : A {
public:
    int b = 2;
};

class C : B {
public:
    int c = 2;
};

继续阅读

WordPress SM.MS 外链图床插件

 

该插件基于 sm.ms api编写而成,感谢smms无偿提供的图床服务

由于本站的可使用容量似乎不太够了,所以就想写个图床插件,以前是用的七牛云,现在七牛云不备份不给用了….

想写这个已经很久了,由于拖延并没有投入开发,现在算是大概写到了能用的地步

继续阅读

记一次dfs的优化 && 洛谷1074 靶形数独题解

题目链接:https://www.luogu.org/problemnew/show/P1074

题面:

题目描述

小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低。但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶形数独”,作为这两个孩子比试的题目。

靶形数独的方格同普通数独一样,在 9 格宽×9 格高的大九宫格中有9 个 3 格宽×3 格高的小九宫格(用粗黑色线隔开的)。在这个大九宫格中,有一些数字是已知的,根据这些数字,利用逻辑推理,在其他的空格上填入 1 到 9的数字。每个数字在每个小九宫格内不能重复出现,每个数字在每行、每列也不能重复出现。但靶形数独有一点和普通数独不同,即每一个方格都有一个分值,而且如同一个靶子一样,离中心越近则分值越高。(如图)

上图具体的分值分布是:最里面一格(黄色区域)为 10 分,黄色区域外面的一圈(红色区域)每个格子为9分,再外面一圈(蓝色区域)每个格子为8 分,蓝色区域外面一圈(棕色区域)每个格子为7分,最外面一圈(白色区域)每个格子为6分,如上图所示。比赛的要求是:每个人必须完成一个给定的数独(每个给定数独可能有不同的填法),而且要争取更高的总分数。而这个总分数即每个方格上的分值和完成这个数独时填在相应格上的数字的乘积的总和

总分数即每个方格上的分值和完成这个数独时填在相应格上的数字的乘积的总和。如图,在以下的这个已经填完数字的靶形数独游戏中,总分数为 2829。游戏规定,将以总分数的高低决出胜负。

由于求胜心切,小城找到了善于编程的你,让你帮他求出,对于给定的靶形数独,能够得到的最高分数。

输入输出格式

输入格式:

一共 9 行。每行9个整数(每个数都在 0-9 的范围内),表示一个尚未填满的数独方格,未填的空格用“0”表示。每两个数字之间用一个空格隔开。

输出格式:

输出共 1 行。输出可以得到的靶形数独的最高分数。如果这个数独无解,则输出整数-1

继续阅读

flutter全屏背景图(包括appbar和状态栏)以及沉浸状态栏的设置

设置背景图还是挺简单的,直接container里加个decration然后加个图片就行了,就像这样

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Container(
            decoration: BoxDecoration(
          image: DecorationImage(
            image: NetworkImage(
                'https://img.zcool.cn/community/0372d195ac1cd55a8012062e3b16810.jpg'),
            fit: BoxFit.cover,
          ),
        )));
  }
}

继续阅读