- 博客(34)
- 资源 (10)
- 收藏
- 关注
原创 Redis数据持久化
什么是Redis持久化:持久化:将内存中的数据库状态固化到磁盘的过程。Redis默认配置包含16个database,dbid介于0和databases-1之间的数字,默认数据库是DB 0,可以使用select <dbid>在每个连接上选择一个不同的数据库,非空数据库以及它们包含的键值对统称为数据库状态。Redis是内存型数据库,运行时数据均在内存中,如果服务器宕机,那么数据将全部丢失。如何来保证Redis数据的安全性、完整性以及高可用,Redis数据的持久化机制功不可没。.
2021-09-27 10:53:36 275
原创 记一次磁盘写满导致mysql服务挂掉问题的排查过程
问题:测试环境13.113数据库服务器mysql服务不可用1、df -h检查服务器磁盘占用情况,发现磁盘占满,预计是导致mysql服务不可用的原因,通过清理没用的日志文件,重新启动mysql,发现服务可以正常启动。此时发现,空间占用还在以每小时2G的速度增加,显然是因为有某个进程在写入磁盘。下面进行空间优化及问题排查。2、du -h --max-depth=10 /* | awk '{ if($1 ~ /M/){split($1, arr, "M")}; if(($1 ~ /G/) || (
2021-08-04 08:11:56 1049
原创 Mysql行列转化实例
DROP TABLE IF EXISTS tmp_user;CREATE TABLE tmp_user( id INT (11) NOT NULL auto_increment, name VARCHAR(20) COMMENT '姓名', PRIMARY KEY (id))ENGINE = INNODB DEFAULT CHARSET = utf8;DROP TABLE IF EXISTS tmp_subject;CREATE TABLE tmp_subject( id INT (11.
2021-07-27 07:51:43 131
原创 Mysql分类排序sql
今天在生产环境遇到一个要求用sql统计某分类下产品个数排名的问题,记录如下:为屏蔽真实产品数据,用地域分类表及部分数据做记录。一、创建表结构CREATE TABLE `area_dic` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '' COMMENT '地区名称', `fid` int(10) unsigned NOT NULL DEFAULT '0',
2021-07-26 10:56:50 588
原创 Mysql查询优化
一、count()的优化它可以统计某个列值的数量,也可以统计行数。在统计列值的时候要求列值是非空的。如果希望知道的是结果集的行数,最好使用count(*),这样写意义清晰,性能会更好。如果mysql知道某列col不可能为null,那么mysql会将count(col)表达式优化为count(*)。MyISAM的count()函数快的前提是,没有任何where条件,这样mysql可以从统计表中直接获取count()值。当sql语句中带有where字句,MyISAM的count()和其他引擎没有任何
2021-07-26 09:15:52 105
原创 缓存及其分类
缓存:存储在计算机上的一个原始数据复制集。根据在软件系统中所处的位置不同,缓存可以分为:客户端缓存、网络层缓存和服务端缓存。根据部署方式不同,缓存可以分为:单体缓存、集群缓存、分布式缓存。1、客户端缓存1.1、页面缓存页面缓存是将之前访问过的页面,保存为本地文件,作为离线应用缓存。当用户再次访问时,可以避免网络连接,从而减少服务器及网络负载,提升性能和用户体验。HTML5中使用页面缓存的示例代码如下:localStorage.setItem(“key”,”value”)loc
2021-07-23 09:24:35 1777
原创 LNMP环境搭建(PHP)
1、安装依赖包[root@linux application]# yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y[root@linux application]# yum install freetype-devel libpng-devel gd-devel libcurl-devel livxslt-devel libxslt-devel -y[root@linu
2021-07-21 07:30:37 233
原创 LNMP环境搭建(Mysql主从复制)
基于两台虚机(IP地址不同128、129),配置主从复制。两台服务器上面都按照上面mysql部分,安装mysql,启动mysql服务;在128(主)服务器上配置过程编辑/etc/my.cnf文件[mysqld]server-id = 128log-bin=/application/mysql/data/mysql-bin创建用于主从复制的账号CREATE USER 'repl'@'%' IDENTIFIED BY '123456';GRANT REPLICAT...
2021-07-20 09:48:34 108
原创 LNMP环境搭建(Mysql)
1、安装1)创建mysql用户账号[root@linux tools]# groupadd mysql[root@linux tools]# useradd -s /sbin/nologin -g mysql -M mysql2)获取安装包本示例中,是在Windows下载好安装包,通过rz传输到Linux系统中的,包名:mysql-5.5.32-linux2.6-x86_64.tar.gz3)采用二进制方式安装mysql// 解压安装包[root@linux tools]#
2021-07-20 09:46:54 139
原创 LNMP环境搭建(Nginx配置及优化)
1、基于安全的优化1)隐藏版本信息在Nginx配置文件nginx.conf中的http标签内加入“server_tokens off;”。修改前:修改:重启nginx:[root@linux conf]# /application/nginx/sbin/nginx -s reload修改后:2)修改nginx源码,隐藏软件名及版本号,修改文件如下,修改后重新编译安装nginx。[root@linux conf]# vim /home/linux/tool.
2021-07-19 10:24:50 460
原创 LNMP环境搭建(Nginx)
1、安装nginx所需的pcre库[root@linux ~]# yum install pcre pcre-devel -y检查安装结果[root@linux ~]# rpm -qa pcre pcre-develpcre-devel-7.8-7.el6.x86_64pcre-7.8-7.el6.x86_642、检查依赖包[root@linux ~]# rpm -qa pcre-devel pcrepcre-devel-7.8-7.el6.x86_64pcre-7.8-
2021-07-19 10:14:06 228 2
原创 Java常用注解及其使用方法
@RequestMapping和@GetMapping、@PostMapping在类和方法的声明中使用,指定URL请求路径,作为请求的映射地址。参数:value:指定映射地址method:指定请求方式params:限制请求参数,实现过滤请求,不通过返回404错误Headers:限制前端发送过来请求的headers的内容示例:@RequestMapping("/user")public class UserController { @RequestMapping(path.
2021-07-19 10:06:02 874
原创 PHP-设计模式详解(命令模式)
命令模式(Command Pattern)介绍将请求封装成一个对象,从而用不同的请求对客户进行参数化。何时使用:对行为进行各种连续处理,对行为请求和实现进行解耦,将一组行为抽象为对象,实现二者之间的松耦合。优点:降低系统耦合,容易扩展缺点:可能会导致某些系统有过多的具体命令类。代码实现:<?phpclass CommandChain { private $_commands = array(); public function addCommand($cmd) {
2021-07-19 09:46:25 70
原创 PHP-设计模式详解(责任链模式)
责任链模式(Chain of Responsibility Pattern)介绍为请求创建了一个接收者对象的链,并沿这条链传递该请求,直到有对象处理它为止。何时使用:被调用者对调用者的请求分情况动态进行处理的情况下使用。优点:调用端不需要了解被调用端内部处理逻辑缺点:可能会造成循环调用代码实现:<?phpabstract class Handler{ private $next_handler ; private $lever = 0;
2021-07-16 09:02:20 117
原创 PHP-设计模式详解(代理模式)
代理模式(Proxy Pattern)介绍给某一个对象提供一个代理,并由代理对象控制对原对象的引用。何时使用:需要访问的对象不能直接访问,在该对象的外面加一层代理层,来控制对该对象的访问。优点:代理层的加入,协调调用者和被调用者,降低系统的耦合性; 调用端只和代理层进行交互,隐藏被调用段信息,加强安全性。缺点:在原对象层面添加了代理层,可能造成访问速度变慢。<?phpinterface Subject{ function say(); functio
2021-07-16 09:01:02 89
原创 LNMP环境搭建(Web服务基础)
1、DNS解析流程1)浏览器输入网址回车后,系统首先在本地DNS缓存及hosts文件中查找是否存在该域名对应的IP解析记录;2)客户端将解析请求发送给客户端本地设置的DNS服务器地址(LDNS)解析;3)LDNS将请求发送给根DNS服务器进行解析;4)DNS将解析结果返回给LDNS;5)LDNS通过DNS返回的解析记录,请求所在服务器进行访问;6)LDNS将DNS服务器及解析的IP记录发送给客户端浏览器,同时再本地把域名和IP 对应解析记录缓存起来。2、HTTP1)请求方法
2021-07-15 10:14:40 145
原创 PHP-设计模式详解(享元模式)
介绍运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。何时使用:系统中存在大量消耗大量内存的对象,并且这些对象可以按照某种特性简单的进行分组的。优点:减少对象的创建数量,降低内存消耗。缺点:提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。代码实现:<?phpinterface Flyweight{
2021-07-15 10:11:18 72
原创 PHP-设计模式详解(外观模式)
介绍为子系统的一组接口提供一个一致的对外接口,隐藏系统的复杂性。何时使用:定义系统的入口优点:减少系统依赖; 提高灵活性和安全性。缺点:不符合开闭原则,修改比较麻烦。代码实现:<?phpclass Run{ function sportRun(){ echo 'run<br>'; }}class Walk{ function sportWalk(){
2021-07-15 10:10:05 64
原创 Mysql中sql_mode使用详解
一、Sql_mode是什么?Sql_mode是一组mysql的语法校验规则,定义了mysql应该支持的sql语法、数据校验等。二、如何查看当前sql_mode配置?方法一:select @@sql_mode;方法二:select @@SESSION.sql_mode;方法三:select @@GLOBAL.sql_mode;三、如何设置sql_mode?1、通过命令设置SET sql_mode = '';SET SESSION sql_mode = '';SE
2021-07-13 10:18:38 21347 1
原创 LNMP环境搭建(Linux)
一、VMware创建虚拟机二、安装Linux系统三、配置网卡执行如下命令:ifup eth0,启动网卡; ifconfig eth0,查看获取的.
2021-07-13 08:50:00 251
原创 PHP-设计模式详解(装饰器模式)
装饰器模式(Decorator)介绍结构型模式,为现有对象添加新的功能(装饰),比子类方式更加灵活。何时使用:在不想增加很多子类的情况下扩展类。主类中新增加的内容只是在某些特殊的情况下才会执行,优点:改变原有代码的情况下对原有代码中的内容进行扩展,开放封闭原则; 每个装饰器完成自己的功能,单一职责。缺点:多层装饰比较复杂。代码实现:<?phpinterface MessageTemplate{ function message();}cla
2021-07-13 07:59:26 204
原创 PHP-设计模式详解(组合模式)
组合模式(Composite)介绍结构型模式,把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。何时使用:提现整体和部分层次结构,忽略组合对象和单个对象的不同,可以统一使用组合结构中的所有对象。优点:模块调用简单; 节点自由度增加。缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。代码实现:<?phpabstract class CompanyBase{ protec
2021-07-13 07:58:07 143
原创 mysql前缀索引和索引选择性
索引选择性:不重复的索引值和记录总数的比值索引选择性越高,查询效率越高,因为可以过滤掉更多的行如何确定前缀索引的长度?方法一:步骤一、查询来自同一城市的学生最多的10个城市的学生select count(1) as num ,cityname from student group by cityname order by num desc limit 10;步骤二、按照城市前几个字符,分别算来自这些城市最多的10个城市学生select count(1) as num ,left(ci
2021-07-09 10:17:35 157
原创 PHP-设计模式详解(桥接模式)
桥接模式(Bridge)介绍结构型模式,用来解耦抽象化与实现化,使二者可以独立变化。何时使用:多角度分类,每个角度都可能变化。优点:抽象和实现分离; 扩展能力强;缺点:需要对系统进行抽象,设计难度较高。注:桥接模式和适配器模式非常相似,但是,适配器模式是让两个不相关的类进行组合,让其协同工作,实现中间的转换。而桥接模式是让抽象层和具体实现层解耦,方便单独进行改变。代码实现<?phpinterface MessageTemplate{ func
2021-07-09 09:40:02 170
原创 PHP-设计模式详解(适配器模式)
适配器模式(Adapter)介绍结构型模式,提取多个不兼容类的相近方法构建接口,建立适配类实现接口。增减实现类的时候,不用修改调用端与适配器的交互代码,减少了代码间的耦合性。何时使用:现有类和新增的类相关性不大,需要用到部分相关代码的时候。优点:让多个没有关联的类一起运行; 提高类的复用; 增加类的透明度; 灵活定较好。缺点:过度的使用适配器,会让系统非常零乱。代码实现<?phpinterface Animal{ function getName();
2021-07-09 09:38:14 81
原创 分布式系统中的CAP理论
分布式系统中的CAP理论,是分布式系统的理论基础。描述:一个分布式系统中,最多只能满足C(一致性)、A(可用性)、P(分区容错性、分区性)三者中的两个。C、Consistency (一致性)所有节点或者副本的数据一致。(All the nodes see the same data at the same time.)从客户端来看,一致性是指,多次并发访问获取到的数据,准确并符合预期结果。从服务端来看,一致性是指,多次并发提交的请求,能够及时准确的同步到所有节点或者副本,需要考虑网络通信
2021-07-08 13:28:08 217
原创 mysql in变量值的处理方案
Mysql数据库中,在一个范围存查询数据时候,有时候我们会用到in例如:SELECT contract_code FROM ContractInfo WHERE contract_code IN ('ht123456','ht654321');很显然,这个查询没有任何问题,可以正确执行。那么,如果将'ht123456','ht654321'作为变量传递给mysql,mysql是否还能执行呢?SET @nu = "'ht123456','ht654321'";select cont
2021-07-08 11:31:08 1967
原创 PHP-设计模式详解(原型模式)
原型模式(Prototype)介绍创建型模式,原型模式有人形象的称其为克隆模式,通过拷贝已存在的对象来创建新的对象。何时使用:当new的对象很大,每次new耗费资源颇多的时候,可以采用原型模式进行创建。优点:A、提高性能;B、逃避构造函数的约束;缺点:对于已有的类进行克隆,需要考虑的代码实现:<?phpclass ChinaMobile{ public $system;}class Phone{ public $service_sy
2021-07-08 11:13:13 77
原创 PHP-设计模式详解(建造者模式)
建造者模式(Builder)介绍创建型模式,使用多个简单的对象一步一步构建成一个复杂的对象。何时使用:一些基本部件不会变,而其组合经常变化的时候。建造者模式一般认为有四个角色:A、产品角色,产品角色定义自身的组成属性B、抽象建造者,抽象建造者定义了产品的创建过程以及如何返回一个产品C、具体建造者,具体建造者实现了抽象建造者创建产品过程的方法,给产品的具体属性进行赋值定义D、指挥者,指挥者负责与调用客户端交互,决定创建什么样的产品优点:A、建造者独立,易扩展。B、便
2021-07-08 11:11:22 319
原创 PHP-设计模式详解(单例模式)
单例模式(Singleton)介绍创建型模式,保证一个类仅有一个实例,并提供一个它的全局访问点。何时使用:控制实例数量,节省系统资源的时候使用。优点:在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。缺点:没有接口,不能继承,与单一职责原则冲突。代码实现:<?phpclass Singleton{ private static $obj = null; private function __construct(){ } pub
2021-07-08 11:04:56 101
原创 PHP-设计模式详解(抽象工厂模式)
抽象工厂模式(Abstract Factory)介绍创建型模式,提供一个创建一系列相关或者相互依赖对象的接口,无需指定具体的类,将对象的创建抽象成一个接口。何时使用:系统中存在多个产品族,系统只消费其中的每一个产品族。优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。缺点:产品族扩展非常困难,要增加一个系列的某一产品。代码实现<?phpinterface people { function jiehun();}class
2021-07-08 10:56:20 65
原创 PHP-设计模式详解(工厂模式)
工厂模式(Factory)介绍:创建型模式,定义一个工厂类,在实例化类的时候,由调用类决定实例化哪个类,使其创建过程延迟到调用类进行。何时使用:不同条件下创建不同的实例。优点:调用者只需要知道对象的名称就可以创建对象; 扩展性高,新增一个产品,只要扩展一个工厂类即可; 屏蔽具体实现,调用者只关心接口。缺点:新增产品需要增加一个实现类和修改工厂类,增加系统的复杂度。代码实现:<?phpinterface Animal{function call();}
2021-07-08 10:50:04 98
原创 PHP-设计模式的六大原则
1、单一职责原则(Single Responsibility Principle,简称SRP ) 有且只有一个原因可引起类的变更。完成单一职责,用职责来衡量类设计是否优良。2、里氏替换原则(Liskov Substitution Principle,简称LSP) 子类可完美替换基类,只要父类可以出现的地方,子类就可以出现,反之父类未必可以替换子类。增强程序的健壮性,即使增加了子类,原有子类还可以继续运行。子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接...
2021-07-08 10:46:25 243
原创 PHP-设计模式类型
1、创建型模式:该类型模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)2、结构型模式:该类型模式关注类和对象的组合。继承的概念被用来组合接口和
2021-07-08 10:43:48 88
mongoDB入门与提高
2015-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人