-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.xml
More file actions
55 lines (44 loc) · 9.22 KB
/
Copy pathindex.xml
File metadata and controls
55 lines (44 loc) · 9.22 KB
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
47
48
49
50
51
52
53
54
55
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>godvvvvvv的博客</title>
<link>godvvvvvv.github.io/</link>
<description>Recent content on godvvvvvv的博客</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-Hans</language>
<lastBuildDate>Thu, 03 Sep 2020 21:41:42 +0800</lastBuildDate>
<atom:link href="godvvvvvv.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>关于Collection体系的一点总结</title>
<link>godvvvvvv.github.io/posts/%E5%85%B3%E4%BA%8Ecollection%E4%BD%93%E7%B3%BB%E7%9A%84%E4%B8%80%E7%82%B9%E6%80%BB%E7%BB%93%C3%A3/</link>
<pubDate>Thu, 03 Sep 2020 21:41:42 +0800</pubDate>
<guid>godvvvvvv.github.io/posts/%E5%85%B3%E4%BA%8Ecollection%E4%BD%93%E7%B3%BB%E7%9A%84%E4%B8%80%E7%82%B9%E6%80%BB%E7%BB%93%C3%A3/</guid>
<description>关于Collection体系做一点点总金额,可能很乱,但是是自己所能学到的想到的。 大概分为三个部分,list,set,map。 对于list和set而言 list本质上就是一个数组,list和set之间的显而易见的区别在于能否有重复的元素,set是会自动去重的。 要注意的是他们都是接口,千万不可以直接去new一个实例,例如这样 Set&lt;Object&gt; set = new Set&lt;&gt;;这样是不对的!!! 他们提供了很多方便的方法来供我们使用。 size()用来得到数组长度的函数;isEmpty用来判断数组是否为空;contains()用来判断是否包含某个元素。 add()添加一个元素;addall()把某个list的元素全都添加进来;a.retainAll(b)用来找到ab共有的元素。 clear()删除所有元素;remove()删除某个元素;a.removeAll(b)用来删除a中b的元素。 讲到的可能的面试题 扩容的原理:当一直向一个ArrayList中添加元素事,程序会帮你首先查看是否有足够的内存装得下要添加的元素,如果不够会再重新创建一个新的ArrayList,并 把旧的里面的元素复制进新的里面,新的长度是旧的1.5倍大小。 对于set的一点点总结 对于set对象如何去重,其实就是利用equals方法来判断。 在判断两个对象是否相等之前,会首先判断两个对象的hash是否相等,因为判断hashcode的过程效率更高。两个不同的对象也有可能拥有相同的hashcode,故而 对象相同,hashcode一定相同,hashcode不同那么对象一定不等了。 注意HashSet是无序的,linkedHashSet是根据你输入的顺序排序的。 java世界第二重要的约定: 同⼀个对象必须始终返回相同的hashCode 两个对象的equals返回true,必须返回相同的hashCode 两个对象不等,也可能返回相同的hashCode 关于Map Map内存放并不仅仅是一个个个体的元素,而是一对一对的映射!(键-&gt;值)注意这里的区别。 同样的Map仅仅只是一个接口,需要实例化的时候,HashMap是一个常用的选择。 提供的方法 put/putAll有点类似于以上的add/addAll get()通过键来查找相应的value containsKey()/containsValue()分别为是否包含相应的键或者值 keyset为把Map对象中的键拿出来放到一个set对象中去;values()来返回所有的值到一个collection中;entryset()来返回Map中的键值对到一个set中 红黑树的被用于jdk7以后解决hash碰撞问题导致的效率大幅下降 另外,HashMap并不是线程安全的,在多线程访问中,可能会造成死循环,以至于cpu100%。 </description>
</item>
<item>
<title>Maven的包管理</title>
<link>godvvvvvv.github.io/posts/maven%E7%9A%84%E5%8C%85%E7%AE%A1%E7%90%86/</link>
<pubDate>Wed, 02 Sep 2020 15:20:23 +0800</pubDate>
<guid>godvvvvvv.github.io/posts/maven%E7%9A%84%E5%8C%85%E7%AE%A1%E7%90%86/</guid>
<description>一.什么是包,类是从哪里找到的 要说包,首先要说到jvm的工作原理啊,jvm的工作原理就是去执行一个类的字节码,如果在执行这个类的过程中碰到新的类,那就加载它。 那么去哪里加载这个碰到的类呢?答案就是类路径(classpath)中挨个去查找相应的类,找到了则加载,找不到则报错。 那么什么是包呢,其实就是把许多类打包到一起的一个“压缩包“。 但是事情没有这么简单,你在运行你的类的时候碰到了一个新的类,难道只需要加载这个嘛?答案当然是否定的,在加载新的类的时候,新的类又引入了其他的类,则又要去加载 另一个新的类,这就是所谓的”传递性依赖“。 还记得类的唯一标识是他的全限定类名,但是当传递性依赖引入了两个同名(不同版本的,功能上存在差异的)的包,那么问题就来了。 二.Maven的包管理 Maven可以帮你快速的自动下载你所需要的包 包管理的本质就是告诉jvm去哪里找到所需要的第三方类库,以及成功的解决其中的”包冲突“。 在maven的中央仓库中存放了所需要的所有的第三方类库,在我们需要引入第三方类库的时候,maven就可以快速的缓存来供我们使用。 在pom.xml文件中的dependency标签下存放了我们所需要的引入的第三方类库,他一共有三个必须的标签,分别是groupId/artifactId/version,三者共同决定了你所需要的包位于 maven中央仓库的位置,有的还有scope这样一个标签,来表示这个依赖所作用的范围,其中比较常见的compile作用于全局,test作用于测试代码中。这样可以达到快速检索并找到所需要包的效果,大大的提升了效率。 Maven可以帮助你解决包冲突 包冲突来自于传递性依赖,因为依赖的存在,导致引入了同名的包。 Maven的原则是在classpath中绝对不允许出现同名不同版本的jar包,如果你不小心引入了,那么根据这个原则Maven会自动地帮你解决掉一部分,直到只剩下一个!Maven解决掉多余的包的原则是 根据dependencytree谁离根节点约近谁就胜出,胜出者就可以留下。 但是我们不一定希望近的胜出,因为近的那个包的版本不一定是最新的,他不一定支持其他的依赖。 三.解决包冲突的办法 在解决包冲突之前我们需要知道问题出在了哪里 我们可以直接点击idea内置的maven图形界面,点开dependency来查看。 在命令行中输入mvn dependency:tree来查看依赖树。 那么如何解决呢? 直接把最新版本的,也就是你想留下的那个版本的包写入pom.xml文件中,让它位于离根节点最近的一层,那么它就轻易的”胜出啦“。 把你想要的干掉的包在pom.xml文件中e用xclusion标签干掉他。 下载一个maven helper插件,可以直接在插件里面利用插件对你当前依赖分析的结果去一键解决包冲突。 </description>
</item>
<item>
<title>如何用hugo搭建个人博客</title>
<link>godvvvvvv.github.io/posts/%E5%A6%82%E4%BD%95%E7%94%A8hugo%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/</link>
<pubDate>Sun, 30 Aug 2020 21:20:13 +0800</pubDate>
<guid>godvvvvvv.github.io/posts/%E5%A6%82%E4%BD%95%E7%94%A8hugo%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/</guid>
<description>一.首先你应该下载一个hugo 从网上下载一个hugo,注意你的电脑系统的区别。
当然下载完后并没有结束,而是要解压你的hugo到一个目录
解压完成后我们需要把hugo得目录添加到环境变量中,你可以通过两种方法添加
我的电脑-属性-高级系统设置-环境变量-将你的hugo所在的路径添加到path中。 在命令行中运行,vi ~/.bashrc,export PATH=$PATH:/d/software/hugo,然后保存并退出(ESC:wq)。 在完成添加环境变量之后在你的命令行中运行hugo version来查看是否配置完成。 二.现在就可以用hugo快速搭建自己的博客啦 在一个目录中利用hugo new site quickstart来创建一个根目录,quuckstart最好换成你想要的目录名字。 运行cd quickstart, git init来进入目录并创建本地仓库,运行git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke来下载一个博客得默认主题,完成后找到config.toml文件修改博客名字等信息。 现在来写第一篇文章,运行hugo new posts/my-first-post.md来创建一个markdown文件,相信你可以很好的完成文章的内容,写完记得将状态改为false。 来运行hugo serve -D来生成你的博客,此时点击http://localhost:1313/即可查看本地博客的生成页面。 这样你就生成你的博客(仅仅能在本地查看)
关于如何推动github中就在下一次博客再讲吧! </description>
</item>
<item>
<title>开博大吉</title>
<link>godvvvvvv.github.io/posts/%E5%BC%80%E5%8D%9A%E5%A4%A7%E5%90%89/</link>
<pubDate>Fri, 28 Aug 2020 20:30:13 +0800</pubDate>
<guid>godvvvvvv.github.io/posts/%E5%BC%80%E5%8D%9A%E5%A4%A7%E5%90%89/</guid>
<description>大家好 我的博客开通了,以后会认真学习,养成写博客的好习惯。</description>
</item>
</channel>
</rss>