自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

转载 3、Redis客户端的简单使用

基于Java语言演示Redis Client的简单使用:  1、引入Maven依赖:<dependency> <groupId>redis.clients</> <artifactId>jedis</> <version>2.9.0</> <typ...

2019-09-27 16:24:00 166

转载 1、Redis初识

Redis简介:  利用C语言开发,开源的,支持网络交互的,基于键值对的高性能存储服务系统,经典使用场景包含:缓存、计数器、消息队列、排行榜、社交网络、实时系统特性:  速度快    ---数据存储在内存中,单线程运行,每秒可达10W次读写  持久化    ---Redis中所有数据保存在内存中,对数据的更新将异步保存到磁盘。包含RDB和AOF两种持久化方式。...

2019-09-27 15:49:00 121

转载 SpringBoot整合RabbitMQ-消息可靠性投递

本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客。  学习路径:https://www.imooc.com/learn/1042RabbitMQ消息中间件极速入门与实战  项目源码:https://github.com/ZbLeaning/Boot-RabbitMQ...

2019-01-22 17:28:00 457

转载 SpringBoot整合RabbitMQ-整合演示

本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客。  学习路径:https://www.imooc.com/learn/1042RabbitMQ消息中间件极速入门与实战  项目源码:https://github.com/ZbLeaning/Boot-RabbitMQ...

2019-01-22 11:39:00 96

转载 SpringBoot整合RabbitMQ-服务安装

  本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客。  学习路径:https://www.imooc.com/learn/1042RabbitMQ消息中间件极速入门与实战  项目源码:https://github.com/ZbLeaning/Boot-RabbitMQ...

2019-01-21 18:23:00 91

转载 并发编程-JUC之Atomic

概述:  早期的JDK版本中,如果要并发的对Integer、Long、Double之类的Java原始类型或引用类型进行操作,一般都需要通过锁来控制并发,以防止数据不一致。JUC-Atomic原子类位于java.util.concurrent.atomic包下。该包提供了许多Java原始/引用类型的映射类。如AtomicInteger、AtomicLong、AtomicBoolean,...

2019-01-21 14:52:00 95

转载 Dubbo-Zookeeper安装

安装zookeeper:  1、拖入tar.gz包,解压  2、建立/usr/zookeeper路径,该路径创建logs文件夹和data文件夹  3、进入conf目录,复制一份zoo_sample.cfg为zoo.cfg,并进行修改  4、修改zoo.cfg文件, 将dataDir和dataLogDir路径改为之前创建的路径,端口保持默认  5、进入bin目录,./z...

2019-01-18 16:54:00 75

转载 CentOS-常用安装

JDK安装  1、检查jdk版本:java -version  2、检查jdk安装包:rpm -qa|grep java  3、将要安装的jdk的tar.gz包拖入,CRT快捷键ALT+P  4、解压到指定目录:    (1) 创建 mkdir -p/usr/lib/jvm    (2) 解压到 tar -zxvf 压缩包名 -C /us...

2019-01-18 16:51:00 66

转载 多线程-线程通信

一、线程的通信机制  1、wait/notify/notifyAll机制  3、Lock+Condition二、wait/notify机制  该机制涉及三个方法,wait()/notify()/notifyAll()。三个方法均非Thread类中的方法,而是Object类中声明的方法。均为final方法,无法被重写。  wait():让当前线程(Thread.c...

2019-01-18 13:55:00 65

转载 JVM-高效并发

Java内存模型与线程:  Java内存模型的目的是定义程序中各个变量的访问规则,此处的变量包括实例字段、静态字段和构成数组对象的元素,但不包括局部变量和方法参数,因为后者是线程私有的。  Java内存模型规定所有的变量都存储在主内存中,每个线程有自己的工作线程,线程的工作内存中保存了被该线程用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写到...

2019-01-17 16:00:00 76

转载 MySQL-索引

索引:  数据库中专门用于帮助用户快速查询数据的一种数据结构Mysql索引:  单列索引(主键索引、唯一索引、普通索引):    一个索引只包含一个列,一个表可以有多个单列索引  组合索引:    一个组合索引包含两个或两个以上的列索引的创建:  单列索引:    新建:CREATE INDEX 索引名 ON '表名'('字段名')、修改:ALTER...

2019-01-17 11:01:00 81

转载 静态代理与JDK动态代理

demo地址:  https://github.com/ZbLeaning/leaning代理:   为其他对象提供一种代理以控制对这个对象的访问。分为静态代理和动态代理。代理模式的目的就是为真实业务对象提供一个代理对象以控制对真实业务对象的访问静态代理:   程序运行前就已存在的编译好的代理类动态代理:  程序运行期间根据需要动态创建代理类及其实例已完成功能...

2019-01-17 10:43:00 69

转载 JVM-类加载机制

类的加载:  将类的.class文件中的二进制数据读入内存,将其放在方法区中,然后在堆中建立java.lang.class对象,用来封装类在方法区内的数据结构,并向开发者提供访问方法区内的数据结构的入口。类加载器不需要等待某个类被首次主动使用时再加载。JVM规范允许类加载器在预料某个类将要被使用时就预先加载,在该过程中遇到.class文件缺失或存在错误,类加载器必须在程序首次主动使用...

2019-01-15 16:17:00 68

转载 RPC原理及实现

RPC概述:  RPC(Remote Procedure Call)即远程过程调用,一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。组件:  客户端(Client),服务的调用方。  客户端存根(Client Stub),存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。  服务端(Server),真正的服...

2019-01-02 09:28:00 105

转载 JVM-自动内存管理机制

关于GC:  垃圾收集通常被称为"GC",经过半个世纪的发展,内存动态分配与内存回收技术已经相当成熟。那我们为何还要了解GC和内存分配呢?  当我们需要排除各种内存溢出、内存泄露问题时,当垃圾收集成为系统到达更高并发量的瓶颈时,我们需要对这项技术实施必要的监控和调节。  垃圾收集器在对堆进行回收前,首要就是判断对象之中哪些存活哪些已经死去(不可能再被任何途径使用的对象)...

2018-12-25 09:44:00 74

转载 多线程-线程池

ThreadPoolExecutor类:  java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,我们先从了解这个类开始,来学习线程池。  在该类中一共提供了四个构造方法:public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAli...

2018-12-25 09:43:00 69

转载 多线程-Callable、Future、FutureTask

我们普遍知道的创建线程的方式有两种,一种是继承Thread,一种是实现Runnable接口。这两种方式都无法获取任务执行完后的结果,并发包提供了Callable 类能够得到任务执行完的结果。为何需要Future与Callable的模式?我们先用常用方式来实现需求。获取线程执行完后的结果。public class Demo1 { public static void ...

2018-12-25 09:43:00 96

转载 微信开发后台库

https://github.com/Wechat-Group/weixin-java-tools转载于:https://www.cnblogs.com/zhangbLearn/p/10071722.html

2018-12-05 16:31:00 117

转载 SpringAOP

AOP思想:  AOP是对OOP的延伸,采取了横向抽取机制取代纵向继承提醒重复代码。将影响了多个类的公共行为封装到一个可重用模块,减少系统中重复代码,降低模块耦合。AOP常见场景:  性能监控、事务管理、安全监测、缓存优化、记录日志等。相关概念:  Aspect(切面):是切入点和通知(引入)的结合。  Joinpoint(连接点):指那些被拦截到的点...

2018-12-04 09:52:00 62

转载 JVM-Java内存区域

JVM虚拟机运行时数据区结构分为:    其中方法区和堆是所有线程共享的内存区域,而Java栈、本地方法栈、程序计数器是线程私有的。我们详细介绍运行时数据区的各个区域及其作用。程序计数器:  一块较小的内存空间,字节码指示器工作时通过改变计数器的值来选取下一条需要执行的字节码指令。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。  ...

2018-11-28 20:36:00 52

转载 SpringIOC

本篇原址:http://jinnianshilongnian.iteye.com/blog/1413846个人只是将其精简,以便自己理解概念IOC-Inversion of Control,控制反转。这是一种设计思想。在Java开发中,IOC思想意味着将开发者设计好的对象交给容器管理,而不是在对象内存直接控制。理解IOC,可以从几个点出发去思考:  1、谁控制谁...

2018-11-17 17:11:00 71

转载 多线程-阻塞队列

什么是阻塞队列?  一个支持两个附加操作的队列。这两个附加操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者场景。非阻塞队列与阻塞队列处理方法对比:  非阻塞队列中几个主要方法有:    add(E e):将元素e插入到队列末尾。成功返回true,失败(队列已满)抛出异常。    rem...

2018-11-13 15:29:00 63

转载 并发编程-线程安全性

本节内容:  并发模拟工具的使用、演示案例、线程安全性-原子性并演示JUC之Atomic包、回顾synchronized、lock、volatile关键字并发模拟工具:JMeter。我用的是windows下的,关于中文只需修改JMeter的bin目录下的jmeter.properties。修改language=zh_CN 再次运行jmeter.bat打开就是中文版。主...

2018-11-06 22:45:00 78

转载 并发编程-并发基础

目录:  并发基本概念、并发的优势与风险、CPU多级缓存、MESI、乱序执行优化、Java内存模型并发基本概念:  并发:同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或换出内存,这些线程是同时"存在"的。每个线程都将处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。  高并...

2018-11-04 17:01:00 79

转载 多线程-同步容器和并发容器

同步容器出现的原因?  在Java的集合容器框架中,主要四大类是List、Set、Queue、Map。其中List、Set、Queue分别继承了Collection顶层接口,Map本身是一个顶层接口。我们常用的ArrayList、LinkedList、HashMap这些容器都是非线程安全的,如果有多个线程并发访问这些容器时,就会出现问题。因此,编写程序时,必须要求开发者手动在任何访问...

2018-10-29 15:04:00 83

转载 多线程-volatile关键字和ThreadLocal

1、并发编程中的三个概念原子性:一个或多个操作。要么全部执行完成并且执行过程不会被打断,要么不执行。最常见的例子:i++/i--操作。不是原子性操作,如果不做好同步性就容易造成线程安全问题。可见性:多个线程访问同一个变量,一个线程改变了这个变量的值,其他线程可以立即看到修改的值。可见性的问题,有两种方式保证。一是volatile关键字,二是通过synchronized和lock。...

2018-10-23 16:54:00 142

转载 多线程-synchronized、lock

1、什么时候会出现线程安全问题?  在多线程编程中,可能出现多个线程同时访问同一个资源,可以是:变量、对象、文件、数据库表等。此时就存在一个问题:  每个线程执行过程是不可控的,可能导致最终结果与实际期望结果不一致或者直接导致程序出错。  如我们在第一篇博客中出现的count--的问题。这是一个典型的非线程安全问题。这一被多个线程访问的资源count变量被称为:临界资源(共享...

2018-10-21 18:52:00 68

转载 多线程-多线程基础

1、进程和线程及相关  进程是应用程序在处理机上的一次执行过程,是一个动态的概念。而线程是进程中的一部分,进程中包含多个线程在运行。  区别:    1、进程是资源分配和调度的独立单元,线程是cpu调度的基本单元。    2、进程有自己独立的内存空间并且互不干扰,一个进程包括多个线程,它们共享同一进程的内存空间。    3、线程是轻量级进程,创建和销毁时间比进程小很多...

2018-10-14 18:44:00 84

转载 Zookeeper-集群与单机实践

我用的是linux,CentOS7.3,zookeeper的版本是3.4.6,工具XShell。上传zookeeper的压缩包后我们开始操作。集群模式:   1、解压zookeeper,路径随意    tar -zxvf zookeeper.tar.gz  2、配置文件    初次使用zookeeper时,将conf下的zoo_sample.cfg更名为zoo.cf...

2018-09-14 18:47:00 84

转载 oracle-union all与order by联合使用

今天写sql的时候,第一次使用union all+order by 。是个比较简单的问题,但由于对数据库的不深入理解导致犯了愚蠢的错。浪费了很多时间如题:  两个子查询union all 需要用order by 时间 来排序正确用法select t.* from (sql1 union all sql2) t order by t.time desc此时要注意的项有:...

2018-09-06 17:10:00 264

转载 分布式和集中式架构

1、从集中式到分布式  1.1:集中式的特点    所谓集中式系统就是指由一台或多台主计算机组成中心节点,数据集中存储在这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统所有功能均有其集中处理。在集中式系统中,每个终端或客户端机器仅仅负责数据的录入和输出,而数据存储与控制处理完全由主机来完成。    集中式系统最大特点就是部署结构简单,集中式系统往往基...

2018-09-04 17:10:00 916

转载 Zookeeper-相关流程

选主流程:  当Zk进入恢复模式时,需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。Zk的选举算法有两种:一种是基于basic paxos实现的,一种是基于fast paxos算法实现的。系统默认的是fast paxos。basic paxos流程:  1、当前Server中发起选举的线程担任选举线程,主要功能是对投票结果进统计,并选出推荐的S...

2018-09-04 14:17:00 93

转载 Zookeeper-基本概念

  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个典型的分布式数据一致性的解决方案,分布式应用可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。角色:  1、Leader(领导者):负责进行投票的发起和决议,更新系统状态  2、Learner(学习者):包含Follow...

2018-09-03 10:55:00 75

转载 Rabbitmq-topic演示

  在direct演示里,我们的日志系统实现了可选择性的接收日志。但仍旧有一些限制:不能基于多种标准进路由。在一个完整的日志系统中,我们可能不仅要根据日志的严重级别来接收日志,可能需要基于日志的来源来进行路由。什么叫日志的来源呢?  就是引发日志的设备。比如设备auth/cron/kern。我们可以监听来自corn的错误日志,同时也监听kern的所有日志。这使得我们记录日志更加灵...

2018-08-30 11:53:00 92

转载 设计模式-简单工厂Coding+jdk源码解析

感谢慕课geely老师的设计模式课程,本套设计模式的所有内容均以课程为参考。  前面的软件设计七大原则,目前只有理论这块,因为最近参与项目重构,暂时没有时间把Coding的代码按照设计思路一点点写出来。本周周末会花时间整理出来,然后现在想的是白天更新一点并发编程,晚上回家学习设计模式。非科班出身,脑子也比较笨。博文都是自己根据学习的时候所想的思路,如果能有帮到各位的地方,那十分荣幸。...

2018-08-27 23:22:00 174

转载 浅谈HTTP和HTTPS的区别

这篇随笔我们从六个步骤来学习:  1、了解HTTP和HTTPS的基本概念  2、HTTPS诞生的目的  3、HTTP与HTTPS的区别  4、HTTP和HTTPS的工作原理  5、HTTPS的优缺点  6、如何将网站从HTTP切换到HTTPS1、HTTP和HTTPS的基本概念:  HTTP:超文本传输协议,是在互联网上应用最广泛的一种网络协议。是一个...

2018-08-25 14:16:00 138

转载 Rabbitmq-direct演示

在上一节中我们创建了一个日志系统。实现将日志消息广播给所有的cusumer。在这片教程中,我们将为日志系统添加一个功能:仅仅订阅一部分消息。比如:我们可以直接将关键的错误类型日志消息保存到日志文件中,还可以同时将所有的日志消息打印到控制台。绑定(binding)  在之前的例子中,我们已经创建了绑定:  channel.queueBind(queueName,EXC...

2018-08-25 11:07:00 89

转载 RabbmitMQ-Publish/Subscribe

之前的学习中,我们了解的工作队列实现的是:一个消息只发送到一个消费者。现在我们来学习一下新模式:发布/订阅模式之前我们在原理中介绍了exchange,但好像并没有使用。而是直接往队列里发消息和取消息。现在我们使用rabbitmq的消息模型,利用交换机来转发消息。首先我们来了解一下exchange的四种类型:fanout、direct、topic、headers...

2018-08-24 18:36:00 133

转载 RabbmitMQ-工作队列及相关概念

工作队列-WorkQueue实现功能:  将耗时的任务分发给多个工作者设计思想:  避免直接去做一件资源密集型的任务,并且还得等它完成。因此将任务安排后再去做。将任务封装为一个消息,发到队列中。一个工作进程将在后台取出任务并最终完成。如果开启多个工作进程,任务将在这个多工作进程间共享消息分发:  一、循环分发(Message acknowledement):...

2018-08-24 18:13:00 246

转载 RabbmitMQ-组成及简单使用

什么是MQ?  MQ全程Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费者-生产者模型的典型代表。一端往消息队列中不断写消息而另一端则可以读取队列中的消息。RabbmitMQ相关组成:  producer:消息生产者,生产消息并投递到队列之中。  cusumer:消息消费者,从队列中获取消息并消费。  queue:消息队列,用...

2018-08-24 17:41:00 840

空空如也

空空如也

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

TA关注的人

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