grails小节

上传文件插件:jquery.fileupload.js

当没有href时写成这样可以避免上下滑动产生错误

前端设计时预留错误msgbox div 在提交前一个个进行判断 并且出错return 防止执行下去;

前端向后端传参数时不可以传数组(字符串数组,数字数组等),必须拼成字符串传输同时在后端split得到数组;

Json转换请留意;

obj.save flush:true;

下面说说groovy file操作

1.通过 request.getFile("files")获得后端传来的file类型

2.file.getOriginalFileName()获得文件名

3.在保存文件时,注意要给文件命名唯一的目录,一般采取:目录名称随机字符串的方式

4.根据filePath new一个file类,dstFile = new File(filePath)

5.或得文件路径目录   fileDir = dstFile.parentFile

6.在上传文件之前,如果没有fileDir需要先mkdir,然后将文件上传file.transferTo(dstFile)

7.删除文件记录的时候同时要删掉文件


groovy的synchronized(加锁,多线程的环境下,控制synchronized代码段不被多个线程同时执行)

synchronized(this){

// block

}

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码;

当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。

尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞

在判断目录是否存在时,不存在则创建时,在synchronized(this){}块里执行;一把钥匙一把锁时最安全的。

groovy Thread类,在上传文件过程中,比较慢,防止等待。

一个多线程程序包含两个或多个能并发运行的部分。程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径。

多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。

这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守候线程都结束运行后才能结束。

多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。

你可能感兴趣的:(grails小节)