自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java正则表达式

1.2 正则表达式(查手册会用即可)(1)基本概念正则表达式本质上就是一个字符串,用于对用户输入的数据内容进行格式的验证。该字符串通常使用^符号作为开头标志,使用$符号作为结尾标志,也可以省略标志。(2)常用的规则[abc] - 表示可以出现a、b 或 c(简单类)。[^abc] - 表示可以出现任何字符,除了 a、b 或 c(否定)。[a-zA-Z] - 表示可以出现a 到 z 或 A 到 Z,两头的字母包括在内(范围)。\d - 表示可以出现任何数字,相当于[0-9]。\D - 表示

2020-12-18 20:10:04 116 1

原创 git相关

一、设置签名作用:区分不同开发人员的身份辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。命令项目级别/仓库级别:仅在当前本地库范围内有效git config user.name tom_progit config user.email [email protected]信息保存位置:./.git/config 文件系统用户级别:登录当前操作系统的用户范围git config --global user.name tom_glbgit conf

2020-12-13 12:17:22 119

原创 java设计模式—单例设计模式(Singleton Pattern)

单例设计模式饿汉式、懒汉式(加锁,影响性能)、第三种方式都可以解决线程安全问题ConceptA particular class should have only one instance. We will use only that instance whenever we are in need饿汉式:public class Singleton { //必须是private修饰,不然其它类可以通过Singleton.singleton来获取Singleton实例 pr

2020-07-14 12:12:53 137

原创 java设计模式—观察者模式(Observer Pattern)

观察者模式观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系代码:public interface Observer { public void update(); } public class Observer1 implements Observer

2020-07-14 09:30:22 96

原创 java设计模式—策略模式(Strategy Pattern / Policy Pattern)

策略模式策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数代码:public interface ICalculator { public int calculate(String exp); } public abstract class AbstractCalculator {

2020-07-14 07:22:42 93

原创 java设计模式—原型模式(Prototype Pattern)

原型模式该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象有**浅复制**和**深复制**两种浅复制将一个对象复制后,对象的基本数据类型的变量都会重新创建,而对象的引用类型变量,指向的还是原对象所指向的。代码:public class ModelTest { @Test public void test1() throws CloneNotSupportedException { ProtoTypeObj p = new P

2020-07-13 18:44:54 60

原创 java设计模式—抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。public interface Sender { public void Send(); }public class MailSender implements Sender { @Ove

2020-07-12 10:38:02 50

原创 java设计模式——工厂方法模式(Factory Method Pattern)

工厂方法模式包括普通工厂模式、多个工厂方法模式、静态工厂方法模式普通工厂模式public interface Sender { public void Send(); } public class MailSender implements Sender { @Override public void Send() { System.out.println("this is mailsender!"); } } pu

2020-07-12 09:33:20 69

原创 java设计模式—代理模式(Proxy Pattern)

代理模式:代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法public interface Sourceable { public void method(); } public class Source implements Source

2020-07-12 08:49:47 72

原创 java设计模式—适配器模式(Adapter Pattern)

主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式类的适配器模式public class DesignPatternTest { @Test public void test1(){ Targetable target = new Adapter(); target.method1(); target.method2(); }}class Source { public void method1()

2020-07-11 17:14:48 95

原创 Java设计模式—模板方法模式(Template Methood pattern)

模板方法模式(Template Method)解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1…n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图:就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和Minus分别继承AbstractCalculator类,通过对AbstractCalculator的调用实现对子类的调用,看

2020-07-11 10:20:13 117

原创 创建线程的另外两种方法

方法一:实现Callable接口public class TestThread2 { @Test public void test1(){ FutureTask futureTask = new FutureTask(new ThreadD()); new Thread(futureTask).start(); try { //如果不想得到返回值,下面两边可以省略 Object o =

2020-07-10 09:58:04 66

原创 常见的创建线程的两种方式

一、自定义类继承Thread类代码:public class ThreadTest { @Test public void test1(){ ThreadA threadA = new ThreadA(); ThreadA threadA2 = new ThreadA(); threadA.start(); threadA2.start(); try { //为了让上面两个线程有足够时间执行

2020-07-07 17:09:15 167

原创 Java比较器—Comparable和Comparator

Comparable接口:java.lang.Comparable自定义对象实现该接口重写compareTo方法:public class Book implements Comparable{ public String name; public double price; public Book() { } public Book(String name, double price) { this.name = name;

2020-07-07 17:02:46 87

原创 I/O—使用第三方jar包进行io读写

导入第三方jar包 commons-io-2.4.jarmaven仓库<!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</ver

2020-07-07 09:14:00 154

原创 I/O—RandomAccessFile中指针的应用及ByteArrayOutputStream

RandomAccessFile:该类既可以当 FileInputStream使用RandomAccessFile raf1 = new RandomAccessFile("1.png","r");也可以当FileOutputStream使用RandomAccessFile raf2 = new RandomAccessFile("2.png","rw");指针的应用如何在文本指定位置插入相关字符串?代码: @Test public void randW() {

2020-07-07 08:48:22 130

原创 java设计模式—装饰器模式(Decorator Pattern)

以BufferedInputStream为例: BufferedInputStream bfin = new BufferedInputStream(new FileInputStream("a.txt"));此处用到装饰器模式:装饰模式(Decorator)顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加

2020-07-06 09:48:56 76

原创 I/O—数据流和对象流

数据流:处理基本类型数据和字符串类型数据@Test public void testWrite() throws IOException { File file = new File("b.txt"); FileOutputStream fos = new FileOutputStream(file); DataOutputStream dos = new DataOutputStream(fos); dos.writeDoub

2020-07-05 20:28:55 82

原创 I/O—输入流与输出流

输入流:不用Scanner类的办法public class OtherStreamTest { public static void main(String[] args) { BufferedReader bufferedReader = null; try { InputStreamReader isr = new InputStreamReader(System.in); bufferedReader

2020-07-05 19:13:50 96

原创 I/O—转换流

将字节流转换为字符流 > 将字符流转换为字节流写入文件utf-8.txt是以utf-8的格式从字节变成字符的文本,即3个字节变成1个字符,OutputStreamWriter再以gbk的格式写入gbk.txt中代码:@Test public void testTran() { InputStreamReader isr = null; OutputStreamWriter osw = null; try { Fi

2020-07-05 11:29:06 113

原创 IO—如何获取文本中每个字符(包括换行符、tab键等)出现的次数

代码:@Test public void homework2() throws IOException, InterruptedException { FileReader fileReader=null; FileWriter fileWriter=null; try { File file = new File("a.txt"); File file2 = new File("c.txt");

2020-07-04 18:07:29 200

原创 I/O—缓冲流(处理流的一种)的使用

缓冲流为了提高读写效率,缓冲流不能直接作用于文件,只能作用于节点流速度提升非常明显使用 BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter读和写同字节流和字符流复制: @Test public void copy() throws IOException { FileInputStream fis = null; FileOutputStream fos = nul

2020-07-04 10:00:56 92

原创 I/O—文件的读和写(字节流)

使用FileInputStream和FileOutputStream读(读整个文本):@Test public void testRead() { FileInputStream fileInputStream = null; try { File file = new File("a.txt"); fileInputStream = new FileInputStream(file); by

2020-07-04 09:29:29 113

原创 I/O—文本文件的读和写(字符流)

使用FileReader和FileWriter路径问题参考印象笔记代码: @Test public void ReadAndWrite() { FileReader fileReader = null; FileWriter fileWriter = null; try { File file = new File("a.txt"); File file2 = new File("b.txt");

2020-07-04 07:37:39 93

原创 mybatis一级和二级缓存及第三方缓存

一级缓存SqlSession级别:默认开启1.同一个sqlSession下相同条件查询,第二次查询直接从内存中的缓存去2.同一个sqlSession下不同条件查询,第二次从数据库查3.不同的sqlSession,相同的条件查询,两次都从数据库查4.同一个sqlSession下相同条件查询,两次查询中间任意一次增删改(还是同一个sqlSession),第二次从数据库查5.同一个sqlSession下相同条件查询,中间执行一次sqlSession.clearCache(),第二次从数据库查二级缓存

2020-07-02 09:36:50 84

原创 mybatis多条件查询及动态sql

看代码,项目见码云<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.xdl.dao.XdlUserMapper"> <select id="findByCondit" r

2020-07-01 17:29:00 374

原创 如何在控制台日志看到mybatis生成的sql

1.在sqlmap-config.xml中的中添加<settings> <setting name="logImpl" value="LOG4J"/> </settings>2.在项目中加入log4j.jar3.在src下创建log4j.properties,添加内容### set log levels ###log4j.rootLogger = DEBUG,Console,File### 输出到控制台 ###log4j.appender.C

2020-07-01 15:38:29 499

原创 如何给Maven项目添加log4j日志

1.在main/resources下创建log4j.properties文件在文件里写入:### set log levels ###log4j.rootLogger = DEBUG,Console,File### 输出到控制台 ###log4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.outlog4j.appender.Console.layout=org

2020-06-28 15:01:10 1380

原创 idea同一个窗口打开多个项目

File > Project Structure > Modules > + > new Module注意:新项目路径和默认在原项目里,改成和原项目平行

2020-06-21 09:38:34 588

原创 Redis为什么是单线程、及高并发快的3大原因详解

Redis单线程…链接

2020-06-12 18:22:01 86

原创 IDEA如何查看源码中某个方法被哪些类继承

定位到那个接口方法,方法的最左边有个绿色圆,点一下就会弹出实现了该方法的类

2020-06-12 14:17:48 1040

原创 什么时候,会触发rdb持久化?

1、shutdown(正常关闭)时,如果没有开启aof,会触发;kill -9 意外宕机不会触发rdb持久化;2、redis.conf默认配置(此配置是针对bgsave):save 900 1 #900s检查一次,增量的数据变更命令超过1,就触发;save 300 10 #300s 更改10次sava 60 10000 #60s 更改命令1w条,就触发;根据这个默认配置,会丢数据;意外宕机的情况下,丢失最后一次持久化后的数据3、执行命令save或者bgsavesave是只管保存,其他不管

2020-06-12 08:24:38 888 2

原创 redis rdb方式恢复数据

1.启动redis 进入redis目录 启动命令行 redis-cli.exe 2.数据备份 redis 127.0.0.1:6379> SAVE 该命令将在 redis 备份目录中创建dump.rdb文件。 3.恢复数据 ①获取备份目录 redis 127.0.0.1:6379> CONFIG GET dir...

2020-06-12 07:44:53 615

转载 实现redis的key失效所引发的一系列问题

关于redis key失效的一系列问题网址

2020-06-12 07:18:45 223

转载 Redis持久化 RDB和AOF 的区别

关于Redis说点什么,目前都是使用Redis作为数据缓存,缓存的目标主要是那些需要经常访问的数据,或计算复杂而耗时的数据。缓存的效果就是减少了数据库读的次数,减少了复杂数据的计算次数,从而提高了服务器的性能。一、redis持久化----两种方式1、redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。2、RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;3、AOF,则是换了一个角度...

2020-06-11 16:34:01 157

原创 linux下如何查找文本中的关键字

方法一/content用Vim打开文件后,直接输入 /关键字 并回车,定位到第一个关键字,之后通过n向下查找,通过N向上查找方法二?content用Vim打开文件后,直接输入 ?关键字 并回车,定位到最后一个关键字,之后通过n向上查找,通过N向下查找...

2020-06-11 14:36:43 3145

原创 Redis指令集

http://redisdoc.com/set/sadd.html

2020-06-11 09:10:24 99

转载 LinkedList中的pop()和poll()的区别

两个函数的代码实现是基本一致的,如果一定要说区别那么就是当头结点为空的时候,两个函数的处理方式不同:poll()选择返回null,pop()选择抛出异常。添加链接描述

2020-06-11 08:50:47 1424

转载 深入了解Redis底层数据结构

说明说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是Redis对外暴露的数据结构,用于API的操作,而组成它们的底层基础数据结构又是什么呢简单动态字符串(SDS)链表字典跳跃表整数集合压缩列表…见链接 https://juejin.im/post/5d71d3bee51d453b5f1a04f1...

2020-06-10 16:23:13 75

原创 Linux Centos7下安装redis

查看html文档需要注意的是第5步,即(5:在安装之前需要预装gcc、tcl)这一步只用执行 yum install gcc tcl -y即可,其它的不用(该命令任何目录下都可执行)见兄弟连>第四阶段>day08-inux>06_NoSQL从小白到码神.html...

2020-06-10 10:10:39 67

空空如也

空空如也

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

TA关注的人

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