解压安装包至指定文件目录,目录名不能为中文

在bin目录下有两个执行文件:
mysql.exe #mysql的客户端
mysqld.exe #mysql的服务端

win + s 打开应用搜索
输入 cmd 搜索
以管理员身份打开终端

cd F:\MySQL\mysql-5.7.16-winx64\bin
mysqld --initialize-insecure #初始化代码
此时已经可以使用mysql数据库,但需要启动服务端和客户端两个终端,需要打开两个黑窗口。
进入bin目录下:
mysqld #打开服务端
mysql -u用户名 -p密码 #打开客户端。
右击“我的电脑”>>>选择“属性”>>>选择“高级系统设置”>>>选择“环境变量”>>>选择系统变量中的Path变量>>>点击编辑>>>新建>>>将mysql的bin目录的绝对路径输进去>>>点击确定。



# 使用 管理员身份打开cmd
mysqld --install # 将msyql做成系统服务
net start mysql # 启动服务
如果设置失败有可能是之前启动的mysqld服务端进程没有退出,需要先将进程退出
# 查看一个具体的进程
tasklist | findstr mysqld
# 杀死进程
taskkill /F /PID
mysqladmin -uroot password 123456
在bin目录下创建my.ini文件,并输入如下内容保存:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
user=root
password=123456
default-character-set=utf8
重启服务即可。
创建数据库:
create database 库名;
create database 库名 charset 编码语言;
查询数据库:
show databases;#查看所有数据库
select database();#查看当前使用的库
show create database db1;# 查询创建的数据库的语法
修改数据库编码:
alter database 库名 charset 编码类型;
删除数据库:
drop database 库名;
指定当前使用的数据库:
use 库名
1、整数型:
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
|---|---|---|---|---|
| TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
| SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
| MEDIUMINT | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
| NT或INTEGER | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
| BIGINT | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
2、浮点型:
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
|---|---|---|---|---|
| FLOAT | 4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度浮点数值 |
| DOUBLE | 8 Bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度浮点数值 |
| DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
float(255, 30) # 总共有255位 小数占用30位
double(255, 30) # 总共有255位 小数占用30位
decimal(65, 30) # 总共有65位 小数占用30位
| 类型 | 大小( bytes) | 范围 | 格式 | 用途 |
|---|---|---|---|---|
| DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
| TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
| YEAR | 1 | 1901/2155 | YYYY | 年份值 |
| DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| TIMESTAMP | 4 | 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
| 类型 | 大小 | 用途 |
|---|---|---|
| CHAR | 0-255 bytes | 定长字符串 |
| VARCHAR | 0-65535 bytes | 变长字符串 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| TEXT | 0-65 535 bytes | 长文本数据 |
| MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
| LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
| TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
| BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
| MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
| LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
char(4) # 超过四个字符直接报错 不够四个字符 空格补全
varchar(4) # 超过四个字符直接报错 不够有几个存几个
char 缺点:浪费空间 ;优点:存储都方便
varchar 优点:有点节省空间;缺点:存取的麻烦 他是不定长的
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。
enum:单选,enum()括号内为可选项
set:多选,set()括号内为可选项
create table studens(id int(8) primary key,name char(8) not null,sex enum('男','女') );
默认值:default
无符号类型:unsigned
不为空:not null
唯一:unique
主键:primary key
外键:foreign key…列名 references 表1(列名);外键用在一对多关系时,定在多的表中
create table dep(
id int primary key auto_increment,
dep_name char(16) not null,
dep_desc char(16) not null
);
create table emp(
id int primary key auto_increment,
name char(16) not null,
dpt_id int,
foreign key(dpt_id) references dep(id)
//同步删除
on delete cascade
//同步更新
on update cascade
);
自增:auto_increment
create table 表名(列名1 数据类型(数据类型宽度) 约束条件,列名2 数据类型(数据类型宽度) 约束条件···);
#例:
create table employer(id int(8),name char(20));
#整型括号里面的数字不是表示限制位数 是显示长度
#也就是说 如果数字没有超过8位 那么默认使用空格填充到8位
#如果数字超过了8位 有几位存几位
#char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。
查看当前数据库下所有表:
show tables;
查看表的结构:
DESC 表名;
alter table 表名 rename 新表名;
alter table 表名 add 列名 数据类型 约束条件,add 列名 数据类型 约束条件...;#添加列到最后面:
alter table 表名 add 列名 数据类型 约束条件 first;#添加列到最前面
alter table 表名 add 列名 数据类型 约束条件 after 已有的列名;#添加列到任意位置
alter table 表名 drop 列名;
alter table 表名 modify 列名 新数据类型;#修改列的数据类型:
alter table 表名 change 旧列名 新列名 新数据类型 新约束;#修改列的列名和数据类型:
drop table 表名;
语法:
insert into 表名 values (值1, 值2, 值3, 值3, ...., 值n);
insert intO 表名 values
(值1, 值2, 值3, 值3, ...., 值n),
(值1, 值2, 值3, 值3, ...., 值n),
(值1, 值2, 值3, 值3, ...., 值n);
insert into 表名(字段1,字段2, 字段3) values (值1, 值2, 值3);
注:插入数据的字段有几个,values后面的数据就要有几个。
update 表名 set 列名=新值 where 条件;
delete from 表名 where 条件;
SELECT * FROM TABLE1;#*表示查询表内所有列
SELECT 字段1,字段2,字段3 FROM TABLE1;#查询字段1,字段2,字段3内的内容
WHERE子句:通过一定条件运算条件进行数据的筛选、查询、删除、修改
select * from 表名 where 条件运算(运算符);
运算符:
加:+ ;减:- ;乘:* ;除:/ ;取整:DIV ;取余:MOD
SELECT 2+4; #加
>6
SELECT 6-4; #减
>2
SELECT 2*4; #乘
>8
SELECT 8/4; #除
>2
SELECT 10 DIV 4; #取整
>2
SELECT 10 MOD 3; #取余
>1
| 符号 | 描述 | 符号 | 描述 |
|---|---|---|---|
| = | 等于 | != | 不等于 |
| < | 小于 | <= | 小于等于 |
| > | 大于 | >= | 大于等于 |
| <> | 不等于 | <=> | 两边为NULL为1,否则为0 |
| BETWEEN…AND… | 在两数之间 | NOT BETWEEN…AND… | 不在两数之间 |
| IN | 在集合中 | NOT IN | 不在集合中 |
| IS NULL | 为空 | IS NOT NULL | 不为空 |
| 运算符 | 描述 | 运算符 | 描述 |
|---|---|---|---|
| NOT或! | 逻辑非 | AND | 逻辑与 |
| OR | 逻辑或 | XOR | 逻辑异或 |
| 运算符 | 描述 | 运算符 | 描述 |
|---|---|---|---|
| & | 按位与 | | | 按位或 |
| ^ | 按位异或 | ! | 取反 |
| << | 左移 | >> | 右移 |
**排序(ORDER BY):**按某列进行排序,默认排序方式升序(asc),降序为desc
select * from 表名 ORDER BY ID;#按id进行升序排序
select * from 表名 ORDER BY ID DESC;#按id进行降序排序
select * from 表名 where 条件 limit n;#显示n条数据
#可与OFFSET配合使用
select * from 表名 where 条件 limit n OFFSET M;#跳过M条数据,显示n条数据
OFFSET:跳过多少条数据。
SELECT IFNULL(A,B) AS somename;#如果A为空,则显示B,否则显示A。
SELECT post FROM EMPLOYEE GROUP BY post;#按post这列进行分组
HAVING子句:
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
| 函数 | 说明 | 函数 | 说明 |
|---|---|---|---|
| avg(列名) | 查该列的平均值 | sum(列名) | 查该列的和 |
| max(列名) | 查该列的最大值 | count(列名) | 查该列有数据的记录数 |
| min(列名) | 查该列的最小值 | group_concat() | 显示分组里的数据详情 |
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
select DISTINCT 列名 from 表名;
select 列名 from(select * from 表名 where 条件) as 替代名 where 替代名.条件;
select 列名 from 表名 where 列名>(select 列名 from表名 where 条件);
注:子查询作为一个值使用时需返回一个确定的值。
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
#注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
#注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
带有where的union语句:
SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;
列转行:case when
select name,sum(case when subject = '语文' then score else 0 end) '语文',
sum(case when subject = '数学' then score else 0 end) '数学',
sum(case when subject = '体育' then score else 0 end) '体育'
from student
group by name;
行转列:union
select *
from(
select t.name,'语文' as 'subject',
max(t.语文) as 'score'
from temp_student t
group by t.name
union
select t.name,'数学' as 'subject',
max(t.数学) as 'score'
from temp_student t
group by t.name
union
select t.name,'体育' as 'subject',
max(t.体育) as 'score'
from temp_student t
group by t.name
) s
order by s.name
;
ELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
外联接(OUTER JOIN)
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
**注释:**FULL OUTER JOIN 关键字返回左表(Websites)和右表(access_log)中所有的行,无论数据在左右表有没有匹配。
[mysql官方文档]:[https://www.mysqlzh.com/doc/116.html]
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'
不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。
mysql> SELECT SUBSTRING('Quadratically',5);
-> 'ratically'
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
-> 'barbar'
mysql> SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'
mysql> SELECT SUBSTRING('Sakila', -3);
-> 'ila'
mysql> SELECT SUBSTRING('Sakila', -5, 3);
-> 'aki'
mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
-> 'ki'
返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。这意味着 对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。
mysql> SELECT LENGTH('text');
-> 4
返回从字符串str 开始的len 最左字符。
mysql> SELECT LEFT('foobarbar', 5);
-> 'fooba'
从字符串str 开始,返回最右len 字符。
mysql> SELECT RIGHT('abc',1);
-> 'c'
返回字符串 str ,顺序和字符顺序相反。
mysql> SELECT REVERSE('abc');
-> 'cba'
返回字符串str, 以及根据最新字符集映射转化为大写字母的字符 (默认为cp1252 Latin1).
mysql> SELECT UPPER('Hej');
-> 'HEJ'
返回字符串 str 以及所有根据最新的字符集映射表变为小写字母的字符 (默认为 cp1252 Latin1)。
mysql> SELECT LOWER('QUADRATICALLY');
-> 'quadratically'
返回字符串 str 以及所有根据最新的字符集映射表变为小写字母的字符 (默认为 cp1252 Latin1)。
mysql> SELECT LOWER(‘QUADRATICALLY’);
-> ‘quadratically’
返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
返回字符串 str ,结尾空格字符被删去。
mysql> SELECT RTRIM('barbar ');
-> 'barbar'
返回字符串 str ,其引导空格字符被删除。
mysql> SELECT LTRIM(' barbar');
-> 'barbar'
DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
将当前日期按照’YYYY-MM-DD’ 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。
mysql> SELECT CURDATE();
-> '1997-12-15'
mysql> SELECT CURDATE() + 0;
-> 19971215
将当前时间以’HH:MM:SS’或 HHMMSS 的格式返回, 具体格式根据函数用在字符串或是数字语境中而定。
mysql> SELECT CURTIME();
-> '23:50:26'
mysql> SELECT CURTIME() + 0;
-> 235026
这些函数执行日期运算。 date 是一个 DATETIME 或DATE值,用来指定起始时间。 expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。 type 为关键词,它指示了表达式被解释的方式。
关键词INTERVA及 type 分类符均不区分大小写。
基本语法:
索引名一般为:字段名_index
#1创建表时,进行添加
CREATE TABLE tb1 (`id` INT PRIMARY KEY,`name` VARCHAR(32));
#2创建完表后添加主键索引
ALTER TABLE tb1 ADD PRIMARY KEY (id);
#方法一:
CREATE UNIQUE INDEX 索引名 ON 表名 (列名);
#方法二:
ALTER TABLE 表名 ADD UNIQUE INDEX 索引名 (列名);
#方法一:
CREATE INDEX 索引名 ON 表名 (列名);
#方法二:
ALTER TABLE 表名 ADD INDEX 索引名 (列名);
基本语法:
#删除普通索引或者唯一索引
#法一:
DROP INDEX 索引名 ON 表名;
#法二
ALTER TABLE 表名 DROP INDEX 索引名;
#删除主键索引:
ALTER TABLE 表名 DROP PRIMARY KEY;
SHOW INDEXES FROM 表名;
事务用于保证数据的一致性,它是由一组相关的dml(增删改)语句组成,该组的dml语句要么全部成功,要么全部失败。
事务和锁:
当执行事务操作时(dml语句),mysql会在表上加锁防止其他用户修改表的数据。
#开启事务
start transaction;
#或者
set autocommit=off;
#设置保存点:
savepoint 保存点名;
#回退事务到某个保存点
rollback to 保存点名;
#回退所有事务
rollback
#提交事务(结束事务),不能再回退。
commit
| 事务隔离级别 | 脏读 | 不可重复读 | 幻读 | 是否加锁 |
|---|---|---|---|---|
| 读未提交(ED) | ✔ | ✔ | ✔ | ✘ |
| 读提交(READ COMMITTED) | ✘ | ✔ | ✔ | ✘ |
| 重复读(REPEATABLE READ) | ✘ | ✘ | ✘ | ✘ |
| 可串行化(SERIALIZABLE) | ✘ | ✘ | ✘ | ✔ |
事务隔离级别操作指令:
#1、查看当前会话的隔离级别
select @@tx_isolation;
#2、查看系统当前隔离级别
select @@global.tx_isolation;
#3、设置当前会话隔离级别
set session transaction isolation level 隔离级别;
#4、设置系统当前隔离级别
set global transaction isolation level 隔离级别;
mysql 常用的三种存储引擎:InnoDB,MYISAM,MEMORY。
区别:
MYISAM不支持事务,也不支持外键,使用表级锁,但访问速度快。
InnoDB支持事务和外键,行级锁,但是写的处理效率差,并且会占用更多的磁盘空间以保留数据和索引。
MEMORY使用内存来存储表,每个memory表实际对应一个磁盘文件,存在内存中没用io读写,访问非常快,但是一旦服务关闭,表中的数据就会丢失,保留表结构。
| 特点 | MYISAM | InnoDB | Memory |
|---|---|---|---|
| 批量插入的速度 | 高 | 低 | 高 |
| 事务安全 | 支持 | ||
| 全文索引 | 支持 | ||
| 锁机制 | 表锁 | 行锁 | 表锁 |
| 存储限制 | 无 | 64TB | 有,基于内存 |
| B树索引 | 支持 | 支持 | 支持 |
| 哈希索引 | 支持 | 支持 | |
| 集群索引 | 支持 | ||
| 数据缓存 | 支持 | 支持 | |
| 索引缓存 | 支持 | 支持 | 支持 |
| 数据可压缩 | 支持 | ||
| 空间使用 | 低 | 高 | |
| 内存使用 | 低 | 高 | 中 |
| 支持外键 | 支持 |
指定存储引擎操作指令:
创建表时指定存储引擎,可使用ENGINE参数:
CREATE TABLE students(
id int,
name char
) ENGINE = InnoDB;
更改已有表的存储引擎,可使用ALTER TABLE语句:
ALTER TABLE students ENGINE = MyISAM;
安装pymysql模块
pip install pymysql
导入pymysql模块
import pymysql
连接数据库(pymysql.connect):
import pymysql
#连接数据库
conn = pymysql.connect(
user='root',
password='123456',
host='127.0.0.1', #服务器ip地址
database='practice',#数据库名字
port=3306,#端口号
charset='utf8'
)
cursor = p.cursor(pymysql.cursors.DictCursor)#创建sql语句执行光标对象
sql = 'select * from workers;'
#执行sql语句
res = cursor.execute(sql)
print(cursor.fetchall())#获取所有行
创建sql语句执行光标对象(conn.cursor):
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po