原理: 从客户端上传到服务器 照片——文件夹——数据库
例如:桌面一张照片,在tomacat里创建upload文件夹,把桌面照片上传到upload文件夹里,并且把照片的名字取出来,取完名字把这个名字插入到数据库里面,下次要想取就取这个名字到upload文件夹下面去寻找这个照片,找到以后写相对路径,就可以在页面上显示照片。
所以我数据库的类型是照片的路径是varchar字符串类型
注:tomacat服务器是用eclipse敲代码的开发工具启动的,每一个都会把最新的源代码覆盖原有的所有代码,所有tomacat重启后照片会消失(真正的开发是编码和服务器不在一起不会出现以上情况)
例如:我要上传课程信息(里面包括照片)
1.上传课程信息jsp页面uploadcourse.jsp
2. 点击查看已上传课程按钮后触发活动xyadmin.jsp
3.显示课程信息jsp页面displayCourse.jsp
序号 课程名 课程讲述 封面图片 课程讲师 相关视频
后台CourseServlet(包含上传课程信息与显示课程信息两个处理逻辑)
public void upload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filename = null; // 获得磁盘文件条目工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); // 获取文件需要上传到的路径 String path = request.getRealPath("/upload" );
// 如果没以下两行设置的话,上传大的 文件 会占用 很多内存, // 设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同 /** * 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem * 格式的 然后再将其真正写到 对应目录的硬盘上 */ factory.setRepository(new File(path)); // 设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室 factory.setSizeThreshold(1024 * 1024);
// 高水平的API文件上传处理 ServletFileUpload upload = new ServletFileUpload(factory); InputStream in =null; byte[] buf=null;//字节数组表示照片 try { // 可以上传多个文件 List list = (List) upload.parseRequest(request);
for (FileItem item : list) { // 获取表单的属性名字 String name = item.getFieldName();// title
// 如果获取的 表单信息是普通的 文本 信息 if (item.isFormField()) { // 获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的,表示表单的普通文本,如下拉列表,文本框,密码框等String value = item.getString("UTF-8"); // title content,设置格式防止出现乱码不匹配的情况 request.setAttribute(name, value); } // 对传入的非 简单的字符串进行处理 ,比如说二进制的 图片,电影这些 else { /** * 以下三步,主要获取 上传文件的名字,表示文本是上传控件 * 名字采用随机的方式设置的 */ // 获取路径名 String value = item.getName(); String suffix = value.substring(value.lastIndexOf(".")); filename = "pro"+String.valueOf(((new Date()).getTime())%10000000)+suffix; request.setAttribute(name, filename);
// 真正写到磁盘上 // 它抛出的异常 用exception 捕捉
// item.write( new File(path,filename) );//第三方提供的
// 手动写的,是将我电脑里的照片写在我服务器建立的upload文件夹下下面 OutputStream out = new FileOutputStream(new File(path, filename));
in = item.getInputStream();
int length = 0; buf = new byte[1024];//读1024个字节
System.out.println("获取上传文件的总共的容量:" + item.getSize());
// in.read(buf) 每次读到的数据存放在 buf 数组中 while ((length = in.read(buf)) != -1) { // 在 buf 数组中 取出数据 写到 (输出流)磁盘上 out.write(buf, 0, length);
}
in.close(); out.close(); } }
} catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }//以上servlet代码除了红字外其余都不变
String name=request.getAttribute("name").toString(); String detail=request.getAttribute("detail").toString(); String teacher=request.getAttribute("teacher").toString(); Course course=new Course(); course.setC_name(name); course.setC_detail(detail); course.setC_teacher(teacher);course.setC_picture(filename) ;//核心代码,把filename的字符串给video.setImages插入数据库 boolean flag= courseService.uploadCourse(course); if(flag){//上传成功 request.getRequestDispatcher("xyadmin.jsp").forward(request, response); }else{ request.getRequestDispatcher("uploadcourse.jsp").forward(request, response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String method=request.getParameter("method"); if("upload".equals(method) ){ upload(request,response); }else if("displayCourse".equals(method) ){ List listCourse=courseService.displayCourse(); request.setAttribute("list_displaycourse", listCourse); request.getRequestDispatcher("displayCourse.jsp").forward(request, response); } }
转载于:https://www.cnblogs.com/97chen629/p/10667158.html
你可能感兴趣的:(java,数据库,开发工具)
JAVA并发编程(四)-park-unpark
imperfectsam
java 开发语言
文章目录一、简介二、编写代码三、park和unpark原理一、简介 在Java中,park和unpark是java.util.concurrent.locks包中的LockSupport类提供的两个静态方法,用于线程的阻塞和解除阻塞。1、park方法用于阻塞当前线程,使其进入等待状态。 当一个线程调用park方法时,它会被阻塞,直到发生以下几种情况之一: -另一个线程调用了相应线程的unpa
Navicat操作指南:MySQL数据库配置与Todo应用部署
像风一样自由2020
数据库 mysql adb
Navicat操作指南:MySQL数据库配置与Todo应用部署前言本文档详细记录了使用Navicat管理MySQL数据库,并配置Todo应用的完整操作步骤。适用于使用Navicat作为MySQL管理工具的开发者。操作目标启动MySQL服务使用Navicat连接MySQL数据库创建todoapp数据库配置Todo应用环境变量验证应用正常运行步骤一:启动MySQL服务Windows用户方法1:通过Wi
mac装springboot_安装 Spring Boot CLI
2401DEM
mac装springboot
SpringBootCLI(CommandLineInterface)是一个命令行工具,可用于快速搭建基于Spring的原型。它支持运行Groovy脚本,这也就意味着你可以使用类似Java的语法,但不用写很多的模板代码。SpringBoot不一定非要配合CLI使用,但它绝对是让Spring应用进入状态的最快方式。手动安装你可以从Spring的软件仓库中下载SpringCLI分发包:一旦你下载完成后
JS获取 CSS 中定义var变量值
前端 贾公子
tensorflow 人工智能 python
目录示例代码CSS3:root选择器CSSStyleDeclarationgetPropertyValue()方法styleSheetscssRules关键特性使用示例注意事项典型应用场景WindowgetComputedStyle()方法WindowgetComputedStyle()方法和style的异同在JavaScript中,可以通过getComputedStyle()方法结合getPro
ThreadLocal 在 Spring 与数据库交互中的应用笔记
笑衬人心。
JAVA学习笔记 数据库 spring 笔记
一、基本概念1.1什么是ThreadLocal?ThreadLocal是Java提供的一个线程本地存储工具类。每个线程访问ThreadLocal时,都只能看到自己线程范围内的变量副本,线程之间互不影响。常用于保存线程上下文信息,如用户登录信息、事务状态、数据库连接等。ThreadLocalthreadLocal=newThreadLocal>resources=newNamedThreadLoca
九块九付费进群系统 wxselect SQL注入漏洞复现
0xSecl
漏洞复现v1 安全 web安全
0x01产品简介九块九付费进群系统是一种新的社群管理方式,用户通过支付9.9元人民币即可加入特定的微信群,享受群内提供的服务或资源。这种模式通常用于知识分享、资源下载、专业交流等社群,通过设置门槛来筛选成员,提高群组的专业性和互动质量。0x02漏洞概述九块九付费进群系统wxselect接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库中的信息(例如,管理员后台密码
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory node编译时的内存溢出
周不凢
node node.js
报错:FATALERROR:ReachedheaplimitAllocationfailed-JavaScriptheapoutofmemory原因:node编译时的内存溢出,因为打包文件过大,刚好超过内存的限制大小造成编译中断。解决方法1:通过package.json中的"build"加大内存增加--max_old_space_size参"scripts":{"dev":"nodebuild/d
深度对比:innerHTML vs 虚拟DOM——原理、性能与应用全解析
止观止
前端 前端框架 前端 html5 javascript reactjs xss
引言在现代Web开发中,高效操作DOM(文档对象模型)是构建高性能应用的关键。传统方法如innerHTML和新兴的虚拟DOM(VirtualDOM)技术代表了两种截然不同的DOM更新策略。innerHTML作为浏览器原生API,直接操纵HTML字符串;虚拟DOM则是通过JavaScript对象树进行优化更新,广泛应用于React、Vue等框架。本文深入对比两者的核心原理、技术细节、应用场景及优劣,
【MySQL】性能优化实战指南:释放数据库潜能的艺术
文章目录MySQL性能优化实战指南:释放数据库潜能的艺术引言为什么需要MySQL性能优化?性能优化基础知识MySQL性能瓶颈分析1.硬件资源瓶颈2.MySQL内部瓶颈优化配置策略大全内存配置优化InnoDB缓冲池配置查询缓存配置连接和线程配置磁盘I/O优化InnoDB存储引擎配置临时表配置独特优化创意配置创意1:分层存储优化创意2:动态配置自适应创意3:负载感知配置高级优化技巧并行处理优化索引和查
空指针异常是Java中很常见的异常,如何避免?
破碎的天堂鸟
Java学习 java 数据库 jvm
在Java编程中,空指针异常(NullPointerException)是一种常见的运行时异常,通常发生在尝试访问一个空对象的属性或调用其方法时。为了避免这种异常,可以采取以下几种方法:在使用对象之前,先判断该对象是否为null。例如:if(obj!=null){//对obj进行操作}这种方法是最直接且最常用的方法。Java8引入了Optional类,它提供了一种更优雅的方式来处理可能为空的对象。
Java:实现朴素模式匹配算法(附带源码)
Katie。
Java算法完整教程 算法 java python
1.项目背景详细介绍在文本处理、信息检索和生物序列分析等领域,“字符串模式匹配”是最基础也是最核心的操作之一。朴素模式匹配(NaiveStringMatching)算法,作为最直观的实现方式,通过逐个字符对比,查找模式串在目标文本中出现的位置。虽然现代应用中普遍采用更高效的KMP、Boyer–Moore、Sunday算法等,但理解并掌握朴素算法有助于:打牢基础:从最简单的实现入手,帮助初学者理解匹
毕业设计基于python + flask +mysql + Layui新闻系统项目源码
love0everything
flask python 课程设计
毕业设计基于python+flask+mysql+Layui新闻系统项目源码介绍该项目采用Flask框架开发,数据库采用mysql。这是一个作业项目。该项目采用Flask框架开发的一个新闻、论坛、博客系统。。前端采用的是layui框架,后端模板是X-admin下载地址:毕业设计基于python+flask+mysql+Layui新闻系统项目源码模块版本PyMysql1.0.2Flask1.1.2M
在Java中String类为什么不可以修改?
目录一、语言设计与实现层面的原因二、设计目标与优势三、如何绕过限制?(异常情况)四、替代方案:可变字符串总结在Java中,String类的不可变性(Immutable)是其核心设计之一,这种设计源于多方面的技术考量和实际需求。以下从多个角度解析String为什么不可以修改:一、语言设计与实现层面的原因final修饰类:String类被声明为final,意味着它不能被继承。这避免了子类通过重写方法或
java并发编程LockSupport之park/unpark
jmysql
java java
【尚学堂】Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程_Java语言入门到精通_哔哩哔哩_bilibili一、简介1.1主要方法Park/UnPark方法是LockSupport当中的方法。其常用方法有如下:park():暂停当前线程。park(Objectblocker):暂停当前线程,并指定负责此线程停放的同步对像。parkNanos(
PHP MySQL 读取数据
froginwe11
开发语言
PHPMySQL读取数据引言在Web开发中,PHP和MySQL是两个常用的技术栈。PHP作为服务器端脚本语言,而MySQL作为关系型数据库管理系统,两者结合能够构建强大的动态网站。本文将详细介绍如何使用PHP从MySQL数据库中读取数据,包括连接数据库、执行查询、处理结果等关键步骤。连接MySQL数据库在PHP中,首先需要连接到MySQL数据库。以下是一个示例代码,展示了如何使用mysqli扩展连
Java反射获取Class的三种方式
喵星人ZC
packagecom.sou.reflection.classpkg;importorg.junit.Test;importjava.lang.reflect.Method;/***反射获取Class的三种方式*1)Class.forName()*2)obj.getClass*3)class.class*/publicclassReflectionApp{//Class.forName()@Tes
时序数据库选型全指南:为什么越来越多企业选择IoTDB?
Loving_enjoy
计算机学科论文创新点 机器学习 facebook 课程设计 经验分享
>在工业物联网爆发式增长的今天,一台风力发电机每秒产生200+数据点,一座智慧工厂每天新增10亿级数据记录——传统数据库已无法承受时序数据的洪流。###时序数据:数字时代的脉搏时序数据(Time-SeriesData)是以时间戳为索引的连续数据流,广泛存在于物联网设备监控、金融交易记录、应用性能监测等场景。这类数据具有三大特性:-**海量性**:单个设备每秒可产生多条数据-**时效性**:新数据价
大数据时代下的时序数据库选型指南:基于工业场景的IoTDB技术优势与适用性研究
Loving_enjoy
计算机学科论文创新点 机器学习 facebook 经验分享 课程设计
>在宝钢集团的智能工厂里,5万多个传感器每秒产生150万+数据点,传统数据库系统每天积压3TB未处理数据——这揭示了工业4.0时代的核心矛盾:**海量时序数据处理能力已成为智能制造的关键瓶颈**。###工业时序数据的四大特殊性工业场景下的时序数据与传统互联网数据存在本质差异:1.**高精度时间要求**-数控机床振动监测需微秒级时间戳-电网故障定位要求时间同步精度≤1μs2.**多源异构性**```
Mysql基本语法到表设计
吴鹰飞侠
mysql 数据库
由于笔者之前了解过sql所以此篇仅作复习使用。1.MySQL基本语法1.1创建数据库createdatabaselogin_demo;1.2使用数据库uselogin_demo;1.3创建表CREATETABLEusers(idintprimarykeyauto_increment,usernamevarchar(50)notnull,passwordvarchar(255)notnull,ema
linux安装Node.js 环境,Docker 环境,Ruby 环境,MongoDB 环境,PostgreSQL 数据库,Go 开发环境,Python 虚拟环境
2401_87017622
数据库 linux node.js
在Linux上安装其他常见的开发环境可以根据具体需求而定,以下是一些常见的安装步骤:1.Node.js环境Node.js是一个基于ChromeV8引擎的JavaScript运行环境,适用于服务器端开发。安装Node.js:通过包管理器安装:sudoyuminstall-ygcc-c++makecurl-sLhttps://rpm.nodesource.com/setup_14.x|sudo-Eba
详解NIO Channel类
沧澜sincerely
Java 高并发 nio
目录什么是NIOChannel?为什么要学习NIOChannel?FileChannelSocketChannelDatagramChannel本篇文章内容的前置知识为NIOBuffer类,如果不了解,可点击链接学习详解NIOBuffer类及其属性和方法-CSDN博客什么是NIOChannel?在JavaNIO中,Channel(通道)是一种广义的I/O抽象,用于表示与数据源或数据目的地之间的连接
常用的折叠展开过渡动画效果css
如何实现优雅的折叠展开动画效果在现代Web设计中,折叠展开动画是一种常见且实用的交互方式,它可以帮助用户在保持界面简洁的同时,灵活控制内容的显示与隐藏。本文将分享如何使用HTML、CSS和JavaScript实现一个平滑流畅的折叠展开动画效果。基本原理折叠展开动画的核心原理是通过CSS过渡(transition)来控制元素的高度、内边距和其他样式属性的变化。当用户点击触发按钮时,JavaScrip
Redux架构解析:状态管理的核心原理
止观止
架构 前端 react.js redux
Redux作为JavaScript应用的状态管理库,其技术架构与核心原理围绕可预测的状态管理设计,通过严格的单向数据流和函数式编程理念实现复杂应用的状态控制。以下从设计理念、核心架构、工作流程、源码实现等角度进行系统性剖析:一、设计理念与原则单一数据源(SingleSourceofTruth)整个应用的状态存储在一个全局Store对象中,形成唯一的状态树(StateTree)。优势:简化状态共享和
Flink双流实时对账
在电商、金融、银行、支付等涉及到金钱相关的领域,为了安全起见,一般都有对账的需求。比如,对于订单支付事件,用户通过某宝付款,虽然用户支付成功,但是用户支付完成后并不算成功,我们得确认平台账户上是否到账了。针对上述的场景,我们可以采用批处理,或离线计算等技术手段,通过定时任务,每天结束后,扫描数据库中的数据,核对当天的支付数据和交易数据,进行对账。想要达到实时对账的效果,比如有的用户支付成功但是并没
一天学会超级玛丽小游戏_手把手教学_Java小游戏
62f5ecb72f71
超级玛丽是任天堂制作的一款小游戏,在的童年里一起玩这个游戏,大胡子,背带裤的马里奥,每关以马里奥在走到重点的前提下尽可能地收集金币。他在闯关过程中,会遇到怪物,可以通过踩死或者跳过。也会遇到深坑。给游戏增加了一定的难度。今天带大家用java制作制作这款小游戏,下面是课程介绍.课程介绍:在你的童年记忆里,是否有一个会蹦跳,会吃蘑菇的小人?超级玛丽是一款经典并且流行的小游戏,通过键盘来控制马里奥的移动
java LockSupport park() unpark() 的用法&和wait() notify()的区别
javaLockSupportpark()unpark()的用法ockSupport类是Java并发包中的一个工具类,提供了一些基本的线程阻塞和唤醒操作。其中,unpark(Threadthread)方法是用来唤醒指定线程的关键方法。下面详细解释一下unpark方法:unpark方法的作用:唤醒线程:unpark方法可以解除指定线程的阻塞状态,使其有机会继续执行。如果线程在调用park()之前被u
3步搞定Java漏洞修复?别再让黑客当“家”!
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣Java城堡的“裂缝”与程序员的救赎想象一下:你的Java应用是一座巍峨的城堡,而安全漏洞就是那些悄悄蔓延的裂缝。SQL注入:像是小偷从窗户溜进来,偷偷改写数据库的账本。XSS攻击:像在城堡里偷偷放了一张带毒的地毯,路过的人会被“刺”伤。SSRF漏洞:像让城堡
5大核心技术+3大交互革命!Java如何让虚拟世界‘活过来’?——附代码实战+防坑指南!
墨瑾轩
Java乐园 交互 java 开发语言
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣从“木头人”到“交互大师”的Java魔法之旅一、Java的“五大核心技术”——虚拟世界的“五感开关”1.1核心技术1:JOGL渲染引擎——“视觉中枢”作用:用OpenGL实现3D场景渲染代码示例://JOGL渲染循环:画一个旋转的立方体importjavax.
Java多线程、锁、线程池详解
Java多线程、锁、线程池详解在现代软件开发中,多线程编程是提高程序性能和响应能力的重要手段。Java提供了丰富的多线程支持,包括线程的创建、同步、通信以及线程池管理等。本文将深入探讨Java中的多线程、锁机制、线程池的原理和应用,并涵盖成员方法、并行、调度、同步、死锁、睡眠、唤醒以及线程状态等知识。一、多线程基础1.多线程的概念多线程允许程序同时执行多个任务,从而提高程序的执行效率。2.多线程的
A*算法详解
A*算法详解一、A*算法基础概念1.1算法定位1.2核心评估函数1.3关键数据结构二、A*算法的核心步骤三、启发函数设计3.1网格地图中的启发函数3.2启发函数的选择原则三、Java代码实现四、启发函数的设计与优化4.1启发函数的可采纳性4.2启发函数的效率影响4.3常见启发函数对比五、A*算法的应用场景与拓展5.1典型应用5.2算法拓展六、A*算法的优缺点优点缺点从游戏中的角色寻路到机器人导航,
枚举的构造函数中抛出异常会怎样
bylijinnan
java enum 单例
首先从使用enum实现单例说起。
为什么要用enum来实现单例?
这篇文章(
http://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html)阐述了三个理由:
1.enum单例简单、容易,只需几行代码:
public enum Singleton {
INSTANCE;
CMake 教程
aigo
C++
转自:http://xiang.lf.blog.163.com/blog/static/127733322201481114456136/
CMake是一个跨平台的程序构建工具,比如起自己编写Makefile方便很多。
介绍:http://baike.baidu.com/view/1126160.htm
本文件不介绍CMake的基本语法,下面是篇不错的入门教程:
http:
cvc-complex-type.2.3: Element 'beans' cannot have character
Cb123456
spring Webgis
cvc-complex-type.2.3: Element 'beans' cannot have character
Line 33 in XML document from ServletContext resource [/WEB-INF/backend-servlet.xml] is i
jquery实例:随页面滚动条滚动而自动加载内容
120153216
jquery
<script language="javascript">
$(function (){
var i = 4;$(window).bind("scroll", function (event){
//滚动条到网页头部的 高度,兼容ie,ff,chrome
var top = document.documentElement.s
将数据库中的数据转换成dbs文件
何必如此
sql dbs
旗正规则引擎通过数据库配置器(DataBuilder)来管理数据库,无论是Oracle,还是其他主流的数据都支持,操作方式是一样的。旗正规则引擎的数据库配置器是用于编辑数据库结构信息以及管理数据库表数据,并且可以执行SQL 语句,主要功能如下。
1)数据库生成表结构信息:
主要生成数据库配置文件(.conf文
在IBATIS中配置SQL语句的IN方式
357029540
ibatis
在使用IBATIS进行SQL语句配置查询时,我们一定会遇到通过IN查询的地方,在使用IN查询时我们可以有两种方式进行配置参数:String和List。具体使用方式如下:
1.String:定义一个String的参数userIds,把这个参数传入IBATIS的sql配置文件,sql语句就可以这样写:
<select id="getForms" param
Spring3 MVC 笔记(一)
7454103
spring mvc bean REST JSF
自从 MVC 这个概念提出来之后 struts1.X struts2.X jsf 。。。。。
这个view 层的技术一个接一个! 都用过!不敢说哪个绝对的强悍!
要看业务,和整体的设计!
最近公司要求开发个新系统!
Timer与Spring Quartz 定时执行程序
darkranger
spring bean 工作 quartz
有时候需要定时触发某一项任务。其实在jdk1.3,java sdk就通过java.util.Timer提供相应的功能。一个简单的例子说明如何使用,很简单: 1、第一步,我们需要建立一项任务,我们的任务需要继承java.util.TimerTask package com.test; import java.text.SimpleDateFormat; import java.util.Date;
大端小端转换,le32_to_cpu 和cpu_to_le32
aijuans
C语言相关
大端小端转换,le32_to_cpu 和cpu_to_le32 字节序
http://oss.org.cn/kernel-book/ldd3/ch11s04.html
小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高级的平台以另一种方式(大端)
Nginx负载均衡配置实例详解
avords
[导读] 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。负载均衡先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。
负载均衡
先来简单了解一下什么是负载均衡
乱说的
houxinyou
框架 敏捷开发 软件测试
从很久以前,大家就研究框架,开发方法,软件工程,好多!反正我是搞不明白!
这两天看好多人研究敏捷模型,瀑布模型!也没太搞明白.
不过感觉和程序开发语言差不多,
瀑布就是顺序,敏捷就是循环.
瀑布就是需求、分析、设计、编码、测试一步一步走下来。而敏捷就是按摸块或者说迭代做个循环,第个循环中也一样是需求、分析、设计、编码、测试一步一步走下来。
也可以把软件开发理
欣赏的价值——一个小故事
bijian1013
有效辅导 欣赏 欣赏的价值
第一次参加家长会,幼儿园的老师说:"您的儿子有多动症,在板凳上连三分钟都坐不了,你最好带他去医院看一看。" 回家的路上,儿子问她老师都说了些什么,她鼻子一酸,差点流下泪来。因为全班30位小朋友,惟有他表现最差;惟有对他,老师表现出不屑,然而她还在告诉她的儿子:"老师表扬你了,说宝宝原来在板凳上坐不了一分钟,现在能坐三分钟。其他妈妈都非常羡慕妈妈,因为全班只有宝宝
包冲突问题的解决方法
bingyingao
eclipse maven exclusions 包冲突
包冲突是开发过程中很常见的问题:
其表现有:
1.明明在eclipse中能够索引到某个类,运行时却报出找不到类。
2.明明在eclipse中能够索引到某个类的方法,运行时却报出找不到方法。
3.类及方法都有,以正确编译成了.class文件,在本机跑的好好的,发到测试或者正式环境就
抛如下异常:
java.lang.NoClassDefFoundError: Could not in
【Spark七十五】Spark Streaming整合Flume-NG三之接入log4j
bit1129
Stream
先来一段废话:
实际工作中,业务系统的日志基本上是使用Log4j写入到日志文件中的,问题的关键之处在于业务日志的格式混乱,这给对日志文件中的日志进行统计分析带来了极大的困难,或者说,基本上无法进行分析,每个人写日志的习惯不同,导致日志行的格式五花八门,最后只能通过grep来查找特定的关键词缩小范围,但是在集群环境下,每个机器去grep一遍,分析一遍,这个效率如何可想之二,大好光阴都浪费在这上面了
sudoku solver in Haskell
bookjovi
sudoku haskell
这几天没太多的事做,想着用函数式语言来写点实用的程序,像fib和prime之类的就不想提了(就一行代码的事),写什么程序呢?在网上闲逛时发现sudoku游戏,sudoku十几年前就知道了,学生生涯时也想过用C/Java来实现个智能求解,但到最后往往没写成,主要是用C/Java写的话会很麻烦。
现在写程序,本人总是有一种思维惯性,总是想把程序写的更紧凑,更精致,代码行数最少,所以现
java apache ftpClient
bro_feng
java
最近使用apache的ftpclient插件实现ftp下载,遇见几个问题,做如下总结。
1. 上传阻塞,一连串的上传,其中一个就阻塞了,或是用storeFile上传时返回false。查了点资料,说是FTP有主动模式和被动模式。将传出模式修改为被动模式ftp.enterLocalPassiveMode();然后就好了。
看了网上相关介绍,对主动模式和被动模式区别还是比较的模糊,不太了解被动模
读《研磨设计模式》-代码笔记-工厂方法模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 工厂方法模式:使一个类的实例化延迟到子类
* 某次,我在工作不知不觉中就用到了工厂方法模式(称为模板方法模式更恰当。2012-10-29):
* 有很多不同的产品,它
面试记录语
chenyu19891124
招聘
或许真的在一个平台上成长成什么样,都必须靠自己去努力。有了好的平台让自己展示,就该好好努力。今天是自己单独一次去面试别人,感觉有点小紧张,说话有点打结。在面试完后写面试情况表,下笔真的好难,尤其是要对面试人的情况说明真的好难。
今天面试的是自己同事的同事,现在的这个同事要离职了,介绍了我现在这位同事以前的同事来面试。今天这位求职者面试的是配置管理,期初看了简历觉得应该很适合做配置管理,但是今天面
Fire Workflow 1.0正式版终于发布了
comsci
工作 workflow Google
Fire Workflow 是国内另外一款开源工作流,作者是著名的非也同志,哈哈....
官方网站是 http://www.fireflow.org
经过大家努力,Fire Workflow 1.0正式版终于发布了
正式版主要变化:
1、增加IWorkItem.jumpToEx(...)方法,取消了当前环节和目标环节必须在同一条执行线的限制,使得自由流更加自由
2、增加IT
Python向脚本传参
daizj
python 脚本 传参
如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[
管理用户分组的命令gpasswd
dongwei_6688
passwd
NAME: gpasswd - administer the /etc/group file
SYNOPSIS:
gpasswd group
gpasswd -a user group
gpasswd -d user group
gpasswd -R group
gpasswd -r group
gpasswd [-A user,...] [-M user,...] g
郝斌老师数据结构课程笔记
dcj3sjt126com
数据结构与算法
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
yii2 cgridview加上选择框进行操作
dcj3sjt126com
GridView
页面代码
<?=Html::beginForm(['controller/bulk'],'post');?>
<?=Html::dropDownList('action','',[''=>'Mark selected as: ','c'=>'Confirmed','nc'=>'No Confirmed'],['class'=>'dropdown',])
linux mysql
fypop
linux
enquiry mysql version in centos linux
yum list installed | grep mysql
yum -y remove mysql-libs.x86_64
enquiry mysql version in yum repositoryyum list | grep mysql oryum -y list mysql*
install mysq
Scramble String
hcx2013
String
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.
Below is one possible representation of s1 = "great":
跟我学Shiro目录贴
jinnianshilongnian
跟我学shiro
历经三个月左右时间,《跟我学Shiro》系列教程已经完结,暂时没有需要补充的内容,因此生成PDF版供大家下载。最近项目比较紧,没有时间解答一些疑问,暂时无法回复一些问题,很抱歉,不过可以加群(334194438/348194195)一起讨论问题。
----广告-----------------------------------------------------
nginx日志切割并使用flume-ng收集日志
liyonghui160com
nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。第二步向nginx主
Oracle死锁解决方法
pda158
oracle
select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a.process=b.process and c.object_id=b.
java之List排序
shiguanghui
list排序
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。 你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递
servlet单例多线程
utopialxw
单例 多线程 servlet
转自http://www.cnblogs.com/yjhrem/articles/3160864.html
和 http://blog.chinaunix.net/uid-7374279-id-3687149.html
Servlet 单例多线程
Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的