- 博客(50)
- 收藏
- 关注
原创 Collection接口-LinkList
LinkedList 内部实现是一个双向链表 该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。 例如: Listlist=Collections.synchronizedList(newLinkedList(...));
2018-01-26 09:42:14
502
原创 Collection接口-ArrayList
ArrayList 内部实现是一个数组 该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。 创建: List numbers=new ArrayList 方法 boolean add(E e) 将指定的元素添加到此列表的尾
2018-01-26 09:42:02
501
原创 集合-HashSet
HashSet 概述 对于 HashSet 而言,它是基于 HashMap 实现的,底层采用 HashMap 来保存元素. initial capacity为16,load factor 为 0.75。 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层使用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,相关 H
2018-01-26 09:41:32
358
原创 Collections类的方法
参考文章 Collections常用方法Collections常用方法2 方法介绍 emptyList / emptySet / emptyMap 返回一个空的LIst/Set/Map singleton /singletonList 只返回一个List或者数组 不可使用add进行添加了 sort(Collection) 对集合进行排序 sort
2018-01-26 09:41:18
654
原创 Collection接口-Map
Map通常是由HashMap,LinkedHashMap,TreeMap组成 HashMap 内部组成 每次插入一个元素,我们首先计算出它的hashcode,得到它的下标,我们再往进去插入一个元素. **默认长度16, 大于12,就会扩容.扩容的形式是以二倍的形式扩容,扩容之后,对应的hashcode也发生改变,因为,我们重新扩容,对应的长度的变
2018-01-26 09:40:47
352
原创 Java-内置类比较器-Comparable
引入 参考文献:Comparable和Comparator “排序”的实体类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法 public int compareTo(Object obj); 返回值 0 表示 this==obj 正数 表示 this > obj 负数 表示 this 实现
2018-01-26 09:40:20
753
原创 集合-HashMap
HashMap概述 HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 HashMap():构建一个初始容量为 16,负载因子为 0.75 的 HashMap。ashMap(int initialCapacity):构建一个初始容量为 initialCapac
2018-01-25 10:44:40
1474
原创 不可变集合Immutable
不可变集合,集合是不可变的,不可修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中不可以改变。 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节
2018-01-25 10:44:10
3160
原创 Multimap类
接口声明 public interface Multimap 我们一般使用map,只能保证一个key对应一个value,如果我们相对应多个values,我们不得不选择这种模式: Map> myClassListMap test2 = new HashMap>() 当我们想添加一个value,我们不
2018-01-25 10:43:42
950
原创 localcache本地缓存
guava的localche 方法如下 google的guava库中有实现了localcache的现成方法,可以在应用中快速构建本地缓存。 在缓存中,最为重要的失效策略和唯一key的确定; 基于时间的移除 guava提供了两个基于时间移除的方法 expireAfterAccess(long, TimeUnit) 这个方法是根据某个键值对最后一次访问之
2018-01-25 10:42:57
2478
原创 Guava-Spiltter
定义 从输入的字符串中抽取不重复的子串,通常是分析给定的分割序列;这个分割符可以是单个的字符(on(char separator))、字符串(on(final String separator))、正则表达式(on(final Pattern separatorPattern))或者是一个CharMatcher实例(on(final CharMatcher separatorMatcher)
2018-01-25 10:42:03
556
原创 Guava-Joiner类
引入 String字符串代码中出现的频率是相当高的,涉及字符串的知识点也是很多很多,比如String、StringBuilder、StringBuffer三者的区别,性能的比较,是否线程安全等等。 用分隔符把字符串序列连接起来也可能会遇上不必要的麻烦。如果字符串序列中含有null,那连接操作会更难。Fluent风格的Joiner让连接字符串更简单。 方法
2018-01-25 10:41:32
953
原创 Guava-IO
源或汇指某个你知道如何从中打开流的资源,比如File或URL。源是可读的,汇是可写的。此外,源与汇按照字节和字符划分类型。 ByteStreams处理字节流的. CharStreams处理字符流的. 代码演示,使用CharStream流模拟实现read方法 使用readLines()一次直接将文本内容获得到,返回成一个Li
2018-01-25 10:40:58
306
原创 Gson
添加依赖 com.google.code.gson gson 2.4 1.将一个对象转成Json 我们可以用Gson对象toJson方法生成 @Test public void Test1(){
2018-01-25 10:40:27
249
原创 Collections
Lists 需要实例化一个 List personList = Lists.newArrayList(); public static E> ArrayListE> newArrayList(E... elements) { checkNotNull(elements); // for GWT // Avoid integer overflow when a large array i
2018-01-25 10:39:56
279
原创 BiMap
Bimap提供了一种的新的集合类型,它提供了key和Value的双向关联的数据结构。 底层维护着两个map 什么意思呢,传统上,我们键值对的双向映射需要维护两个单独的map,并保持它们间的同步。但这种方法很容易出现,而且对于值存在map中的情况,会变得非常混乱。例如: @GwtCompatible public interface Bi
2018-01-25 10:39:09
667
原创 内核包括的子系统
内核包括的子系统:Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。进程调度(SCHED)控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。内存管理(MM)允许多个进程
2017-08-24 14:40:54
5187
原创 死锁
死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。产生死锁的四个条件互斥条件 指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用完释放 请求和保
2017-08-22 15:59:25
568
原创 System v 和Posix
System v 和Posix当我们在linux系统中进行进程间通信时,会发现例如共享内存,信号量,消息队列等方式时,会发现有System v以及POXIS两种类型。因此,我们探究一下System v和POXIS到底代表着什么意义。POSIXPOSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC
2017-08-19 11:42:58
789
原创 笔试题:求二叉树叶子节点的个数
1.递归处理,叶子节点的个数为1;然后还有O(2)=O(1)-1;度为2的节点比度为1的节点少一个 int BinaryTreeCount(TreeNode* root){ int nodes=0; if(root==NULL) return 0; else if(root->left==NULL &&root->right=NULL) return 1; else n
2017-07-27 06:18:14
1532
原创 python 处理验证码
验证码如果是这样的,我们可以直接使用PIL库里的ImageTostring()函数就行转化。不成的话,我们就将图片放大一下试试,具体放大尺寸要多大,我当时用了两个for循环解决的,哈哈哈哈。
2017-07-16 09:22:03
452
转载 刷题:设计一个类不能被继承
转自博客园的阿凡卢的博客,推荐看看他的博客,为了记笔记,所以摘录到自己的博客里的 http://www.cnblogs.com/luxiaoxun/archive/2013/06/07/3124948.html
2017-07-16 08:53:52
166
翻译 -判断链表是否带环?若带环求环的长度?若带环求环的入口点
1.链表是否有环 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: bool EntryNodeOfLoop(ListN
2017-07-15 18:05:58
292
原创 VM ubuntu 打不开摄像头
1.首先关了360,安全卫士,我的就是这样(搞了三天,360关了 居然好了) 2.http://blog.youkuaiyun.com/flyingcys/article/details/57406701
2017-05-07 12:27:10
1286
原创 linux工具
==linux工具==sed流式编辑器1.工作原理当sed由标准输入读取一行资料并放入pattern space(模式空间)时,sed按照sed script 的编辑指令逐一对pattern space内的资料执行编辑,之后再有pattern space内的结果送到标准输出,接着再将下一行资料读入。重复执行上述动作,直至读完所有资料行结束为止,另外,sed还有hold space(保持空间)可以作为
2017-04-22 17:20:54
749
原创 gdb如何调试多线程以及多进程
1.在大多数的操作系统中,gdb在调试多进程时。当父进程使用fork创建出子进程,用gdb调试时,gdb只会 父进程,对子进程没有控制和调试。如果你在子进程执行到代码所设置的断点处,会产生一个SIGTRAP的信号。如果没有对此信号进行信号捕捉处理,就会默认的处理———终止进程。 2. 如果这样的话我们可以创建在创建子进程时,先将函数等待一段时间再运行,在这段时间找到该进程,使用Attach将进
2017-02-25 21:04:56
441
原创 线程安全和可重入函数
线程安全:当多个并发线程执行同一个函数,我们都能得到正确的返回值。 当多个线程并发的调用一个函数。如果对全局数据或者静态数据在不加任何锁以及安全性的处理情况下,就会对多次修改数据的错误。比如我正在愿意个线程里处理一个全局变量的-1;正减完。结果还没有返回,就被另一个线程切出去了,而那个线程全局变量还是处于没有被处理的-1的值;本身我想让那个全局变量执行两次-1;结
2017-02-24 10:27:12
305
原创 hello的实现过程
在学习语言一开始我们都学习了打印hello这个字母, 无非就是 #include int main() { printf("hello"); return 0; } 然后调试执行,屏幕就会输出一个hello的字段。但是我们知道计算机在处理程序时,他是以二进制的形式处理着,那究竟是怎样的呢!!! 我们了解了这些,我们想了解这个hello.c我们称之为源程序是在电脑中怎样走的,也就是
2017-01-03 17:34:29
1056
原创 十进制转八进制的代码
#include using namespace std; void Shu(long long num=0) { if(num>7) Shu(num/8); cout } int main() { long long num=0; while(cin>>num) Shu(num); return 0
2017-01-03 15:59:18
4667
原创 Linux下c实现简易进度条
#进度条:顾名思义就是看计算机处理任务时的速度,完成度,反正过程啥的。就是这样子 我们实现一个简易版的 我们需要的知识make命令编译:因为方便。不了解make指令的先看看make指令介绍 以及我们要了解换行(\n)和回车(\r)的区别 我们下来开始写代码细聊 打算 #include #include void probar() { int rate=0;//进度率,表
2017-01-02 15:31:23
2758
原创 Linux:make命令
Make的功能是简化编译过程里面的所执行的命令,同时还具有很多方便的功能。 比如: 我们要编译test0.c,test1.c,test2.c,test3.c 生成TEST可执行程序 四个文件 我们可以这样写$gcc -o TEST test0.c test1.c test2.c test3.c 但是万一我们发现我们刚才test3.c里面的内容刚才写错了,我们更改好了,我们想重新编译,
2017-01-02 14:00:29
4050
原创 换行和回车的区别
我们在看他们的区别时我们先看看他们的分别指的是什么: 回车(carriage return):告诉打印机把打印头定位到左边界,就是指的,那个打印头重新放在这一行的开始。 换行(line feed):告诉打印机把打印头放在所要打印的下一行的行头。 他们的来历我们瞧瞧 在计算机早期还没有出现的时间,在电传打印机出现的时代,每秒钟可以打印10个字符,我们可以想想当时战争年代的电报,它打印时是不
2017-01-02 12:45:31
6895
原创 vim安装配置
Linux 1.用户切到超级用户 2.输入命令 $yum install vim 3.输入y,运行完成后检查是否安装vim $vim 我们可以配置我们本用户的vim 在我们的主目录下ls -a,查找是否有.vimrc文件,如果没有我们可以自己创建一个 直接vim .vimrc进去,填写我们想要写的的配置。 在/etc/vimrc文件,是影响的整个系统。我们想改的整个系统的话我们
2016-12-31 12:39:23
293
原创 Linux命令 文件查找
当我们想查找某个文件时,我们不知道它所在的路径,怎么办呢,总不能我们将每个文件翻一遍吧,那样的话太费事了。我们可以用以下命令进行查找文件所在的路径。 1.which(寻找“执行文件”) 2.whereis(寻找特定的文件) 3.find(在目录结构中查找文件,并执行指定的操作)。 4.locate(比find高效,依靠数据库查询) which(可执行文件查询) 参数 -n 指定
2016-12-30 14:56:38
349
原创 Linux基本命令(一)
命令名称 [选项][参数] 1.pwd命令(显示当前工作的全部路径) ~表示当前宿主(用户主)目录,@前面‘a’表示用户名,@后面的表示主机名。 2.date命令 显示当前系统的日期和时间 a@ubuntu:~$ date 2016年 12月 29日 星期四 03:14:50 PST 3.who命令 显示当前一登陆到系统的所有用户名,及其终端名和登陆到系统的时间 a@
2016-12-30 10:36:06
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
6