【实例简介】

1、首先保证计算机上已经成功安装SQL Server 2005。

2、将数据库文件附加到数据库中。

3、如果当前计算机装有多个SQL Server 2005实例,请在BookManageSystem目录下打开app.config程序文件,将程序数据库连接字符串localhost改为localhost\你的数据库实例名。如果仅有一个实例,就不用修改了。

4、编译运行即可。

管理员账户和密码:admin admin
读者账户和密码:user user

文件:590m.com/f/25127180-488083780-127562(访问密码:551685)

【实例截图】




以下内容无关:

-------------------------------------------分割线---------------------------------------------

方法日志打印
最近开发遇到的一个问题是关于日志打印。日志非常重要,通过查看日志,我们可以快速排查问题。
我们项目的整个系统内网关处做了拦截,能够看到前端传过来的日志,但是内部服务间调用,服务间的入参与出参看不到;还有,一些重要的方法如果要看到入参和出参,只能一个个去写log方法。
这种重复的工作非常适合使用切面来写一些小工具。下面是我写的小工具,下面方法几乎是搬运一位老哥写的博客,老哥的博客找不见了,sorry。

定义注释类
/**

  • @Description 打印参数

  • @Author lkb

  • @CreateDate: 2021/3/25
    /
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    public @interface MethodLog {
    }
    AOP 打印输入输出参数
    /
    *

  • @Description

  • @Author lkb

  • @CreateDate: 2021/3/25
    */
    @Aspect
    @Component
    @Slf4j
    public class MethodLogAspect {

    @Pointcut("@annotation(com…annotion.MethodLog)")
    public void pointCut(){}

    @Around(value = “pointCut()”)
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
    try{
    MethodSignature signature = (MethodSignature) joinPoint.getSignature();
    Method method = signature.getMethod();
    MethodLog annotation = method.getAnnotation(MethodLog.class);
    if (Objects.isNull(annotation)){
    try {
    return joinPoint.proceed();
    } catch (Throwable throwable) {
    log.error(“method proceed fail. e = {}”, throwable.getMessage(), throwable);
    throw throwable;
    }
    }else{
    String methodName = method.getDeclaringClass().getSimpleName() + “.” + method.getName();
    log.info("methodName: "+methodName);
    Object[] args = joinPoint.getArgs();
    log.info("param: " + JsonUtil.toJSON(args));

             Instant start = Instant.now();log.info("method start. methodName = {}", methodName);Object result = null;try {// 这里的result记得returnresult = joinPoint.proceed();} catch (Throwable throwable) {log.error("method proceed fail. e = {}", throwable.getMessage(), throwable);throw throwable;}log.info("method end. methodName = {}, cost = {}", methodName, ChronoUnit.MILLIS.between(start, Instant.now()));return result;}}catch (Exception e){log.error("MethodLogAspect around fail. e= {}", e.getMessage(), e);throw e;}
    

    }
    }

任务切片
遇到的第二个问题是,
在一个调用中,需要多次调用外部系统的服务,本来应该使用MQ去解耦,但是因为多方面原因只能维持现状(我们服务多次调用外部系统的服务)。这样导致整个请求特别慢,上线多台设备的时候可能需要十几二十秒。
与其他两个系统的交互互不影响,相互独立。因此,我想到使用任务切片的方式来加快执行速度。
下面是我写的任务切片小工具。

DTO
/**

  • @Description

  • @Author lkb

  • @CreateDate: 2021/3/26
    */
    @Data
    public class AsynTaskDTO<T, R> {

    public T param;

    public Function<T, R> function;

    public R resultData;

    public Boolean result;

    public String key;

    public AsynTaskDTO(Function<T,R> function, T param){
    this.function = function;
    this.param = param;
    this.result = false;
    this.key = String.valueOf(param.hashCode());
    }

}
任务切片实现类
/**

  • @Description

  • @Author lkb

  • @CreateDate: 2021/3/26
    */
    @Slf4j
    @Getter
    public class AsynTaskUtil {

    private static final ForkJoinPool ASYNC_IO_POOL = new ForkJoinPool((Runtime.getRuntime().availableProcessors() << 1) + 1);

    private List taskDTOS;

    public AsynTaskUtil(List taskDTOS){
    this.taskDTOS = taskDTOS;
    }

    public boolean doTask(){
    CompletableFuture[] futures = taskDTOS.stream().map(task -> CompletableFuture.runAsync(() -> {
    try{
    task.setResultData(task.getFunction().apply(task.getParam()));
    task.setResult(true);
    }catch (Exception e){
    log.error(“AsynTaskUtil doTask fail. e = {}” + e.getMessage(), e);
    task.setResult(false);
    }
    }, ASYNC_IO_POOL)).toArray(CompletableFuture[]::new);

     CompletableFuture.allOf(futures).join();boolean f = taskDTOS.stream().anyMatch(t -> Objects.equals(false, t.getResult()));return !f;
    

    }
    }

C# 图书管理系统源码(三层架构,含数据库)相关推荐

  1. 基于java,swing图书管理系统源码下载(含数据库脚本) 附下载

    资源简介 1.执行数据库脚本文件 生成数据库 2. 修改  ibraryManager\src\com\wsy\dao\DAO.java 文件中的 数据库密码为你本机 3. 运行该程序后,输入 账号: ...

  2. . NET C# WPF图书管理系统源码 .net C# WPF图书管理系统源码

    . NET C# WPF图书管理系统源码 .net C# WPF图书管理系统源码 自己开发,纯源码 主要技术:C#.基于wpf开发.sql server数据库的增删改查. 源码特点:代码完整规范,采用 ...

  3. java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计图书管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈: 项目 ...

  4. java计算机毕业设计vue图书管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue图书管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue图书管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B ...

  5. java计算机毕业设计Vue和mysql智能图书管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计Vue和mysql智能图书管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计Vue和mysql智能图书管理系统源码+mysql数据库+系统+lw文档+部 ...

  6. java计算机毕业设计vue图书管理系统源码+数据库+系统+lw文档

    java计算机毕业设计vue图书管理系统源码+数据库+系统+lw文档 java计算机毕业设计vue图书管理系统源码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  7. jsp+servlet+mysql实现的图书管理系统源码

    此篇给大家推荐的是jsp+servlet+mysql实现的图书管理系统源码: 随着社会信息量的与日俱增,作为信息存储的主要媒体之一的图书,数量,规模比以往任何时候都大的多 不论个人还是图书管理部门都需 ...

  8. java图书管理系统源码

    java图书管理系统源码 系统主要功能 读者:登录注册,借阅还书,查询书籍,查看当前借阅信息以及历史借阅信息,查看.查询读者借阅榜以及借阅书籍借阅榜,问题反馈以及查询反馈结果等功能. 管理员:对图书. ...

  9. javaweb JAVA JSP图书管理图书系统 图书管理系统实现简单的图书管理系统源码

    javaweb JAVA JSP图书管理图书系统 图书管理系统实现简单的图书管理系统源码 protected void doGet(HttpServletRequest req, HttpServle ...

  10. C# winform基于sql的图书管理系统源码

    C# winform基于sql的图书管理系统源码(源码+数据库文件 id=650020304641&

最新文章

  1. SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理
  2. spring-cloud Finchley.SR2版本 升级微服务到springboot 2.0
  3. 标准模板库(STL)学习指南之set集合
  4. 前端学习(1347):用户的增删改查操作4修改
  5. 怎么样修改PuTTY的默认字体和字符集
  6. NodeJS获取命令行后面的参数
  7. 数学建模 聚类模型
  8. Spring Data JPA 必须掌握的 20+ 个查询关键字
  9. c++中的list用法[转]
  10. java suite_Spring Tool Suite 配置和使用
  11. 从嗤之以鼻到“奇迹” 前淘宝工程师详解12306技术
  12. 2021年最新友价商城源码 优化实名认证模块 19套PC模板2套手机模板 服务市场 任务大厅
  13. 移动安全技术如何未雨绸缪?
  14. 用python实现时间序列白噪声检验
  15. Day3 分支和循环
  16. Android触控基础:MotionEvent
  17. sklearn使用入门
  18. windows 10 输入法如何关掉繁体切换
  19. Yahoo Programming Contest 2019 D-Ears
  20. java逻辑共享设计_精美图文讲解Java AQS 共享式获取同步状态以及Semaphore的应用...

热门文章

  1. mser python车牌识别_HyperLPR车牌识别
  2. 2个月快速通过PMP证书的经验分享
  3. 计算机操作系统--UNIX操作系统
  4. 你以为我在玩游戏?其实我在学 Java
  5. C语言实现贪吃蛇小游戏
  6. 使用网刻工具进行局域网内的网络同传及联想电脑同传
  7. C语言从入门到精通所需的7本书
  8. Http协议详解(深入理解)
  9. live2d_明日方舟:聊聊可露希尔的live2d以及live2d制作
  10. 王者荣耀用java_怎样用Java的方式打开王者荣耀