- 博客(47)
- 资源 (5)
- 收藏
- 关注
原创 阿里巴巴面经
写在前面的话 本人算是大四IT男,大学这几年,浑浑噩噩的也是慢慢的就过来了,从开始不懂事只知道玩,到慢慢的开始知道去自己学一点东西。今天才刚把阿里的技术面试给面完,算是通过了技术面试了,所以就想写一篇博客来记录一下这一个周以来关于阿里面试的点点滴滴,主要是回忆一下面试过程中的技术问题,留在自己的一点财富吧。 另外说一句,现在已经快12月份了,可能也会好奇为啥现
2014-11-27 21:25:06 1653 2
原创 Java通过BCrypt加密
一、概述在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。目前,MD5和BCrypt比较流行。相对来说,BCrypt比MD5更安全,但加密更慢。二、使用BCrypt首先,可以在官网中取得源代码h
2015-06-26 20:08:13 11446 2
转载 Java中的String、StringBuilder、StringBuffer对比
在Android/Java开发中,用来处理字符串常用的类有3种: String、StringBuilder、StringBuffer。它们的异同点:1) 都是 final 类, 都不允许被继承;2) String 长度是不可变的, StringBuffer、StringBuilder 长度是可变的;3) StringBuffer 是线程安全的, StringBuilder 不是线程
2015-06-25 07:47:05 472
转载 Java集合7:LinkedList的实现原理
一、LinkedList概述 List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现 Deque 接口,为 add、poll 提供先
2015-06-22 21:44:37 468
原创 Java集合6:ArrayList的实现原理
一、ArrayList概述 ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayLi
2015-06-22 21:43:56 518
原创 Java集合5:LinkedHashMap与LRU cache
1、LRU缓存介绍 我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系了,要再次联系那位朋友的时候,我们又不得不求助电话本,但是,通过电话本查找还是很费时间的。但是,我们大脑能够记住的东西是一定的,我们只能记住自己最熟悉的,而长时间不熟悉的自然就忘记了。 其实,计算机
2015-06-22 21:43:33 540
原创 Java集合4:LinkedHashSet的实现原理
一、LinkedHashSet概述 LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Se
2015-06-22 21:42:52 488
原创 Java集合3:LinkedHashMap的实现原理
一、LinkedHashMap概述 LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap。 LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别
2015-06-22 21:42:21 422
原创 Java集合2:HashSet的实现原理
一、HashSet概述 HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、HashSet的实现 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSe
2015-06-22 21:40:13 458
原创 Java集合1:HashMap的实现原理
一、HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。二、HashMap的数据结构 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造
2015-06-22 21:39:23 432
原创 Java线程8:为什么进行数据同步
之前在为知笔记对Java的一些基础知识进行了总结,一直都没有上传到博客来,然后所以会集中的将博客上传。博客主要以总结为主,尽可能的覆盖到多的知识点,为以后的学习找工作做准备。其主要方式是知识面自己进行提取,然后通过转载或者整理之前的博客。希望自己能坚持整理完。
2015-06-21 08:10:25 446
原创 Java线程7:线程数据传递
向线程传递数据的三种方法 在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数
2015-06-21 08:07:56 565
原创 Java线程6:慎重使用volatile关键字
之前在为知笔记对Java的一些基础知识进行了总结,一直都没有上传到博客来,然后所以会集中的将博客上传。博客主要以总结为主,尽可能的覆盖到多的知识点,为以后的学习找工作做准备。其主要方式是知识面自己进行提取,然后通过转载或者整理之前的博客。希望自己能坚持整理完。
2015-06-21 08:07:11 594
原创 Java线程5:join方法的使用
之前在为知笔记对Java的一些基础知识进行了总结,一直都没有上传到博客来,然后所以会集中的将博客上传。博客主要以总结为主,尽可能的覆盖到多的知识点,为以后的学习找工作做准备。其主要方式是知识面自己进行提取,然后通过转载或者整理之前的博客。希望自己能坚持整理完。
2015-06-21 08:06:32 456
原创 Java线程4:线程的生命周期
之前在为知笔记对Java的一些基础知识进行了总结,一直都没有上传到博客来,然后所以会集中的将博客上传。博客主要以总结为主,尽可能的覆盖到多的知识点,为以后的学习找工作做准备。其主要方式是知识面自己进行提取,然后通过转载或者整理之前的博客。希望自己能坚持整理完。
2015-06-21 08:05:43 604
原创 Java线程3:使用Runnable接口创建线程
之前在为知笔记对Java的一些基础知识进行了总结,一直都没有上传到博客来,然后所以会集中的将博客上传。博客主要以总结为主,尽可能的覆盖到多的知识点,为以后的学习找工作做准备。其主要方式是知识面自己进行提取,然后通过转载或者整理之前的博客。希望自己能坚持整理完。
2015-06-21 08:04:43 552
原创 Java线程2:用Thread类创建线程
之前在为知笔记对Java的一些基础知识进行了总结,一直都没有上传到博客来,然后所以会集中的将博客上传。博客主要以总结为主,尽可能的覆盖到多的知识点,为以后的学习找工作做准备。其主要方式是知识面自己进行提取,然后通过转载或者整理之前的博客。希望自己能坚持整理完。
2015-06-21 08:03:08 520
原创 Java线程1:概述
之前在为知笔记对Java的一些基础知识进行了总结,一直都没有上传到博客来,然后所以会集中的将博客上传。博客主要以总结为主,尽可能的覆盖到多的知识点,为以后的学习找工作做准备。其主要方式是知识面自己进行提取,然后通过转载或者整理之前的博客。希望自己能坚持整理完。
2015-06-21 07:59:42 492
原创 sleep和wait的区别
区分1、这两个方法来自不同的类,sleep是Thread类的静态方法,是线程用来控制自身流程的,比如有一个要报时的线程,每一秒打印出一个时间,那可以在print方法前面加上一个sleep让自己每隔一秒执行一次;而wait来自Object类,用于线程间的通信,该方法会使当前拥有该对象锁的进程等待,直到其他线程调用notify方法时再醒来。这个方法主要用于不同线程直接调度的。2、sleep
2015-06-13 12:56:35 563
转载 一起写一个Web服务器(1)
有天一个女士出门散步,路过一个建筑工地,看到三个男人在干活。她问第一个男人,“你在干什么呢?”,第一个男人被问得很烦,咆哮道,“你没看到我在码砖吗?”。她对回答不满意,然后问第二个男人他在干什么。第二个男人回答,“我正在砌墙”,然后转移注意力到第一个男人,他说,“嘿,你码过头了,你要把最后一块砖拿掉。”。她还是对回答不满意,然后问第三个男人在干什么。第三个男人仰望着天空对她说,“我正在建造世界上最
2015-05-25 07:31:03 1016
原创 Spring学习5:Spring对DAO的支持
Spring的DAO理念DAO是用于访问数据的对象。DAO不但屏蔽了数据存储的最终介质的不同,也屏蔽了具体的实现技术的不同。下图是一个典型的DAO应用实例,在UserDao中定义访问User数据对象的接口方法,业务层通过UserDao操作数据,并使用具体持久化技术实现UserDao接口方法,这样业务层和具体持久化技术就实现了解耦。提供DAO层的抽象可
2015-05-07 19:08:37 502
原创 Spring学习4:AOP概述
按照软件重构思想的理念,如果多个类中出现相同的代码,应该考虑定义一个共同的抽象类,将这些相同的代码提取到抽象类中。但有一些代码无法这样做。我们无法通过抽象父类的方式消除以上所示的重复性横切代码,因为这些横切逻辑依附在业务类方法的流程中,它们不能转移到其他地方去。AOP独辟蹊径通过横向抽取机制为这类无法通过纵向继承体系进行抽象的重复性代码提供了解决方案。AOP将分散在各个业务逻辑代码
2015-05-07 19:07:32 371
原创 Spring学习1:Spring源码阅读环境搭建
Spring已经将源码从svn迁移到GitHub了。而且也改为基于Gradle构建项目,取代了之前的Ant+Ivy系统,所以要构建Spring源码环境首先要安装GitHub和Gradle。安装GitHubwindows系统的下载地址:https://windows.github.com/ 下载安装即可,会包含GitHub和Git Shell安装Gradle下载地址:
2015-05-05 13:36:58 572
原创 Eclipse中安装subclipse(SVN)
第一种方法从 Eclipse Marketplace 中下载安装 Subclipse。 打开 Help -> Eclipse Marketplace。如图 在搜索框里填入 Subclipse,就可以找到 Subclipse,然后点击 Install 按钮即可安装。如图 我这里是因为之前安装过,所以只有update和unistall选项,如果没有安装,会有Install选项 点击
2015-04-08 10:28:02 452
原创 ThreadLocal
ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影
2015-04-03 09:54:00 414
原创 Spring学习3:IOC容器概述
IOC是Spring容器的内核,AOP、声明式事务等功能在此基础上开花结果。IOC包含很多内涵,涉及代码解耦、设计模式、代码优化等问题。IOC字面意思为控制反转。即某一接口的具体实现类的选择控制权从调用类中移除,转交给第三方决定。提出用DI的概念用以代替IOC,即让调用类对某一个接口的实现类的依赖关系由第三方注入,以移除调用类对某一接口实现类的依赖。IOC的类型
2015-04-02 10:17:17 395
原创 Spring学习2:Spring概述
Spring最根本的使命:简化Java开发为了降低Java开发的复杂性,Spring采取以下4种关键策略:1、基于POJO的轻量级和最小侵入性编程2、通过依赖注入和面向接口实现松耦合3、基于切面和惯例进行声明式编程4、通过切面和模版减少样板示代码一、依赖注入耦合具有两面性。一方面,紧密耦合的代码难以测试,难以复用,难以理解,并且表
2015-04-02 10:14:05 476
原创 MySQL设置编码
新安装的Mysql需要设置一下编码。针对的是MySQL设置编码 版本mysql-5.6.21-winx64修改my.ini文件设置编码(没有的话复制my-default.ini)6[client]default-character-set=utf8[mysql]default-character-set=utf8[mysq
2015-03-17 20:28:17 432
原创 linux学习笔记:程序管理
进程与程序程序:通常为二进制程序放置在存储媒介中(如硬盘、光盘、软盘、磁带等),以物理文件的形式存在。进程:程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给与这个内存中的单元一个标识符,可以说,进程就是一个正在运行的程序。子进程与父进程fork and exec:过程调用的流程在
2015-01-04 13:57:03 486
原创 linux学习笔记:例行性工作(crontab)
linux工作调度的种类:at,cron一种是突发性的,就是这次做完以后就没有的那一种。一种是例行性的,就是每个一定的周期要来办的事项。at:可以处理尽执行一次就结束调度的命令,不过要执行at时,必须要有atd这个服务的支持才行。crontab:所设置的工作会一直循环的进行下去仅执行一次的工作调度我们使用at这个命令来生成所要运行的工作,并将这个工作
2015-01-03 16:36:54 638
原创 linux学习笔记:磁盘配额(Quota)与高级文件系统管理
什么是Quota在linux系统中,由于是多用户多任务的环境,如果其中有少数几个用户占用大量空间的话,那肯定会影响其他用户的使用权限。quota的一般用途:针对WWW sever,例如:每个人的网页空间的容量限制针对mail server针对file server限制某一个用户或者用户组的最大磁盘配额以Link的方法来使邮件可以作为限制的配额
2015-01-03 15:34:11 1091
原创 错误:Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
Centos装了epel的扩展后,执行yum就开始报错:Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again解决办法:1、编辑/etc/yum.repos.d/epel.repo2、将baseurl的注释去掉,将mirrorlist注释掉
2015-01-02 08:44:25 751
原创 linux学习笔记:账号管理与ACL权限设置
linux的账号与用户组用户标识符:UID与GID虽然在登录linux主机的时候,输入的是账号,但实际上linux认识的ID。每一个文件都会有UID和GID,当我们有要显示文件属性的需求时,系统会根据/etc/passwd和/etc/group的内容,找到UID和GID对应的账号与组名再显示出来。/etc/passwd文件结构例如:root:x:0:0:root:/
2014-12-20 20:24:52 449
原创 linux学习笔记:vim程序编辑器
vi的使用有三种模式:一般模式、编辑模式和命令行模式一般模式:vi打开一个文件就直接进入一般模式了(这是默认的模式),可以使用上下左右按键来移动光标,可以删除字符或删除整行,也可以复制粘贴文件数据编辑模式:一般习惯按i进入该模式,可以进行编辑,按ESC退出命令行模式:按键说明【重要】第一部分:一般模式Ctrl+f屏幕向下移动一
2014-12-18 21:15:40 407
原创 linux学习笔记:磁盘与文件系统管
文件系统特性磁盘分区之后需要格式化才能被操作系统使用,那为什么需要“格式化”呢?这是因为每种操作系统所设置的文件属性/权限并不相同。linux的整个文件系统是Ext2,在默认的情况下,Windows操作系统是不会认识Linux的Ext2的。通常,我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区。(LVM可以将一个分区格式化为多个文件系统,软磁盘阵列(RAID)可以
2014-12-18 20:32:40 575
原创 linux学习笔记:文件与目录管理
目录的相关操作. 代表此层目录.. 代表上一层目录- 代表前一个工作目录~ 代表“目前用户身份”所在的主文件夹~account 代表account这个用户的主文件夹注意:每个目录下面都会存在两个目录,分别是“.”和“..”,分别代表此层与上层目录的意思。其中,根目录下的“.”和“..”与根目录自己是同一个目录简单的几个命令:cd 切换
2014-12-18 16:41:02 547
原创 linux学习笔记:文件权限与目录配置
用户与用户组假设有一个家庭,家里只有三兄弟,分别是王大毛、王二毛和王三毛3个人,而这个家庭是登记在王大毛的名下。所以“王大毛家有3个人,分别是王大毛、王二毛、王三毛”,而且这3个人都有自己的房间,并且共同拥有一个客厅。用户的意义:由于王家三人各自拥有自己的房间,所以王二毛虽然可以进入王三毛的房间,但是王三毛不能翻王二毛的抽屉,因为抽屉可能有王二毛私人的东西,例如情书日记等,这是“私
2014-12-18 10:55:33 547
原创 Java GC机制和JVM
概括首先,我们来解释一些基本的术语,比如JDK、JVM、JRE和HotSpotVM。Java 开发工具包 (JDK):一系列工具帮助开发者创建Java应用程序。JDK包含工具编译、运行、打包、分发和监视Java应用程序。Java 虚拟机(JVM):JVM是一个抽象的计算机结构。Java程序根据JVM的特性编写。JVM针对特定于操作系统并且可以将Java指令翻译成底层系统的指
2014-12-10 20:46:09 543
原创 决策树学习(ID3,C4.5)
简介决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示成一颗决策树。是归纳推理算法之一,已经被成功的应用到从学习医疗诊断到学习评估贷款申请的信用风险的广阔领域。下面通过一个例子来简单说明一下决策树学习。小丽认识一个男网友,在考虑要不要跟他见面。然后请好朋友来参考:好朋友:他的年龄是多大?小 丽:25岁。好朋友:长的怎么样?小 丽:帅。好
2014-12-04 11:25:33 860
原创 String的不变性
1.基本概念 可变类:当获得这个类的一个实例引用时,可以改变这个实例的内容。 不可变类:不可变类的实例一但创建,其内在成员变量的值就不能被修改。其中String类就是不可变类的经典应用。2.例子 下面我们通过一个例子来解释String的不可变性。[java] view plaincopySt
2014-11-30 20:37:04 782
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人