自定义博客皮肤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 317

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

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

2020-04-28 11:04:18 331

原创 二、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 329

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

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

2020-04-15 14:13:05 258

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

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

2020-03-30 23:16:44 360

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

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

2020-03-28 10:47:12 295

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

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

2020-03-27 10:31:58 214

原创 六、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 454

原创 记一次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 608 2

原创 五、Spring IoC注解

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

2020-03-11 22:15:00 269

原创 四、Spring DI

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

2020-03-09 23:15:49 250

原创 三、Spring Bean

一、spring bean 概述 什么是spring bean In 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 219

原创 二、Spring IoC

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

2020-03-08 11:30:44 239

原创 一、Spring 概述

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

2020-03-08 11:28:31 291

原创 五、Netty对websocket的支持

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

2019-12-09 14:13:06 366

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

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

2019-12-07 22:23:26 849

原创 二、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 276

原创 一、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 261

原创 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 327

原创 二、容器

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

2019-10-18 18:05:00 230

原创 一、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 202

原创 三、Docker安装Redis

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

2019-07-01 14:59:42 219

原创 二、Docker的使用

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

2019-07-01 14:56:41 286

原创 一、Docker简介

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

2019-07-01 14:49:21 532

原创 二、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 234

原创 一、Spring Boot:入门

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

2019-07-01 14:38:22 206

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

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

2019-05-19 19:16:27 224

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

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

2019-05-14 22:30:41 319

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

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

2019-05-11 23:47:17 228

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

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

2019-05-07 16:31:37 319

原创 三、AOP(Aspect Oriented Programming)

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

2019-05-06 16:11:26 274

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

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

2019-04-17 18:58:58 251

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

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

2019-04-17 15:49:08 332

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

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

2019-04-16 15:47:52 282

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

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

2019-04-15 22:24:41 262

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

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

2019-04-15 21:34:40 412

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

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

2019-04-15 15:57:52 212

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

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

2019-04-15 14:47:57 214

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

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

2019-04-15 10:28:43 360

原创 〇、设计模式概述

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

2019-04-15 10:24:13 247

MyBatis学习笔记

MyBatis学习笔记

2017-03-12

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

TA关注的人

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