1 tibble包简介

  1. 包名: tibble
  2. 编码: UTF-
  3. 最新版本: 1.2
  4. 标题: 简单数据框
  5. 描述: 构建一个 'tbl_df' 类,可以比传统的R数据框提供更好的检查和打印功能。
  6. 作者: Hadley Wickham , Romain Francois ,Kirill Müller, RStudio
  7. URL: https://github.com/hadley/tibble
  8. 要求: R (>= )
  9. Github: https://github.com/hadley/tibble

  tibble包是一个轻量级的包,它实现的data.frame的重新塑造,保留了data.frame中经过实践证明有效的部分,吸取了专注于数据操作的dplyr包的基本思想。tibble包提供了更优于data.frame的性能,包括:打印,提取子集和因子操作。

tibble包内提供的主要函数:

名称

功能

as_tibble

强制转换lists和matrices为数据框(data.frame)

tibble

创建数据框(data.frame)或列表(list)

tribble

智能行(Row-wise)创建tibble

obj_sum/ type_sum/ tbl_sum

给出对象的简明摘要:对象类型和数据框大小

rownames

行名的操作工具(非常有用):可以提取行名为列或列为行名

has_name

检查命名元素的存在has_name(iris, "Species")

repair_names

修复对象的名称(如果没有命名则用V+i代替)

all_equal

数据框相等的柔性比较,忽略行和列的排列顺序

glimpse

有点像str(),主要是查看数据集的结构

enframe

将向量变为数据框

print.tbl_df

print(x,n)打印数据集x的前n行,默认为10行,有点像head()

add_column

给数据框添加列

add_row

给数据框添加行

is.tibble

检测对象是否为tibble

knit_print.trunc_mat

截断显示

2 安装和使用

2.1 安装

从CRAN安装:

  1. install.packages("tibble")

从github安装:

  1. # install.packages("devtools")
  2. devtools::install_github("hadley/tibble")

2.2 创建tibbles对象

可以利用as_tibble()函数将已经存在的对象(data.frame,list,matrix,or table)强制转为tibble对象:

  1. library(tibble)
  2. as_tibble(iris)
  3. #> # A tibble: ×
  4. #> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
  5. #> <dbl> <dbl> <dbl> <dbl> <fctr>
  6. #> 5.1 3.5 1.4 0.2 setosa
  7. #> 4.9 3.0 1.4 0.2 setosa
  8. #> 4.7 3.2 1.3 0.2 setosa
  9. #> 4.6 3.1 1.5 0.2 setosa
  10. #> 5.0 3.6 1.4 0.2 setosa
  11. #> 5.4 3.9 1.7 0.4 setosa
  12. #> 4.6 3.4 1.4 0.3 setosa
  13. #> 5.0 3.4 1.5 0.2 setosa
  14. #> 4.4 2.9 1.4 0.2 setosa
  15. #> 4.9 3.1 1.5 0.1 setosa
  16. #> # ... with more rows

也可以利用tibble()函数创建:

  1. tibble(x = :, y = , z = x ^ + y)
  2. #> # A tibble: ×
  3. #> x y z
  4. #> <int> <dbl> <dbl>
  5. #>
  6. #>
  7. #>
  8. #>
  9. #>
  10.  
  11. a <- :
  12. tibble(a, b = a * )
  13. ## # A tibble: ×
  14. ## a b
  15. ## <int> <dbl>
  16. ##
  17. ##
  18. ##
  19. ##
  20. ##
  21.  
  22. tibble(a, b = a * , c = )
  23. ## # A tibble: ×
  24. ## a b c
  25. ## <int> <dbl> <dbl>
  26. ##
  27. ##
  28. ##
  29. ##
  30. ##
  31.  
  32. tibble(x = runif(), y = x * )
  33. # # A tibble: ×
  34. # x y
  35. # <dbl> <dbl>
  36. # 0.7098188 1.4196377
  37. # 0.2790267 0.5580533
  38. # 0.2655437 0.5310874
  39. # 0.1237294 0.2474587
  40. # 0.9018147 1.8036293
  41. # 0.1594413 0.3188827
  42. # 0.2592028 0.5184056
  43. # 0.6570324 1.3140648
  44. # 0.8955551 1.7911102
  45. # 0.1940897 0.3881794
  46.  
  47. tibble(x = letters)
  48. # # A tibble: ×
  49. # x
  50. # <chr>
  51. # a
  52. # b
  53. # c
  54. # d
  55. # e
  56. # f
  57. # g
  58. # h
  59. # i
  60. # j
  61. # # ... with more rows
  62.  
  63. tibble(x = :, y = list(:, :, :))
  64. #> # A tibble: ×
  65. #> x y
  66. #> <int> <list>
  67. #> <]>
  68. #> <]>
  69. #> <]>

也可以使用tribble()函数一行一行的定义一个tibble对象:

  1. tribble(
  2. ~x, ~y, ~z,
  3. , 3.6,
  4. , 8.5
  5. )
  6. #> # A tibble: ×
  7. #> x y z
  8. #> <chr> <dbl> <dbl>
  9. #> a 3.6
  10. #> b 8.5

查看类型,最底层还是data.frame:

  1. class(as_tibble(iris))
  2. #> [] "tbl_df" "tbl" "data.frame"

2.3 添加行和列

  1. ### 添加行
  2. add_row(.data, ..., .before = NULL, .after = NULL)
  3. .data 要添加的数据框
  4. .before , .after 在哪行之前或之后添加该数据
  5. df <- tibble(x = :, y = :)
  6. df
  7. #> # A tibble: ×
  8. #> x y
  9. #> <int> <int>
  10. #>
  11. #>
  12. #> 1
  1. library(dplyr)
  2. df %>% add_row(x = 4, y = 0, .before = 2)
  3. #> # A tibble: 4 × 2
  4. #> x y
  5. #> <dbl> <dbl>
  6. #> 1 1 3
  7. #> 2 4 0
  8. #> 3 2 2
  9. #> 4 3 1
  10.  
  11. df %>% add_row(x = 4:5, y = 0:-1)
  12. #> # A tibble: 5 × 2
  13. #> x y
  14. #> <int> <int>
  15. #> 1 1 3
  16. #> 2 2 2
  17. #> 3 3 1
  18. #> 4 4 0
  19. #> 5 5 -1
  20.  
  21. add_row(df, x = 4)
  22. #> # A tibble: 4 <U+00D7> 2
  23. #> x y
  24. #> <dbl> <int>
  25. #> 1 1 3
  26. #> 2 2 2
  27. #> 3 3 1
  28. #> 4 4 NA
  1. ### 添加列
  2. add_column(.data, ..., .before = NULL, .after = NULL)
  3. .data 要添加的数据框
  4. .before , .after 在哪行=列之前或之后添加该数据
  5.  
  6. df %>%
  7. add_column(z = -:, w = )
  8. #> # A tibble: ×
  9. #> x y z w
  10. #> <int> <int> <int> <dbl>
  11. #> -
  12. #>
  13. #>
  14.  
  15. df %>%
  16. add_column(z = -:, .after = )
  17. #> # A tibble: ×
  18. #> x z y
  19. #> <int> <int> <int>
  20. #> -
  21. #>
  22. #>
  23.  
  24. df %>%
  25. add_column(w = :, .before = "x")
  26. #> # A tibble: ×
  27. #> w x y
  28. #> <int> <int> <int>
  29. #>
  30. #>
  31. #>

2.4 命名操作

2.4.1 rownames 行名的操作工具

  df  数据框

  var 用于rownames的列的名称

  has_rownames(df)  确定数据框是否有行名

  remove_rownames(df)  删除数据框的行名

  1. library(tibble)
  2. head(mtcars)
  3. ## mpg cyl disp hp drat wt qsec vs am gear carb
  4. ## Mazda RX4
  5. ## Mazda RX4 Wag
  6. ## Datsun
  7. ## Hornet Drive
  8. ## Hornet Sportabout
  9. ## Valiant
  10.  
  11. head(iris)
  12. ## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
  13. ## 5.1 3.5 1.4 0.2 setosa
  14. ## 4.9 3.0 1.4 0.2 setosa
  15. ## 4.7 3.2 1.3 0.2 setosa
  16. ## 4.6 3.1 1.5 0.2 setosa
  17. ## 5.0 3.6 1.4 0.2 setosa
  18. ## 5.4 3.9 1.7 0.4 setosa
  19.  
  20. has_rownames(mtcars)
  21. ## [] TRUE
  22.  
  23. has_rownames(iris)
  24. ## [] FALSE
  25.  
  26. has_rownames(remove_rownames(mtcars))
  27. ## [] FALSE
  28.  
  29. head(remove_rownames(mtcars))
  30. ## mpg cyl disp hp drat wt qsec vs am gear carb
  31. ##
  32. ##
  33. ##
  34. ##
  35. ##
  36. ##

  rownames_to_column(df, var = "rowname")  数据框的行名作为数据框的列,列名为rowname

  column_to_rownames(df, var = "rowname")  数据框的某列作为行名

  1. head(rownames_to_column(mtcars,"row2col"))
  2. ## row2col mpg cyl disp hp drat wt qsec vs am gear carb
  3. ## Mazda RX4
  4. ## Mazda RX4 Wag
  5. ## Datsun
  6. ## Hornet Drive
  7. ## Hornet Sportabout
  8. ## Valiant
  9.  
  10. mtcars_tbl <- as_tibble(rownames_to_column(mtcars))
  11. mtcars_tbl
  12. # # A tibble: ×
  13. # rowname mpg cyl disp hp drat wt qsec vs am
  14. # <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  15. # Mazda RX4
  16. # Mazda RX4 Wag
  17. # Datsun
  18. # Hornet Drive
  19. # Hornet Sportabout
  20. # Valiant
  21. # Duster
  22. # Merc 240D
  23. # Merc
  24. # Merc
  25. # # ... with more rows, and more variables: gear <dbl>, carb <dbl>
  26.  
  27. head(column_to_rownames(as.data.frame(mtcars_tbl)))
  28. ## mpg cyl disp hp drat wt qsec vs am gear carb
  29. ## Mazda RX4
  30. ## Mazda RX4 Wag
  31. ## Datsun
  32. ## Hornet Drive
  33. ## Hornet Sportabout
  34. ## Valiant
  35.  
  36. df <- rownames_to_column(mtcars,"row2col")
  37. column_to_rownames(df,"row2col")

2.4.2 has_name  检查数据框或者其他对象中是否存在指定命名元素,返回逻辑值(TRUE or FALSE)

  1. has_name(x, name)
  2. x 数据框或其他命名对象
  3. name 需检查的元素
  4.  
  5. has_name(iris, "Species")
  6. ## [] TRUE
  7.  
  8. has_name(mtcars, "gears")
  9. ## [] FALSE

2.4.3 repair_names 修复对象的名称(如果没有命名则用V+i代替)

  1. repair_names(x, prefix = "V", sep = "")
  2. x 命名的向量
  3. prefix 字符串,前缀,该前缀用于新列名
  4. sep 分隔符
  1. list(, , )
  2. # [[]]
  3. # []
  4. #
  5. # [[]]
  6. # []
  7. #
  8. # [[]]
  9. # []
  10.  
  11. repair_names(list(, , )) # works for lists, too
  12. # $V1
  13. # []
  14. #
  15. # $V2
  16. # []
  17. #
  18. # $V3
  19. # []
  20.  
  21. tbl <- as_tibble(structure(list(, , ), class = "data.frame"),validate = FALSE)
  22. tbl
  23. # A tibble: ×
  24. # ... with variables: <dbl>, <dbl>, <dbl>
  25. repair_names(tbl)
  26. # A tibble: <U+00D7>
  27. # ... with variables: V1 <dbl>, V2 <dbl>, V3 <dbl>
  28.  
  29. repair_names(list(,,),prefix = "new",sep = "-")
  30. # $``
  31. # []
  32. #
  33. # $``
  34. # []
  35. #
  36. # $``
  37. # []

2.5 其他函数

2.5.1 obj_sum/ type_sum/ tbl_sum  给出对象的简明摘要:对象类型和数据框大小

  1. obj_sum(x)
  2. # 如果is_s3_vector值为TRUE,也就是是S3类型的向量,同时返回对象的尺寸的对象数据类型
  3.  
  4. type_sum(x)
  5. # 给出对象类型简短摘要
  6.  
  7. tbl_sum(x)
  8. # 给出一个类似于表对象的简短的文字描述,包括维数,数据源,可能的组(for dplyr)
  9.  
  10. is_vector_s3(x)
  1. > obj_sum(:)
  2. # [] "int [10]"
  3.  
  4. > obj_sum(matrix(:))
  5. # [] "int [10 <U+00D7> 1]"
  6.  
  7. > obj_sum(Sys.Date())
  8. # [] "date [1]"
  9.  
  10. > obj_sum(Sys.time())
  11. # [] "dttm [1]"
  12.  
  13. > obj_sum(mean)
  14. # [] "fun"

2.5.2 all_equal  数据框柔性比较,忽略行和列的排列顺序

  当使用all.equal比较两个tbl_df,默认情况下行和列的顺序是被忽略的,并且类型也不是强制要求。

  1. all_equal(target, current, ignore_col_order = TRUE, ignore_row_order = TRUE, convert = FALSE, ...)
  2. "all.equal"(target, current, ignore_col_order = TRUE, ignore_row_order = TRUE, convert = FALSE, ...)
  3.  
  4. 参数:
  5. target, current 要比较的两个数据框
  6. ignore_col_order 是否需要忽略列顺序,默认为TRUE
  7. ignore_row_order 是否需要忽略行顺序,默认为TRUE
  8. convert 是否需要转换为相似的类型,默认为FALSE,如果为TRUE,会将因子factor转为字符character,整型integer double转为双精度浮点型
  9. ...
  1. # 对行号和列号进行采样,打乱行列顺序
  2. scramble <- function(x) x[sample(nrow(x)), sample(ncol(x))]
  3.  
  4. # 转为tbl-df类型
  5. mtcars_df <- as_tibble(mtcars)
  6.  
  7. # 默认情况下行列顺序是忽略的
  8. all.equal(mtcars_df, scramble(mtcars_df))
  9. # [] TRUE
  10.  
  11. # 修改默认行列顺序不被忽略
  12. all.equal(mtcars_df, scramble(mtcars_df), ignore_col_order = FALSE)
  13. # [] TRUE
  14.  
  15. all.equal(mtcars_df, scramble(mtcars_df), ignore_row_order = FALSE)
  16. # [] "Component “mpg”: Mean relative difference: 0.3503521"
  17. # [] "Component “cyl”: Mean relative difference: 0.4912281"
  18. # [] "Component “disp”: Mean relative difference: 0.5690846"
  19. # [] "Component “hp”: Mean relative difference: 0.5386953"
  20. # [] "Component “drat”: Mean relative difference: 0.1387415"
  21. # [] "Component “wt”: Mean relative difference: 0.3286861"
  22. # [] "Component “qsec”: Mean relative difference: 0.1222072"
  23. # [] "Component “vs”: Mean relative difference: 2"
  24. # [] "Component “am”: Mean relative difference: 2"
  25. # [] "Component “gear”: Mean relative difference: 0.32"
  26. # [] "Component “carb”: Mean relative difference: 0.8"
  27.  
  28. # 默认情况下all.equal对变量的差异很敏感
  29. df1 <- tibble(x = "a")
  30. df2 <- tibble(x = factor("a"))
  31. all.equal(df1, df2)
  32. # [] "Incompatible type for column x: x character, y factor"
  33.  
  34. all.equal(df1, df2,convert = TRUE)
  35. # [] "Factor levels not equal for column x"
  36. # Warning message:
  37. # Incompatible type for column x: x character, y factor

2.5.3 glimpse  有点像str(),主要是查看数据集的结构

  1. glimpse(x, width = NULL, ...)
  2. x glimpse的对象
  3. width 输出宽度:默认为tibble.width设定的宽度(如果有限)或者是控制台显示的宽度
  4.  
  5. glimpse(mtcars)
  6.  
  7. # Observations:
  8. # Variables:
  9. # $ mpg <dbl> ...
  10. # $ cyl <dbl> , , , , , , , , , , , , , , , , , , , , ,...
  11. # $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 140.8,...
  12. # $ hp <dbl> , , , , , , , , , , , , , ...
  13. # $ drat <dbl> ....
  14. # $ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3.150,...
  15. # $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 22.90,...
  16. # $ vs <dbl> , , , , , , , , , , , , , , , , , , , , ,...
  17. # $ am <dbl> , , , , , , , , , , , , , , , , , , , , ,...
  18. # $ gear <dbl> , , , , , , , , , , , , , , , , , , , , ,...
  19. # $ carb <dbl> , , , , , , , , , , , , , , , , , , , , ,...
  20.  
  21. if (!requireNamespace("nycflights13", quietly = TRUE))
  22. stop("Please install the nycflights13 package to run the rest of this example")
  23.  
  24. # install.packages("nycflights13")
  25.  
  26. glimpse(nycflights13::flights)
  27.  
  28. # Observations: ,
  29. # Variables:
  30. # $ year <, , , , , , , , ...
  31. # $ month <, , , , , , , , , , , , , , , , , ...
  32. # $ day <, , , , , , , , , , , , , , , , , ...
  33. # $ dep_time <, , , , , , , , , , ...
  34. # $ sched_dep_time <, , , , , , , , , , ...
  35. # $ dep_delay <dbl> , , , -, -, -, -, -, -, -, -, -, -, -,...
  36. # $ arr_time <, , , , , , , , , , ...
  37. # $ sched_arr_time <, , , , , , , , , , ...
  38. # $ arr_delay <dbl> , , , -, -, , , -, -, , -, -, ,...
  39. # $ carrier <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6"...
  40. # $ flight <, , , , , , , , , ...
  41. # $ tailnum <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N...
  42. # $ origin <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LG...
  43. # $ dest <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IA...
  44. # $ air_time <dbl> , , , , , , , , , , ...
  45. # $ distance <dbl> , , , , , , , , , ...
  46. # $ hour <dbl> , , , , , , , , , , , , , , , , , ...
  47. # $ minute <dbl> , , , , , , , , , , , , , , , ...
  48. # $ time_hour <dttm> -- ::, -- ::, --...

2.5.4 enframe 将向量变为数据框

  将元向量或者列表转为两列的数据框,如果元向量没有命名,使用自然序列命名列。

  1. enframe(x, name = "name", value = "value")
  2. x 元向量
  3. name,value 两列命名,默认分别为namevalue
  4.  
  5. enframe(:)
  6. # # A tibble: ×
  7. # name value
  8. # <int> <int>
  9. #
  10. #
  11. #
  12.  
  13. enframe(c(a = , b = ))
  14. # # A tibble: ×
  15. # name value
  16. # <chr> <dbl>
  17. # a
  18. # b

2.5.5 print.tbl_df

  print(x,n)打印数据集x的前n行,默认为10行,有点像head()

  描述矩阵的工具

  1. "print"(x, ..., n = NULL, width = NULL, n_extra = NULL)
  2.  
  3. trunc_mat(x, n = NULL, width = NULL, n_extra = NULL)
  4.  
  5. x 展示的对象
  6. n 要显示的行,如果为NULL(默认)并且行数小于tibble.print_max设定的值则会打印所有的行,否则会打印tibble.print_max设定的函数
  7. width 生成的文本的宽度默认为NULL,此种情况下和使用getOption("tibble.width")或者getOption("width")设定值;后者只显示适应屏幕的列。也可以设定options(tibble.width = Inf)来显示所有的列
  8. n_extra 整个tibble的宽度太小而打印的额外的信息,默认为NULL,会打印tibble.max_extra_cols作为额外的列信息
  1. trunc_mat(mtcars)
  2. # # data.frame [ × ]
  3. # mpg cyl disp hp drat wt qsec vs am gear carb
  4. # * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  5. #
  6. #
  7. #
  8. #
  9. #
  10. #
  11. #
  12. #
  13. #
  14. #
  15. # ... with more rows
  16.  
  17. print(as_tibble(mtcars))
  18. # # A tibble: ×
  19. # mpg cyl disp hp drat wt qsec vs am gear carb
  20. # * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  21. #
  22. #
  23. #
  24. #
  25. #
  26. #
  27. #
  28. #
  29. #
  30. #
  31. # ... with more rows
  32.  
  33. print(as_tibble(mtcars), n = )
  34. # # A tibble: ×
  35. # mpg cyl disp hp drat wt qsec vs am gear carb
  36. # * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  37. #
  38. # # ... with more rows
  39. print(as_tibble(mtcars), n = )
  40. # # A tibble: ×
  41. # mpg cyl disp hp drat wt qsec vs am gear carb
  42. # * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
  43. #
  44. #
  45. #
  46. # # ... with more rows
  47. print(as_tibble(mtcars), n = )
  48. # 全部打印
  49.  
  50. if (!requireNamespace("nycflights13", quietly = TRUE))
  51. stop("Please install the nycflights13 package to run the rest of this example")
  52.  
  53. print(nycflights13::flights, n_extra = )
  54. print(nycflights13::flights, width = Inf)

2.5.6 is.tibble 检测对象是否为tibble

  1. is.tibble(x)
  2. is_tibble(x)

参考链接:http://www.rdocumentation.org/packages/tibble/versions/1.2

本文链接:http://www.cnblogs.com/homewch/p/5827928.html

tibble包:高效显示表格数据的结构的更多相关文章

  1. 接收Android数据 递归显示表格数据

    <html> <head> <title>展示</title> <script type="text/javascript" ...

  2. MySQL在控制台上以竖行显示表格数据

    直接在SQL语句后面加\G即可,如: select * from user limit 10\G; 如果想要知道这些参数可以直接在命令行后面加入\?

  3. jxl读取Excel表格数据

    调用jxl包实现Excel表格数据的读取,代码如下: import java.io.File; import java.io.IOException; import java.util.ArrayLi ...

  4. SSM_CRUD新手练习(9)显示分页数据

    我们已经做好了用来显示数据的分页模板,现在只需要将我们从后台取出的数据填充好,显示出来. 我们使用<c:forEach>标签循环取出数据,所以需要先导入JSTL标签库 <%@ tag ...

  5. easyui学习笔记7—在手风琴中显示表格

    在这一篇中我们看看如何在手风琴里面显示表格数据的. 1.先看看引用的资源 <link rel="stylesheet" type="text/css" h ...

  6. 如何在iOS地图上高效的显示大量数据

    2016-01-13 / 23:02:13 刚才在微信上看到这篇由cocoachina翻译小组成员翻译的文章,觉得还是挺值得参考的,因此转载至此,原文请移步:http://robots.thought ...

  7. [ios3-地图] 如何在iOS地图上高效的显示大量数据 [转]

    [转至:http://blog.csdn.net/pjk1129/article/details/17358337] 原文:How To Efficiently Display Large Amoun ...

  8. R语言数据分析利器data.table包 —— 数据框结构处理精讲

        R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理 ...

  9. DT包 -- R语言中自定义表格数据

    DT 包提供了 JavaScript 库 DataTables 的一个R接口,它使得R对象(矩阵或数据框)可以在HTML页面上显示为表格. 该包的DataTables函数生成的表格提供了数据的筛选.分 ...

随机推荐

  1. 深入理解springAOP

    概念:AOP(Aspect-Oriented Programming)即面向切面编程.它是对传统的OOP(面向对象)编程的一种补充,在OOP中往往一个对象有什么行为我们就定义什么方法,对象与对象之间存 ...

  2. Solr学习总结(七)Solr搜索引擎的整体架构

    经过前面一段时间的努力,终于把我所知道的关于solr 的内容都总结完了.前面讲到了solr 的安装配置,web管理后台的使用,solr 的查询参数和查询语法,还说到了solr的客户端 solrnet  ...

  3. [NHibernate]组件之依赖对象

    目录 写在前面 文档与系列文章 组件之依赖对象 一个例子 总结 写在前面 周一至周四一直在成都出差,也一直没有更新博客了,一回到家第一件事就是扒一扒最近博客园更新的文章,然后把想看的收藏了,大概有20 ...

  4. PHP函数call_user_func和call_user_func_array详解

    今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的: call_user_func_array (P ...

  5. idea之resource配置

    1.问题 在idea中配置springmvc项目,用hibernate管理数据库,在web.xml中作如下配置: <!--配置hibernate数据库连接--> <listener& ...

  6. Site Not Found

    http://moofx.it/ Site Not Found http://www. suchso.com /code/ace/gallery.html http://demo.rocketthem ...

  7. 【Python基础学习六】函数

    1.创建函数 Python中函数的关键字def来定义. def fibs(num): f=[0,1] for i in range(1,num): f.append(f[-1]+f[-2]) retu ...

  8. python pickle

    >>> import pickle >>> m_list=[',2,'asa'] >>> m_list [', 2, 'asa'] >> ...

  9. Java批量文件打包下载

    经常遇到选择多个文件进行批量下载的情况,可以先将选择的所有的文件生成一个zip文件,然后再下载,该zip文件,即可实现批量下载,但是在打包过程中,常常也会出现下载过来的zip文件中里面有乱码的文件名, ...

  10. Servlet 之 GenericServlet

    我们都知道javaweb中servlet的三大组件 servlet filter listener 实现动态资源的  是可以继承  Servlet接口,或者集成GenericServlet .Http ...