数据库设计三大范式

## 范式是什么 规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。

事务的四种隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。

deepin 执行 sudu 不需要密码设置介绍

### 介绍 作为一款 linxu 桌面系统, deepin 还是挺符合开发需求的,但因为 linxu 系统中权限问题,大部分命令都得加上 sudo 执行,一次两次还好, 但用多了就不胜其烦,下面就来介绍如何修改 sudoers文件达到使用 sudo 不需要密码的效果。

thinkphp+queue+supervisor

### 1.thinkhphp安装queue扩展 我使用的是composer安装(composer安装地址:[https://pkg.phpcomposer.com](https://links.jianshu.com/go?to=https%3A%2F%2Fpkg.phpcomposer.com)) 直接在项目根目录运行 `composer require topthink/think-queue`

Github 的 Restful HTTP API 设计分解

Github 的 Restful HTTP API 设计分解
## 什么是 RESTful RESTful 是一种软件设计风格,由 [Roy Fielding](http://roy.gbiv.com/) 在他的 [论文](http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm) 中提出,全称为 `Representational State Transfer`,直译为`表现层状态转移`,或许可以解释为`用 URL 定位资源,用 HTTP 动词描述操作`,不用太纠结于定义,接下来我们会详细讨论。

Jetbrains 系列产品 2019.2.2 最新激活方法

大家熟知Jetbrains的话应该知道:他们家的所有产品升级到2018.2.1及以上版本后,先前可用的注册服务器都失效了,无法激活升级到最新版本体验最新黑科技。 这次要送的这份礼就是: Jetbrains全系列产品**2019.2.2**及以下版本(理论上适用于目前所有新老版本)最新注册服务器(License Server)的破解,可使用它来激活你手头上的Jetbrains IDE,具体支持产品和版本见下文的列表。

开发自己的 composer 包

开发自己的 composer 包
composer 是 PHP 用来管理依赖(dependency)关系的工具, 使用 composer 在业务中是非常常见的,比如使用 阿里 oss 的 sdk ,短信 sdk ,非常好用的微信sdk [*EasyWeChat*](https://www.baidu.com/link?url=wce7h59rCdF3R9KpqtjM07y9fL8BZBeL7F_TLTvgsP6sm2Y3d5fxEHmqb57s19bY&wd=&eqid=f2163e250011d462000000035d831eba) 都是使用composer 安装, 一个业务的形成就如同搭建积木一样,通过composer 引入各种组件完成,但很多 phper 依然不会开发自己的 composer 包(我也只是会用一下),下面是记录自己开发 composer 的过程。

PHP 伪异步实现 通过 CURL 实现 PHP 异步

介绍一种PHP通过`curl`实现`异步`处理的方式,目前应用在我的项目中,使用之前需要安装`php_curl`扩展 因为curl请求的接口是同一个项目里面的,所以用这种方式比较方便, 1. `curl_setopt($ch, CURLOPT_TIMEOUT, 1);` 将curl超时时间设置为1s介绍一种PHP通过`curl`实现`异步`处理的方式,目前应用在我的项目中,使用之前需要安装`php_curl`扩展

(转载) Laravel 最佳实践

### **单一职责原则** 一个类和一个方法应该只有一个责任。 例如: ``` public function getFullNameAttribute() { if (auth()->user() && auth()->user()->hasRole('client') && auth()->user()->isVerified()) { return 'Mr. ' . $this->first_name . ' ' . $this->middle_name . ' ' . $this->last_name; } else { return $this->first_name[0] . '. ' . $this->last_name; } } ```

(随笔) mysql count 和 union

myisam表使用count是非常快的,因为它的行数直接被系统存储起来了,当是加上条件后速度就慢了,比如查询id>1000的,总共几千万数据,这就非常慢了,这该如何优化呢,总数量 - id<1000的这就非常快了 group by 用以统计而不是去除重复数据,列需要索引统计需要分组,需要排序,沿着索引就是有序的 要想去重就要排序,排序就慢,用 union all

(随笔) mysql 优化 limit 过慢问题

> 在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦。 ### 当一个表数据有几百万的数据的时候成了问题! 如 select * from table limit 0,10 这个没有问题 当 limit 200000,10 的时候数据读取就很慢,可以按照一下方法解决 第一页会很快 PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇”EfficientPagination Using MySQL”的报告 limit10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,问题就在这里。

GOLANG 中 HTTP 包默认路由匹配规则

## 源码分析 我们知道最简单的建立http服务器代码基本上都是这样的: ```go http.HandleFunc('/', func(w http.ResponseWriter, r *http.Request){ fmt.Fprint(w, "Hello world") }) http.ListenAndServe(":8080", nil) ```

php 多进程读写同一个文件锁的问题及 flock 详解

php 多进程读写同一个文件锁的问题及 flock 详解
### 一、协同锁(advisory lock) 和 强制锁 (mandatory lock) 1、协同锁   协同锁要求参与操作的进程之间协同合作。假设进程“A”获得一个WRITE锁,并开始向文件中写入内容;此时,进程“B”并没有试图获取一个锁,它仍然可以打开文件并向文件中写入内容。在此过程中,进程“B”就是一个非合作进程。如果进程“B”试图获取一个锁,那么整个过程就是一个合作的过程,从而可以保证操作的“序列化”。   只有当参与操作的进程是协同合作的时候,协同锁才能发挥作用。协同锁有时也被称为“非强制”锁。 2、强制锁   强制锁不需要参与操作的进程之间保持协同合作。它利用内核来查检每个打开、读取、写入操作,从而保证在调用这些操作时不违反文件上的锁规则。