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. npm install 包 失败解决方法

    在ionic 安装包的时候 npm install xxx --save 出现如下错误 查看日志文件 14 verbose stack SyntaxError: Unexpected token &l ...

  2. asp.net:如何实现负载均衡方案讨论 (nginx+iis实现负载均衡)

    5台阿里云服务器,ip地址分别为 ip地址                      名字简称      操作系统       iis服务器     cpu   内存DDR3      机械硬盘 11 ...

  3. Sql语句的优化摘要

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  4. Win10+Ubuntu1604双系统

    原本电脑有一块固态硬盘和机械硬盘,用来跑win10的,现在想直接在ubuntu上跑tensorflow,所以加了块320G的机械硬盘单独跑ubuntu. 一.准备 1.ubuntu-16.04.3-d ...

  5. Android的路径信息[转]

    Delphi早就把IO相关的都提取到System.IoUtils单元中了. 路径操作就使用TPath的方法都很方便.usesSystem.IoUtilsTPath.GetTempPath//临时目录T ...

  6. js图片预加载后触发操作

    为了使得图片加载完,再触发回调函数,需进行图片预加载处理 function loadImage(url, callback) { var img = new Image(); img.src = ur ...

  7. WPF Demo19 命令、UC

    命令系统的基本元素和关系WPF命令系统的组成要素:A.命令(command):WPF命令实际上就是实习了ICommand接口的类.平时使用最多的就是RoutedCommand类.B.命令源(comma ...

  8. 黄聪:在.NET中使用GeckoFX 29

    GeckoFX is a .NET control, that works similarly to “System.Windows.Forms.WebBrowser” Control, while ...

  9. PAT 乙级 1046 划拳(15) C++版

    1046. 划拳(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 划拳是古老中国酒文化的一个有趣的组成部分 ...

  10. 云中树莓派(5):利用 AWS IoT Greengrass 进行 IoT 边缘计算

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...