1.递归求数组最大值  2.转账(事务)  

1.递归应用

 public class DiGuiDemo3 {

     public static void main(String[] args) {
int[] array = { 31, 23, 2, 42, 23, 98, 12, 32, 17, 66, 31, 12 }; System.out.println(max(array)); } static int max(int[] array, int i) {
if (i == array.length - 1) {
return array[i];
}
return Math.max(array[i], max(array, i + 1));
} static int max(int[] array) {
return max(array, 0);
} }

2.转账案例(启用事务管理)

思路、实现分析

案例一:转账

实现需求:
1,创建页面
2,导包,工具
3,创建包结构
4,提交 Severlet -〉Service -〉Dao
5,页面跳转 代码实现:
1,准备工作:
com.itheima.demo4.transaction.dao
com.itheima.demo4.transaction.domain
com.itheima.demo4.transaction.service
com.itheima.demo4.transaction.servlet
事务管理
2,创建 jsp,作为转账页面
添加表单,有:付款人、收款人、转账金额、必要按钮
调整好页面格式 3,创建类
servlet.AccountServlet.java Web层
service.AccountService.java Service
dao.AccountDao.java Dao
domain.Account.java 4,编写代码:实现转账功能
转账页面提交位置:${ pageContext.request.contextPath }/AccountServlet 编写Servlet接收表单提交:AccountServlet
//处理中文
request.setCharacterEncoding("UTF-8");
//接收数据
String from = request.getParameter("from");
String to = request.getParameter("to");
Double money = request.getParameter("monye"); //处理数据(调用业务层)
AccountService accountService = new AccountService();
accountService.transfer(from, to, money); 实现数据处理方法:AccountService.transfer()
public void transfer(String from, Strinig to, Double money){
//调用dao
AccountDao accountDao = new AccountDao();
accountDao.doTransfer(from, to, money);
} 实现dao处理方法:AccountDao.doTransfer() Connection conn = null; //构造方法
public AccountDao(){
conn = JDBCUtils.getConnection();
setConn(conn);
}
public AccountDao(Connection conn){
this.conn = conn;
} public void doTransfer(String from, String to, Double money){
outMoney(from, money);
inMoney(to, money);
}
protected void outMoney(String name, Double money){
Connection conn = JDBCUtils.getConnection();
String sql = "update account set money = money - ? where name = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setDouble(1, money);
stmt.setString(2, from);
stmt.executeUpdate();
}
protected void inMoney(String name, Double money){ String sql = "update account set money = money + ? where name = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setDouble(1, money);
stmt.setString(2, from);
stmt.executeUpdate();
} protected void setConn(Connection conn){
this.conn = conn;
} 5,加事务管理 业务过程分析:
web层 - Service -- Dao
事务不能跨连接,需要在一个连接内控制。
事务添加位置:
重写业务层:AccountService.transfer()
public void transfer(String from, Strinig to, Double money){
Connection conn = JDBCUtils.getConnection();
//创建对象时,把连接对象传入
conn.setAutoCommit(false);
AccountDao accountDao = new AccountDao(conn);
accountDao.doTransfer(from, to, money);
conn.commit();
}

Z

阅读别人的程序(Java篇)的更多相关文章

  1. java程序设计基础篇 复习笔记 第一单元

    java语言程序设计基础篇笔记1. 几种有名的语言COBOL:商业应用FORTRAN:数学运算BASIC:易学易用Visual Basic,Delphi:图形用户界面C:汇编语言的强大功能和易学性,可 ...

  2. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  3. 最值得收藏的java技术博客(Java篇)

    第一个:java_my_life 作者介绍:找不到原作者信息.大概做了翻阅全部是2012年的博客. 博客主要内容:主要内容是关于Java设计模式的一些讲解和学习笔记,在相信对学习设计模式的同学帮助很大 ...

  4. 微信小程序+java后台

    博主是大四学生,毕业设计做的是微信小程序+java后台.陆陆续续经历了三个月(因为白天要实习又碰上过年玩了一阵子),从对微信小程序一无所知到完成毕设,碰到许多问题,在跟大家分享一下自己的经历和一个小程 ...

  5. JSON总结(java篇)

    JSON总结(java篇一) JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于 ...

  6. 面试总结——Java篇

    前言:前期对Java基础的相关知识点进行了总结,具体参看:Java基础和面试知识点.近期由于笔者正在换工作(ing),因此下面将笔者在面试过程中或笔者朋友面试过程中反馈的题目进行总结,相信弄清楚下面题 ...

  7. 前端微信小程序实战篇

    电商底部导航栏的制作 我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个人 ...

  8. 【微信小程序】转载:微信小程序实战篇-下拉刷新与加载更多

    下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 当然,你可以直接在全局变量app.json的window里面配置上面这个属性,这样整个项目都允许下 ...

  9. 事件驱动模型实例详解(Java篇)

    或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类 ...

随机推荐

  1. Linux CentOS6升级glibc库过程

    CentOS6升级glibc库过程 hadoop无法加载native库,可能原因是 glibc库版本过低,需要升级. 第一:安装以下软件 yum -y install zlib zlib-devel ...

  2. MBR详解

    我们通常对磁盘分区时,都会涉及到MBR和GPT.MBR和GPT都是磁盘分区的类型,由于以前的硬盘只有几个GB,几十个GB,几百个GB,使用MBR类型分区已经足够.但是近些年来,硬盘容量的发展速度迅速, ...

  3. RGB Resampler IP核的测试

    关于RGB Resampler IP核的测试 1.RGB Resampler功能描述 将输入的RGB数据流转换成其它格式的RGB数据流. 2.功能验证 设置源图像像素数据为:3X4格式. 设置RGB ...

  4. DS图--最小生成树

    题目描述 根据输入创建无向网.分别用Prim算法和Kruskal算法构建最小生成树.(假设:输入数据的最小生成树唯一.) 输入 顶点数n n个顶点 边数m m条边信息,格式为:顶点1 顶点2 权值 P ...

  5. 解决下载经过GZip压缩后的网页乱码问题

    目前很多网站默认采用GZip压缩,如果不进行解压缩,下载后生成的html页面打开后会出现中文乱码 乱码前: string url = "http://quote.eastmoney.com/ ...

  6. windows编程之窗口抖动

    仅仅让黑窗口抖动以供小白娱乐 #include<stdio.h> #include<windows.h> int main() { RECT rect;//RECT定义了一个矩 ...

  7. Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素

    ylbtech-Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素 1.返回顶部 1. Java 实例 - 在数组中查找指定元素  Java 实例 以下实例 ...

  8. NodeJs使用async让代码按顺序串行执行

    描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...

  9. DockerFile服务

    Dockerfile分为四部分:基础镜像信息.镜像创建者信息.镜像操作指令.容器启动执行指令. 一.Dockerfile的书写规则及指令使用方法 Dockerfile的指令是忽略大小写的,建议使用大写 ...

  10. 梯度下降(Gradient Descent)相关概念

    梯度,直观理解: 梯度: 运算的对像是纯量,运算出来的结果会是向量在一个标量场中, 梯度的计算结果会是"在每个位置都算出一个向量,而这个向量的方向会是在任何一点上从其周围(极接近的周围,学过 ...