自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Guava Cache 初步学习

Guava Cache 是什么?1.cache 就是为了提升系统性能而开辟的一块内存空间;2.缓存在很多场景下都是相当有用的。例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存;3.你愿意消耗一些内存空间来提升速度。 你预料到某些键会被查询一次以上。 缓存中存放的数据总量不会超出内存容量。(Guava Cache是单个应用运行时的本地缓存。它...

2018-09-10 22:49:10 174

原创 Memcached 入门

1.什么是Memcached a.在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法。其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率。   除了能够提高服务的运行效率之外,服务端缓存还常常用来提高服务的扩展性。因此一些大规模的Web应用,如Facebook,常常构建一个庞大的服务端缓存。而它们所最常使用的就是Memc...

2018-09-08 18:56:32 189

原创 linux 安装redis集群

1.获取redis资源  wget http://download.redis.io/releases/redis-4.0.8.tar.gz2.解压  tar xzvf redis-4.0.8.tar.gz3.安装  cd redis-4.0.8  make  cd src  make install PREFIX=/usr/local/redis4.移动配置文...

2018-08-14 23:55:04 154

原创 初步学习 MongoDB

是什么?MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。就是一个数据库,这个数...

2018-07-26 11:29:33 319

原创 Spring#流程初探

概述:一切从请求开始请求从Servlet开始Servlet从ServletConfig开始ServletConfig拿到配置信息开始流程:

2021-07-15 16:07:12 111 1

原创 Spring-注解简述

配置组件@Configuration概述:把一个类作为一个loC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean栗子@Configurationpublic class MyConfig { @Bean(value = "student2") public Student xiaoQiang() { System.out.println("xiaoQiang add ..."); return ne

2021-07-10 15:31:47 125

原创 Spring-概念简述

概述简化开发-四个基本策略1、基于POJO的轻量级和最小侵入性编程如:jdk需要实现一个接口,克隆模式需要实现clone接口2、通过依赖注入和面向接口松耦合Dq dq= new Dq();dq.set(...)3、基于切面和惯性进行声明式编程声明式代码增强 如:package-scan="com.xxq.config“,默认扫描;显示配置4、通过切面和模板减少样板式代码jdbcTemplatespring-编程思想Spring思想 应.

2021-07-10 11:32:14 256

原创 java基础-观察者模式

概述观察者模式(0bserver Pattern),又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。定义一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听,使得每当主题对象状态变化时,所有依赖于它的对象都会得到通知并被自动更新。属于行为型模式。生活场景APP角标通知起床闹钟设置使用场景1、当一个抽象模型包含两个方面内容,其中一个方.

2021-07-07 22:41:13 133 2

原创 java基础-策略模式

概述策略模式(Strategy Pattern)又叫也叫政策模式(Policy Pattern),它是将定义的算法家族分别封装起来,让它们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。可以避免多重分支的if. ..else.. .和switch语句属于行为型模式。场景阶梯个税支付方式选择1、假如系统中有很多类.而他们的区别仅仅在于他们的行为不同2、一个系统需要动态地在几种算法中选择一种。3、需要屏蔽算法规则。优点1、策略模式符合开闭原则;2、避免使用多..

2021-07-06 20:49:40 524 1

原创 java基础-委派模式

概述委派模式(Delegate Pattern)又叫委托模式。它的基本作用就是负责任务的调度和任务分配,将任务的分配和执行分离开来。可以看做是一种特殊情况下的静态代理的全权代理。不属于GOF 23种设计模式之一。属于行为型模式。场景1、委派对象本身不知道如何处理一个任务(或一个请求),把请求交给其它对象来处理。2、实现程序的解耦。优点通过任务委派能够将一个大型的任务细化,然后通过统一管理这些子"任务的完成情况实现任务的跟进,能够加快任务执行的效率。缺点任务委派方式需..

2021-07-06 20:11:41 1296 2

原创 java基础-桥接模式

桥接模式的定义桥接模式(Bridge Pattern))也称为桥梁模式、接口(Interfce)模式或柄体(Handle and Body)模式,是将抽象部分与它的具体实现部分分离,使它们都可以独立地变化通过组合的方式建立两个类之间的联系,而不是继承属于结构型模式。应用场景1、在抽象和具体实现之间需要增加更多的灵活性的场景2、一个类存在两个(或多个)独立变化的维度,而这两个(或多个)维度都需要独立进行扩展3、不希望使用继承,或因为多层继承导致系统类的个数剧增连接起两个...

2021-07-06 06:54:40 128 1

原创 java基础-适配器模式

概述一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作。属于结构型设计模式。场景场景:两脚转三角;手机充电接口;显示器接口1、已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。2、适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。类似于,亡羊补牢,打补丁;适配器模式的优点1、能提高类的透明性和复用,现有的类复用但不需要改变。2、..

2021-07-06 05:37:03 190 2

原创 修饰者模式

概述装饰器模式(Decorator Pattern)也叫包装模式(Wrapper Pattern),是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能)。属于结构型模式。场景肉夹馍蛋糕1、用于扩展一个类的功能或给一个类添加附加职责2、动态的给一个对象添加功能,这些功能可以再动态撤销。装饰器模式的优点1、装饰器是继承的有力补充,比继承灵活,不改变原有对象的情况下动态地给一个对象扩展功能,即插即用。2、通过使用不同装饰类以及

2021-07-04 18:08:33 123

原创 java基础-代理模式

d

2021-07-04 16:30:43 95 1

原创 java基础-网络io

问:初步理解网络IOpublic class ServerDemo { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(8080); Socket socket = serverSocket.accept(); InputStream inputStream = socke

2021-07-03 12:15:56 86 1

原创 网络IO流

问:什么是IO流以及IO流的作用?I/0实际上是input和output,也就是输入和输出。而流其实是一种抽象的概念,它表示的是数据的无结构化传递;图1-2:问:java中的IO流,以及IO流的分类在Java中I/0流操作的类很多,但是核心体系实际上就只有File、lnputStream、OutputStream、Reader、Writer字节流:操作的数据单元是8位的字节。InputStream、OutputStream作为抽象基类。字符流:操作的数据单元是字符。以Wr

2021-07-03 10:16:52 145

原创 jaav基础-工厂模式

IOC 工厂,单例,装饰器AOP 代理,观察者MVC 委派,适配器JDBC 模板方法简单工厂模式simple Factory Pattern由一个工厂对象决定创建出哪一种产品类的实例属于创建型模型,但它不属于GOF,23种设计模式;例子:simpleFactoryinterface Icourse { void study();}pubilc class JavaCourse implements Icourse{public void studty...

2021-07-01 21:35:41 993

原创 java基础-红黑树详解

红黑树特点:1.每一个节点要么是红色,要么是黑色;2.根节点必须是黑色;3.每个叶子节点【NIL】是黑色;4.每个红色节点的两个子节点必须是黑色;5.任意节点到每个叶子节点的路径包含相同数量的黑节点;红黑树场景,图片:详解1.红黑树为空把插入节点作为根节点,并把节点设置为黑色;2.插入节点的父节点为黑节点,直接插入;3.插入的节点的父节点为红节点叔叔节点存在且为红节点 1.将p和S设置为黑色; 2.将pp设置为红色; 3.将pp设

2021-06-28 21:49:33 262 4

原创 java基础-注解

注解的概念注解的本质其实就是一个接口,继承Annotation父接口;属性:在接口定义的抽象方法1.基本数据类型;2.String类型;3.枚举类型;4.注解5.以上类型的数组;属性赋值注意点1.如果定义的属性时,使用default关键字给属性默认初始值,可以在使用注解是不赋值;元注解JDK中给我们提供的4个元注解1.@Target 描述当前注解能够作用的位置 ElementType.type 可以作用在类上 METHOD 可以作用在方法上...

2021-06-27 15:18:23 75

原创 java基础-反射

概念反向探知,探知以前的事情指在java程序运行状态中1.对于给定的一个类(Class)对象,可以获取这个类Class对象的所有属性和方法;2.对于给定的而一个对象,new XXXClassName<? extend Object> ,都能够调用它任意一个属性和方法;这种动态获取类的内容以及动态调用对象的方法和获取属性的机制,就叫做JAVA的反射机制;例子:public class User { private Long id; public..

2021-06-26 23:04:55 175 1

原创 java基础-泛型

List<String> strings = new ArrayList<String>(); strings.add("1");本质:参数化类型泛型的擦除泛型只在编译阶段有效,编译之后JVM会采取去泛型化的措施;泛型在运行阶段是没有效果的;通配符1.无边界通配符?= anything都可以 public class Demo1 { public static void main(String[] args) ...

2021-06-26 19:16:38 67

原创 HashMap

源码解析 final void treeifyBin(Node<K,V>[] tab, int hash) { int n, index; Node<K,V> e; // 如果tab为null,或者数组的长度小于64,那就扩容 if (tab == null || (n = tab.length) < MIN_TREEIFY_CAPACITY) { // 进行扩容 resi

2021-06-26 17:58:34 95

原创 java核心-集合篇

集合数组 public static void main(String[] args) { char[] cs = new char[] {'g','u','p','a','o'}; char c = cs[0]; System.out.println(c); }特点:1.内存地址连续,使用之前必须要指定数组长度2.可以通过下标访问的方式访问成员,查询效率高3.增删操作会给系统带来性能消耗[保存数据下标越界的问题,需要动态

2021-06-26 11:39:51 90

原创 线程-深入分析阻塞队列

阻塞队列支持的操作开始分析 BlockingQueue<String> list = new ArrayBlockingQueue<>(10); public ArrayBlockingQueue(int capacity) { this(capacity, false); }ArrayBlockingQueuepublic class ArrayBlockingQueue<E> extends Abstrac

2021-06-24 22:32:19 89 1

原创 线程-Condition

如图所示:Condition源码解释public interface Condition { // 暂停 void await() throws InterruptedException; // 唤醒 void signal();} java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject#await() public final void await

2021-06-21 23:19:53 210

原创 访问者模式

访问者模式参考:https://www.jianshu.com/p/1f1049d0a0f4,https://www.runoob.com/design-pattern/visitor-pattern.html是什么?需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中。人话 :年底,CEO和CTO开始评定员工一年的工作绩效,员工分为工程师和经理,CTO关注工程师的代码量、经理的新产品数量;CEO关注的是工程师的K

2021-04-16 14:56:45 84

转载 转载nginx

下载各版本nginx地址http://nginx.org/download/1.nginx默认占用80端口,so 安装的时候看你的服务器80端口是否被别的application程序占用了。为什么nginx默认是80端口呢,因为浏览器访问的时候不加端口号也是80端口,这样输入域名或者ip就可以直接访问到服务器80所指向的服务了。检查80端口是否被暂用命令netstat -ntulp |grep 80如果没有可以跳过此步骤直接进入第2步可以看到以下有三条信息,分别是80 8005 8009端

2020-06-01 10:16:49 672

原创 下载图片

try { FileInputStream inputStream = new FileInputStream(new File(path)); String filename = id + "qr.jpg"; filename = StringUtil.enCodePageParam(filename, StringUt...

2020-05-07 16:12:50 118

原创 myabtis分页

public List<RepayPlan> listRepayPlan(int start) { // 查询所有未还款结清且应还日期小于当前时间的账单 Example example = new Example(RepayPlan.class); example.orderBy("id "); // 按id排序 ex...

2020-04-21 10:13:10 268

原创 vue学习

Clipboard.js拷贝文字不应当是一件困难的事. 不需要过多繁杂的配置或者下载很多脚本文件. 最重要的,它不应该依赖flash或者其他框架,应该保持简洁这就是创造clipboard.js的原因和目的什么是“use strict”,好处和坏处use ‘strict’: "严格模式"是一种在JavaScript代码运行时自动实行更严格解析和错误处理的方法。这种模式使得...

2020-02-23 20:08:46 462

原创 关于Class.getResource和ClassLoader.getResource的路径问题

关于Class.getResource和ClassLoader.getResource的路径问题Class.getResource(String path)path不以'/'开头时,默认是从此类所在的包下取资源; path以'/'开头时,则是从项目的ClassPath根下获取资源。在这里'/'表示ClassPathJDK设置这样的规则,是很好理解的,path不以'/'开头时,我们...

2019-12-15 17:47:55 257

原创 Netty03

https://github.com/dabaoqiang/netty-03-vip.git

2019-11-25 11:51:47 72

原创 Netty2

NIO入门 传统的同步阻塞式I/O编程 传统BIO 服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接成功,双方就可以通过网络套接字(Socket)进行通信 ServerSocket 负责绑定IP地址,启动监听端口 Socket负责发起连接操作。连...

2019-11-19 23:34:01 153

原创 netty 第一天

一章 Java IO 的演进之路java基础入门 IO基础知识 1.4之前的版本 没有数据缓冲区, 没有Channel概念 同步阻塞I/O通信(BIO)导致通信线程被长时间阻塞 支持的字符集有限,硬件可移植性不好 Linux网络I/O模型简介 Linux的内核将所有外部设备都看做一个文件来操作,对一个文件...

2019-11-18 21:42:07 116

原创 Java IO

JAVA IO BIO 面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。 如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。 面向流(乡村公路) 阻塞 IO(多线程) 无 当一个线程调用 read() 或 write()时,该线程被阻塞,直...

2019-11-17 15:45:16 100

原创 远程通信协议

一个Http请求的整个流程负责域名解析的 DNS 服务 用户访问域名,经过DNS解析,应用层协议,提供域名到IP的解析服务 不用域名也可以访问目标主机的服务,但是IP本身不是那么容易记 加速静态内容访问速度的CDN CDN (Content Delivery NetWork) 内容分发网络 CDN是一种网络缓存技术,把一些相对稳定的资源放到距离最终用户...

2019-11-16 17:49:02 125

原创 分布式架构的演进过程

从一个电商网站开始一个计算机的性能,CPU,磁盘IO,网络IO,内存CPU/IO/内存:1. 主要是上下文的切换,因为每个 CPU 核心在同一时刻只能执行一个线程,而 CPU 的调度有几种方式,比如抢占式和轮询等,以抢占式为例,每个线程会分配一定的执行时间,当达到执行时间、线程中有 IO 阻塞或者有高优先级的线程要执行时。CPU 会切换执行其他线程。而在切换的过程中,需要存储当前...

2019-11-16 11:41:58 179

原创 docker02

docker02制作一个自己的image镜像启动docker服务systemctl restart docker.service获得容器iddocker container ls -a -q如果你要删除的 container 还是运行状态,那么就要先把容器停止了:docker container stop <container ID>找到需要删...

2019-11-08 12:50:17 149

原创 为什么执行单例对象的方法不会有线程安全的问题?

为什么执行单例对象的方法不会有线程安全的问题?spring单例bean对象 ,因为对象被实例化后,实例的方法只是磁盘上的一段代码,不存在线程安全问题。多线程对springbean 只存在读取关系,至于数据库连接哪里,应该是为每根线程连接数据库,搞了一个threadLocal存起来了。然后用完在放回去。...

2019-11-07 22:41:39 969

原创 docker01

docker入门1Docker overviewDocker是一个用于开发、发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础设施分离,以便能够快速交付软件。使用Docker,您可以像管理应用程序一样管理基础设施。通过利用Docker的方法来快速地交付、测试和部署代码,您可以显著地减少编写代码和在生产环境中运行代码之间的延迟。The Docker pla...

2019-11-05 17:38:52 118

空空如也

空空如也

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

TA关注的人

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