设计模式-1-单例模式
单例模式单例模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
[案例] 比如 Hibernate 的SessionFactory,它充当数据存储源的代理,并负责创建 Session 对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory 就够,这是就会使用到单例模式。
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决:一个全局使用的类频繁地创建与销毁。
何时使用:当您想控制实例数目,节省系统资源的时候。
如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
关键代码:构造函数是私有的。
使用场景:需要频繁的进行创建和销毁对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session 工厂等)
优点:
在内存里只有一个实例,减少了内存的开销,尤 ...
算法训练-LeetCode-1-50
两数之和LeetCode 1.两数之和
问题
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
哈希法
使用哈希Map,存储格式为<数值, 索引>。用哨兵i遍历数组,同时查找哈希表中是否含有target-nums[i],如果有,则返回答案。如果没有,则把当前遍历的元素<nums[i], i>存入哈希,继续遍历下一个元素即可
1234567891011121314// 哈希法public int[] twoSum(int[] nums, int target) { // 定义哈希 Map<Integer, Integer> map = new HashMap<>(); for (int sentinel = 0; sentinel < nums.length; sentinel++) ...
Linux基础学习篇-1-Linux的规则与安装
主机规划与磁盘分区各种硬件设备在Linux中的文件名
常见目录
目录
含义
/bin
Binary的缩写,用来存二进制可执行文件,并且比较特殊的是/bin存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd等常用指令
/sbin
Super User的意思,存放一些只有root用户才有权限执行的可执行文件,如init,ip,mount等命令
/boot
主要存放开机时用到的引导文件,如linux内核文件和开机菜单与开机所有需要的配置文件
/dev
device,任何设备都以文件的形式存放在这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备
/etc
包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭shell脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有root管理员有权利修改
/home
系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为 ...
设计模式-0-概述
设计模式七大原则
目的
设计模式是为了让程序(软件),具有更好代码重用性、可读性、可扩展性、可靠性、使程序呈现高内聚、低耦合的特性
原则
单一职责原则
接口隔离原则
依赖倒转(倒置)原则
里氏替换原则
开闭原则
迪米特法则
合成复用原则
单一职责原则
基本介绍
对类来说应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责2。当职责1需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2
注意事项
降低类的复杂度,一个类只负责一项职责
提高类的可读性,可维护性
降低变更引起的风险
通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则
接口隔离原则
基本介绍
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上
存在问题
类 A 通过接口 Interface1 依赖类 B,类 C 通过接口 Interface1 依赖类 D,如果接口Interface1 对于类A和类C来说不 ...
Redis-1-基础篇
初识 RedisNoSQLNoSql 可以翻译做 Not Only Sql(不仅仅是SQL),或者是 No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为 非关系型数据库。
结构化与非结构化
传统关系型数据库 是 结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束:
而 NoSql 则对数据库格式 没有严格约束,往往形式松散,自由。
可以是键值型:
可以是文档型:
可以是图格式:
关联和非关联
传统数据库的表与表之间往往存在关联,如外键。而非关系型数据库 不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合
123456789101112131415161718{ id: 1, name: "张三", orders: [ { id: 1, item: { id: 10, title: "荣耀6", price: 4999 ...
Linux QuickStart
Linux 目录结构Linux 中一切皆文件
Linux 目录结构
目录
含义
/bin
用来存二进制可执行文件,并且比较特殊的是/bin存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd等常用指令
/sbin
存放一些只有root用户才有权限执行的可执行文件,如init,ip,mount等命令
/boot
主要存放开机时用到的引导文件,如linux内核文件和开机菜单与开机所有需要的配置文件
/dev
任何设备都以文件的形式存放再这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备
/etc
配置文件、启动脚本等(etc)包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭shell脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有root管理员有权利修改
/home
系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为名称的目录作为该用户的家 ...










