
java
文章平均质量分 84
qq_270490096
qq:270490096
wechat:my_ztq
blog:https://zhengtianqi.github.io/
展开
-
ZK入门笔记
1.什么是ZK? ZooKeeper(简称ZK)是一种用于分布式应用程序的高性能协调服务。它在一个简单的界面中公开了常用服务 - 例如命名(naming),配置管理(configuration), 同步(synchronization)和组服务(group services)因此你不必从头开始编写它们。你可以使用现成的方法来实现共识(consensus),组管理(group...原创 2019-05-12 10:04:57 · 304 阅读 · 0 评论 -
MQ知识积累
生产者发送MQ消息,消费者处理MQ消息,消息中间件的使用RocketMQ 也可以参照官网的例子:https://github.com/apache/rocketmq-spring (英) https://github.com/apache/rocketmq-spring/blob/m...原创 2019-02-27 22:13:34 · 247 阅读 · 0 评论 -
第四章-JDK并发包-线程池的例子
1.固定大小的线程池Executors.newFixedThreadThreadPool2.计划任务-比较实用 可以进行定时补偿策略 --schedulescheduleAtFixedRatescheduleWithFixedDelay原创 2019-02-26 22:48:19 · 155 阅读 · 0 评论 -
Serializable的作用总结
1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; ...原创 2019-02-27 13:52:46 · 442 阅读 · 0 评论 -
数组,集合(list,数组,set)的转换
package com.sy.sa;import java.util.*;/** * @Author: zhengtianqi * @Date: 2019/3/27 15:37 */public class SetAndList { public static void main(String[] args) { String[] strArray = {...原创 2019-03-27 15:58:04 · 276 阅读 · 0 评论 -
伪共享( false sharing )
一、相关概念 (1)CPU缓存介绍: 以近代CPU的视角来说,它们的作用都是作为CPU与主内存之间的高速数据缓冲区,L1最靠近CPU核心;L2其次;L3再次。 (2) 任务管理器可以看到其中的大小 ...原创 2019-04-30 10:35:17 · 233 阅读 · 0 评论 -
dubbo入门文档
一、基础知识1、分布式基础理论1.1)、什么是分布式系统?《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”分布式系统(distributed system)是建立在网络之上的软件系统。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治...原创 2019-02-05 13:59:04 · 196 阅读 · 0 评论 -
第三章-JDK并发包-ReentrantLock几个重要的方法整理
package com.bjut.TheWorldOfConcurrent.Chapter3;import java.util.concurrent.locks.ReentrantLock;/*** ReentrantLock:* lock(): 获得锁,如果所已经被占用,则等待* lockInterruptibly():获得锁,但优先相应中断* tryLock()...原创 2019-01-01 19:10:56 · 346 阅读 · 0 评论 -
第二章-并发程序基础
概念 所谓同步可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其它的命令。 异步执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 对于Java程序员而言,我们会经常听到同步关键字sy...原创 2018-12-30 13:06:48 · 151 阅读 · 0 评论 -
JAVA中的值传递
java中只存在值传递,只存在值传递概念:值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 值传递例子:public class Test3 ...原创 2018-12-22 16:27:52 · 151 阅读 · 0 评论 -
PageHelper分页原理(springboot版本)
首先在Mybatis的配置文件 application.yml中配置PageHelper插件pagehelper: helper-dialect: mysql #超过最大页数后还会返回数据:reasonable: true reasonable: false support-methods-arguments: true params: count=countSql ...原创 2018-12-21 22:52:45 · 2249 阅读 · 0 评论 -
第一章-高并发程序设计-原子性,可见性,有序性
package com.bjut.TheWorldOfConcurrent.Chapter1;/** * 原子型: * 原子性是指一个操作是不可以中断的。 * Thread.yield( )方法: * 使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。 * 此程序解释: * 对于32位的操作系统,long型的数据读写不是原子性的(因为l...原创 2018-12-26 15:13:45 · 187 阅读 · 0 评论 -
常见的接口与类 -- Comparable
我们在字符串中见到过CompareTo方法,知道这个方法是用于比较字符串顺序的,根据字典顺序进行排序。Java中很多类也都有CompareTo方法,甚至于排序算法的底层组成也是依赖于比较的,而这个比较就是依赖于各种数据类型的CompareTo或者Compare方法。Java中所有的compareTo方法都源于一个接口,那就是Comparable。这个接口只有一个方法,那就是CompareTo。所有想要具有比较功能的类,都建议实现这个接口,而非是自己定义这个功能,这是面向对象的概念(将具有相同功能的事物抽象到原创 2018-12-20 11:47:56 · 290 阅读 · 0 评论 -
基于java的开源的全文搜索技术
LuceneElasticSearchSolr原创 2018-12-08 23:11:33 · 257 阅读 · 0 评论 -
Disruptor总结(完整类图与时序图)
disruptor------高性能的线程间消息传递框架介绍:Disruptor类似于java的BlockingQueue。与队列一样,Disruptor的目的是在同一进程内的线程之间传递数据。但是,Disruptor提供了与队列不同的关键功能:1、同一个“事件”可以有多个消费者,消费者之间既可以并行处理,也可以相互依赖形成处理的先后次序(形成一个依赖图)2、为事件(eve...原创 2019-05-12 09:35:41 · 1488 阅读 · 3 评论 -
Guava和Apache-Common的官方wiki
Apache Commons项目由三部分组成:Commons Proper- 可重用Java组件的存储库。 Commons Sandbox- 用于Java组件开发的工作区。 Commons Dormant- 当前不活动的组件库。Commons ProperCommons Proper致力于一个主要目标:创建和维护可重用的Java组件。Commons Proper是一个...翻译 2019-05-12 09:47:02 · 1076 阅读 · 0 评论 -
JAVA中的运算符 (二)
一、一元运算符 因操作数是一个,故称为一元运算符。运算符 含义 例子 - 改变数值的符号,取反 -x(-1*x) ~ 逐位取反,属于位运算符 ~x ++ 自加1 x++ -- 自减1 x-- ++x 因为++在前,所以先加后用。x++ 因为++在后,所以先用后加。注意:a+ ++b和a+++b是不一...原创 2019-06-29 16:23:42 · 151 阅读 · 0 评论 -
JAVA中的运算符 (一)
①.短路与运算的符号:&& 短路与运算的特点:当运算符左边的关系运算结果是false时,不再对右边的关系运算进行计算。 如:4<3&&5*3>12 步骤1:计算4<3,结果是false。 步骤2:false&&5*3>12,结果是false。 不...原创 2019-06-29 16:18:20 · 172 阅读 · 0 评论 -
B-、B+树笔记
一、为什么需要B-树?树的查询效率高,而且可以保持有序。 二叉搜索树的复杂度是O(logN),性能已经很高,那为什么还要考虑使用B-树从算法逻辑上来讲,二叉查找树的查找速度和比较次数都是最小的。 但是我们不得不考虑的一个现实问题:磁盘IO 数据库索引是存储在磁盘上,当数据量大时,索引可能有几个G甚至更多。当我们利用索引查询的时候...原创 2019-06-16 18:35:47 · 322 阅读 · 0 评论 -
限流与熔断器介绍及其应用
1.限流为什么要限流?正常来说,一个员工A他每天能够处理的工作是10个,突然某一天来了100个工作量,这时候,如果员工A还处理100个,只有一种可能,这个员工被压垮。如果我们能预先知道会有100个任务会来,我们通过增加员工数或定义消息队列等等来临时解决。但是我们很多时候无法预料这些意外的。根据墨菲定律,坏事往往会接踵而来,有可能某个点挂了会引起全局的挂掉(雪崩)。因此我们不得不对我...原创 2019-06-15 22:47:02 · 496 阅读 · 0 评论 -
AQS的各种锁总结,概念篇
同步队列:同步队列是AQS很重要的组成部分,它是一个双端队列,遵循FIFO原则。 主要作用是用来存放在锁上阻塞的线程,当一个线程尝试获取锁时,如果已经被占用,那么当前线程就会被构造成一个Node节点放到到同步队列的尾部。 队列的头节点是成功获取锁的节点,当头节点线程释放锁时,会唤醒后面的节点并释放当前头节点的引用。独占锁:调用acquire(arg) ,入口方法获取独占锁 ...原创 2019-06-15 21:56:49 · 1132 阅读 · 0 评论 -
Zookeeper watch参照表与demo
Zookeeper的watch实际上要处理两类事件1.连接状态事件(type=None, path=null)这类事件不需要注册,也不需要我们连续触发,我们只要处理就行了。2.节点事件节点的建立,删除,数据的修改。它是one time trigger,我们需要不停的注册触发,还可能发生事件丢失的情况。上面2类事件都在Watch中处理,也就是重载的process(Event...原创 2019-06-14 13:47:24 · 274 阅读 · 0 评论 -
Redis 发布订阅实战
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。我们需要Redis中的功能就是发布订阅的功能: 1、我们调用publish方法,进行广播,发送一条消息 2、当订阅者subscribe订阅这个广播的时候,就会收到这个message,然后去判断这个message告诉我了什么注意: 1、当然订阅...原创 2019-06-08 13:58:21 · 501 阅读 · 0 评论 -
对象的内存布局与指针压缩
我们知道在Java中基本数据类型的大小,例如int类型占4个字节、long类型占8个字节,那么Integer对象和Long对象会占用多少内存呢?1--------------------------------------------------------------------------------------------------------------------...转载 2019-05-31 21:03:32 · 482 阅读 · 0 评论 -
观察者模式实战
1、什么是观察者模式简单解释:有A、B、C、D等四个独立的对象,其中B、C、D这三个对象想在A对象发生改变的第一时间知道这种改变,以便做出相应的响应或者对策。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。关键代码:在抽象类里有一个 ...原创 2019-05-30 21:04:13 · 260 阅读 · 0 评论 -
建造器模式实战(Builder模式)
最近在阅读在Effective Java第三版,其中提到了建造器模式(建造者详解:https://blog.youkuaiyun.com/sinat_35821285/article/details/80004060),找了一个实际生产使用的例子。(当遇到多个构造器参数时要考虑使用建造器模式,即Builder模式。)1)最常见的字符串建造器:的使用:public class Main {...原创 2019-05-23 21:15:17 · 458 阅读 · 0 评论 -
单例模式实战
读最近同学发的一篇文章,单例模式最佳实践:https://www.jianshu.com/p/b08fdc6f86a1有感。以前学过单例,没有实战经验,并不知道它在程序优化的方面有很大的作用。最近通过一段时间的学习和开发,对单例模式有了更多的了解。 ...原创 2019-05-25 16:22:01 · 443 阅读 · 0 评论 -
代码优化(未完待续)
一、计算耗时的方式优化先计算每次循环的耗时,测出一次循环最坏情况下的平均耗时,然后算出总耗时。 采用多个线程,使用4 8 16等线程分别测试,测出平均耗时。计算出用几个线程最快。 电脑为16g内存,指定-Xms 8g –Xmx 8g二、...原创 2019-05-12 10:08:36 · 107 阅读 · 0 评论 -
基于GUAVA线程并发代码及文件操作规范
创建定时任务//禁止使用Timer,一律使用ScheduledExecutorService ScheduledExecutorService schedule = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().setNameFormat("scheduled-%d").bu...原创 2019-05-12 09:56:39 · 636 阅读 · 0 评论 -
Spring boot 中使用log4j2
1、引入log4j2包,把spring-boot-starter-web以及spring-boot-starter两个包下面的spring-boot-starter-logging排除,然后引入spring-boot-starter-log4j2包 <dependency> <groupId>org.springframework.boot</group...转载 2018-11-24 15:14:58 · 130 阅读 · 0 评论 -
基于springcloud Finchley版本整合Eureka,Ribbon踩坑记录java.net.UnknownHostException
这几天使用Finchley版本开发搭建集群的时候遇到一个问题,使用服务名去访问一个服务,却总是报java.net.UnknownHostException的错误,于是上网查阅了很多资料,网上有很多说要在RestTemplate上创建Bean的时候加上注解LoadBalanced就可以解决,然而却不可以。最后经过三天时间的研究,终于找到了问题所在,原来LoadBalanced这个注解导入错了pom依...转载 2018-08-15 09:38:28 · 1828 阅读 · 3 评论 -
Repository
Repository的概念在Spring中有Repository的概念,repository原意指的是仓库,即数据仓库的意思。Repository居于业务层和数据层之间,将两者隔离开来,在它的内部封装了数据查询和存储的逻辑。这样设计的好处有两个:降低层级之间的耦合:更换、升级ORM引擎(Hibernate)并不会影响业务逻辑 提高测试效率:如果在测试时能用Mock数据对象代替实际的数据库...原创 2018-08-06 21:55:52 · 3382 阅读 · 0 评论 -
Java中的final关键字的几种用法
在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。final关键字在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我们来讲final的四种主要用法。1.修饰数据在编写程序时,我们...转载 2018-04-18 12:45:39 · 214 阅读 · 0 评论 -
Java中的static关键字解析
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正。...转载 2018-04-18 12:36:27 · 122 阅读 · 0 评论 -
文件下载
原创 2018-04-22 10:23:45 · 436 阅读 · 0 评论 -
集合类HashMap
--------------------------打印某一个元素---------------------------------------遍历hashmap分类原创 2018-04-22 10:05:02 · 123 阅读 · 0 评论 -
文件上传
原创 2018-04-17 20:29:18 · 97 阅读 · 0 评论 -
mybatis-generator自动生成代码插件使用详解 idea
一、配置Maven pom.xml 文件在pom.xml增加以下插件:<build> <finalName>zsxt</finalName> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <转载 2018-04-04 16:02:16 · 398 阅读 · 0 评论 -
mybatis-generator自动生成代码插件使用详解 ecilpse
mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间,今天自己研究了一下,也分享一下使用心得供大家简单使用。 本人使用的是maven构建,首先需要在pom.xml文件添加mybatis-generator依赖包以及插件,配置如下: dependencies中添加:<dependenc...转载 2018-04-04 15:36:47 · 245 阅读 · 0 评论 -
synchronized关键字
1基本概述编辑synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、D等)正在用这个方法,有的话要等正在使用synchronized方法的线程B(或者C、D)运行完这个方法后再运行此线程A,没有的话,直接运行。它包括两种用法:synchronized方法和synchronized块。synchronized 方法声...转载 2018-04-17 11:25:15 · 111 阅读 · 0 评论