// 与坚果云WebDAV服务器建立连接,返回sardine对象以进行操作
fun initSardine(): OkHttpSardine {
val sardine = OkHttpSardine()
// 此处的账号和第三方密码口令均请填入自己的
// 坚果云的账号
val userName = "[email protected]"
// 授权给第三方应用的密码口令
val passWord = "aqkgubiy4z55rc6p"
// 建立连接
sardine.setCredentials(userName, passWord)
// 返回sardine对象
return sardine
}
在坚果云生成第三方应用密码口令的方式请参考坚果云官方文档
3.2新建文件夹/目录至云端
fun createDir(sardine: OkHttpSardine) {
val dirPath = "https://dav.jianguoyun.com/dav/我的坚果云/demo_webdav文件夹"
sardine.createDirectory(dirPath)
}
3.3检查云端文件存在性
fun checkExistence(sardine: OkHttpSardine): Boolean {
val dirPath = "https://dav.jianguoyun.com/dav/我的坚果云/demo_webdav文件夹"
return sardine.exists(dirPath)
}
3.4上传文件至云端:将String变量转换为byte字节数组上传至网盘
fun uploadFile(sardine: OkHttpSardine, fileContent: String) {
val filePath = "https://dav.jianguoyun.com/dav/我的坚果云/demo_webdav文件夹/测试文本.txt"
// 将变量转变为byte字节数组,以传输到网盘
val data = fileContent.toByteArray()
sardine.put(filePath, data)
}
3.5下载云端文件方法:以输入流的形式读取,并转换为String变量存储
fun downloadFile(sardine: OkHttpSardine): String {
val filePath = "https://dav.jianguoyun.com/dav/我的坚果云/demo_webdav文件夹/测试文本.txt"
val download = sardine.get(filePath)
// 以输入流的形式读取下载的文件,并转换为字符串
val fileContent = BufferedReader(InputStreamReader(download)).useLines { lines ->
val results = StringBuilder()
lines.forEach {
results.append(it)
}
results.toString()
}
return fileContent
}
3.6重命名或移动文件(夹)的方法:
fun moveOrRenameFile(sardine: OkHttpSardine) {
val oldPath = "https://dav.jianguoyun.com/dav/我的坚果云/demo_webdav文件夹"
val newPath = "https://dav.jianguoyun.com/dav/我的坚果云/renamed_or_moved_demo_webdav文件夹"
sardine.move(oldPath, newPath)
}
3.7删除云端文件(夹)方法:
fun deleteFile(sardine: OkHttpSardine) {
val filePath = "https://dav.jianguoyun.com/dav/我的坚果云/moved_demo_webdav文件夹"
sardine.delete(filePath)
}
四、MainActivity中调用
4.1布局预览
4.2绑定视图控件
val show = findViewById(R.id.show)
val createButton = findViewById
Context Bound,上下文界定,是Scala为隐式参数引入的一种语法糖,使得隐式转换的编码更加简洁。
隐式参数
首先引入一个泛型函数max,用于取a和b的最大值
def max[T](a: T, b: T) = {
if (a > b) a else b
}
因为T是未知类型,只有运行时才会代入真正的类型,因此调用a >
最近用到企业通讯录,虽然以前也开发过,但是用的是jsf,拼成的树形,及其笨重和难维护。后来就想到直接生成json格式字符串,页面上也好展现。
// 首先取出每个部门的联系人
for (int i = 0; i < depList.size(); i++) {
List<Contacts> list = getContactList(depList.get(i
servlet3.0以后支持异步处理请求,具体是使用AsyncContext ,包装httpservletRequest以及httpservletResponse具有异步的功能,
final AsyncContext ac = request.startAsync(request, response);
ac.s
甲说:
A B两个表总数据量都很大,在百万以上。
idx1 idx2字段表示是索引字段
A B 两表上都有
col1字段表示普通字段
select xxx from A
where A.idx1 between mmm and nnn
and exists (select 1 from B where B.idx2 =
@Repository、@Service、@Controller 和 @Component 将类标识为Bean
Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类
先看一下下面的错误代码,对写加了synchronized控制,保证了写的安全,但是问题在哪里呢?
public class testTh7 {
private String data;
public String read(){
System.out.println(Thread.currentThread().getName() + "read data "
网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下:
首先先去下载一个mongodb最新版,目前最新版应该是2.6
cd /usr/local/bin
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz
tar -zxvf mongodb-linux-x86_64-2.6.0.t
1.rust里绑定变量是let,默认绑定了的变量是不可更改的,所以如果想让变量可变就要加上mut。
let x = 1; let mut y = 2;
2.match 相当于erlang中的case,但是case的每一项后都是分号,但是rust的match却是逗号。
3.match 的每一项最后都要加逗号,但是最后一项不加也不会报错,所有结尾加逗号的用法都是类似。
4.每个语句结尾都要加分