自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lhrimperial的专栏

学习与分享

  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL 主从复制配置

MySQL 主从复制配置 准备两个安装好mysql的主机,我这里使用的是两台虚拟机 - 192.168.204.128(master) - 192.168.204.129(slave) 两个虚机上安装好了MySQL 5.6,参考源码安装mysql创建复制帐号 在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接mast...

2018-05-17 12:13:45 253

原创 源码安装mysql

准备工作 注意系统安装好之后需要配置好网卡,关闭防火墙及SELINUX: 关闭Linux防火墙命令 chkconfig iptables off 修改SELINUX配置 vim /etc/sysconfig/selinux SELINUX=enforcing 修改为: SELINUX=disabled先使用 yum -y update 指令升级系统到最新版本

2015-12-21 10:44:02 402

原创 Spring IoC容器

Spring IoC容器依赖反转(依赖注入):IoC亦称“依赖倒置原理”( Dependency Inversion Principle)对象的引用或依赖关系的管理由具体的对象来完成,会导致代码的高度耦合和可测试性降低对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上控制反转是关于一个对象如何获取它所依赖的对象的引用,反转是指责任的反转。通过使用IoC容器,对象依赖关系的管理被反转了,转到IoC容器中来了,对象之间的相互依赖关系由IoC容器进行管理,并由Ioc容器完

2020-09-22 07:20:33 242

原创 运行Mysql 镜像

启动mysql实例docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tagsome-mysql: 容器别名my-secret-pw:初始化设置的root用户的密码tag:mysql的版本,不写默认使用最新版-p 3306:3306:表示在这个容器中使用3306端口...

2019-04-25 17:57:58 713

原创 Docker常用命令

停用全部运行中的容器:docker stop $(docker ps -q)删除全部容器:docker rm $(docker ps -aq)一条命令实现停用并删除容器:docker stop $(docker ps -q) & docker rm $(docker ps -aq)...

2019-04-25 15:03:21 238

原创 Java 线程的基本API

线程的基本操作进行Java 并发设计的第一步要了解Java中为线程提供的API。比如如何新建、启动、终止、中断、等待、通知等。首先了解一下一个线程的几种状态线程状态线程状态在Java中是通过一个Thread的内部枚举State标识的。NEW---->RUNNABLE---->BLOCKED---->WAITING---->TIMED_WAITING----&gt...

2018-09-19 13:35:42 852

原创 Netty事件注册过程

Netty是对NIO的封装,通过事件驱动的网络编程框架,自然是要实现NIO中的事件注册与监听。在NIO中我们都是显式的注册每一个事件,但是Netty为开发人员封装了这些细节,提供了简单易用的API,底层是如何实现的呢,这就是本篇文章要讨论的问题。NIO的SelectionKey中有四种事件,可读、可写、连接、接收连接public abstract class SelectionKey {...

2018-09-17 15:11:46 2590 2

原创 JDK动态代理的原理与底层实现

动态代理是许多框架底层实现的基础,比如Spirng的AOP、RPC框架Dubbo等,其实弄清楚了动态代理的实现原理,它就没那么神奇了,下面就来通过案例和分析JDK底层源码来揭秘她的神秘面纱。代理模式定义这里只是简单说明一下代理模式,代理模式是指存在一个代理对象,并且这个代理对象持有真实对象的引用,以实现对真实对象的访问控制。代理模式的分类静态代理该代理对象持有被代理...

2018-09-14 11:19:40 486

原创 TCP粘包、拆包与通信协议

在TCP编程中,通常Sever端与Client通信时的消息都有着固定的消息格式,称之为协议(protocol),例如FTP协议、Telnet协议等,有的公司也会自己开发协议。那么协议到底是干什么的呢?说白了,协议了就是定义了数据通信的格式。主要是为了解决TCP编程中的粘包和半包问题。由于TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供...

2018-09-13 12:44:53 3122

原创 Java序列化

Java序列化按照序列化后的数据格式,主流的序列化框架主要可以分为四大类:JSON、二进制、XML、RPC。JSON类 非常流行的JacksonGoogle的Gson类JSON的MessagePack阿里的FastJSON二进制类 老牌劲旅Hessian功能全面而强大的FST后起之秀KryoXML类 StAX(Streaming API for XML)Tho...

2018-09-11 09:29:33 165

原创 Java泛型

Java泛型 对于常见的泛型模式,推荐的名称是: K ——键,比如映射的键。 V ——值,比如 List 和 Set 的内容,或者 Map 中的值。 E ——异常类。 T ——泛型。 泛型不是协变的 什么是java泛型?泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类...

2018-09-10 19:12:29 118

原创 equals和hashCode

@(java_group)equals和hashCodehttps://blog.csdn.net/basycia/article/details/52081111equals()的所属以及内部原理(即Object中equals方法的实现原理)说起equals方法,我们都知道是超类Object中的一个基本方法,用于检测一个对象是否与另外一个对象相等。而在Object类中这...

2018-09-10 19:08:39 125

原创 Netty服务端启动

Netty服务端启动 ServerBootstrapEventLoopGroup boss = new NioEventLoopGroup(1);EventLoopGroup work = new NioEventLoopGroup();try { ServerBootstrap server = new ServerBootstrap().group(boss, work...

2018-09-10 18:02:22 1336

原创 Java Object类

Object类是Java中最基础的一个类了,但是有人问题知道Object中有哪些方法时,你能说出几个?public class Object { private static native void registerNatives(); static { registerNatives(); } public final native Class<?&...

2018-09-10 17:57:18 136

原创 Netty整体架构

每学习一门语言或者一种框架,写一个Hello World都是一个不错的入门,上一篇我们用Netty实现了一个简单的Hello World,简单粗暴直接上代码,这篇文章将从Netty整体结构上介绍。本人文笔不好,平时记云笔记只需自己能看懂,写这种公开博客功力尚浅,望看到博客的朋友见谅。Netty概述Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持。作...

2018-09-10 15:24:14 12277 6

原创 Netty 学习之Hello World

总结一下自己学习一个新事物(技术层面的)的心得体会,首先了解它是做什么的(what),其次学习使用它(how),最后了解它内部如何实现(why)。当然这个是需要一个漫长的过程的,顺序也是循序渐进的。学习Netty之前需要有一定的网络编程基础,如果对网络编程不太熟悉的,可以先看看Java网络编程系列Netty简介Netty是由JBOSS提供的一个开源的java网络编程框架,主要是...

2018-09-06 16:10:18 761

原创 NIO Buffer、Channel、Selector分析

Bufferpublic abstract class Buffer { ... // Invariants: mark <= position <= limit <= capacity private int mark = -1; private int position = 0; private int limi...

2018-09-06 14:52:12 229

原创 Java NIO原理与简单实现

Java NIO 简介JAVA NIO有两种解释:一种叫非阻塞IO(Non-blocking I/O),另一种也叫新的IO(New I/O),其实是同一个概念。它是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。NIO是一种基于通道和缓冲区的I/O方式,它可以使用Native函数库直接分配堆外内...

2018-09-05 16:52:36 46636 16

原创 IO原理理解与IO模型

基本概念Linux内核将所有外部设备都看做一个文件来操作。那么我们对与外部设备的操作都可以看做是对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符),对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解为一个索引),指向内核中一个结构体(文件路径...

2018-09-05 11:16:54 6451

原创 Java Socket编程及源码解析

Java Socket示例ServerSocketpublic class BioServer { private int port; private ExecutorService service = Executors.newFixedThreadPool(3); public BioServer(int port) { this.port...

2018-09-04 16:47:42 6106 1

原创 Socket 编程原理

socket简介IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种”打开—读...

2018-09-04 16:08:20 596

原创 TCP/IP简单理解

TCP/IP协议簇应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等传输层:TCP,UDP网络层:IP,ICMP,OSPF,EIGRP,IGMP数据链路层:SLIP,CSLIP,PPP,MTU每一抽象层建立在低一层提供的服务上,并且为高一层提供服务,看起来大概是这样子的 首先来看看在网络中,一帧以太网数据包的格式: 在Linux 操作系...

2018-09-04 13:36:31 869

原创 Spring 组件概述

Spring 概述Spring 基本知识简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring的核心是控制反转(IoC)和面向切面(AOP)。Spring IoC(Inversion of Control):控制反转,是关于一个对...

2018-09-04 11:38:15 7486

原创 tomcat源码系列---HTTP请求处理过程

tomcat源码系列—HTTP请求处理过程分析tomcat对HTTP请求的处理过程得从Connector的架构说起,前面说过Connector是用于接收请求,并将请求封装成Request和Response,然后交给Container处理,处理完之后再由Connector将处理结果返回给客户端。 Connector的结构图 Connector使用ProtocolHandler来处理请求的...

2018-09-03 22:10:15 4486

原创 tomcat源码系列---启动分析之webapp

tomcat源码系列—启动分析(四)webapp前言上一篇文章中我们分析了 Service、Engine、Host、Pipeline、Valve 组件的启动逻辑,在 HostConfig 中会实例化 StandardContext,并启动 Context 容器,完成 webapp 应用程序的启动,这一块是最贴近我们开发的应用程序。在这一篇文章中,我们将要分析 tomcat 是如何解析并...

2018-09-03 22:07:34 485

原创 tomcat源码系列---启动分析之Catalina启动

tomcat源码系列—启动分析之Catalina启动tomcat的初始化过程,是由Bootstrap反射调用Catalina的load方法完成tomcat的初始化,包括server.xml的解析、实例化各大组件、初始化组件等逻辑。那么tomcat又是如何启动webapp应用,又是如何加载应用程序的ServletContextListener,以及Servlet呢? tomcat整体的启动逻辑...

2018-09-03 22:06:24 1390 1

原创 tomcat源码系列---启动分析之Catalina初始化

tomcat源码系列—启动分析之Catalina初始化Bootstraptomcat运行是通过Bootstrap的main方法启动的,Bootstrap是tomcat的入口,它会完成初始化ClassLoader,实例化Catalina以及load、start动作。 静态代码块中设置和加载tomcat的运行环境。main方法public static void main(S...

2018-09-03 22:04:04 347

原创 tomcat源码系列---启动分析之Lifecycle

tomcat源码系列—启动分析(一)LifecycleLiftcycleLiftCycle接口是一个公用的接口,定义了组件生命周期的一些方法,用于启动、停止Catalina组件。组件的生命周期包括:init、start、stop、destory,以及定义了各种事件的常量,操作LifecycleListener的API,是一个典型的观察者模式。各大组件均实现了Lifecycle接口,如 ...

2018-09-03 22:01:46 308

原创 Tomcat框架设计

总体架构 Tomcat最顶层的容器是Server,代表着整个服务,控制着整个Tomcat的生命周期。一个Server可以包含至少一个Service,用于具体提供服务。 Service主要包含两个部分:Connector和Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下: - Connector用于处理连接相关的事情,并提供Socket与Reques...

2018-08-21 20:26:55 522

原创 tomcat源码系列---环境搭建

使用Idea + Maven搭建Tomcat源码的开发环境。使用的Tomcat是8.5.23版本,Tomcat是用Ant构建的,基于本人或大部分开发习惯于Maven,所以采用Maven来构建Tomcat源码项目。下载Tomcat源码包和软件包 https://tomcat.apache.org/download-80.cgi 由于源码中没有Tomcat启动需要的lib和其他配置,其实软件...

2018-08-20 09:57:17 2868 1

原创 MHA + MySQL半同步复制实现高可用

MHA + MySQL半同步复制实现高可用 在主从半同步复制的基础上,MySQL半同步+MHA+Keepalived实现MySQL高可用。 已经搭建好了一主多从半同步复制 的MySQL环境 - 192.168.204.128(master) - 192.168.204.129(slave) - 192.168.204.130(slave) - 192.168....

2018-05-31 09:37:44 1318

原创 MySQL 半同步复制

MySQL 半同步复制 MySQL通过复制(Replication)实现存储系统的高可用。目前,MySQL支持的复制方式有: - 异步复制(Asynchronous Replication):原理最简单,性能最好。但是主备之间数据不一致的概率很大。 - 半同步复制(Semi-synchronous Replication):相比异步复制,半同步复制牺牲了一定的性能,提升了主备之...

2018-05-21 18:12:24 176

原创 CentOS Apache安装与配置

源码安装卸载系统自带的httpd:rpm -qa |grep httpdrpm -e --nodeps httpd-2.2.15-29.el6.centos.x86_64rpm -e --nodeps httpd-tools-2.2.15-29.el6.centos.x86_64配置防火墙,开启80端口 vi /etc/sysconfig/iptables-A INPUT -m state

2015-12-21 21:45:45 615

原创 Java 程序员应会的 Linux 命令

查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name “*.xml” 递归查找所有的xml文件find . -name “*.xml” |xargs grep “hello world” 递归查找所有文件内容中包含hello world的xml文件grep -H ‘spring’ *.xml 查找所以有的包

2015-12-21 14:43:10 413

原创 vi配置

~/.vimrc set nu syntax on set guifont=DejaVu\ Sans\ Mono\ 12 set softtabstop=4 set shiftwidth=4 set expandtab set guioptions-=T set nobackup set formatoptions=tcrqn set cindent set smartinde

2015-12-21 10:46:38 80

原创 JBoss 介绍

启动JBoss 时的JVM的各项参数介绍JVM按照其存储数据的内容将所需内存分配为堆区与非堆区两个部分:所谓堆区即为通过new的方式创建的对象(类实例)所占用的内存空间;非堆区即为代码、常量、外部访问(如文件访问流所占资源)等。然而虽然java的垃圾回收机制虽然能够很好的解决内存浪费的问题,但是这种机制也仅仅的是回收堆区的资源,而对于非堆区的资源就束手无策了,针对这样的资源回收只能凭借开发人员自

2015-12-21 10:36:52 882

原创 CentOs 安装配置Jboss

@(jboss)CentOs 安装配置Jboss安装JDK #vi /etc/profileexport JAVA_HOME=/usr/java/jdk1.7.0_05export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jarexport PATH=$PATH:$JAVA_

2015-12-21 10:31:14 1064

原创 PL/SQL

1.什么是PL/SQL,有什么作用  --Procedure Language/SQL 过程语言+SQL  --PL/SQL是Oracle数据库内部存储和运行    一段程序  --PL/SQL是Oracle在SQL语句基础上扩展了   一些判断,循环等编程元素.可以实现一些   复杂的运算和逻辑功能.  --PL/SQL适合大量数据运算.2.PL/SQL基本结

2015-10-27 22:44:57 90

原创 Spring整合JMS

配置ConnectionFactoryConnectionFactory是用于产生到JMS服务器的链接的,Spring为我们提供了多个ConnectionFactory,有SingleConnectionFactory和CachingConnectionFactory。SingleConnectionFactory对于建立JMS服务器链接的请求会一直返回同一个链接,并且会忽略Connection的c

2015-08-29 11:31:20 182

原创 JMS和ActiveMQ

JMS架构简介 Java 消息服务(Java Message Service,简称JMS)是用于访问企业消息系统的开发商中立的API。JMS 在其中扮演的角色与JDBC 很相似,正如JDBC 提供了一套用于访问各种不同关系数据库的公共API,JMS 也提供了独立于特定厂商的企业消息系统访问方式。发送消息的JMS 客户端被称为生产者(producer),而接收消息的JMS 客户端则被称为消费者(co

2015-08-28 22:54:50 462

java笔试题整理

java开发笔试中常见的笔试题整理,以及面试中常见的一些常问的问题整理

2014-03-23

空空如也

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

TA关注的人

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