08 2019 档案
摘要:题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3]nums2 = [2] 则中位数是
阅读全文
摘要:题目: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd"输出: "bb" 来源:力扣(LeetCode)链接:https://leet
阅读全文
摘要:CLOB(Character Large Object) -用于储存大量的文本数据 BLOB(Binary Large Object) -用于存储大量的二进制数据 -大字段有些特殊,不同数据处理的方式不一样,大字段的操作常常是以流的方式来处理的,而非一般的字段,一次即可读出数据
阅读全文
摘要:时间类型 java.util.Date 子类: -java.sql.Date无时分秒 -java.sql.Time -java.sql.Timestamp
阅读全文
摘要:事务 事务基本概念 一组要么同时执行成功,要么同时执行失败的SQL语句,是数据库操作的一个执行单元(比如:银行中,对账户的操作和日志的记录是一组事务) 事务开始于: -连接到数据库上,并执行一条DML语句(INSERT、UPDATE或DELETE) -前一个事务结束后,又输入了另外一条DML语句 事
阅读全文
摘要:灵活指定SQL语句中的变量 -PreparedStatement 对存储过程进行调用 -CallableStatement 运用事务处理 -Transaction 批处理 -Batch -对于大量的批处理,建议使用statement,因为PreparedStatement的预编译空间有限,当数据量特
阅读全文
摘要:ResultSet结果集 -Statement执行SQL语句时返回ResultSet结果集 -ResultSet提供的检索不同类型字段的方法,常用的有: getString():获得在数据库里是varchar,char等数据类型的对象 getFloat():获得在数据库里是Floatr数据类型的对象
阅读全文
摘要:PreparedStatement类 存在预编译,用占位符去填参数(参数索引从1开始算),可以防止SQL注入
阅读全文
摘要:Statement接口 用于执行静态SQL语句并返回它所生成结果的对象 三种Statem类 Statement:由createStatement创建,用于发送简单的SQL语句(不带参数的),会有SQL注入的风险 PreparedStatement:继承自Statement接口,由prepareSta
阅读全文
摘要:JDBC(Java Database Connection)为Java开发者使用数据库提供了统一的编程接口 sun公司由于不知道各个主流商用数据库的程序代码,因此无法自己写代码连接各个数据库,因此sun公司自己提供一套API,凡是数据库想与Java进行连接的,数据库厂商自己必须实现JDBC这套接口,
阅读全文
摘要:1.mySQL https://dev.mysql.com/downloads/connector/ 2.IBM DB2 http://www-01.ibm.com/support/docview.wss?uid=swg21363866 3.Oracle http://www.oracle.com/
阅读全文
摘要:navicat的安装 从网上下载的,详细过程,略 mysql8.0.11(win10,64)安装 1、下载 MySQL8.0 For Windows zip包下载地址:https://dev.mysql.com/downloads/file/?id=476233点击底部“No thanks, jus
阅读全文
摘要:/** * 测试正则表达式的基本用法 Pattern 和 Matcher * @author 小帆敲代码 * */public class Demo01 { public static void main(String[] args) { //准备正则表达式 Pattern p=Pattern.co
阅读全文
摘要:预搜索(零宽断言) -只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度 -对位置的匹配,某个位置应该是某个表达式,对前后位置字符的判断
阅读全文
摘要:选择符和分组 | 分支结构 () 捕获组 (1)在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰 (2)取匹配结果时,括号中的表达式匹配到的内容可以被单独得到 (3)每一对括号会分配一个编号,使用()的捕获编号根据左括号的顺序从1开始自动编号。捕获元素为零的第一个捕获是由整个正则表达式模式匹
阅读全文
摘要:字符边界 -零宽,本组标记匹配的不是字符而是位置,符合某种条件的位置 \b:前面的字符和后面的字符不全是\w 正则表达式的匹配模式 IGNORECASE忽略大小写模式 -匹配时忽略大小写 -默认情况下,正则表达式是要区分大小写的 SINGLEINE单行模式 -整个文本看作一个字符串,只有一个开头,一
阅读全文
摘要:量词Quantifier -修饰匹配次数的特殊符号,放在要修饰的后面 ·匹配次数中的贪婪模式(匹配字符越多越好,默认!) ·匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个“?”号)(如:\d{3,6}?非贪婪模式)
阅读全文
摘要:标准字符集 -能够与“多种字符”匹配的表达式 -注意区分大小写,大写是取补集的意思 小数点可以匹配任意一个字符(除换行符) 如果要匹配包括“\n”在内的所有字符,一般用[\s\S] 自定义字符集合: -[]方括号匹配方式,能够匹配方括号中的任意一个字符 正则表达式的特殊符号,被包括到中括号中,则失去
阅读全文
摘要:普通字符 -字母,数字,汉字,下划线,以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符 简单的转义字符
阅读全文
摘要:备忘录模式Memento 场景: -Word文档编辑时,电脑死机或者断电,再次打开时,word提醒恢复之前的文档 -文件的撤回 核心: -就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态 结构:-源发器类Originator(需要备忘的对象,内部可以创建备忘录,用于记录当前时刻
阅读全文
摘要:观察者模式Observer 广播机制 场景:多个观察者--被通知改变 CS的时候,人物移动坐标变化,更新每个人地图上的坐标 核心:当目标对象(Subject)的状态值改变时,需要及时告知所有观察者(Observer),使他们做出响应 开发中常见的场景: -聊天室程序中,服务器转发给所有客户端 -网络
阅读全文
摘要:状态模式state 场景:当具有许多状态并且需要频繁改变时,用这种模式 -电梯的运行:维修,正常,自动关门,自动开门,向上运行,向下运行,消防状态 -红绿灯:红灯,黄灯,绿灯 -企业或政府系统:公文的审批状态 -网上购物时,订单的状态:下单,已付款,送货中,已收货 核心:用于解决系统中复杂对象的状态
阅读全文
摘要:模板模式template method 场景:具有具体流程,但具体某一步的业务不同 到银行办理业务:排队取号,办理业务,给员工打分 请客吃饭:等待,点单,吃饭,结账 模板方法模式介绍:模板方法是编程常用的模式,它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算
阅读全文
摘要:策略模式strategy 场景:对不同客户的不同报价策略 如果采用if else不易扩展,不符合开闭原则,可以采用策略模式 策略模式: 对应于解决某一个问题的算法族,允许其中一个算法去解决某一问题,同时可以方便的更改和扩展算法,可以由客户端决定调用那个算法 结构:抽象策略类,具体策略类(算法族),上
阅读全文
摘要:访问者模式Visitor 模式动机:对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同访问者的访问方式也不同 定义:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变元素的类的前提下定义作用与这些元素的
阅读全文
摘要:解释器模式Interpreter -是一种不常用的设计模式 -用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计 -当我们需要开发一种新的语言时,可以考虑使用解释器模式 -尽量不要使用解释器模式,后期维护会有很大麻烦,在项目中,可以使用Jruby,Groovy,j
阅读全文
摘要:命令模式Command 将一个请求封装为一个对象,从而使我们可用不同的请求对客户参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务transaction模式 在命令发出,命令执行前后可以进行相关操作也具有更高的扩展性,包括多个执行者,多个命令的情况 结构:
阅读全文
摘要:中介者模式Mediator 场景:公司中各个部门需要交互,通过中介总经理进行交互 核心: 如果一个系统中对象之间的联系成网状结构,对象之间多对多,将导致关系极其复杂,这些对象统称为“同事关系” 我们可以引入一个中介者对象,使各个同事对象只和自身与中介者打交道,中介再去其他部门交互 中介者模式的本质:
阅读全文
摘要:迭代器模式Iterator /** * 自定义迭代器接口 * @author 小帆敲代码 * */public interface MyIterator { void first();//游标置于第一个 void last();//游标置于最后一个 boolean isfirst(); boolea
阅读全文
摘要:责任链模式chain of responsibility 将能够处理同一类请求的对象连成一条链,所提交的请求依次在链上传递,直到传递至有能力处理该请求的对象,不能则传给链上下一个 场景: -打牌时 -奖学金审批 -请假审批 核心:是在客户端中才成链,也可以通过配置文件或者存在数组中加载 开发中常见场
阅读全文
摘要:享元模式FlyWeight 场景:如果有很多个完全相同或者相似的对象,可以节省内存资源 核心: 享元模式以共享的方式高效地支持大量细粒对象的重用 享元对象做到共享的关键是区分了内部状态和外部状态: 内部状态:可以共享,不会随环境变化而变化(共有的部分) 外部状态:不可以共享,会随环境变化而改变(独特
阅读全文
摘要:外观模式 迪米特原则:一个软件实体应当尽可能少的与其他实体发生相互作用 外观模式核心:为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用 相当于找了个代理帮你做了所有事而你只需要和代理打交道
阅读全文
摘要:装饰模式decorator 作用: -动态的为一个对象增加新功能 -装饰模式是一种用于代替继承的技术,无需通过增加子类就能扩展对象的新功能,适用对象的组合关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀 角色: -Component抽象构件角色:真实对象和装饰对象具有相同的接口,这样,客户端对
阅读全文
摘要:组合模式Composite 使用组合模式的场景:把部分和整体的关系用树形结构表示,从而使客户端可以使用统一的方式处理对象和整体对象(文件和文件夹) 组合模式核心: -抽象构件(Component)角色:定义了叶子和容器的共同点 -叶子(Leaf)构件角色:无子节点 -容器(Composite)构件角
阅读全文
摘要:桥接模式 当一个问题违反单一职责原则时,及控制该产品的有多个维度,为了扩展时减少类的膨胀个数,可以选用桥接模式 避免多重继承时 例如买电脑时 桥接模式
阅读全文
摘要:动态代理 public class StarHandler implements InvocationHandler{ Star realStar; public StarHandler(Star realStar) { this.realStar = realStar; } @Override p
阅读全文
摘要:静态代理 模拟经纪人与明星开演唱会 public interface Star { /** * 面谈 */ void confer(); /** * 签合同 */ void signContract(); /** * 唱歌 */ void sing(); /** * 收尾款 */ void cole
阅读全文
摘要:代理模式 核心作用: -通过代理,控制对对象的访问 -可以详细控制机制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做 后置处理(AOP的微观实现) 应用场景 -安全代理:屏蔽对真是角色的直接接触(经纪人) -远程代理:通过代理类处理远程方法 -延迟加载:先加载轻量级的代理对
阅读全文
摘要:结构型模式 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的 类结构,用来解决更大的问题 适配器模式adapter 实际生活中的例子:转换器 适配器的两种方式: 1,类适配器(继承) /**需要适配的对象 * @author 小帆敲代码 * */public class Adaptee {
阅读全文
摘要:利用序列化和反序列化完成深复制 ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bos); oos.writeObject(s1); byte[]
阅读全文
摘要:原型模式prototype 原型模式: - 通过new产生一个对象需要非常繁琐的数据准备或者访问权限,则可以使用原型模式,比如如果new对象所需时间过长,可以通过克隆产生相同的副本 - Java中的克隆技术,就是以某个对象为原型,复制出新的对象,显然新的对象剧本原型对象的特点 - 克隆类似new但是
阅读全文
摘要:组件很多,装配顺序不定 本质: 1,分离了对象子组件的单独构造(Builder负责)和装配(Director负责),从而可以构造出复杂的对象,这个模式适用于某个对象的构建过程复杂的情况下使用 2,实现了构建和装配的解耦 /**建造者用来得到各个组件 * @author 小帆敲代码 * */publi
阅读全文
摘要:抽象工厂模式 不能添加单个产品,产品族 public interface Seat { void anmo();}class GoodSeat implements Seat { @Override public void anmo() { System.out.println("可以按摩"); }
阅读全文
摘要:简单工厂模式和工厂方法模式 工厂模式核心:分工 简单工厂模式不符合OCP(Open-Closed Princinple)原则,扩展时需要更改原代码 工厂方法模式增加了类复杂度代码复杂度等,所以一般使用简单工厂模式 普通代码 public interface Car { void run();} pu
阅读全文
摘要:多线程时,很多时候由于mian线程与多线程结束时间不可控,造成无法测试 辅助测试类 CountDownLatch 我看的视频教程匿名内部类无法使用外部的变量,所以CountDownLatch定义为了final,但是我现在jdk12似乎没问题 /** * 多线程环境下运用CountDownLatch测
阅读全文
摘要:单例模式的五种方式 主要:懒汉式,饿汉式 其他:双重检测锁(Double Checking模式),静态内部类,枚举模式 选取时机 延时加载,占用内部资源大:静态内部类好于懒汉 不延时加载,占用内部资源小:枚举好于饿汉 /** * 单例模式 懒汉式 * @author 小帆敲代码 * */public
阅读全文
摘要:创建型模式: 单例模式,工厂模式,抽象工厂模式 结构型模式: 适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式 行为型模式: 模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式,访问者模式
阅读全文

浙公网安备 33010602011771号