太阳落下


  • 首页

  • 归档

  • 标签

  • 关于

【转】五种常见的开源协议整理

发表于 2018-06-07

来源: http://yansu.org/2013/04/23/opensource-licenses.html

简介

开源软件(Open source software)对我们来说越来越不陌生,开源软件一方面让我们免费享用到了“免费的午餐”,另一方面有效的利用和学习开源软件,也能促进我们开发软件时的效率、提升软件质量。但是在使用和借鉴开源软件的时候,我们不得不关心一下它对使用者的诸多限制,比较常见的方式即协议授权(licence),这些协议中明确说明了使用者应该遵循的原则。

现在开源协议众多,通过Open Source Initiative组织批准的开源协议有50多种,本文提到的五种常见协议也在其中,而且出现频率非常频繁,我们在使用开源代码或者开放自己源代码的时候,也应该尽量选择这些协议。

阅读全文 »

reStructuredText常用语法

发表于 2018-06-06

reStructuredText是一种标记语言,和markdown类似,但是能够提供比markdown更丰富的样式

标题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
==========
一级标题
==========
二级标题
==========
三级标题
----------
四级标题
^^^^^^^^^^^

字体样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
*这里是强调内容*
`这里是引用内容`
**这里是粗体内容**
``这里是等宽文本``
上标
E = mc\ :sup:`2`
下标
H\ :sub:`2`\ O
阅读全文 »

GitLab+sphinx+Readthedocs

发表于 2018-06-06

利用GitLab、sphinx、Readthedocs可以制作文档和博客,利用这种方式制作出来的博客更像一本书,能够结构化展示文章,比较适合笔记类
Gitlab用来存储代码
sphinx用来写博客
Readthedocs用来展示

安装 Sphinx

1
pip install sphinx

创建工程

1
2
3
mkdir mybook
cd mybook
sphinx-quickstart

输入工程名、作者名、版本号,分离source和build目录Separate source and build directories (y/N) [n]: y

build目录 运行make命令后,生成的文件都在这个目录里面
source目录 放置文档的源文件

阅读全文 »

MySQL存储引擎

发表于 2018-06-04

MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎,每种存数引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。

并发处理

并发控制

当多个连接对记录进行修改时保证数据的一致性和完整性。

锁

  • 共享锁(读锁):在同一时间内,多个用户可读取同一个资源,读取过程中数据不会发生任何变化。
  • 排他锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

锁的力度(锁颗粒–锁定时的单位)

  • 表锁,是一种开销最小的锁策略。对表进行写锁,所有用户不能对该表的任何记录操作。
  • 行锁,是一种开销最大的锁策略。并行性最大,可能对表的所有记录写锁,开销大。
阅读全文 »

MySQL自定义函数

发表于 2018-06-04

自定义函数

用户自定义函数(user-defined function, UDF)是一种对MySQL扩展的途径, 其用法与内置函数相同。

自定义函数的两个必要条件

  1. 参数:最多1024个任意类型的参数
  2. 返回值:任意类型

函数可以返回任意类型的值,同样可以接受这些类型的参数;
函数的参数与返回值之间,没有必然的联系。

创建自定义函数

1
2
3
4
CREATE FUNCTION function_name
RETURNS
{STRING|INTEGER|REAL|DECIMAL}
routine_body

routine_body是函数体

阅读全文 »

【Hexo】Hexo插入图片

发表于 2018-06-04

在写博客中添加图片是很正常的,这里列举了本人使用的两种方法

本地引用

当Hexo项目中只用到少量图片时,可以将图片统一放在source/images文件夹中,通过markdown语法访问它们。

1
![](/img/image.jpg)

要注意这是绝对路径

CDN引用

将图片上传到一些免费的CDN服务中。上传图片后,会生成对应的url地址,将地址直接拿来引用即可
参考七牛、cloudinary

阅读全文 »

MySQL子查询

发表于 2018-06-03

子查询

子查询是指出现在其他SQL语句内的SELECT子句

  • 子查询嵌套在查询内部,且必须始终出现在圆括号内。
  • 可以包含多个关键字或者条件,如DISTINCT、GROUP BY、ORDER BY、LIMIT、函数等
  • 外层查询可以是:SELECT、INSERT、UPDATE、SET或DO
  • 返回值:标量、一行、一列或者子查询
1
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

SELECT * FROM t1;称为Outer Query/外查询/Outer Statement
SELECT column1 FROM t2; 称为Sub Query/子查询

阅读全文 »

MySQL连接

发表于 2018-06-03

联合查询的效率比较高

连接

MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作
语法结构

1
2
3
4
table_reference A
{[INNER|CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN}
table_reference B
ON condition_expr

阅读全文 »

MySQL函数

发表于 2018-06-03
字符函数 函数名称 描述 举例 结果 CONCAT() 字符连接 SELECT CONCAT(‘a’,’-‘,’b’); a-b CONCAT_WS() 使用指定的分隔符进行字符连接 SELECT CONCAT_WS(‘ ‘,’A’,’B’,’C’); A B C FORMAT( ...
阅读全文 »

MySQL存储过程

发表于 2018-06-03

定义

存储过程是SQL语句与控制语句的预编译集合,以一个名称存储作为一个单元处理

输入SQL命令,MySQL引擎对命令进行分析,查看输入的语法是否正确,如果正确,再进行编译,编译成MySQL引擎可识别的命令,最后再进行执行,并将执行结果返回给客户端。

如果省略了语法分析和编译的阶段,则效率可提高。

存储过程:是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理(类似函数)。存储过程存储在数据库内,可以由应用程序调用执行,而且允许用户申明变量以及进行流程控制。存储过程可以接受输入类型的参数和输出类型的参数,并且可以存在多个返回值。只在第一次调用时进行语法分析和编译,以后的调用直接调用编译的结果,效率大大提高。

阅读全文 »
1…456…21

木鱼

207 日志
13 标签
RSS
© 2018 木鱼
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4