- 博客(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
177
1
原创 git相关
一、设置签名作用:区分不同开发人员的身份辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。命令项目级别/仓库级别:仅在当前本地库范围内有效git config user.name tom_progit config user.email goodMorning_pro@atguigu.com信息保存位置:./.git/config 文件系统用户级别:登录当前操作系统的用户范围git config --global user.name tom_glbgit conf
2020-12-13 12:17:22
164
原创 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
187
原创 java设计模式—观察者模式(Observer Pattern)
观察者模式观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系代码:public interface Observer { public void update(); } public class Observer1 implements Observer
2020-07-14 09:30:22
153
原创 java设计模式—策略模式(Strategy Pattern / Policy Pattern)
策略模式策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数代码:public interface ICalculator { public int calculate(String exp); } public abstract class AbstractCalculator {
2020-07-14 07:22:42
139
原创 java设计模式—原型模式(Prototype Pattern)
原型模式该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象有**浅复制**和**深复制**两种浅复制将一个对象复制后,对象的基本数据类型的变量都会重新创建,而对象的引用类型变量,指向的还是原对象所指向的。代码:public class ModelTest { @Test public void test1() throws CloneNotSupportedException { ProtoTypeObj p = new P
2020-07-13 18:44:54
97
原创 java设计模式—抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。public interface Sender { public void Send(); }public class MailSender implements Sender { @Ove
2020-07-12 10:38:02
82
原创 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
106
原创 java设计模式—代理模式(Proxy Pattern)
代理模式:代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法public interface Sourceable { public void method(); } public class Source implements Source
2020-07-12 08:49:47
100
原创 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
135
原创 Java设计模式—模板方法模式(Template Methood pattern)
模板方法模式(Template Method)解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1…n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图:就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和Minus分别继承AbstractCalculator类,通过对AbstractCalculator的调用实现对子类的调用,看
2020-07-11 10:20:13
155
原创 创建线程的另外两种方法
方法一:实现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
80
原创 常见的创建线程的两种方式
一、自定义类继承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
201
原创 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
131
原创 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
184
原创 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
172
原创 java设计模式—装饰器模式(Decorator Pattern)
以BufferedInputStream为例: BufferedInputStream bfin = new BufferedInputStream(new FileInputStream("a.txt"));此处用到装饰器模式:装饰模式(Decorator)顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加
2020-07-06 09:48:56
111
原创 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
119
原创 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
127
原创 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
148
原创 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
263
原创 I/O—缓冲流(处理流的一种)的使用
缓冲流为了提高读写效率,缓冲流不能直接作用于文件,只能作用于节点流速度提升非常明显使用 BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter读和写同字节流和字符流复制: @Test public void copy() throws IOException { FileInputStream fis = null; FileOutputStream fos = nul
2020-07-04 10:00:56
120
原创 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
142
原创 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
125
原创 mybatis一级和二级缓存及第三方缓存
一级缓存SqlSession级别:默认开启1.同一个sqlSession下相同条件查询,第二次查询直接从内存中的缓存去2.同一个sqlSession下不同条件查询,第二次从数据库查3.不同的sqlSession,相同的条件查询,两次都从数据库查4.同一个sqlSession下相同条件查询,两次查询中间任意一次增删改(还是同一个sqlSession),第二次从数据库查5.同一个sqlSession下相同条件查询,中间执行一次sqlSession.clearCache(),第二次从数据库查二级缓存
2020-07-02 09:36:50
104
原创 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
420
原创 如何在控制台日志看到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
555
原创 如何给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
1492
原创 idea同一个窗口打开多个项目
File > Project Structure > Modules > + > new Module注意:新项目路径和默认在原项目里,改成和原项目平行
2020-06-21 09:38:34
702
原创 什么时候,会触发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
1038
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
703
转载 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
213
原创 linux下如何查找文本中的关键字
方法一/content用Vim打开文件后,直接输入 /关键字 并回车,定位到第一个关键字,之后通过n向下查找,通过N向上查找方法二?content用Vim打开文件后,直接输入 ?关键字 并回车,定位到最后一个关键字,之后通过n向上查找,通过N向下查找...
2020-06-11 14:36:43
3282
转载 LinkedList中的pop()和poll()的区别
两个函数的代码实现是基本一致的,如果一定要说区别那么就是当头结点为空的时候,两个函数的处理方式不同:poll()选择返回null,pop()选择抛出异常。添加链接描述
2020-06-11 08:50:47
1527
转载 深入了解Redis底层数据结构
说明说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是Redis对外暴露的数据结构,用于API的操作,而组成它们的底层基础数据结构又是什么呢简单动态字符串(SDS)链表字典跳跃表整数集合压缩列表…见链接 https://juejin.im/post/5d71d3bee51d453b5f1a04f1...
2020-06-10 16:23:13
127
原创 Linux Centos7下安装redis
查看html文档需要注意的是第5步,即(5:在安装之前需要预装gcc、tcl)这一步只用执行 yum install gcc tcl -y即可,其它的不用(该命令任何目录下都可执行)见兄弟连>第四阶段>day08-inux>06_NoSQL从小白到码神.html...
2020-06-10 10:10:39
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人