53.最大子数组和-力扣(LeetCode)方法:动态规划练了好久的动态规划,终于会写了解法一:暴力求解第一次是这样写的,但是超时了,当个思路看publicstaticvoidmaxSubArray1(int[]nums){intmax=Integer.MIN_VALUE;intlen=nums.length;for(inti=0;i
刷题日记2024-11-20
大萌神Nagato
算法javaleetcode
题目来自力扣560题:和为K的子数组给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2暴力循环,时间复杂度O(n²)publicstaticintsubarraySum(int[]nums,intk){intcount=0;f
蓝桥杯二分题
练习时长两年半1
算法数据结构java蓝桥杯
P1083[NOIP2012提高组]借教室题目描述在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借。共有m份订单,每份订单用三个正整数描述,分别为,,dj,sj,tj,
【2000NOIP普及组】T4.单词接龙 试题解析
宏阳李老师
CSP/NOIP-J组试卷解析算法数据结构c++蓝桥杯青少年编程
【2000NOIP普及组】T4.单词接龙试题解析时间限制:1000ms内存限制:65536KB【题目描述】单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们己知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙"中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两
[NOIP2007 提高组] 矩阵取数游戏 题解
◥༺ʚ 无聊鸭本鸭 ɞ༻◤
洛谷刷题(C/C++)矩阵算法深度优先线性代数图论开发语言
题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n×mn×m的矩阵,矩阵中的每个元素ai,jai,j均为非负整数。游戏规则如下:每次取数时须从每行各取走一个元素,共nn个。经过mm次后取完矩阵内所有元素;每次取走的各个元素只能是该元素所在行的行首或行尾;每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分=被取走的元素值×2i×2i,其中ii表示第ii次取数(从11开始编号);游戏
【leetcode hot 100 128】最长连续序列
longii11
leetcode算法职场和发展
暴力解决:将存如hashmap中,再从min_num到max_num中寻找hashmap中存在的连续数classSolution{publicintlongestConsecutive(int[]nums){//遍历数组,将存如hashmap中Mapmap=newHashMap0){min_num=nums[0];max_num=nums[0];}for(inti=0;imax_num){max_
[NOIP2009 普及组] 道路游戏
花王江不语
线性dp算法动态规划
这个题有点过于生艹了,好不容易想出前缀和来,前缀和里还有大坑题链sum[a][b]=sum[a][b-1]+jb[(a+b-1)%n][b];sum[a][b]表示一个机器人以工厂a为起点,从第一秒走到第b秒拾到的金币,但是sum[k][i]-sum[k][j]表示的却不是以k为起点,sum[k][i]-sum[k][j]表示的是以k+j为起点的从第j+1秒到第i秒捡到的所有金币,因为当第一秒的起
P10289 [GESP样题 八级] 小杨的旅游
pystraf
洛谷题解算法图论c++数据结构
Description给定一棵nnn个点的树,每条边权值均为111,树上有kkk个关键点,关键点们在000的时间内相互可达,qqq次询问,求s→ts\tots→t的最短路。Analysis考虑暴力建图,则图上共有(n−1+n(n−1)2)(n-1+\frac{n(n-1)}{2})(n−1+2n(n−1))条边,在n,kn,kn,k均为最大的情况下,图上共有大约2×10102\times10^{1
Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated) C. Kuroni and Impossible Calculation(鸽巢原理+数学)
为什么他们cf写的这么快
数学
题目链接思路:首先我们都明白一个式子就是如果(a-b)%m0,那么我们是不是都知道a%mb%m,又因为如果n>m的话%m的取值就在【0,999】内,也就是肯定会存在两个数是重合的(这就是鸽巢原理),那么n大于m的时候%m不就是0了,剩下的暴力就行了。#includeusingnamespacestd;typedeflonglongll;constintmaxn=2e5+1;constllinf=1
【leetcode hot 100 11】移动零
longii11
leetcode算法职场和发展
一、暴力解法:两个for循环,外层循环遍历所有可能的左边界,内层循环遍历所有可能的右边界classSolution{publicintmaxArea(int[]height){intmax_area=0;for(inti=0;iarea?max_area:area;}}returnmax_area;}}错误分析:当涉及的数组较大时,会超出时间限制双指针:一个指向数组的头部,一个指向数组的尾部,然后
第十二届蓝桥杯模拟赛(第三期)
削皮去子吃草莓
蓝桥杯算法
第十二届蓝桥杯模拟赛(第三期)无脑暴力有错误望指正问题描述给定一个矩阵M,由n行m列组成,第i行第j列值为M[i][j]。定义矩阵M的重量为矩阵中所有元素的和,几位weight(M)请找到矩阵左上角的一个子矩阵S(矩阵的前r行中的前c列组成),使得这个子矩阵的重量的两倍最接近矩阵M重量。即|2weight(S)-weight(M)|最小。如果有多个子矩阵满足条件,请找出面积r*c最小的一个。如果仍
基于特征提取的方法实现对心室视频的追踪
阿蛋会代码
音视频python开发语言opencv目标检测计算机视觉
一、特征提取的方法本代码实现了一套基于计算机视觉的心脏运动定量分析系统,通过特征点追踪技术对超声心动图视频进行动态解析。核心技术采用ORB(OrientedFASTandRotatedBRIEF)特征检测算法,在每帧图像中提取具有旋转不变性的显著斑点特征,构建包含位置和方向信息的特征描述子。通过暴力匹配器(BFMatcher)进行跨帧特征点匹配,结合汉明距离阈值筛选出可信度高的空间对应点对。系统以
LeetCode详解之如何一步步优化到最佳解法:14. 最长公共前缀
杰瑞学AI
LeetCode代码优化职业发展leetcode算法职场和发展面试性能优化数据结构python
LeetCode详解系列的总目录(持续更新中):LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客LeetCode详解系列的上一题链接:LeetCode详解之如何一步步优化到最佳解法:13.罗马数字转整数-CSDN博客目录14.最长公共前缀解法1:暴力解法代码解法性能解法分析解法2:最终版代码解法性能解法分析14.最长公共前缀本题题目链接:14.最长公共前
【洛谷 P8716】[蓝桥杯 2020 省 AB2] 回文日期 题解(闰年计算+暴力枚举+字符串)
HEX9CF
AlgorithmProblems蓝桥杯职场和发展算法
[蓝桥杯2020省AB2]回文日期题目描述2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按yyyymmdd的格式写成一个888位数是20200202,恰好是一个回文数。我们称这样的日期是回文日期。有人表示20200202是“千年一遇”的特殊日子。对此小明很不认同,因为不到2年之后就是下一个回文日期:20211202即2021年12月2日。也有人表示20
洛谷P1004(方格取数[NOIP 2000 提高组])题解
1≈∞
算法题解
题目大意:在一个N×N的方格中,从左上角到右下角走两次,每次只能向下或向右走,取过的数会变成0,求两次路径取数的最大总和。首先,我们需要理解问题。两次路径都要走,并且第一次走过的格子第二次就不能再取了。所以需要找到两条路径,使得它们经过的格子的数值之和最大,并且路径不能重复取数。或者,或者说,即使路径交叉也没关系,但同一个格子只能被取一次。比如,如果两条路径都经过同一个格子,那么这个格子的数只能被
用Python实现两数之和(python)
南有芙蕖
数据结构
用Python实现两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]方法一、暴力解法:暴力法很简单,遍历每个元素x,并查找是否
两数之和(Python)
QRSN
算法刷题算法数据结构pythonleetcode
目录题目描述解题方法解法一:暴力枚举思路复杂度解法二:哈希表思路复杂度题目描述难度:简单给定一个整数数组nums和一个目标值target,要求在数组nums中找出两个数,使它们的和等于目标值target。并返回这两个数在数组中的索引。例如,给定nums=[2,7,11,15],target=9,因为nums[0]+nums[1]=2+7=9,所以应该返回[0,1]。解题方法解法一:暴力枚举clas
AT_arc100_c [ARC100E] Or Plus Max 暴力 + 打表(附优化思路)
Unwaretle
c语言开发语言
题目大意一个长度为500000(5*10**5),起始下标为1,初始值为0的数组,进行q次询问,每次询问有两张情况:1.下标为x的数加上y2.查询下标i满足(i%x)==y的数组元素的和。题目分析对于这类区间查询,可以先试试暴力,对于第一类查询,直接模拟,在数组的对应下标位置加y;对于第二类查询,在[1,500000]的区间内暴力枚举每一个(i%x)==y的值,然后输出它们的和。但显然,会导致超时
二分模板题
Cow_2024
算法模板算法
题目传送门主要思路:暴力会tlen的3次方了然后二分可以找中间然后去二分枚举两边最后结果ans+=a小于它的数*c大于它的数注意要判断是否符合条件即如果a的小于它的数还大于它就不成立或者c的数小于它也不成立结果要注意转longlongans+=(longlong)tp1*tp2;int->longlong#includeusingnamespacestd;intn;inta[100009],b[1
每日一题洛谷P1328 [NOIP 2014 提高组] 生活大爆炸版石头剪刀布c++
wen__xvn
洛谷生活
#includeusingnamespacestd;intmain(){intn,na,nb;cin>>n>>na>>nb;inta[200]={0};intb[200]={0};for(inti=0;i>a[i];}for(inti=0;i>b[i];}intca=0;intcb=0;inti=0;intj=0;while(n--){if(i>=na)i=0;if(j>=nb)j=0;//赢:c
网络安全之攻防笔记--通用安全漏洞SQL注入&sqlmap&Oracle&mongodb&DB2
Dawndddddd
web安全笔记安全sql
通用安全漏洞SQL注入&sqlmap&Oracle&mongodb&DB2数据库类型ACCESS特性没数据库用户没数据库权限没数据库查询参数没有高权限注入说法暴力猜解,借助字典得到数据注入方式联合注入偏移注入表名列名猜解不到偏移注入MySQL低权限常规注入高权限常规注入文件读取load_file文件写入intooutfile权限原因&判断代码连接用户决定查询函数user()其他database()
网络安全——信息收集
1op
网络安全
一.资产收集对于目标的资产收集有域名,ip,邮箱,管理员,网站源码,网站架构1.域名通过网站收集的子域名和whois信息和在线子域名爆破2.ipip主要通过域名解析ip,对于主ip可进行ipc段扫描3.网站源码可从github搜寻,通过网站的前期查询了解是否使用cms二.常见端口服务利用●FTP(21/TCP)默认用户名密码anonymous:anonymous暴力破解密码●SSH(22/TCP)
【算法】初等数论
非 白
算法开发语言java
初等数论模取余,遵循尽可能让商向0靠近的原则,结果的正负和左操作数相同取模,遵循尽可能让商向负无穷靠近的原则,结果的正负和右操作数相同7/(-3)=-2.3,产生了两个商-2和-3,取余语言中取-2,导致余数为1;取模语言中取-3,导致余数为-2java中%是取余幂1、暴力幂思想:直接将a连续乘以b遍时间复杂度:O(n)空间复杂度:O(1)//求a^bpubliclongpow(inta,intb
【Day25 LeetCode】贪心Ⅲ
银河梦想家
leetcode算法
一、贪心Ⅲ1、加油站134这道题直接想法是采用二重循环暴力搜索,简单粗暴但是会超时,是因为以每个点为起点最坏的情况可能都要遍历完全部的序列,有大量重复的操作,那有没有优化的地方呢?有一个结论:如果以iii位置出发最远可达jjj位置,那么在在这段区间里的任意一点出发都不可能达到比jjj位置更远的地方。反证法可以得出。可以通过这个结论避免大量重复搜索,每个位置只会经过一次。代码如下:classSolu
knob UI插件使用
换个号韩国红果果
JavaScriptjsonpknob
图形是用canvas绘制的
js代码
var paras = {
max:800,
min:100,
skin:'tron',//button type
thickness:.3,//button width
width:'200',//define canvas width.,canvas height
displayInput:'tr
Android+Jquery Mobile学习系列(5)-SQLite数据库
白糖_
JQuery Mobile
目录导航
SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPhone、Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠。
因为Android已经集成了SQLite,所以开发人员无需引入任何JAR包,而且Android也针对SQLite封装了专属的API,调用起来非常快捷方便。
我也是第一次接触S
impala-2.1.2-CDH5.3.2
dayutianfei
impala
最近在整理impala编译的东西,简单记录几个要点:
根据官网的信息(https://github.com/cloudera/Impala/wiki/How-to-build-Impala):
1. 首次编译impala,推荐使用命令:
${IMPALA_HOME}/buildall.sh -skiptests -build_shared_libs -format
2.仅编译BE
${I
求二进制数中1的个数
周凡杨
java算法二进制
解法一:
对于一个正整数如果是偶数,该数的二进制数的最后一位是 0 ,反之若是奇数,则该数的二进制数的最后一位是 1 。因此,可以考虑利用位移、判断奇偶来实现。
public int bitCount(int x){
int count = 0;
while(x!=0){
if(x%2!=0){ /
spring中hibernate及事务配置
g21121
Hibernate
hibernate的sessionFactory配置:
<!-- hibernate sessionFactory配置 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<
log4j.properties 使用
510888780
log4j
log4j.properties 使用
一.参数意义说明
输出级别的种类
ERROR、WARN、INFO、DEBUG
ERROR 为严重错误 主要是程序的错误
WARN 为一般警告,比如session丢失
INFO 为一般要显示的信息,比如登录登出
DEBUG 为程序的调试信息
配置日志信息输出目的地
log4j.appender.appenderName = fully.qua
Spring mvc-jfreeChart柱图(2)
布衣凌宇
jfreechart
上一篇中生成的图是静态的,这篇将按条件进行搜索,并统计成图表,左面为统计图,右面显示搜索出的结果。
第一步:导包
第二步;配置web.xml(上一篇有代码)
建BarRenderer类用于柱子颜色
import java.awt.Color;
import java.awt.Paint;
import org.jfree.chart.renderer.category.BarR
我的spring学习笔记14-容器扩展点之PropertyPlaceholderConfigurer
aijuans
Spring3
PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。
PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java
maven 之 cobertura 简单使用
antlove
maventestunitcoberturareport
1. 创建一个maven项目
2. 创建com.CoberturaStart.java
package com;
public class CoberturaStart {
public void helloEveryone(){
System.out.println("=================================================
程序的执行顺序
百合不是茶
JAVA执行顺序
刚在看java核心技术时发现对java的执行顺序不是很明白了,百度一下也没有找到适合自己的资料,所以就简单的回顾一下吧
代码如下;
经典的程序执行面试题
//关于程序执行的顺序
//例如:
//定义一个基类
public class A(){
public A(
设置session失效的几种方法
bijian1013
web.xmlsession失效监听器
在系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session。具体设置很简单,方法有三种:(1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所
java jvm常用命令工具
bijian1013
javajvm
一.概述
程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。 本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具:
&nbs
【Spring框架一】Spring常用注解之Autowired和Resource注解
bit1129
Spring常用注解
Spring自从2.0引入注解的方式取代XML配置的方式来做IOC之后,对Spring一些常用注解的含义行为一直处于比较模糊的状态,写几篇总结下Spring常用的注解。本篇包含的注解有如下几个:
Autowired
Resource
Component
Service
Controller
Transactional
根据它们的功能、目的,可以分为三组,Autow
mysql 操作遇到safe update mode问题
bitray
update
我并不知道出现这个问题的实际原理,只是通过其他朋友的博客,文章得知的一个解决方案,目前先记录一个解决方法,未来要是真了解以后,还会继续补全.
在mysql5中有一个safe update mode,这个模式让sql操作更加安全,据说要求有where条件,防止全表更新操作.如果必须要进行全表操作,我们可以执行
SET
nginx_perl试用
ronin47
nginx_perl试用
因为空闲时间比较多,所以在CPAN上乱翻,看到了nginx_perl这个项目(原名Nginx::Engine),现在托管在github.com上。地址见:https://github.com/zzzcpan/nginx-perl
这个模块的目的,是在nginx内置官方perl模块的基础上,实现一系列异步非阻塞的api。用connector/writer/reader完成类似proxy的功能(这里
java-63-在字符串中删除特定的字符
bylijinnan
java
public class DeleteSpecificChars {
/**
* Q 63 在字符串中删除特定的字符
* 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
* 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
*/
public static voi
EffectiveJava--创建和销毁对象
ccii
创建和销毁对象
本章内容:
1. 考虑用静态工厂方法代替构造器
2. 遇到多个构造器参数时要考虑用构建器(Builder模式)
3. 用私有构造器或者枚举类型强化Singleton属性
4. 通过私有构造器强化不可实例化的能力
5. 避免创建不必要的对象
6. 消除过期的对象引用
7. 避免使用终结方法
1. 考虑用静态工厂方法代替构造器
类可以通过
[宇宙时代]四边形理论与光速飞行
comsci
从四边形理论来推论 为什么光子飞船必须获得星光信号才能够进行光速飞行?
一组星体组成星座 向空间辐射一组由复杂星光信号组成的辐射频带,按照四边形-频率假说 一组频率就代表一个时空的入口
那么这种由星光信号组成的辐射频带就代表由这些星体所控制的时空通道,该时空通道在三维空间的投影是一
ubuntu server下python脚本迁移数据
cywhoyi
pythonKettlepymysqlcx_Oracleubuntu server
因为是在Ubuntu下,所以安装python、pip、pymysql等都极其方便,sudo apt-get install pymysql,
但是在安装cx_Oracle(连接oracle的模块)出现许多问题,查阅相关资料,发现这边文章能够帮我解决,希望大家少走点弯路。http://www.tbdazhe.com/archives/602
1.安装python
2.安装pip、pymysql
Ajax正确但是请求不到值解决方案
dashuaifu
Ajaxasync
Ajax正确但是请求不到值解决方案
解决方案:1 . async: false , 2. 设置延时执行js里的ajax或者延时后台java方法!!!!!!!
例如:
$.ajax({ &
windows安装配置php+memcached
dcj3sjt126com
PHPInstallmemcache
Windows下Memcached的安装配置方法
1、将第一个包解压放某个盘下面,比如在c:\memcached。
2、在终端(也即cmd命令界面)下输入 'c:\memcached\memcached.exe -d install' 安装。
3、再输入: 'c:\memcached\memcached.exe -d start' 启动。(需要注意的: 以后memcached将作为windo
iOS开发学习路径的一些建议
dcj3sjt126com
ios
iOS论坛里有朋友要求回答帖子,帖子的标题是: 想学IOS开发高阶一点的东西,从何开始,然后我吧啦吧啦回答写了很多。既然敲了那么多字,我就把我写的回复也贴到博客里来分享,希望能对大家有帮助。欢迎大家也到帖子里讨论和分享,地址:http://bbs.csdn.net/topics/390920759
下面是我回复的内容:
结合自己情况聊下iOS学习建议,
Javascript闭包概念
fanfanlovey
JavaScript闭包
1.参考资料
http://www.jb51.net/article/24101.htm
http://blog.csdn.net/yn49782026/article/details/8549462
2.内容概述
要理解闭包,首先需要理解变量作用域问题
内部函数可以饮用外面全局变量
var n=999;
functio
yum安装mysql5.6
haisheng
mysql
1、安装http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
2、yum install mysql
3、yum install mysql-server
4、vi /etc/my.cnf 添加character_set_server=utf8
po/bo/vo/dao/pojo的详介
IT_zhlp80
javaBOVODAOPOJOpo
JAVA几种对象的解释
PO:persistant object持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作.
VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可
java设计模式
kerryg
java设计模式
设计模式的分类:
一、 设计模式总体分为三大类:
1、创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
2、结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
3、行为型模式(11种):策略模式,模版方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者
[1]CXF3.1整合Spring开发webservice——helloworld篇
木头.java
springwebserviceCXF
Spring 版本3.2.10
CXF 版本3.1.1
项目采用MAVEN组织依赖jar
我这里是有parent的pom,为了简洁明了,我直接把所有的依赖都列一起了,所以都没version,反正上面已经写了版本
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht
Google 工程师亲授:菜鸟开发者一定要投资的十大目标
qindongliang1922
工作感悟人生
身为软件开发者,有什么是一定得投资的? Google 软件工程师 Emanuel Saringan 整理了十项他认为必要的投资,第一项就是身体健康,英文与数学也都是必备能力吗?来看看他怎么说。(以下文字以作者第一人称撰写)) 你的健康 无疑地,软件开发者是世界上最久坐不动的职业之一。 每天连坐八到十六小时,休息时间只有一点点,绝对会让你的鲔鱼肚肆无忌惮的生长。肥胖容易扩大罹患其他疾病的风险,
linux打开最大文件数量1,048,576
tianzhihehe
clinux
File descriptors are represented by the C int type. Not using a special type is often considered odd, but is, historically, the Unix way. Each Linux process has a maximum number of files th
java语言中PO、VO、DAO、BO、POJO几种对象的解释
衞酆夼
javaVOBOPOJOpo
PO:persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
BO:business object业务对象
封装业务逻辑的java对象