java
文章平均质量分 80
农夫渔民
漫漫修行路
展开
-
java异常处理的一些思考
java异常处理的一些思考public class ExceptionTest { public static void main(String[] args) throws Exception { for (int i=0;i<5;i++){ System.out.println(i); if ((i==3)){ catchMethod(); } }原创 2021-06-01 18:14:10 · 158 阅读 · 0 评论 -
Java源码之ArrayList
Java源码之ArrayList存储实现源码分析ArrayList构造方法如下带初始容量的构造方法继承关系存储实现ArrayList底层存储实现是通过数组来存储元素的源码分析ArrayList构造方法如下 /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { super(); this.elementData原创 2020-07-09 19:39:12 · 132 阅读 · 0 评论 -
【springMvc学习记录之一】spring DispatcherServlet
【springMvc学习记录之一】DispatcherServletspringMvc model-view-controller (MVC)是spring为web开发提供的一个框架。这个框架就是围绕DispatcherServlet类来设计。springMvc框架类似于其他mvc框架,都是由请求驱动的(request-driven)。Disp...原创 2019-03-25 18:59:51 · 217 阅读 · 0 评论 -
分布式系统的一些理论
分布式系统的一些理论“什么是分布式系统?这取决于看系统的角度。对于坐在键盘前使用IBM个人电脑的人来说,电脑不是一个分布式的系统。但对于在电脑主板上趴着的虫子来说,这台电脑就是一个分布式系统。” —— Leslie Lamport分布式系统中的一些理论:CAP原则CAP原则又称CAP定理,指的是在一个分布式系统中, C...原创 2019-03-22 00:14:06 · 164 阅读 · 0 评论 -
spring container
spring containerorg.springframework.context.ApplicationContext接口代表一个spring container,它通过读取元数据来初始化、配置和组装beans。元数据的变现形式一般为xml配置文件、java注解、java代码。元数据允许开发者表达组成应用程序的对...原创 2019-03-25 15:00:42 · 873 阅读 · 0 评论 -
Spring之基于注解的容器配置
Spring之基于注解的容器配置@Required@required注解用于bean的property注解,egpublic class SimpleMovieLister { private MovieFinder movieFinder; @Required public void setMovieF...原创 2019-03-25 12:41:15 · 169 阅读 · 0 评论 -
分布式系统与一致性问题
分布式理解分布式这个概念这几年越来越火热,今天也来谈谈项目改造过程中对于分布式系统的理解,传统的应用是将所有的模块放在单体tomcat上运行,所以方法间的调用范围都是在同一个jvm内。这在业务初期时很有效的,毕竟业务初期开发资源、业务量都比较稀少,才用单体应用开发简单、部署快速,出现问题可以快速定位,而且因为运行在一...原创 2019-03-21 19:59:48 · 618 阅读 · 0 评论 -
spring容器扩展之FactoryBean
Spring容器扩展之FactoryBean FactoryBean接口是Spring IoC容器实例化逻辑的扩展点。一、区别FactoryBean和BeanFactory首先不要混淆FactoryBean和BeanFactory。BeanFactory直译是生产Bean的工厂,在Srping中就是容器,常用的Applica...原创 2019-03-25 10:54:39 · 394 阅读 · 1 评论 -
spring容器扩展之BeanFactoryPostProcessor
spring容器扩展之BeanFactoryPostProcessorpring允许BeanFactoryPostProcessor在容器创建bean之前读取bean配置元数据,并可进行修改。例如增加bean的属性和值,重新设置bean是否作为自动装配的侯选者,重设bean的依赖项等等。在srping配置文件中可以同时配置多个BeanFactoryPo...原创 2019-03-24 23:15:22 · 151 阅读 · 0 评论 -
spring 容器扩展之BeanPostProcessor
spring 容器扩展之BeanPostProcessorspring的BeanPostProcessor接口给开发者提供了一个容器扩展的入口,在Spring容器完成Bean实例化和属性设置后,并且在bean调用初始化方法之前或之后。因此BeanPostProcessor(Bean后置处理器)常用在:对bean内部的值进行修改;实现Bean的动态...原创 2019-03-24 22:56:01 · 241 阅读 · 0 评论 -
spring bean 生命周期
spring bean 生命周期spring bean的生命周期从容器启动开始到容器停止运行,如图代码如下package com.spring.model;import org.springframework.beans.factory.DisposableBean;import org.springfra...原创 2019-03-24 19:56:50 · 160 阅读 · 0 评论 -
java小知识之不可不(immutable)类的设计
一、不可变类简介不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。二、不可变类的优点说完可变类和不可变类的区别,我们需要进一步了解为什么要有不可变类?这样的特性对JAVA来说带来怎样的好...原创 2019-03-17 18:50:04 · 407 阅读 · 0 评论 -
java并发编程之synchronized
java并发编程之synchronized上一篇文章我们说了java线程的概念以及竞争的发生,这边文章就来说说java的并发编程并发与并行的区别:并行:是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)比如我跟两个网友聊天,左手操作一个电脑跟甲聊,同时右手用另一台电脑跟乙聊天,这就叫并...原创 2019-03-17 17:48:02 · 142 阅读 · 0 评论 -
java基础之线程
java基础之线程线程是java语言中比较重要的一个概念,这篇文章就来写写java中的线程,包含的知识点有点多,包括线程基础、多线程基础、juc包。先总结下java中的线程。线程概念:操作系统中的多任务:一个程序同时执行多个任务。例如在编辑或者下载邮件的同时可以打印文件,但是并发的进程数并...原创 2019-03-17 15:26:52 · 173 阅读 · 0 评论 -
java基础之异常体系
java基础之异常体系java异常体系介绍异常是指由于各种不期而至的情况,导致程序中断运行的一种指令流,如:文件找不到、非法参数、网络超时等。为了保证正序正常运行,在设计程序时必须考虑到各种异常情况,并正确的对异常进行处理。异常也是一种对象,java当中定义了许多异常类,并且定义了基类java.lang.Th...原创 2019-03-17 14:10:44 · 370 阅读 · 0 评论 -
分布式系统中的一致性解决方案
分布式系统中的一致性解决方案 分布式系统因为不用应用运行于不同的容器内,导致一个业务需要调用不同的系统来完成,因为不同的系统有不同的数据库,无法像单体应用那样处理事务,这就有可能导致数据的不一致,针对这种情况,业界也有很多解决方案。可以选择分布式事务框架方案,目前主流的分布式事务框架大致可分为3类实现 :基于XA协议的两阶段提交(2P...原创 2019-03-22 00:56:37 · 188 阅读 · 0 评论 -
java并发之AbstractQueuedSynchronizer同步器
java并发之AbstractQueuedSynchronizer一、概述谈到java的并发编程,就离不开JUC,JUC指的是java.util.concurrent包,里面包含了需要java并发的工具类,而谈到JUC,就不得不谈AbstractQueuedSynchronizer(AQS)!AQS:抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同...原创 2019-03-18 19:47:13 · 168 阅读 · 0 评论 -
java数据结构之HashMap
java数据结构之HashMap万事开头难,懒惰一段时间后,想写些东西,发现不知道从何下笔,那就先从HashMap开始。这是很早之前梳理java数据结构画得一张图,从这里我们可以看到,java collection主要包括Map和Collec...原创 2019-03-13 19:43:44 · 414 阅读 · 0 评论 -
设计模式学习
最近在学习设计模式,在网上看到一系列很优秀的关于设计模式的文章,给出博客地址去看原文https://blog.csdn.net/LoveLion/article/details/17517213原创 2019-06-19 14:54:40 · 79 阅读 · 0 评论 -
elasticsearch的内部分片原理
elasticsearch的内部分片原理我们知道elasticsearch的搜索是基于倒排索引,倒排索引被写入磁盘后是不可改变的:它永远不会修改。不变性有重要的价值:不需要锁。如果你从来不更新索引,你就不需要担心多进程同时修改数据的问题。 一旦索引被读入内核的文件系统缓存,便会留在哪里,由于其不变性。只要文件系统缓...原创 2019-03-28 12:53:11 · 1302 阅读 · 0 评论 -
elasticsearch之分布式搜索过程
elasticsearch之分布式搜索过程elasticsearch搜索被执行成一个两阶段过程,我们称之为query then fetch查询阶段:在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。 每个分片在本地执行搜索并构建一个匹配文档的 _优先队列_。一个优先队列仅仅是一个存有top-n匹配文档的...原创 2019-03-28 10:14:31 · 235 阅读 · 0 评论 -
elasticsearch之查询
elasticsearch之查询Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表例如,假设我们有两个文档,每个文档的content域包含如下内容:The quick brown fox jum...原创 2019-03-27 19:30:24 · 132 阅读 · 0 评论 -
ThreadLocal原理解析
ThreadLocal原理解析 import java.util.concurrent.atomic.AtomicInteger; public class ThreadId { // Atomic integer containing the next thread ID to be assigned ...原创 2019-03-31 19:11:35 · 147 阅读 · 0 评论 -
spring aware
Aware,是感应和感知的意思。当bean实现了对应的Aware接口时,BeanFactory会在生产bean时根据它所实现的Aware接口,给bean注入对应的属性,从而让bean获取外界的信息。aware的层次结构如下简单分析下各个接口的使用org.springframework.context.ApplicationContextAware接口实现该接口的类将会获取App...原创 2019-03-24 16:23:00 · 137 阅读 · 0 评论 -
spring容器生命周期回调
spring容器生命周期回调上一篇文章中我们谈了spring bean生命周期回调,这些都是建立在容器已经启动的前提下,那么如果想参与spring 容器的生命周期回调,我们该怎办?spring提供了一些接口Lifecycle接口如下public interface Lifecycle { void star...原创 2019-03-24 15:09:29 · 740 阅读 · 0 评论 -
spring bean 生命周期回调
spring bean 生命周期回调spring bean的生命周期回调有两种:初始化回调(init-method) 销毁回调(destory-method)实现生命周期回调有三种方法:实现接口、xml配置、使用注解初始化生命周期回调(init-method)实现:实现org.springframework.beans.fact...原创 2019-03-24 14:51:34 · 433 阅读 · 0 评论 -
spring bean scope
spring bean scopespring bean scope有如下几种取值scope 描述 singleton (Default) Scopes a single bean definition to a single object instance per Spring IoC contain...原创 2019-03-23 23:01:15 · 491 阅读 · 0 评论 -
spring bean Dependencies
spring bean overviewspring Ioc容器管理bean,先看下一个通用的bean xml配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/...原创 2019-03-23 19:00:45 · 408 阅读 · 0 评论 -
spring profiles properties
spring profiles propertiesspring的profiles为多环境配置提供了最佳事件,如果一个系统需要qa测试环境与上线环境,两个环境的数据源不一样,传统的数据源配置是这样的@Bean(destroyMethod="")public DataSource dataSource() throws Excepti...原创 2019-03-23 00:32:43 · 965 阅读 · 0 评论 -
Spring Transaction Management
Spring Transaction Managementjava的事务类型:JDBC事务、JTA(Java Transaction API)事务、容器事务。这是从事务的实现角度区分的。站在事务管理的角度,可以把Java中用到的事务分为本地事务和全局事务。本地事务:不用事务的编程框架来管理事务,直接使用资源管理器来控制事务。典型的就是ja...原创 2019-03-22 16:22:31 · 242 阅读 · 0 评论 -
java小知识之==与equals的区别
java小知识之==与equals的区别关于java==与equals之间的区别经常会被问到,今天就这边简单写下,对于java基础类型byte,short,char,int,long,float,double,boolean == 比较的是他们的值对于引用数据类型类型,==比较的是他们在内存中的地址是否相等,准确的说是比较他们...原创 2019-03-16 21:17:17 · 135 阅读 · 0 评论 -
java基础之proxy
java基础之动态代理什么是动态代理 动态代理作用 动态代理demo什么是动态代理?动态代理(以下称代理),在运行时创建一个实现某些给定接口或者类的新类(也称“动态代理类”)及其实例(对象)动态代理的实现有两种1、使用java proxy类,只能代理inteface2、使用CGLIB框架在运行时...原创 2019-03-16 18:48:18 · 298 阅读 · 0 评论 -
RabbitMQ 之一"Hello World"
一、RabbitMQ介绍RabbitMQ是一个消息中介,它接收消息并转发,可以想象RabbitMQ为一个邮箱/信箱,当你将你需要寄出去的信件放进邮箱,可以确定的是邮差最终会将信件交付给信件的接收者,以此类推,RabbitMQ就是一个邮箱、一个邮局、一个邮差。当然,RabbitMQ和邮局最大的差别就是RabbitMQ不是处理纸张信息,而是保存和转发二进制的数据信息。RabbitMQ中原创 2017-12-01 14:53:43 · 207 阅读 · 0 评论 -
JAVA NIO Buffer的学习
JAVA NIO Buffer的学习定义:缓冲区的工作与通道紧密联系。通道是I/O传输发生时通过的入口,而缓冲区是这些数据传输的来源或目标。简单来说buffer就是一块存储区域,其内部的存储是通过基本类型的数组来实现的。下图是Buffer类的层次图:缓冲区基础:概念上,缓冲区是包在一个对象内的基本数据元素数组。Buffer类相比一个简单数组的优点是它将关于数据的数据内容和信息包原创 2017-10-25 18:25:27 · 251 阅读 · 0 评论 -
java nio解决半包 粘包问题
java nio解决半包 粘包问题NIO socket是非阻塞的通讯模式,与IO阻塞式的通讯不同点在于NIO的数据要通过channel放到一个缓存池ByteBuffer中,然后再从这个缓存池中读出数据,由于服务端缓存池大小限制以及网速不均匀等原因,会造成服务端读取到缓冲池中的数据不完整,就形成了断包问题,当缓存池大小够大的情况下又会发生一次读取到缓存池中的数据多于一个完整的数据包,这种情况因为原创 2017-10-25 17:26:16 · 6587 阅读 · 3 评论 -
字节 字符与编码
字符、字节与编码 “字符与编码”是一个被经常讨论的话题。即使这样,时常出现的乱码仍然困扰着大家。虽然我们有很多的办法可以用来消除乱码,但我们并不一定理解这些办法的内在原理。而有的乱码产生的原因,实际上由于底层代码本身有问题所导致的。因此,不仅是初学者会对字符编码感到模糊,有的有经验的开发人员同样对字符编码缺乏准确的理解。原创 2017-10-23 19:31:46 · 312 阅读 · 0 评论 -
将JDK安装版改成非安装版
将JDK安装版改成非安装版一:需求:一台电脑上有时候需要多个不同版本的jdk,而安装版只能安装一个,这时候就需要免安装版本的jdk,使用时直接切换就可以了,但是jdk官网只提供windows的exe版本,不提供zip的版本。二、解决办法,将exe版本转为免安装的jdk本文以windows 7下安装jdk-7u80-windows-x64.exe为例说明1、http://www.原创 2017-10-23 10:25:06 · 1876 阅读 · 2 评论 -
java socket解决半包、粘包问题
java socket解决半包、粘包问题一、java socket出现半包、粘包问题原因及解决见博客:http://www.cnblogs.com/solq/p/4315763.htmlhttp://bbs.csdn.net/topics/250027309?page=2http://blog.csdn.net/pi9nc/article/details/17165171原创 2017-10-20 18:45:53 · 11022 阅读 · 10 评论 -
简单RPC之Socket实现
最近在学习RPC,看了些文章和代码,RPC的底层是通过SOCKET通信来实现的,这篇文章就是关于RPC的Socket简单实现。一、技术方案使用比较原始的方案实现RPC框架,采用Socket通信、动态代理与反射与Java原生的序列化。二、RPC框架架构1)服务提供者,运行在服务器端,提供服务接口定义与服务实现类。2)服务中心,运行在服务器端,负责将本地服务发布成远程服原创 2017-09-27 17:16:02 · 681 阅读 · 0 评论 -
WebService学习
一、WebService学习 WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。 所谓远程调用,就是一台计算机A上的一个程序可以调用到另外一台计算机B上的一个对象的方法。原创 2017-09-25 10:39:13 · 211 阅读 · 0 评论