目录 写在前面 实现步骤 写在最后 写在前面 上一小节,总结了事务多表更新的两种方法.一个是只更新原来的数据,一个是先删除原来的数据再往里面添加新的数据.而这一小节,说的是事务的多表删除. 实现步骤 1.在BorrowBook控制器中 创建Del方法 执行删除单表记录 /// <summary> /// 删除单表数据 /// </summary> /// <param name="Id">参数Id</param> /// <retu…
目录 写在前面 问题描述 解决方法 具体实现 写在前面 前面我们已经搭建好了项目,这一小节我们使用Dapper 中的事务实现一对多的添加操作. 问题描述 在做添加的时候很头疼需要从页面传递一组数据到后台,但同时又需要传递几个独立的参数. 以前的做法是在后台分别接收不同参数的Json,然后转成DataTable循环遍历解析获取值最后执行添加操作. 但是,个人觉得这样做太麻烦.于是,在网上搜了一下,看看有没有更简单的方法. 发现有的建议传字符串后台格式化或解析也有专门写一个切面程序修改mvc自带的格…
目录 写在前面 实践步骤 写在前面 上一小节,我们总结了根据Id查询多表数据,最后返回Json对象给前台的例子.接下来,在这一小节我们要实现多表编辑的操作. 实践步骤 因为上一小节以及创建了Edit视图以及数据的显示.所以,在这里不在重复.主要介绍实现多表编辑的操作. 1.在BorrowBookController控制器中,创建 Edits_Op 方法 实现数据的编辑 /// <summary> /// 多表编辑 /// </summary> /// <param name=…
目录 写在前面 一.前期准备 1.在MySQL创建数据库 2.创建项目 3.安装程序包 4.添加插件 5.添加DbOption文件夹 6.添加实体类 写在前面 学习并实践使用Dapper 这个小型的ORM框架已经有一个星期的时间了.为了能加深对它的理解和熟悉.所以,想使用以Dapper 作为 操作数据后台数据,然后使用Layui 作为前台框架,最后使用Ajax进行前后台数据的交互做个具体的实例.也就是说会使用Layui+Ajax+Dapper+MySQL 做一个在开发过程中普遍会遇到的实例.比如…
写在前面 上一小节,总结了数据显示时,会出现的日期问题.以及如何处理格式化日期.这个小节,主要总结的是使用Dapper 中的QueryMultiple方法依次显示查询多表的数据. 实践步骤 1.在BorrowBookController控制器中 创建Edit 视图 /// <summary> /// 根据Id查询多表数据 /// </summary> /// <param name="Id">参数主键</param> /// <re…
目录 写在前面 产生问题 解决方案 写在前面 上一小节,我们使用Dapper 里事务实现了一对多关系的添加.这一小节,主要记录如何使用Dapper 实现多表的查询显示. 产生问题 在mvc控制器中查询显示以JsonResult 返回 Json格式给前台时.无可避免的日期格式不是我们想要的日期格式.而是类似于这样的/Date(1565664248000)/日期格式. 解决方案 方案1 可以使用Newtonsoft.Json 里IsoDateTimeConverter 类格式化ISO格式的日期 //…
目录 写在前面 前期准备 Dapper 单表批量添加 在Dapper 多表查询 在Dapper 调用存储过程 在Dapper 使用QueryMultiple进行多表查询 在Dapper 使用事务进行多表添加 在Dapper 使用事务进行多表编辑 在Dapper 使用事务进行多表删除 总结 写在前面 在上一小节中,我们学习.实践和总结记录了Dapper的基础用法.而这一小节,我们继续深入的学习一下Dapper这个小型 ORM框架的其他用法.在这个实列中,我们会用到两个有关联的表. 前期准备 首先,…
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框架系列教程四(删除数据) CRL快速开发框架系列教程五(使用缓存) CRL快速开发框架系列教程六(分布式缓存解决方案) CRL快速开发框架系列教程七(使用事务) CRL快速开发框架系列教程八(使用CRL.Package) CRL快速开发框架系列教程九(导入/导出数据) CRL快速开发框架系列教程十(…
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一文中,体验了通过模版.惯例.HTTP方法来设置路由,这种做法的好处是把路由模版统一放在了App_Start文件夹下的WebApiConfig类中,方便管理,但缺点是不够灵活. REST把一切都看成资源,有时候,一个资源连带子资源,比如Customer和Orders密切关联,我们可能希望输入这样的请求:cust…
前言 上篇<.net core实践系列之短信服务-为什么选择.net core(开篇)>简单的介绍了(水了一篇).net core.这次针对短信服务的架构设计和技术栈的简析. 源码地址:https://github.com/SkyChenSky/Sikiro.SMS 为什么需要架构设计 有人会问短信服务也要架构设计?不就写个service封装个send方法就得了吗?干嘛还要大动干戈. 如果在单块应用的情况下,以上面的做法是无可厚非的. 然而架构设计解决的是应用复杂度,架构设计的大还是小取决于业…
OpenStack实践系列⑨云硬盘服务Cinder八.cinder8.1存储的三大分类 块存储:硬盘,磁盘阵列DAS,SAN存储 文件存储:nfs,GluserFS,Ceph(PB级分布式文件系统),MooserFS(缺点Metadata数据丢失,虚拟机就毁了) 11.2网络类型选择 对象存储:swift,S3 8.2 cinder控制节点的部署 安装cinder [root@node1 ~]# yum install openstack-cinder python-cinderclient -…
OpenStack实践系列⑧可视化服务Horizon之Dashboard演示 七.可视化服务Horizon之Dashboard演示 仪表板依赖于功能核心服务,包括身份,图像服务,计算和网络两种(neutron)或传统网络(nova-neutron).与独立的服务环境,如对象存储不能使用仪表板. 配置和使用在安装和配置标识服务节中描述了ApacheHTTP服务器和Memcached的服务认证服务的运行. 默认的配置文件由分布有所不同.您可能需要添加这些部分和选项,而不是修改现有的部分和选项.此外,…
OpenStack实践系列⑤网络服务Neutron 3.8 Neturn 服务部署 注册neutron服务 [root@node1 ~]# source admin-openrc.sh [root@node1 ~]# openstack service create --name neutron --description "OpenStack Networking" network +-------------+----------------------------------+…
OpenStack实践系列②认证服务Keystone 三.实战OpenStack之控制节点3.1 CentOS7的时间同步服务器chrony 下载chrony # yum install -y chrony 修改其配置文件 # vim /etc/chrony.conf allow chrony开机自启动,并且启动 # systemctl enable chronyd.service # systemctl start chronyd.service 设置Centos7的时区为Asia/Shang…
OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运行自己的云计算和存储设施.Rackspace与NASA是最初重要的两个贡献者,前者提供了“云文件”平台代码,该平台增强了OpenStack对象存储部分的功能,而后者带来了“Nebula”平台形成了OpenStack其余的部分.而今,OpenStack基金会已经有150多个会员,包括很多知名公司如“C…
前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://github.com/SkyChenSky/Sikiro.SMS 此服务会使用.NET Core WebApi进行搭建,.NET Core WebApi基础原型就是RESTful风格,然而什么叫RESTful呢. REST API简介 REST Representational State Transfer的缩写…
ASP.NET Web API的消息处理管道可以理解为请求到达Controller之前.Controller返回响应之后的处理机制.之所以需要了解消息处理管道,是因为我们可以借助它来实现对请求和响应的自定义处理.所有的请求被封装到HttpRequestMessage这个类中,所有的响应被封装到HttpResponseMessage这个类中. 既然消息处理管道是可扩展的,那么,ASP.NET Web API一定为我们准备了便于扩展的接口或抽象类,它就是HttpMessageHandler抽象类.…
目录 写在前面 为什么选择Dapper 在项目中安装Dapper 在项目中使用Dapper 在项目中使用Dapper 进行单表增删改数据操作 总结 写在前面 Dapper 是一款轻量级ORM架构.为解决网站访问流量极高而产生的性能问题而构造,主要通过执行TSQL表达式而实现数据库的CQRS. 如果在项目中遇到性能访问问题,选择Dapper作为ORM框架可能是明智之举,当然也可以使用Entity Framework或NHibernate来处理大数据访问及关系映射. 为什么选择Dapper 1.轻量…
Spring5.0源码学习系列之事务管理概述(十一),在学习事务管理的源码之前,需要对事务的基本理论比较熟悉,所以本章节会对事务管理的基本理论进行描述 1.什么是事务? 事务就是一组原子性的SQL操作,或者说一个独立的工作单元.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit) 注意:Spring的事务支持是基于数据库事务的,在MySQL数据库中目前只有InnoDB或者NDB集群引擎才支持,MySQL5.0之前的默认MyISAM存储引擎是不支持事务的 2.事务的AC…
开篇介绍 最近由于工作需要,学习研究了一下Nagios的安装.配置.使用,关于Nagios的介绍,可以参考我上篇随笔Nagios学习实践系列——产品介绍篇 实验环境 操作系统:Red Hat Enterprise Linux Server release 6.0 (Santiago)   64 bit. 注意,Nagios只能安装在Linux或Unix平台,不支持Windows平台,当然,它可以监控Windows平台. 环境准备 Apache 和PHP 不是安装Nagios所必须的,其实也可以说…
其实上篇Nagios学习实践系列——基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子.接下来,我们来学习研究一下Nagios的配置,了解一下基本的配置和了解各类配置文件. Nagios配置目录 Nagios的配置文件位于etc目录下(/usr/local/nagios/etc)如下图所示: 配置文件简介 配置文件名 功能描述 cgi.cfg 控制CGI访问的配置文件 nagios.cfg 主配置文件:主…
RHadoop实践系列之二:RHadoop安装与使用 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法,用来替代Java的MapReduce实现.有了RHadoop可以让广大的R语言爱好者,有更强大的工具处理大数据1G, 10G, 100G, TB, PB. 由于大数据所带来的单机性能问题,可能会一去不复返了. RHadoop实践是一套系列文章,主要包括”Hadoop环境搭建”,”RHadoop安装与…
RHadoop实践系列之一:Hadoop环境搭建 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法,用来替代Java的MapReduce实现.有了RHadoop可以让广大的R语言爱好者,有更强大的工具处理大数据1G, 10G, 100G, TB, PB. 由于大数据所带来的单机性能问题,可能会一去不复返了. RHadoop实践是一套系列文章,主要包括”Hadoop环境搭建”,”RHadoop安装与使用…
文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案  介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静态封装实现视频点播方案.实际应用中,所支持的客户端越多,那么所获得的用户越多,客户端多种多样:PC端, Xbox, iOS, Android, Windows 等移动设备端,针对如此之大的客户端市场,能否搭建一套全面的点播方案呢?答案是肯定的,本文将基于微软云平台媒体服务介绍如何实现跨多移动客户端的…
Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一) 自从搞好了单向一对一关系,装满代码的心中塞进了挥之不去的情丝 —— 单相思.谁都知道音乐世界离不开情感,可谁又知道代码世界同样需要情感. 单相思是星星之火,它存在的唯一目的是点燃两个人的世界.让我们紧握心中的火苗,开始两情相悦的征途吧. 先回顾一下单相思的场景: BlogSite单相思BlogUser. BlogSite样子: publicclass BlogSite { publicint BlogID {…
菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 采用Scrum敏捷项目管理方法进行产品开发,当碰到较大规模的产品开发,用户故事较多时,就必须采取一定的方法来组织.管理用户故事,使其分门别类的管理,条理才清楚.通常我们采用“功能架构”来分层分类别来管理用户故事. 一.规划层次 遵循Scrum敏捷项目管理理论,可把项目划分为三个大的层次,分别是顶层的产品层,…
菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 一.用户故事的状态: 用户故事推荐定义五种状态,分别是“构思”.“已批准”.“开发中”.“已完成”.“已验收”. 只有符合项目组规定的验收标准,才能置为“已验收”状态. 二.用户故事验收标准  由团队决定验收标准. 该标准可包括: •已完成所有任务(开发.测试和记录) •正在运行和通过所有验收测试 •无开放…
菜鸟Scrum敏捷实践系列索引 菜鸟Scrum敏捷实践系列(一)用户故事概念 菜鸟Scrum敏捷实践系列(二)用户故事验收 菜鸟Scrum敏捷实践系列(三)用户故事的组织---功能架构的规划 敏捷开发对需求规划的要求是很高的,首先需求是打散的,一个大的项目需求会拆分成很多小的功能完整的需求,以便排定优先级去逐个实现,敏捷开发提升了开发效率,但是对需求规划的要求更高了,就是对产品的需求规划能力提出了更高的要求,必须有清晰的思路,很强的需求规划能力才行,这样才能保证敏捷开发可以按照既定的设想去一步一…
如果你希望系统性的了解神经网络,请参考零基础入门深度学习系列,下面我会粗略的介绍一下本文中实现神经网络需要了解的知识. 什么是深度神经网络? 神经网络包含三层:输入层(X).隐藏层和输出层:f(x) 每层之间每个节点都是完全连接的,其中包含权重(W).每层都存在一个偏移值(b). 每一层节点的计算方式如下: 其中g()代表激活函数,o()代表softmax输出函数. 使用Flow Graph的方式来表达如何正向推导神经网络,可以表达如下: x: 输入值 a(x):表示每个隐藏层的pre-acti…
前期回顾: 深度学习实践系列(1)- 从零搭建notMNIST逻辑回归模型 深度学习实践系列(2)- 搭建notMNIST的深度神经网络 在第二篇系列中,我们使用了TensorFlow搭建了第一个深度神经网络,并且尝试了很多优化方式去改进神经网络学习的效率和提高准确性.在这篇文章,我们将要使用一个强大的神经网络学习框架Keras配合TensorFlow重新搭建一个深度神经网络. 什么是Keras? 官方对于Keras的定义如下: "Keras: Deep Learning library for…