0%

odbc 的配置

相关技术栈:linux、mysql

安装配置之前,需要先大概了解一下 MyODBC 的架构,MyODBC 体系结构建立在 5 个组件上,如下图所示:

Driver Manager
负责管理应用程序和驱动程序间的通信,主要功能包括:解析 DSN (数据源名称,ODBC 的数据源名称在 odbc.ini 文件中配置),加载和卸载驱动程序,处理 ODBC 调用,将其传递给驱动程序。

ODBC.INI
odbc.ini 是 ODBC 配置文件,记录了连接到服务器所需的驱动信息和数据库信息xxxxxx。Driver Manager 将使用它来确定加载哪个驱动程序(使用数据源名 DSN )。驱动程序将根据指定的DSN来读取连接参数。

Connector/ODBC(MyODBC驱动程序)
实现 ODBC API 所提供的功能,它负责处理 ODBC 函数调用,将 SQL 请求提交给 MySQL 服务器,并将结果返回给应用程序。

在 Linux 下配置 mysql ODBC 需要有以下步骤:

1
2
3
1. 安装 Driver Manager,本案例使用 unixODBC 来作为 Driver Manager。
2. 安装 MySQL 驱动程序,本案例使用 Connector/ODBC。
3. 配置 ODBC.INI
阅读全文 »

redis

redis 简介

redis 是一个开源的使用 ANSI C 语言编写、基于内存亦可持久化日志型Key-Value 数据库,并提供了对多种编程语言的支持。

支持存储的 value 类型包括 string(字符串)、list(链表)、set (集合)、zset(sorted set –有序集合)和 hash(哈希),所以 redis 也被称为数据结构服务器。这些数据类型都支持 push/pop 、 add/remove 及取交集并集和差集等操作,且 redis 支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从(master-slave)同步。

redis 支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得 redis 可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。

阅读全文 »

OpenSSL

相关技术栈:linux、http/https、web

什么是 SSL?

SSL 是一个缩写,代表的是 Secure Sockets Layer(安全套接层)。它是支持在 Internet 上进行安全通信的标准,并且将数据密码术集成到了协议之中。数据在离开您的计算机之前就已经被加密,然后只有到达它预定的目标后才被解密。 底层实现是证书和密码学算法。

理论上,如果加密的数据在到达目标之前被截取或窃听,那些数据是不可能被破解的。不过,由于计算机的变化一年比一年快,而且密码翻译方法有了新的发展,因此,SSL 中使用的加密协议被破解的可能性也在增大。

可以将 SSL 和安全连接用于 Internet 上任何类型的协议,不管是 HTTP、POP3,还是 FTP。还可以用 SSL 来保护 Telnet 会话。虽然可以用 SSL 保护任何连接,但是不必对每一类连接都使用 SSL。如果连接传输敏感信息,则应使用 SSL。

什么是 OpenSSL?

OpenSSL 不仅仅是 SSL。它可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字

OpenSSL 不只是 API,它还是一个命令行工具。命令行工具可以完成与 API 同样的工作, 而且可以测试 SSL 服务器和客户机。

阅读全文 »

cJSON 的使用方法

JSON 格式简述

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。(来自“开源中国”资料)。

cJSON从名字可知,整个项目都是以极标准的C来写的,意思说,可以跨各种平台使用了。cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。

cJSON 开源项目位置:DaveGamble/cJSON
更加详细的解释和示例请查看主页

cJSON,目前来说,就只有两个文件,一个cJSON.c 一个cJSON.h文件。使用的时候,自己创建好一个main.c文件后,将头文件include进去。
如果是在linux pc上,请使用以下命令进行编译:

1
gcc  *.c  cJSON.c    -lm

记得编译时末尾链接libm库。

阅读全文 »

MQTT 协议

相关技术栈:linux、http/https、web

MQTT 协议的概念

MQTT协议,全称 Message Queue Telemetry Transport 消息队列遥测传输协议 ,是一种基于发布/订阅的轻量级通讯协议

适用于条件较差的网络环境,如:网络延迟高、带宽低、通信讯号不稳定等情况。

MQTT协议的特点

  • 构建于 TCP/IP 协议之上

TCP/IP参考模型可分为四层:应用层、传输层、网络层、链路层。TCP、UDP 协议均属于传输层,MQTT 运行与 TCP 之上,属于应用层协议,只要支持 TCP/IP 协议栈的地方都可应用 MQTT。

  • 基于 C-S 架构的消息发布/订阅,提供一对多的消息发布,作为客户端之间的中间介质,解除应用程序的耦合。
  • 对负载内容屏蔽的消息传输
  • 使用 TCP 连接进行数据推送
  • 三种消息发布 QoS
阅读全文 »

2019.05-2019.06 学习总结

[TOC]


阶段一:基础知识回顾

> C语言基础语法回顾:

变更代码习惯,转语言——“倒时差”

> 相关留存资料:

阅读全文 »

cmake 学习笔记

  • 最大的Qt4程序群(KDE4)采用cmake作为构建系统
  • Qt4的python绑定(pyside)采用了cmake作为构建系统
  • 开源的图像处理库 opencv 采用cmake 作为构建系统

看来不学习一下cmake是不行了,一点一点来吧,找个最简单的C程序,慢慢复杂化,试试看:

example description
例子1 单个源文件 main.c
例子2 ==>分解成多个 main.c hello.h hello.c
例子3 ==>先生成一个静态库,链接该库
例子4 ==>将源文件放置到不同的目录
例子5 ==>控制生成的程序和库所在的目录
例子6 ==>使用动态库而不是静态库
阅读全文 »

数据结构算法合集

第一部分:链表

  • 从一给定的顺序表L中删除下标i-j(i<=j,包括i,j)的所有元素,假定i,j合法。
1
2
3
4
5
6
7
8
9
//顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中,以数组的形式保存的线性表
void delete(SqList &L,int i,j){
int k, delta;
delta = j - i + 1;
for(k = j + 1; k < L.length; ++k){
L.data[k - delta]=L.data[k];
}
L.length -= delta;//最后要更新顺序表的表长
}
  • 有一顺序表L,其元素为整型数据,设计一个算法,将L中所有小于表头元素的数据放在前半部分,大于表头元素的数据放在后半部分。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void move(SqList &L){
int temp;
int i = 0, j = L.length - 1;
temp = L.data[0];
while(i < j){
while(i < j&& L.data[j] > temp) --j;
if(i < j){
L.data[i] = L.data[j];
++i;
}
while(i < j&& L.data[i] < temp) ++i;
if(i < j){
L.data[j] = L.data[i];
--j;
}
}
L.data[i] = temp;
}
阅读全文 »

最新入口

121. 买卖股票的最佳时机

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

注意:你不能在买入股票前卖出股票。

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

阅读全文 »

MySQL 使用规范

一、基本规范

  1. 使用 INNODB 存储引擎
  2. 表字符集使用 UTF8,如遇到 EMOJI 等表情符号的存储需求,可申请使用 UTF8MB4 字符集
  3. 所有表都需要添加注释
  4. 单表数据量建字符类型居多的表建议控制在 3000W 以内整型居多的表建议控制在 5000W 以内
  5. 不在数据库中存储图⽚、文件等大数据
  6. 禁止在线上做数据库压力测试
  7. 禁⽌从测试、开发环境直连数据库

二、命名规范

  1. 库名、表名、字段名必须有固定的命名长度,12个字符以内
  2. 库名、表名、字段名禁⽌使⽤ MySQL 保留字,比如订单表不要直接叫做order
  3. 临时库、临时表,命名必须以 tmp 为前缀,并以⽇日期为后缀
  4. 备份库、备份表,命名必须以 bak 为前缀,并以日期为后缀
阅读全文 »