自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

A donkey has no tail

用代码绘制生活

  • 博客(47)
  • 收藏
  • 关注

原创 java操作opentsdb

https://blog.csdn.net/zx711166/article/details/80913861

2018-09-03 20:31:14 1672

转载 Redis排行实现

 有序集初体验:  先来看几个后续会使用的redis命令语法: 1 2 3 4 5 6 7 8 9 10 11 ZADD key score1 member1 [score2 member2] 添加一个或多个成员到有序集合,或者如果它已经存在更新其分数   ...

2018-08-01 16:53:53 887

转载 使用Redis实现排行功能

游戏中存在各种各样的排行榜,比如玩家的等级排名、分数排名等。玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标。一个典型的游戏排行榜包括以下常见功能:1.  能够记录每个玩家的分数;2.  能够对玩家的分数进行更新;3.  能够查询每个玩家的分数和名次;4.  能够按名次查询排名前N名的玩家;5.  能够查询排在指定玩家前...

2018-08-01 16:31:37 1040

转载 ConcurrentHashMap原理详细解析

 ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分析(JDK1.7).ConcurrentHashM...

2018-07-31 11:40:57 317

转载 ConcurrentHashMap原理分析

先来看看ConcurrentHashMap是个啥结构。 在JDK1.7中,ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成,结构如下图所示: Segment数组的意义就是将一个大的table分割成多个小的table来进行加锁,Segment数组中每一个元素就是一把锁,每一个Segment元素存储的是HashEntry数组+链表,这个和Hash...

2018-07-31 10:53:56 194

转载 (转)HashMap实现原理

1.    HashMap概述:   HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2.    HashMap的数据结构:   在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,H...

2018-07-28 23:08:28 121

原创 ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量

当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。加载因子的系数小于等于1,意指  即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容。另外,扩容也是有默认的倍数的,不同的容器扩容情况不同。 List 元素是有序的、可重复Arr...

2018-07-28 22:45:36 200

转载 集合底层

ArrayList实现原理要点概括参考文献: http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/5308358.htmlArrayList是List接口的可变数组非同步实现,并允许包括null在内的所有元素。 底层使用数组实现 该集合是可变长度数组,数组扩容时,会将老数组中的元素重新拷...

2018-07-28 21:19:04 178 1

转载 String底层

一、String类想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码:public final class String implements java.io.Serializable, Comparable<String>, CharSequence{ /** The value is used for character...

2018-07-28 16:08:26 703

原创 sso 单点登录 cas

什么是SSO所谓SSO(Single Sign On)单点登录是指基于用户/会话认证的一个过程,用户只需一次性提供凭证(仅一次登录),就可以访问多个应用。目前单点登录主要基于Web的多种应用程序,即通过浏览器实现对多个B/S架构应用的统一账户认证。CAS介绍CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004年 12...

2018-07-28 14:28:56 211

转载 线程安全的单例模式

转自:http://blog.sina.com.cn/s/blog_75247c770100yxpb.html 面试的时候,常常会被问到这样一个问题:请您写出一个单例模式(Singleton Pattern)吧。好吧,写就写,这还不容易。顺手写一个: 1 //饥饿模式 2 public final class EagerSingleton 3 { 4 pri...

2018-07-27 22:16:01 107

转载 MySQL优化

MySQL优化三大方向① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。③ 对SQL语句以及表优化。MySQL参数优化1:MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看mysql> show variables like 'max_con...

2018-07-24 09:22:54 158

转载 CountDownLatch、CyclicBarrier和 Semaphore

在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲:一.CountDownLatch用法二.CyclicBarrier用法三.Semaphore用法一.CountDownLatch用法CountDownLatch类...

2018-07-19 09:04:18 115

转载 解决Spring中id重复的问题

问题提问:   当我们的web应用庞大之后,里面有很多的bean配置并且是分文件的,如果两个bean的配置id是一样的而且实现类也是一样的,例如有下面两份xml的配置文档。 问题分析:beancontext1.xml<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE beans PUBLIC "-//SPRI...

2018-07-16 21:45:59 1679

转载 git中pull和fetch的区别

总而言之,几句话概括 1.git pull = git fetch + git mergegit pull会将本地库更新至远程库的最新状态 由于本地库进行了更新,HEAD也会相应的指向最新的commit id2.git fetch的时候只是将remote的origin进行update  但是并没有在local的branch进行merge一张图概括:...

2018-07-02 16:40:19 877

转载 GIt 几个命令的区别

Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。git clonegit remotegit fetchgit pullgit push本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解。同时,本文覆盖了上面5个命令...

2018-07-02 13:36:16 1539

转载 volatile和synchronized

转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52370068面试时很可能遇到这样一个问题:使用volatile修饰int型变量i,多个线程同时进行i++操作,这样可以实现线程安全吗?提到线程安全、线程同步,我们经常会想到两个关键字:volatile和synchronized,那么这两者有什么区别呢? 1. volatile修饰的变...

2018-06-26 20:39:30 123

转载 JAVA多线程之volatile 与 synchronized 的比较

一,volatile关键字的可见性要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下:从图中可以看出:①每个线程都有一个自己的本地内存空间--线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作②对该变量操作完后,在某个时间再把变量刷新回主内存关于JAVA内存模型,更详细的可参考: 深入理解Java内存模型(一...

2018-06-26 20:39:16 118

转载 各种锁名词详解

重入锁在并发中,无论是synchronized还是lock也好,内部都有重入的特性,而且特性的含义是一样的。重入(re-entrant),同一个线程可以获取已持有的锁;已知的有两种出现场景: 1、加锁方法调用另外一个加锁方法; 2、递归调用加锁方法;归根结底,就是一个加锁方法调用了另外一个加锁方法;如果没有重入的特性:public class ReentrantTest { publi...

2018-06-24 11:09:40 886

转载 ConcurrentHashMap原理

一、背景:线程不安全的HashMap    因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器     HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他...

2018-06-24 10:54:46 132

转载 HashMap和Hashtable的区别

HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。代码版本JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 1.7.0_67。源码见这里1. 时间HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2。从时间的维度上来看,HashMap要比HashT...

2018-06-24 10:21:21 191

转载 BlockingQueue

前言:     在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起...

2018-06-24 10:12:41 225

转载 ConcurrentLinkedQueue原理

前言我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本节我们就来研究下ConcurrentLinkedQueue是如何保证线程安全的同时又能高效的操作的。1.ConcurrentLinkedQueue的结构Co...

2018-06-24 09:54:18 530 1

转载 CopyOnWriteArrayList原理

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。...

2018-06-24 09:29:35 163

转载 数组和集合的区别

数组和集合的定义一、数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,当然检查边界会以效率为代价。二、集合JAVA还提供其他集合,list,map,set,他们处理对象的时候就好...

2018-06-24 09:19:39 74594 19

转载 2018版本IDEA中导出war包

注:IDEA版本14.1.71.进入项目的Project Structure界面,进行如下4步操作2.通过上述4步操作后,进入如下界面注:1.修改war包的名称(根据实际情况);2.如果出现WEB-INF文件夹则删除,否则不做操作;3.创建META-INF文件(必须)。3.选择如下的路径创建META-INF文件,IDEA会自动创建该文件4.在操作完上面3大步骤后,进入如下界面,进行如图所示的操作注...

2018-06-22 21:23:34 20537 4

转载 HashMap的实现原理和底层数据结构

看了下JAVA里面有HashMap、Hashtable、HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正HashMap和Hashtable的区别HashSet和HashMap、Hashtable的区别HashMap和Hashtable的实现原理HashMap的简化实现MyHashMap HashMap和Hashtable的区别两者最主要的区别在于Hashtable是线程...

2018-06-21 21:24:33 195

转载 Git vs SVN

Git是目前世界上最先进的分布式版本控制系统,其实 Git 跟 SVN一样有自己的集中式版本库或服务器,但是Git 更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个跟中心版本库一模一样的本地版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍然能够提交文件,查看log(历史版本记录),创建项目分支等。Git 和 SVN的...

2018-06-18 13:47:37 190

转载 java.lang.UnsupportedClassVersionError: javax/servlet/ServletContext : Unsupported major.minor versi

在运行junit测试的时候,发生一下异常:[java] view plain copyjava.lang.UnsupportedClassVersionError: javax/servlet/ServletContext : Unsupported major.minor version 51.0      at java.lang.ClassLoader.defineClass1(Native...

2018-06-09 19:08:33 1587 3

转载 nexus应用

1.    环境搭建  1.1  下载    http://www.sonatype.org/nexus/    NEXUS OSS [OSS = Open Source Software,开源软件——免费]    NEXUS PROFESSIONAL -FREE TRIAL [专业版本——收费]。    所以选择NEXUS OSS        找到Download andInstall Nex...

2018-06-09 17:07:08 1943

转载 MAVEN搭建SSM项目

简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下)在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件夹。解决方法:① : 在项目上右键选择properties,然后点击java build path,在Librarys下,编辑JRE System Library,选择workspace default...

2018-06-09 14:30:09 218

转载 Myeclipse XSD配置XML自动提示

公司是使用XMl来开发项目的,但是一直没有格式化的验证和提示,所以就自己写了个XSD,使用的时候需要进行配置,上网找了一下都只有如何配置到XMl Catalog中,但是只是配置到XMl Catalog 又无法正常提示,终于在 http://wenku.baidu.com/view/f2559c0ea300a6c30c229f55.html?from=search 找到方法,自己也整理了一份。1、注...

2018-05-29 19:30:35 201

转载 String类的intern()方法

0.引言什么都先不说,先看下面这个引入的例子:[java] view plain copyString str1 = new String("SEU")+ new String("Calvin");      System.out.println(str1.intern() == str1);   System.out.println(str1 == "SEUCalvin");  本人JDK版本1...

2018-05-13 21:56:35 131

转载 拦截器与过滤器的区别

拦截器与过滤器的区别总结:过滤器在web.xml中配置:(1)因为一开始在过滤器中映射的url-pattern填写路径是*.action。所有的action要经过它的过滤。<url-pattern>*.action</url-pattern>(2)因为在web.xml中配置了过滤器,所以,执行过程所有程序都经过struts2过滤器(路径是:/*),首先过滤自己相关的程序,如...

2018-05-13 09:43:21 272

转载 MyEclipse2014 svn安装

打开myeclipse的help---install from site  点击add弹出对话框在输入框中输入对应内容http://subclipse.tigris.org/update_1.10.x点击OK之后,会节目会刷新出两个选项,需要选中的点击next,出现许可的时候选中同意,一直结束等待安装完成就可以啦,过程有些慢,需要联网,耐心等待就可以了。重新启动myeclipse中间出现了一个警告...

2018-05-08 14:12:13 962

转载 @responseBody注解的使用

1、  @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML  数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。2、    @RequestMapping("/log...

2018-04-30 20:13:25 114

转载 io编码问题

编码  什么是编码?  计算机中存储的都是二进制,但是要显示的时候,就是我们看到的却可以有中国 ,a  1 等字符  计算机中是没有存储字符的,但是我们却看到了。计算机在存储这些信息的时候,根据一个有规则的编号,当用户输入a 有a对映的编号,就将这个编号存进计算机中这就是编码。     计算机只能识别二进制数据。  为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并...

2018-03-23 20:24:47 252

转载 IO/InputStreamReader、OutputStreamWriter编码问题分析

一、理论:1、字符流和字节流区别是什么?字符流=字节流+编码集,在实际读取的时候其实字符流还是按照字节来读取,但是会更具编码集进行查找编码集字典解析相应的字节,使得一次读取出一个字符;2、什么是转换流?转换流就是原本是字节流,但是读取到的数据是字符,所以我们希望使用字符流来进行操作,那么就可以使用转换流进行转换;转换流=字节流+编码集。转换流的特点是可以指定编码集。3、转换流的作用:(1)、从控制...

2018-03-23 20:12:56 656

转载 InputStreamReader/OutputStreamWriter乱码问题解决

/**InputStreamReader参数charset要跟文件编码格式一致。 InputStreamReader读的时候才不会乱码。*OutputStreamWriter参数charset设置编码例如UTF-8。在操作系统打开文件时候也要用相应编码打开才不会乱码。*InputStreamReader:读操作时编码要与文件编码一致。OutputStreamWriter写操作时设置编码打开文件时也...

2018-03-23 20:07:49 1291

转载 Java编码格式分析

几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元—— byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的语言假定为英...

2018-03-23 20:07:01 156

空空如也

空空如也

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

TA关注的人

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