自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java wireshark抓包

一、为什么要学习抓包1.网络通讯的真实内容2.网络故障分析3.程序网络接口分析4.木马通讯数据内容二、抓包的首要问题:选择(抓包过滤器),筛选大量数据...

2019-10-12 22:41:07 1033

原创 osgi框架

一、osgi的特点:1.可以动态加载、更新和卸载模块而不用停止服务2.servcie model允许模块/插件相互依赖但松耦合,分享服务更简单3.osgi允许把应用分解成多个模块,然后管理各个模块之间的关系二、实现osgi模块通信例子:HelloWorld模块调用HelloService的bundle1.HelloService模块创建接口和实现类2.然后在MANIFE...

2019-10-12 15:23:43 448

原创 mysql面试题

一、delete、drop、truncate的区别1.truncate和delete只删除数据,不删除表结构,drop删除表结构,并释放所占空间2.删除数据的速度 drop>truncate>delete3.delete属于DML语言,需事务管理,commit之后才生效。drop和truncate属于DDL语言,操作立即执行4.当你不需要该表,用drop;当你保留该表,...

2019-10-11 20:41:16 148

原创 mybatis常见面试题

一、什么是Mybatis1.Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发只需关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接写原生态sql2.MyBatis可以使用XML或注解来配置和映射原生信息,将POJO映射成数据库中的记录二、RequestMapping、RequestBody、Respon...

2019-10-11 13:03:53 299

原创 react+redux

一、环境介绍1.安装create-react-app脚手架npm install -g create-react-app2.在pacgage.json配置文件,install 依赖库文件3.npm start 启动服务,就可以localhost:3000 本地展示页面二、为什么使用react+redux1.react使项目像搭积木简单,但是一个页面嵌套很多组件,子组件必须要...

2019-10-11 11:24:03 102

原创 java单例模式

一、有如下几种单例模式,各有优缺点:1.饿汉单例模式:instance是在类加载的时候进行,优点,线程安全;缺点,初始化太早,造成资源浪费2.静态内部类 2.1 对于内部类SingletonHolder,它是饿汉式单例实现,在SingletonHolder初始化的时候是由ClassLoader保证同步,使Instance 是个真单例 2.2 而SingletonHold...

2019-09-22 10:32:47 86

原创 策略模式

一、概要策略模式:将每一个算法封装到具体公共接口的独立类中,使用多态的方式,调用实际的算法,避免if else二、角色1.环境角色:持有一个Strategy引用2.抽象策略角色:此角色给所有具体策略类所需要的接口方法3.具体策略角色:包装了相关的算法和行为三、使用场景算法一:对初级会员没有折扣。算法二:对中级会员提供10%的促销折扣。算法三:对高级会员提供20%...

2019-09-22 08:55:03 79

原创 SpringMvc原理

一、工作原理1.用户发送请求到DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理映射器(框架提供)3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet4.DispatcherServlet调用HandleAda...

2019-09-11 10:09:45 77

原创 HashMap的实现原理

一、简介1.HashMap的数据结构是数组+链表,因为数组:寻址容易,插入删除困难;链表:寻址困难,插入删除容易;所以结合二者优点2.所以使用的哈希表,链表的数组,存在数组的下标,是对元素hash(key)%len获取到的二、put的原理1.put的时候,如果key为空,插入到数组的第一个链表;先定位数组的下标,再遍历链表,如果key存在,则替换新值,否则往该链表头插入元素;如果大...

2019-09-08 10:48:07 273

原创 java各类锁

一、ReentrantLock获取锁的三种方式1.lock():获取锁立即返回,别的线程持有锁,当前线程一直处于休眠状态,值到获取锁2.tryLock():获取锁立即返回true,如果别的线程正持有锁,立即返回false;所以可以选择干别的操作3.tryLock(long timeout,TimeUnit unit):获取锁立即返回true,如果别的线程持有锁,会等待参数给定的时间,在...

2019-09-04 22:47:02 169

原创 ThreadLocal用法与原理

一、用法:ThreadLocal用于保存线程之间的共享变量:对于同一个static ThreadLocal,不同线程只能从get,set,remove自己的变量,而不会影响其他线程的变量1.ThreadLocal.get:获取ThreadLocal中当前线程共享变量的值2.ThreadLocal.set:设置ThreadLocal中当前线程共享变量的值3.ThreadLocal.r...

2019-09-02 23:29:05 242

原创 java线程池

一、线程池的概念1.系统启动时,创建大量线程执行任务,任务执行后,线程会变成空闲状态,等待下一次任务2.优点是,节省资源,因为不断启动和关闭线程,会过度消耗资源原理:结合代码图就可以理解该原理图了:二、核心线程池:ThreadPoolExcutor1.corePoolSize:线程池核心池大小,在创建线程池后,默认没有任何线程。当有任务才会创建一个线程去执行,直...

2019-08-30 21:27:24 89

原创 线程池

一、ForkJoinPool的概念1.java7引入了一种新的线程池:ForkJoinPool:它同ThreadPoolExecutor一样,也实现了ExecutorService接口。它使用了一个无线队列保存需要执行的任务,而线程数量是通过构造函数传入,如果没有传入线程数量,计算机的CPU数量会被设置为默认值2.ForkJoinPool使用分治法(Fork/Join原理),少量线程处理大...

2019-08-29 22:28:55 106

原创 Springboot启动配置原理

一、启动原理1.main方法是入口,传入主配置类和args2.进入springbootApplicati的run方法:先创建SpringAppcition对象,再执行run方法3.如何创建对象 3.1 先把主对象保存 3.2 再判断是不是web应用 3.3 然后加载initializers类 3.31先创建主线程的类加载器 ClassL...

2019-08-26 17:52:35 14584

原创 JVM调优具体操作

1.https://jmeter.apache.org下载压力工具2.测试工程,放到tomcat启动3.使用工具 3.1 添加线程组,1S启动10个线程,每个线程访问1000次3.2 设置http请求3.3 设置jvm配置3.3设置聚合报告,主要看吞吐量:Throughput总结:1.用压力测试工具JMeter,在估计的最大访问流...

2019-08-25 15:24:51 199

原创 垃圾回收器

一、简介:回收算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现垃圾回收器分类:1.Serial收集器:串行收集器是最古老、最稳定及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记-压缩;垃圾收集的过程中会服务暂停参数控制:-XX:+UseSerialGC 串行收集器2.ParNew收集器:Serial收集...

2019-08-24 22:37:49 115

原创 JVM垃圾回收

一、垃圾回收机制:不定时查看堆内存,判定哪些对象是正在使用的对象和未使用的对象及删除未使用对象的过程二、垃圾回收算法1.引用计数法:给对象添加个引用计算器,每当有个地方引用他,值+1;失效-1;任何时刻值为0的对像,判断不可达,等待gc清理 存在2个问题(被报废):a:两个对象相互引用,gc永远清理不了 b:引用计数法无法解决多种类型引用的问题 ...

2019-08-24 12:15:21 74

原创 内存泄漏和内存溢出

一、概念:1.内存泄漏:程序申请内存后,无法释放已申请的内存2.内存溢出:程序申请内存时,没有足够的内存供申请者使用3.内存泄漏的堆积最终会导致内存溢出二、内存泄漏的分类1.常发性内存泄漏:发生内存泄漏的代码会被多次执行,每次执行都会导致一块内存泄漏2.偶发性内存泄漏:发生内存泄漏额代码只有在特定环境和操作过程下才会发生。常发性和偶发性是相对的。对于特定环境,偶发性也变成常...

2019-08-23 22:41:46 85

原创 JVM内存参数配置

1

2019-08-22 22:39:19 195

原创 JVM调优

一、用记事本写出一个java程序HelloWorld第一步:写java源代码程序:HelloWorld.java第二步:编译java源代码程序,生成helloWorld.class文件,字节码文件第三步:运行程序(在jvm里运行)二、JVM概念1.JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真各种计算机功能来实现。JVM有自己完善的硬件架构,如处理...

2019-08-22 21:30:49 103

原创 linux安装

一、linux简介1.基本思想: 1.1 一切都是文件 1.2 每个软件都有具体的用途二、安装步骤1.https://www.virtualbox.org/安装Oracle VM虚拟机:可以进行虚拟机的创建和操作系统的安装2.下载操作系统3.在虚拟机中,安装操作系统三、linux基本命令1.碰到的问题2.cd 目录:进入指定目录2.ls:...

2019-08-21 22:25:23 63

原创 SpringCloud网关ApiGateway

一、API接口的分类1.网关API(接口) Gateway(网关) ---接口网关注意:没有界面2.接口什么背景下产生:在面向服务架构和微服务背景下产生,目的是为了解耦,rpc远程调用中产生。1.接口的分类 1.1 开发接口 ---其他机构合作伙伴进行调用(必须在外网访问),例如蚂蚁开发平台、微信公众号开发 需要通过appid+appsocet生成accessToken...

2019-08-19 21:44:51 547

原创 SpringCloud分布式配置文件中心

一、简介1.为什么会使用分布式配置文件中心:在微服务如果使用传统的方式管理配置文件,会非常复杂,例如几百个微服务,几百个配置文件;且生产环境配置文件需要改变的时候,重新打War包,重新读取配置信息在jvm内存中(启动服务时,会解析配置文件,将内容缓存到jvm内存中)2.什么是分布式配置中心在微服务中,使用同一个服务器管理所有配置文件信息,能够实现后台可管理,当服务器正在运行的时候,...

2019-08-18 15:05:35 307

原创 SpringCloud使用Hystrix功能

一、服务雪崩1.服务雪崩效应:1.默认情况下tomcat只有一个线程池去处理客户端发送的所有请求,这样的话,在高并发情况下,如果客户端所有的请求堆积到同一个服务接口上,就会产生tomcat所有线程去处理该服务接口,可能导致其他接口服务,产生延迟和等待。2.假设Tomcat最大请求数(同时)20,客户端发送请求100,会有80个请求产生延迟等待,默认是线程数是503.Feign客...

2019-08-17 22:25:12 157

原创 Feign

一、简介1.SpringCloud支持2种调用:restTemplate和Feign客户端2.Feigm客户端工具,实际开发用的最多3.Feign是一个声明式的Http客户端调用工具,采用接口+注解方式实现,易读性比较强二、代码操作订单服务调用会员服务的例子1.引入依赖2.在订单服务建立一个MemberApiFeign接口;@FreignClient(name=参数...

2019-08-17 13:10:28 336

原创 SpringCloud整合Zookeeper作为注册中心

一、简介1.默认SpringCloud使用Eureka作为注册中心2.因为Eureka闭源,所以使用Zookkeeper作为注册中心3.Zookeeper分布式协调工具,可以实现注册中心,采用临时节点,和生命周期进行关联,如果服务断开连接,该节点会自动被删除二、搭建注册中心1.引入依赖2.编写配置文件3.使用@EnableDiscoveryClient,将会员服务注...

2019-08-16 21:43:11 9032 3

原创 Eureka服务注册中心

一、Eureka基本概念:1.服务注册与发现原理,在任何rpc远程框架中,都会有个注册中心2.注册中心概念:存放服务地址相关信息(接口地址)3.SpringCloud找给你支持以下三种注册中心 3.1 Eureka 3.2 Consul(Go语言编写) 3.3 Zookeeper4. Dubbo支持常用二种Redis和Zookeeper5.Eureka原...

2019-08-15 22:58:11 264

原创 生产者消费者模式

一、生产者消费者模式主要有三部分组成:仓库,生产者、消费者1.仓库 同步的方式,往仓库存、取产品;仓库满或者仓库空,用waiy/notify来阻塞线程2.生产者 用构造方法实例变量,共享仓库3.消费者4.运行结果二、除了用wait/notify方法解决生产消费者问题,还有BlockingQueue阻塞队列方法好处是:Block...

2019-08-06 22:59:55 73

原创 java事件推送

一、事件推送主要有三个组成:事件源,推送者和监听者1.事件源:继承ApplicationEvent2.推送者:用ApplicationEventPublisher发送事件源,并把该类注册到bin容器中3.监听者:继承ApplicationListener,重写onApplicationEvent监听,并注册到bean容器中完成以上三步,每发送一个事件,对应就会监听到事件...

2019-08-06 22:45:41 561

原创 java 多线程知识

一、开一个线程的方式:1.继承 Thread2. 实现Runnable 接口(常用)为什么实现Runnable接口可以,因为Thread类里面的run方法,先对target判空,target是Runnable类,可以在Thread构造方法传入3.实现Callable接口 区别:1.重写call,可以进行返回值 2....

2019-08-03 18:59:17 64

原创 mysql锁

锁机制:解决因资源共享,而造成的并发问题分类:操作类型:a.读锁(共享锁):对一个数据,多个读操作可以同时进行,互不干扰b.写锁(互斥锁):如果当前写操作没有完毕,则无法进行其他读操作、写操作操作范围:a.表锁:一次性对一张表整体加锁 ,MyISAM存储引擎使用表锁;开销小、加锁快;无死锁;但锁范围大,容易发生冲突b.行锁:一次性对一条数据加锁;InnoDB存储引擎;容易...

2019-08-01 21:01:54 59

原创 Mysql优化

一、Mysql分层:1.结构:客户端层和服务层,服务层包括连接层、服务层(提供各种用户使用的接口、提供优化器)、引擎层、存储层2.流程:例如客户端发起一个查询请求,先和数据库连接;查询请求给服务层,服务层对查询请求进行优化;将优化的结果给引擎层,选择当前数据库的引擎,引擎将最终的数据交给了存储层3.引擎:InnoDB(默认.),事务优先(适合高并发操作:行锁),MyISAM,性能优先(...

2019-07-29 22:00:31 153

原创 mysql相关知识

一、基本使用1.安装mysql2.使用cmd,进入到mysql安装的bin3.使用命令:mysql -u root -p4.输入密码5.配置好mysql环境变量后,就可以使用cmd,在任意路径进入mysql6.在运行的地方输入:services.msc可以进入到服务,可以找到mysql,启动运行,cmd才能正确连接mysql,否则出现如下图7.一些基本命令...

2019-07-23 23:00:20 56

原创 springBoot缓存

一、缓存的作用:加快系统的访问,提升系统的性能,主要应用于高频热点数据、临时数据(验证码)二、缓存规范:JSR107(整合难度大,应用少,更多使用的是spring缓存抽象,底层概念和JSR107是通用的)java Caching定义了5个核心接口1.CachingProvider:创建、配置、获取、管理、控制多个CacheManager,一个应用可以在运行期访问多个CachingPro...

2019-07-19 22:10:01 118

原创 分布式SpringCloud

SpringCloud简介:SrpingCloud是一个分布式的整体解决方案,为开发者提供了分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局琐,leader选举,分布式session,集群状态)中快速构建的工具。SpringCloud分布式开发五大常用组件:服务发现,客户端负载均衡,断路器,服务网关,分布式配置SpringCloud代码实现...

2019-07-14 23:14:21 155

原创 springboot分布式dubbo

简介:dobbo + zookeeper:dobbo负责分布式RPC框架,zookeeper负责注册中心一、dubbo的工作原理:1.Container:dubbo的服务容器2.服务容器在启动的时候,负责加载,服务提供者3.服务提供者在启动的时候,会将自己能提供的服务信息,注册到注册中心4.服务消费者会从注册中心订阅,它所需要的这些服务,然后注册中心会把消费者所需要的地址列...

2019-07-14 22:52:11 76

原创 Srpingboot注解开启异步和定时

开启异步:一、@EnableAsync + @Async,用注解的方式,替代线程的方式,开启异步业务二、代码实现1.@EnableAsync在主程序类中,先开启异步2.编写控制层,准备调用异步业务3.编写异步业务定时任务:1、@EnableScheduing + @Scheduled 开启定时任务2、@EnableScheduing在主程序开启定时...

2019-07-14 03:34:08 157

原创 rabbitMq消息队列

一、rabbitMq消息队列的流程1.springboot引入,rabbitAutoConfiguration自动配置2.rabbitAutoConfiguration配置了连接工厂ConnectionFactory3.ConnectionFactory参数是RabbitProperties,该参数封装了RabbitMq的配置,从自定义的properties中获取,从而连接rabbit...

2019-07-13 11:45:29 79

原创 消息队列RabbitMQ的概念

RabbitMQ的核心概念为以下:1.消息:由消息头和消息体组成。消息体是不透明的,消息头是由一系列可选属性组成,包括路由键、优先权、是否持久化等2.交换器:用来接收生产者发送的消息,并将消息路由给服务器中的队列,有四种类型:direct(默认)、fanout、topic、headersdirect:路由键与交换器绑定的消息队列名完全匹配fanout:不处理路由键,该交换器会把消息...

2019-07-10 01:03:39 90

原创 消息队列概念

消息队列的好处:1.系统异步通信:例如注册用户把消息写入消息队列,发送注册邮件,发送注册短信,异步的方式去消息队列分别读2.扩展解耦能力:传统是订单系统直接调用库存系统,消息队列是订单系统写入消息队列,库存系统再去消息队列读3.流量削峰:例如1W用户发送请求,消息队列设定1000定长,剩余的没有抢到座位的请求,立即抛弃请求,响应失败消息队列的概念:由消息代理和目的地组成,目的地...

2019-07-09 22:34:13 82

空空如也

空空如也

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

TA关注的人

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