php grepmatch,linux最快的文本搜索神器ripgrep(grep的最好代替者)

前言

说到文本搜索工具,大家一定会知道 grep, 它是 linux 最有用并最常用的工具之一。

但如果要再一个大的工程项目中搜索某个关键词,大家也一定知道它比较耗时。

所以就有了很多替代工具,之前最出名的是 Ack,Ag

而最近又有了新的替代者 Ripgrep, 这个工具和 Ack/Ag 一样都使用了多线程的方法,但 rg 比它们更快

简介

ripgrep 是一个以行为单位的搜索工具, 它根据提供的 pattern 递归地在指定的目录里搜索。它是由 Rust 语言写成,相较与同类工具,它的特点就是无与伦比地快。

几个特点如下:

自动递归搜索 (grep 需要-R)

自动忽略.gitignore 中的文件以及 2 进制文件

可以搜索指定文件类型(rg -tpy foo限定 python 文件, rg -Tjs foo排除 js 文件)

支持大部分 grep 的 feature(常用的都有)

支持各种文件编译(UTF-8, UTF-16, latin-1, GBK, EUC-JP, Shift_JIS 等等)

支持搜索常见压缩文件(gzip, xz, lzma, bzip2, lz4)

自动高亮匹配的结果

更少的命令名称 rg (grep 是四个字符)

不支持多行搜索和花哨的正则

安装 ripgrep

先安装 RUST

curl https://sh.rustup.rs -sSf | sh

然后一路 enter 就好了

用 RUST 安装 rigpre

git clone https://github.com/BurntSushi/ripgrep

cd ripgrep

cargo build --release

cp ./target/release/rg /usr/local/bin/

最后一步根据你的情况把它放到某个在 PATH 里的路径里

使用

搜索结果展示

880d5c6a36f8ff42f8c28e1af0be1062.png

用法总体格式

USAGE:

rg [OPTIONS] PATTERN [PATH ...]

rg [OPTIONS] [-e PATTERN ...] [-f PATTERNFILE ...] [PATH ...]

rg [OPTIONS] --files [PATH ...]

rg [OPTIONS] --type-list

command | rg [OPTIONS] PATTERN

输入参数

ARGS:

A regular expression used for searching. To match a pattern beginning with a

dash, use the -e/--regexp flag.

For example, to search for the literal '-foo', you can use this flag:

rg -e -foo

You can also use the special '--' delimiter to indicate that no more flags

will be provided. Namely, the following is equivalent to the above:

rg -- -foo

...

A file or directory to search. Directories are searched recursively. Paths specified on

the command line override glob and ignore rules.

options

Description

other

-A, --after-context

显示匹配内容后的行

会覆盖--context

-B, --before-context

显示匹配内容前的行

会覆盖--context

-b, --byte-offset

显示匹配内容在文件中的字节偏移

和-o 一起使用,只打印偏移

-s, --case-sensitive

大小写敏感

会覆盖-i(ignore case), -S(smart case)

--color

什么时候使用颜色,默认 auto

如果--vimgre 被使用,那么默认值是 never

可选项有: never, auto, always, ansi

--colors ...

设定输出颜色:

color: red, blue, green, cyan

{type}:{attribute}:{value}

magenta, yellow, white, black

{type}: path, line, column, match

style: nobold, bold, nointense

{attribute}: fg, bg, style

intense, nounderline, underline

{value}: a color or a text style

Example:

{type}:none会清空{type}的颜色设定

rg --colors 'match:fg:magenta' --colors 'line:bg:yellow' foo

扩展颜色集可以被{value}使用,如果终端支持 ANSI color

描述方法是'x'(256-color) 或 'x,x,x'(24-bit true color)

x 是 0-255 之间的数值,默认是 10 进制, 0x 前缀是 16 进制

比如: rg --colors 'match:bg:0,128,255'

或者等价的:rg --colors 'match:bg:0x0,0x80,0xFF'

在使用 extended color code 时 intense 和 nointense 是无效的

--column

第一次匹配所在列数(从 1 开始)

能够被--no-column 取消掉

-C, --context

显示匹配内容的前面和后面的行

它会覆盖-B 和-A 选项

--context-separator

在输出中用来分隔非连续的行

x7F 或t 可被使用,默认是--

-c, --count

只显示匹配的行数

如果只有一个文件给 ripgrep,那只打印匹配行数

可以用--with-filename 来强制打印文件名

它会覆盖--count-matches 选项

--count-matches

只显示匹配的次数

可以用--with-file 来强制在只有一个文件时也输出文件名

--debug

显示调试信息

--dfa-size-limit

regex DFA 的上限, 默认 10M

-f, --file ...

从文件中读入 pattern, 一行一 pattern

可以被多次使用或和-e 一起组合使用,所以有组合会被匹配

--files

打印所有将被搜索的文件

以rg --files [PATH...]方式使用,不能加 pattern

-l, --files-with-matches

只打印有匹配的文件名

覆盖--files-without-match

--files-without-match

只打印无匹配的文件名

覆盖 --file-with-matches

-F, --fixed-strings

把 pattern 当成常规文字而非 regex

可以用--no-fixed-strings 来禁止这个选项

-L, --follow

会递归搜索链接,默认关闭

可以用--no-follow 来关闭

-g, --glob ...

通配符文件或文件夹,可以用!来取反

可以多次使用, 会匹配.gitignore 的通配符规则

-h, --help

打印帮助信息

--heading

打印文件名到匹配内容的上方而不是同一行

这是默认行为,可以用--no-heading 来关闭

--hidden

搜索隐藏文件和文件夹

默认忽略, 可用--no-hidden 关闭

--iglob ...

同--glob, 但这个大小写不敏感

-i, --ignore-case

pattern 大小写不敏感

可通过-s/--case-sensitive 或-S/--smart-case 覆盖这个选项

--ignore-file ...

忽略路径,格式同.gitignore, 可多个

多个--ignore-file 标记时,后面优先级高

在命令上时,使用-g 来达到同样效果

-v, --invert-match

反向匹配

-n, --line-number

显示文件行数,默认打开

-x, --line-regexp

只显示整行都匹配 pattern 的行

会覆盖--word-regexp

-M, --max-columns

不打印长于列的匹配行

-m, --max-count

限制一个文件最多行匹配

--max-depth

限制文件夹递归搜索深度

rg --max-depth 0 dir/不执行任何搜索

--max-filesize

忽略大于byte 的文件

suffix 可以是 K, M,G, 默认是 byte

--mmap

尽量使用 memory maps, 默认行为

目前它不支持所有选项, 用--no-mmap 来关闭

--no-config

不读取 conf 文件, 忽略 RIPGREP_CONFIG_PATH

--no-filename

不要打印匹配文件名

--no-heading

在每个匹配行前都打印文件名

--no-ignore

取消 ignore 文件,如.gitignore, .ignore

可以用--ignore 关闭

--no-ignore-global

取消对全局的 ignore 文件读取

如$HOME/.config/git/ignore

--no-ignore-messages

取消解析.ignroe, .gitignore 文件相关错误

可通过--ignore-messages 关闭

--no-ignore-parent

不读取父文件夹里的.gitignore, .ignore 文件

可通过 --ignore-parent 关闭

--no-ignore-vcs

只全能.ignore 文件

可通过--ignore-vcs 关闭

-N, --no-line-number

不打印匹配行数

--no-messages

不打印打开和读取文件相关错误

-0, --null

在打印的文件路径后加一个 NUL 字符

对于 xargs 非常有用

-o, --only-matching

只打印匹配的内容,而不是整行

--passthru

打印匹配和不匹配的行

--path-separator

路径分隔符,在 linux 上默认是/

--pre

用处理文件,并将结果给 rg

可能有巨大的性能惩罚

例如

case "$1" in

*.pdf)

exec pdftotext "$1" -

;;

*)

case $(file "$1") in

_Zstandard_)

exec pzstd -cdq

;;

*)

exec cat

;;

esac

;;

esac

-p, --pretty

--color always --heading --line-number

-q, --quiet

不打印到 stdout, 如果匹配发现,停止 rg

当 rg 用于 exit 代码时非常有用

--regex-size-limit

编译 regex 的上限

-e, --regexp ...

使用正则来匹配

可多次使用这个选项,打印匹配任何 pattern 的行

可以用于搜索-开头的 pattern,如rg -e -foo

-r, --replace

用相应文件代替匹配内容打印出来

组序号($5)可以被使用

-z, --search-zip

在 gz,bz2,xz,lzma,lz4 文件类型中搜索

可通过--no-search-zip 关闭

-S, --smart-case

如果全小写,则大小写不敏感,否则敏感

可通过-s/--case-sensitive 和-i/--ignore-case 关闭

--sort-files

根据文件路径排序输出结果

会关闭并行搜索线程

--stats

打印出统计结果

-a, --text

搜索二进制文件

可通过--no-text 关闭

-j, --threads

大约使用的线程数

-t, --type ...

只搜索某种文件类型

可通过--type-lsit 来列出支持的文件类型

--type-add ...

添加文件类型

如rg --type-add 'foo:*.foo' -tfoo PATTERN

也可以用来创建某种包含多种文件类型的规则

--type-add 'src:include:cpp,py,md'

--type-clear ...

清除默认的文件类型

--type-list

列出所有内置文件类型

-T, --type-not ...

不要搜索某种文件类型

-u, --unrestricted

-u 搜索.gitignore 里的文件, -uu 搜索隐藏文件

-uuu 搜索二进制文件

-V, --version

打印版本信息

--vimgrep

每一次匹配打印一行

一行有多次匹配会打印多行

-H, --with-filename

打印匹配的文件路径,默认

可通过--no-filename 关闭

-w, --word-regexp

把 pattern 作为单独单词匹配,与< >等价

实例展示

实例一

$ rg 'name' ./

fb4fb22458b419d78f0c40bef431842c.png

实例二

搜索name为独立单词的内容(-w), 相当于

$ rg -w 'name' ./

bf680d3a9f539aa311237bdc1d8d64c5.png

实例三

只打印包含匹配内容的文件名(-l)

$ rg -w 'name' ./ -l

src/cpp/epoll_server.cpp

src/cpp/uart_xtor.cpp

实例四

只搜索cpp文件(-t), 可以用-T来不搜索某种类型文件

$ rg -w 'name' ./ -tcpp

7f3a8d106725fc438b974867de4ab731.png

实例五

正则搜索(-e)

$ rg -e "sa.*port" ./ -tcpp

794df15e03776619b7a5e685056a250d.png

实例六

显示匹配内容及上下各两行(-C), -A/-B类似

$ rg -e "sa.*port" ./ -tcpp -C2

891dd6edb6d8f1ccc2015e33de8167af.png

实例七

显示不含"debug"的行(-v)

$ rg -v "debug" -tcpp ./

实例八

只显示匹配部分(-o)

$ rg -e "if.*debug" ./ -tcpp -o

4b6a638731d87edba9f445db85a3491d.png

实例九

忽略大小写(-i)

$ rg -ie "if.*debug" ./ -tcpp -o

0a58edfdbc72da13d7b7f09955202238.png

实例十

把pattern当成常量字符(-F), 像.(){}*+不需要escape,如果要搜索的字符是以-开头,那么要用--来作为分隔符,或者用rg -e "-foo"

rg -F "i++)" ./ -tcpp

344b97a8f1443f4e34990fbb95584d50.png

ccb695aa5c3ab5cceabb5b015ab9016e.png

6b782d387b961fcb49d04d295f3b84d5.png

实例十一

打印所有将被搜索的文件 --files

rg --files

d800e40a2b7a4694d146dac3e6f3f24a.png

实例十二

输出内置识别文件类型

$ rg --type-list

agda: *.agda, *.lagda

aidl: *.aidl

amake: *.bp, *.mk

asciidoc: *.adoc, *.asc, *.asciidoc

asm: *.S, *.asm, *.s

ats: *.ats, *.dats, *.hats, *.sats

avro: *.avdl, *.avpr, *.avsc

awk: *.awk

bazel: *.bzl, BUILD, WORKSPACE

bitbake: *.bb, *.bbappend, *.bbclass, *.conf, *.inc

bzip2: *.bz2

c: *.H, *.c, *.cats, *.h

cabal: *.cabal

cbor: *.cbor

ceylon: *.ceylon

clojure: *.clj, *.cljc, *.cljs, *.cljx

cmake: *.cmake, CMakeLists.txt

coffeescript: *.coffee

config: *.cfg, *.conf, *.config, *.ini

cpp: *.C, *.H, *.cc, *.cpp, *.cxx, *.h, *.hh, *.hpp, *.hxx, *.inl

creole: *.creole

crystal: *.cr, Projectfile

cs: *.cs

csharp: *.cs

cshtml: *.cshtml

css: *.css, *.scss

csv: *.csv

cython: *.pyx

d: *.d

dart: *.dart

dhall: *.dhall

docker: *Dockerfile*

elisp: *.el

elixir: *.eex, *.ex, *.exs

elm: *.elm

erlang: *.erl, *.hrl

fidl: *.fidl

fish: *.fish

fortran: *.F, *.F77, *.F90, *.F95, *.f, *.f77, *.f90, *.f95, *.pfo

fsharp: *.fs, *.fsi, *.fsx

gn: *.gn, *.gni

go: *.go

groovy: *.gradle, *.groovy

gzip: *.gz

h: *.h, *.hpp

haskell: *.c2hs, *.cpphs, *.hs, *.hsc, *.lhs

hbs: *.hbs

hs: *.hs, *.lhs

html: *.ejs, *.htm, *.html

idris: *.idr, *.lidr

java: *.java, *.jsp

jinja: *.j2, *.jinja, *.jinja2

jl: *.jl

js: *.js, *.jsx, *.vue

json: *.json, composer.lock

jsonl: *.jsonl

julia: *.jl

jupyter: *.ipynb, *.jpynb

kotlin: *.kt, *.kts

less: *.less

license: *[.-]LICEN[CS]E*, AGPL-*[0-9]*, APACHE-*[0-9]*, BSD-*[0-9]*, CC-BY-*, COPYING, COPYING[.-]*, COPYRIGHT, COPYRIGHT[.-]*, EULA, EULA[.-]*, GFDL-*[0-9]*, GNU-*[0-9]*, GPL-*[0-9]*, LGPL-*[0-9]*, LICEN[CS]E, LICEN[CS]E[.-]*, MIT-*[0-9]*, MPL-*[0-9]*, NOTICE, NOTICE[.-]*, OFL-*[0-9]*, PATENTS, PATENTS[.-]*, UNLICEN[CS]E, UNLICEN[CS]E[.-]*, agpl[.-]*, gpl[.-]*, lgpl[.-]*, licen[cs]e, licen[cs]e.*

lisp: *.el, *.jl, *.lisp, *.lsp, *.sc, *.scm

log: *.log

lua: *.lua

lz4: *.lz4

lzma: *.lzma

m4: *.ac, *.m4

make: *.mak, *.mk, GNUmakefile, Gnumakefile, Makefile, gnumakefile, makefile

man: *.[0-9][cEFMmpSx], *.[0-9lnpx]

markdown: *.markdown, *.md, *.mdown, *.mkdn

matlab: *.m

md: *.markdown, *.md, *.mdown, *.mkdn

mk: mkfile

ml: *.ml

msbuild: *.csproj, *.fsproj, *.proj, *.props, *.targets, *.vcxproj

nim: *.nim

nix: *.nix

objc: *.h, *.m

objcpp: *.h, *.mm

ocaml: *.ml, *.mli, *.mll, *.mly

org: *.org

pdf: *.pdf

perl: *.PL, *.perl, *.pl, *.plh, *.plx, *.pm, *.t

php: *.php, *.php3, *.php4, *.php5, *.phtml

pod: *.pod

protobuf: *.proto

ps: *.cdxml, *.ps1, *.ps1xml, *.psd1, *.psm1

puppet: *.erb, *.pp, *.rb

purs: *.purs

py: *.py

qmake: *.prf, *.pri, *.pro

r: *.R, *.Rmd, *.Rnw, *.r

rdoc: *.rdoc

readme: *README, README*

rst: *.rst

ruby: *.gemspec, *.rb, .irbrc, Gemfile, Rakefile

rust: *.rs

sass: *.sass, *.scss

scala: *.sbt, *.scala

sh: *.bash, *.bashrc, *.csh, *.cshrc, *.ksh, *.kshrc, *.sh, *.tcsh, *.zsh, .bash_login, .bash_logout, .bash_profile, .bashrc, .cshrc, .kshrc, .login, .logout, .profile, .tcshrc, .zlogin, .zlogout, .zprofile, .zshenv, .zshrc, bash_login, bash_logout, bash_profile, bashrc, profile, zlogin, zlogout, zprofile, zshenv, zshrc

smarty: *.tpl

sml: *.sig, *.sml

soy: *.soy

spark: *.spark

sql: *.psql, *.sql

stylus: *.styl

sv: *.h, *.sv, *.svh, *.v, *.vg

svg: *.svg

swift: *.swift

swig: *.def, *.i

systemd: *.automount, *.conf, *.device, *.link, *.mount, *.path, *.scope, *.service, *.slice, *.socket, *.swap, *.target, *.timer

taskpaper: *.taskpaper

tcl: *.tcl

tex: *.bib, *.cls, *.ltx, *.sty, *.tex

textile: *.textile

tf: *.tf

toml: *.toml, Cargo.lock

ts: *.ts, *.tsx

twig: *.twig

txt: *.txt

vala: *.vala

vb: *.vb

verilog: *.sv, *.svh, *.v, *.vh

vhdl: *.vhd, *.vhdl

vim: *.vim

vimscript: *.vim

webidl: *.idl, *.webidl, *.widl

wiki: *.mediawiki, *.wiki

xml: *.xml, *.xml.dist

xz: *.xz

yacc: *.y

yaml: *.yaml, *.yml

zsh: *.zsh, .zlogin, .zlogout, .zprofile, .zshenv, .zshrc, zlogin, zlogout, zprofile, zshenv, zshrc

总结

ripgrep的搜索速度真是快的飞起来,在浏览代码时对我的帮助非常大。我相信它对于每一个码农的价值都是无限大的,特别是结合FZF之后。

唯一的弱点是对正则的支持,但这是一个取舍,如果采用如PCRE那样的库的话,一定会极大影响速度。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蒲慕明:《大脑之美》序言,脑探索的起点

来源&#xff1a;神经现实本文经授权摘自《大脑之美》序言作者&#xff1a;蒲慕明现代神经科学起源于十九世纪末期&#xff1b;圣地亚哥拉蒙-卡哈尔&#xff08;Santiago Ramn y&#xff09;的神经解剖学研究和他提出的神经元理论是主要的起点。一百多年来&#xff0c;神经科学…

slow log php,善用php-fpm的慢执行日志slow log,分析php性能问题

众所周知&#xff0c;mysql有slow query log&#xff0c;根据慢查询日志&#xff0c;我们可以知道那些sql语句有性能问题。作为mysql的好搭档&#xff0c;php也有这样的功能。如果你使用php-fpm来管理php的话&#xff0c;你可以通过如下选项开启。PHP 5.3.3 之前设置如下&#…

量子信息技术研究现状与未来——郭光灿

来源&#xff1a; 中国科学杂志社量子信息技术是量子力学与信息科学融合的新兴交叉学科, 它的诞生标志着人类社会将从经典技术迈进到量子技术的新时代, 本文将阐述量子信息技术的研究现状与未来. 文中描绘了量子技术发展远景, 即筑建各种类型的量子网络, 包括量子云计算网络、分…

springboot需要tomcat服务器吗_嵌入式 Tomcat AJP 协议对 SpringBoot 应用的影响

前言2020 年 1 月 6 日&#xff0c;国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的 Apache Tomcat 文件包含漏洞。Tomcat AJP 协议由于存在实现缺陷导致相关参数可控&#xff0c;攻击者利用该漏洞可通过构造特定参数&#xff0c;读取服务器 webapp 下…

php session 前缀,PHP文件包含--session

利用条件&#xff1a;session文件路径已知&#xff0c;且其中内容部分可控。php的session文件的保存路径可以在phpinfo的session.save_path看到。session 的文件名格式为 sess_[phpsessid]&#xff0c;而 sessionid 在发送的请求的 cookie 字段中也可以看到。实例&#xff1a;“…

大脑与数学——利用代数拓扑研究模拟大脑 第一部分

来源&#xff1a;遇见数学蓝脑计划&#xff08;Blue Brain Project&#xff09;是尝试利用分子层级的哺乳类脑部逆向工程建立一个电脑模拟脑。这里模拟并不仅是包括人工神经网络模型&#xff0c;也包括生物过程的真实神经元模型&#xff0c;和一个经验重建模型连接组。该计划希…

spring cloud每次修改必须重新打包_Java面试系列spring相关

Spring中的Bean是线程安全的吗&#xff1f;Spring 中的 bean 默认都是单例的&#xff0c;所有线程都共享一个单例实例Bean&#xff0c;因此是存在资源的竞争&#xff0c;是线程不安全的。但是spring中大部分bean都是在方法内部操作&#xff0c;例如&#xff1a;Controller、Ser…

谈谈实现小样本学习的两条路径

来源&#xff1a;混沌巡洋舰小样本学习是当下机器学习界的一个核心课题。大数据是当下深度学习的咽喉&#xff0c;面临收集成本昂贵&#xff0c;甚至根本无法采集的弊端&#xff0c; 小样本学习的实践价值不言而喻。对于众多产业来说&#xff0c; 真正能够收集到大量样本的是极…

什么是物联网?常见IoT协议最全讲解

作者&#xff1a;付强来源&#xff1a;IoT物联网技术&#xff08;ID&#xff1a;IoT-Tech-Expo&#xff09;01 什么是物联网?物联网&#xff08;Internet of Things&#xff09;这个概念读者应该不会陌生。物联网的概念最早于1999年被提出来&#xff0c;曾被称为继计算机、互联…

java下发命令nbiot,NB物联网之天翼物联(3)——编解码插件上传规则细解(java开发物联网)...

前言电信的编解码插件本意上是可以让我们的开发更加灵活&#xff0c;但是你好歹把文档写明白啊。。。同时在正常的生产中我们的产品不可能只使用电信的模块&#xff0c;有时甚至是客户要求使用移动还是电信的模块&#xff0c;所以兼容性给我们的体验非常直观&#xff01;我们先…

netcat使用

前言 最近在做渗透测试的时候遇到了端口监听和shell的反弹问题&#xff0c;在这个过程中自己对Netcat这一款神器有了新的认识&#xff0c;现将一些Netcat的用法做一个小总结&#xff0c;希望对各位有帮助&#xff01; Netcat简介 Netcat是一款非常出名的网络工具&#xff0c;简…

重磅:国家正式出台学术不端行为界定

来源&#xff1a;科研大匠大家都在反对学术不端&#xff0c;何为学术不端&#xff1f;如何界定学术不端行为&#xff1f;其实&#xff0c;此前并没有一个明确的标准。2019年5月29日&#xff0c;国家新闻出版署才正式发布我国首个针对学术不端行为的行业标准——《学术出版规范—…

Gartner:解开关于人工智能的六个迷思

来源&#xff1a;Gartner“人工智能将自动执行所有工作并让人类失业。”“人工智能只是一种虚构的技术。”“机器人将占领整个世界。”围绕人工智能的炒作给主流媒体、董事会议和各企业机构留下了许多迷思。有人担心“万能”的人工智能将占领全世界&#xff0c;有人则认为人工智…

java搭建线程池框架,JAVA线程池管理及分布式HADOOP调度框架搭建

大家看到了线程的好处了吧&#xff01;单线程需要10S&#xff0c;10个线程只需要1S。充分利用了系统资源实现并行计算。也许这里会产生一个误解&#xff0c;是不是增加的线程个数越多效率越高。线程越多处理性能越高这个是错误的&#xff0c;范式都要合适&#xff0c;过了就不好…

IBM将收购Instana公司,持续推进其混合云和人工智能战略

来源&#xff1a;IBM中国收购 Instana 后&#xff0c;IBM 将帮助企业在多团队和多云&#xff08;平均 2到 15个&#xff09;环境下更好地管理他们的应用性能。[1]这也是 IBM 持续完善其由人工智能所驱动的自动化能力的又一例证&#xff0c;IBM 的其他相关举措还包括&#xff1a…

[原创]关于在VS解决方案下使用文件夹管理多个项目层次关系的说明

由于所创建的应用项目或类库项目较多&#xff0c;于是将这些类库放到一个文件夹下。在VS解决方案下确实能看到一个文件夹下多个类库项目这种层次关系。如下图所示&#xff1a; 但打开“我的电脑”&#xff0c;看到的只有类库&#xff0c;并未看到维护层次关系的文件夹。如下图所…

java进阶(二)-java小干货

java一些精干知识点分享 2. java小干货2.1循环遍历2.2可变参数2.3 list和数组转化2.3.1 数组转list2.3.2 list转数组 2.4 值传递和地址传递2.4.1值传递2.4.2 地址传递2.4.3易错点总结 2.5 数组数组帮助类Arrays 2.5 基本数据类型和包装类2.5集合2.6文件流2.7java代码块、内部类…

机器直觉

来源&#xff1a;专知当前以深度学习代表的人工智能技术所能解决的问题往往需要具有大量可以借鉴学习的训练 集, 同时要求所获取的信息是完备的. 但在复杂时变的真实应用环境中, 采集到的数据往往包含大量 噪声与不确定性, 且仅包含环境的局部信息, 导致了基于深度学习的人工智…

vb.net读取excel并写入dgv_读取PDF中的表格写入EXCEL?30行代码搞定

办公自动化系列1现在&#xff0c;各类数据分析的书籍&#xff0c;都可以在网上找到PDF版本&#xff1b;同时&#xff0c;百度文库、各类数据统计文库、行业研究等众多论文报告&#xff0c;是通过PDF的形式去展示输出的&#xff1b;但是&#xff0c;令人都头疼的是&#xff0c;各…

英媒:人工智能终于接近人类智能了吗?

文章来源&#xff1a;金融时报作者&#xff1a;John Thornhill图片来源&#xff1a;网络编辑&#xff1a;江上波摘要&#xff1a;GPT-3被誉为人工智能领域的重大突破&#xff0c;有人认为它甚至显示出初步意识迹象&#xff0c;另一些人则指出GPT-3存在可笑的缺陷。它可以大量炮…