自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (6)
  • 收藏
  • 关注

原创 HashMap底层原理实现源码探索(碰撞问题如何解决)

同样,HashMap是java面试中经常问到的一个知识点,基本都是和HashTable以及ConcurrentHashMap一起被问及,今天主要是讲讲HashMap是如何解决碰撞问题的?那么问题来了,什么是碰撞问题?这要先从HashMap底层的实现说起,进入它的源码类public class HashMap<K,V> extends AbstractMap<K,V&gt...

2018-09-06 22:58:20 1737 1

原创 Json学习(二)阿里巴巴如何解析Json

今天来说一下阿里巴巴推出的Json处理工具:fastjson由于使用独特的算法,fastjson对Json的解析是最快的,超过其他任何Json Parser,包括JackJson,除了解析速度快之外,还有很多优点,总结如下:1.支持各种基本类型,JavaBean,集合,Map,枚举Enum,泛型,甚至是日期2.可以直接跑在JDK上(JDK1.5版本以上)3.开源(还有比开源分享更值...

2018-09-04 22:54:33 2156

原创 设计模式(二)策略模式

一,什么是策略模式首先,策略模式是一种行为模式,定义了一系列的算法和规则,并且分别包装起来,使他们可以相互替换,独立于外界业务或者逻辑的变化而变化。组成:1.context(应用场景):内部拥有(维护)一个Strategy的实例2.Strategy(抽象策略类):一个公共接口,不同算法的实现就是继承自这个接口3.ConcreteStrategy(具体策略类):实现了Strate...

2018-08-29 23:08:16 184

原创 由double类型的精度引起的血案

好吧,我承认标题有点"引人入胜",但是本篇文章真的有用,注意到这个问题以后说不定会减少很多麻烦起因呢是一个同时在前台页面显示一个double类型的数据时发现末尾多了点东西,举个例子public class ListTest { private static double d1=3.14; private static double d2=2.967; public static v...

2018-08-28 23:17:08 181 2

原创 Json学习(一)传统的Json解析

一,什么是Json?说道Json,不得不说程序员和XML的那段孽缘。XML有一定的优越性比如适合在网络上传输(本身是纯文本文件),但是由于规范太多,像什么DTD,XSTL等啊,XML反而变得很复杂,成为了一个历史遗留的病垢吧。后来Json就出现了,Json作为一种轻量级的数据交换形式,抑郁阅读和编写,也易于机器解析和生成。总之,相比于XML,Json更加易于网络传输,重在简易语法,而XML则重...

2018-08-28 22:40:41 788

原创 你真的熟悉集合框架中的列表list吗

今天突然有人问到下面一个问题:public class ListTest { private static List<String> list; public static void main(String[] args) { // TODO Auto-generated method stub list=new ArrayList<>(); l...

2018-08-27 23:41:59 172 1

原创 Redis教程(七)事务以及数据库的切换

Redis中的事务跟其他数据库比如MySql中的概念基本一致。Redis中单个命令的执行是原子性的,但是在事务上并没有任何维持原子性的机制,所以Redis事务的执行不具备原子性。就好比下载图片到本地,其中一张图片下载失败,不会使得已经下载的图片还原,也不会影响后面图片的下载。s在Redis中,事务可以一次执行多条命令,从开始到执行有三个阶段:开始事务,命令入队,执行事务。但是并没有事务回滚...

2018-08-23 22:33:25 359

原创 Redis教程(六)五大数据类型有序集合sorted-set

有序集合和集合一样用来存储String类型,但是与集合不同的是有序集合中的元素都有一个与之关联的“分数”score,这个分数类型是Double,而有序两字正是通过这个分数来进行排序的,分数可以重复,但是元素不能重复。同样,有序结合的增加,插入,查找是基于哈希码来实现的。(可以以班级的学生来理解,考试分数可以一样,但是学号不能重复)sorted-set常用指令:1.zadd key scor...

2018-08-21 22:41:07 229

原创 Redis教程(五)五大数据类型集合set

Redis中的Set类型是无序集合,存储String类型,集合中每个成员是唯一的,不存在重复成员。集合中元素的添加,插入,查找都是基于哈希码实现的。常用命令:1.sadd key member1 member2.。。向集合key中插入元素member1,member2.。。。2.srem key member1 member2.。。向集合key中删除元素member1,member...

2018-08-20 23:35:06 137

原创 Redis教程(四)五大数据类型字符串列表list

Redis中的列表一种简单的按照插入顺序排列的字符串列表,可以从左右两边插入,本质上来说分为ArrayList和LinkedList两种常用命令:lrange start end查看list里的元素,start起始位置,end结束位置lrange list1 0 -11.lpush key value从左边即头部插入2.rpush key value从右边即尾部插入3.lp...

2018-08-19 23:09:05 302

原创 Redis教程(三)五大数据类型哈希hash

Redis中的hash呢时一个string类型的键和值的映射表,适合存储对象常用命令如下:1.hmset key field1 value1 field2 value2。。。。将key中field1的值设置为value1,将field2的值设置为value2.....2.hmget field1 field2.。。(对应着hmset理解)3.hset key field val...

2018-08-19 22:34:31 157

原创 Redis教程(二)五大数据类型字符串String

前一篇教程讲述了如何在Windows下安装和启动Redis,今天我们来说说Redis的五大数据类型之一的String。首先进入Redis的安装目录,输入启动命令redis-server.exe redis.windows.conf在我们启动redis客户端后,重新打开一个命令行,输入redis-cli,就进入了Redis执行的命令行,如下:如果说想要在远程服务器上执行命令,可以使用redi...

2018-08-19 22:09:14 137

原创 设计模式(一)单例模式

一.什么是单例模式有过项目开发经验的大佬肯定都知道也用过这个广为程序猿所知的设计模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例,即一个类只有一个对象实例。在实现单例模式的时候要记住,由于要保证实例只有一个,自己来完成实例的创建,所以要提供无参构造方法(否则系统会提供默认的构造方法,默认是public,会导致其他类可以通过默认构造...

2018-08-19 00:29:56 134

原创 多线程和并发(五)volatile关键字

一,什么是volatile?很多人都听说过volatile,估计用过的人远没有听过的人多。volatile和synchronized(https://mp.csdn.net/postedit/81675479)一样,都是Java用来实现同步机制的一种手段,当变量声明为volatile时,代表这个变量是共享的,当前线程对它进行的操作都会立即对其它线程可见,也就是保证了可见性,既然提到了可见性,就...

2018-08-18 23:51:07 128

原创 String,StringBuffer,StringBuilder拼接速度的测试

Java面试汇总中老是会有String,StringBuffer,StringBuilder的区别这种面试题,统一的回答是:三者连接速度由快到慢:StringBuilder,StringBuffer,StringStringBuilder非线程安全,StringBuffer线程安全String是字符串常量,二StringBuilder和StringBuffer为字符串变量,也就是说S...

2018-08-16 22:51:47 761

原创 多线程和并发(四)使用newSingleThreadExecutor让线程按顺序执行

newSingleThreadExecutor是用来创建线程池(关于线程池以后专门介绍)的一种方法,表示创建一个单线程的线程池,这种情况下只有一个线程在工作,如果这个线程由于各种原因结束,则会创建一个新的线程来代替他。当任务提交时会按顺序插入任务队列,执行时从队列头部取出任务执行,保证了所有任务的执行顺序按照提交顺序来执行接下来做个简单的测试(后期讲解线程池时再详细介绍),首先创建三个线程任务...

2018-08-16 21:28:26 7627 2

原创 多线程和并发(三)使用join方法让线程按顺序执行

一.线程的join方法作用join方法把指定的线程添加到当前线程中,可以不给参数直接thread.join(),也可以给一个时间参数,单位为毫秒thread.join(500)。事实上join方法是通过wait方法来实现的。比如线程A中加入了线程B.join方法,则线程A默认执行wait方法,释放资源进入等待状态,此时线程B获得资源,执行结束后释放资源,线程A重新获取自CPU,继续执行。由此实...

2018-08-14 23:21:06 6531 1

原创 多线程和并发(二)使用synchronized 让线程按顺序执行

一.先来说说线程为什么执行不按顺序执行由于在同一个进程内存在多个线程,线程都想占有着稀缺的CPU资源去完成任务和工作(有一部分资源是所有线程共享的),但是cpu资源到底分配谁呢?是这样的,多个线程共同竞争CPU时,存在多种分配策略,但是每种策略下每个线程只是在很短的时间内占有cpu,这段时间就是时间片,到了线程的时间片,就开始执行任务,一旦时间片结束,资源立马被释放,任务也停止,别的线程获得资...

2018-08-14 22:34:47 5531 3

原创 从哈希码(hashCode)详解Java中equals和==的区别

一.什么是哈希码在Java中,哈希码是一个对象的标识,根据不同的对象用不同的算法生成哈希码,如果两个对象不同哈希码也不相同Object对象的哈希码根据对象的内存地址来生成,所以只要在内存中的地址不同,hashcode也不同String引用类型的hashcode根据字符串里的内容由特殊算法来生成,字符串相同,hashcode也相同Integer的哈希码就是对象里存储的数值,比如Int...

2018-08-13 23:28:03 432 1

原创 Java程序员必会的多线程和并发(一)

一.首先来说下进程和线程的区别进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个基本单位,一个进程下可以有多个线程运行。线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只有必要的资源(程序计数器,一组寄存器和栈),但是他可以与同属于一个进程的其他线程共同享有进程所拥有的全部资源。...

2018-08-13 22:18:41 385

原创 浅谈Java中equals()和==的区别

一.先来说说Java的基本数据类型和引用类型八大基本数据类型:Byte,short,int,long,double,folat,boolean,char,其中占一个字节的是byte,short和char占两个字节,int,float占四个字节,double和long占8个字节,boolean只有true和false,这八种数据变量中直接存储值八大基本数据类型对应着各自的封装类型,提供了更多...

2018-08-12 23:01:52 67849 12

原创 序列化和反序列化

一,什么是序列化和反序列化序列化是将对象的状态信息转换为可以存储或传输的形式的过程。由于对象时抽象不可见得序列化之后转化为了可存储的二级制数据,变得可见可传递;反序列化是序列化的反过程,也即是将字节序列恢复为对象的过程。序列化使得对象或者实例变得可见可存储可传递,可以在网络山传递通过传递文件的形式来达到传递对象的目的,除此之外,可以将对象存储在内存或者硬盘,数据库中,完成对象的存取。二...

2018-08-12 22:09:03 141

原创 Redis教程(一)Windows下安装

一.先说说数据库的分类1.关系型数据库:Oracle,MySQl,SQLServer   特点:数据必须满足特定的要求,需要预先定义表关系以及数据的类型和长度,操作复杂2.键值对型数据库:Redis,DynamoDB,memcached    特点:以键值对(key-value)的形式存储,不适合业务复杂的项目,高性能读取3.列式数据库:HBase,cassandra   ...

2018-08-12 00:58:02 229

原创 java关键字之final,finally,finalize

final用于修饰属性,方法和类,分别代表属性不可变(之后不可进行修改操作),方法不可覆盖,类不可被继承finally是异常处理语句结构的一部分,进行捕获异常时用来执行必须在异常处理或抛出后要执行的操作,比如说IO流的关闭,连接的断开,资源的释放等。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关...

2018-08-03 21:29:13 167

原创 给小白讲讲Java虚拟机中的类加载

作为一个合格的java程序猿,类加载机制可谓是老生常谈,也是面试中经常会问到的一个问题,那么到底什么是类加载呢?第一步:初始化虚拟机,产生启动类加载器ClassLoader(用于将类加载到虚拟机中)第二步:创建一个字节数组读取.class(二进制文件)文件到内存中第三步:创建与所加载类的Class对象第四步:进入连接阶段,包括验证(确保.class文件的字节流中包含的信息符合当前虚...

2018-08-03 10:42:01 156

微信小程序之星巴克主页

微信小程序实现星巴克小程序的主页以及购买咖啡滑动功能

2018-06-25

jsp+struts+hibernate实现员工管理信息

基于jsp实现员工管理系统,并且集合struts2和hibernate框架

2018-06-25

基于java实现DES算法加密代码

使用java编写的Des加密算法,一系列加密过程均为自己编写

2018-06-25

基于java实现DES算法加密报告相关

使用java编写的Des加密项目,从底层实现加密过程,未使用java加密库

2018-06-25

Android微信App项目代码

使用eclipse编写的Android项目,仿照微信实现登录注册各种功能

2018-06-25

Android仿照微信App功能代码

仿照微信App实现微信主页面的登录注册以及记住登录页面跳转

2018-06-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除