JAVA
文章平均质量分 87
wuxiao5570
这个作者很懒,什么都没留下…
展开
-
java 序列化和反序列化
java 序列化和反序列化原创 2017-01-14 10:52:20 · 265 阅读 · 0 评论 -
java 单例模式和工厂模式
单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。私有的构造方法指向自己实例的私有静态引用以自己实例为返回值的静态的公有的方法饿汉式单例 public class Singleton { private static Singleton singleton = new Singleton(); priva原创 2017-04-13 09:53:06 · 2632 阅读 · 0 评论 -
java NIO总结
Java NIO :ChannelsBuffers:缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成 NIO Buffer 对象Selectors:允许单线程处理多个 Channel。Channel 的实现:FileChannel 从文件中读写数据。DatagramChannel 能通过 UDP 读写网络中的数据。SocketChanne原创 2017-04-13 09:54:47 · 313 阅读 · 0 评论 -
java 类型转换
类型转换Java 语言是一种强类型的语言。强类型的语言有以下几个要求:变量或常量必须有类型:要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用。赋值时类型必须一致:值的类型必须和变量或常量的类型完全一致。运算时类型必须一致:参与运算的数据类型必须一致才能运算。但是在实际的使用中,经常需要在不同类型的值之间进行操作,这就需要一种新的语法来适应这种需要,这个语法就是数转载 2017-04-17 18:54:10 · 301 阅读 · 0 评论 -
java 操作csv文件
package com.mark.csv /** * 读取CSV文件 */ public void readeCsv(){ try { ArrayList csvList = new ArrayList(); //用来保存数据 Strin转载 2017-04-17 15:14:22 · 308 阅读 · 0 评论 -
Java 定时任务
Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,而TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。Timer的schdule方法:schedule(TimerTask task, Date time):安排在指定的时间执行指定的任务。schedule(TimerTask task, Date firstTime, long period) :安原创 2017-05-25 18:05:10 · 1129 阅读 · 0 评论 -
Java 常用线程池
Java通过Executors提供四种线程池,分别为:import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThrea原创 2017-05-25 18:29:20 · 229 阅读 · 0 评论 -
kafka 存储文件解析
Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partition的关系。partition是以文件的形式存储在文件系统中,比如,创转载 2017-07-06 10:55:29 · 573 阅读 · 0 评论 -
ReentrantLock理解
互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。java.util.concurrent.locks包提供了锁和等待条件的接口和类互斥锁--Lock接口及其实现类ReentrantLock,所谓互斥锁, 指的是一次最多只能有原创 2017-11-06 22:17:42 · 933 阅读 · 0 评论 -
RandomAccessFile文件随机读写
RandomAccessFile是用来访问那些保存数据记录的文件的model各个参数详解 * r 代表以只读方式打开指定文件 * rw 以读写方式打开指定文件 * rws 读写方式打开,并对内容或元数据都同步写入底层存储设备 * rwd 读写方式打开,对文件内容的更新同步更新至底层存储设备方法区:定位用的getFilePointer( )在文件里移动用的原创 2017-11-06 22:19:27 · 893 阅读 · 0 评论 -
单点登录
什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分.相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,原创 2017-11-02 23:19:34 · 269 阅读 · 0 评论 -
ReentrantLock重入锁
ReentrantLock是一个可重入的互斥锁,重入锁是一种递归无阻塞的同步机制。由最近成功获取锁,还没有释放的线程所拥有,当锁被另一个线程拥有时,调用lock的线程可以成功获取锁。如果锁已经被当前线程拥有,当前线程会立即返回。重入锁的构造方法提供一个可选的公平参数: 公平情况下,操作会排一个队按顺序执行,来保证执行顺序。 不公平情况下,是无序状态允许插队,jvm会自动原创 2017-11-02 23:22:42 · 185 阅读 · 0 评论 -
Elasticsearch 5.2 增删改查
把ES当做关系型数据库mysql,常用的增删改查+批处理语句。ES还是很牛逼的,不仅仅是存储,今天还发现了Graph Api,可以做指示图谱用。查看和创建GET /_cat/indices?v 查看全部索引PUT /customer?pretty 创建名为customer的索引==创建库databaseGET /customer/_search?pretty 查询全原创 2017-02-24 18:46:26 · 769 阅读 · 0 评论 -
JAVA 数组常用方法
//静态初始化int array[] = { 1, 2, 3, 4 };//动态初始化int array[] = new int[3];//数组长度int length = array.length;//获取二维中第一维的长度int length2 = array[0].length;//遍历int[] array = new int[] { 1原创 2017-02-16 10:13:59 · 747 阅读 · 0 评论 -
Elasticsearch 存储方式和管理优化细节
Elasticsearch 的数据存储方式:Lucene 把每次生成的倒排索引,叫做一个段(segment).然后另外使用一个 commit 文件记录索引内所有的 segment,生成 segment 的数据来源,refresh到内存中的 buffer。从写入refresh到文件缓存buffer中默认设置为 1 秒。Elasticsearch 在把数据写入到内存 buffer 的同原创 2017-02-23 18:11:45 · 13538 阅读 · 1 评论 -
JVM常见问题及参数详解
几个常见的jvm问题,总结的比较好,搬来借鉴。1. java.lang.OutOfMemoryError:Java heap space ----JVM Heap(堆)溢出JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。可以利用JVM提供的-Xmn -Xms -Xmx等转载 2017-02-16 14:36:32 · 693 阅读 · 0 评论 -
Elasticsearch 搜索使用详解
结构化搜索//精确值查找使用过滤器(filters),跳过评分阶段,容易缓存。请尽可能使用过滤式查询。在query DSL查询表达式中,term查询类似where条件查询。{ "term" : { "price" : 20 }}使用 constant_score(恒定分数) 查询以非评分模式来执行 term 查询并以一作为统一评分。原创 2017-02-10 17:44:45 · 2470 阅读 · 0 评论 -
Elasticsearch JAVA API
参考文献:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.htmlMaven 工程 pom.xml修改 org.elasticsearch.client transport 5.2.0//client api通过TransportClie翻译 2017-02-09 16:01:54 · 745 阅读 · 0 评论 -
elasticsearch 5.2 部署及Rally压力测试
elasticsearch 5.2于2017年1月31号发布,压测试用。详细的文档记录奉献各位。原创 2017-02-08 18:46:23 · 6304 阅读 · 1 评论 -
Elasticsearch几个概念和配置
Elasticsearch是当今最流行的分布式搜索引擎,首先介绍下使用场景,比如:全文检索 比如找到与搜索词项(term)最相关的维基百科文章。聚合 比如在广告网络中,可视化的搜索词项的竞价直方图。地理空间API 比如在顺风车平台,匹配最近的司机和乘客。接下来重点介绍下几个概念和配置:master节点主要功能是维护元数原创 2017-02-16 17:23:45 · 2147 阅读 · 0 评论 -
JAVA 面试题(一)
1.谈一谈”==“与”equals()"的区别。==就是用来比较值是否相等,适用于原始数据类型和枚举类型.equals方法是基类Object中的方法,因此对于所有的继承于Object的类都会有该方法。在Object类中,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。2.Java中的四种引用及其应用场景是什么?强引用: 通常我们使用new操作符创建一个对原创 2017-01-18 17:34:11 · 1301 阅读 · 0 评论 -
JAVA 线程总结
线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。多线程是指在同一程序中有多个顺序流在执行。在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。方法一:继承Thread类覆盖run方法 (不推荐)public class ThreadDemo1 {原创 2017-02-17 22:25:26 · 190 阅读 · 0 评论 -
JAVA 面试题(二)
1.String是最基本的数据类型吗?基本数据类型包括byte、int、char、long、float、double、boolean和short。2.说出Servlet的生命周期,并说出Servlet和CGI的区别?Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doP原创 2017-01-19 15:34:20 · 600 阅读 · 0 评论 -
Kibana5.2监控ES5.2集群排错记录
今天调整下集群,kibana竟然无耻的报错,记录一下,避免以后掉坑; kibana报错提示:网上有很多排错案例,删除.kibana索引即可,但是我的环境没有好使;我使用的ES和Kibana都是5.2的版本,系统是centos7.2的。cat kibana.ymlserver.host: "192.168.80.11"elasticsearch.u原创 2017-02-21 12:17:10 · 3424 阅读 · 0 评论 -
Elasticsearch压测工具esrally详解
rally 工具是 Elastic 官方开源的针对性性能压测工具。目前 Elasticsearch 的 nightly performance report 就是由 rally 产生的。对自己在做 ES 源码修改,或者ES 应用调优的人来说,通过 rally 验证自己的修改效果,是一件很需要且容易的事情。环境:python3.4+ ;pip3;JDK8;git 1.9+;gradl原创 2017-02-21 18:28:55 · 20184 阅读 · 2 评论 -
JAVA基础 几个注意点
int 整型 4 bytesfloat 单精度浮点型 4 bytes 有效数字7位,双精度是15位char 字符型 2 bytesbool 布尔型 1 bitpublic static void main(String[] args){ System.out原创 2017-02-13 16:19:44 · 316 阅读 · 0 评论 -
Semaphore信号量类详解
Semaphore类是一个计数信号量,必须由获取它的线程释放,通常用于限制可以访问某些资源(物理或逻辑的)线程数目,信号量控制的是线程并发的数量。计数器:一个信号量有且仅有3种操作,且它们全部是原子的:初始化、增加和减少增加可以为一个进程解除阻塞;减少可以让一个进程进入阻塞。原理理解:Semaphore是用来保护一个或者多个共享资源的访问,Semaphore内部维护了一原创 2017-11-03 22:18:17 · 2463 阅读 · 0 评论