【实例简介】

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. 【Python】pymysql基础:数据库操作
  2. 7、CSS 属性选择器
  3. 【知识小课堂】4 之 索引
  4. ReactNative-触摸事件
  5. atftp 在SUSE Linux中的源代码安装配置方法
  6. SQL数据库挂起 SQL数据库附加报错 SQL数据库824错误修复
  7. 你值得掌握的 Git分支等 常用命令 (持续更新中)
  8. windows文件读取 xxe_java xxe漏洞
  9. 关于STL的一些笔记
  10. 2020年最好用的手机是哪一款_2020,哪款5G手机最值得入手?
  11. Unity3D之UGUI基础10:画布的三种模式
  12. java 十六进制数的转换
  13. Java多线程高并发编程中点点理解
  14. Python 装逼手机号码方法 低配版 map方法解析
  15. 真正免费u盘数据恢复软件|易我数据恢复免费版
  16. justinmind夜话:程序员眼中的原型设计视频教程之书到用时方恨少
  17. [翻译]CryEngine3中ClothShader详解
  18. tpshop——安装使用
  19. 小米电视5和5pro区别
  20. 3D打印机T3升级corexy  制作过程(一)

热门文章

  1. 活动报名管理系统 php源码,活动报名系统微预约源码,万能表单8.1.21版
  2. vim代码对齐命令_vim自动对齐
  3. vba移动文件_你想要的爬虫、VBA系列教程这里都有!
  4. 利用matlab进行Vissim二次开发,史上最详细
  5. mysql性能优化总结详解:MySQL数据库从原理到高性能实战
  6. SQL必知必会 课后题答案
  7. json map 转换 android,map和json之间的转换
  8. C语言函数调用的方式求两个数的大小
  9. 完全免费绝地求生吃鸡罗技宏
  10. java8 64位安装_Java8安装步骤-win10-64位系统