- 博客(70)
- 收藏
- 关注
原创 vim使用技巧
举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。移动到这个档案的第 n 行。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用):1,$s/word1/word2/gc 或 :%s/word1/word2/gc。:1,$s/word1/word2/g 或 :%s/word1/word2/g。
2024-08-02 00:12:28
445
1
原创 Redis哨兵模式
项目中用到了Redis的主从模式,但是需要程序自己进行主机和备机的切换以及故障转移,并且每次执行命令,需要判断主备机,再进行操作,十分繁琐。因此决定采用Redis哨兵模式,采用一主二从三哨兵的模式。
2024-07-14 16:42:54
1122
1
原创 Redis-Sentinel哨兵
Redis Sentinel可以通过心跳检测的方式监视多个主服务器以及它们属下的所有从服务器,并在某个主服务器下线时自动对其实施故障转移。
2024-03-14 21:18:06
1289
原创 Redis-复制功能
复制功能是Redis提供的多机功能中最基础的一个,这个功能是通过主从复制(master-slave replication)模式实现的,它允许用户为存储着目标数据库的服务器创建出多个拥有相同数据库副本的服务器,其中存储目标数据库的服务器被称为主服务器(master server),而存储数据库副本的服务器则被称为从服务器(slave server,或者称为replica)。
2024-03-14 17:52:14
1007
原创 Redis-发布与订阅
Redis的发布与订阅功能可以让客户端通过广播方式,将消息(message)同时发送给可能存在的多个客户端,并且发送消息的客户端不需要知道接收消息的客户端的具体信息。换句话说,发布消息的客户端与接收消息的客户端两者之间没有直接联系。
2024-03-14 12:07:39
541
原创 Redis-持久化
Redis与传统数据库的一个主要区别在于,Redis把所有数据都存储在内存中,而传统数据库通常只会把数据的索引存储在内存中,并将实际的数据存储在硬盘中。为了满足不同的持久化需求,Redis提供了RDB持久化、AOF持久化和RDB-AOF混合持久化等多种持久化方式以供用户选择。如果用户有需要,也可以完全关闭持久化功能,让服务器处于无持久化状态。
2024-03-13 21:23:38
1770
原创 Redis-自动过期
用户可以通过执行EXPIRE命令或者PEXPIRE命令为键设置一个生存时间(Time To Live, TTL):键的生存时间在设置之后就会随着时间的流逝而不断地减少,当一个键的生存时间被消耗殆尽时,Redis就会移除这个键。EXPIRE命令和PEXPIRE命令在生存时间设置成功时返回1;如果用户给定的键并不存在,那么命令返回0表示设置失败。当用户对一个已经带有生存时间的键执行EXPIRE命令或PEXPIRE命令时,键原有的生存时间将会被移除,并设置新的生存时间。
2024-03-13 17:28:55
638
原创 redis-操作数据库
一个Redis服务器可以包含多个数据库。在默认情况下,Redis服务器在启动时将会创建16个数据库:这些数据库都使用号码进行标识,其中第一个数据库为0号数据库,第二个数据库为1号数据库,而第三个数据库则为2号数据库,以此类推。Redis虽然不允许在同一个数据库中使用两个同名的键,但是由于不同数据库拥有不同的命名空间,因此在不同数据库中使用同名的键是完全没有问题的,而用户也可以通过使用不同数据库来存储不同的数据,以此来达到重用键名并且减少键冲突的目的。存储值命名空间redis的key的命名规范。
2024-03-13 16:51:29
1411
1
原创 设计模式总结
ConcreteHandler类,具体处理者类,处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理之,否则就将该请求转发给它的后继者。这个模版方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。只有一个User类和User操作类的时候,是只需要工厂方法模式的,但现在显然你数据库中有很多的表,而SQL Server与Access又是两大不同的分类,所以解决这种涉及到多个产品系列的问题,有一个专门的工厂模式叫抽象工厂模式。
2024-03-11 12:00:32
959
原创 设计模式-行为型模式-模版方法模式
模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。
2024-03-09 19:52:15
565
原创 设计模式-行为型模式-策略模式
策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
2024-03-09 19:41:43
662
原创 设计模式-行为型模式-观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
2024-03-09 17:19:49
756
原创 设计模式-行为型模式-备忘录模式
备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
2024-03-09 16:13:34
533
原创 设计模式-行为型模式-中介者模式
在这个例子中,ConcreteColleagueA和ConcreteColleagueB类通过ConcreteMediator类进行通信,而不需要它们之间相互知道或持有对方的引用。这就是中介者模式的核心思想:减少类之间的直接耦合,让它们通过中介者对象进行交互。中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2024-03-09 12:05:48
572
原创 设计模式-行为型设计模式-命令模式
命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
2024-03-08 23:44:07
744
原创 设计模式-行为型模式-职责链模式
在软件系统运行时,对象并不是孤立存在的,它们可以通过相互通信协作完成某些功能,一个对象在运行时也将影响到其他对象的运行。行为型模式(Behavioral Pattern)关注系统中对象之间的交互,研究系统在运行时对象之间的相互通信与协作,进一步明确对象的职责。职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
2024-03-08 22:35:45
541
原创 设计模式-结构型模式-享元模式
解决对象的开销问题,像围棋,一盘棋理论上有361个空位可以放棋子,那如果用常规的面向对象方式编程,每盘棋都可能有两三百个棋子对象产生,一台服务器就很难支持更多的玩家玩围棋游戏了,毕竟内存空间还是有限的。如果用了享元模式来处理棋子,那么棋子对象可以减少到只有两个实例。享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。
2024-03-06 19:49:40
554
原创 设计模式-结构型模式-外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
2024-03-01 23:46:56
744
原创 设计模式-结构模式-装饰模式
装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。
2024-03-01 21:25:04
665
原创 设计模式-结构型模式-组合模式
组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“部分—整体”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,又可以称为“部分—整体”(Part-Whole)模式,它是一种对象结构型模式。“当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。
2024-02-27 00:02:40
561
原创 设计模式-结构型模式-桥接模式
桥接模式(Bridge Pattern):将抽象部分与其实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。桥接模式用一种巧妙的方式处理多层继承存在的问题。桥接模式采用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。合成/聚合复用原则(CARP),尽量使用合成/聚合,尽量不要使用类继承。
2024-02-25 22:57:53
608
原创 设计模式-创建型模式-建造者模式
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。建造者模式一步一步地创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。
2024-02-24 22:27:55
644
原创 设计模式-创建型模式-原型模式
浅复制’,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。”对于引用类型的数据,比如类或者引用,会将原型生成的新实例指向被复制的实例,新旧实例的引用类型数据指向的是同一个。3、在简历类克隆方法中,通过先初始化工作简历类的构造方法创建新的简历类,再复制其它值类参数,最终返回深拷贝的简历类。工作经历类是简历类的成员变量,此为实现工作经历类的深拷贝。这个可以省略new的过程,不需要重新执行构造函数。
2024-02-22 22:31:09
751
原创 设计模式-创建型模式-抽象工厂模式
sqlServerFactory和AccessFactory都能查询部门表和用户表,选择sqlServerFactory采用sqlserver获取数据,选择AccessFactory采用Access获取数据。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。类比上图,猫工厂和狗工厂都能产生动物和食物,选择猫工厂产生猫和猫粮,选择狗工厂产生狗和狗粮。如果增加一个牛,需要添加牛工厂,牛,牛粮等才能实现。
2024-02-21 22:20:37
701
原创 设计模式-创建型模式-工厂方法模式
工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。弥补了简单工厂模式,每增加一个产品就增加一个分支的缺点,简单工厂不符合封闭-开放原则,工厂方法模式增加新的产品时,需要增加新的产品类与工厂类,不改变原有程序。
2024-02-21 21:28:43
699
原创 设计模式-创建型模式-简单工厂模式
简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。1 简单工厂模式代码。
2024-02-21 17:42:10
785
原创 设计模式-创建型模式-单例模式
创建型模式(Creational Pattern)关注对象的创建过程,是一类最常用的设计模式,每个创建型模式都通过采用不同的解决方案来回答3个问题:创建什么(What),由谁创建(Who)和何时创建(When)。
2024-02-21 17:22:28
985
原创 UML类图
UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明,而模式结构又是设计模式解法的核心组成部分。学一个设计模式,如果不能绘制和理解其结构图,基本上等于没学。
2024-02-21 16:11:53
387
原创 面向对象 设计原则
单一职责原则:类应该只有一个改变的理由;开放-封闭原则:类应该对扩展开放,对修改关闭;迪米特原则:只和朋友交谈;里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能;接口隔离原则:不能强迫用户去依赖那些他们不使用的接口;依赖倒转原则:针对接口编程,不针对实现编程;组合/聚合复用原则:多用组合,少用继承。
2024-02-19 22:47:10
925
原创 读写分离的利器——MySQL Proxy
MySQL Proxy是一个位于客户端和MySQL服务器端之间的程序,通过它可以实现监听和管理客户端与MySQL服务器端之间的通信,最大的作用是实现数据库的读写分离,从而达到负载均衡的目的。● --proxy-read-only-backend-addresses:该参数用来指定只读服务器的IP地址和端口号,如果代理多个服务器,可以用逗号分隔。● --proxy-backend-addresses:该参数用来指定MySQL服务器的IP地址和端口号,如果代理多个服务器,可以用逗号分隔。
2024-02-19 16:00:43
761
原创 MySQL Replication
MySQL Replication 是 MySQL 中的一个功能,允许从一个 MySQL 数据库服务器(称为主服务器或 master)复制数据和数据库结构到另一个服务器(称为从服务器或 slave)。这种复制是异步的,意味着从服务器不需要一直连接到主服务器。主服务器上的数据更改(如 INSERT、UPDATE、DELETE 语句)会被记录在一个叫做二进制日志(binary log)的特殊日志文件中。然后,从服务器可以连接到主服务器并读取这些更改,并在自己的数据库上应用这些更改。
2024-02-19 15:38:45
1103
原创 MySql性能优化
MySQL优化,一方面是找出系统的瓶颈,提高MySQL数据库整体的性能;另一方面需要合理的结构设计和参数调整,以提高用户操作响应的速度;同时还要尽可能节省系统资源,以便系统可以提供更大负荷的服务。在MySQL中,可以使用SHOW STATUS语句查询一些MySQL数据库的性能参数。其中,value是要查询的参数值,一些常用的性能参数如下:● Connections:连接MySQL服务器的次数。● Uptime:MySQL服务器的上线时间。● Slow_queries:慢查询的次数。
2024-02-18 23:41:26
835
原创 Mysql 日志
MySQL日志主要分为4类,使用这些日志文件,可以查看MySQL内部发生的事情。这4类日志分别是:● 错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。● 查询日志:记录建立的客户端连接和执行的语句。● 二进制日志:记录所有更改数据的语句,可以用于数据复制。● 慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。
2024-02-18 18:07:47
982
原创 Mysql 权限与安全管理
MySQL是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许的权限。MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。用户管理包括管理用户账户、权限等。
2024-02-18 14:21:53
1901
原创 Mysql 触发器
MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATAE和DELETE语句。
2024-02-17 22:23:14
795
原创 Mysql 视图
数据库中的视图是一个虚拟表。同真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据来自由定义视图查询所引用的表,并且在引用视图时动态生成。视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。视图还可以从已经存在的视图的基础上定义。视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。
2024-02-05 22:47:32
1369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人