自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夏沫

笔记

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

原创 oracle数据库字段拆分+多行拼接

1.字段切割,一条数据变多行。2.一个字段多行数据拼接成一行。

2022-08-11 18:22:46 2711 2

原创 Oracle定时任务执行存贮过程

procedure_name后面可以加参数,例如procedure_name(v_str in varchar2, v_num in number),参数在逻辑处理中只能当参数值,不能当作变量去操作;2.创建定时任务```sqldeclare job1 number;begin dbms_job.submit(job=>job1, what=>'procedure_name;', next_date=>to_date('20220728 01:00:00','yyyymmdd hh24:mi

2022-07-27 10:38:38 4833

原创 ConcurrentHashMap

jdk1.7: 分段锁jdk1.8: node节点锁

2021-11-07 21:22:03 141

原创 HashMap源码

//HashMap中默认的数组长度16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16//HashMap中数组最大值2的30次方static final int MAXIMUM_CAPACITY = 1 << 30;//扩容因子static final float DEFAULT_LOAD_FACTOR = 0.75f;//链表转红黑树的临界值static final int TREEIFY

2021-11-07 14:35:15 101

原创 TreeMap

红黑树特点:1.自平衡;2.每个节点要么是黑色要么是红色;3.根节点必须是黑色;4.叶子节点(空节点)是黑色;5.每个红色节点的两个子节点都是黑色;6.任意节点到它的每个叶子节点所包含的黑节点个数相同 public TreeMap() { comparator = null; } public TreeMap(Comparator<? super K> comparator) { this.comparator = compara

2021-11-02 17:01:38 113

原创 TreeSet

private transient NavigableMap<E,Object> m; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); /** * Constructs a set backed by the specified navigable map. */ ..

2021-11-02 11:45:10 96

原创 HashSet

hashset实现了set接口,底层是hash表,它不保证set的迭代顺序,不保证顺序永久不变,允许使用null作为元素;是一个没有重复元素的集合,是通过hashmap实现的,它包含一个hashmap类型的成员变量;private transient HashMap<E,Object> map;// Dummy value to associate with an Object in the backing Map// map底层中关联的一个虚拟对象,也就是hashset在hashm.

2021-11-02 10:33:37 146

原创 线程安全的List

Vector:类似ArrayList,但是每个操作方法上都有一个synchronized关键字;由于不够灵活,几乎不用它,改用Collections.synchronizedList(List list); public static <T> List<T> synchronizedList(List<T> list) { return (list instanceof RandomAccess ? new Synch

2021-11-02 09:54:09 221

原创 LinkedList

底层是双向链表;顺序访问效率高,随机访问效率低;包含静态内部类Node;private static class Node<E> { E item; //节点元素 Node<E> next; //下一个节点 Node<E> prev; //上一个节点 Node(Node<E> prev, E element, Node<E> next) { th.

2021-11-01 22:01:40 69

原创 Sentinel限流

限流的作用:保护系统避免被瞬时流量冲垮;预防恶意请求;如何控制流量:限流的指标:(可以容纳的流量,已经容纳的流量,可以接受的流程)阈值;限流的过程:通过算法来实现;限流的结果:处理策略;限流的算法:计数器(zk里面的RequestThrottle) :线程池大小,连接数大小;滑动窗口:漏桶算法:水的流程速度是固定的,桶的大小也是固定的;令牌桶算法:令牌桶的设计:桶的大小,令牌标记,定时任务生成令牌,令牌获取的接口;限流的实现:GuavaSemphore分布式限流服务熔断:

2021-11-01 21:26:44 1457

原创 java类中资源的加载顺序

根据优先级别从高到低依次为:1.父类中的静态代码块(static);2.自身的静态代码块;3.父类中的的普通代码块;4.父类的构造方法;5.自身的普通代码块;6.自身的构造方法;下面是一个测试:

2021-10-31 13:08:24 101

原创 遍历Map方法:

遍历map集合有三种:1.通过map.keySet()获取key的Set集合;2.通过map.values()获取所有的value的Collection集合;3.通过map.entrySet()获取所有的键值对Set集合;获取key,value的集合后通过迭代器Iterator遍历;实例代码:Map<String,Object> map = new HashMap();map.put("1",1);map.put("2",'s');map.put("3","z");map.p

2021-10-31 13:06:28 63

原创 设计者模式之策略模式(Strategy Pattern)

策略模式(Strategy Pattern)(政策模式):将定义的算法家族.分别封装起来,让它们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户;其实就是一种单一委派的模式,只委派一个;优点:a.符合开闭原则;b.避免使用多重条件转移语句,如if…else…语句,switch…语句;c.使用策略模式可以知道算法的保密性和安全性;缺点:a.客户端必须知道所有的策略,并且自行决定使用哪种策略类;b.代码中会产生非常多策略类,增加维护难度;...

2021-10-30 22:21:22 55

原创 设计者模式之原型模式(Prototype Pattern)

原型模式(Prototype Pattern):原型实例制定创建对象的种类,并且通过copy这些实例创建新的对象;调用者不需要知道任何细节,不调用构造函数;属于创建型模式;和单例模式冲突;Cloneable都是浅克隆;深克隆:a.序列化; b.转Json;优点:Java自带的原型模式是基于二进制流的拷贝,比直接new一个对象性能提升很多;缺点:必须配备克隆或者copy方法;适用场景:a.类初始化消耗资源比较多;b.new产生一个对象需要非常繁琐的过程(数据准备,访问权限等);c.

2021-10-30 22:14:52 62

原创 设计者模式之工厂模式(Factory Method Pattern)

工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,让实现这个接口的类来决定实例化哪个类;工厂方法让类的实例化推迟到子类中进行;a.简单工厂模式(Simple Factory Pattern):由一个工厂对象决定决定创造出哪一种产品类的实例;属于创建型模式,但是不属于GOF 23中设计者模式;适用场景:工厂类负责创建的对象较少;客户端只需要传入工厂类的参数,无需知道创建对象的逻辑;LoggerFactory,Calendar;优点:解耦,降低了修改代码时候的风

2021-10-30 22:12:20 80

原创 设计者模式之桥接模式(Bridge Pattern)

桥接模式(Bridge Pattern)(桥梁模式,接口模式,柄体模式):是将抽象部分与它的具体实现部分分离,使它们可以独立的变化;通过组合建立两个类之间的关系,而不是通过继承;属于结构型模式;组合模式,适配器模式与桥接模式的区别:是一种特殊的组合模式,注重的是形式;适配器解决的是兼容,桥接模式解决的是连接;适用场景:a.在抽象和具体实现之间需要增加更多的灵活性的场景;b.一个类存在多个独立变化的维度,而这多个维度都需要独立进行扩展;c.不希望使用继承,或因为多层继承导致系统类的个数剧增

2021-10-30 22:06:31 87

原创 设计者模式之组合模式(Composite Pattern)

组合模式(Composite Pattern):通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示;作用:使单个对象和组合对象保持一致的处理方式;属于结构型模式;适用场景;a.希望客户端可以忽略组合对象和单个对象差异时;b.对象层次具备整体和部分,呈树形结构(如树形菜单,操作系统目录结构,公司组织架构等);优点:a.清楚地定义分层的复杂对象,表示对象的全部或部分层次;b.让客户端忽略了层次的差异,方便对整个层次接口进行控制;c.简化客户端代码;d.符合开闭原则;缺点

2021-10-30 22:04:38 100

原创 设计者模式之享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern):对象池的一种实现;类似于线程池,线程池可以避免不停的创建和消费多个对象消耗性能,提供了减少对象数量从而改善应用所需的对象结构的方式;宗旨:共享细粒度对象,将多个对同一对象的访问集中起来;属于结构型模式;适用场景:常常应用于系统底层的开发,以便于解决系统的性能问题;系统有大量相似对象.需要缓冲池的场景;优点:减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率;缺点:需要关注内外部状态,需要关注线程安全问题;使系统,程序的逻辑复杂化

2021-10-30 22:03:24 76

原创 设计者模式之装饰器模式(Decorator Pattern)

装饰器模式(Decorator Pattern):在不改变原有对象的基础上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能);属于结构型模式;适用场景:a.用于扩展一个类的功能或者给一个类添加附加职责;b.动态的给一个对象添加功能,这些功能可以再动态的撤销;装饰者模式与代理模式的区别:装饰者:强调自身功能的扩展;代理:强调代理的过程;...

2021-10-30 22:02:22 81

原创 设计者模式之门面模式(Facade Pattern)

门面模式(Facade Pattern)提供了一个统一的接口,用来访问子系统中的一群接口;在完成一个功能,需要好调用好几个子接口的时候,那么可以把这些子接口都封装到一个接口里面,使用者就只需使用一个接口完成功能,不需要每个地方都去主动写出来调用,相当于是对多个接口调用的封装。特征:门面模式定义了一个高层接口,让子系统更容易使用;算是一种静态代理模式;属于结构型模式;...

2021-10-30 21:59:43 65

原创 七大设计原则

开闭原则(Open-Closed Principle,OCP)定义:对扩展开放,对修改关闭,用抽象去构建框架,用实现扩展细节。前面说的太官方,简单的理解就是尽量不去修改现有的代码,通过扩展来开发新增需求。因为对已有代码的改动可能会产生新bug,并且影响范围不可控,比如你写了一个公共的方法,不知道有多少人调用了或者你自己有很多地方调用,如果修改,就需要大面积重测,不利于后期扩展和维护。开就是允许扩展,闭就是不允许修改已有代码。优点:提高软件系统的可复用性和可维护性,减少维护成本。核心思想:面向抽象编

2021-10-30 21:55:37 52

原创 设计者模式之单例模式(Singleton Pattern)

单例模式:确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点;隐藏所有的构造方法;属于创建型模式;应用实例:ServletContext,ServletConfig,ApplicationConfig,DBPool;a.饿汉式单例:优点:效率高,性能高;缺点:使用大量的单例,初始化的时候可能造成内存浪费;b.懒汉式单例:(双重判断,if里面synchronized,然后里面if创建实例;可能造成指令重排序,成员变量需要volatitle修饰);c.注册式单例:(Map容器式

2021-10-30 21:52:42 56

原创 linux上zip的安装和使用

安装zip解压工具命令:yum install -y unzip zip解压命令:unzip xxx.zip;参考:https://www.iteye.com/blog/happyqing-1927098

2021-10-28 18:01:43 465

原创 mysql8创建数据库和用户

1.root账号登陆mysql:mysql -u root -p;输入密码后确认;2.创建数据库:create database xm_db;3.创建新用户:create user ‘xm_user’@’%’ identified by ‘Xm6666.’;(注意密码安全要求)授权:grant all privileges on xm_db.* to xm_user@’%’ with grant option;刷新权限:flush privileges;此时就完成了简单的数据库创建和新

2021-10-25 12:08:45 1994

空空如也

空空如也

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

TA关注的人

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