在Onedrive for Business(以下简称ODB)中创建一个文件是非常轻松的一件事: 选择想要的路径,设置文件名,选择文件内容(文件内容大部分时候都是来自于其他action,比如邮件附件或者...forms附件等,这里为了简化流程,随便写了一个): 点击运行,就可以在文件夹中找到这个文件: 但是,如果我们想要创建一个文件夹呢?...比如我们在文件夹路径的后边继续输入“/测试生成路径”: 结果它也照样生成了这个文件,并且还为我们创建了一个新的文件夹: 答案呼之欲出了: 我们将这个a.txt文件删掉,不就达到了创建一个空文件夹的目的了吗...添加一个ODB的删除文件,选择上一步生成文件的ID: 在ODB中查看,果然生成了一个空文件夹。 我们再看一眼所需的时间,只需要14ms,根本忽略不计。...结论: Power Automate flow虽然并没有给我们提供一个单独的action来实现在ODB中创建空白文件夹,但是我们通过一点小技巧就可以巧妙的实现。
当你在使用 Lombok 的 @Data 注解时,其实会有一些坑需要关注,今天就让我们来见识一下。...@Data注解 内部实现 由上面的表格我们可以知道,@Data是包含了@EqualsAndHashCode的功能,那么它究竟是如何重写equals()和hashCode()方法的呢?...如果你不信的话,我们再来创建一个类TestB,它是TestA的子类: @Data public class TestB extends TestA { private String name;...,如果两个子类对象,其子类中的属性相同、父类中的属性不同时,利用equals()方法时,依旧会认为这两个对象相同,测试一下: public static void main(String[] args...总结 以上便是我在使用@Data时碰到的问题以及自己的一些思考,在现在的项目,我干脆不再使用该注解。如果你有什么想法,欢迎在下方留言。
1.系统 win10 2.注册表的打开 按下 win + r 输入 regedit 确定/回车之后即可打开注册表 3.删除新建中的内容 比如下面这个Skin Builder Style Project...内容我不想要了 上图中选择新建后会新建这个文件 记下它的后缀名 .cjstyles 打开注册表,在HKEY_CLASSES_ROOT项下寻找....找到.cjstyles删除即可 4.增加新建中的内容 以新建markdown文件为例 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\....HKEY_CLASSES_ROOT\.md\ShellNew] "NullFile"="" [HKEY_CLASSES_ROOT\Typora.exe] @="Markdown" 后缀修改为.reg后运行 上面[]中的即为注册表中的路径...@="Typora.exe" 表明使用Typora.exe打开 @="Markdown" 表明新建时右键菜单中的选项名为Markdown "NullFile"="" 表明新建后的文件名字为默认的新建 Markdown.md
1,清空文件夹的内容: $ echo ” ” > aa.log 即 echo ” ” > “要清空的文件” 2,创建文件 $ touch aa.txt 即touch “文件名” 3,创建文件夹...$ mkdir aa 4,创建多级文件夹 $ mkdir aa/aa.txt 5,scp(跨服务区复制文件) scp aa repos@10.250.1.200:/apps scp “文件名” 要复制到的服务器用户名...@服务器IP:目录 6,scp(跨服务区复制文件夹) scp -r aa repos@10.250.1.200:/apps
. */ public class FileUtils { private static final String TAG = "FileUtils"; /** * 创建文件...file.exists()) { /** 注意这里是 mkdirs()方法 可以创建多个文件夹 */ file.mkdirs(); }...} } else { return true; } return false; } /** * 遍历文件夹下的文件...file.delete(); } } } return true; } /** * 向文件中添加内容...(覆盖或者添加) * * @param path 文件地址 * @param content 覆盖内容 * @param append 指定了写入的方式,
[data-status="active"]:选中 data-status 属性值完全等于 active 的元素。 [data-status*="pen"]:选中属性值包含 pen 的元素。...示例 3:结合伪元素动态显示内容 div[data-status]::after { content: " (" attr(data-status) ")"; color: gray;...div[data-status~="active"] { font-weight: bold; } 只要属性值中包含独立的 active,就会被选中。...如需动态控制这些属性,推荐使用 CSS 变量(--var)或 JS。 5. 兼容性与注意事项 所有现代浏览器均支持 data-* 属性和 CSS 属性选择器。 IE8 及以上支持,但需声明 data-status="value"])能根据属性值精准匹配并应用样式。 配合 attr() 可在伪元素中动态显示属性值。
Spring Boot中Spring data注解的使用 Sring data JPA为我们提供了很多有用的注解,方便我们来实现各种复杂的功能。...Spring Data不仅可以用于JPA, 它还有很多其他的数据提供方,JPA只是其中的一个具体实现。...可以放在方法上,也可以放在class上面,如果放在class上面则说明该class中的所有方法都适用于Transactional。...@NoRepositoryBean 有时候我们在创建父Repository的时候,我们不需要为该父Repository创建一个具体的实现, 我们只是想为子Repository提供一个公共的方法而已,这时候...Spring Data JPA Annotations Spring Data JPA Annotations是来自于spring-data-jpa包的。
[data-status="active"]:选中data-status属性值完全等于active的元素。[data-status*="pen"]:选中属性值包含pen的元素。...[data-status^="act"]:选中属性值以act开头的元素。[data-status$="ing"]:选中属性值以ing结尾的元素。...示例3:结合伪元素动态显示内容展开代码语言:CSSAI代码解释div[data-status]::after{content:"("attr(data-status)")";color:gray;}会在元素后面动态显示...div>可以用:展开代码语言:CSSAI代码解释div[data-status~="active"]{font-weight:bold;}只要属性值中包含独立的active,就会被选中。...如需动态控制这些属性,推荐使用CSS变量(--var)或JS。5.兼容性与注意事项所有现代浏览器均支持data-*属性和CSS属性选择器。IE8及以上支持,但需声明。
RetentionPolicy.RUNTIME) 当前注解参与代码运行 然后,需要有个.java文件 @MyAnnotation(FilePath = "F:\\test\\day25\\StudentSystemV1.4\\data...str = annotation.FilePath(); System.out.println(str); } } 输出结果 F:\test\day25\StudentSystemV1.4\data
你也可能想为你的布局创建不同的数据源。 同样的问题也会在ViewStubs中发生。...当你使用Picasso加载图片的时候,你需要为他实现一个自定义的data binding adapter,那样的话你就不能作为依赖mock和注入了。...我们可能会试着做些更复杂的事情: 在layout中增加presentation的逻辑。 ? 在listeners中增加Lambda表达式。 ? 在layouts中使用导入的class类。 ?...当我们有一系列的视图触发同样的操作的时候,多视图绑定和多监听器绑定会让我们少写很多代码,例如:一系列的EditText和Buttons。 而如果你使用Data Binding库将得不到这些功能。...为什么你会使用Data Binding 1、我可以开发的更快 长远来看,快速并不一定总是好的。当我们开发app的时候,我们是在跑一场马拉松而不是一次百米冲刺……不是吗?
Android中的drawable resource的属性太多,进阶路上必须要记住啊 看了下面的一段code就明白了: 的意思 android:color 指定填充的颜色 gradient 渐变 android:startColor 起始颜色 android...android:gradientRadius="50") stroke 描边 android:width="2dp" 描边的宽度 android:color...我们还可以把描边弄成虚线的形式,设置方式为: android:dashWidth="5dp" 表示'-'这样一个横线的宽度 android:dashGap="3dp..." 表示之间隔开的距离 corners 圆角 android:radius 为角的弧度,值越大角越圆。
介绍 之前介绍了如何使用命令行将Jar包根据配置文件进行ProGuard,以及ProGuard的过程,会遇到的问题等。接下来会介绍常用的ProGuard如何配置参数。...不常用的可以在官网中查询如何使用。 java -jar proguard.jar @myconfig.pro Filter 每一个类、属性、方法都会有一个全名,例如java.lang.String。...这些文件不会被打包到output jar包中。指定的Library应该至少包含一个Class文件被Application Class文件中使用extended继承了。..., android.util.AttributeSet, int); public void set*(...); } -keepclassmembers Keep住类中的成员。...的使用
前言 Android原生的多线程和异步处理简直糟透了,反复的嵌套让代码看起来十分不明了,多线程上也没有iOS的dispatch好用,但是用了Rxjava后就会有所改善,虽然代码量看起来会多一点,但是逻辑就清晰多了...在一个正确运行的事件序列中, onCompleted() 和 onError() 有且只有一个,并且是事件序列中的最后一个。...的性能较高 Single: 和Observable,Flowable一样会发送数据,不同的是订阅后只能接受到一次 普通Observable可以使用toSingle转换:Observable.just...看上去是发布者订阅了订阅者,之所以这样是因为链式代码的优雅 线程(Scheduler) 常用的方式是分线程中处理数据,主线程中使用数据生成页面 Observable .create(new ObservableOnSubscribe...而不是错误的前一个事件 Android中应用 添加依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation
Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时...为了简化操作,Android1.5提供了工具类android.os.AsyncTask,它使创建异步任务变得更加简单,不再需要编写任务线程和Handler实例即可完成相同的任务。...在使用的时候,有几点需要格外注意: 1.异步任务的实例必须在UI线程中创建。 2.execute(Params... params)方法必须在UI线程中调用。...)方法里,使用下面这种方式取得消息中附带的对象: AsyncTaskResult result = (AsyncTaskResult) msg.obj; 这个AsyncTaskResult究竟是什么呢,...它又包含什么内容呢?
前言 经常我们会有这样的需求,B页面操作后,要求A页面处理相关数据,像这样一般我们都是,要么B页面保留A页面的引用,要么使用广播,但是写起来还是想对麻烦的,用Rxbus就可以很容易和优雅的解决 相同功能的组件用的比较多的有...Otto(不再维护不推荐使用)和EventBus 如果我们的项目使用Rxjava的话 我就比较推荐用Rxbus了 如果项目中没有使用Rxjava 那还是使用EventBus 吧 毕竟Rxbus...只有500+的Star 而EventBus可是1W+ 而且Rxbus`很多地方还不完善 使用 总的来说 我们要做的无外乎两件事:发送事件 和 接受事件 但是接受事件的对象一定要先注册到Rxbus中...接收方 会根据 设置的Tag和返回的数据类型来调用相应的方法,于方法名无关 当然也可以不写tags和thread 默认tags为rxbus_default_tag 默认thread为EventThread.MAIN_THREAD...只和tags和传入的参数类型有关 需要注意的是数据类型不能为interface类型 也就是说数据类型不能像List这样,必须为ArrayList这样的 如果
使用Android studio3.2,在gradle中中配置: 在project的bulid.gradle中增加: classpath 'com.google.protobuf:protobuf-gradle-plugin...在APP目录下的buid.gradle中,增加: apply plugin: 'com.google.protobuf' android { sourceSets { main {...,建立文件夹proto,所有的proto文件,放置在这里。...然后,点击Sync Project就可以在 Generate/debug/文件夹下自动生成GpsData.java文件啦。这个文件不要改动也无需改动。...最后给个使用的demo,序列化和反序列化: package com.newcapec.testsqllite.protobuf; import com.google.protobuf.InvalidProtocolBufferException
AVD路径设置 前面提到,不管用Eclipse还是从命令行创建Android Emulator时,相应的文件是被放置到 “C:\Documents and Settings\Administrator...如果想改变AVD的路径设置,也有2个办法 解决办法一: 新添加一个环境变量,名字为 "ANDROID_SDK_HOME”,然后把变量值改为你想将".android”文件夹(AVD信息)所放置的位置...解决办法二: 修改配置文件中的路径,比如我的AVD名称是MyAVD, 打开 C:\Documents and Settings\Administrator\.android\avd...目录中的文件MyAVD.ini文件,找到 target=android-5path =C:\Documents and Settings\Administrator...android配置运行的时候出现无法找到PANIC: Could not open: C:\Users\Administrator\.android/ 因为你打不开,那个文件夹可能加密了,换个路径,比如换到
前言 在一年前,和朋友一起码了一个英语APP,仿照某APP实现了单词的功能,最开始就是借助的TextToSpeech,后面感觉声音不够好听,于是使用了第三方 APP初稿如图: 实现 1.初始化语音。...int result = mTts.setLanguage(Locale.CHINA); if (result == TextToSpeech.LANG_MISSING_DATA...Log.e(TAG, "语言数据丢失或不支持该语言"); } else { //检查文档中其他可能的结果代码。...Log.e(TAG, "语言数据丢失或不支持该语言"); } else { //检查文档中其他可能的结果代码。...="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width
最终的效果如下: main.xml代码如下: android="http://schemas.android.com/apk/res/android" android:layout_width="...android:layout_height="wrap_content" android:completionHint="请选择你喜欢的歌曲" android:completionThreshold...; import android.widget.ImageView; public class AndroidDemo5Activity extends Activity { // 定义字符串数组作为提示的文本...Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); // 创建一个
Android开发中Fragment主要用来提供更灵活的界面构造形式,顾名思义,英语中fragment一词就是片段的意思。...我们可以创建一个扩展自Fragment的类,在重载的onCreateView方法中填充xml定义的布局,然后在其容器Activity所使用的xml布局文件中,像引入其它视图组件一样对其进行引入。...在作为容器的Activity代码中使用FragmentManager可以获取到对这个Fragment的引用。...,同时在Fragment类中定义该接口类型的一个成员,在重载的onAttach中获取容器activity引用,赋值给该成员。...这样当触发了Fragment中的某个组件的事件时,就能调用该接口的方法,实现Fragment向容器Activity传递消息和数据了。