vue 目录解析

vue 目录解析

├── build/ # webpack config files / webpack 配置文件
│ └── …
├── config/
│ ├── index.js # main project config / 项目主要配置
│ └── …
├── src/ # 主要的项目开发文件都在这个目录下:
│ ├── main.js # app entry file / 应用入口文件
│ ├── App.vue # main app component / App 父组件
│ ├── components/ # ui components / 可复用的 ui 组件
│ │ └── …
│ ├── assets/ # module assets (processed by webpack) / 模块资源(经过 webpack 处理,如文件合并,图片压缩等)
│ │ └── …
│ ├── page/ ## 以页面为单位的 .vue 文件
│ │ ├── index.vue ## 一级 router-view,顶部导航栏和左侧侧边导航栏
│ │ ├── 404.vue ## 404 页面
│ │ ├── menu1/ ## 二级 router-view,导航切换后的页面内容
│ │ │ └── …
│ │ └── menu2/ ## 按照菜单项创建文件夹对文件进行组织管理
│ │ └── …
│ └── router/
│ └── index.js # 路由配置文件
├── static/ # pure static assets (directly copied) / 纯静态资源(直接拷贝使用,不经过 webpack 处理)
├── .babelrc # babel config
├── .eslintrc.js # eslint config
├── .editorconfig # editor config
├── index.html # index.html template
├── package.json # build scripts and dependencies
└── …

关闭Eslint:
build/webpack.base.conf.js
module: {
rules: [
// {
// test: /.(js|vue)$/,
// loader: ‘eslint-loader’,
// enforce: “pre”,
// include: [resolve(‘src’), resolve(‘test’)],
// options: {
// formatter: require(‘eslint-friendly-formatter’)
// }
// },
{
test: /.vue$/,
loader: ‘vue-loader’,
options: vueLoaderConfig
},

]
},

java List 删除数据问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 void test() {
List<String> list =
new ArrayList<>(Arrays.asList("a", "b", "c", "d", "e");
);
//第一种方式
for (String str : list) {
if (str.contains("b" )) {
list.remove(str);
}
}

//第二种方式
int size = list.size();
for (int i = 0; i < size; i++) {
String str = list.get(i);
if (str.contains("b" )) {
list.remove(i);
}
}


//第三种方式
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if (str.contains("b" )) {
list.remove(i);
}
}


//第四种方式
for (Iterator<String> ite = list.iterator(); ite.hasNext(); ) {
String str = ite.next();
if (str.contains("b" )) {
ite.remove();
}
}

//第五种方式
for (Iterator<String> ite = list.iterator(); ite.hasNext(); ) {
String str = ite.next();
if (str.contains("b" )) {
list.remove(str);
}
}
}

方式一:报错java.util.ConcurrentModificationException
方式二:报错:下标越界 java.lang.IndexOutOfBoundsException
list大小会发生变化,索引也会变化。导致你在遍历的时候漏掉某些元素,当删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的元素都会往前移动一位,所以实际访问的是第3个元素,因此,这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用。
方式三:正常删除,不推荐,每次循环都需要计算list的大小,效率低。
方式四:正常删除,推荐使用
方式五:报错:java.util.ConcurrentModificationException

Fragment库区别

在做项目时,同事把基础fragment类中的Android.support.v4.app.Fragment改成了android.app.Fragment,导致了一些问题,今天特别来标注一下:

强烈推荐使用android.support.v4.app.Fragment,不过依然要了解为什么??

1.最低支持版本不同

android.app.Fragment 兼容的最低版本是android:minSdkVersion=”11” 即3.0版

android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion=”4” 即1.6版

2.需要导jar包

fragment android.support.v4.app.Fragment 需要引入包android-support-v4.jar

3.获取manager的方法不同

android.app.Fragment使用getFragmentManager()

android.support.v4.app.Fragment使用getSupportFragmentManager()

注意:

android.support.v4.app.Fragment不能使用标签

而且想用fragment+viewpager只能使用android.support.v4.app.Fragment,因为FragmentPagerAdapter就是android.support.v4.app.Fragment才有。

切记!! android.support.v4.app.Fragment与android.app.Fragment不要混用。

swiftype账号与教程

 
首先,老一套的要去swiftype的网站https://swiftype.com注册一个账号,然后根据指引建立好自己网站对应的索引。
对了有人说注册以后是30天试用,这个没关系,网站给的是30天高级账户的使用
(那种有可以建立多个搜索引擎、多账户共同管理、一个引擎index多个域名的功能的账户),
30天到期后你可选择花钱继续用这个高级账户(土豪自便),或者选择降级成为免费的账户类型,
也就是我现在用的那种,所以,不用担心。
登陆后会自动切换到dashboard,一开始会有什么welcome to swiftype,不用搭理直接close即可。
然后下面的Create an engine选项便出现了,点吧,如图所示:

https://github.com/ppoffice/hexo-theme-icarus/wiki/Search
此处输入图片的描述
然后到下一步,给你的网站建立一个索引:
此处输入图片的描述
接着让你输入网址,写吧:
此处输入图片的描述
然后让你起个名字,起吧:
此处输入图片的描述
然后他开始抓取你网站的数据,等等吧:
此处输入图片的描述
抓好之后你的dashboard会变成这个样子:
此处输入图片的描述
可以点进去看看抓了些什么数据:
此处输入图片的描述
此处输入图片的描述
最后点击菜单的右边 interface 下的 install serarch
复制出key 即可。
然后打开 icarus配置搜索引擎的教程按教程即可
https://github.com/ppoffice/hexo-theme-icarus/wiki/Search