自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Crystal---的博客

还没想好呢!

  • 博客(56)
  • 收藏
  • 关注

原创 Redis

Nosql:非关系型的数据库; 1、键值对存储; 2、nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。 3、nosql数据库是横向扩展,可扩展性。 4、关系型数据库遵循acid原则,nosql在CAP(一致性、可用性、分区容错性)中任选两项。 CA 传统oracle,AP 大多数网站架构,CP Redis BASE是为了解决关系数据库强一致性引起的问题而引起的可用性降低...

2018-07-24 14:04:32 4446

原创 Java集合之ArrayList

集合之ArrayList篇简介:ArrayList就是动态数组,实现了List,RandomAccess(快速随机访问),Cloneable(克隆),Serializable(序列化)接口。public class ArrayList<E> extends AbstractList<E> implement...

2018-06-16 15:50:45 277

原创 macbook m1芯片Java开发踩坑

mvn打包报错:No compiler is provided in this environment. Perhaps you are running on a JRE解决1 下载安装官方的jdk并配置环境变量,自行百度教程2 下载 maven 并配置环境变量,配置完要source下3 mvn -v 如果 Java version 正确,但是 runtime 值为 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin,删除 JavaAppletPl.

2021-04-28 14:22:49 132

原创 面试第二季

1 volatile 关键字​线程可见性、不保证原子性、禁止指令重排序​使用场景要求:对变量的写操作不依赖于当前值,该变量没有包含在具有其它变量的不定式中​使用场景:单例模式,Spring的bean,数据库连接池,线程池JMM Java内存模型2 AtomicIntegerAtomicInteger 支持原子性,unsafe cas自旋(获取当前对象和内存地址,和预期值比较并交换)cas是一条cpu并发原语,执行过程中不允许被中断,是一个原子指令AtomicInteger–Cas–unsa

2021-03-03 23:02:18 23

原创 idea项目关联github

0、创建本地Git仓库:VCS -> Import into Version Control -> Create Git Repository -> 在弹框中会自动选中我们的项目,点击ok即可1、先将本地项目提交到本地仓库:右击项目 -> Git -> Commit Directory -> 选中需要提交的文件后commit到本地仓库2、关联本地仓库和远程仓库:Shift+Ctrl+K快捷键呼唤出Git设置3、点击红框框弹出设置框进行关联:4、在你的远程仓库里点击

2021-01-27 16:23:39 73 1

原创 Spring 循环依赖

@Test public void testAOP() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); LagouAopBean lagouBean = applicationContext.getBean(LagouAopBean.class); lagouBean.print(); }1 Abstract.

2020-12-01 15:02:07 93

原创 ReentrantLock 和AQS

抽象队列同步器,通过一个int类型变量表示持有锁的状态。state + FIFO队列(head、tail、node(waitStatus,Thread,prev,next))AQS使用一个volatile的int 类型的成员变量来表示同步状态,通过内置的FIFO队列来完成资源获取的排队工作,将每条要去抢占资源的线程封装成一个node节点来实现锁的分配,通过CAS完成对state值的修改Lock.lock()解析...

2020-11-30 17:01:25 50

原创 Spring循环依赖源码解析

Spring循环依赖场景有构造器循环依赖(不可解决),set注入循环依赖(单例可以解决)。解决大概逻辑主要代码public class LagouBean implements InitializingBean, ApplicationContextAware { private ItBean itBean; public void setItBean(ItBean itBean) { System.out.println("setItBea.........."); this.itB

2020-09-16 16:52:46 76

原创 本地项目上传github

本地新建项目之后想要上传github,首先在github上新建个项目,项目名尽量保持一致;之后echo "# IPersistence" >> README.mdgit initgit add README.mdgit commit -m "first commit"git branch -M mastergit remote add origin https://github.com/wangxiaoliang1112/IPersistence.gitgit push -u o

2020-08-27 10:36:09 38

原创 Java 集合总结篇

集合总的接口是 Collectionpublic interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); O...

2020-03-24 15:31:53 73

原创 Java基础知识总结

值传递和引用传递Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按 值传递的。下面再总结一下Java中方法参数的使用情况:一个方法不能修改一个基本数据类型的参数(即数值型或布尔型》一个方法可以改变一个对象参数的状态。一个方法不能让对象参数引用一个新的对象。==与equals(重要)== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。...

2020-03-24 15:29:12 105

原创 go

循环go中只有 for 循环const repeatCount = 5func Repeat(character string) string { var repeated string for i := 0; i < repeatCount; i++ { repeated += character } return repeated...

2020-03-24 15:27:13 75

原创 vue总结篇
原力计划

基本语法:v-if,v-else判断是否加载html的DOM。v-show调整css的display属性,DOM已经加载,只是没有CSS控制没有显示出来v-for循环渲染一组data的数组v-text v-htmlv-text防止暴露我们的{{xxx}},v-html可以写html标签v-on监听事件,可以监听DOM事件来触发一些JS代码v-model可以实现双向数据绑定...

2020-03-24 15:26:37 143

原创 Spring注解开发

简单的项目: 1、新建一个配置类(相当于之前的配置文件)//配置类==配置文件@Configuration //告诉Spring这是一个配置类public class MainConfig { //给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id @Bean(&quot;person&quot;) public Person person01(){ ...

2020-03-24 15:25:41 83

原创 docker

docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。Docker本时是一个容器运行载体或称之为管理引擎。打包好的运行环境就是镜像文件,通过镜像文件才能生成Docker容器。Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。Docker 利用容器(Container)独立运行的一个或一...

2020-01-14 17:30:52 97

原创 Controller请求参数传递

1. 处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解: @PathVariable; @GetMapping("article/{id}") public void article(@PathVariable("id") String id) { logger.info("文章{}",id); //业...

2019-12-03 14:30:20 647

原创 Tomcat组件

Tomcat组件分析 第一层关系是组件有大有小,大组件管理小组件,比如 Server 管理 Service,Service 又管理连接器和容器。 第二层关系是组件有外有内,外层组件控制内层组件,比如连接器是外层组件,负责对外交流,外层组件调用内层组件完成业务功能。也就是说,请求的处理过程是由外层组件来驱动的 每个组件都要经历创建、初始化、启动这几个过程,我们抽取出来一...

2019-09-27 09:24:45 77

原创 csdn 图片管理

----

2019-09-23 16:38:26 88

原创 Java--Condition

用来替代传统的Object的wait()、notify()实现线程间的协作,使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。Condition是个接口,基本的方法就是await()和signal()方法Condition依赖于Lock接口,生成一个Condition的基本代码是lock.newCondition()Conditon中的await(...

2019-07-27 14:54:54 66

原创 Java--IO基础

服务器接收客户端发过来的请求,想要进行处理,1. 等待数据到达 2. 拷贝到用户空间1、同步阻塞IO2、同步非阻塞IO非阻塞IO基于状态轮训的方式,虽然能让程序在等待的过程中做点其他的事情,但是频繁的切换运行程序,反而会造成很大的压力。3、IO多路复用/事件驱动其实Nio或者Netty就是基于这种模式,一个线程就可以监听很多IO操作,这样在IO等待上就高效多了。具体实现是依赖于操作...

2019-06-11 09:25:50 77

原创 Spring 注解

Spring注解主要分为两类: spring bean容器的注解,springmvc相关的注解1、Java的注解例如@Override@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}@Documented@Retention(RetentionP...

2019-06-05 14:35:27 183

原创 Java--Java8Stream

Stream 笔记package com.example.test;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.junit.Test;import java.util.*;import java.util.stream.Collecto...

2019-01-16 22:19:06 96

原创 spring 动态代理

利用JDK的反射机制(proxyJDK)而spring默认使用的就是AspectJ来实现的动态代理,spring自己的AOP就是使用AspectJ来实现的!package cn.xhx.jdkproxy; import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/** * 此拦截器为Pers...

2018-10-24 10:31:40 135

原创 RocketMQ

MQ 消息队列中间件,主要解决异步信息,应用解耦,流量削锋;1、异步处理例:用户注册后,写入消息队列后进行发送,需发送邮件和短信;2、应用解耦例:订单系统写入消息队列,调用库存系统(订阅);3、流量削锋例:用户请求-&gt;消息队列&lt;-根据规则进行秒杀 只处理10个请求JMS模型1、P2P 点对点模式消息队列(Queue) 发送者(Sender) 接收者(Receiver...

2018-09-26 00:31:28 123

原创 SQL存储过程,函数

存储过程和函数的区别:存储过程可以没有返回值,函数必须有返回值;// 语法CREATE PROCEDURE 存储过程名(参数列表)BEGIN 存储过程体;END参数模式 IN , OUT , INOUT举例:IN name VARCHAR(20)调用:CALL 存储过程名1、 IN 参数DELIMITER $ // 定义结束符号CREATE PROCEDURE t...

2018-09-23 16:57:16 591

原创 Java--多线程

线程优先级: 在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线 程构建的时候可以通过setPriority(int)方法来修改优先级。 注意:线程优先级不能作为程序正确性的依赖,因为操作系统可以完全不用理会Java 线程对于优先级的设定。 线程的状态: Daemon线程是一种支持型线程,因为它主要被用作程序中后台调度以及支持性工作。这...

2018-08-31 18:52:26 101

原创 Java--NIO

阻塞与非阻塞 传统的IO都是阻塞式的,当一个线程调用read 或 write 时,线程会被阻塞,直到数据读取或写入,此线程在此期间不能执行其他任务。 Java NIO 是非阻塞的,当线程在此通道进行读写数据时,如果没有数据可以用,该线程可以进行其他任务。阻塞式代码package com.atguigu.nio;import java.io.IOException;import...

2018-08-31 13:16:15 82

原创 Java--反射

public class TestRef { @Test public void test1() throws Exception { Class&amp;amp;amp;lt;Person&amp;amp;amp;gt; clazz = Person.class; // 创建p对应运行时类Person对象 Person person = clazz.newInstance()...

2018-08-31 13:15:36 105

原创 Java--IO和NIO(一)

IO过程:byte[] b = new byte[4096];while((read = inputStream.read(b))&amp;amp;amp;amp;amp;gt;=0) { total = total + read; // other code.... }1)程序员写代码创建一个缓冲区(这个缓冲区是用户缓冲区; 2)当执行到read()方法时,其实...

2018-08-23 19:35:21 138

原创 设计模式(六)责任链模式

责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。Abstracthandler类提供了get和set方法,方便MyHandle类设置和修改引用对象,MyHandle类是核心,实例化后生成一系列相互持有的...

2018-08-21 14:34:37 77

原创 设计模式(五)装饰器模式

装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口//Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能public interface Sourceable { public void method();} public class Source implements Sourc...

2018-08-21 14:29:24 77

原创 设计模式(四)适配器模式

主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。

2018-08-21 14:19:18 96

原创 设计模式(三)单例模式

单例对象能保证在一个JVM中,该对象只有一个实例存在。 优点: 1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。volatile 加 双重锁定;class Singleton{ private st...

2018-08-20 20:28:41 89

原创 设计模式(二)抽象工厂模式

工厂方法模式和抽象工厂模式不好分清楚,他们的区别如下:工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例,也就是创建的是一...

2018-08-20 20:15:59 99

原创 设计模式总结

一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两...

2018-08-20 17:29:32 72

原创 设计模式(一)工厂方法模式

工厂方法模式(Factory Method)定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。代码实例 定义一个接口public interface Sender { public void Send(); } 定义两个实现类public class MailSender implements Sender { ...

2018-08-20 17:24:36 74

原创 数据库操作语句

MySQL分页limit用法 LIMIT后的第一个参数是输出记录的初始位置,第二个参数偏移量。 如:SELECT * FROM tables LIMIT 10, 3;返回的就是11到13,3条数据。 如果只给定一个参数,它表示返回最大的记录行数目: SELECT * FROM table LIMIT 5; //检索前 5 个记录行。 优化 如:SELECT * FROM article...

2018-08-09 18:23:08 248

原创 Dubbo总结

简介集群:相同的程序功能部署在多台服务器,这些服务器对外提供的功能是一样的; 分布式:将多个程序、功能分别运行在多台服务器上,这些服务器对外提供的功能不一样,通过相互协作完成某一个服务或功能;Dubbo:是一个分布式服务治理框架,提供高性能和透明化的RPC远程服务调用及服务治理。 用途:RPC远程调用,服务治理。Provide:提供服务的服务提供方(生产者)Consumer...

2018-08-09 13:47:07 283

原创 Java--Servlet

Servlet:创建并返回基于客户请求的动态HTML页面;与其他服务器资源进行通信生命周期:构造器(只调用一次),init,service,destroy(卸载前调用)。 load-on-startup:大于等于0,容器启动时候加载servlet;未指定或负数,使用该servlet时候才加载,正数越小优先级越高。httpServlet继承GenericServlet,而GenericSe...

2018-08-06 15:47:02 105

原创 Java--ConcurrentHashMap

JDK7的ConcurrentHashMap: ConcurrentHashMap 是一个 Segment 数组,Segment 通过继承 ReentrantLock 来进行加锁,所以每次需要加锁的操作锁住的是一个 segment,这样只要保证每个 Segment 是线程安全的,也就实现了全局的线程安全。 Segment 数组默认是16,不可扩容;Segment 内部是由 数组+链表 组成...

2018-07-31 17:14:27 105

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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