自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KJGMan

stay hungary , and stay foolish!

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

原创 JVM学习札记(二)~ 类加载器双亲委托机制

一、概述类加载器用来把类加载到Java虚拟机中,从JDK 1.2开始,类的加载采用双亲委托机制,这种机制能更好的保证Java平台的安全;在双亲委托机制中,除了Java虚拟机自带的根类加载器以外,其余的类加载都有且只有一个父加载器当loader1加载Sample时,会委托给自己的父类加载器“系统类加载器”,“系统类加载器”会委托给“扩展类加载器”,“扩展类加载器”会委托给“根类加载器”,但是根类加载器尝试加载之后,并不能完成加载,便返回给“扩展类加载器”,扩展类加载器也无法加载,便返回给“系统类加载器

2020-07-02 09:50:52 200

原创 JVM学习札记(一) ~ 类加载器深入解析与阶段分解

一、类加载1. 在Java代码中,类型的加载,连接与初始化过程都是在程序运行阶段完成的2. 提供了强大的灵活性,增加了更多的可能性二、类加载器深入剖析1. Java虚拟机与程序的生命周期2. 在如下情况下,Java虚拟机将结束生命周期执行了System.exit()方法程序正常运行结束程序在运行过程中遇到了异常或者错误而终止由于操作系统错误导致Java虚拟机进程终止三、类的...

2020-04-28 11:04:18 204

原创 二、MongoDB学习笔记~数据库基本操作

一、数据库操作新建use test查看db或者:show dbs注意:数据库中如果没有数据,show dbs是不会展示数据的插入一些数据:db.test.insert({"name":"lizza"})删除-- 查看有哪些库show dbs-- 切换数据库use test1-- 删除数据库db.dropDatabase()二、集合操作...

2020-04-15 18:00:57 197

原创 一、MongoDB学习笔记~概述及安装

一、简介MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。二、Linux平台安装MongoDB1. 下载(https://www.mongodb.com/download-center/community...

2020-04-15 14:13:05 165

原创 九、Spring 事务(两种配置方式)

一、关键注解@Aspect:指定切面类@Pointcut:指定切入点@Before:前置通知@AfterReturning:后置通知@AfterThrowing:异常通知@After:最终通知@Around:环绕通知@EnableAspectJAutoProxy:开启aop二、示例代码切面@Aspect@Componentpublic class Log { ...

2020-03-30 23:16:44 254

原创 八、Spring AOP(两种配置方式实现)

一、关键注解@Aspect:指定切面类@Pointcut:指定切入点@Before:前置通知@AfterReturning:后置通知@AfterThrowing:异常通知@After:最终通知@Around:环绕通知@EnableAspectJAutoProxy:开启aop二、示例代码切面@Aspect@Componentpublic class Log { ...

2020-03-28 10:47:12 177

原创 七、Spring AOP(动态代理)

一、概述问题完善user案例分析案例中的问题动态代理技术动态代理的另一种实现方式解决案例中的问题AOP概念spring中AOP的相关术语spring中基于XML和注解的AOP配置一、问题1.1 业务场景在转账的业务中,需要保证转出方扣钱成功,同时要保证转入方收到相同金额的钱,这就要求整个转账的过程在同一个事务中业务层代码public class User...

2020-03-27 10:31:58 130

原创 六、Spring IoC 的三种配置方式

一、概述需求描述:实现用户的增删改查功能技术框架:spring,dbutils,c3p0,mysql代码层级:controller(test) -> service -> dao -> db二、XML配置版本1. beans.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:...

2020-03-19 23:36:04 306

原创 记一次OOM异常及处理

GPS设备定期发送数据至Redis,Redis做消息队列,Java服务为消费者,在while(true)中不断的去消费数据,代码如下:while (true){ Object e = redisTemplate.opsForList().rightPop("list"); if(null==e) continue; executor.execute(() -> {...

2020-03-16 10:29:56 435 2

原创 五、Spring IoC注解

一、概述spring 基于注解的IoC与基于XML的IoC实现的功能是一样的,只是配置的形式不同而已二、常用注解1. 用于创建对象的注解:同bean标签@Component spring 通用组件的注解@Controller spring 表现层组件注解@Service spring 服务层组件注解@Repository spring 持久层组件注解属性:value,用于指定...

2020-03-11 22:15:00 184

原创 四、Spring DI

一、概述DI(Dependency Injection)依赖注入,当前对象需要使用其他类的对象的时候,由spring提供,使用者只需要在配置文件中维护依赖关系即可,这种方式称之为依赖注入二、三种类型的注入数据1. String和基本类型2. 其他bean类型(在spring配置文件中配置过或者注解配置过的bean)3. 复杂类型/集合类型<!-- 复杂类型/集合注入:主要...

2020-03-09 23:15:49 124

原创 三、Spring Bean

一、spring bean 概述什么是spring beanIn Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is inst...

2020-03-08 12:33:45 123

原创 二、Spring IoC

一、IoC(Inversion of Control)概述1. 程序的耦合耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用...

2020-03-08 11:30:44 124

原创 一、Spring 概述

一、Spring概述()1. 什么是SpringSpring是一个用于简化Java EE项目开发的开源的轻量级的框架;利用Ioc和AOP降低了代码之间的耦合度,spring同时也是模块化的,在项目中只需要添加自己需要的模块;Core ContainerCore Container包含spring-core,spring-beans,spring-context,spring-con...

2020-03-08 11:28:31 194

原创 五、Netty对websocket的支持

一、概述Netty提供了对WebSocket的支持,利用Netty相关的组件,可以快速的开发WebSocket程序二、示例利用Netty的相关组件,开发一个WebSocket服务;开发一个页面,作为客户端,与服务进行通信1. 服务端1.1 Serverpackage com.learner.netty.ch5.server;import io.netty.bootstrap.Ser...

2019-12-09 14:13:06 224

原创 三、Netty多客户端连接与通信

一、概述netty作为服务端时,可以连接多个客户端。利用此特性,可以开发一个简单的群聊应用。包含以下功能:服务端记录接入上线下线提醒消息群发功能分析:服务端记录接入: netty的handle中SimpleChannelInboundHandler的channelActive方法可以监听channel是否接入,利用此回调方法来监听客户端是否接入上线下线提醒:handleAdde...

2019-12-07 22:23:26 609

原创 二、Netty学习:Socket开发

一、Netty的常见应用场景构建HTTP服务器Socket开发基于HTTP长连接开发二、Socket开发示例1. 服务端开发1.1 主函数public class Server { public static void main(String[] args) throws InterruptedException { EventLoopGroup bos...

2019-12-01 23:31:34 151

原创 一、Netty入门

一、概述Netty是一个异步的,基于事件驱动的,网络应用框架;目前大多使用netty 4,netty 5被废弃了二、大纲 Netty入门二、入门示例1. 示例开发一个简单的服务器,绑定端口8899,服务启动后每次访问都返回helloworld字符串Server:入口package com.learner.netty.ch1;import io.netty.boots...

2019-11-29 11:44:56 181

原创 Java容器:ArrayList

目录一、概述二、源码分析1. add()方法:2. remove方法2. get()方法三、示例1. addAll()方法:2. 使用ListIterator遍历一、概述ArrayList是一个可以自动扩容的数组,随机访问的速度很快(时间复杂度为O(1)),但是插入和移除元素的速度较慢二、源码分析1. add()方法:public boolean add(E e) { // 容...

2019-11-03 14:30:19 200

原创 二、容器

☞ java容器都有哪些?常用容器:☞ Collection和Collections有什么区别?java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与S...

2019-10-18 18:05:00 135

原创 一、Java基础

☞ JDK和JRE有什么区别?Java程序设计语言,Java虚拟机,Java API类库统一称为JDK(Java development kit),是用于支持Java程序开发的最小环境Java虚拟机,Java SE API类库称为JRE(Java runtime environment);是Java程序运行的最小环境☞ ==和equals的区别是什么?==解读基本类型,==比较的是...

2019-10-17 14:51:59 119

原创 三、Docker安装Redis

一、安装Redis1. 查询Redis镜像docker search redis2. 使用docker pull命令来安装docker pull redis二、使用Redis1. 启动Redisdocker run -p 6379:6379 -v $PWD/data:/data -d redis redis-server --appendonly yes各参数含义...

2019-07-01 14:59:42 145

原创 二、Docker的使用

一、入门案例拉取centos镜像docker pull centos输出Hello Worlddocker run centos /bin/echo "Hello world"各参数解析:docker:Docker的二进制执行文件run:与前面的docker组合来运行一个容器centos:指定要运行的镜像,如果本地不存在,Docker就会从镜像仓库Docker Hub下载...

2019-07-01 14:56:41 192

原创 一、Docker简介

一、Docker简介简介Docker是一款开源的应用容器引擎,允许开发者将应用以及依赖打包到一个轻量级,可移植,低开销的容器上,然后发布到任何流行的操作系统上,包括虚拟化。应用场景web应用自动打包发布应用需要持续集成、部署发布优点简单易用开销极低二、Docker架构三、Docker安装CentOSDocker支持的版本:CentOS 7 (64-bit),Cen...

2019-07-01 14:49:21 189

原创 二、spring boot:web综合开发

一、web开发spring boot web开发很简单,包括json输出,filter,log,properties等json接口开发使用spring开发项目时,spring boot中使用@RestController标注类,便可以使类中的方法返回json格式的数据@RequestMapping("/getUser")public Map<String, Object> ...

2019-07-01 14:40:18 148

原创 一、Spring Boot:入门

一、Spring Boot概述1. 什么是Spring Boot?2. Spring Boot优点敏捷开发减少xml配置文件,用properties文件内置web容器二、入门案例(Idea)1. 创建Spring Initializr2. 添加spring boot父类依赖和spring boot web依赖<?xml version="1.0" encodin...

2019-07-01 14:38:22 126

原创 四、Java并发编程:并发编程基础

一、线程简介1. main线程操作系统每启动一个应用程序都会为其开启一个进程;而在进程里面又可以创建很多线程;Java中运行main方法时,除了main线程,还会启动其他的线程,下面利用JMX来查看:public static void main(String[] args) { //获取Java线程管理MXBean ThreadMXBean bean = ManagementFacto...

2019-05-19 19:16:27 141

原创 三、Java并发编程:Java内存模型

一、Java内存模型的基础1. 并发编程模型的两个关键问题并发编程模型的两个关键问题:线程之间如何通信和如何同步线程之间如何通信?命令式编程线程之间的通过消息传递来进行显示通信共享内存并发模型线程之间共享内存中的程序的公共状态进行隐式通信线程之间如何同步?线程之间同步是指控制线程之间代码执行的先后顺序命令式编程命令式编程线程之间的同步是隐式...

2019-05-14 22:30:41 187

原创 二、Java并发编程:Java并发机制的底层原理

一、线程安全问题1. 一个典型的线程不安全的例子多个线程同时操作同一份资源的(主要是进行读写操作)时候,就有可能会发生线程安全问题;比如两个人同时对同一个账户进行取款操作的时候,就有可能会出现余额为负数的结果。示例:两个人同时操作一个账户package concurrency.account;/** * 账户类,主要记录账户余额,以及提供取款方法 * @author lt *...

2019-05-11 23:47:17 137

原创 一、Java并发编程:多线程简介及入门案例

一、Java多线程简介1. 什么是多线程(multithreading)多线程(multithreading)是指从软件或者硬件上实现多个线程并发执行的技术。2. 并发和并行并发:在一段时间间隔内,在一个处理器上,通过cpu调度算法,先后完成指令执行并行:在一段时间间隔内,在多个处理器上,同时指令执行3. 进程和线程进程:是系统进行资源分配和调度的基本单位,是线程的容器,一个进...

2019-05-07 16:31:37 220

原创 三、AOP(Aspect Oriented Programming)

一、简介AOP(Aspect Oriented Programming)面向切面编程。将横向分布在系统中的与业务功能无关的代码,如日志,抽取出来,单独管理,减少重复。二、AOP核心概念横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点切面(Aspect):切面是一个类,是对横切关注点的抽象连接点(Join point):被拦截到的点,因为Spring只支持方...

2019-05-06 16:11:26 170

原创 八、组合模式(Composite Pattern)

1. 意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性2. 动机栗子的公司需要做一个文件的浏览系统,要求可以浏览文件夹和各种文件,栗子很快拿出了v1.0版的方案:做了一个文件夹类,两个具体的文件类(txt,img)很快他发现,如果需要增加一个zip类型,他需要新增一个ZipFile,并且需要修改原来的Folder类...

2019-04-17 18:58:58 175

原创 七、桥接模式(Bridge Pattern)

1. 意图将抽象部分与它的实现部分分离,使它们都可以独立地变化2. 动机需求栗子的公司接到一个需求,要开发一个跨平台,支持多种格式的图片浏览系统,要求支持jpg,png,bmp等格式,可以在Windows,Linux,MacOS等操作系统运行;扩展性要好,能够支持新的图片格式和操作系统v1.0方案栗子很快提出了一个方案v1.0方案中使用多层次继承来解决多种类,跨平台的...

2019-04-17 15:49:08 231

原创 六、适配器模式(Adapter Pattern)

1. 什么是适配器模式(Adapter Pattern)将一个接口转换为客户希望的另一个接口,使得原来不由于兼容性问题不能一起工作的接口,通过适配器转换能够一起工作;适配器模式分为类结构型模式,对象结构型模式,接口型模式2. 适配器模式(Adapter Pattern)适用场景3. 适配器模式(Adapter Pattern)的角色组成目标接口或抽象类:客户需要的对象规范被适配者:已...

2019-04-16 15:47:52 180

原创 五、原型模式(Prototype Pattern)

1. 什么是原型模式(Prototype Pattern)在需要创建大量相同或者相似的对象时,先创建一个原型对象,然后利用这个原型对象进行克隆,从而得到大量对象java中可以利用Object中的clone()方法快速实现克隆克隆分为深克隆和浅克隆浅克隆:只拷贝对象本身(包括对象中包含的基本类型),而对象中的其他依赖对象则不进行拷贝(Object中的clone()方法便是浅克隆)...

2019-04-15 22:24:41 167

原创 四、建造者模式(Builder Pattern)

1. 什么是建造者模式(Builder Pattern)建造者模式属于创建型模式,它将一个复杂对象的构建与表示相分离,使得同样的构建过程可以得到不同的表示;它将一个复杂的对象一步步分解为简单的对象,然后一步步构建而成;它将变与不变相分离,即产品的组成部分是不变的,但每一部分可以灵活的选择比如:生产一辆汽车,需要发动机,轮胎,车身构建而成;而这三个部件可以交给不同的厂商去生产2. 建造者...

2019-04-15 21:34:40 256

原创 三、单例模式(Singleton Pattern)

1. 什么是单例模式单例模式属于创建者模式,一个类只有一个全局实例2. 单例模式的角色组成只有一个角色,就是单例角色本身3. 代码示例单例模式有两种加载模式:懒汉式创建实例,饿汉式创建实例懒汉式创建实例package com.lt.patterns.singleton;/** * 单例模式-懒汉式创建单例:在第一次使用时创建实例(适合耗费系统资源较大,使用频率较低的实例创...

2019-04-15 15:57:52 116

原创 二、抽象工厂模式(Abstract Factory Pattern)

1. 什么是抽象工厂模式(Abstract Factory Pattern)抽象工厂模式属于创建型模式,它将只生产单一类型产品但彼此之间相互依赖的工厂聚集起来,成为一个超级工厂;比如:一辆汽车由轮胎,发动机等组成,抽象工厂将只生产轮胎和发动机的工厂进行聚集,形成超级工厂2. 抽象工厂模式的角色组成抽象工厂角色:用于定义一个产品由哪些组件组成的接口规范具体工厂角色:实现了抽象工厂接口,完...

2019-04-15 14:47:57 138

原创 一、单例模式(Singleton Pattern)

一、简单工厂模式1. 什么是简单工厂模式简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象来创建具体的产品实例2. 简单工厂模式的角色组成简单工厂模式由三个角色组成:工厂类角色(CarFactory):负责创建具体的产品抽象产品类角色(ICar):定义产品规范具体产品类...

2019-04-15 10:28:43 174

原创 〇、设计模式概述

一、设计模式概述1. 什么是设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结2. 为什么要用设计模式使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案3. 面向对象的7个原则单一职责原则(Single Responsiblity P...

2019-04-15 10:24:13 151

MyBatis学习笔记

MyBatis学习笔记

2017-03-12

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

TA关注的人

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