diff --git a/.gitignore b/.gitignore index 19ea2b3e..23579dcd 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ _site .idea .DS_Store nohup.out +.npmbundle +node_modules +install-0.13.0.tgz diff --git a/Gemfile b/Gemfile index ff8dbbc7..04609283 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,7 @@ -source 'https://rubygems.org' +source 'https://gems.ruby-china.com' gem 'github-pages' gem 'jekyll-feed' gem 'jekyll-seo-tag' gem 'jekyll-redirect-from' +gem 'jekyll-include-cache' +gem "webrick", "~> 1.7" diff --git a/Gemfile.lock b/Gemfile.lock index 53a47cd3..fd071bf6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,241 +1,264 @@ GEM - remote: https://rubygems.org/ + remote: https://gems.ruby-china.com/ specs: - activesupport (4.2.9) - i18n (~> 0.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) + activesupport (7.0.4.2) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.11.1) colorator (1.1.0) - commonmarker (0.17.7.1) - ruby-enum (~> 0.5) - concurrent-ruby (1.0.5) - ethon (0.11.0) - ffi (>= 1.3.0) - execjs (2.7.0) - faraday (0.13.1) - multipart-post (>= 1.2, < 3) - ffi (1.9.18) + commonmarker (0.23.8) + concurrent-ruby (1.2.0) + dnsruby (1.61.9) + simpleidn (~> 0.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + ethon (0.16.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.8.1) + faraday (2.7.4) + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.15.5) forwardable-extended (2.6.0) - gemoji (3.0.0) - github-pages (172) - activesupport (= 4.2.9) - github-pages-health-check (= 1.3.5) - jekyll (= 3.6.2) - jekyll-avatar (= 0.5.0) - jekyll-coffeescript (= 1.0.2) - jekyll-commonmark-ghpages (= 0.1.3) + gemoji (3.0.1) + github-pages (228) + github-pages-health-check (= 1.17.9) + jekyll (= 3.9.3) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.4.0) jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.9.2) - jekyll-gist (= 1.4.1) - jekyll-github-metadata (= 2.9.3) - jekyll-mentions (= 1.2.0) - jekyll-optional-front-matter (= 0.3.0) + jekyll-feed (= 0.15.1) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.2.0) - jekyll-redirect-from (= 0.12.1) - jekyll-relative-links (= 0.5.2) - jekyll-remote-theme (= 0.2.3) - jekyll-sass-converter (= 1.5.0) - jekyll-seo-tag (= 2.3.0) - jekyll-sitemap (= 1.1.1) - jekyll-swiss (= 0.4.0) - jekyll-theme-architect (= 0.1.0) - jekyll-theme-cayman (= 0.1.0) - jekyll-theme-dinky (= 0.1.0) - jekyll-theme-hacker (= 0.1.0) - jekyll-theme-leap-day (= 0.1.0) - jekyll-theme-merlot (= 0.1.0) - jekyll-theme-midnight (= 0.1.0) - jekyll-theme-minimal (= 0.1.0) - jekyll-theme-modernist (= 0.1.0) - jekyll-theme-primer (= 0.5.2) - jekyll-theme-slate (= 0.1.0) - jekyll-theme-tactile (= 0.1.0) - jekyll-theme-time-machine (= 0.1.0) - jekyll-titles-from-headings (= 0.5.0) - jemoji (= 0.8.1) - kramdown (= 1.14.0) - liquid (= 4.0.0) - listen (= 3.0.6) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.12.0) + kramdown (= 2.3.2) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.4) mercenary (~> 0.3) - minima (= 2.1.1) - rouge (= 2.2.1) + minima (= 2.5.1) + nokogiri (>= 1.13.6, < 2.0) + rouge (= 3.26.0) terminal-table (~> 1.4) - github-pages-health-check (1.3.5) + github-pages-health-check (1.17.9) addressable (~> 2.3) - net-dns (~> 0.8) + dnsruby (~> 1.60) octokit (~> 4.0) - public_suffix (~> 2.0) - typhoeus (~> 0.7) - html-pipeline (2.7.1) + public_suffix (>= 3.0, < 5.0) + typhoeus (~> 1.3) + html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) - i18n (0.9.1) + http_parser.rb (0.8.0) + i18n (1.12.0) concurrent-ruby (~> 1.0) - jekyll (3.6.2) + jekyll (3.9.3) addressable (~> 2.4) colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (>= 0.7, < 2) jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.14) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) - rouge (>= 1.7, < 3) + rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - jekyll-avatar (0.5.0) - jekyll (~> 3.0) - jekyll-coffeescript (1.0.2) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) coffee-script (~> 2.2) coffee-script-source (~> 1.11.1) - jekyll-commonmark (1.1.0) - commonmarker (~> 0.14) - jekyll (>= 3.0, < 4.0) - jekyll-commonmark-ghpages (0.1.3) - commonmarker (~> 0.17.6) - jekyll-commonmark (~> 1) - rouge (~> 2) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.4.0) + commonmarker (~> 0.23.7) + jekyll (~> 3.9.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 5.0) jekyll-default-layout (0.1.4) jekyll (~> 3.0) - jekyll-feed (0.9.2) - jekyll (~> 3.3) - jekyll-gist (1.4.1) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) octokit (~> 4.2) - jekyll-github-metadata (2.9.3) - jekyll (~> 3.1) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) octokit (~> 4.0, != 4.4.0) - jekyll-mentions (1.2.0) - activesupport (~> 4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-optional-front-matter (0.3.0) - jekyll (~> 3.0) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) jekyll-paginate (1.1.0) - jekyll-readme-index (0.2.0) - jekyll (~> 3.0) - jekyll-redirect-from (0.12.1) - jekyll (~> 3.3) - jekyll-relative-links (0.5.2) - jekyll (~> 3.3) - jekyll-remote-theme (0.2.3) - jekyll (~> 3.5) - rubyzip (>= 1.2.1, < 3.0) - typhoeus (>= 0.7, < 2.0) - jekyll-sass-converter (1.5.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) sass (~> 3.4) - jekyll-seo-tag (2.3.0) - jekyll (~> 3.3) - jekyll-sitemap (1.1.1) - jekyll (~> 3.3) - jekyll-swiss (0.4.0) - jekyll-theme-architect (0.1.0) - jekyll (~> 3.5) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-cayman (0.1.0) - jekyll (~> 3.5) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-dinky (0.1.0) - jekyll (~> 3.5) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.1.0) - jekyll (~> 3.5) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-leap-day (0.1.0) - jekyll (~> 3.5) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-merlot (0.1.0) - jekyll (~> 3.5) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-midnight (0.1.0) - jekyll (~> 3.5) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-minimal (0.1.0) - jekyll (~> 3.5) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-modernist (0.1.0) - jekyll (~> 3.5) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.5.2) - jekyll (~> 3.5) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) jekyll-github-metadata (~> 2.9) - jekyll-seo-tag (~> 2.2) - jekyll-theme-slate (0.1.0) - jekyll (~> 3.5) jekyll-seo-tag (~> 2.0) - jekyll-theme-tactile (0.1.0) - jekyll (~> 3.5) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-theme-time-machine (0.1.0) - jekyll (~> 3.5) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.0) - jekyll (~> 3.3) - jekyll-watch (1.5.1) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) listen (~> 3.0) - jemoji (0.8.1) - activesupport (~> 4.0, >= 4.2.9) + jemoji (0.12.0) gemoji (~> 3.0) html-pipeline (~> 2.2) - jekyll (>= 3.0) - kramdown (1.14.0) - liquid (4.0.0) - listen (3.0.6) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.2) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.3.0) - minima (2.1.1) - jekyll (~> 3.3) - minitest (5.10.3) - multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.8.1) - mini_portile2 (~> 2.3.0) - octokit (4.7.0) - sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.16.1) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.17.0) + nokogiri (1.14.1-x86_64-linux) + racc (~> 1.4) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (2.0.5) - rb-fsevent (0.10.2) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) - rouge (2.2.1) - ruby-enum (0.7.1) - i18n - rubyzip (1.2.1) - safe_yaml (1.0.4) - sass (3.5.4) + public_suffix (4.0.7) + racc (1.6.0) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (3.26.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + simpleidn (0.2.1) + unf (~> 0.1.4) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.4) - thread_safe (~> 0.1) - unicode-display_width (1.3.0) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.8.1) PLATFORMS - ruby + x86_64-linux DEPENDENCIES github-pages jekyll-feed + jekyll-include-cache jekyll-redirect-from jekyll-seo-tag + webrick (~> 1.7) BUNDLED WITH - 1.15.4 + 2.4.6 diff --git a/_config.yml b/_config.yml index 5a95d739..689f34a0 100644 --- a/_config.yml +++ b/_config.yml @@ -3,7 +3,7 @@ description: 能立能达,不怨不尤 url: http://www.codingted.com blog_url: http://www.codingted.com author: Ted -email: teddzhaoo@gmail.com +email: zhaoliang12214@gmail.com img_server: /assets/img/blog github: https://github.com/codingted logo: assets/img/favicon.ico @@ -54,12 +54,13 @@ defaults: values: layout: "blog" -gems: +plugins: - jekyll-sitemap - jekyll-feed - jekyll-paginate - jekyll-seo-tag - jekyll-redirect-from + - jemoji whitelist: - jekyll-redirect-from diff --git a/_drafts/2018-01-04-spring_transaction.md b/_drafts/2018-01-04-spring_transaction.md index 6d3ffabd..10353abf 100644 --- a/_drafts/2018-01-04-spring_transaction.md +++ b/_drafts/2018-01-04-spring_transaction.md @@ -9,3 +9,4 @@ comments: true * content {:toc} +[Spring编程式事务管理及声明式事务管理](https://blog.csdn.net/zhj870975587/article/details/75152604) diff --git a/_drafts/2019-01-04-2019.md b/_drafts/2019-01-04-2019.md new file mode 100644 index 00000000..ad7d388b --- /dev/null +++ b/_drafts/2019-01-04-2019.md @@ -0,0 +1,21 @@ +# 2019 + +> 无志之人,常立志,有志之人,立长志 + +站在现在看自己过去的: +* 小时候的零星记忆只有回到自己出生的那个村庄才能够鲜活起来,但是时间也不会太长 +* 高中及之前的学习经历完全是按部就班,只是争取一时的荣誉,谈不上长远的规划 +* 大学的学习与之前的学习没有本质的差别,多的是自由,少了对于学习荣誉的争取(只是追求"60分万岁!") +* 工作了将近7年谈自己的收获...,难以启齿 + +也会有打鸡血的时候,但是总是没能达到自己期望("求乎上,得之中,求乎中,得之下",但是我总是得之下),在自己的而立之年,忽然感到自己的生命,轻飘飘的,找不到自己的意义,也不知道自己的下一步要去到哪里,一阵迷茫. +罗振宇的[时间的朋友2018跨年演讲](https://www.youtube.com/watch?v=ugDu_T9wUGs)算是一个契机,我要规划自己的2019,要有耐心,认清趋势,面向未来. + +# 启发 + +## 我的时间够用吗? + +1. 时间的碎片化 +> "摸机率"可以衡量会议的质量,什么是"摸机率",就是整个会议过程查看手机的次数 +2. 信息过载 +> 战国时期的思想家,庄子说过:"吾生也有涯,而知也无涯,以有涯随无涯,殆已", diff --git a/_drafts/2019-05-06-arts_week_5.md b/_drafts/2019-05-06-arts_week_5.md new file mode 100644 index 00000000..35913a63 --- /dev/null +++ b/_drafts/2019-05-06-arts_week_5.md @@ -0,0 +1,62 @@ +--- +title: ARTS(第5周) +category: ARTS +tags: arts +--- + +> **本周提纲:** +> +> 1. Algorithm: 最长公共前缀 +> 2. Review: 一个谷歌工程师编码解决问题的过程 +> 3. Tip: Jenkins REST API 触发任务执行 +> 4. Share: 关于负载均衡的一切(58沈剑) + + + +## Algorithm + +[14.最长公共前缀](https://leetcode-cn.com/problems/longest-common-prefix/) + +### 描述 + +> 编写一个函数来查找字符串数组中的最长公共前缀。 +> +> 如果不存在公共前缀,返回空字符串 ""。 +> 示例 1: +> +> 输入: ["flower","flow","flight"] +> 输出: "fl" +> +> 示例 2: +> +> 输入: ["dog","racecar","car"] +> 输出: "" +> 解释: 输入不存在公共前缀。 +> 说明: +> +> 所有输入只包含小写字母 a-z 。 + +### 代码 + +```python +class Solution: + def longestCommonPrefix(self, strs: List[str]) -> str: + """ + :type strs :List[str] + :rtype str + """ + if len(strs) == 0: return "" + # 按照字母表顺序获取最大值和最小值(进行了简单的排序) + s1, s2 = min(strs), max(strs) + zobj = zip(s1,s2) + rstr = "" + for i,j in list(zobj): + if i != j: + return rstr + rstr += i + return rstr +``` + +## Review + +[rework](https://rework.withgoogle.com/print/guides/5721312655835136/) diff --git "a/_drafts/API\350\256\276\350\256\241\345\216\237\345\210\231.md" "b/_drafts/API\350\256\276\350\256\241\345\216\237\345\210\231.md" new file mode 100644 index 00000000..654b2f48 --- /dev/null +++ "b/_drafts/API\350\256\276\350\256\241\345\216\237\345\210\231.md" @@ -0,0 +1,33 @@ +# API 设计评审清单 + +* URI 命名是否通过聚合根和实体统一 +* URI 命名是否采用名词复数和连接线 +* URI 命名是否都是单词小写 +* URI 是否暴露了不必要的信息,例如/cgi-bin +* URI 规则是否统一 +* 资源提供的能力是否彼此独立 +* URI 是否存在需要编码的字符 +* 请求和返回的参数是否不多不少 +* 资源的 ID 参数是否通过 PATH 参数传递 +* 认证和授权信息是否暴露到 query 参数中 +* 参数是否使用奇怪的缩写 +* 参数和响应数据中的字段命名统一 +* 是否存在无意义的对象包装 例如{"data":{}'} +* 出错时是否破坏约定的数据结构 +* 是否使用合适的状态码 +* 是否使用合适的媒体类型 +* 响应数据的单复是否和数据内容一致 +* 响应头中是否有缓存信息 +* 是否进行了版本管理 +* 版本信息是否作为 URI 的前缀存在 +* 是否提供 API 服务期限 +* 是否提供了 API 返回所有 API 的索引 +* 是否进行了认证和授权 +* 是否采用 HTTPS +* 是否检查了非法参数 +* 是否增加安全性的头部 +* 是否有限流策略 +* 是否支持 CORS +* 响应中的时间格式是否采用ISO 8601标准 +* 是否存在越权访问 + diff --git a/_drafts/arch_desktop.md b/_drafts/arch_desktop.md new file mode 100644 index 00000000..f74274b1 --- /dev/null +++ b/_drafts/arch_desktop.md @@ -0,0 +1,16 @@ +## 问题 +1. 桌面环境怎么找到对应的应用程序 +2. chrome打开下载文件使用的默认应用程序 + +## Arch Wiki + +### Desktop Entries + +[地址](https://wiki.archlinux.org/title/Desktop_entries) + + +### autostart + +[地址](https://wiki.archlinux.org/title/XDG_Autostart) + +### diff --git a/_drafts/arch_font.md b/_drafts/arch_font.md new file mode 100644 index 00000000..b975f5b0 --- /dev/null +++ b/_drafts/arch_font.md @@ -0,0 +1,3 @@ +## 字体的路径 + +/usr/share/fonts/, ~/.local/share/fonts diff --git a/_drafts/arts/2022-07-07-arts_week_5.md b/_drafts/arts/2022-07-07-arts_week_5.md new file mode 100644 index 00000000..26a245db --- /dev/null +++ b/_drafts/arts/2022-07-07-arts_week_5.md @@ -0,0 +1,114 @@ +--- +title: ARTS(第5周) +category: ARTS +tags: arts +--- + +> **本周提纲:** +> +> 1. **Algorithm:** 383.赎金信 +> 2. **Review:** How to control the metacognition process of programming? +> 3. **Tip:** +> 4. **Share:** SSH 配置端口转发 + + + +## Algorithm + +[383.赎金信](https://leetcode.cn/problems/ransom-note/) + +### 描述 + +给你两个字符串:`ransomNote`和`magazine`,判断`ransomNote` 能不能由`magazine`里面的字符构成。 +如果可以,返回`true`;否则返回`false`。 +`magazine`中的每个字符只能在`ransomNote`中使用一次。 + +示例 1: +> 输入:ransomNote = "a", magazine = "b" +> 输出:false + +示例 2: +> 输入:ransomNote = "aa", magazine = "ab" +> 输出:false + +示例 3: +> 输入:ransomNote = "aa", magazine = "aab" +> 输出:true +  +提示: +> 1 <= ransomNote.length, magazine.length <= 105 +> ransomNote 和 magazine 由小写英文字母组成 + +### 代码 + +```python +# 个人实现版,看起来不够清晰 +class Solution: + + def canConstruct(self, ransomNote: str, magazine: str) -> bool: + """统计字符串的个数""" + charDict = {} # 存储统计结果的字典 + for k in set(ransomNote): + charDict[k] = ransomNote.count(k) + + for m in magazine: + if(m in charDict): + charDict[m] = charDict[m]-1 + if(charDict[m] <= 0): + charDict.pop(m) + if(len(charDict) == 0): + return True + return False +# 使用python 内置的函数进行字符统计,代码实现简洁 + +``` + +## Review + +[How to control the metacognition process of programming?](https://lambdaisland.com/blog/2022-02-17-the-fg-command) + +“如何控制编程的元认知”这篇文章提到‘编程是思考而不是敲代码’,虽然‘敲代码’也需要思考但是这种程度的思考还是不够的,对于思考我们应该投入的更多。 + +在日常的工作和生和中有部分是通过‘潜意识’进行决定的,这样我们的‘前景思维’(`foreground thinking`)就能更专注的处理手头的问题。但是有些问题是‘潜意识’不适用的,这种情况下我们如果‘前景思维’系统才是合适的(作者还使用了linux的`fg`命令来做了类比),那么我们怎么知道什么时候应该由‘前景思维’来接管呢?作者提出了下边的两种方法: + +1. 向别人解释代码的含义(Rubber Duck 方法) + * 由于远程工作不方便沟通,所以需要通过尽可能详尽的描述问题来寻求别人的帮助 +2. 问自己一些提前准备好的问题(Drucker 方法) + * 正确的方法就像大脑的`fg`命令,让你用‘前景思维’来思考问题 + +作者还举了以下几种场景下自己准备的问题: + +**遇到bug时我会问** + +1. 我是不是在用科学的方法解决这个问题? +2. 我是不是在用准确的系统视角来审视这个问题? +3. 我是不是有测量这个问题的趁手? + +**定义一个方法我会问** + +1. 我应该将命令和查询分开吗? +2. 我是否为程序的异常做了额外的处理比如:`try/cache`或者`log`? +3. 我是否为可能的错误做了防御性的设计比如:提前的判断或`assert`? +4. 方法名称是否是‘自说明’的? +5. 我是否添加了合适的方法说明? + +**设计一个模块我会问** + +1. 我是不是需要为该模块单独编写API文档,使API独立于内部方法? +2. 是不是移除了了所有的无用代码? +3. 我是否设计或使用合适的Clojure记录来建模一些不变的域问题概念? + +**整合和部署我会问** + +1. 我是不是为领域方法设计了合适的测试? +2. 我是不是为脚本设计了合适的反馈消息? +3. 一些人工执行的脚本是否能够自动化? + + +todo## Tip + +[Arthas:Alibaba开源的Java诊断工具](https://alibaba.github.io/arthas/) + +## Share + +[SSH 配置端口转发](https://harttle.land/2022/05/02/ssh-port-forwarding.html) diff --git a/_drafts/arts/2022-08-04-arts_week_6.md b/_drafts/arts/2022-08-04-arts_week_6.md new file mode 100644 index 00000000..27ae69cd --- /dev/null +++ b/_drafts/arts/2022-08-04-arts_week_6.md @@ -0,0 +1,82 @@ +--- +title: ARTS(第6周) +category: ARTS +tags: arts +--- + +> **本周提纲:** +> +> 1. **Algorithm:** +> 2. **Review:** +> 3. **Tip:** +> 4. **Share:** + + + +## Algorithm + +[383.赎金信](https://leetcode.cn/problems/ransom-note/) + +### 描述 + +给你两个字符串:`ransomNote`和`magazine`,判断`ransomNote` 能不能由`magazine`里面的字符构成。 +如果可以,返回`true`;否则返回`false`。 +`magazine`中的每个字符只能在`ransomNote`中使用一次。 + +示例 1: +> 输入:ransomNote = "a", magazine = "b" +> 输出:false + +示例 2: +> 输入:ransomNote = "aa", magazine = "ab" +> 输出:false + +示例 3: +> 输入:ransomNote = "aa", magazine = "aab" +> 输出:true +  +提示: +> 1 <= ransomNote.length, magazine.length <= 105 +> ransomNote 和 magazine 由小写英文字母组成 + +### 代码 + +```python +# 个人实现版,看起来不够清晰 +class Solution: + + def canConstruct(self, ransomNote: str, magazine: str) -> bool: + """统计字符串的个数""" + charDict = {} # 存储统计结果的字典 + for k in set(ransomNote): + charDict[k] = ransomNote.count(k) + + for m in magazine: + if(m in charDict): + charDict[m] = charDict[m]-1 + if(charDict[m] <= 0): + charDict.pop(m) + if(len(charDict) == 0): + return True + return False +# 使用python 内置的函数进行字符统计,代码实现简洁 + +``` + +## Review + +[Professional Programming: The First 10 Years](https://thorstenball.com/blog/2022/05/17/professional-programming-the-first-10-years/) + +作者描述了自己作为职业编程的头十年 +在做自己工作的时候是有选择的,充分的了解自己 + + + + +todo## Tip + +[Arthas:Alibaba开源的Java诊断工具](https://alibaba.github.io/arthas/) + +## Share + +[SSH 配置端口转发](https://harttle.land/2022/05/02/ssh-port-forwarding.html) diff --git a/_drafts/cas.md b/_drafts/cas.md new file mode 100644 index 00000000..8f5daa2f --- /dev/null +++ b/_drafts/cas.md @@ -0,0 +1,2 @@ +CAS(Compare And Swap): +[https://zh.wikipedia.org/wiki/%E6%AF%94%E8%BE%83%E5%B9%B6%E4%BA%A4%E6%8D%A2](https://zh.wikipedia.org/wiki/%E6%AF%94%E8%BE%83%E5%B9%B6%E4%BA%A4%E6%8D%A2) diff --git a/_drafts/chrome/search_in_google_com.md b/_drafts/chrome/search_in_google_com.md deleted file mode 100644 index 08dcf4a0..00000000 --- a/_drafts/chrome/search_in_google_com.md +++ /dev/null @@ -1,7 +0,0 @@ -找到如下文件: -Windows 路径:%LOCALAPPDATA%\Google\Chrome\User Data\Default\Preferences -Linux 路径:~/.config/google-chrome/Default/Preferences -Mac 路径:/Users/yourname/Library/Application Support/Google/Chrome/Default/Preferences -文本编辑器打开后 -替换全文终的 google.co.jp 为 google.com 即可。 -重新整理一下发上来,完美了 diff --git "a/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/indexing_updating_deleting.md" "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/indexing_updating_deleting.md" new file mode 100644 index 00000000..a512f3b4 --- /dev/null +++ "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/indexing_updating_deleting.md" @@ -0,0 +1,103 @@ +## Using mappings to define kinds of documents + +Each document belongs to a type, which in turn belongs to an index. As a logical divi- +sion of data, you can think of *indices as databases and types as tables*. + + +> **Types provide only logical separation** +With Elasticsearch, there’s no physical separation of documents that have different types. All documents within the same Elasticsearch index, regardless of type, end up in the same set of files belonging to the same shards. In a shard, which is a Lucene index, the name of the type is a field, and all fields from all mappings come together as fields in the Lucene index. + +The concept of a type is a layer of abstraction specific to Elasticsearch but not Lucene, which makes it easy for you to have different kinds of documents in the same index. Elasticsearch takes care of separating those documents; for example, by filtering documents belonging to a certain type when you search in that type only. + +This approach creates a problem when the same field name occurs in multiple types. To avoid unpredictable results, two fields with the same name should have the same settings; otherwise Elasticsearch might have a hard time figuring out which of the two fields you’re referring to. In the end, both those fields belong to the same Lucene index. For example, if you have a name field in both group and event documents, both should be strings, not one a string and one an integer. This is rarely a problem in real life, but it’s worth remembering to avoid surprises. + +![Using types to divide data in the same index](./img/type_in_index.png) + +### Retrieving and defining mappings + +* GETTING THE CURRENT MAPPING + +```bash +$ curl 'localhost:9200/get-together/group/_mapping?pretty' +``` + +* Getting an automatically generated mapping + +```bash +$ curl -XPUT 'localhost:9200/get-together/new-events/1' -d '{ + "name": "Late Night with Elasticsearch", + "date": "2013-10-25T19:00" +}' + +$ curl 'localhost:9200/get-together/_mapping/new-events?pretty' + +``` + +> mapping info + +```json +{ + "get-together" : { + "mappings" : { + "new-events" : { + "properties" : { + "date" : { + "type" : "date" + }, + "name" : { + "type" : "text", + "fields" : { + "keyword" : { + "type" : "keyword", + "ignore_above" : 256 + } + } + } + } + } + } + } +} + +``` + +* DEFINING A NEW MAPPING + +```bash +$ curl -XPUT 'localhost:9200/get-together/new-events/1' -d '{ + "name": "Late Night with Elasticsearch", + "date": "2013-10-25T19:00" + }' + +``` +如果重新定义已经存在的mapping中的字段的类型, 是会报错的, 因为如果改变字段的数据类型需要进行: +1. 移除type所有的数据 +2. 加入新的mapping +3. 重新为数据索引 + +To understand why re-indexing might be required, imagine you’ve already indexed an event with a string in the host field. If you want the host field to be long now, Elasticsearch would have to change the way host is indexed in the existing document. As you’ll explore later in this chapter, editing an existing document implies deleting and indexing again. To define correct mappings that hopefully will only need additions, not changes, let’s look at the core types you can choose for your fields in Elasticsearch and what you can do with them. + +## 数据类型 + +string/numeric/date/boolean + +### mapping的properties设置index属性 + +```bash + curl -XPUT 'localhost:9200/get-together/_mapping/new-events' -d '{ + "new-events" : { + "properties" : { + "name": { + "type" : "string", + "index" : "not_analyzed" + } + } + } + }' +``` +> index的三种参数 + +* analyzed:解析该字段按照分词规则生成多个term(默认) +* not_analyzed:不解析该字段, 以该字段整体为一个term +* no : 跳过分词没有term产生 + diff --git "a/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/intro.md" "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/intro.md" index bc9bf975..416f627d 100644 --- "a/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/intro.md" +++ "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/intro.md" @@ -33,3 +33,15 @@ An Elasticsearch index is an independent chunk of documents, much like a databas > An Elasticsearch index is broken down into chunks: shards. A shard is a Lucene index, so an Elasticsearch index is made up of multiple Lucene indices. This makes sense because Elasticsearch uses Apache Lucene as its core library to index your data and search through it. +### Distributed indexing and searching + +* indexing + +The Elasticsearch node that receives your indexing request first selects the shard to index the document to. By default, documents are distributed evenly between shards: for each document, the shard is determined by **hashing its ID string**. Each shard has an equal **hash range**, with equal chances of receiving the new document. Once the target shard is determined, the current node forwards the document to the node holding that shard. Subsequently, that indexing operation is replayed by all the replicas of that shard. The indexing command successfully returns after all the available replicas finish indexing the document. + +![distribute_indexing_searching](./pic/distribute_indexing_searching.png) + +* searching + +With searching, the node that receives the request forwards it to a set of shards containing all your data. Using a round-robin(轮询调度算法), Elasticsearch selects an available shard (which can be primary or replica) and forwards the search request to it. Elasticsearch then gathers results from those shards, aggregates them into a single reply, and forwards the reply back to the client application. +By default, primary and replica shards get hit by searches in round-robin, assuming all nodes in your cluster are equally fast (identical hardware and software configurations). If that’s not the case, you can organize your data or configure your shards to prevent the slower nodes from becoming a bottleneck. diff --git "a/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/pic/distribute_indexing_searching.png" "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/pic/distribute_indexing_searching.png" new file mode 100644 index 00000000..2ff564e0 Binary files /dev/null and "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/pic/distribute_indexing_searching.png" differ diff --git "a/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/pic/type_divide_in_index.png" "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/pic/type_divide_in_index.png" new file mode 100644 index 00000000..ff88ee27 Binary files /dev/null and "b/_drafts/elk\346\227\245\345\277\227\347\263\273\347\273\237\346\220\255\345\273\272/pic/type_divide_in_index.png" differ diff --git "a/_drafts/enum\347\232\204\347\233\270\345\205\263\347\237\245\350\257\206.md" "b/_drafts/enum\347\232\204\347\233\270\345\205\263\347\237\245\350\257\206.md" new file mode 100644 index 00000000..31124e99 --- /dev/null +++ "b/_drafts/enum\347\232\204\347\233\270\345\205\263\347\237\245\350\257\206.md" @@ -0,0 +1 @@ +(参考链接)[https://blog.csdn.net/javazejian/article/details/71333103] diff --git a/_drafts/google_code_review.md b/_drafts/google_code_review.md new file mode 100644 index 00000000..f072e041 --- /dev/null +++ b/_drafts/google_code_review.md @@ -0,0 +1,95 @@ +# 谷歌工程实践-Code Review + +## 代码审核的标准 + +代码审核是为了保证代码的质量,保持良好的结构和一致的风格,不因为时间的推移而变得难以维护. + +* 摒弃不需要的功能,即使该功能设计良好 +* 没有最好的代码,只有不断改进的代码,所以不应该追求完美,而应该追求持续的改进,权衡是否接受CL +* Review应该保持开放的态度进行回复,可以轻松的指出有些东西可以更好或者一些补充的回复 +* 代码的指导(包括代码质量,代码的规范,关于软件的设计思想) +* 不断改善代码库 + +### 原则 + +* 事实大于个人偏好 +* 代码风格请遵循作者的指导 +* 软件设计的各个方面几乎从来不是纯粹的风格问题,也不只是个人偏好。它们是建立在基本原则的基础上的,应该在这些原则的基础上加以衡量,而不仅仅是个人意见。有时有一些有效的选择。如果作者能够证明(通过数据或基于可靠的工程原理)几种方法是同样有效的,那么审稿人应该接受作者的偏好。否则,选择取决于软件设计的标准原则. +* 如果没有其他规则适用,那么审查员可能会要求作者与当前代码库中的内容保持一致,只要这不会恶化系统的整体代码健康状况. + +### 解决分歧 + +双方基于现有的系统文档和第三方文档如:[CL作者代码评审指南](https://google.github.io/eng-practices/review/developer/)和[代码评审指南](https://google.github.io/eng-practices/review/reviewer/).如果还不能解决就需要面对面的讨论交流,团队会议... + +## Code Review评审的是什么内容 + +* 代码设计得很好. +* 该功能对代码的用户很好 +* 任何UI更改都是合理的,看起来也不错. +* 任何并行编程都是安全的. +* 代码并不比它需要的复杂. +* 开发人员没有实现他们将来可能需要但不知道现在需要的东西. +* 代码有适当的单元测试. +* 测试是精心设计的. +* 开发人员对所有东西都使用了清晰的名称. +* 注释清晰有用,主要解释为什么而不是什么. +* 代码被适当地文档化(通常在g3doc中). +* 代码符合我们的样式指南. + +## 检查CL + +### 第一步:更广的视角看待变化 + +检查变更是否必要,如果变更不必要要马上回复,并解释为什么不需要变化,并且提出自己针对该变化的建议(保持态度亲和). + +### 第二步:检查CL变化的主要逻辑 + +定位CL描述的主要的变化逻辑,如果CL涉及的逻辑比较多,需要询问开发人员主要逻辑,或者请求将本次提交进行[拆分](https://google.github.io/eng-practices/review/developer/small-cls.html). + +如果发现主要设计或主要逻辑的错误,需要尽快通知开发者,对于未review的部分可以略过,因为如果是设计出现错误或者主要逻辑错误,那很可能意味着其它部分的修改也需要相应的调整,所以对这部分代码的review很可能是无意义的. + +### 第三步:以适当的顺序review剩下的代码 + +## 加速review + +review不及时带来的问题: + +* 整个团队的速度降低 +* 开发人员对code review处理进度的抱怨 +* 代码整体的质量降低(堆积的大量的review处理的不够慎重) + +### Code Review 速度 + +* 如果不是在紧急的任务中需要对新的Review进行简单的处理 +* 最长不超过一个工作日 + +当然在保证自己的工作不被搅乱的情况下有序的处理Review,选择合理的时机:编码工作告一段落、饭后、会议结束后... + +如果当前不能review可以告知开发者什么时间可以开始review,避免心理等待时间过长.如果最近确实没有时间可以建议其他人进行review. + +**注意**:不要为了加速Review而降低[review的标准](https://google.github.io/eng-practices/review/reviewer/standard.html). + +## 如何撰写code review的评论 + +* 和气 +* 阐述你的原因 +* 指出问题,避免明确的指示,应该由开发者决定如何处理问题 +* 建议开发人员使用简明清晰的代码和注释替代对复杂实现的解释 + +## 处理对Code Review结论的质疑 + +面对Code Review的驳回有时候会有得不到开发人员的认同,这时候该怎么办? + +### 谁是正确的 + +面对质疑首先要想到,是不是他们(开发者)是正确的?因为开发者更了解他们的代码,如果是这样就撤销问题. + +如果认为review没有问题需要耐心的听取开发人员的意见,并予以解释,必要的情况下需要准备恰当的示例. + +重要的是双方要互相的倾听,认真的思考对方的理由. + +不接受"稍后修改",因为"稍后修改"可能被别的工作打扰,然后被遗忘. + +## 引用 + +[eng-practices](https://google.github.io/eng-practices) diff --git a/_drafts/java_specification/chapter_2_not.md b/_drafts/java_specification/chapter_2_not.md new file mode 100644 index 00000000..eab19688 --- /dev/null +++ b/_drafts/java_specification/chapter_2_not.md @@ -0,0 +1,6 @@ +2.4. Reference Types and Values + +There are three kinds of reference types: class types, array types, and interface types + + + diff --git a/_drafts/linux/2018-12-19-linux_cpu_optimize.md b/_drafts/linux/2018-12-19-linux_cpu_optimize.md new file mode 100644 index 00000000..ef09781b --- /dev/null +++ b/_drafts/linux/2018-12-19-linux_cpu_optimize.md @@ -0,0 +1,111 @@ +# CPU篇 + +## 理解"平均负载" + +```shell +$uptime + 16:05:37 up 1 day, 29 min, 20 users, load average: 1.44, 1.55, 1.57 + ``` +> 16:05:37 // 当前系统时间 +> up 1 day, 29 min, // 系统运行时间 +> 20 users, // 登录的用户数 +> load average: 1.44, 1.55, 1.57 // 1分钟,5分钟,15分钟的平均负载 + +平均负载:是系统处于可运行状态和不可中断状态的平均进程数,也就是平均进程数 + +> 可运行状态:对应ps的R状态的进程; +> 不可中断状态: 对应ps的D状态的进程; + +```shell +# 查看cpu信息 +$ lscpu +or +$ cat /proc/cupinfo +``` + +```shell +# 模拟cpu密集型 +$stress --cpu 1 --timeout 60 +# 模拟io密集型 +$ stress -i 1 --timeout 60 +# 大量进程的场景 +$ stress -c 8 --timeout 60 + +# 查看平均负载 +$ watch -d uptime +# 查看cpu使用率 +$ mpstat -P ALL 5 +# 查看进程情况 +$ pidstat -u 5 1 +``` + +## CPU 上下文切换 + +CPU 上下文切换的场景: +* 进程 +* 线程 +* 中断处理程序调用 + + +### 进程上下文切换 + +CPU的特权等级Ring 0 ~ Ring 3, 其中Ring 0 是内核态, 可以访问任何资源, 用户空间 Ring 3 用户态只能访问受限的资源,不能直接访问内存等硬件设备,必须通过系统调用陷入到内核中,才能访问特权资源. +在这个过程中就发生了CPU的上下文切换. + +> 系统调用和进程上下文切换到区别: +> 首先,进程是由内核来管理和调度的,进程的切换只能发生在内核态.所以进程的上下文不仅包含了虚拟内存,栈,全局变量等用户空间的资源,还包括了内核堆栈,寄存器等用户空间的资源,还包括了内核堆栈,寄存器等内核空间的状态. +> 因此,进程的上下文切换比系统调用多了一步:在保存当前进程的内核状态和CPU寄存器之前,需要先把该进程的虚拟内存,栈等保存下来;而加在了下一进程的内核太后,还需要刷新进程的虚拟内存和用户栈. +> 所以在进程频繁切换上下文导致CPU將大量的时间耗费在寄存器,内核栈一级虚拟内存等资源的保存和恢复上,进而缩短真正运行进程的时间. + +> 进程被调度到CPU执行的时机? +> 1, 某个进程的时间片耗尽,被系统挂起; +> 2, 进程系统资源不足(如内存不足),等到资源满足后才可以运行,进程被挂起; +> 3, 进程通过sleep主动挂起; +> 4, 高优先级进程运行时; +> 5, 发生硬件中断,CPU上的进程会被中断挂起,转而执行内核中的中断服务程序; + +### 线程上下文切换 + +**线程是基本的调度单位,而进程则是资源拥有的基本单位** +即: +* 当进程只有一个线程时,进程等于线程; +* 当进程拥有多个线程时,线程共享虚拟内存和全局变量等资源,这些资源在上下文切换(线程)时,不需要修改; +* 线程有自己的私有数据,如栈和寄存器等,这些在上下文切换需要保存. + +进程间的线程切换要比进程内的线程切换消耗更多的资源. + +### 中断上下文切换 + +中断处理会打断进程的正常调度和执行,转而调用中断处理程序,响应设备事件.被打断的进程需要将其当前的状态保存下来,这样在中断结束后,进程仍然可以从原来的状态恢复运行. +跟进程的上下文不同,中断上下文切换并不涉及到进程的用户态.所以即使中断打断了一个用户态的进程也不需要保存和恢复虚拟内存,全局变量等用户态资源. +对同一个CPU来说,中断处理比进程拥有更高的优先级.所以中断上下文切换不会与进程上下文切换同时发生.同样道理,由于中断会打断正常运行的进程的调度和执行,所以大部分的中断处理程序都短小精悍,以便尽快执行完毕. + +## 查看上下文切换 + +```shell +# 查看CPU的上下文切换和中断次数 +$ vmstat 5 +``` + +> cs (context swith) 每秒钟上下文切换的次数 +> in (interrupt) 每秒中断的次数 +> r 就绪队列的长度(正在运行的和等待CPU的进程数) +> b (Blocked) 处于不可中断睡眠转台的进程数 + + +## CPU的使用率 + +user(通常缩写为 us),代表用户态 CPU 时间。注意,它不包括下面的 nice 时间,但包括了 guest 时间。 + +nice(通常缩写为 ni),代表低优先级用户态 CPU 时间,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间。这里注意,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低。 + +> system(通常缩写为 sys),代表内核态 CPU 时间。 +idle(通常缩写为 id),代表空闲时间。注意,它不包括等待 I/O 的时间(iowait)。 +iowait(通常缩写为 wa),代表等待 I/O 的 CPU 时间。 +irq(通常缩写为 hi),代表处理硬中断的 CPU 时间。 +softirq(通常缩写为 si),代表处理软中断的 CPU 时间。 +steal(通常缩写为 st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的 CPU 时间。 +guest(通常缩写为 guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的 CPU 时间。 +guest_nice(通常缩写为 gnice),代表以低优先级运行虚拟机的时间。 + + diff --git a/_drafts/linux/2019-01-05-open_world_travel.md b/_drafts/linux/2019-01-05-open_world_travel.md new file mode 100644 index 00000000..58337870 --- /dev/null +++ b/_drafts/linux/2019-01-05-open_world_travel.md @@ -0,0 +1 @@ +资料[开源世界旅行手册](https://i.linuxtoy.org/docs/guide/index.html) diff --git a/_drafts/linux/2021-03-18-linux_swappiness_setting.md b/_drafts/linux/2021-03-18-linux_swappiness_setting.md new file mode 100644 index 00000000..c1f3e815 --- /dev/null +++ b/_drafts/linux/2021-03-18-linux_swappiness_setting.md @@ -0,0 +1,3 @@ +这个交换参数控制内核从物理内存移出进程,移到交换空间。该参数从0到100,当该参数=0,表示只要有可能就尽力避免交换进程移出物理内存;该参数=100,这告诉内核疯狂的将数据移出物理内存移到swap缓存中。 +文件地址: +/proc/sys/vm/swappiness diff --git a/_drafts/linux/2021-04-15-linux_mime_file_default_application.md b/_drafts/linux/2021-04-15-linux_mime_file_default_application.md new file mode 100644 index 00000000..bf4a9176 --- /dev/null +++ b/_drafts/linux/2021-04-15-linux_mime_file_default_application.md @@ -0,0 +1,39 @@ +--- +title: 设置Linux文件默认桌面程序 +category: Linux +tags: linux mime +--- + +## mimeapps.list + +Path | Usage +------------------------|---------- +~/.config/mimeapps.list |user overrides +/etc/xdg/mimeapps.list |system-wide overrides +~/.local/share/applications/mimeapps.list |(deprecated) user overrides +/usr/local/share/applications/mimeapps.list |distribution-provided defaults +/usr/share/applications/mimeapps.list |distribution-provided defaults + +## 查看现在桌面程序应用的desktop文件 + +> desktop 文件的位置:~/.local/share/applications /usr/share/applications + +## 查看文件类型 + +```shell +$ xdg-mime query filetype <文件路径> +``` + +## 设置文件类型 + +```shell +$ xdg-mime default +``` + + + + +## 参考的文件 + +[XDG MIME Applications](https://wiki.archlinux.org/index.php/XDG_MIME_Applications) +[Desktop entries](https://wiki.archlinux.org/index.php/Desktop_entries) diff --git a/_drafts/linux/2021-04-26-linux_fcitx5_config.md b/_drafts/linux/2021-04-26-linux_fcitx5_config.md new file mode 100644 index 00000000..cf0cff38 --- /dev/null +++ b/_drafts/linux/2021-04-26-linux_fcitx5_config.md @@ -0,0 +1,8 @@ +--- +title: 设置Linux文件默认桌面程序 +category: Linux +tags: linux mime +--- + +## 修改中文字符映射 +修改文件:/usr/share/fcitx5/punctuation/punc.mb.zh_CN diff --git "a/_drafts/mysql\347\264\242\345\274\225.md" "b/_drafts/mysql\347\264\242\345\274\225.md" index d246da4d..7d543e52 100644 --- "a/_drafts/mysql\347\264\242\345\274\225.md" +++ "b/_drafts/mysql\347\264\242\345\274\225.md" @@ -1,4 +1,4 @@ -MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则: +MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则 (1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。 (2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。 diff --git "a/_drafts/ZL\346\225\264\347\220\206\344\270\200\344\270\213\350\207\252\345\267\261\347\232\204\345\267\245\345\205\267.md" b/_drafts/note/2018-11-26_week.md similarity index 100% rename from "_drafts/ZL\346\225\264\347\220\206\344\270\200\344\270\213\350\207\252\345\267\261\347\232\204\345\267\245\345\205\267.md" rename to _drafts/note/2018-11-26_week.md diff --git a/_drafts/note/2018-11-end.md b/_drafts/note/2018-11-end.md new file mode 100644 index 00000000..2f56a6d3 --- /dev/null +++ b/_drafts/note/2018-11-end.md @@ -0,0 +1,46 @@ +# 11 月的事件清单 + +## MySql Explain OUT PUT + +> SIMPLE – the query is a simple SELECT query without any subqueries or UNIONs +> PRIMARY – the SELECT is in the outermost query in a JOIN +> DERIVED – the SELECT is part of a subquery within a FROM clause +> SUBQUERY – the first SELECT in a subquery +> DEPENDENT SUBQUERY – a subquery which is dependent upon on outer query +> UNCACHEABLE SUBQUERY – a subquery which is not cacheable (there are certain conditions for a query to be cacheable) +> UNION – the SELECT is the second or later statement of a UNION +> DEPENDENT UNION – the second or later SELECT of a UNION is dependent on an outer query +> UNION RESULT – the SELECT is a result of a UNION + +> type – how MySQL joins the tables used. This is one of the most insightful fields in the output because it can indicate missing indexes or how the query is written should be reconsidered. Possible values are: + +* system – the table has only zero or one row +* const – the table has only one matching row which is indexed. This is the fastest type of join because the table only has to be read once and the column’s value can be treated as a constant when joining other tables. +* eq_ref – all parts of an index are used by the join and the index is PRIMARY KEY or UNIQUE NOT NULL. This is the next best possible join type. +* ref – all of the matching rows of an indexed column are read for each combination of rows from the previous table. This type of join appears for indexed columns compared using = or <=> operators. +* fulltext – the join uses the table’s FULLTEXT index. +* ref_or_null – this is the same as ref but also contains rows with a null value for the column. +* index_merge – the join uses a list of indexes to produce the result set. The key column of EXPLAIN‘s output will contain the keys used. +* unique_subquery – an IN subquery returns only one result from the table and makes use of the primary key. +* index_subquery – the same as unique_subquery but returns more than one result row. +* range – an index is used to find matching rows in a specific range, typically when the key column is compared to a constant using operators like BETWEEN, IN, >, >=, etc. +* index – the entire index tree is scanned to find matching rows. +* all – the entire table is scanned to find matching rows for the join. This is the worst join type and usually indicates the lack of appropriate indexes on the table. + + +> ref – Shows the columns or constants that are compared to the index named in the key column. MySQL will either pick a constant value to be compared or a column itself based on the query execution plan. You can see this in the example given below. + +> Handler_read_* +> Handler_read_first : 读取索引的第一个条目的次数, 数量太大表明多次进行全索引扫描 +> Handler_read_key : 通过索引找到数据行的次数, 太大表明充分的使用了索引 +> Handler_read_last: +> Handler_read_next: + +# 时间都去哪里了, 过多的打断让上下文环境的切换导致 + +# build in -> build into + +使用编程语言的深度, 实现自己的想法 + + + diff --git a/_drafts/note/2018-12.md b/_drafts/note/2018-12.md new file mode 100644 index 00000000..36bd3e5d --- /dev/null +++ b/_drafts/note/2018-12.md @@ -0,0 +1,43 @@ +# 代码大全 + +6.2 Good Class Interface + +* 提供方法的相反的操作比如add/del, on/off +* 高内聚,移除不必要的逻辑 +* 约束性的行为进行封装 +* 最小了解原则 +* 方法定义如果还需要查看实现类,那就不是面向接口编程了 + +## 6.3 Design and Implementation Issues + + +# HTTP + +## MIME + +多用途Internet邮件扩展(MIME)类型 是一种标准化的方式来表示文档的性质和格式。 它在IETF RFC 6838中进行了定义和标准化。互联网号码分配机构(IANA)是负责跟踪所有官方MIME类型的官方机构,您可以在媒体类型页面中找到最新的完整列表。 + +MIME类型对大小写不敏感,但是传统写法都是小写。 + +型 描述 典型示例 +text 表明文件是普通文本,理论上是人类可读 text/plain, text/html, text/css, text/javascript +image 表明是某种图像。不包括视频,但是动态图(比如动态gif)也使用image类型 image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon +audio 表明是某种音频文件 audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav +video 表明是某种视频文件 video/webm, video/ogg +application 表明是某种二进制数据 +application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdfjj + + + +Multipart 类型节 +multipart/form-data +multipart/byteranges + +Multipart 类型表示细分领域的文件类型的种类,经常对应不同的 MIME 类型。这是复合文件的一种表现方式。multipart/form-data 可用于联系 HTML Forms 和 POST 方法,此外 multipart/byteranges使用状态码206 Partial Content来发送整个文件的子集,而HTTP对不能处理的复合文件使用特殊的方式:将信息直接传送给浏览器(这时可能会建立一个“另存为”窗口,但是却不知道如何去显示内联文件。) + + +text/plain 表示文本文件的默认值。一个文本文件应当是人类可读的,并且不包含二进制数据。 +application/octet-stream 表示所有其他情况的默认值。一种未知的文件类型应当使用此类型。浏览器在处理这些文件时会特别小心, 试图避免用户的危险行为. + + + diff --git a/_drafts/oodesign/chain-of-responsibility.md b/_drafts/oodesign/chain-of-responsibility.md index 5a83b3ac..763d026d 100644 --- a/_drafts/oodesign/chain-of-responsibility.md +++ b/_drafts/oodesign/chain-of-responsibility.md @@ -40,8 +40,8 @@ comments: true ```java public class Request { - private int m_value; - private String m_description; + private int m_value; + private String m_description; public Request(String description, int value) { diff --git a/_drafts/spring-boot-draft.md b/_drafts/spring-boot-draft.md new file mode 100644 index 00000000..f8f4838a --- /dev/null +++ b/_drafts/spring-boot-draft.md @@ -0,0 +1,2 @@ +mvn dependency:tree + diff --git a/_drafts/xxl_job.md b/_drafts/xxl_job.md new file mode 100644 index 00000000..3405f12a --- /dev/null +++ b/_drafts/xxl_job.md @@ -0,0 +1,7 @@ +## 对象 + +XxlJobRegistry : 业务注册(不同的业务注册,包括业务的ip,端口) + +## xxl-job-admin + +## diff --git a/_includes/comments.html b/_includes/comments.html index 2f7258a1..e3a5d7f5 100644 --- a/_includes/comments.html +++ b/_includes/comments.html @@ -1,11 +1,13 @@ -
- - diff --git a/_includes/comments_discus.html b/_includes/comments_discus.html new file mode 100644 index 00000000..2f7258a1 --- /dev/null +++ b/_includes/comments_discus.html @@ -0,0 +1,11 @@ +
+ + diff --git a/_includes/head.html b/_includes/head.html index 65e92f06..a5ed1c53 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -18,7 +18,12 @@ + + + + diff --git a/_layouts/blog.html b/_layouts/blog.html index 4d01ccc3..56a86927 100644 --- a/_layouts/blog.html +++ b/_layouts/blog.html @@ -29,7 +29,7 @@

{{ content }}

转载请注明来源: http://www.codingted.com{{page.url}}
- 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论(可能需要在能访问 disqus 服务的网络),也可以邮件至 {{site.email}}

+ 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 {{site.email}}

diff --git a/_posts/2015-02-10-welcome-to-jekyll.markdown b/_posts/2015-02-10-welcome-to-jekyll.md similarity index 100% rename from _posts/2015-02-10-welcome-to-jekyll.markdown rename to _posts/2015-02-10-welcome-to-jekyll.md diff --git a/_posts/arts/2019-03-19-arts_week_0.md b/_posts/arts/2019-03-19-arts_week_0.md new file mode 100644 index 00000000..55fc5404 --- /dev/null +++ b/_posts/arts/2019-03-19-arts_week_0.md @@ -0,0 +1,172 @@ +--- +title: ARTS(第0周) +category: ARTS +tags: arts +--- + +# ARTS(第0周) + +> 每周完成一个ARTS: +> 1. Algorithm:每周至少做一个 leetcode 的算法题 +> 2. Review:阅读并点评至少一篇英文技术文章 +> 3. Tip:学习至少一个技术技巧 +> 4. Share:分享一篇有观点和思考的技术文章 + +> **本周提纲:** +> 1. Algorithm: 无重复字符最长子串 +> 2. Review: 一个谷歌工程师编码解决问题的过程 +> 3. Tip: Jenkins REST API 触发任务执行 +> 4. Share: 关于负载均衡的一切(58沈剑) + + + +## Algorithm + +[无重复字符最长子串](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) + +**描述** + +> 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 +> +>示例 1: +> +>>输入: "abcabcbb" +>>输出: 3 +>>解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 +> +>示例 2: +> +>>输入: "bbbbb" +>>输出: 1 +>>解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 +> +>示例 3: +> +>>输入: "pwwkew" +>>输出: 3 +>>解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 +> +> **请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。** + +**实现的思路** + +> 将遍历过的字符放在Hash表中(key: 读入的字符串,value:字符在字符串中的序号),每次读入字符都判断该字符串是否已经在Hash表中存在: +> * 如果存在,需要重新判断最大子串的开始位置,并且计算开始位置到遍历位置的字符个数,继续读入后续的字符 +> * 如果不存在,读入后续字符 +> * 时间复杂度:O(n), 空间复杂度:O(n) + +```python +class Solution: + def lengthOfLongestSubstring(self, s: str) -> int: + + dic = dict() + maxLen = 0 + tempMaxLen = 0 + startCharIndex = 0 + for index,val in enumerate(tuple(s)): + if val in dic: + if tempMaxLen > maxLen: + maxLen = tempMaxLen + i = dic[val] + #print("%s, last index is %d, current index:%d, startCharIndex:%d" %(val, i, index, startCharIndex)) + if startCharIndex > i: + tempMaxLen = index - startCharIndex + 1 + else: + tempMaxLen = index - i# tempMaxLen = index - i + 1 + startCharIndex = i + 1 + #print("reset tempMaxLen:", tempMaxLen) + dic[val] = index + + else: + dic[val] = index + tempMaxLen += 1 + #print("add %s index:%d"%(val,index)) + #print("tempmaxLent:%d, maxLen:%d" % (tempMaxLen, maxLen)) + return max(maxLen, tempMaxLen) +``` + +[大牛的解法,贴在下边](https://leetcode-cn.com/submissions/detail/15031482/) +```python +class Solution: + def lengthOfLongestSubstring(self, s): + """ + :type s: str + :rtype: int + """ + substring = '' + longestlength = 0 + + for le in s: + if le not in substring: + substring = substring + le + else: + if len(substring) > longestlength: + longestlength = len(substring) + + substring = substring[substring.index(le)+1:] + substring = substring + le + + if len(substring) > longestlength: + longestlength = len(substring) + + return longestlength +``` + +## Review + +[How a Googler solves coding problems](https://blog.usejournal.com/how-a-googler-solves-coding-problems-ec5d59e73ec5) + +**一个谷歌工程师编码解决问题的过程** + +给出的例子: +> 给定两个字符串`sourceString`和`searchString`,返回`sourceString`第一次出现`searchString`的位置,如果不包含`searchString`则返回`-1` + +解决的过程: + +1. 画出来 +拿到问题就开始编码,可能是一种低效的解决问题的方式,作者建议我们首先要分析问题,甚至不要使用写代码的方式来思考问题,把问题画下来,针对一些具体的问题来画出解决的方案(算法)。 + +2. 写出解决的逻辑步骤 +用语言描述需要解决的问题步骤: +> 1. 从字符串的开头开始扫描 +> 2. 查找`searchString`长度的字符串数组 +> 3. 找到返回当前字符串的数组下标 +> 4. 如果查询到最后没找到则返回`-1` + +3. 伪代码 +``` +for each index in sourceString, + N = searchString.length + POSSIBLE_MATCH = sourceString[index to index+N] + if POSSIBLE_MATCH === searchString: + return index +return -1 +``` +4. 转换成代码 +这一步可能存在一些实际的函数和方法的使用问题,完成主要的逻辑后再来回过头处理这些需要解决的细节问题 +5. 明确代码中每一步的逻辑 +每一句代码都要明确它的目的,否则这很可能会是以后冒出bug的地方 +> 就像前面的 **Algorithm**部分的代码`tempMaxLen = index - i# tempMaxLen = index - i + 1`,以前有个`+1`的运算,如果Hash表中的当前字符的历史位置在现在统计子字符串起始位置之后需要那么新的自字符串的长度为当前的新的字符位置`index` - `i`,为什么不`+1`(上面的if的逻辑中有`+1`),就是因为`startCharIndex = i + 1`(这里`+1`了) + +## Tip +最近在做一个决策平台,数据是通过各个平台的数据汇总得到的,但是因为是不同公司在维护的系统,所以数据的修改受到了限制,目前实现的思路是通过数据的更新时间来做数据的增量同步(通过在jenkins的定时任务来执行脚本实现定时的数据同步),现在有一个需求可以由用户主动触发数据同步,后来发现jenkins提供了相应的api进行任务的触发。 + +[Jenkins REST API](https://wiki.jenkins.io/display/JENKINS/Remote+access+API) + +## Share +[关于负载均衡的一切](https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651961763&idx=1&sn=ac77119dfc8b78a8275dc4b2e64d1d3f&chksm=bd2d0c7f8a5a8569e6663cdde804a9ec078048e3e08b8522aefbb5057aded1dd9b853131e4e2&scene=21#wechat_redirect) + +来自`58沈剑`的公众号`架构师之路` + +本文提到了常见的负载均衡的方案可以考虑的点: +* 客户端层 +> 通过`DNS轮询` +* 反向代理层 +> `nginx`(泛指一切反向代理) +* 站点层 +* 服务层 +> 站点层到服务层使用`服务连接池`(我理解就是微服务) +* 数据层 +> 涉及到数据层切分 +> 1. 数据均衡,数据量是均衡的 +> 2. 请求均衡,请求量是均衡的 diff --git a/_posts/arts/2019-04-04-arts_week_1.md b/_posts/arts/2019-04-04-arts_week_1.md new file mode 100644 index 00000000..db8156e5 --- /dev/null +++ b/_posts/arts/2019-04-04-arts_week_1.md @@ -0,0 +1,182 @@ +--- +title: ARTS(第1周) +category: ARTS +tags: arts +--- + +# ARTS(第1周) + +> 每周完成一个ARTS: +> 1. Algorithm:每周至少做一个 leetcode 的算法题 +> 2. Review:阅读并点评至少一篇英文技术文章 +> 3. Tip:学习至少一个技术技巧 +> 4. Share:分享一篇有观点和思考的技术文章 + +> **本周提纲:** +> 1. Algorithm: 最长回文子串 +> 2. Review: 什么时候以及为什么使用最少使用(LFU)缓存与Golang中的实现 +> 3. Tip: 一个vim插件`vim-surround`使用 +> 4. Share: 我必须告诉大家的MySQL优化原理 + + + +## Algorithm + +[最长回文子串](https://leetcode-cn.com/problems/longest-palindromic-substring/) + +**描述** + +> 给定一个字符串,找出最大的回文字符串(回文字符串:正读反读都一样的字符串.eg: a aba abba ...) +> +> 示例 1: +> +>> 输入: "babad" +>> 输出: "bab" +>> 注意: "aba" 也是一个有效答案。 +> 示例 2: +> +>> 输入: "cbbd" +>> 输出: "bb" +> + +**实现的思路** + +> 设置一个头指针和一个尾指针 +> * 尾指针每次前移一个位置,检查头尾指针间的字符串是否为回文字符串直到头尾指针所指的位置一致停止 +> + 检测到回文字符串则记录当前回文字符串是否是最长的,如果是则重置最大回文字符串的值,然后将头指针指向尾指针所指的位置(因为在这之间不可能再有最大回文字符串了) +> + 未检测到回文字符串尾指针前移 + +```python +class Solution: + def longestPalindrome(self, s: str) -> str: + """ + :type s:str + :rtype: int + """ + strLen = len(s) + i = 0 + maxPdr = "" + for i in range(0,strLen): + iEnd = strLen + while i < iEnd: + temp = s[i:iEnd] + reverTemp = temp[::-1] + if temp == reverTemp: + maxPdr = temp if len(maxPdr) < len(temp) else maxPdr + i = iEnd - 1 + break + else: + iEnd = iEnd - 1 + return maxPdr +``` + +## Review + +[When and Why to use a Least Frequently Used (LFU) cache with an implementation in Golang](https://ieftimov.com/post/when-why-least-frequently-used-cache-implementation-golang/) + +## Tip +介绍一个vim的快速添加‘环绕字符’(eg: '',"",xml标签),省去了来回移动光标的操作 +[vim-surround](https://github.com/tpope/vim-surround) + +```shell +#常用操作 + +# 替换: cs"' +"Hello world!" -> 'Hello world!' + +# 替换-标签(t=tag): cst" +abc -> "abc" + +cst +abc -> abc + +# 删除: ds" +"Hello world!" -> Hello world! + +# 添加(ys=you surround): ysiw" +Hello -> "Hello" + +# 添加: csw" +Hello -> "Hello" + +# 添加-整行: yss" +Hello world -> "Hello world" + +# 添加段落: ySS" +Hello world -> +" + hello world + " + +# 添加-两个词: veeS" +hello world -> "hello world" + +# 添加-当前到行尾: ys$" + +# 左符号/右符号 => 带不带空格 +cs([ + (hello) -> [ hello ] + +cs(] + (hello) -> [hello] +``` +## Share +[我必须告诉大家的MySQL优化原理](https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247487949&idx=1&sn=511adecca65154fd9fc7f9cf5047e5ff&chksm=ebd62ee1dca1a7f7330ebcd9429a8bb0c274c9b621b39256042043a017723fd80b5249302e24&mpshare=1&scene=24&srcid=&pass_ticket=lMXQ4p26y6CqIePcjTdYn9yazMYtVCmHy8HFY3vHcl3ymry0kK6Oq1qSonPO4Jk8#rd) + +MySQL查询优化的建议: + +1. 首先了解MySQL的逻辑架构 +![mysql逻辑架构]({{ site.img_server }}/arts/mysql_design.png) +2. MySQL的查询过程 +![mysql查询过程]({{ site.img_server }}/arts/mysql_search_seq.png) + * 客户端/服务端通信协议 + + 客户端和服务端的通信是“半双工”,所以两端不能同时发送数据 + + 如果查询缓存是打开的,那么MySQL会检查是否命中缓存 + * 查询缓存 + * 语法解析和预处理 + * 查询优化 + + 重新定义表关联 + + 优化`MIN()` 和 `MAX()`函数 + + 提前终止查询 + + 优化排序 + + ... ... + * 查询执行引擎 + * 返回结果给客户端 + + 查询结果缓存(缓存被打开) +> 回头总结一下MySQL整个查询执行过程,总的来说分为5个步骤: +> +> * 客户端向MySQL服务器发送一条查询请求 +> * 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段 +> * 服务器进行SQL解析、预处理、再由优化器生成对应的执行计划 +> * MySQL根据执行计划,调用存储引擎的API来执行查询 +> * 将结果返回给客户端,同时缓存查询结果 + +3. 性能优化建议 +> 不要听信你看到的关于优化的“绝对真理”(试用自己的才是最好的,业务!业务!业务!) + * Scheme设计与数据类型优化 + + 小而简单的数据类型 + + `NULL` 列改为 `NOT NULL`不会明显提升性能,只有计划在该列上创建索引时,就应该将列设置为`NOT NULL` + + 对整数类型设置宽度是没有作用的,数据类型的大小是确定的(只有字段使用`ZEROFILL`,在显示的时候如果位数不够是会添加前导零的) + + `DATETIME`使用8个字节存储空间,`TIMESTAMP`使用4个字节因而,TIMESTAMP只能表示1970 - 2038年,比DATETIME表示的范围小得多,而且TIMESTAMP的值因时区不同而不同。 + + schema列不要太多 + * 创建高性能索引 + ![mysql多路索引]({{ site.img_server }}/arts/mysql_index_b-tree.png) + + 带有表达式计算的不会使用索引 + + 前缀索引可以降低索引空间提高效率 + + 多列索引和索引顺序 + + > 当出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引。 + > 当出现多个索引做联合操作时(多个OR条件),对结果集的合并、排序等操作需要耗费大量的CPU和内存资源,特别是当其中的某些索引的选择性不高,需要返回合并大量数据时,查询成本更高。所以这种情况下还不如走全表扫描。 + + + 多条件那个能更好的缩减数据量那个索引列放在前面 + + 避免多个范围条件 + + 覆盖索引(结果列都是索引中的值) + + 避免冗余和重复索引 + + 删除长期未使用的索引 + * 特定类型优化 + + 优化count()查询 + + 优化关联查询 + > 只需要在关联顺序中第二张表的相应列上创建索引 + > 确保`GROUP BY` 和 `ORDER BY` 中的列只涉及到一个表的列 + + 优化UNION + diff --git a/_posts/arts/2019-04-13-arts_week_2.md b/_posts/arts/2019-04-13-arts_week_2.md new file mode 100644 index 00000000..c4de3124 --- /dev/null +++ b/_posts/arts/2019-04-13-arts_week_2.md @@ -0,0 +1,127 @@ +--- +title: ARTS(第2周) +category: ARTS +tags: arts +--- + +> **本周提纲:** +> +> 1. Algorithm: 最长公共前缀 +> 2. Review: 预示你在编程方面很逊的10件事 +> 3. Tip: 阿里巴巴开源数据迁移框架DataX +> 4. Share: 缓存架构,一篇足够(58沈剑) + + + +## Algorithm + +[14.最长公共前缀](https://leetcode-cn.com/problems/longest-common-prefix/) + +### 描述 + +> 编写一个函数来查找字符串数组中的最长公共前缀。 +> +> 如果不存在公共前缀,返回空字符串 ""。 +> 示例 1: +> +> 输入: ["flower","flow","flight"] +> 输出: "fl" +> +> 示例 2: +> +> 输入: ["dog","racecar","car"] +> 输出: "" +> 解释: 输入不存在公共前缀。 +> 说明: +> +> 所有输入只包含小写字母 a-z 。 + +### CODE + +```python +class Solution: + def longestCommonPrefix(self, strs: List[str]) -> str: + """ + :type strs :List[str] + :rtype str + """ + if len(strs) == 0: return "" + # 按照字母表顺序获取最大值和最小值(进行了简单的排序) + s1, s2 = min(strs), max(strs) + zobj = zip(s1,s2) + rstr = "" + for i,j in list(zobj): + if i != j: + return rstr + rstr += i + return rstr +``` + +## Review + +[10 Signs You Will Suck at Programming](https://blog.usejournal.com/10-signs-you-will-suck-at-programming-5497a6a52c5c) [预示你在编程方面很逊的10件事] + +> 作者是一个编程的教育工作者,总结的10件事我觉得是可以套用到大多数的行业的 + +1. 缺少好奇心 + + > 好奇心(兴趣)是干好一件事情的基础,有了好奇心才能是不那么折磨的过程。 + > 干一件事情首先要问自己“这是我感兴趣的事情吗?”如果答案是“否”那就别在这件事情上浪费时间了,如果答案是“是”那就全情投入的去展现自己的好奇心吧! + +2. 缺少自主性和工具包 + + > 遇到问题要积极主动的思考,自主的寻找答案或者接近答案,在解决问题的过程中丰富自己的工具包 + +3. 面对问题缺少坚持 + + > 程序世界就是一个接一个的问题,思考问题解决问题,才能更快更好的解决新的问题 + +4. 缺少解决问题的成就感 + + > 苦海无边,苦中作乐(要不怎么面对接踵而至的Bug) + +5. 缺少学习和理解的耐心 + + > 技术之门深似海,没有学习的耐性怎么行 + +6. 对于思考这件事感到乏味或者感到累 + + > 思考就像锻炼身体,越练越强壮 + +7. 无法独立思考 + + > 多看,多学,多想 + +8. 死板,狭隘,混乱的思想 + + > OPEN YOUR MIND + +9. 只追求结果正确而不关注不同的解决方法之间的好与坏 + + > 关注错误才能避免错误 + +10. 不关注细节 + + > 细节有时候是决定性的 + +## Tip + +DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 + +GitHub地址:[https://github.com/alibaba/DataX](https://github.com/alibaba/DataX) + +## Share + +[缓存架构,一篇足够](https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651961368&idx=1&sn=82a59f41332e11a29c5759248bc1ba17&chksm=bd2d0dc48a5a84d293f5999760b994cee9b7e20e240c04d0ed442e139f84ebacf608d51f4342&scene=21#wechat_redirect) + +来自`58沈剑`的公众号`架构师之路` + +本文提到了选择缓存的一些参考点: + +1. 介绍进程内缓存(常见的redis/memcache等为进程外缓存服务) +2. redis和memcache怎么选 +3. 缓存的误用 +4. 究竟是淘汰缓存还是修改缓存 +5. 先操作数据库,还是先操作缓存(考虑具体的应用场景灵活应用) +6. 缓存与数据库不一致(主从数据库导致,通过订阅binlog触发缓存淘汰策略) +7. 主从数据库不一致 diff --git a/_posts/arts/2019-04-19-arts_week_3.md b/_posts/arts/2019-04-19-arts_week_3.md new file mode 100644 index 00000000..8cc10295 --- /dev/null +++ b/_posts/arts/2019-04-19-arts_week_3.md @@ -0,0 +1,120 @@ +--- +title: ARTS(第3周) +category: ARTS +tags: arts +--- + +> **本周提纲:** +> +> 1. Algorithm: 删除排序数组中的重复项 +> 2. Review: 开发需要了解的编码/加密/哈希/盐/密钥扩展 +> 3. Tip: NATAPP内网穿透 +> 4. Share: InnoDB锁 + + + +## Algorithm + +[26. 删除排序数组中的重复项](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/) + +### 描述 + +> 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 +> 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 +> +>> 示例 1: +>> +>> 给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 [1,2]。 +>> +>> 你不需要考虑数组中超出新长度后面的元素。 +>> +>> 示例 2: +>> +>> 给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 [0,1,2,3,4]。 +>> +>> 你不需要考虑数组中超出新长度后面的元素。 + +### CODE + +```python +class Solution: + def removeDuplicates(self, nums: List[int]) -> int: + """ + :type nums :List[int] + :rtype int + """ + if len(nums) <= 1: + return len(nums) + i = 0 + for j in range(1, len(nums)): + if nums[i] != nums[j]: + i += 1 + nums[i] = nums[j] + return i+1 +``` + +## Review + +[What devs need to know about Encoding / Encryption / Hashing / Salting / Stretching](https://hackernoon.com/what-devs-need-to-know-about-encoding-encryption-hashing-salting-stretching-76a3da32e0fd)[开发需要了解的编码/加密/哈希/盐/密钥扩展] + +### 编码(Encoding) + +我们常说的base64, unicode, UTF-8就是编码。 + +编码的过程是将字符或符号转换为等效的记号,听起来很像加密,他们之间的最大的区别就是加密/解密需要密钥但是编码不需要。 + +### 加密(Encryption) + +两种加密方式: + +1. 对称加密(Symmetric Key Encryption) +2. 非对称加密(Asymmetric Key Encryption) + +#### 非对称加密 + +TLS (https)和PGP就是使用非对称加密的典型应用。更多的关于RSA的请看[这篇论文](http://csjournals.com/IJITKM/PDF%207-2/26.%20navpreet.pdf) + +#### 对称加密 + +加密和解密的密钥是同一个。 + +比较差的密钥实现:`所有信息使用固定密钥`和`密钥过于简单` + +### 熵(Entropy) + +熵测量在密码学中使用随机数据的方式。 用户的密码往往具有较低的熵,因为它可以很容易被猜到或被暴力破解。 + +我们如何解决这个问题? 我们如何拥有完全随机的数据,以及只有用户才知道的东西? 这就是'哈希'的用武之地。 + +### 哈希(Hashing) + +哈希将数据转换成固定长度的值来代表原来的数据。 + +例如:MD5(是一种哈希算法,通常我们说的‘MD5加密算法’是不准确的), 加密得到128bit(通常显示为32个16进制的字符)。不管多大的文件或者0长度的字符串,MD5产生的哈希值都是128bit。 + +MD5只是一个单向的哈希算法,我们不可能通过128bit的值得到原始数据。但是使用`彩虹表`破解密码 + +### 盐(Salting) + +在密码的前边或后边添加字符串(盐)然后进行hash。 + +要保证盐有足够的长度和随机性(Cryptographically Secure Pseudo-Random Number Generator,伪随机数产生器) + +只有加密hash函数(cryptographic hash functions)可以用来进行密码的hash。这样的函数有SHA256, SHA512, RipeMD, WHIRLPOOL等。 + +### 密钥扩展(Stretch) + +增加破解的时间,需要更强的算力 + +## Tip + +[NATAPP](https://natapp.cn/),开启你的内网穿透之旅(微信开发真的是太方便了) + +## Share + +[InnoDB 锁]({{ site.blog_url }}/2019/01/21/InnoDB_Locking.html) + +## 参考链接 + +[加盐hash保存密码的正确方式](http://ju.outofmemory.cn/entry/68152) +[What devs need to know about Encoding / Encryption / Hashing / Salting / Stretching](https://hackernoon.com/what-devs-need-to-know-about-encoding-encryption-hashing-salting-stretching-76a3da32e0fd) diff --git a/_posts/arts/2019-04-26-arts_week_4.md b/_posts/arts/2019-04-26-arts_week_4.md new file mode 100644 index 00000000..87f8baa3 --- /dev/null +++ b/_posts/arts/2019-04-26-arts_week_4.md @@ -0,0 +1,140 @@ +--- +title: ARTS(第4周) +category: ARTS +tags: arts +--- + +> **本周提纲:** +> +> 1. Algorithm: 搜索旋转排序数组 +> 2. Review: rework谷歌关于高效团队的研究 +> 3. Tip: Arthas:Alibaba开源的Java诊断工具 +> 4. Share: javascrip 控制台太命令不止console.log() + + + +## Algorithm + +[33.搜索旋转排序数组](https://leetcode-cn.com/problems/search-in-rotated-sorted-array/) + +### 描述 + +>假设按照升序排序的数组在预先未知的某个点上进行了旋转。 +> +>( 例如,数组 `[0,1,2,4,5,6,7]` 可能变为 `[4,5,6,7,0,1,2]` )。 +> +>搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 `-1` 。 +> +>你可以假设数组中不存在重复的元素。 +> +>你的算法时间复杂度必须是 `O(log n)` 级别。 +> +>示例 1: +> +>>输入: nums = [4,5,6,7,0,1,2], target = 0 +>>输出: 4 +> +>示例 2: +> +>>输入: nums = [4,5,6,7,0,1,2], target = 3 +>>输出: -1 + +### 代码 + +```python +import sys +class Solution: + def search(self, nums: List[int], target: int) -> int: + """ + :type nums :List[int] + :type target :int + :rtype :int + """ + lo = 0 + hi = len(nums) + while lo != hi: + mid = (lo+hi)//2 + midNum = nums[mid] if (nums[mid] < nums[0]) == (target < nums[0]) else (-sys.maxsize if target < nums[mid] else sys.maxsize) + if midNum < target: + lo = mid + 1 + elif midNum > target: + hi = mid + else: + return mid + return -1 +``` + +## Review + +[rework](https://rework.withgoogle.com/print/guides/5721312655835136/) + +谷歌通过调查内部高效团队形成的指导文章,旨在回答“什么使一个谷歌团队变的高效?”。 + +### 定义“团队” + +Teams VS Work group + +工作组(Work group)的特点是相互依赖程度最低,人们基于组织或管理层级,定期开会听取和分享信息。 +团队(Teams)是高度相互依赖,他们计划工作,解决问题,做出决策,并审查特定项目的服务进度。团队成员需要一起完成工作。 + +### 定义“高效” + +“更多代码行不一定是好事,更多错误修复意味着最初创建更多错误”。 + +谷歌的评价标准(兼顾团队目标/执行/领导/团队成员): + +1. 评估团队的执行能立 +2. 团队领导评估 +3. 团队成员评估 +4. 销售业绩按季度配额 + +### 收集数据评估效率 + +采用“双盲”测试收集员工的观点(‘同意’或‘不同意’),诸如: + +* 团队:我可以在团队安全的表达不同意见 +* 技能组合: 我能克服工作中的难题 +* 人格特质: 我是一个可以信赖的合作者 +* 情绪智力: 我对其他成员的问题不感兴趣 +* ... ... + +### 寻找高效团队的特点 + +“研究人员发现,真正重要的不是关于谁在团队中,而是关于团队如何合作的更多信息。” + +* 心理安全: 指个人对人际交往风险的后果的看法,或者认为团队在被视为无知,无能,消极或破坏性时面临冒险风险的信念。 在一个心理安全性很高的团队中,队友可以安全地为团队成员带来风险。 他们相信团队中的任何人都不会因承认错误,提出问题或提出新想法而使任何其他人感到尴尬或受到惩罚 +* 可靠性:在可靠的团队中,成员可靠地按时按量完成工作(相反的表现则是:推卸责任)。 +* 结构化和清晰:个人对工作期望的理解,实现这些期望的过程以及一个人绩效的后果对团队效率很重要。 目标可以在个人或组级别设置,并且必须具体,具有挑战性且可实现。 Google经常使用目标和关键结果(OKR)来帮助设定和沟通短期和长期目标。 +* 意义:在工作本身或输出中找到目标感对团队效率很重要。 工作的意义是个人的,可以有所不同:例如,财务安全,支持家庭,帮助团队成功,或者为每个人自我表达。 +* 影响:一个人的工作成果,即你的工作产生影响的主观判断,对团队来说很重要。 看到一个人的工作有助于组织的目标可以帮助获取影响。 + +### 帮助团队行动 + +* 心理安全 + * 征求小组的意见和意见。 + * 分享有关个人和工作方式偏好的信息,并鼓励其他人也这样做。 + * 观看[Amy Edmondson关于心理安全的TED演讲](https://youtu.be/LhoLuui9gX8)。 +* 可靠性 + * 明确团队成员的角色和责任。 + * 制定具体的项目计划,为每个人的工作提供透明度。 + * 谈谈一些[尽责的研究](http://www.businessinsider.com/conscientiousness-predicts-success-2014-4)。 +* 结构化的清晰的 + * 定期沟通团队目标,确保团队成员了解实现目标的计划。 + * 确保您的团队会议有明确的议程和指定的领导者。 + * 考虑采用[目标和关键结果(OKR)](http://www.businessinsider.com/conscientiousness-predicts-success-2014-4)来组织团队的工作。 +* 意义 + * 为团队成员提供积极的反馈,帮助他们完成他们正在做的事情,并提供帮助他们解决的问题。 + * 公开表达对帮助你的人的感激之情。 + * 有目的地阅读[KPMG的案例研究](https://rework.withgoogle.com/case-studies/KPMG-purpose/)。 +* 影响 + * 共同创建一个清晰的愿景,强化每个团队成员的工作如何直接促进团队和更广泛的组织目标。 + * 反思您正在做的工作以及它如何影响用户或客户以及组织。 + * 采用以用户为中心的评估方法,关注用户。 + +## Tip + +[Arthas:Alibaba开源的Java诊断工具](https://alibaba.github.io/arthas/) + +## Share + +[JavaScript console is more than console.log()](https://medium.com/devgorilla/the-console-object-provides-access-to-the-browsers-debugging-console-354eda9d2d50) diff --git a/_posts/db/2019-01-10-db_isolation.md b/_posts/db/2019-01-10-db_isolation.md new file mode 100644 index 00000000..78df360e --- /dev/null +++ b/_posts/db/2019-01-10-db_isolation.md @@ -0,0 +1,43 @@ +--- +title: 数据库隔离级别 +category: db +tags: db isolation +--- + +## 数据库隔离级别 + +事务之间对于数据的可见性 + +隔离级别 |脏读(Dirty Read) |不可重复读(NonRepeatable Read) |幻读(Phantom Read) +|-----------------------------|------|-------|---- +未提交读(Read uncommitted,RU)|可能 |可能 |可能 +已提交读(Read committed,RC) |不可能 |可能 |可能 +可重复读(Repeatable read,RR) |不可能 |不可能 |可能 +可串行化(SERIALIZABLE) |不可能 |不可能 |不可能 + + + +### 未提交读(Read uncommitted,RU) + +是最低的隔离级别。允许“脏读”(dirty reads),事务可以看到其他事务“尚未提交”的修改。 + +### 已提交读(Read committed,RC) + +基于锁机制并发控制的DBMS需要对选定对象的写锁一直保持到事务结束,但是读锁在SELECT操作完成后马上释放(因此“不可重复读”现象可能会发生,见下面描述)。和可重复读(Repeatable read,RR)隔离级别一样,也不要求“范围锁”。 + +### 可重复读(Repeatable read,RR) + +基于锁机制并发控制的DBMS需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求“范围锁”,因此可能会发生“幻影读”。 + +### 可串行化(SERIALIZABLE) + +最高的隔离级别。 + +在基于锁机制并发控制的DBMS实现可串行化,要求在选定对象上的读锁和写锁保持直到事务结束后才能释放。在SELECT 的查询中使用一个“WHERE”子句来描述一个范围时应该获得一个*范围锁(range-locks)*。这种机制可以避免“幻读”(phantom reads)现象。 + +## 参考链接 + +[MySQL Gap Lock问题](https://www.cnblogs.com/diegodu/p/9239200.html) +[事务隔离](https://en.wikipedia.org/wiki/Isolation_(database_systems)) +[innodb locking transaction model](https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-transaction-model.html) +[innodb transaction isolation levels](https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html) diff --git a/_posts/db/mysql/2017-06-21-MyISAM.md b/_posts/db/mysql/2017-06-21-MyISAM.md index 660ba215..1b97eed3 100644 --- a/_posts/db/mysql/2017-06-21-MyISAM.md +++ b/_posts/db/mysql/2017-06-21-MyISAM.md @@ -19,6 +19,7 @@ MySQL最大的优势在于MyISAM引擎下的简单SELECT,INSERT和UPDATE快速 MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。 以下是一些细节和具体实现的差别: + 1. InnoDB不支持FULLTEXT类型的索引。 2. InnoDB 中不保存表的具体行数,也就是说,执行*select count() from table*时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的操作是一样的。 @@ -28,7 +29,7 @@ PACK_KEYS参数来指定索引压缩方式 1. MyISAM表的存储格式 -> 当表不包含变量长度列(VARCHAR, BLOB, 或TEXT)时,使用这个格式。每一行用固定字节数存储。 + > 当表不包含变量长度列(VARCHAR, BLOB, 或TEXT)时,使用这个格式。每一行用固定字节数存储。 2. 静态(固定长度)表特征 diff --git a/_posts/db/mysql/2018-06-27-Mysql_operate_sql.md b/_posts/db/mysql/2018-06-27-Mysql_operate_sql.md new file mode 100644 index 00000000..23cbc6c3 --- /dev/null +++ b/_posts/db/mysql/2018-06-27-Mysql_operate_sql.md @@ -0,0 +1,98 @@ +--- +title: "mysql常用操作" +categories: db mysql +tags: db mysql +comments: true +--- + +## 用户管理 + +```sql +-- 新建用户 +CREATE USER name IDENTIFIED BY 'password'; + +-- 更改密码 +SET PASSWORD FOR name=PASSWORD('password'); + +-- 查看name用户权限 +SHOW GRANTS FOR name; + +-- 给用户user的db_name的增,改,查权限 +GRANT SELECT, INSERT, UPDATE ON `db_naem`.* TO 'user'@'127.0.0.1'; + +-- 收回更新权限 +REVOKE UPDATE ON db_name.* TO user; +``` + + + + +## DDL操作 + +数据定义语言(Data Definition Lanuage, DDL)定义了数据库模式,包括CREATE、ALTER、DROP、TRUNCATE、COMMENT与RENAME语句。 + +```sql +-- CRATE +CREATE TABLE mgr( + id INT , + name VARCHAR(20), + age INT + ); + +-- ALTER + +-- 修改列类型与列名 +alter table mgr modify name varchar(32); +alter table mgr change name real_name varchar(64); + +-- 追加列 +alter table mgr add gender bit(3) NOT NULL COMMENT '性别' after id; + +-- 修改列之间的顺序: +alter table mgr modify gender bit(3) after name; + +-- 修改primary key: +alter table mgr drop primary key, add primary key (`id`,`name`); + +-- 表重命名 +RENAME TABLE name_old TO name_new; +ALTER TABLE name_old RENAME name_new; + +-- DROP +drop table mgr; + +-- TRUNCAT +truncat mgr; + +``` +## DML操作 + +数据定义语言(Data manipulation language, DML)主要用于表达数据库的查询与更新,主要包括增删改查(INSERT,UPDATE,DELETE,SELECT)。 + +## 数据库状态查询 + +```sql +-- 查看数据库中可用的表 +show tables; + +-- 查看表结构 +desc mgr; +show columns in mgr; + +-- 查看表的状态 +SHOW TABLE STATUS; +-- +``` + +## 技巧 + +```sql +-- 快速复制 +create table mgr2 select * from mgr; +-- 复制部分 +create table mgr2 select id,name,age from mgr; + +-- 创建临时表 +CREATE TEMPORARY TABLE tmp_mgr; +``` + diff --git a/_posts/db/mysql/2019-01-21-InnoDB_Locking.md b/_posts/db/mysql/2019-01-21-InnoDB_Locking.md new file mode 100644 index 00000000..6a586942 --- /dev/null +++ b/_posts/db/mysql/2019-01-21-InnoDB_Locking.md @@ -0,0 +1,100 @@ +--- +title: InnoDB 锁分类 +category: db +tags: MySQL lock +--- + +## 共享/排它锁(Shared and Exclusive Locks) + +InnoDB实现了标准的行级锁:shared(S) lock 和 exclucive(X) lock + +1. 事务获得某一行的共享S锁才可以读取这一行,允许多个事务持有某一行的共享S锁(读读可以并行) +2. 事务获取某一行的排它X锁可以对这一行尽心`修改`或`删除`,不允许多个事务同时持有某一行的排它X锁(读写,写写不可以并行) + +> 注意: 如果事务T1已经获取了某一行的共享S锁,此时如果T2想要获取改行的排它X锁是不能立即获取的 + +## 意向锁(Intention Locks) + +意向锁是一种`表锁`,支持多粒度锁定(multiple granularity locking),允许行锁和表锁共存。 + +1. 意向共享锁(intention shared lock, IS),它预示着,事务有意向对表中的某些行加共享S锁 +2. 意向排它锁(intention exclusive lock, IX),它预示着,事务有意向对表中的某些行加排它X锁 + +> 举个例子: +> +> SELECT ... FOR SHARE 设置的是意向共享锁(IS锁) +> SELECT ... FOR UPDATE 设置的是意向排它锁(IX锁) + +意向锁的协议如下: + +1. 一个事务在获取共享S锁之前,需要获取意向共享锁(IS锁)或者更强的锁; +2. 一个事务在获取排它X锁之前,需要获取意向排它锁(IX锁)。 + +| | X |IX |S |IS +--|-----------|---------|-----------|-- +X | Conflict |Conflict | Conflict |Conflict +IX| Conflict |Compatible| Conflict|Compatible +S | Conflict |Conflict |Compatible |Compatible +IS| Conflict |Compatible| Compatible|Compatible + +## 记录锁(Record Locks) + +锁住`索引记录`。 + +例如: `select * from t where id = 10 for update` 对于id=10的记录的修改,插入,删除操作都会失败。(而普通的`select * from t where id = 10` 在RR隔离级别下只是`快照读`(SnapShot Read),并不加锁) + +## 间隙锁(Gap Locks) + +间隙锁是在索引的间隙加的锁,主要目的是为了防止其他事务在间隔中插入数据,以导致`不可重复读`。 + +如果事务隔离级别降低为读提交(Read Commited, RC)则间隙锁会失效。 + +例如,`SELECT c1 FROM t WHERE c1 BETWEEN 10 and 20 FOR UPDATE;`将阻止其他事务将值15插入到列t.c1中,无论列中是否已存在任何此类值,因为该范围内所有现有值之间的间隔都被锁定。但是可以进行范围内的值的UPDATE操作。 + +## 临键锁(Next-key Locks) + +临键锁,是记录锁与间隙锁的组合,它的封锁范围,既包含索引记录,又包含索引区间。 + +临键锁的主要目的,是为了避免幻读(Phantom Read) + +## 插入意向锁(Insert Intention Locks) + +多个事务,在同一个索引,同一个范围区间插入记录时,如果插入的位置不冲突,不会阻塞彼此。 + +## 自增锁(Auto-inc Locks) + +自增锁是一种特殊的表级别锁(table-level lock),专门针对事务插入AUTO_INCREMENT类型的列。最简单的情况,如果一个事务正在往表中插入记录,所有其他事务的插入必须等待,以便第一个事务插入的行,是连续的主键值。 + +使用[innodb_autoinc_lock_mode](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode)可以配置自增锁的行为,它允许你选择如何在可预测的自动增量值序列和插入操作的最大并发之间进行权衡。 + +```SQL +-- 数据库状态 +SHOW ENGINE INNODB STATUS; + +-- 数据库事务锁的状态 +USE INFORMATION_SCHEMA +SELECT * FROM INNODB_LOCK_WAITS; + +-- 事务详情 +SELECT * FROM INNODB_LOCKS +WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS); +OR +SELECT INNODB_LOCKS.* +FROM INNODB_LOCKS +JOIN INNODB_LOCK_WAITS + ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID); + +-- 具体表的锁情况 +SELECT * FROM INNODB_LOCKS +WHERE LOCK_TABLE = db_name.table_name; +A list of transactions waiting for locks: + +--事务状态 +SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY +FROM INNODB_TRX +WHERE TRX_STATE = 'LOCK WAIT'; + +[事务隔离级别]({{ site.blog_url }}/2019/01/10/db_isolation.html) +[InnoDB并发插入,居然使用意向锁](https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651961461&idx=1&sn=b73293c71d8718256e162be6240797ef&chksm=bd2d0da98a5a84bfe23f0327694dbda2f96677aa91fcfc1c8a5b96c8a6701bccf2995725899a&scene=21#wechat_redirect) +[InnoDB,select为啥会阻塞insert](https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651961471&idx=1&sn=da257b4f77ac464d5119b915b409ba9c&chksm=bd2d0da38a5a84b5fc1417667fe123f2fbd2d7610b89ace8e97e3b9f28b794ad147c1290ceea&scene=21#wechat_redirect) +[innnodb consistent read](https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html) diff --git a/_posts/db/mysql/2019-08-30-Mysql_transaction.md b/_posts/db/mysql/2019-08-30-Mysql_transaction.md new file mode 100644 index 00000000..35d9ff08 --- /dev/null +++ b/_posts/db/mysql/2019-08-30-Mysql_transaction.md @@ -0,0 +1,151 @@ +--- +title: Mysql事务 +category: db +tags: MySQL +--- + +极客时间"Mysql实战45讲"讲的真是很精彩,看到事务的文章更是感到茅塞顿开,下边写下整理,以备后面思考! + +## 隔离性和隔离级别 + +事务绕不开的ACID: +* Atomicity(原子性) +* Consistency(一致性) +* Isolation(隔离性) +* Durability(持久性) + +当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了“隔离级别”的概念。 + +事务标准的隔离级别: +* 读未提交(read uncommited):可以读到其它事务未提交的数据 +* 读提交(read committed):事务提交的数据可以读到 +* 可重复读(repeatable read):事务执行中读到的数据和启动事务时的数据一致 +* 串行化(serializable):对同一行数据采用"读锁"和"写锁"保证在读写冲突的时候后访问的事务必须要等前一个事务执行完成,才能继续执行. + +当然隔离级别越高,效率越差! + +> 注意: +> 不同数据库的行为是不同的.Oracle数据库的默认隔离级别是"读提交",这一点在Oracle迁移到Mysql的应用需要考虑是否需要设置MySQL的隔离级别设置为"读提交". +> 设置启动参数`transaction-isolation`为**READ-COMMITTED** +> `mysql> show variable like 'transactin_isolation'` + + + + +## 事务隔离级别的实现 + +更新操作的同时数据库会记录一条回滚操作.记录的最新值可以通过回滚操作得到前面的状态的值. + +下图是一个值从 1被顺序改成 2,3,4时,在回滚日志中的记录示意图 + +![回滚日志示意图]({{ site.img_server }}/db/mysql_undo_log.png) + +不同时刻启动的事务会有不同的read-view.同一条记录在系统中可以存在多个版本,即使数据库的多版本并发控制(MVCC). + +> 回滚日志什么时间删除呢? +> 答案: 不需要的时候. +> +> 如何判断什么时间是不需要的时候? +> 答案: 系统没有比这个回滚日志更早的read-view的时候. + +基于上面的回滚日志的删除时机, 建议尽量不使用长事务. + +## 事务的启动方式 + +1. 显示启动事务.begin 或 start transaction,配套使用commit,rollback可以结束事务. +2. `set autocommit=0`,这个设置会将自动提交关闭,这意味着即使执行一个select语句,这个事务并没有自动提交,这个事务会持续存在,知道主动执行 commit或rollback语句或者断开连接. + +> Tips: +> +> 建议总是使用 `set autocommit=1` , 通过显式语句的方式来启动事务. +> 但是有的开发同学会纠结“多一次交互”的问题。对于一个需要频繁使用事务的业务,第二种方式每个事务在开始时都不需要主动执行一次 “begin”,减少了语句的交互次数。如果你也有这个顾虑,建议你使用 commit work and chain 语法。 +> 可以在 `information_schema` 库的 `innodb_trx` 这个表中查询长事务,比如下面这个语句,用于查找持续时间超过 60s 的事务。 + +```sql +select * from information_schema.innodb_trx where TIME_TO_SEC(timediff(now(),trx_started))>60 +``` + +## 事务执行的例子 + +事务A |事务B |事务C +--------|-------|-------- +start transaction with consistent snapshot; | | + |start transaction with consistent snapshot;| + | |update t set k=k+1 where id = 1; + |update t set k=k+1 where id = 1;| + |select k from t where id = 1;| +select k from t where id = 1;|| +commit; | | + |commit;| + +** 例子中没有特别说明都是autocommit=1 ** + +## 事务的启动时机 +begin/start transaction 并不是事务的起点,在之习惯到他们之后的地一个操作的InnoDB表的语句,事务才真正的启动.想要马上启动事务,可以使用`start transaction with consistent snapshot` + +> 第一种启动方式,一致性试图实在执行地一个快照读语句是创建的; +> 第二种启动方式,一致性试图是在执行`start transaction with consistent snapshot`时创建的. + +所以上面的例子事务A和事务B实在创建就开始了,事务C本身执行update语句就是一个事务,语句完成自动提交. + +> 例子查询的执行结果: +> 事务B查到的k的值是3,事务A查到的k的值是1 + +(如果和自己分析的不一致,请带着问题往下看) + +在 MySQL 里,有两个“视图”的概念: + +* 一个是 view。它是一个用查询语句定义的虚拟表,在调用的时候执行查询语句并生成结果。创建视图的语法是 create view … ,而它的查询方法与表一样。 +* 另一个是 InnoDB 在实现 MVCC 时用到的一致性读视图,即 consistent read view,用于支持 RC(Read Committed,读提交)和 RR(Repeatable Read,可重复读)隔离级别的实现。 + +## "快照"在MVCC是如何工作的 + +> 每一事务在启动时都会生成一个唯一的事务id(transaction id),在数据库的事务系统中是按顺序严格递增的 + +这里的"快照"并不是完全拷贝的整库,而是在每个事务更新数据会生成一个新的数据版本,并且把transaction id 赋值给这个数据版本的事务id,记为row trx_id.同时保留就的数据版本记录. +也就是说,数据表中的一行记录,其实是有多个版本,每个版本有自己的row trx_id. + +![数据的多个版本]({{ site.img_server }}/db/row_trx_id.png) + +图中的虚线箭头就是undo log(回滚日志),而V1,V2,V3并不是物理存在的而通过当前版本和undo log 计算出来的. + +一个事务在启动时就相当于声明了"以我启动的时刻为准,如果一个数据版本是在我启动之前生成的,就认;如果是我启动以后才生成的,我就不认,我必须要找到它的上一个版本" + +当然,如果“上一个版本”也不可见,那就得继续往前找。还有,如果是这个事务自己更新的数据,它自己还是要认的。 + +假设事务A,事务B,事务C的id分别为100,101,102, 并且在这之前最后一个变更该数据版本的事务id为99,并且执行完成之后的值为1. + +根据事务的隔离规则我们可能得出的结论是:事务A的查询结果是1, 事务B的查询结果是2, (但是细想一下这不是丢失了事务C的更新结果?不符合逻辑呀) +整个的执行过程: +1. 事务C执行过后k的当前版本的值是2 +2. 事务B执行更新操作需要在当前版本的基础上进行更新,重点说明:确实,如果在update之前查询k的值得到的应该一直是1,但是更新数据都是先读后写,而这个读只能读取当前的值,成为"当前读"(current read),因此实在k=2的基础之上进行更新,得到k的值为3 +3. 事务B执行查询操作,得到之前在本事务中更新的k的值3 +4. 事务A因为一直存在于自己的一致性视图中所以查询到的值是1 + +## 例子执行的变体 + +事务A |事务B |事务C +--------|-------|-------- +start transaction with consistent snapshot; | | + |start transaction with consistent snapshot;| + | |start transaction with consistent snapshot; + | |update t set k=k+1 where id = 1; + |update t set k=k+1 where id = 1;| + |select k from t where id = 1;| + | |commit; +select k from t where id = 1;|| +commit; | | + |commit;| + +提示:需要考虑事务在该记录上添加的排它锁(两阶段锁协议). + +## 总结 + +现在回答,事务的可重复读的能力是怎么实现的? + +> 可重复读的核心就是一致性读(consistent read);而事务更新数据的时候,只能用当前读。如果当前的记录的行锁被其他事务占用的话,就需要进入锁等待。 + +读提交的可重复读的主要区别: + +* 在可重复读隔离级别下,只需要在事务开始的时候创建一致性视图,之后事务里的其他查询都共用这个一致性视图; +* 在读提交隔离级别下,每一个语句执行前都会重新算出一个新的视图。 diff --git a/_posts/java/2020-06-15-Lambda_java.md b/_posts/java/2020-06-15-Lambda_java.md new file mode 100644 index 00000000..fb58875b --- /dev/null +++ b/_posts/java/2020-06-15-Lambda_java.md @@ -0,0 +1,9 @@ +--- +title: "函数式编程和Lambda表达式" +categories: java +tags: java +comments: true +--- + +# 引用链接地址 +[github地址](https://github.com/CarpenterLee/JavaLambdaInternals) diff --git a/_posts/linux/2016-07-05-linux_env_setting.md b/_posts/linux/2016-07-05-linux_env_setting.md index 7e5765ce..2624f94f 100644 --- a/_posts/linux/2016-07-05-linux_env_setting.md +++ b/_posts/linux/2016-07-05-linux_env_setting.md @@ -2,7 +2,6 @@ title: env环境变量 category: linux tags: env -comments: true --- * content diff --git a/_posts/linux/2017-06-18-oh_my_zsh_install.md b/_posts/linux/2017-06-18-oh_my_zsh_install.md index 27531403..905b1405 100644 --- a/_posts/linux/2017-06-18-oh_my_zsh_install.md +++ b/_posts/linux/2017-06-18-oh_my_zsh_install.md @@ -1,15 +1,14 @@ --- title: oh my zsh install categories: linux -tags: shell -comments: true +tags: linux shell --- ## Basic install ``` -sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" apt install zsh +sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" ``` diff --git a/_posts/linux/2017-12-15-tmux.md b/_posts/linux/2017-12-15-tmux.md index c16654ca..eace9433 100644 --- a/_posts/linux/2017-12-15-tmux.md +++ b/_posts/linux/2017-12-15-tmux.md @@ -45,9 +45,11 @@ bind C-a send-prefix 命令 | 说明 --------------|--------------- +`C-b` ? | 列出所有快捷键 `C-b` [ | 开始复制 `C-b` ] | 粘贴复制内容 `C-b` d | 退出tmux,并保存当前会话,可以通过 tmux attach 进入指定的会话 +`C-b` D | 选择要脱离的会话 `C-b` ? | 显示帮助 `C-b` t | 在当前面板显示时钟 `C-b` s | 以菜单的形式显示和选择会话 @@ -60,10 +62,11 @@ bind C-a send-prefix `C-b` p | 上一个窗口 `C-b` n | 下一个窗口 `C-b` c | 创建新窗口 -`C-b` l | 最近使用的一个窗口 `C-b` w | 选择一个窗口 `C-b` , | 重命名一个窗口 +`C-b` . | 修改当前窗口的编号 `C-b` & | 关闭当前的窗口 +`C-b` f | 在所有窗口查找指定的文本 ### 管理面板命令 @@ -71,10 +74,12 @@ bind C-a send-prefix --------------|--------------- `C-b` % | 纵向分屏 `C-b` " | 横向分屏 +`C-b` l | 最近使用的一个面板 `C-b` ; | 切换到最后一个使用的面板 `C-b` 方向键 | 选择分割面板 -`C-b` C-方向键| 调整面板的大小 -`C-b` q | 显示分割面板编号 +`C-b` C-方向键| 调整面板的大小(以1个单位调整) +`C-b` Alt-方向键| 调整面板的大小(以5个单位调整) +`C-b` q | 显示分割面板编号(在显示编号期间键入编号可有跳转到相应的面板) `C-b` o | 调到下一个分割面板 `C-b` C-o | 调整面板位置,类似vim中的C-w `C-b` x | 关闭当前面板 @@ -83,7 +88,7 @@ bind C-a send-prefix `C-b` { | 将当前的面板移动到上一个位置 `C-b` } | 将当前的面板移动到下一个位置 `C-b` C-o | 逆时针旋转所有面板(up) -`C-b` M-o | 顺时针旋转所有面板(down) +`C-b` Alt-o | 顺时针旋转所有面板(down) `C-b` :move-pane -t :3.2 | 将当前面板移动到第三个窗口的第2个面板(将该面板分割) @@ -141,3 +146,4 @@ unbind Up; bind Up resize-pane -Z; unbind Down; bind Down resize-pane -Z ## 参考链接 [http://mingxinglai.com/cn/2012/09/tmux/](http://mingxinglai.com/cn/2012/09/tmux/) +[https://www.cnblogs.com/kevingrace/p/6496899.html](https://www.cnblogs.com/kevingrace/p/6496899.html) diff --git a/_posts/linux/2018-01-08-awk_in_action.md b/_posts/linux/2018-01-08-awk_in_action.md deleted file mode 100644 index dce2d07b..00000000 --- a/_posts/linux/2018-01-08-awk_in_action.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: awk实用程序 -category: linux -tags: linux awk -comments: true ---- - - -## 介绍 - -`AWK`是一种为文本处理设计的编程语言,通常用作数据处理.是`Unix-like`系统中的标准功能.[wiki](https://en.wikipedia.org/wiki/AWK) - -## 基本操作 - -```shell -# 输出包含word字符串的行 -$ awk '/word/' file - -# 对第一个字段里匹配到Ted或者ted的行进行显示 -$ awk '$1 ~ /[Tt]ed/' file - -# 显示不是以ly结尾的行 -$ awk '$1 !~ /ly$/' file - -# 显示最后一个字段 -$ awk '{print $NF}' file - -# 查找计数 -$ awk '/Ted/{count++}END{print "Ted found " count " times."}' file -``` - - - -## 比较运算 - -awk所有的运算都是浮点运算 - -### 比较运算符 - -运算符 | 含义 |例子 ---------|-------|----- -< | 小于 | -<= | 小于等于| -== | 等于 | -!= | 不等于| -> | 大于 | ->= | 大于等于| -~ | 正则匹配| ~/word/ -!~ | 正则不匹配| !~/word/ - -### 逻辑运算符 - -运算符 | 含义 |例子 ---------|-------|----- -&& | 与 | a && b -|| | 或 | a || b -! | 非 | !a - -### 变量 - -``` -# 赋值 -name = "Ted" - -# 初始化0然后+1 -number++ - -# 字符串强转为数字 -name + 0 - -# 数字转换为字符串 -number "" - -``` - -#### BEGIN模式 - -BEGIN模式后跟的操作块,awk会在处理输入文件之前先执行该操作块中的内容。 - -#### END模式 - -END模式不匹配任何输入行,而是执行任何与之关联的的操作。awk处理玩所有的输入行才处理END模式 -## POSIX字符类 - -括号类 | 含义 -------------|----------- -[:alnum:] | 字母数字 -[:alpha:] | 字母 -[:cntrl:] | 控制字符 -[:digit:] | 数字字符 -[:graph:] | 非空白字符(非空格,控制字符) -[:lower:] | 小写字母 -[:print:] | 与graph类似只是包含空格 -[:punct:] | 标点 -[:space:] | 所有空白字符(换行/空格/制表符) -[:upper:] | 大写字母 -[:xdigit:] | 允许十六进制的数字 - - diff --git a/_posts/linux/2018-04-11-vim_without_plugin.md b/_posts/linux/2018-04-11-vim_without_plugin.md index 36113eb7..0c0e5377 100644 --- a/_posts/linux/2018-04-11-vim_without_plugin.md +++ b/_posts/linux/2018-04-11-vim_without_plugin.md @@ -38,7 +38,7 @@ tags: vim ```shell :buffer 4 # 或者 -:buffer + ``` 上图中,我们还可以看到编号后边有一个%a,这表示当前文件,相关的标记如下: diff --git a/_posts/linux/2018-04-23-restore_linux_laptop.md b/_posts/linux/2018-04-23-restore_linux_laptop.md new file mode 100644 index 00000000..b75d6ed7 --- /dev/null +++ b/_posts/linux/2018-04-23-restore_linux_laptop.md @@ -0,0 +1,154 @@ +--- +title: Ubuntu安装后的软见配置 +category: linux +tags: linux Ubuntu +--- + +# 简介 + +因为升级了Ubuntu的新版本导致图形界面启动不了,试过了重新安装显卡驱动,修改启动的参数...,最终还是要重新安装系统,前提是你需要备份自己的`/home`目录, 以及其它的修改的配置文件,但是以往安装的软件需要进行重新安装,本文记录了我在重装后安装的一些工具和重置的一些配置,**为了下一次的重装系统**(生命不息,折腾不止!!!) + +# 恢复环境 + +## 更新软件源 + +```bash +$ sudo apt update +``` +## 网络相关 + +### 安装Chrome + +```bash +# chromium-bowser 是chrome的开源版本,可以在软件源中直接下载 +$ sudo apt install chromium-bowser +``` +安装代理插件[proxy SwichyOmega](https://pan.baidu.com/s/1P6EyhF96TasEpOjoBEgQsw) +启动代理开启google模式([代理服务器介绍](http://www.codingted.com/2017/08/26/proxy.html)) + + + +### 安装shadowsocks(附:安装pip) + +安装pip + +```bash +# 安装pip +$ sudo apt install python3-pip +``` + +安装sslocal + +```bash +# 安装shadowsocks +$ sudo pip3 install shadowsocks + +# sslocal -c ~/shadowsock/conf/path +``` + +## 挂载备份的目录 + +```bash +# 查看本机的分区表 +$ sudo fdisk -l + +# 找到相应的分区挂在到对应的目录 +$ mount /dev/sd<你的分区号a/b/c...> /mnt/home_back + +# 改变目录的所属的用户,要不然在拷贝的时候每次都需要改 +$ sudo chown 用户名:用户组 -R /mnt/home_back +``` + +## 恢复vim+tmux + +```bash +# clone dotfile +$ git clone git@github.com:codingted/dotfiles.git ~/.dotfiles +``` +### 配置vim + +```bash +# 设置`.vimrc`软链接 +$ ln -s ~/.vimrc ~/.dotfiles/vim/vimrc + +# 配置vundle([vundle.vim](https://github.com/VundleVim/Vundle.vim)) +$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim + +# 打开vim,输入:PluginInstall, 等待安装完成 +``` + +### 配置tmux + +```bash +# 配置`.tmux.conf`软链接(就可以恢复了) +$ ln -s ~/.tmux.conf ~/.dotfiles/tmux/tmux.conf +``` + +## 其它工具 + +### google拼音输入法 + +虽然sogou输入法更加适合中国人的输入习惯,但是安装起来比较麻烦而且适配的也不太稳定,所以直接就安装google的了 + +```bash +# 安装fcitx +$ sudo apt-get install fcitx fcitx-googlepinyin im-config + +# 配置输入法(选择fcitx为默认的输入法框架) +$ im-config + +``` +### Shutter(截图工具) + +```bash +# Shutter 截屏工具 +$ sudo apt-get install shutter + +$ shutter -s # 选择区域截图 +$ shutter -a # 截取活动区域 +$ shutter -w # 截取窗口 +$ shutter -f # 截取真个屏幕 +``` +### okular(PDF阅读) + +```bash +$ sudo apt-get install okular +``` +### oh-my-zsh(终极shell) + +[oh my zsh install](http://www.codingted.com/2017/06/18/oh_my_zsh_install.html) + +### task(todoList) + +```bash +# 安装 +$ sudo apt install taskwarrior + +# 历史的任务 +$ cp -r /mnt/home_back/home/zl/.task* ~/ +``` + +### nodejs(node相关环境) + +```bash +$ sudo apt install nodejs +$ sudo apt install npm +``` + +### youtube_dl(下载youtube视频的工具) + +```bash +$ sudo apt install youtube_dl +``` + +### calibre(电子文档阅读软件mobi,epub) + +[calibre官网地址](https://calibre-ebook.com/) + +### idea快捷键冲突 + +```bash +# 修改完立即生效 +$ gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "['']" +$ gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "['']" +``` diff --git a/_posts/linux/2018-04-26-linux_modify_eth0.md b/_posts/linux/2018-04-26-linux_modify_eth0.md new file mode 100644 index 00000000..cfc8fb39 --- /dev/null +++ b/_posts/linux/2018-04-26-linux_modify_eth0.md @@ -0,0 +1,39 @@ +--- +title: 修改网卡为eth0 +category: linux +tags: network linux +--- + +* sudo vi /etc/default/grub + +> 找到GRUB_CMDLINE_LINUX="" +> 改为GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" +> 然后sudo grub-mkconfig -o /boot/grub/grub.cfg +> 重启后,网卡名称就变成了eth0和wlan0 + +* 打开ubuntu的/etc/network/interfaces文件默认的内容如下: + +```bash +# 开启本地 +auto lo +iface lo inet loopback + +# 自动获取ip +#auto eth0 +#iface eth0 inet dhcp +# 静态ip地址 +iface eth0 inet static +address 10.1.22.34 +gateway 10.1.22.254 +address 192.168.1.21 +gateway 192.168.1.1 +netmask 255.255.255.0 +# dns +dns-nameservers 219.141.136.10 219.141.140.10 +dns-nameservers 114.114.114.114 +dns-nameservers 8.8.8.8 +``` + +重启 + +转自:[ubuntu16.04修改网卡名称enp2s0为eth0](https://blog.csdn.net/wenwenxiong/article/details/52937539) diff --git a/_posts/linux/2018-07-06-bash_shortcuts.md b/_posts/linux/2018-07-06-bash_shortcuts.md new file mode 100644 index 00000000..00615d5b --- /dev/null +++ b/_posts/linux/2018-07-06-bash_shortcuts.md @@ -0,0 +1,64 @@ +--- +title: bash快捷键 +categories: linux +tags: bash tools +comments: true +--- + +## 介绍 + +生活在Linux的世界中"效率党"必须要掌握一些高效的快捷键操作,下边来了解一下bash下的快捷键 + +## 快捷键 + +快捷键 | 说明 +------------|--------------- +`C-c` | 终止一个前台的进程(INT signal) +`C-z` | 挂起一个前台的进程(当然也可以在执行命令之前使用当然也可以在执行命令之后使用'&')( TSTP signal) +`C-^` | 终止一个前台的进程(QUIT signal) +`C-d` | 关闭输入流(EOF, End-Of-File) +`C-l` | 清空屏幕 +`C-a` | 定位到命令行的开头 +`C-e` | 定位到命令行的结尾 +`C-f` | 按字符前移 +`C-b` | 按字符后移 +`A-f` | 按单词前移 +`A-b` | 按单词后移 +`C-u` | 删除整行 +`C-k` | 删除至命令行尾 +`C-w` | 向命令行尾删除每次删除一个单词 +`A-d` | 光标处删除至字尾 +`C-d` | 删除光标处的字符 +`C-h` | 删除光标前的字符 +`C-y` | 粘贴至光标 +`A-c` | 修改光标出的字母为大写并跳到下一个单词首字母 +`A-u` | 从光标处修改为全部大写 +`A-i` | 从光标出更改为全部小写 +`C-t` | 交换光标处和之前的字符 +`A-t` | 交换光标处和之前的单词 +`A-Backspace`| 交换光标处和之前的单词 +`C-t` | 交换光标处和之前的字符 + + + + +## Bang (!) 命令 + +快捷键 | 说明 +------------|--------------- +!! | 执行上一条命令 +!blah | 执行最近的以 blah 开头的命令,如 !ls +!blah:p | 仅打印输出,而不执行 +!$ | 上一条命令的最后一个参数,与 Alt + . 相同 +!$:p | 打印输出 !$ 的内容 +!* | 上一条命令的所有参数 +!*:p | 打印输出 !* 的内容 +^blah | 删除上一条命令中的 blah +^blah^foo | 将上一条命令中的 blah 替换为 foo +^blah^foo^ | 将上一条命令中所有的 blah 都替换为 foo + +## 参考链接 + +[https://linuxtoy.org/archives/bash-shortcuts.html](https://linuxtoy.org/archives/bash-shortcuts.html) + +[https://linuxhandbook.com/linux-shortcuts/](https://linuxhandbook.com/linux-shortcuts/) diff --git a/_posts/linux/2018-08-14-cron_usage.md b/_posts/linux/2018-08-14-cron_usage.md new file mode 100644 index 00000000..29034b69 --- /dev/null +++ b/_posts/linux/2018-08-14-cron_usage.md @@ -0,0 +1,15 @@ +--- +title: cron简单使用 +category: linux +tags: cron +--- + +# 介绍 + +> cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业 + + +# 参考链接 +[https://www.jianshu.com/p/d6d8d9f7f60c](https://www.jianshu.com/p/d6d8d9f7f60c) +[https://wiki.archlinux.org/index.php/Cron_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)](https://wiki.archlinux.org/index.php/Cron_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)) + diff --git a/_posts/linux/2018-08-14-rsync_back_home.md b/_posts/linux/2018-08-14-rsync_back_home.md new file mode 100644 index 00000000..db267570 --- /dev/null +++ b/_posts/linux/2018-08-14-rsync_back_home.md @@ -0,0 +1,44 @@ +--- +title: rsync同步数据 +category: linux +tags: rsync +--- + +# 介绍 + +> rsync 全名 Remote Sync,是类unix系统下的数据镜像备份工具。 + +## 语法 +```shell +rsync [OPTION]... SRC DEST +rsync [OPTION]... SRC [USER@]host:DEST +rsync [OPTION]... [USER@]HOST:SRC DEST +rsync [OPTION]... [USER@]HOST::SRC DEST +rsync [OPTION]... SRC [USER@]HOST::DEST +rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] +``` + +## 六种工作模式 + +1. 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:`rsync -a /data /backup` +2. 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:`rsync -avz *.c foo:src` +3. 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:`rsync -avz foo:src/bar /data` +4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:`rsync -av root@192.168.78.192::www /databack` +5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:`rsync -av /databack root@192.168.78.192::www` +6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:`rsync -v rsync://192.168.78.192/www` + +## 常用参数 + +```shell +-v verbose 详细输出 +-a 归档模式,递归方式传输文件,并保持连接,权限,用户和组,时间信息 +-z 压缩文件传输 +-h human-readable, 输出友好 +``` + + + +# 参考链接 +[http://man.linuxde.net/rsync](http://man.linuxde.net/rsync) +[http://einverne.github.io/post/2017/07/rsync-introduction.html](http://einverne.github.io/post/2017/07/rsync-introduction.html) +[https://www.cnblogs.com/kevingrace/p/6601088.html](https://www.cnblogs.com/kevingrace/p/6601088.html) diff --git a/_posts/linux/2018-09-13-linux_kernel_about.md b/_posts/linux/2018-09-13-linux_kernel_about.md new file mode 100644 index 00000000..376c342c --- /dev/null +++ b/_posts/linux/2018-09-13-linux_kernel_about.md @@ -0,0 +1,68 @@ +--- +title: Linux内核操作 +category: linux +tags: kernel linux +--- + +## 查看内核信息 + +```sh +# 显示所有信息 +$ uname -a +``` +> `Linux ubu1804 4.15.1-041501-generic #201802031831 SMP Sat Feb 3 18:32:13 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux` + +```sh +# 显示内核信息 +$ uname -rs +``` +> `Linux 4.15.1-041501-generic` + + + +## 更新内核 + +*下载内核* + +```sh +# 32-Bit System +$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17/linux-headers-4.17.0-041700_4.17.0-041700.201806041953_all.deb +$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17/linux-headers-4.17.0-041700-generic_4.17.0-041700.201806041953_i386.deb +$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17/linux-image-4.17.0-041700-generic_4.17.0-041700.201806041953_i386.deb + +# 64-Bit System +$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17/linux-headers-4.17.0-041700_4.17.0-041700.201806041953_all.deb +$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17/linux-headers-4.17.0-041700-generic_4.17.0-041700.201806041953_amd64.deb +$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17/linux-image-unsigned-4.17.0-041700-generic_4.17.0-041700.201806041953_amd64.deb +``` + +**下载完成后安装** + +```sh +$ sudo dpkg -i *.deb +``` +重启后生效 + +## 卸载内核 + +```sh +$ sudo apt autoremove +``` +> 这个命令删除系统不再依赖的软件包,包括旧版本的内核文件`linux-headers-*`和`linux-image-*`(删除的同时会自动保留最近的内核作为备份) + +**删除指定的内核** + +* 使用synaptic软件进行卸载`sudo apt install synaptic` +* 命令行删除指定的内核 + +```sh +$ sudo apt remove --purge linux-image-4.4.0-21-generic +$ sudo update-grub2 +$ sudo reboot +``` + +# 参考 + +* [https://www.tecmint.com/upgrade-kernel-in-ubuntu/](https://www.tecmint.com/upgrade-kernel-in-ubuntu/) +* [https://askubuntu.com/questions/2793/how-do-i-remove-old-kernel-versions-to-clean-up-the-boot-menu](https://askubuntu.com/questions/2793/how-do-i-remove-old-kernel-versions-to-clean-up-the-boot-menu) +* [https://mirrors.edge.kernel.org/pub/linux/kernel/](https://mirrors.edge.kernel.org/pub/linux/kernel/) diff --git a/_posts/linux/2018-09-27-Vim_practical.md b/_posts/linux/2018-09-27-Vim_practical.md new file mode 100644 index 00000000..655bb2f7 --- /dev/null +++ b/_posts/linux/2018-09-27-Vim_practical.md @@ -0,0 +1,167 @@ +--- +title: vim 使用技巧-笔记 +category: linux +tags: linux vim +--- + +# 写在前面 + +一直再用vim作为自己的默认的文本编辑器,直到看到本书更了解了作为一个Vimer的路还有多远的路要走! + +> 成为一个Vimer,我的路程: +> +> 1. 了解vim的模式 +> 2. 基础实践 +> 3. <Vim实用技巧> +> 4. Vim内置文档使用 + + + +# 笔记 + +## 练习技巧 + +技巧4 执行/重复/回退 + +目的 | 操作 |重复 |后退 +------------|-----------|-----|------- +查找下一个指定字符| `f{char}`/`t{char}`| `;`| `,` + + +技巧10 用次数做简单的算数运算 + +> ``和``分别对应对数字执行加和减的操作 +> `10`將光标下的数字+10 + +技巧14 返回普通模式 + +> `` 切换到插入普通模式(在*插入*模式进行切换到*普通*模式执行完操作后重新回到插入模式) + +技巧15 不离开插入模式,粘贴寄存器中的文本 + +> `0`({register}, {register}就是想插入的寄存器的名字) +> `{register}` 会按原意插入寄存器的文本(避免不必要的换行和缩进) + +技巧16 随时随地做运算 + +> `=6*35` 运算结果插入当前光标所在的位置 + +技巧21 选择高亮选取 + +命令 | 用途 +--------|--------- +gv | 重选上次的高亮选区 +o | 切换高亮选区的活动端 +Vr{char}| 替换当前行为指定的字符 + +技巧28 在一行或多个连续行上执行命令 + +命令 | 结果 +--------|------ +:1 | 第一行 +:$ | 文件的末尾行 +:1,3 copy 16 (:1,3 co 16) | 將1-3行copy到第16行 +:.-3 co . | 將当前行上边的第三行copy到当前行 +:% | 表示当前文件的所有行 + +技巧29 使用‘:t’和‘:m’命令复制和移动行 + +技巧30 在指定范围执行普通模式命令 + +命令 | 结果 +--------|------- +:'<, '>normal . | 对选定区域执行上一次的操作 +:'<, '>normal A;| 选定区域的行末尾添加';' + +技巧31 重复上次的Ex命令 + +命令 | 结果 +--------|------- +@: | 重复上次的Ex命令(':'寄存器保存着最后执行的命令行命令), 如果执行过`@:`命令可以使用`@@`重复: + +技巧34 回溯命令历史 + +> ``和`` 可以切换命令行历史, 在不將手移到小键盘区的情况下可以使用``和``浏览命令历史 +> `set history=100`可以改变缓存的命令历史的记录数 + +命令 | 动作 +--------|-------- +q/ | 打开查找命令历史的命令行窗口 +q: | 打开Ex命令历史的命令行窗口 + | 从命令行模式切换到命令行窗口 + +技巧35 运行shell命令 + +> `2,$!sort -t ',' -k2` : 对文件中的内容进行排序 + +技巧39 將工作区切分成窗口 + +命令 | 用途 +--------|--------- +`s`| 水平切分当前窗口,新窗口显示当前缓冲区 +`v`| 垂直切分当前窗口,新窗口显示当前缓冲区 +:sp[lit] {file} | 水平切分当前窗口 +:vsp[lit] {file}| 垂直切分当前窗口 +`c`| 关闭活动窗口 +:clo[se]| 关闭活动窗口 +`o`| 只保留活动窗口,关闭其它窗口 +:on[ly] | 只保留活动窗口,关闭其它窗口 + +技巧40 用标签页將窗口分组 + +命令 | 用途 +--------------------|--------- +:tab[dit] {filename}| 新标签页打开 {filename} +`T` | 把当前窗口移动到一个新的标签页 +:tabc[lose] | 关闭当前的标签页及其中的所有窗口 +:tabo[nly] | 只保留活动标签页,关闭所有其它的标签页 + +*标签页切换* + +Ex命令 | 普通命令模式 | 用途 +------------|---------------|--------- +:tabn[ext] {N} | {N}gt | 切换到编号为{N}的标签 +:tabn[ext] | gt | 切换到下一标签页 +:tabp[revious]|gT | 切换到上一标签页 +:tabmove [N]| - | 移动标签(N为0移到开头,N省略移到末尾) + +技巧41 用:edit打开文件 + +*相对于活动目录打开文件* + +Ex命令 | 用途 +------------|--------- +:e[dit] %| Tab会补全当前的文件路径和文件名 +:e[dit] %:h| Tab会补全当前文件的父级目录 + +技巧42 使用:find打开文件 + +> :find 命令是在path及当前目录下查找文件(:h path) + +技巧43 使用netrw管理文件 + +操作 | 结果 +--------|------- +`-` | 返回上一级目录 +`` | 在文件和目录之间切换 +:e[dit] .| 打开文件管理器,并显示当前工作目录 +:E[xplore] | 打开文件管理器,并显示当前工作目录 + +技巧44 把文件保存到不存在的目录 + +操作 | 结果 +--------|------- +`` | 显示文件的名称及状态 +:!mkdir -p %:h | 创建当前文件的父目录 + +技巧X 列插入连续数字 + +操作 | 结果 +--------|------- +`:put=range(1,22)` | 在当前行开始插入连续数字行 +`:$pub=range(1,22)` | 在文件最后添加连续数字 +`:call append(123,range(11,15))` | 在123行后添加连续数字行 +`:for i in range(1,10) | put ='192.168.0.'.i | endfor` | 添加前缀 +` g ` | 將一列的数字变成递增+1的 + +# 持续记录中... diff --git a/_posts/linux/2019-08-16-xrandr.md b/_posts/linux/2019-08-16-xrandr.md new file mode 100644 index 00000000..dc5bdeb1 --- /dev/null +++ b/_posts/linux/2019-08-16-xrandr.md @@ -0,0 +1,126 @@ +--- +title: xrandr设置屏幕的分辨率 +categories: linux +tags: tools +comments: true +--- + +## 介绍 + +使用[i3wm](https://i3wm.org/)设置分辨率没有gnome下那么方便,只有使用xrandr进行分辨率的设置了,因为需要设置双屏幕,并且需要经常在单个屏幕和双屏幕之间切换又找到了`autorandr`,现在总算可以随心的切换了,哈哈! + +## 操作 + +```shell +$ xrandr +``` + + + +会出现如下的结果 + +```shell +Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 +eDP-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 173mm + 1366x768 60.06 + + 1360x768 59.80 59.96 + 1280x720 60.00 59.99 59.86 59.74 + 1024x768 60.04 60.00 + 960x720 60.00 + 928x696 60.05 + 896x672 60.01 + 1024x576 59.95 59.96 59.90 59.82 + 960x600 59.93 60.00 + 960x540 59.96 59.99 59.63 59.82 + 800x600 60.00 60.32 56.25 + 840x525 60.01 59.88 + 864x486 59.92 59.57 + 800x512 60.17 + 700x525 59.98 + 800x450 59.95 59.82 + 640x512 60.02 + 720x450 59.89 + 700x450 59.96 59.88 + 640x480 60.00 59.94 + 720x405 59.51 58.99 + 684x384 59.88 59.85 + 680x384 59.80 59.96 + 640x400 59.88 59.98 + 576x432 60.06 + 640x360 59.86 59.83 59.84 59.32 + 512x384 60.00 + 512x288 60.00 59.92 + 480x270 59.63 59.82 + 400x300 60.32 56.34 + 432x243 59.92 59.57 + 320x240 60.05 + 360x202 59.51 59.13 + 320x180 59.84 59.32 + 1280x1024 75.02 + 1920x1080 60.00* +DP-1 disconnected (normal left inverted right x axis y axis) +HDMI-1 disconnected (normal left inverted right x axis y axis) +DP-2 disconnected (normal left inverted right x axis y axis) +HDMI-2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 598mm x 337mm + 1920x1080 60.00*+ 60.00 50.00 59.94 + 1920x1080i 60.00 60.00 50.00 59.94 + 1680x1050 59.88 + 1400x1050 59.95 + 1600x900 60.00 + 1280x1024 75.02 60.02 + 1440x900 59.90 + 1280x800 59.91 + 1152x864 75.00 + 1280x720 60.00 60.00 50.00 59.94 + 1024x768 75.03 60.00 + 800x600 75.00 60.32 + 720x576 50.00 + 720x480 60.00 60.00 59.94 59.94 + 640x480 75.00 60.00 59.94 59.94 + 720x400 70.08 + +``` + +### 设置分辨率 + +```shell +# eDP-1需要替换成自己的对应的屏幕的名称 +$ xrandr --output eDP-1 --mode 1920x1080 +``` + +如果没有需要设置的分辨率可以自行添加新的分辨率模式,步骤如下: + +```shell + +$ cvt 1920 1080 60 + +# 拷贝输出信息,然后运行如下命令 +$ xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync + +# 然后将模式添加到指定的显示器,然后再设置分辨率 +$ xrandr --addmode eDP-1 1920x1080_60.00 +``` + +### 设置双屏幕 + +```shell +#克隆模式: + +xrandr --output eDP-1 --same-as HDMI-2 --mode 1920x1080 + +#扩展模式: + +xrandr --output eDP-1 --left-of HDMI-2 --auto + +# 设置多块屏幕 +xrandr --output eDP-1 --primary --auto --output HDMI-1 --auto --left-of HDMI-2 +``` + +这里强烈推荐[autorandr](https://github.com/wertarbyte/autorandr) + +```shell +# 保存当前的屏幕配置 +$ autorandr -s to-save-name +# 选择屏幕配置进行设置 +$ autorandr -l select-mode-name +``` diff --git a/_posts/linux/2020-04-16-dd_make_file.md b/_posts/linux/2020-04-16-dd_make_file.md new file mode 100644 index 00000000..ed62888a --- /dev/null +++ b/_posts/linux/2020-04-16-dd_make_file.md @@ -0,0 +1,46 @@ +--- +title: dd命令生成固定大小的文件 +category: linux +tags: linux dd +comments: true +--- + +## 选项 + +> bs=<字节数>:将 ibs(输入)与 obs(输出)设成指定的字节数; +> cbs=<字节数>:转换时,每次只转换指定的字节数; +> conv=<关键字>:指定文件转换的方式; +> count=<区块数>:仅读取指定的区块数; +> ibs=<字节数>:每次读取的字节数; +> obs=<字节数>:每次输出的字节数; +> of=<文件>:输出到文件; +> seek=<区块数>:一开始输出时,跳过指定的区块数; +> skip=<区块数>:一开始读取时,跳过指定的区块数; +> --help:帮助; +> --version:显示版本信息。 + +## 常用 + +```shell +# 生成固定大小的文件 +$ dd if=/dev/zero of=sun.txt bs=1M count=1 + +# 备份硬盘(慎重) +$ dd if=/dev/hda of=/dev/hdb + +# 测试磁盘的读写速度 +$ dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file +$ dd if=/root/1Gb.file bs=64k | dd of=/dev/null +``` + +## 常用的计量单位 + +单元大小 |单位 +----------------|------------ +字节(1B) |c +字节(2B) |w +块(512B) |b +千字节(1024B) |k +兆字节(1024KB)|M +吉字节(1024MB)|G + diff --git a/_posts/linux/2020-10-15-Linux_install_grub_error.md b/_posts/linux/2020-10-15-Linux_install_grub_error.md new file mode 100644 index 00000000..5eb0eea3 --- /dev/null +++ b/_posts/linux/2020-10-15-Linux_install_grub_error.md @@ -0,0 +1,53 @@ +--- +title: 解决Linux安装过程中不能安装Grub的问题 +category: linux +tags: linux grub +comments: true +--- + +## 问题 + +在grub-install的时候,具体问题如下: + +> zl-arch# grub-install /dev/sdb +> Installing for i386-pc platform. +> grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible. +> grub-install: error: embedding is not possible, but this is required for cross-disk install. + + +## 解决方法 + + +在分区前面加上一个2MB大小的分区,设定它的标志为“bios_grub”。 +如果你是Arch,那么可以在安装过程中下载: + +```shell +zl-arch# pacman -S parted +``` +然后执行: + +```shell +# 这里的“1”就是那个2MB大小的分区位置 +zl-arch# parted /dev/sdb set 1 bios_grub on +Information: You may need to update /etc/fstab. + + + +zl-arch# parted /dev/sdb print +Model: ATA WDC WD20EZRX-00D (scsi) +Disk /dev/sdb: 2000GB +Sector size (logical/physical): 512B/4096B +Partition Table: gpt + +Number Start End Size File system Name Flags + 1 17.4kB 3049kB 3032kB ext4 bios_grub +sh-4.3# grub-install /dev/sdb +Installing for i386-pc platform. +Installation finished. No error reported. +``` +这样就可以正常安装Grub了。 + +```shell +# 安装grub +zl-arch# grub-mkconfig -o /boot/grub/grub.cfg +``` diff --git a/_posts/linux/2020-12-28-arch_shutter_edit.md b/_posts/linux/2020-12-28-arch_shutter_edit.md new file mode 100644 index 00000000..2e59826d --- /dev/null +++ b/_posts/linux/2020-12-28-arch_shutter_edit.md @@ -0,0 +1 @@ +yay -s perl-goo-canvas diff --git a/_posts/linux/2021-01-13-linux_bash_get_history_arg.md b/_posts/linux/2021-01-13-linux_bash_get_history_arg.md new file mode 100644 index 00000000..bbcef16c --- /dev/null +++ b/_posts/linux/2021-01-13-linux_bash_get_history_arg.md @@ -0,0 +1,27 @@ +--- +title: 获取Bash之前命令的参数 +category: linux +tags: linux bash +--- + +## Bash中有没有一种方法可以调出前一个命令的参数? +例如要执行`vi file`然后执行`ls file` + +## 1 +如果您知道历史记录中特定命令的编号,则可以使用以下术语在该命令中使用几乎任何参数。 + +``` +#使用以下命令从历史记录中的第三个命令获取第二个参数, +!3:2 +#使用以下命令从历史记录中的倒数第五个命令中提取第三个参数,使用减号,要求它从历史记录的最后一个命令开始遍历。 +!-5:3 +#如果前面的命令有两个参数而你想要第一个,可以输入 +!:1 +#如果想要多个 +!:1-2 +``` +## 2 +您可以使用`$_`或`!$`调用上一个命令的最后一个参数。 + +## 3 +Alt + . 或 ESC - . 可用于调用任何先前命令的最后一个参数。 diff --git a/_posts/linux/2021-05-09-arch_pacman_use.md b/_posts/linux/2021-05-09-arch_pacman_use.md new file mode 100644 index 00000000..62d619ee --- /dev/null +++ b/_posts/linux/2021-05-09-arch_pacman_use.md @@ -0,0 +1,148 @@ +--- +title: Arch Linux pacman 软件包管理 +category: linux +tags: linux arch pacman +--- + +## 软件包基础搜索及安装卸载 +```bash +$ pacman -Ss 软件名称 //(搜索软件包) +$ pacman -S 软件名称 //(安装软件包) +$ pacman -Rs 软件名称 //(卸载软件包) +$ pacman -Syu (更新) +``` + +## 包的查询及清理 +```bash +#列出所有本地软件包(-Q,query查询本地;-q省略版本号) +$ pacman -Qq (列出有904个包) + +#列出所有显式安装(-e,explicitly显式安装;-n忽略外部包AUR) +$ pacman -Qqe (列出222个包) + +#列出自动安装的包(-d,depends作为依赖项) +$ pacman -Qqd (列出682个) + +#列出孤立的包(-t不再被依赖的"作为依赖项安装的包") +$ pacman -Qqdt (列出0个) +#注意:通常这些是可以妥妥的删除的。 +$ sudo pacman -Qqdt | sudo pacman -Rs - +``` + +## 软件包和文件的查询 +```bash +#列出包所拥有的文件 +$ sudo pacman -Ql i3-gaps +iw /usr/ +iw /usr/bin/ +iw /usr/bin/iw +iw /usr/share/ +iw /usr/share/man/ +iw /usr/share/man/man8/ +iw /usr/share/man/man8/iw.8.gz + +#check 检查包文件是否存在(-kk用于文件属性) +$ sudo pacman -Qk iw +iw: 7 total files, 0 missing files + +#查询提供文件的包 +$ sudo pacman -Qo /usr/share/man/man8/iw.8.gz +/usr/share/man/man8/iw.8.gz is owned by iw 5.0.1-1 +``` + +## 查询包详细信息 +```bash +#查询包详细信息(-Qi;-Qii[Backup Files])(-Si[Repository,Download Size];-Sii[Signatures,]) +$ pacman -Qi 包名 +Repository 仓库名称(要联网用pacman -Si或Sii才能看到这一栏;) +Name 名称 +Version 版本 +Description 描述 +Architecture 架构 +URL 网址 +Licenses 许可证 +Groups 组 +Provides 提供 +Depends On 依赖于(依赖那些包) +Optional Deps 可选项 +Required By 被需求的(被那些包需求) +Optional For 可选项 +Conflicts With 与...发生冲突 +Replaces 替代对象 +Download Size 下载大小(要联网用pacman -Si或Sii才能看到这一栏;) +Installed Size 安装尺寸 +Packager 包装者 +Build Date 包装日期 +Install Date 安装日期 +Install Reason 安装原因(主动安装,还是被依赖自动安装) +Install Script 安装脚本 +Validated By 验证者 +``` + +## 卸载不再被需要的软件包 +```bash +#删除不再被需要的(曾经被依赖自动安装的程序包) +$ sudo pacman -Qqdt | sudo pacman -Rs - +$ sudo pacman -Q |wc -l +905 +$ sudo pacman -Qe |wc -l +223 +$ sudo pacman -Qd |wc -l +682 +$ sudo pacman -Qdt |wc -l +0 +``` + +## 清除多余的安装包缓存(pkg包) +使用pacman安装的软件包会缓存在这个目录下 /var/cache/pacman/pkg/ ,可以清理如下2种。 +-k (-k[n])保留软件包的n个最近的版本,删除比较旧的软件包。 +-u (-u)已卸载软件的安装包(pkg包)。 + +```bash +#删除,默认保留最近的3个版本,-rk3 +$ paccache -r +==> finished: 6 packages removed (disk space saved: 194.11 MiB) +#删除,默认保留最近的2个版本 +$ paccache -rk2 +#删除,默认保留最近的1个版本 +$ paccache -rk1 +``` + + +## 通过日志查看安装历史 +```bash +#查看软件管理所操作日志。 +$ cat /var/log/pacman.log |wc -l +4650 +$ cat /var/log/pacman.log |grep installed |wc -l +1045 +$ cat /var/log/pacman.log |grep running |wc -l +693 +$ cat /var/log/pacman.log |grep Running |wc -l +693 +$ cat /var/log/pacman.log |grep removed |wc -l +87 +$ cat /var/log/pacman.log |grep upgraded |wc -l +821 + +通过系统日志查看安装记录(速度可能较慢) +$ sudo journalctl |grep irssi +Jul 11 21:04:46 tompc sudo[11619]: toma : TTY=pts/2 ; PWD=/home/toma ; USER=root ; COMMAND=/usr/bin/pacman -Ss irssi +Jul 11 21:06:11 tompc sudo[11841]: toma : TTY=pts/2 ; PWD=/home/toma ; USER=root ; COMMAND=/usr/bin/pacman -S irssi +Jul 11 21:06:11 tompc pacman[11842]: Running 'pacman -S irssi' +Jul 11 21:06:27 tompc pacman[11842]: installed irssi (1.2.1-1) + +$ sudo journalctl |grep pidgin +Jul 11 21:04:55 tompc sudo[11662]: toma : TTY=pts/2 ; PWD=/home/toma ; USER=root ; COMMAND=/usr/bin/pacman -Ss pidgin +Jul 11 21:06:57 tompc sudo[12000]: toma : TTY=pts/2 ; PWD=/home/toma ; USER=root ; COMMAND=/usr/bin/pacman -S pidgin +Jul 11 21:06:57 tompc pacman[12001]: Running 'pacman -S pidgin' + +系统日志筛选更新记录 +$ sudo journalctl |grep 'upgraded chromium' +Jun 15 06:39:47 tompc pacman[5551]: upgraded chromium (75.0.3770.80-1 -> 75.0.3770.90-2) +Jun 19 10:20:45 tompc pacman[1904]: upgraded chromium (75.0.3770.90-2 -> 75.0.3770.90-3) +Jun 23 17:18:33 tompc pacman[7079]: upgraded chromium (75.0.3770.90-3 -> 75.0.3770.100-1) +``` + +## 链接 +[参考链接](https://www.cnblogs.com/sztom/p/10652624.html) \ No newline at end of file diff --git a/_posts/linux/2021-06-03-arch_file_default_application.md b/_posts/linux/2021-06-03-arch_file_default_application.md new file mode 100644 index 00000000..847ca778 --- /dev/null +++ b/_posts/linux/2021-06-03-arch_file_default_application.md @@ -0,0 +1,24 @@ +--- +title: Arch Linux 设置默认打开程序 +category: linux +tags: linux arch mime +--- + +## 所有桌面程序的.desktop文件位置 + +> /usr/share/applications + +[arch wiki](!https://wiki.archlinux.org/title/XDG_MIME_Applications) + +## 设置默认打开程序 + +```bash +# 查询文件类型 +$ xdg-mime query filetype some.xlsx + +# 查询当前打开该种类型的文件所使用的应用程序 +$ xdg-mime query default application/octet-stream + +# 设置默认应用程序 +$ xdg-mime default .wps-office-et.desktop application/octet-stream +``` diff --git a/_posts/linux/2021-10-28-arch_intel_vidio_package.md b/_posts/linux/2021-10-28-arch_intel_vidio_package.md new file mode 100644 index 00000000..59057d01 --- /dev/null +++ b/_posts/linux/2021-10-28-arch_intel_vidio_package.md @@ -0,0 +1,14 @@ +--- +title: Arch Linux 显卡驱动相关 +category: linux +tags: linux arch intel +--- + +## Intel核芯显卡 + +```bash +sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel +``` + +> 不建议安装 xf86-video-intel,而应使用 Xorg 的 modesetting 驱动(也就是什么都不用装的意思) +> 注意,只有 Intel HD 4000 及以上的核显才支持 vulkan。 diff --git a/_posts/linux/2021-12-12-install-font.md b/_posts/linux/2021-12-12-install-font.md new file mode 100644 index 00000000..5bbdd002 --- /dev/null +++ b/_posts/linux/2021-12-12-install-font.md @@ -0,0 +1,68 @@ +--- +title: Linux 安装中文字体 +category: linux +tags: linux font +--- + +1.查看系统中文字体 + +```bash +#fc-list :lang=zh +``` + +2.如果提示commont not fount 说明为安装fontconfig + +3.安装fontconfig + +```bash +#yum -y install fontconfig +``` + +4.再次查看系统中文字体 + +```bash +#fc-list :lang=zh +``` + +5.确认是否存在字体 -->> simhei.ttf + +6.创建目录: + +```bash +#mkdir -p /usr/share/fonts/my_fonts +``` + +7.将字体文件上传到该目录下 + +8.进入my\_fonts文件夹 + +9.生成字体索引 + +```bash +#mkfontscale +``` + +10.如果提示commont not font,则安装mkfontscale + +```bash +#yum install mkfontscale +``` +11.安装成功后,再次生成字体索引 + +```bash +#mkfontscale +``` + +12.执行命令 + +```bash +#mkfontdir +``` + +13.查看该文件夹的文件: + +14.再次查看字体: + +```bash +#fc-list :lang=zh +``` diff --git a/_posts/linux/vim/2022-01-04-vim_auto_mark.md b/_posts/linux/vim/2022-01-04-vim_auto_mark.md new file mode 100644 index 00000000..2707d86f --- /dev/null +++ b/_posts/linux/vim/2022-01-04-vim_auto_mark.md @@ -0,0 +1,18 @@ +--- +title: vim 自动位置标记 +category: linux +tags: linux vim +--- + +# vim的自动位置标记 + +位置标记| 跳转到 +--------|-------- +`` |当前文件中上次跳转动作之前的位置 +`. |上次修改的地方 +`^ |上次插入的地方 +`[ |上次修改或复制的起始位置 +`] |上次修改或复制的结束位置 +`< |上次高亮选区的起始位置 +`> |上次高亮选区的结束位置 + diff --git a/_posts/personal/2019-01-04-2019.md b/_posts/personal/2019-01-04-2019.md new file mode 100644 index 00000000..d47a85ba --- /dev/null +++ b/_posts/personal/2019-01-04-2019.md @@ -0,0 +1,107 @@ +--- +title: 2019 +category: personal +tags: personal 2019 +comments: true +--- + +# 2019 + +> 无志之人,常立志,有志之人,立长志 + +*** + +站在现在看自己过去的: +* 小时候的零星记忆只有回到自己出生的那个村庄才能够鲜活起来,但是时间也不会太长 +* 高中及之前的学习经历完全是按部就班,只是争取一时的荣誉,谈不上长远的规划 +* 大学的学习与之前的学习没有本质的差别,多的是自由,少了对于学习荣誉的争取(只是追求"60分万岁!") +* 工作了将近7年谈自己的收获...,难以启齿 + +也会有打鸡血的时候,但是总是没能达到自己期望("求乎上,得之中,求乎中,得之下",但是我总是得之下),在自己的而立之年,忽然感到自己的生命,轻飘飘的,找不到自己的意义,也不知道自己的下一步要去到哪里,一阵迷茫. +罗振宇的[时间的朋友2018跨年演讲](https://www.youtube.com/watch?v=ugDu_T9wUGs)算是一个契机,我要规划自己的2019,要有耐心,认清趋势,面向未来. + + + + + +# 启发 + +## 我的时间够用吗? + +1. 时间的碎片化 +> "摸机率"可以衡量会议的质量,什么是"摸机率",就是整个会议过程查看手机的次数 +2. 信息过载 +> 战国时期的思想家,庄子曾说过:"吾生也有涯,而知也无涯,以有涯随无涯,殆已".'信息过载'从古就有,现在更是这样,各种信息,各种知识,我们要学会习惯. +> 万维钢老师有一个判断:"所谓信息过载,原因只有一个,你对环境的熟悉度太低."不管什么人,在一个陌生的环境总会感觉,眼花缭乱,信息过载. +3. 时间变长 +> 我们这一代人大概率能活过100岁 + + 挑战: + * 退休了干啥 + * 怎么和孩子相处 + * 怎么重新定位婚姻 + > '顶石婚'会是未来对最好婚姻的祝福 + * 职业会发生什么变化 + > 36岁的被裁员收费站员工说:"我都36了,除了收费,啥也不会.到这个岁数,学东西都学不了,也学不会了.我的下半辈子可怎么办呢?" + > 而一个100岁的老奶奶说:"我特别后悔没有在60岁的时候开始练习小提琴,如果当时练的话,我现在已经是一个有40年经验的小提琴手了." + > 这是在两个不同的寿命坐标系下对镜遇的不同感慨. + * 如何面对挫折 + > 丘吉尔曾说过:"这不是结束,甚至不是结束的开始,而只是开始的结束." + +## 建立自己的知识体系 + +渴望学习的人都想建立自己的知识体系,[道长]()总结这是因为**复杂定位**的缘故,我也深以为然,确实现实生活中有许多事情'简单定位'是非常有效的,'吃不吃','买不买'这些事情凭借我们的经验可以很快的做出决定,也不需要复杂的分析和推理,但是对于陌生的领域.比如你如何创业?如何写作?如何规划自己的职业?如何寻找人生意义?如何走出迷茫?这些都需要你能在一个体系中对事情进行各方面的分析才能够做出最终的决定或行动的方案. + +如何建立自己的知识体系呢? + +1. 广泛收集[启发性知识] +> * 知识体系是一张网,没有足够的知识点是很难结成网的 +> * 知识之间是需要相互连接和验证的 +> **所以知识需要大量的输入** + +2. 深度建立一个[知识框架] +> 知识框架需要建立在大量的输入和深入的理解的基础之上 +> 道长给出了一个形象的比喻——乐高积木,可以根据具体的知识,构建不同的框架:并列、逻辑。 + +3. 形成[知识体系] +> 在知识点和解构的基础之上形成巨大的乐高城市 + +# 行动 + +今年我给自己设立了两个行动的目标: **Linux**,**平静**,**节俭** + +## Linux + +> 这是一直以来的愿望,大学到现在断断续续的使用,但是始终没能在认识上有更深入的了解,2019要在Linux上有所突破 + +今年具体的行动: + +1. Linux的发展的历程上的认识 +> 认识发展的历史才能了解以后发展的方向,发现Linux发展下的'小趋势' + +2. 工作场景中的具体问题的解决 +> 在解决问题的过程总学习是一个有效的途径 + +3. Linux原理性知识的总结运用 +> 学些一个东西需要从本质上抓住精髓,方得始终 + +## 平静 + +> 面对生活思绪总是起伏不定,经常失去生活的'准星' + +1. 真诚 +> 真诚的祝福周围人的幸福 +> 真诚的表达自己 + +2. 明确 +> 明确自己价值观 +> 明确自己的行动的目的 +> 明确权衡的利弊迅速决断 + +3. 计划 + +## 节俭 + +> 极简主义践行 +> 减少自己的比较 + diff --git a/_posts/personal/2019-01-04-color_eye_protection.md b/_posts/personal/2019-01-04-color_eye_protection.md new file mode 100644 index 00000000..4b70bc46 --- /dev/null +++ b/_posts/personal/2019-01-04-color_eye_protection.md @@ -0,0 +1,64 @@ +--- +title: 2019 +category: personal +tags: personal 2019 +comments: true +--- + +# 护眼颜色设置 + +1. 常用护眼色: + +RGB模式 |SHL模式 |十六进制模式 +--------|-----------|------------- +红色(R):181 |色调 (U):85|#B5E6B5 +绿色(G):230 |饱和度 (S):123|- +蓝色(B):181 |亮度 (L):205|- + +2. 其它护眼色: + + 2.1 杏仁黄 + +RGB模式 |SHL模式 |十六进制模式 +--------|-----------|------------- + 红色(R):250 色调 (U):40 #FAF9DE + 绿色(G):249 饱和度(S):187 - + 蓝色(B):222 亮度 (L):236 - + +2.2 秋叶褐 + +RGB模式 SHL模式 十六进制模式 + 红色(R):255 色调 (U):23 #FFF2E2 + 绿色(G):242 饱和度(S):255 - + 蓝色(B):226 亮度 (L):240 - + +2.3 胭脂红 + +RGB模式 SHL模式 十六进制模式 + 红色(R):253 色调 (U):8 #FDE6E0 + 绿色(G):230 饱和度(S):224 - + 蓝色(B):224 亮度 (L):238 - + +2.4 青草绿 +RGB模式 SHL模式 十六进制模式 + 红色(R):227 色调 (U):55 #E3EDCD + 绿色(G):237 饱和度(S):120 - + 蓝色(B):205 亮度 (L):221 - + +2.5 海天蓝 +RGB模式 SHL模式 十六进制模式 + 红色(R):220 色调 (U):157 #DCE2F1 + 绿色(G):226 饱和度(S):109 - + 蓝色(B):241 亮度 (L):230 - + +2.6 葛巾紫 +RGB模式 SHL模式 十六进制模式 + 红色(R):233 色调 (U):165 #E9EBFE + 绿色(G):235 饱和度(S):232 - + 蓝色(B):154 亮度 (L):243 - + +2.7 极光灰 +RGB模式 SHL模式 十六进制模式 + 红色(R):234 色调 (U):170 #EAEAEF + 绿色(G):234 饱和度(S):34 - + 蓝色(B):239 亮度 (L):236 - diff --git a/_posts/python/2018-09-29-Python_pdb.md b/_posts/python/2018-09-29-Python_pdb.md new file mode 100644 index 00000000..f0fca747 --- /dev/null +++ b/_posts/python/2018-09-29-Python_pdb.md @@ -0,0 +1,43 @@ +--- +title: Python调试 +category: python +tags: python pdb +--- + +# pdb介绍 +pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令 + +**pdb常用命令** + +命令 | 解释 +------------|-------------- +break 或 b | 设置断点 +continue 或 c | 继续执行程序 +list 或 l | 查看当前行的代码段 +step 或 s | 进入函数 +return 或 r | 执行代码直到从当前函数返回 +exit 或 q | 中止并退出 +next 或 n | 执行下一行 +pp | 打印变量的值 +help | 帮助 + + + +# 示例 + +```python +import pdb +a = "aaa" +pdb.set_trace() +b = "bbb" +c = "ccc" +final = a + b + c +print final +``` + +运行脚本会停留在`pdb.set_trace()`处,输入命令按下Enter可以执行该命令,重复执行上次的命令只需按下Enter键即可. +如果在调试过程中需要为变量赋值可以使用`!`(如:`!b = "change"`) + +# 参考 + +* [https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/index.html](https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/index.html) diff --git a/_posts/tools/2017-06-21-Multi_ssh-key_Git.md b/_posts/tools/2017-06-21-Multi_ssh-key_Git.md index 8ea9488d..0aadd02d 100644 --- a/_posts/tools/2017-06-21-Multi_ssh-key_Git.md +++ b/_posts/tools/2017-06-21-Multi_ssh-key_Git.md @@ -42,6 +42,9 @@ Host codingted.github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_codingted + # fixup for openssh 8.8 (有一些需要配置例如阿里云) + HostKeyAlgorithms +ssh-rsa + PubkeyAcceptedKeyTypes +ssh-rsa ##codingted (github 配置) Host ted12214.github.com HostName github.com @@ -73,7 +76,7 @@ git remote add origin https://codingted.github.com:codingted/xxx.git ```shell // 设置github用户名 $ git config user.name "codingted" -$ git config user.email "coder.tedzhao@gmail.com" +$ git config user.email "codingted@gmail.com" ``` 现在就可以进行git命令操作了(记得添加ssh key 到github中) diff --git a/_posts/tools/2017-07-05-git_shouce.md b/_posts/tools/2017-07-05-git_shouce.md index 515c7e33..d3d61ef5 100644 --- a/_posts/tools/2017-07-05-git_shouce.md +++ b/_posts/tools/2017-07-05-git_shouce.md @@ -123,6 +123,9 @@ $ git blame [file] # 显示文件的修改历史(包含文件的修改内容) $ git log -p fileName +# 显示包含指定关键字的提交 +$ git log --grep + # 显示暂存区和工作区的差异 $ git diff @@ -178,7 +181,7 @@ $ git log --pretty=oneline # 更详细的日期信息 $ git log --pretty=format:"%h - %an, %ar : %s" -# 添加 --graph 显示分支分支衍合 +# 添加 --graph 显示分支衍合 $ git log --pretty=format:"%h %s" --graph # 统计个人代码 @@ -339,6 +342,44 @@ $ git commit -m 'update gitignore' ``` +> **.gitignore文件配置规则** +> +> 1、空格不匹配任意文件,可作为分隔符,可用反斜杠转义 +> 2、以“#”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。 +> 3、可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表达式。 +> 4、以斜杠"/"开头表示目录;"/"结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;"/"开始的模式匹配项目根目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。 +> 5、以星号"*"通配多个字符,即匹配多个任意字符;使用两个星号"**" 表示匹配任意中间目录,比如a/**/z可以匹配 a/z, a/b/z 或 a/b/c/z等。 +> 6、以问号"?"通配单个字符,即匹配一个任意字符; +> 7、以方括号"[]"包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母)。 +> 8、以叹号"!"表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用"!"规则是不起作用的。也就是说"!"开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用"!"也不会再次被包含。可以使用反斜杠进行转义。 + +```shell +# 表示此为注释,将被Git忽略 +*.log: 表示忽略所有 .log 文件 +!lib.a 表示但lib.a除外 +/TODO 表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO +build/ 表示忽略 build/目录下的所有文件,过滤整个build文件夹; +doc/*.txt 表示会忽略doc/notes.txt但不包括 doc/server/arch.txt +fd1/* 忽略目录 fd1 下的全部内容,但保留该目录 + +!.gitignore +``` + +* 检查gitignore对一个文件生效的规则 + +```shell +$ git check-ignore -v app.class +``` + +* 查看HEAD指针在各个分支的移动轨迹 + +```shell +$ git reflog + +# 如果想撤回merge的内容那么ORIG_HEAD所指的就是合并之前的节点 +$ git reset --hard ORIG_HEAD +``` + # 参考链接 diff --git a/_posts/tools/2017-08-26-proxy.md b/_posts/tools/2017-08-26-proxy.md index 41d703f1..8f82dba3 100644 --- a/_posts/tools/2017-08-26-proxy.md +++ b/_posts/tools/2017-08-26-proxy.md @@ -71,13 +71,17 @@ $ ssh -D 7001 -o ServerAliveInterval=60 root@45.32.103.180 * 设置本地浏览器代理 -![swichy]({{ site.img_server }}/tools/img/swichyOmega.png) +![swichy]({{ site.img_server }}/tools/swichyOmega.png) ### HTTP代理 HTTP代理我选择的是Squid,Squid支持HTTP、HTTPS代理,但是如果直接使用Squid进行HTTP连接是明文传输的,因此在此基础上使用stunnel加密代理通道,具体配置如下: +#### brook(推荐) +一个跨平台(Linux/MacOS/Windows/Android/iOS)的代理/vpn软件 +github地址:https://github.com/txthinking/brook + #### 安装Squid ``` diff --git a/_posts/tools/2018-04-18-docker_TLS_handshake_timeout.md b/_posts/tools/2018-04-18-docker_TLS_handshake_timeout.md new file mode 100644 index 00000000..c381de98 --- /dev/null +++ b/_posts/tools/2018-04-18-docker_TLS_handshake_timeout.md @@ -0,0 +1,31 @@ +--- +title: 使用docker时报错'TLS handshake timeout' +categories: tools +tags: docker +--- + +# 问题产生 + +拉取docker镜像时(执行`docker pull elasticsearch`),报错 + +```shell +docker: error pulling image configuration: (此处省略100+字母): net/http: TLS handshake timeout. +```` +# 解决途径 + +* 开启命令行代理(未解决) +* 使用国内的镜像加速地址(修改`/etc/default/docker`添加`DOCKER_OPTS="http://hub-mirror.c.163.com"`)(未解决) +* 将拉取地址改为国内镜像仓库 + + > #修改/etc/docker/daemon.json(如果不存在则创建) + > #添加下面的代码 + >``` json + >{ + > "registry-mirrors": ["https://registry.docker-cn.com"] + >} + >``` + > #执行以下命令重启docker + > ```bash + > service docker restart + > ``` + diff --git a/_posts/tools/2018-04-19-search_in_google.com.md b/_posts/tools/2018-04-19-search_in_google.com.md new file mode 100644 index 00000000..02dcc853 --- /dev/null +++ b/_posts/tools/2018-04-19-search_in_google.com.md @@ -0,0 +1,17 @@ +--- +title: chrome默认使用google.com +categories: tools +tags: chrome +--- + +# 问题 + +在使用Chrome的时候,Google为增强本地化搜索,或将默认的Google搜索引擎转换为本地语言,如在中国会自动转到google.com.hk,日本会会自动转到google.co.jp,如何忽略本地话的优化,使用www.google.com? + +# 方法 + +找到如下文件: +Windows 路径:`%LOCALAPPDATA%\Google\Chrome\User Data\Default\Preferences` +Linux 路径:`~/.config/google-chrome/Default/Preferences` +Mac 路径:`/Users/yourname/Library/Application Support/Google/Chrome/Default/Preferences` +文本编辑器打开后替换全文终的 google.co.jp 为 google.com 即可。 diff --git a/_posts/tools/2019-12-27-i3_set_window_border.md b/_posts/tools/2019-12-27-i3_set_window_border.md new file mode 100644 index 00000000..c9526025 --- /dev/null +++ b/_posts/tools/2019-12-27-i3_set_window_border.md @@ -0,0 +1,25 @@ +--- +title: i3wm设置窗口的边框 +category: tools +tags: i3wm +comments: true +--- + +## 设置窗口边框 + +```shell +for_window [class="urxvt"] border pixel 5 +``` + +如何查找窗口的`class`属性 + +```shell +xprop | grep -i 'class' +``` +然后点击想要查询的窗口,会看到相应的输出,如: + +> WM_CLASS(STRING) = "urxvt", "URxvt" + +## 参考链接 + +[for_window](https://i3wm.org/docs/userguide.html#for_window) diff --git a/_posts/tools/2020-02-15-idea_lost_iml_file.md b/_posts/tools/2020-02-15-idea_lost_iml_file.md new file mode 100644 index 00000000..6381130d --- /dev/null +++ b/_posts/tools/2020-02-15-idea_lost_iml_file.md @@ -0,0 +1,20 @@ +--- +title: IDEA缺失.iml文件 +categories: tools +tags: idea +comments: true +--- + +## 造成的问题 + +build 报错 + +## 生成步骤 + +生成.iml文件: mvn idea:module + +## 扩展 + +* 生成.ipr文件: mvn idea:project +* 生成.iws文件: mvn idea:workspace +* 生成.iml文件: mvn idea:module diff --git a/_posts/tools/2020-02-15-maven_-am_and_-amd.md b/_posts/tools/2020-02-15-maven_-am_and_-amd.md new file mode 100644 index 00000000..ecf11b42 --- /dev/null +++ b/_posts/tools/2020-02-15-maven_-am_and_-amd.md @@ -0,0 +1,17 @@ +--- +title: maven -am -amd 参数 +categories: tools +tags: maven +comments: true +--- + +## 打包指定模块及所依赖的模块 + +```shell +-am # 表示同时处理选定模块所依赖的模块 +-amd # 表示同时处理依赖选定模块的模块 +``` + +## 扩展 + +[Maven的-pl -am -amd参数学习](https://www.cnblogs.com/hiver/p/7850954.html) diff --git a/_drafts/emoji.md b/_posts/tools/2020-08-19-emoji.md similarity index 98% rename from _drafts/emoji.md rename to _posts/tools/2020-08-19-emoji.md index 0c62d591..de189dff 100644 --- a/_drafts/emoji.md +++ b/_posts/tools/2020-08-19-emoji.md @@ -1,13 +1,23 @@ +--- +title: emoji +categories: tools +tags: emoji +comments: false +--- + +## emoji * :bowtie: * :smile: -* :simple_smile: * :laughing: * :blush: * :smiley: * :relaxed: * :smirk: * :heart_eyes: + + + * :kissing_heart: * :kissing_closed_eyes: * :flushed: @@ -193,8 +203,9 @@ * :rage4: * :suspect: * :trollface: -* Nature -* + +### Nature + * :sunny: * :umbrella: * :cloud: @@ -310,7 +321,6 @@ * :partly_sunny: * :octocat: * :squirrel: -* * :bamboo: * :gift_heart: * :dolls: @@ -571,8 +581,9 @@ * :eggplant: * :tomato: * :corn: -* Places -* + +### Places + * :house: * :house_with_garden: * :school: @@ -679,8 +690,9 @@ * :gb: * :uk: * :de: -* Symbols -* + +### Symbols + * :one: * :two: * :three: @@ -883,4 +895,3 @@ * :small_red_triangle: * :small_red_triangle_down: * :shipit: -* diff --git a/_posts/tools/2021-04-01-computer_vocabulary.md b/_posts/tools/2021-04-01-computer_vocabulary.md new file mode 100644 index 00000000..7194ebb3 --- /dev/null +++ b/_posts/tools/2021-04-01-computer_vocabulary.md @@ -0,0 +1,1696 @@ +# 计算机专用英语词汇1695个词汇表 +1.file,n.文件;v.保存文件 [faɪl] +2.command,n.命令,指令 [kəˈmænd] +3.use,v.使用,用途 [jus] +4.program,n.程序 [ˈproʊgræm] +5.line,n.(数据,程序)行,线路 [laɪn] +6.if,conj.如果 [ɪf] +7.display,vt.显示,显示器 [dɪˈsple] +8.set,v.设置,n.集合 [sɛt] +9.key,n.键,关键字,关键码 [ki] +10.list,n.列表,显示,v.打印 [lɪst] +11.by,prep.凭,靠,沿 [baɪ] +12.press,v.按,压 [prɛs] +13.with,prep.用,与,随着 [wɪθ] +14.format,n.格式 [ˈfɔrmæt] +15.change,v.更换,改变,变动 [tʃendʒ] +16.cursor,n.光标 [ˈkɜrsə(r)] +17.directory,n.目录,索引簿 [dɪˈrɛktəri, daɪ-] +18.from,prep.从,来自,以来 [frʌm] +19.menu,n.菜单,目录 [ˈmɛnju, ˈmenju] +20.option,n.任选,选择,可选项 [ˈɑpʃn] +21.character,n.字符,符号,特性 [ˈkærəktɚ] +22.current,n.电流 [ˈkɜrənt] +23.type,n.型,类型;v.打印 [taɪp] +24.screen,n.屏幕,屏;v.屏蔽 [skrin] +25.specify,v.指定,规定,确定 [ˈspɛsəˌfaɪ] +26.move,v.移动 [muv] +27.disk,n.盘,磁盘 [dɪsk] +28.text,n.正文,文本 [tɛkst] +29.drive,v.驱动;n.驱动器 [draɪv] +30.see,v.看,看出,查看 [si] +31.name,n.名,名称;vt.命名 [nem] +32.record,n.记录 [ˈrekərd] +33.box,n.箱,匣,(逻辑)框 [bɑks] +34.database,n.数据库 [ˈdetəˌbes, ˈdætə-] +35.help,v.&,n.帮助 [hɛlp] +36.memory,n.记忆存储,存储器 [ˈmɛməri] +37.which,pron.哪个,a.那一个 [hwɪtʃ,wɪtʃ] +38.all,a.全,全部;ad.完全 [ɔl] +39.on,ad.接通,导电,开 [ɑn] +40.copy,n.复制,v.拷贝 [ˈkɑpi] +41.shell,n.壳,外壳,· [ʃɛl] +42.delete,vt.删除,删去,作废 [diˈlit] +43.enter,v.键入,送入 [ˈɛntɚ] +44.margin,n.余量,边缘,边际 [ˈmɑrdʒən] +45.mark,n.标记;vt.加标记 [mɑrk] +46.also,ad.&,conj.也,亦,还 [ˈɔlsoʊ] +47.do,v.做,干;n.循环 [du] +48.information,n.信息,情报 [ˌɪnfərˈmeɪʃn] +49.choose,v.挑选,选择,选定 [tʃuz] +50.select,vt.选择 [sɪˈlɛkt] +51.group,n.组,群 [ɡrup] +52.first,a.&,ad.&,n.第一,首先 [fɜrst] +53.field,n.字段,域,栏,场 [fild] +54.procedure,n.过程,程序,工序 [prəˈsidʒɚ] +55.print,v.打印,印刷 [prɪnt] +56.return,v.返回,回送 [rɪˈtɜrn] +57.number,n.数字,号码;vt.编号 [ˈnʌmbɚ] +58.selected,a.精选的 [sɪ'lektɪd] +59.want,v.需要,应该,缺少 [wɑnt] +60.window,n.窗口 [ˈwɪndoʊ] +61.message,n.信息,消息,电文 [ˈmɛsɪdʒ] +62.dialog,n.&,vt.对话 ['daɪəˌlɒg] +63.example,n.例子,实例 [ɪgˈzæmpl] +64.create,vt.创立,建立 [kriˈet] +65.insert,vt.插入 [ɪnˈsɜrt] +66.related,a.相关的 [rɪˈletɪd] +67.item,n.项,项目,条款 [ˈaɪtəm] +68.edit,vt.编辑,编排,编篡 [ˈɛdɪt] +69.marked,a.有记号的 [mɑrkt] +70.area,n.(区)域,面积,方面 [ˈeriə] +71.parameter,n.参数,参变量 [pəˈræmɪtɚ] +72.then,ad.&,conj.那时,则 [ðɛn] +73.variable,a.可变的;n.变量 [ˈveriəbl] +74.tab,n.制表键 [tæb] +75.up,ad.上,向上,a.高的 [ʌp] +76.string,n.行,字符串 [strɪŋ] +77.each,a.&,ad.各(自),每个 [itʃ] +78.active,a.激活的,活动的 [ˈæktɪv] +79.topic,n.题目,论题 [ˈtɑpɪk] +80.start,v.起动,开始,启动 [stɑrt] +81.mode,n.态,方式,模 [moʊd] +82.selection,n.选择 [sɪˈlɛkʃən] +83.function,n.函数,功能,操作 [ˈfʌŋkʃən] +84.word,n.字(词),单词 [wɜrd] +85.make,vt.制造,形成,接通 [mek] +86.right,a.右边的,正确的 [raɪt] +87.value,n.值 [ˈvælju] +88.button,n.按钮 [ˈbʌtn] +89.index,n.索引,变址,指数 [ˈɪnˌdɛks] +90.without,prep.没有,在…以外 [wɪðˈaʊt, wɪθ-] +91.appear,vi.出现,显现,好像 [əˈpɪr] +92.left,a.&,n.左边(的) [lɛft] +93.save,v.保存 [sev] +94.next,n.下一次,a.其次 [nɛkst] +95.off,ad.(设备)关着,脱离 [ɔf] +96.following,a.下列的,以下的 [ˈfɑloʊɪŋ] +97.control,v.控制,支配,管理 [kənˈtroʊl] +98.only,a.唯一的,ad.仅仅 [ˈoʊnli] +99.user,n.用户 [ˈjuzɚ] +100.end,n.结束,终点,端点 [ɛnd] +101.system,n.系统 [ˈsɪstəm] +102.contain,vt.包含,包括 [kənˈten] +103.t,ime,n.时间;vt.计时 +104.letter,n.字母,信 [ˈlɛtɚ] +105.data,n.数据 [ˈdetə, ˈdætə, ˈdɑtə] +106.setting,n.设置,调整 [ˈsɛtɪŋ] +107.desire,v.&,n.期望 [ dɪˈzaɪr] +108.position,n.位置;vt.定位 [pəˈzɪʃən] +109.down,ad.落下,降低,减少 [daʊn] +110.task,n.任务;v.派给…任务 [tæsk] +111.view,n.&,v.视图,景象 [vju] +112.switch,n.&,v.开关,转换,切换 [swɪtʃ] +113.inc,lude,vt.包括,包含 +114.get,v.得到,获得,取 [ɡɛt] +115.default,v.缺省,预置,约定 [dɪˈfɔlt] +116.structure,n.结构,构造,构件 [ˈstrʌktʃɚ] +117.into,prep.向内,进入 [ˈɪntu] +118.path,n.路径,通路,轨道 [pæθ] +119.blank,n.空白,间隔 [blæŋk] +120.open,v.打开,开启,断开 [ˈoʊpən] +121.add,v.&,n.加,增加,添 [æd] +122.enable,vt.启动,恢复正常操作 [ɛˈnebəl] +123.operation,n.操作,运算,动作 [ˌɑpəˈreɪʃn] +124.erase,v.擦除,取消,删除 [ɪˈreɪs] +125.filename,n.文件名 [ˈfaɪlˌnem] +126.search,v.检索,查询,搜索 [sɜrtʃ] +127.another,a.另一个,别的 [əˈnʌðɚ] +128.last,a.&,n.最后(的) [læst] +129.column,n.列,柱,栏 [ˈkɑləm] +130.after,prep.&,ad.以后,后面 [ˈæftə(r)] +131.prompt,n.&,v.提示 [prɑmpt] +132.two,n.&,a.二,两,双 [tu] +133.execute,v.实行,实施 [ˈɛksɪˌkjut] +134.about,ad.关于,大约,附近 [əˈbaʊt] +135.escape,v.逃避,逸出,换码 [ɪˈskep] +136.error,n.错误,误差,差错 [ˈɛrɚ] +137.currently,ad.目前,现在 [ˈkɜrəntli] +138.extension,n.扩充,延伸 [ɪkˈstɛnʃən] +139.same,a.同样的,相同的 [sem] +140.status,n.状态,态,状况 [ˈstetəs, ˈstætəs] +141.run,v.运行,运转,操作 [rʌn] +142.argument,n.变元,自变量 [ˈɑrgjumənt] +143.statement,n.语句,陈述,命题 [ ˈstetmənt] +144.shift,v.转义,换档,移位 [ʃɪft] +145.store,n.&,vt.存储,存储器 [stɔr, stor] +146.scroll,vt.上滚(卷);n.纸卷 [skroʊl] +147.vt.替换,置换,代换 +148.macro,n.宏,宏功能,宏指令 [ˈmækroʊ] +149.page,n.页面,页,版面 [pedʒ] +150.quit,v.退出,结束 [kwɪt] +151.define,vt.定义,规定,分辨 [dɪˈfaɪn] +152.reference,n.&,a.参考;参考的 [ˈrɛfərəns, ˈrɛfrəns] +153.other,a.别的,另外的 [ˈʌðər] +154.while,conj.当…的时候 [hwaɪl, waɪl] +155.pressing,n.&,a.压制;紧急的 [ˈprɛsɪŋ] +156.restore,vt.恢复,复原 [rɪˈstɔr, -ˈstor] +157.top,n.顶,尖端 [tɑp] +158.how,ad.如何,怎样,多么 [haʊ] +159.color,n.颜色,色彩,(彩)色 [ˈkʌlɚ] +160.allow,v.允许,容许 [əˈlaʊ] +161.block,n.(字,信息,数据)块 [blɑk] +162.decimal,n.&,a.十进制;十进制 [ˈdɛsəməl] +163.main,a.主要的 [men] +164.definition,n.定义,确实,清晰 [ˌdɛfəˈnɪʃən] +165.between,prep.在…之间,中间 [bɪˈtwin] +166.optional,a.任选的,可选的 [ˈɑpʃənl] +167.date,n.日期 [det] +168.remove,v.除去,移动 [rɪˈmuv] +169.arrow,n.箭头,指针 [ˈæroʊ] +170.label,n.标签,标号,标识符 [ˈleɪbl] +171.within,prep.在…以内 [wɪðˈɪn, wɪθ-] +172.issue,v.发行,出版,流出 [ˈɪʃu] +173.different,a.不同的,各种各样的 [ˈdɪfrənt] +174.available,a.可用的 [əˈveləbəl] +175.returned,a.退回的 [rɪ'tɜnd] +176.associate,v.相联,联想,关联 [əˈsoʊʃieɪt] +177.attribute,n.属性,标志,表征 [əˈtrɪbjut] +178.dos,磁盘操作系统 +179.before,prep.以前,前,先 [bɪˈfɔr,-ˈfor] +180.order,n.&,vt.指令,次序;排序 [ˈɔrdə(r)] +181.modify,vt.修改,改变,变址 [ˈmɑdɪfaɪ] +182.array,n.数组,阵列 [ə'reɪ] +183.mouse,n.鼠标器 [maʊs] +184.note,n.注解,注释 [noʊt] +185.locate,vt.定位 [ˈloʊkeɪt] +186.video,n.视频,电视 [ˈvɪdioʊ] +187.printer,n.打印机,印刷机 [ˈprɪntɚ] +188.bar,n.条,杆,棒 [bɑr] +189.bottom,n.&,a.底,基础;底下 [ˈbɑtəm] +190.carriage,n.滑架,托架 [ˈkærɪdʒ] +191.content,n.含量,容量,内容 [ˈkɑntent] +192.either,a.&,pron.任何一个,各 [ˈiðɚ, ˈaɪðɚ] +193.ok,ad.&,a.对,好;全对 +194.space,n.空格键,空间 [ spes] +195.editor,n.编辑程序 [ˈɛdɪtɚ] +196.exist,vi.存在,生存,有 [ɪɡˈzɪst] +197.scope,n.范围,显示器 [skoʊp] +198.paragraph,n.段(落),节,短讯 [ˈpærəgræf] +199.multi,(词头),多 +200.clear,v.清除,弄干净 [klɪr] +201.exit,n.&,vi.出口;退出 [ˈɛɡzɪt, ˈɛksɪt] +202.report,vt.&,n.报告,报表 [rɪˈpɔrt] +203.execution,n.执行 [ˌɛksɪˈkjuʃən] +204.backup,n.备份,后备,后援 [ˈbækˌʌp] +205.version,n.版本 [ˈvɜrʒn] +206.find,v.寻找,发现 [faɪnd] +207.pointer,n.指针,指示字 [ˈpɔɪntɚ] +208.subset,n.子集,子设备 [ˈsʌbˌsɛt] +209.keyboard,n.键盘 [ˈkibɔrd] +210.full,a.&,ad.&,n.全(的),满 [fʊl] +211.check,v.校对,栓查,核算 [tʃɛk] +212.should,v.&,aux.应当,该 [ʃʊd] +213.single,a.&,n.单个的;一个,单 [ˈsɪŋɡəl] +214.positioning,n.定位 [pə'zɪʃnɪŋ] +215.provide,v.提供 [prəˈvaɪd] +216.title,n.题目,标题 [ˈtaɪtl] +217.expression,n.表达式 [ɪkˈsprɛʃən] +218.through,prep.&,ad.通过,直通 [θru] +219.toggle,n.&,v.触发器;系紧 [ˈtɑgl] +220.code,n.码,代码,编码 [koʊd] +221.such,a.&,pron.这样的,如此 [sʌtʃ] +222.beginning,n.起点,初 [bɪˈɡɪnɪŋ] +223.guide,n.向导,指南,入门 [ɡaɪd] +224.tree,n.树,语法树 [tri] +225.environment,n.环境 [ɛnˈvaɪrənmənt, -ˈvaɪən-] +226.but,但是,可是,除非,不过 [bʌt,bət] +227.device,n.设备,器件,装置 [dɪˈvaɪs] +228.highlight,n.增强亮度,提示区 [ˈhaɪˌlaɪt] +229.call,v.调用,访问,呼叫 [kɔl] +230.continue,v.连续,继续 [kənˈtɪnju] +231.indicate,vt.指示,表示 [ˈɪndɪˌket] +232.until,prep.到…为止,直到 [ʌnˈtɪl] +233.begin,v.开始,着手,开端 [ˈbeɡɪn] +234.place,vt.放,位,地点 [ples] +235.rename,vt.更名,改名 [ˌriːˈneɪm] +236.swap,v.交换,调动 [swɑp] +237.work,n.工作 [wɜrk] +238.remain,vi.剩下,留下,仍然 [rɪˈmen] +239.close,v.&,a.关闭,闭合;紧密 [kloʊz] +240.combination,n.结合,组合 [ˌkɑmbɪˈneɪʃn] +241.profile,n.简要,剖面,概貌 [ˈproʊfaɪl] +242.unless,conj.除非 [ʌnˈlɛs] +243.so,pron.&,conj.如此,这样 [soʊ] +244.except,prep.除…之外,除非 [ɪkˈsɛpt] +245.turn,v.&,n.转,转动;圈,匝 [tɜrn] +246.back,n.背面,反向,底座 [bæk] +247.sure,a.&,ad.确实的;的确 [ʃʊr] +248.section,n.节,段,区域 [ ˈsɛkʃən] +249.follow,v.跟随,跟踪 [ˈfɑloʊ] +250.split,v.分开,分离 [splɪt] +251.need,v.必须,需要 [nid] +252.access,n.存取,选取,接近 [ˈæksɛs] +253.additional,a.附加的,辅助的 [ə'dɪʃənl] +254.cancel,v.删除,取消,作废 [ˈkænsəl] +255.document,n.文献,资料,文件,,'dɔk,jumənt,,'dɔkjument] [ˈdɑkjumənt] +256.case,n.情况,场合 [kes] +257.numeric,n.&,a.数字的,分数 [nu'merɪk] +258.go,vi.运行,达到 [goʊ] +259.load,n.&,v.装入,负载,寄存 [loʊd] +260.try,n.(尝)试,试验 [traɪ] +261.size,n.尺寸,大小,容量 [saɪz] +262.entire,a.&,n.完全的;总体,,in',taiə] [ɛnˈtaɪr] +263.leave,v.离开,留下 [liv] +264.history,n.历史 [ˈhɪstəri] +265.second,n.&,a.秒,第二(的) [ˈsekənd] +266.reflow,v.&,n.回流,逆流 [ˈrifloʊ] +267.output,n.输出,输出设备 [ˈaʊtˌpʊt] +268.out,n.&,a.输入,在外 [aʊt] +269.both,a.&,ad.两,双,都 [boʊθ] +270.install,vt.安装 [ɪnˈstɔl] +271.source,n.源,电源,源点 [sɔrs] +272.way,n.路线,途径,状态 [we] +273.assign,vt.赋值,指定,分派 [əˈsaɪn] +274.support,vt.支援,支持,配套 [səˈpɔrt] +275.specific,a.特殊的,具体的 [spɪˈsɪfɪk] +276.join,v.&,n.连接,并(运算) [dʒɔɪn] +277.expand,v.扩充,扩展,展开 [ɪkˈspænd] +278.like,a.类似的,同样的 [laɪk] +279.diskette,n.软磁盘,软盘片,,(词典没有) [dɪˈskɛt] +280.skip,v.跳跃(定位),跳过 [skɪp] +281.application,n.应用 [ˌæplɪˈkeʃən] +282.confirmation,n.认可 [ˌkɑnfərˈmeɪʃn] +283.whether,conj.无论,不管 [ˈhwɛðɚ, ˈwɛð-] +284.hold,v.保持 [hoʊld] +285.click,n.“卡搭”声,插销,,k,l,ik] [klɪk] +286.write,v.写,存入 [raɪt] +287.byte,n.(二进制的)字节 [baɪt] +288.abbreviate,vt.缩写,省略 +289.show,v.显示,呈现,出示 [ʃoʊ] +290.otherwise,ad.&,a.另外 [ˈʌðərwaɪz] +291.working,n.工作,操作,作业 [ˈwɜrkɪŋ] +292.delimiter,n.定界符,分界符 [dɪ'lɪmɪtə] +293.location,n.定位,(存储器)单元 [loʊˈkeɪʃn] +294.perform,v.执行,完成 [pərˈfɔrm] +295.graphic,n.&,a.图形;图形的 [ˈɡræfɪk] +296.read,v.读,读阅 [rid] +297.confirm,vt.证实,确认 [kənˈfɜrm] +298.sort,v.分类,排序 [sɔrt] +299.clause,n.条款,项目,子句 [klɔz] +300.once,ad.&,n.只一次,一旦 [wʌns] +301.however,conj.然而,可是(hao,wai,wo) [haʊˈevɚ] +302.extend,v.扩充(ei,ke,si,ten,de) [ɪkˈstɛnd] +303.look,v.看,查看(,lu,ke,) [lʊk] +304.starting,a.起始的(si,chua,tin) ['stɑtɪŋ] +305.now,ad.&,n.此刻,现在(nao) [naʊ] +306.original,n.&,a.原文;原(初)始(ou,vi,zhi,nou) [əˈrɪdʒənəl] +307.correspond,vi.通信(联系)(ke,rui,si,ban,te) [ˌkɔrəˈspɑnd] +308.property,n.性(质),特征(pe,rua,po,ti,) [ˈprɑpərti] +309.several,a.&,n.若干个,几个(sai,fe,rou) [ˈsɛvərəl,ˈsɛvrəl] +310.learn,v.学习,训练(,lan,en) [lɜrn] +311.cause,n.原因,理由(kao,si) [kɔz] +312.bracket,n.(方)括号,等级(bo,ruai,ke,te) [ˈbrækɪt] +313.omit,vt.省略,删去,遗漏(ao,mai,te) [oˈmɪt] +314.running,a.运行着的,游动的(ruo,ning) [ˈrʌnɪŋ] +315.sub-dire,ctory,n.子目录(sao,bo,di,ruai,ke,te,rui) +316.edge,n.棱,边,边缘,界限(ai,chi) [ɛdʒ] +317.form,n.格式,表格,方式(fao,mu) [fɔrm] +318.instruction,n.指令,指导(,in,ke,s,i,chua,ke,sheng) [ɪnˈstrʌkʃən] +319.ascii,n.美国信息交换标准码(a,i,s,i,ge,i) +320.below,a.&,prep.下列的;低于(bo,lou) [bɪˈloʊ] +321.standard,n.标准(si,tan,de,rui,de) [ˈstændərd] +322.occurrence,n.出现,发生(e,ke,run,si) [əˈkɜrəns] +323.lock,n.&,v.锁,封闭;自动跟踪(lao,ke) [lɑk] +324.append,vt.附加,增补(e,pen,de) [əˈpɛnd] +325.destination,n.目的地,接收站(da,s,i,te,ne,i,sheng) [ˌdɛstəˈneʃən] +326.password,n.口令,保密字(pa,si,wo,de) [ˈpæswɜrd] +327.point,n.点,小数点,句号(po,in,te) [pɔɪnt] +328.variety,n.变化,种类,品种(v,rua,i,t,i) [vəˈraɪɪti] +329.many,a.&,n.许多,多数(ma,i,ni) [ˈmɛni] +330.buffer,n.缓冲器(ba,fe) [ˈbʌfɚ] +331.useful,a.有用的(you,s,i,fou) [ˈjusfəl] +332.object,n.对象,目标,物体(a,zhuai,ke,te) [ˈɑbdʒekt] +333.again,ad.再,又,重新,也(e,i,gen) [əˈɡɛn] +334.operating,a.操作的,控制的(a,pe,rui,tin) [ˈɑpəˌretɪŋ] +335.carry,v.进位,带,(kai,rui) [ˈkæri] +336.update,v.更新,修改,校正(a,pe,dei,te) [ʌpˈdet] +337.moving,n.&,a.活动的,自动的(mu,wei,ying) [ˈmuvɪŋ] +338.coprocessor,n.协同处理器(kou,pa,sei,se) ['koʊˌproʊsesə] +339.overlay,v.覆盖,重叠(ou,wei,chi) [ˌoʊvərˈleɪ] +340.practice,n.实习,实践(pe,rua,ke,te,si) [ˈpræktɪs] +341.navigation,n.导航(na,we,i,ge,i,sheng) [ˌnævɪˈɡeʃən] +342.automatically,ad.自动地,机械(ao,de,ma,ti,ke) [ˌɔtəˈmætɪklɪ] +343.total,n.&,v.总数;总计(to,lou) [ˈtoʊtl] +344.previous,a.早先的,上述的(po,rui,wei,e,si) [ˈpriviəs] +345.software,n.软件(sao,fu,wei,er) [ˈsɔftwer] +346.shortcut,n.近路,捷径(shou,ka,i,te,) [ˈʃɔrtˌkʌt] +347.long,a.长的,远的(,lang) [lɔŋ] +348.unique,a.唯一的,独特的(you,ni,ke) [juˈnik] +349.part,n.部分,零件(pa,te) [pɑrt] +350.updated,a.适时的,更新的(ao,p,dei,te,de) [ʌp'deɪtɪd] +351.internal,a.内部的 [ɪnˈtɜrnl] +352.fill,v.填充 [fɪl] +353.basic,n.&,a.基本;基本的 [ˈbesɪk] +354.math,n.数学 [mæθ] +355.since,prep.自从…以来 [sɪns] +356.determine,v.确定 [dɪˈtɜrmɪn] +357.making,n.制造,构造 [ˈmekɪŋ] +358.center,n.中心,中央 [ˈsɛntɚ] +359.already,ad.已经,早已 [ɔlˈrɛdi] +360.keyword,n.关键字(词) [ˈkiwɜrd] +361.action,n.操作,运算 [ˈækʃən] +362.condition,n.条件,情况;vt.调节 [kənˈdɪʃən] +363.quick,a.&,ad.快速的,灵敏的 [kwɪk] +364.assigned,a.指定的,赋值的 [ə'saɪnd] +365.give,vt.给出,赋予,发生 [ɡɪv] +366.large,a.(巨)大的,大量的 [lɑrdʒ] +367.chapter,n.章,段 [ˈtʃæptɚ] +368.computer,n.计算机,(ka,mu,pui,te) [kəmˈpjutɚ] +369.complete,v.&,a.完成;完整的,,(ka,mu,pe,li,te) [kəmˈplit] +370.past,a.过去的,结束的,,(pa,sit,e) [pæst] +371.match,v.比较,匹配,符合,(ma,c,hi) [mætʃ] +372.recover,v.恢复,回收,,(rui,ka,wan) [rɪ'kʌvər] +373.always,ad.总是,一直,始终,,(ao,we,i,s,i) [ˈɔlwez,-wɪz,-wiz] +374.require,v.需要,要求,,(r,ui,k,ua,i,er,) [rɪˈkwaɪr] +375.opening,n.打开,断路,孔,(ou,po,ning) [ˈoʊpnɪŋ] +376.network,n.&,vt.网络;联网,(nai,te,wo,de) [ˈnetwɜrk] +377.sign,n.符号,信号,记号,,(sa,i,n) [saɪn] +378.release,vt.&,n.释放,核发,版,,(r,ui,li,s,i) [rɪ'lis] +379.three,a.&,n.三(的),,(s,i,r,ui) [θri] +380.recall,vt.撤消,复活,检索(rui,kao,l) [rɪˈkɔl] +381.deletion,n.删去(部分),删除,(di,li,sheng) [dɪˈliʃən] +382.fixed,a.固定的,不变的,,(,fe,i,ke,si,de) [fɪkst] +383.amount,vt.&,n.总计;合计,,(a,ma,i,ou,te) [əˈmaʊnt] +384.alias,n.别名,代号,标记,,(e,i,li,e,s,i) [ˈeliəs, ˈeljəs] +385.quote,n.&,v.引号;加引号,(k,ua,i,wu,te) [kwoʊt] +386.correct,a.&,vt.正确的;改正,,(ke,ruai,ke,te) [kəˈrɛkt] +387.else,ad.&,conj.否则,此外,(,a,i,o,u,s,i) [ɛls] +388.maximum,n.&,a.最大(的),最高(mai,ke,sei,men) [ˈmæksəməm] +389.under,prep.在…下面(之下),(ang,de) [ˈʌndɚ] +390.take,v.取,拿 [tek] +391.switching,n.开关,转接,交换,(si,wei,te,chen) [swɪtʃɪŋ] +392.element,n.元件,元素,码元,,(ai,l,men,te) [ˈɛləmənt] +393.modification,n.改变,修改,,(mao,di,fi,kei,sheng) [ˌmɑdɪfɪˈkeɪʃn] +394.modified,a.修改的,变更的 ['mɒdəˌfaɪd] +395.input,n.输入,输入设备 [ˈɪnˌpʊt] +396.uppercase,n.大写字母 ['ʌpəˌkeɪs] +397.plus,prep.加,加上,外加 [plʌs] +398.found,v.建立,创办 [faʊnd] +399.debug,vt.调试 [diˈbʌɡ] +400.force,v.&,n.强制;压力,强度 [fɔrs] +401.lowercase,n.下档,小写体 ['loʊrˌkeɪs] +402.just,ad.恰好 [dʒʌst] +403.undo,vt.取消,废除 [ʌnˈdu] +404.environ,vt.围绕,包围 [ɛnˈvaɪrən, -ˈvaɪən] +405.why,ad.为什么,(wai) [hwaɪ, waɪ] +406.temporary,a.暂时的,临时的,,(tai,me,pe,rui) [ˈtempəreri] +407.put,v.存放(记录),放置,,(pa,te) [pʊt] +408.instead,ad.(来)代替,当作,(in,si,tai,de) [ɪnˈstɛd] +409.encounter,v.&,n.遇到,碰到,(,in,k,a,i,wen,te) [ɛnˈkaʊntɚ] +410.across,prep.交叉,越过,,(e,ke,rua,si) [əˈkrɔs] +411.matching,n.匹配,调整 [ˈmætʃɪŋ] +412.wildcard,n.通配符 ['waɪldkɑd] +413.spill,v.漏出,溢出,漏失 [spɪl] +414.level,n.水平,级,层次 [ˈlɛvəl] +415.browse,v.浏览 [braʊz] +416.speech,n.说话,言语,语音 [spitʃ] +417.occur,vi.发生,出现,存在 [əˈkɚ] +418.memo,n.备忘录 [ˈmemoʊ] +419.prior,a.先验的,优先的 [ˈpraɪɚ] +420.loaded,a.有负载的 [ˈloʊdɪd] +421.length,n.(字,记录,块)长度 [leŋθ] +422.round,v.舍入,四舍五入 [raʊnd] +423.variant,n.&,a.变体,易变的 [ˈveriənt] +424.floppy,n.软磁盘 [ˈflɑpi] +425.machine,n.机器,计算机 [məˈʃin] +426.square,n.&,a.正方形;方形的 [skwer] +427.supply,vt.&,n.电源,供给 [səˈplaɪ] +428.home,n.&,a.家,出发点 [hoʊm] +429.normal,a.&,n.正常,标准 [ˈnɔrml] +430.onto,prep.向…,到…上 [ˈɑnˌtu, -tə, ˈɔn-] +431.during,prep.在…期间 [ˈdʊrɪŋ] +432.module,n.模块(程序设计) [ˈmɑdʒul] +433.monochrome,n.单色 [ˈmɑnəkroʊm] +434.assistance,n.辅助设备,帮助 [əˈsɪstəns] +435.tell,n.讲,说,教,计算 [tɛl] +436.library,n.(程序…)库,图书馆 [ˈlaɪbreri] +437.demonst,rat,ion,n.(公开)表演,示范 +438.stack,n.栈,堆栈,存储栈 [stæk] +439.even,a.&,ad.偶数的;甚至 [ˈivən] +440.evaluate,v.估计,估算,求值 [ɪˈvæljuˌet] +441.times,n.次数 [taɪmz] +442.previously,ad.以前,预先 [ˈprivɪəslɪ] +443.directly,ad.直接地,立即 [dɪˈrɛktli, daɪ-] +444.logical,a.逻辑的,逻辑“或” [ˈlɑdʒɪkl] +445.template,n.标准框,样板,模板 [ˈtɛmplɪt] +446.calling,n.呼叫,调用,调入 [ˈkɔlɪŋ] +447.later,a.更后的,后面的 [ˈletɚ] +448.driver,n.驱动器,驱动程序 [ˈdraɪvɚ] +449.therefore,ad.&,conj.因此,所以 [ˈðerfɔ(r)] +450.saving,a.保存的 [ˈsevɪŋ] +451.detail,n.元件,零件,细节 [dɪˈteɪl] +452.linker,n.连接程序 ['lɪŋkə] +453.loop,n.圈,环;(程序)循环,回路 [lup] +454.process,vt.处理,进程,加工 [ˈproʊses] +455.scheme,n.方案,计划,图 [skim] +456.every,a.每个,全体,所有的 [ˈɛvri] +457.refer,v.访问,引用,涉及 [rɪˈfɚ] +458.possible,a.可能的,潜在的 [ˈpɑsəbl] +459.above,a.在…之上,大于 [əˈbʌv] +460.overview,n.综述,概要 [ˈoʊvərvju] +461.result,n.结果 [rɪˈzʌlt] +462.syntax,n.语法,文法,句法 [ˈsɪnˌtæks] +463.abbreviation,n.缩短,省略,简称 +464.bios,n.基本输入/输出系统 +465.hidden,a.隐藏的,秘密的 [ˈhɪdn] +466.null,n.&,a.空(的),零(的) [nʌl] +467.send,v.发送 [sɛnd] +468.private,a.专用的,私人的 [ˈpraɪvɪt] +469.hard,a.硬的 [hɑrd] +470.hardware,n.硬件 [ˈhɑrdwer] +471.say,v.说,显示,假定 [se] +472.equal,vt.&,n.等于,相等;等号 [ˈikwəl] +473.pack,n.压缩,包裹 [pæk] +474.minus,a.&,n.负的;负数,减 [ˈmaɪnəs] +475.alternate,a.交替的,备用的 [ˈɔltərnət] +476.collapse,v.崩溃,破裂,(ke,la,p,s) [kəˈlæps] +477.corner,n.角,角落,转换,,(ka,one) [ˈkɔrnə(r)] +478.present,a.&,v.现行的;提供,,(p,rua,i,zen,t) [ˈprɛznt] +479.interpreter,n.解释程序,翻译机,(in,te,p,te) [ɪnˈtɜrprɪtə(r)] +480.advance,v.&,n.进步,提高;进展,(e,de,wai,en,s) [ədˈvæns] +481.forward,a.正向的,(fao,wei,de,) [ˈfɔrwərd] +482.fast,a.&,ad.快速的,,(fa,s,t) [fæst] +483.special,a.专用的,特殊的,,(si,bai,shou) [ˈspɛʃəl] +484.slash,n.斜线,(,s,i,la,i,s,hi) [slæʃ] +485.utility,n.&,a.实用程序;实用性,(,yo,u,t,i,li,t,i) [juˈtɪləti] +486.regardless,a.不注意的,不考虑的,(rui,ga,de,li,s) [rɪˈgɑrdləs] +487.disable,vt.禁止,停用,(de,i,s,i,e,i,bo,u) [dɪsˈebəl] +488.compatible,a.可兼容的,可共存的(kang,m,pa,tei,bao) [kəmˈpætəbəl] +489.depend,vi.随…而定,取决于,,(dei,pan,de) [dɪˈpɛnd] +490.empty,a.空,零,未占用,,(e,m,p,t,i) [ˈɛmpti] +491.alphabetical,a.字母(表)的,abc的(ai,er,fe,ba,ti,kou) [ˌælfəˈbɛtɪkəl] +492.branch,n.分支,支线;v.转换,,(bo,ran,chi) [bræntʃ] +493.resume,v.重(新)开(始),,(re,s,you,mu) [rɪ'zjum] +494.multiple,a.多次的,复杂的,(mo,u,t,i,po,u) [ˈmʌltəpəl] +495.monitor,n.监视器,监督程序,(mao,nit,e) [ˈmɑnɪtə(r)] +496.configuration,n.配置,(kang,fe,i,ge,rua,i,sheng) [kənˌfɪgjəˈreɪʃn] +497.replacement,n.替换,置换,更新,(rui,p,e,li,s,i,me,n,te,) [rɪˈplesmənt] +498.required,a.需要的,(rui,kuai,er,de) [rɪ'kwaɪəd] +499.macros,n.宏命令(指令),(mai,ke,lou,si) ['mækrɒs] +500.table,n.表,(tei,bao) [ˈtebəl] +501.loss,n.损耗,损失,(lao,s) [lɔs] +502.batch,n.批,批量,成批 [bætʃ] +503.exact,a.正确的 [ɪɡˈzækt] +504.aboveboard,ad.&,a.照直,公开的 [ə'bʌv'boʊrd] +505.activate,vt.&,n.使激活,驱动 [ˈæktəˌvet] +506.around,ad.&,prep.周围,围绕 [əˈraʊnd] +507.slow,a.&,ad.慢速的 [sloʊ] +508.floating,a.浮动的,浮点的 [ˈfloʊtɪŋ] +509.refresh,v.刷新,更新,再生 [rɪˈfrɛʃ] +510.stop,v.停止,停机 [stɑp] +511.pass,v.传送,传递,遍(数) [pæs] +512.public,a.公用的,公共的 [ˈpʌblɪk] +513.eject,n.弹出 [ɪ'dʒekt] +514.ignore,vt.不管,忽略不计 [ɪɡˈnɔr, -ˈnor] +515.share,v.共享,共用 [ʃer] +516.sequence,n.顺序,时序,序列 [ˈsikwəns, -ˌkwɛns] +517.consist,vi.符合,包括 [kənˈsɪst] +518.step,n.步,步骤,步长,档 [stɛp] +519.double,a.两倍的,成双的 [ˈdʌbəl] +520.come,vi,.来,到,出现 [kʌm] +521.lower,a.下部的,低级的 [ˈloʊə(r)] +522.describe,vt.描述,沿…运行 [dɪˈskraɪb] +523.count,v.计数,计算 [kaʊnt] +524.pop,v.上托,弹出(栈) [pɑp] +525.valid,a.有效的 [ˈvælɪd] +526.suspend,v.中止,暂停,挂起 [səˈspɛnd] +527.enhance,vt.增强,放大,夸张 [ɪnˈhæns] +528.separate,v.&,a.分隔,分离,各自的 ['sepəreɪt] +529.echo,n.回波,反射波 [ˈekoʊ] +530.necessary,a.必要的,必然的 [ˈnesəseri] +531.greater,than,大于 [ɡreɪtə] +532.able,a.能…的,有能力的 [ˈebəl] +533.marking,n.标记,记号,传号 [ˈmɑrkɪŋ] +534.ask,v.请求,需要 [æsk] +535.term,n.项,条款,术语 [tɜrm] +536.bring,v.引起,产生,拿来 [brɪŋ] +537.warning,n.&,a.报警,预告 [ˈwɔrnɪŋ] +538.less,a.&,ad.更小,更少 [lɛs] +539.whose,pron.谁的 [huz] +540.comment,n.&,vi.注解,注释 [ˈkɑment] +541.effect,n.效率,作用,效能 [ɪˈfɛkt] +542.expanding,a.扩展的,扩充的 [ɪk'spændɪŋ] +543.on-,line,a.联机的 ['ən] +544.reorder,v.(按序)排列,排序 [ˌriˈɔrdə(r)] +545.direct,a.直接的 [dɪˈrɛkt, daɪ-] +546.enclose,vt.封闭,密封,围住,包装 [ɪnˈkloʊz] +547.reset,vt.复位,置“0,” [riˈsɛt] +548.various,a.不同的,各种各样的 [ˈveriəs] +549.paper,n.纸,文件,论文 [ˈpeɪpər] +550.prevent,v.防止,预防 [prɪˈvɛnt] +551.side,n.(旁)边,面,侧(面),,(sai,de) [saɪd] +552.push,v.推,按,压,进(栈),(pus,hi,) [pʊʃ] +553.programming,n.程序设计,编程序,(pe,rou,ge,ruai,ming) [ˈproʊgræmɪŋ] +554.upper,a.上的,上部的,,(a,pe) [ˈʌpɚ] +555.row,n.行,,(ruai,o) [roʊ] +556.pressed,a.加压的,压缩的,,(pe,r,ua,i,s,i,d,) [prɛst] +557.temporarily,ad.暂时,,(,tan,p,ruo,le,i) [tempəˈrerɪlɪ] +558.day,n.日,天,白天,时代,(de,i) [de] +559.repaint,vt.重画,,(rui,pen,te) [ri'peɪnt] +560.redefine,vt.重新规定(定义),,(rui,di,fan,en) [ˌriːdɪˈfaɪn] +561.relation,n.关系,关系式,(,r,ui,le,i,s,he,n) [rɪˈleɪʃn] +562.dimension,n.尺寸,维,因次,,(di,man,shen) [dɪˈmɛnʃən, daɪ-] +563.boundary,n.边界,界限,约束,,(bai,en,de,rui) [ˈbaʊndəri, -dri] +564.zoom,v.变焦距,,(,zu,mu) [zum] +565.initialize,v.初始化,,(in,ne,she,lai,zi) [ɪˈnɪʃəˌlaɪz] +566.personal,a.个人的,自身的,(pa,s,i,nou) [ˈpɜrsənl] +567.hello,int.&,v.喂!;呼叫 [həˈloʊ] +568.true,a.&,n.真,实,选中,(chu) [tru] +569.wish,v.&,n.祝愿,希望,,(we,i,s,hi) [wɪʃ] +570.font,n.铅字,字形,,(,fang,te) [fɑnt] +571.know,v.知道,了解,认识,,(na,i,o) [noʊ] +572.convert,v.转换,变换,,(kang,wo,te) [kənˈvɜrt] +573.global,n.全局,全程,全局符,(ge,lou,bou) [ˈgloʊbl] +574.still,a.&,n.&,v.静止的;静;平静,,(,s,i,de,i,o,u) [stɪl] +575.installation,n.安装,装配,,(,in,sit,e,lei,shen) [ˌɪnstəˈleʃən] +576.invoke,vt.调用,请求,,(in,wou,te) [ɪnˈvoʊk] +577.interactive,a.交互式,交互的,,(in,te,a,k,ti,wu) [ˌɪntɚˈæktɪv] +578.described,a.被看到的,被发现的,,(di,si,chuai,bo,te) [dɪsk'raɪbd] +579.century,n.世纪,,(san,te,rui) [ˈsɛntʃəri] +580.literal,a.文字的,,(li,te,rou) [ˈlɪtərəl] +581.rather,ad.宁可,有点,,(tua,ze) [ˈræðər] +582.exclusive,a.排斥,排它性,(ei,ke,xi,ke,lou,sei,wu) [ɪkˈsklusɪv] +583.marker,n.记号,标记,标志,,(ma,ke,) [ˈmɑrkə(r)] +584.wait,v.等待,(we,i,t,e) [wet] +585.appropriate,a.适当的,合适的,,(,e,po,rou,pui,te) [əˈproʊpriət] +586.fit,v.&,n.适合,装配;非特,,(fi,te) [fɪt] +587.adapter,n.适配器,转换器,,(e,dap,o,te) [əˈdæptɚ] +588.filter,n.滤波器,滤光材料,,(,fi,out,e) [ˈfɪltɚ] +589.break,v.断开,撕开,中断,,(bo,rui,ke) [brek] +590.backward,ad.向后,逆,倒,,(ba,ke,wo,de) [ˈbækwərd] +591.searching,n.搜索,(se,te,shen) [ˈsɜrtʃɪŋ] +592.receive,v.接收,,(r,i,s,i,v) [rɪˈsiv] +593.dual,a.对偶的,双的,(du,ou) [ˈduəl] +594.retry,vt.再试,复算,rui,chuai) [ˌri'traɪ] +595.normally,ad.正常地,通常,,(nou,me,li) [ˈnɔrməli] +596.exactly,ad.正好,完全,精确地,,(in,ge,zai,k,t,li) [ɪɡˈzæktli] +597.immediately,ad.直接地,,(in,mi,di,si) [ɪˈmidiɪtli] +598.separated,a.分开的,(sai,po,rui,t,d) ['sepəreɪtɪd] +599.high,a.高,,(ha,i) [haɪ] +600.equivalent,a.相等的,等效的,,(e,i,kui,wu,en,t,) [ɪˈkwɪvələnt] +601.light,n.&,a.光(波,源);轻的,,(,la,i,t,e) [laɪt] +602.zero,n.零,零位,零点,,(,ze,i,ro,u) [ˈzɪroʊ] +603.storage,n.存储,存储器,,(s,tao,run,zhi) [ˈstɔrɪdʒ, ˈstor-] +604.width,n.宽度,,(we,i,zi) [wɪdθ, wɪθ, wɪtθ] +605.language,n.语言,,(lan,ge,wei,chi) [ˈlæŋɡwɪdʒ] +606.startup,n.启动,(si,tar,ta,p) ['stɑt'ʌp] +607.much,a.&,n.很多,许多,大量,(ma,c,hi) [mʌtʃ] +608.per,prep.每,按,,(per) [pɚ] +609.over,prep.在…上方,,(,ou,wo) [ˈoʊvə(r)] +610.mirror,n.&,v.镜,反射,反映,,(mi,re) [ˈmɪrɚ] +611.request,n.&,vt.请求,,(r,i,k,ua,i,s,i,t,e) [rɪˈkwɛst] +612.keypad,n.小键盘,,(ki,pai,de) [ˈkiˌpæd] +613.keep,v.保持,保存,(ke,p) [kip] +614.resident,a.驻留的,,(rei,zi,den,t) [ˈrɛzɪdənt, -ˌdɛnt] +615.learning,n.学问,知识,,(lei,ning) [ˈlɜrnɪŋ] +616.talk,v.通话,谈话,(tao,ke) [tɔk] +617.summary,n.摘要,汇总,提要,,(se,me,rui) [ˈsʌməri] +618.well,n.&,a.井;好,良好,,(wa,i,ou) [wɛl] +619.link,n.&,v.链接;连接,联络,(lin,k) [lɪŋk] +620.according,to,a.按照,根据,,(ao,kui,ding) [ə'kɔdɪŋ] +621.identify,v.识别,辨认,(ai,dai,nei,fai) [aɪˈdɛntəˌfaɪ] +622.designated,a.指定的,特指的,,(da,si,nei,te,d) ['dezɪɡneɪtɪd] +623.pertain,vi.附属,属于,关于,,(p,tin) [pərˈteɪn] +624.expansion,n.展开,展开式,,(ei,k,si,pan,sheng) [ɪkˈspænʃən] +625.incompatible,a.不兼容的,(in,ca,mu,pai,tei,bou) [ˌɪnkəmˈpætəbəl] +626.blinking,n.闪烁,,(bo,lin,kin) ['blɪŋkɪŋ] +627.month,n.月份,,(ma,n,pu) [mʌnθ] +628.precede,v.先于,,(pe,ci,de) [prɪˈsid] +629.readily,ad.容易地,不勉强,,(ruai,de,li) [ˈrɛdəli, ˈrɛdli] +630.transportable,a.可移动的,,(chuan,s,ip,e,dei,bao) [trænˈspɔrtəbl] +631.appropriately,ad.适当地,,(a,p,rou,pe,te,li) [ə'proʊprɪrtlɪ] +632.routine,n.程序,例行程序,,(rui,tin) [ruˈtin] +633.ready,a.就绪,准备好的,,(ruai,dei) [ˈrɛdi] +634.listing,n.列表,编目,,(li,si,tin) [ˈlɪstɪŋ] +635.newly,ad.新近,重新,,(nui,li) [ˈnuli] +636.year,n.(一)年,年度,年龄,,(ye) [jɪr] +637.contact,n.接触,触点,,(kang,tai,ke,t) [ˈkɑntækt] +638.session,n.对话,通话,,(se,sheng) [ˈsɛʃən] +639.own,a.&,v.自己的;拥有,,(ou,en) [oʊn] +640.redraw,vt.再拉,,(rui,di,ao) [ˌriːˈdrɔː] +641.here,ad.在这里,(he,i,er) [hɪr] +642.manual,a.手工的,手动的,,(man,nui,ou) [ˈmænjuəl] +643.particular,a.特定的,特别的,,(pe,tei,ke,le) [pərˈtɪkjələ(r)] +644.rectangle,n.矩形,,(rui,ke,ten,gou) [ˈrɛkˌtæŋɡəl] +645.additive,a.&,n.相加的;附加物,,(ai,de,te,wu) [ˈædɪtɪv] +646.similar,a.相似的,(si,mi,le) [ˈsɪməlɚ] +647.assembly,n.汇编,安装,装配,,(e,san,bo,li) [əˈsɛmbli] +648.copyright,n.版权,,(kao,p,i,r,ua,i,te) [ˈkɑpiraɪt] +649.description,n.描述,,(dei,si,ke,pe,sheng) [dɪˈskrɪpʃən] +650.retrieve,v.检索,,(e,chui,wu) [rɪˈtriv] +651.mistake,n.错误,,(mi,si,tei,ke) [mɪˈstek] +652.produce,v.生产,制造,,(po,dui,si) [prəˈdus] +653.ram,随机存取存储器,,(ruai,en) [ræm] +654.exception,n.例外,异常,异议,(ei,kesai,po,sheng) [ɪkˈsɛpʃən] +655.digit,n.数字,位数,位,,(di,zhi,te) [ˈdɪdʒɪt] +656.reverse,v.&,a.反向的,逆,,(ri,we,s) [rɪˈvɜrs] +657.minimum,n.&,a.最小(的),最低,,(mi,ni,men) [ˈmɪnəməm] +658.enough,a.&,ad.足够的,充足的,,(,in,na,fu) [ɪˈnʌf] +659.although,conj.虽然,即使,,(ao,wai,ou) [ɔlˈðo] +660.re,index,v.&,n.变换(改变)符号,,(ruan,di,ke,s,i) [reɪ] +661.third,a.&,n.第三,三分之一,(ou,de,) [θɜrd] +662.red,a.&,n.红色(的),(ruai,de) [rɛd] +663.along,prep.&,ad.沿着,,(e,lang) [əˈlɔŋ] +664.test,n.&,v.测试,(tei,si,t) [test] +665.small,a.小的,小型的,,(si,mao,ou) [smɔl] +666.feed,v.馈给,(打印机)进纸,,(,fi,d,e) [fid] +667.company,n.&,v.公司;交际,交往(kan,po,ni) [ˈkʌmpəni] +668.movie,n.影片,电影(院),(mu,wi) [ˈmuvi] +669.compile,vt.编译,,(ca,m,pai,ou) [kəmˈpaɪl] +670.frequently,ad.常常,频繁地,(fei,kuai,te,li) [ˈfrikwəntlɪ] +671.undefined,a.未定义的,,(an,de,fai,en,de) [ˌʌndɪˈfaɪnd] +672.state,n.&,vt.状态;确定(si,dei,te), [stet] +673.tick,v;n.滴答(响);勾号(√),,(t,i,k,e) [tɪk] +674.accept,vt.接受,认可,同意,(e,ke,se,p,t) [ækˈsɛpt] +675.intense,a.强烈的,高度的,,(in,ten,si) [ɪnˈtɛns] +676.documentation,n.文件编制,文本(dao,kei,men,tei,sheng) [ˌdɑkjumenˈteɪʃn] +677.asterisk,n.星号(*),,(a,si,te,s,k) [ˈæstəˌrɪsk] +678.easily,ad.容易地,轻易地,,(y,zi,li) [ˈizəli] +679.become,v.成为,变成,适宜,,(bi,ka,mu) [bɪˈkʌm] +680.address,vt.&,n.寻址;地址,(e,de,zhuai,si) [ˈædres] +681.interface,n.接口,,(,in,te,fe,i,s,i) [ˈɪntərfeɪs] +682.pause,vi.暂停,(pao,zi) [pɔz] +683.repeat,v.重复,,(ri,pi,te) [rɪˈpit] +684.restart,v.重新启动,再启动,,(rui,sit,a,te) [ˌriˈstɑrt] +685.assumed,a.假定的,,(e,sing,m,d) [əˈsumd] +686.speed,n.速度,,(s,i,p,i,d) [spid] +687.entry,n.输入,项(目),入口,(en,chui) [ˈɛntri] +688.combine,v.组合,联合,,(ca,m,bai,n) [kəmˈbaɪn] +689.organize,v.组织,创办,成立,,(o,ge,na,i,zi) [ˈɔrgənaɪz] +690.finished,a.完成的,,(,fi,ni,s,hi,t,) [ˈfɪnɪʃt] +691.mixed,a.混合的,,(mi,k,s,t) [mɪkst] +692.permit,v.许可,容许,(po,mi,t) [pərˈmɪt] +693.formatting,n.格式化,,(fao,mei,tin) ['fɔmætɪŋ] +694.root,n.根,(ru,te) [rut, rʊt] +695.symbol,n.符号,记号,,(sen,bou) [ˈsɪmbəl] +696.binary,n.&,a.二进制;双态的,,(ba,be,rui) [ˈbaɪnəri] +697.whenever,ad.&,conj.随时,,(wen,na,we) [hwɛnˈɛvɚ] +698.reach,v.&,n.范围,达到范围,,(rui,chi) [ritʃ] +699.caution,n.&,v.警告,注意,,(kao,sheng) [ˈkɔʃən] +700.subtotal,n.&,v.小计,求部分和,,(sa,bo,tei,lou) [ˈsʌbtoʊtl] +701.card,n.卡片,插件(板) [kɑrd] +702.general,a.通用的 [ˈdʒɛnərəl] +703.associated,a.联合的,相联的 [əˈsoʊʃieɪtɪd] +704.transfer,v.传送,转换,转移 [trænsˈfɚ] +705.connect,v.连接 [kəˈnɛkt] +706.partition,v.划分,分区,部分 [pɑrˈtɪʃn] +707.hexadecimal,a.十六进制的 [ˌhɛksəˈdɛsəməl] +708.generate,vt.产生,发生,生成 [ˈdʒɛnəˌret] +709.specification,n.说明书,规则说明书 [ˌspɛsəfɪˈkeʃən] +710.customize,vt.定制,定做 [ˈkʌstəˌmaɪz] +711.far,a.远的,遥远的 [fɑr] +712.nest,v.嵌套,后进先出 [nɛst] +713.duplicate,vt.复制,转录,加倍 [ˈduplɪkeɪt] +714.compression,n.压缩,浓缩 [kəmˈprɛʃən] +715.unable,a.不能的 [ʌnˈebəl] +716.means,n.方法,手段 [minz] +717.alternately,ad.交替地,轮流地 [ɔl'tɜnətlɪ] +718.intensity,n.强度,亮度 [ɪnˈtɛnsɪti] +719.reading,n.读,读数 ['ridɪŋ] +720.let,v.让,允许 [lɛt] +721.explicitly,ad.明显地,显然地 [ɪk'splɪsɪtlɪ] +722.compare,v.比较,对照,比喻 [kəmˈper] +723.sector,n.&,v.扇区,段;分段 [ˈsɛktɚ, -ˌtɔr] +724.problem,n.问题,难题 [ˈprɑbləm] +725.vertically,ad.竖直地,直立地 [ˈvətɪklɪ] +726.horizontally,ad.水平地 [ˌhɑrɪˈzɑntəlɪ] +727.backspace,v.退格,回退 ['bækspeɪs] +728.terminate,v.端接,终止 [ˈtɜrmɪneɪt] +729.people,n.人们 [ˈpipəl] +730.short,a.&,n.短的;短路 [ʃɔrt] +731.drag,vt.拖,拉,牵,曳 [dræɡ] +732.formatted,a.有格式的 [fɔrmæt] +733.preview,n.&,vt.预映 [ˈpriˌvju] +734.underscore,vt.在…下面划线 [ˌʌndərˈskɔ(r)] +735.correctly,ad.正确地 [kəˈrɛktlɪ] +736.initially,ad.最初,开头 [ɪˈnɪʃəli] +737.reformat,v.重定格式 [riˈfɔrmæt] +738.inside,n.&,a.内部,内容;内部的 [ɪnˈsaɪd, ˈɪnˌsaɪd] +739.integrate,v.综合,集成 [ˈɪntɪˌɡret] +740.controlled,a.受控制的,受操纵的 [kənˈtroʊld] +741.period,n.周期 [ˈpɪriəd] +742.huge,a.巨大的,非常的 [hjudʒ] +743.determined,a.坚决的,毅然的 [dɪˈtɜrmɪnd] +744.trailing,n.&,a.结尾;尾随的 ['treɪlɪŋ] +745.seek,v.查找,寻找,探求 [sik] +746.introduction,n.入门,介绍,引进 [ˌɪntrəˈdʌkʃən] +747.indent,v.缩排 [ɪnˈdent] +748.base,n.基,底,基地址 [bes] +749.integer,n.整数 [ˈɪntɪdʒɚ] +750.attempt,vt.&,n.尝试,试验 [əˈtɛmpt] +751.twice,n.&,ad.两次,两倍于 [twaɪs] +752.formed,a.&,n.成形 ['fɔmd] +753.subscript,n.注脚,下标 [ˈsʌbˌskrɪpt] +754.tiny,a.微小的,微量的 [ˈtaɪni] +755.model,n.模型,样机,型号,, [ˈmɑdl] +756.correction,n.校正,修正 [kəˈrɛkʃən] +757.rating,n.定额,标称值 [ˈretɪŋ] +758.secondary,a.辅助的,第二的 [ˈsekənderi] +759.opened,a.开路的,断开的 ['oʊpənd] +760.limit,n.极限,限界 [ˈlɪmɪt] +761.sun,n.太阳,日 [sʌn] +762.translate,v.翻译,转换,平移 [trænsˈlet, trænz-, ˈtrænsˌlet, ˈtrænz-] +763.reason,n.原因,理由 [ˈrizən] +764.colon,n.冒号“:” [ˈkoʊlən] +765.avoid,vt.避免,取消,无效 [əˈvɔɪd] +766.range,n.范围,域,区域 [rendʒ] +767.allocate,vt.分配 [ˈæləˌket] +768.wordperfect,a.一字不错地熟记的 +769.simply,ad.简单地,单纯地 [ˈsɪmpli] +770.verify,vt.鉴定,检验,核对 [ˈvɛrəˌfaɪ] +771.manner,n.方法,样式,惯例 [ˈmænɚ] +772.direction,n.方向,定向,指向 [dɪˈrɛkʃən, daɪ-] +773.portion,n.&,vt.部分;分配 [ˈpɔrʃn] +774.emulator,n.仿真器,仿真程序 +775.successful,a.成功的 [səkˈsɛsfəl] +776.applied,a.适用的,外加的 [əˈplaɪd] +777.sum,n.和,合计,总额 [sʌm] +778.achieve,vt.完成,实现 [əˈtʃiv] +779.together,ad.一同,共同,相互 [təˈɡɛðɚ] +780.affect,vt.影响,改变,感动 [əˈfɛkt] +781.delay,v.延迟 [dɪˈle] +782.free,a.自由的,空闲的 [fri] +783.properly,ad.真正地,适当地 [ˈprɑpərli] +784.kind,n.种类,属,级,等 [kaɪnd] +785.splitting,n.分区(裂) [ˈsplɪtɪŋ] +786.feature,n.特征,特点 [ˈfitʃɚ] +787.console,n.控制台,操作台 [kənˈsoʊl] +788.operate,v.操作,运算 [ˈɑpəreɪt] +789.kernel,n.内核(核心)程序 [ˈkɜrnl] +790.easy,a.&,ad.容易的;容易地 [ˈizi] +791.modifier,n.修改量,变址数 [ˈmɑdɪfaɪə(r)] +792.invalid,a.无效的 [ˈɪnvəlɪd] +793.compiler,n.编译程序(器) [kəmˈpaɪlɚ] +794.dot,n.点 [dɑt] +795.beep,n.蜂鸣声,嘀嘀声 [bip] +796.face,n.面,表面 [fes] +797.random,a.随机的 [ˈrændəm] +798.facility,n.设施,装备,便利 [fəˈsɪləti] +799.heading,n.标题 [ˈhɛdɪŋ] +800.asynchronous,a.异步的,非同步的 [e'sɪŋkrənəs] +801.series,n.序列,系列,串联 [ˈsɪriz] +802.individual,a.个别的,单个的 [ˌɪndəˈvɪdʒuəl] +803.explain,v.阐明,解释 [ɪkˈsplen] +804.paste,n.湖,胶,膏 [pest] +805.welcome,vt.&,n.欢迎 [ˈwɛlkəm] +806.six,n.&,a.六(个)(的) [sɪks] +807.early,a.&,ad.早期,初期 [ˈɜrli] +808.wrap,v.&,n.包装,缠绕 [ræp] +809.blue,a.&,n.蓝(色),青色 [blu] +810.queue,v.&,n.排队,队列 [kju] +811.interrupt,v.&,n.中断 [ˌɪntəˈrʌpt] +812.respect,n.&,vt.遵守,关系 [rɪˈspɛkt] +813.converted,a.转换的,变换的 [kən'vɜtɪd] +814.common,a.公用的 [ˈkɑmən] +815.hyphen,n.连字符,短线 [ˈhaɪfən] +816.serial,a.串行的,串联的 [ˈsɪriəl] +817.loading,n.装入,加载,存放 [ˈloʊdɪŋ] +818.retain,vt.保持,维持 [rɪˈten] +819.setup,n.安排,准备,配置 [ˈsɛtˌʌp] +820.freeze,v.冻结,结冰 [friz] +821.intend,vt.打算,设计 [ɪnˈtɛnd] +822.explanation,n.说明,注解,注释 [ˌɛkspləˈneʃən] +823.certain,a.确实的,确定的 [ˈsɜrtn] +824.zap,v.迅速离去,击溃 [zæp] +825.archive,vt.归档 [ˈɑrkaɪv] +826.negative,a.负的,否定的 [ˈnɛɡətɪv] +827.image,n.图像,影像,映像 [ˈɪmɪdʒ] +828.platform,n.平台,台架 [ˈplætfɔrm] +829.often,ad.经常,往往,屡次 [ˈɔfn] +830.signal,n.&,v.信号;发信号 [ˈsɪɡnəl] +831.cpu,控制处理部件 [ˌsipi'ju] +832.bit,n.比特;(二进制)位 [bɪt] +833.fully,ad.十分,完全 [ˈfʊli] +834.deactivate,vt.释放,去活化 [diˈæktəˌvet] +835.especially,ad.特别(是),尤其 [ɛˈspɛʃəli, ɪˈspɛʃ-] +836.usually,ad.通常,平常,一般 [ˈjuːʒuəli] +837.recommend,vt.推荐,建议 [ˌrɛkəˈmɛnd] +838.maintain,vt.维护,保养,保留 [menˈten] +839.important,a.严重的,显著的 [ɪmˈpɔrtnt] +840.central,a.中央的,中心的 [ˈsɛntrəl] +841.addition,n.加法,增加,, [əˈdɪʃən] +842.anytime,ad.在任何时候 [ˈɛniˌtaɪm] +843.analyst,n.分析员 [ˈænəlɪst] +844.false,a.假(布尔值),错误 [fɔls] +845.black,a.&,n.黑色的,黑色 [blæk] +846.gather,n.聚集,集合 [ˈɡæðɚ] +847.cycle,n.&,v.周,周期;循环 [ˈsaɪkəl] +848.relative,a.相对的 [ˈrɛlətɪv] +849.offer,v.提供,给予,呈现 [ˈɔfə(r)] +850.ending,n.结束 [ˈɛndɪŋ] +851.rent,v.&,n.租用;裂缝 [rɛnt] +852.sentence,n.句(子) [ˈsɛntəns] +853.remember,v.存储,记忆,记住 [rɪˈmɛmbɚ] +854.proper,a.真的,固有的 [ˈprɑpə(r)] +855.design,v.设计 [dɪˈzaɪn] +856.examine,v.检验,考试,审查 [ɪɡˈzæmɪn] +857.initial,a.最初的,初始的 [ɪˈnɪʃəl] +858.corrupt,v.&,a.恶化;有毛病的 [kəˈrʌpt] +859.buy,v.买,购买,赢得 [baɪ] +860.increase,v.增加,增大 [ɪnˈkris] +861.host,n.主机 [hoʊst] +862.sample,n.&,v.样品,样本;抽样 [ˈsæmpl] +863.pending,a.悬而未决的,未定的 [ˈpɛndɪŋ] +864.divide,v.除 [dɪˈvaɪd] +865.boot,n.引导,靴 [but] +866.hide,v.隐藏,隐蔽 [haɪd] +867.half,n.&,a.&,ad.一半,半个 [hæf] +868.magenta,n.&,a.深红色(的) [məˈdʒɛntə] +869.leading,n.&,a.引导(的) [ˈlidɪŋ] +870.wrong,a.&,ad.n.错误(的) [rɔŋ] +871.today,n.&,ad.今天 [təˈde] +872.least,a.&,ad.最小(的) [list] +873.opposite,a.&,n.&,ad.相反的 [ˈɑpəzət] +874.white,a.&,n.白色(的) [hwaɪt, waɪt] +875.override,v.&,n.超越,克服 [ˌoʊvərˈraɪd] +876.brown,a.&,n.褐色(的),棕色 [braʊn] +877.hex,a.&,n.六角形的 [heks] +878.rest,n.&,v.剩余,休息 [rest] +879.damage,n.&,vt.损伤,故障 [ˈdæmɪdʒ] +880.instant,a.立刻的,直接的 [ˈɪnstənt] +881.reserved,a.保留的,预订的 [rɪˈzɜrvd] +882.technology,n.工艺,技术,制造学 [tekˈnɑlədʒi] +883.handle,n.处理,句柄 [ˈhændl] +884.apply,v.应用,适用于,作用 [əˈplaɪ] +885.stand,v.处于(状态),保持 [stænd] +886.payment,n.支付,付款 [ˈpemənt] +887.kilobyte,n.千字节(kb) [ˈkɪləˌbaɪt] +888.parenthesis,n.括弧,圆括号 [pəˈrɛnθɪsɪs] +889.scan,v.扫描,扫视,搜索 [skæn] +890.locating,n.定位,查找 [loʊ'kəɪtɪŋ] +891.developer,n.开发者,显影剂 [dɪˈveləpər] +892.murder,n.弄坏,毁掉 [ˈmɜrdə(r)] +893.flush,v.弄平,使齐平 [flʌʃ] +894.unlock,v.开锁,打开 [ˌʌnˈlɑk] +895.movement,n.传送,移动 [ˈmuvmənt] +896.consecutive,a.连续的,连贯的 [kənˈsɛkjətɪv] +897.collection,n.集合,聚集,画卷 [kəˈlɛkʃən] +898.front,a.前面的,正面的 [frʌnt] +899.addressing,n.寻址 +900.prefix,n.前缀 [ˈpriˌfɪks] +901.carousel,n.圆盘传送带 [ˌkærəˈsɛl, -ˈzɛl] +902.safety,n.安全,保险 [ˈsefti] +903.static,a.静态的,不变的 [ˈstætɪk] +904.background,n.背景,底色,基础 [ˈbækˌɡraʊnd] +905.product,n.(乘)积,产品 [ˈprɑdʌkt] +906.assignment,n.赋值,分配 [əˈsaɪnmənt] +907.bad,a.坏的,不良的 [bæd] +908.declare,v.说明 [dɪˈkler] +909.adjust,vt.调整,调节,控制 [əˈdʒʌst] +910.recognize,v.识别 [ˈrɛkəɡˌnaɪz] +911.route,n.路线,路由 [rut, raʊt] +912.respectively,ad.分别地 [rɪˈspɛktɪvli] +913.unsuccessful,a.不成功的,失败的 [ˌʌnsəkˈsɛsfəl] +914.received,a.被接收的,公认的 [rɪˈsivd] +915.navigate,v.导航,驾驶 [ˈnævɪˌɡet] +916.considered,a.考虑过的,被尊重的 [kənˈsɪdəd] +917.due,a.到期的,应付(给)的 [du] +918.recently,ad.近来 ['risṇtlɪ] +919.room,n.房间,空间 [rum, rʊm] +920.descend,v.下降,落下 [dɪˈsɛnd] +921.fact,n.事实 [fækt] +922.alter,v.改变,修改 [ˈɔltɚ] +923.track,n.磁道,轨道 [træk] +924.precedence,n.优先权,, [ˈprɛsɪdəns, prɪˈsidns] +925.skeleton,n.骨架,框架 [ˈskɛlɪtn] +926.log,n.&,v.记录,存入 [lɔg] +927.star,n.星形,星号 [stɑr] +928.hot,a.热的 [hɑt] +929.replaceable,a.可替换的 [rɪˈpleɪsəbl] +930.accessible,a.可以使用的 [ækˈsɛsəbəl] +931.involve,vt.涉及,卷入,占用 [ɪnˈvɑlv] +932.configure,vt.使成形 [kənˈfɪgjər] +933.question,n.问题 [ˈkwɛstʃən] +934.green,n.&,a.绿色绿色的 [ɡrin] +935.entirely,ad.完全地,彻底地 [ɪnˈtaɪərli] +936.helpful,a.有帮助的,有用的 [ˈhɛlpfəl] +937.middle,a.中间的 [ˈmidl] +938.declared,a.承认的,申报的 [dɪˈklerd] +939.compress,vt.压缩,精减 [kəmˈprɛs] +940.graphically,ad.用图表表示 [ˈɡræfɪklɪ] +941.auto,a.自动的 [ˈɔtoʊ] +942.automatic,a.自动的 [ˌɔtəˈmætɪk] +943.aligned,a.对准的,均衡的 [ə'laɪnd] +944.anywhere,ad.在任何地方 [ˈeniwer] +945.terminal,n.终端,端子 [ˈtɜrmɪnl] +946.door,n.舱门,入口,孔 [dɔr,dor] +947.expire,v.终止,期满 [ɪkˈspaɪr] +948.resolution,n.分辨率 [ˌrɛzəˈluʃən] +949.local,a.局部的,本地的 [ˈloʊkl] +950.semicolon,n.分号(;) [ˈsemikoʊlən] +951.reread,vt.重读 [ri'rid] +952.overwrite,v.重写 [ˌoʊvərˈraɪt] +953.critical,a.&,n.临界的;临界值 [ˈkrɪtɪkəl] +954.manager,n.管理程序 [ˈmænɪdʒɚ] +955.capability,n.能力,效力,权力 [ˌkeɪpə'bɪləti] +956.affected,a.受了影响的 [əˈfɛktɪd] +957.allowed,a.容许的 [ə'laʊd] +958.border,n.边界,框,界限 [ˈbɔrdə(r)] +959.cache,n.高速缓存 [kæʃ] +960.bell,n.铃,钟 [bɛl] +961.play,v.玩,奏,放音,放象 [pleɪ] +962.quickly,a.快,迅速地 [ˈkwɪklɪ] +963.fastback,n.快速返回 ['fɑstbæk] +964.answer,n.&,v.响应,回答;答复 [ˈænsə(r)] +965.represent,v.表示,表现,代表 [ˌrɛprɪˈzɛnt] +966.difference,n.差分,差 [ˈdɪfərəns, ˈdɪfrəns] +967.highest,a.最高的 [haɪɪst] +968.project,n.项目,计划,设计 [ˈprɑdʒekt] +969.physical,a.物理的,实际的 [ˈfɪzɪkəl] +970.matter,n.物质,内容,事情 [ˈmætɚ] +971.hercules,n.大力神,大力士 +972.reduce,v.减少,降低,简化 [rɪˈdus] +973.publisher,n.出版者,发行人 [ˈpʌblɪʃɚ] +974.trim,n.区标,微调 [trɪm] +975.substitute,v.代替,替换,代入 [ˈsʌbstɪtut] +976.disabled,a.禁止的,报废的 [dɪsˈebəld] +977.recent,a.近来的 [ˈrisənt] +978.positive,a.正的,阳的,正片 [ˈpɑzətɪv] +979.upgrade,v.升级,提高质量 [ˈʌpˌɡred] +980.instance,n.&,vt.例子,情况;举例 [ˈɪnstəns] +981.happen,vi.(偶然)发生,碰巧 [ˈhæpən] +982.elapsed,vi.&,n.经过 [ɪ'læpst] +983.future,n.&,a.将来,未来的 [ˈfjutʃɚ] +984.midnight,n.&,a.午夜 [ˈmɪdˌnaɪt] +985.though,conj.虽然,尽管 [ðoʊ] +986.nor,conj.也不 [nɔr] +987.mono,a.&,n.单音的 [ˈmɑnoʊ] +988.slide,v.&,n.滑动,滑动触头 [slaɪd] +989.abort,v.&,n.中断,故障 [əˈbɔrt] +990.jump,v.&,n.转移 [dʒʌmp] +991.toward,prep.朝(着…方向) [tɔrd, tord, təˈwɔrd] +992.throughout,prep.贯穿,整,遍 [ θruˈaʊt] +993.via,prep.经过,经由 [ˈvaɪə, ˈviə] +994.among,prep.在…之中,中间 [əˈmʌŋ] +995.neither,a.&,pron.(两者)都不 [ˈniðɚ, ˈnaɪ-] +996.layer,n.&,v.层,涂层 [ˈler] +997.scatter,v.散射,分散,散布 [ˈskætɚ] +998.attention,n.注意(信号) [əˈtɛnʃən] +999.convention,n.常规,约定,协定 [kənˈvɛnʃən] +1000.conventional,a.常规的,习惯的 [kənˈvɛnʃənəl] +1001.tool,n.工具,刀 [tul] +1002.handler,n.处理程序 [ˈhændlɚ] +1003.processor,n.处理机,处理程序 [ˈprɑsesə] +1004.desktop,a.台式的 [ˈdesktɑp] +1005.build,v.建造,建立,组合 [bɪld] +1006.windowing,n.开窗口 ['wɪndoʊɪŋ] +1007.development,n.开发,研制,显影 [dɪˈvɛləpmənt] +1008.exceed,v.超过,大于 [ɪkˈsid] +1009.understand,v.懂,明白(了),理解 [ˌʌndərˈstænd] +1010.horizontal,a.水平的,横向的 [ˌhɔrəˈzɑntl] +1011.alphabetically,ad.按字母表顺序 [ˌælfə'betɪklɪ] +1012.meet,v.“与”,符合,满足 [mit] +1013.protect,vt.保护 [prəˈtɛkt] +1014.reserve,vt.保留,预定,预约 [rɪˈzɜrv] +1015.clock,n.时钟,计时器,同步 [klɑk] +1016.manifest,vt.表明,显示,显现 [ˈmænəˌfɛst] +1017.safe,a.安全的,可靠的 [sef] +1018.disconnect,vt.拆接,断开,拆线 [ˌdɪskəˈnɛkt] +1019.clockwise,a.顺时针的 [ˈklɑkwaɪz] +1020.eliminate,vt.除去,消除,切断 [ɪˈlɪməˌnet] +1021.actual,a.实际的,现实的 [ˈæktʃuəl] +1022.declaration,n.说明,申报 [ˌdɛkləˈreʃən] +1023.probably,ad.多半,很可能 [ˈprɑbəbli] +1024.ring,n.&,v.环,圈;按铃 [rɪŋ] +1025.cover,vt.盖,罩,套 [ˈkʌvɚ] +1026.indicator,n.指示器,指示灯 [ˈɪndɪˌketɚ] +1027.apple,n.苹果 [ˈæpəl] +1028.icon,n.图符,象征 [ˈaɪkɑn] +1029.consideration,n.考虑,研究,讨论 [kənˌsɪdəˈreʃən] +1030.skill,n.技巧 [skɪl] +1031.picture,n.图象,画面 [ˈpɪktʃɚ] +1032.layout,n.布置,布局,安排 [ˈleˌaʊt] +1033.suggest,vt.建议,提议,暗示 [səɡˈdʒɛst, səˈdʒɛst] +1034.convenient,a.方便的,便利的 [kənˈvinjənt] +1035.instruct,vt.讲授,命令 [ɪnˈstrʌkt] +1036.appendix,n.附录 [əˈpɛndɪks] +1037.medium,n.&,a.媒体;中等的 [ˈmidiəm] +1038.truncate,vt.截尾,截断 [ˈtrʌŋkeɪt] +1039.inhibit,vt.禁止 [ɪnˈhɪbɪt] +1040.nearly,ad.近乎,差不多,几乎 [ˈnɪrli] +1041.warn,vt.警告,警戒,预告 [wɔrn] +1042.underline,n.下划线 [ˌʌndərˈlaɪn] +1043.register,n.寄存器 [ˈrɛdʒɪstɚ] +1044.stuff,n.&,vt.材料;装入 [stʌf] +1045.exclude,vt.排除,除去 [ɪk'sklud] +1046.destroy,vt.破坏,毁坏,打破 [dɪˈstrɔɪ] +1047.calculation,n.计算,统计,估计 [ˌkælkjəˈleʃən] +1048.angle,n.角,角度 [ˈæŋɡəl] +1049.lexical,a.辞典的,词法的 [ˈlɛksɪkəl] +1050.decide,v.(使)判定,判断 [dɪˈsaɪd] +1051.trouble,n.故障 [ˈtrʌbəl] +1052.processing,n.(数据)处理,加工 +1053.customer,n.顾客,客户 [ˈkʌstəmɚ] +1054.port,n.端口,进出口 [pɔrt] +1055.discuss,vt.讨论,论述 [dɪˈskʌs] +1056.segment,n.段,片段,图块 [ˈsɛɡmənt] +1057.filing,n.(文件的)整理汇集 [ˈfaɪlɪŋ] +1058.identically,ad.相等,恒等 [aɪ'dentɪklɪ] +1059.market,n.市场,行情,销路 [ˈmɑrkɪt] +1060.valuable,a.有价值的,贵重的 [ˈvæljuəbəl, ˈvæljə-] +1061.limited,a.有限的,(受)限制的 [ˈlɪmɪtɪd] +1062.trying,a.费劲的,困难的 [ˈtraɪɪŋ] +1063.heap,n.堆阵 [hip] +1064.grey,n.&,a.灰色;灰色的 [ɡre] +1065.permanently,ad.永久地,持久地 [ˈpəmənəntlɪ] +1066.accelerator,n.加速装置,加速剂 [ækˈsɛləˌretɚ] +1067.originally,ad.原来,最初 [əˈrɪdʒənəli] +1068.ability,n.性能,能力,效率 [əˈbɪlɪti] +1069.internally,ad.在内(部) [ɪnˈtənəlɪ] +1070.derelict,vt.中途淘汰 [ˈdɛrəˌlɪkt] +1071.redi,rect,vt.重定向 +1072.reside,vi.驻留 [rɪˈzaɪd] +1073.header,n.首部,标题,报头 [ˈhɛdɚ] +1074.extra,a.特别的,额外的 ['ekstrə] +1075.repeated,a.重复的 [rɪˈpitɪd] +1076.death,n.毁灭,消灭 [dɛθ] +1077.observe,v.观察,探测 [əbˈzɜrv] +1078.density,n.密度 [ˈdɛnsɪti] +1079.management,n.管理 [ˈmænɪdʒmənt] +1080.environmental,a.周围的,环境的 [ɛnˌvaɪrənˈmɛntl, -ˌvaɪən] +1081.surrounding,a.周围的,环绕的 [səˈraʊndɪŋ] +1082.master,a.总要的,总的 [ˈmæstə(r)] +1083.recursive,a.递归的,循环的 [rɪˈkɜrsɪv] +1084.trap,n.&,vt.陷阱;俘获 [træp] +1085.dimensional,n.尺寸的,…维的 [dɪˈmɛnʃənl] +1086.logic,n.逻辑(线路) [ˈlɑdʒɪk] +1087.conjunction,n.逻辑乘,“与” [kənˈdʒʌŋkʃən] +1088.identical,a.相等的,相同的 [aɪˈdɛntɪkəl] +1089.advice,n.意见,参考说明,, [əd'vaɪs] +1090.meaning,n.意义,含义 [ˈminɪŋ] +1091.fall,n.落下,降落 [fɔl] +1092.interval,n.间歇,区间 [ˈɪntərvl] +1093.compatibility,n.兼容性,适应性 [kəmˌpætəˈbɪlətɪ] +1094.rule,n.规则,法则,尺 [ruːl] +1095.flag,n.标志(记),特征(位) [flæɡ] +1096.criterion,n.标准,判据,准则 [kraɪˈtɪriən] +1097.office,n.办公室,局,站 [ˈɔfɪs] +1098.express,a.快速的 [ɪkˈsprɛs] +1099.volume,n.卷,册,体积,容量 [ˈvɑljum] +1100.soft,a.软的 [sɔft] +1101.rated,a.额定的 ['reɪtɪd] +1102.activity,n.活力,功率 [ækˈtɪvɪti] +1103.odometer,n.里程表,计程仪 [oʊˈdɑmɪtə(r)] +1104.phoenix,n.凤凰,绝世珍品 [ˈfinɪks] +1105.obtain,v.获得,得到 [əbˈtein] +1106.easel,n.框,(画)架 [ˈizəl] +1107.latter,a.后面的,最近的 [ˈlætɚ] +1108.decrease,v.减少,降低,缩短 [dɪˈkris] +1109.mainframe,n.主机,大型机 [ˈmeɪnfreɪm] +1110.debugger,n.调试程序 +1111.diacritical,a.区分的,辩别的 [ˌdaɪə'krɪtɪkl] +1112.confidential,a.机密的 [ˌkɑnfɪˈdenʃl] +1113.trace,v.跟踪,追踪 [tres] +1114.division,n.除,除法,(程序)部分 [dɪˈvɪʒən] +1115.regular,a.正则的,正规的 [ˈrɛɡjəlɚ] +1116.implicit,a.隐式的 [ɪmˈplɪsɪt] +1117.mention,vt.&,n.叙述,说到 [ˈmɛnʃən] +1118.near,ad.&,prep.领近,接近 [nɪr] +1119.fifth,n.&,a.第五,五分之一 [fɪfθ] +1120.seven,n.&,a.七(个) [ˈsɛvən] +1121.whereas,conj.面,其实,既然 [ˌwerˈæz] +1122.review,v.&,n.(再)检查 [ rɪˈvju] +1123.whatever,pron.&,a.无论什么 [wətˈevə(r)] +1124.transform,v.&,n.变换,变换式 [trænsˈfɔrm] +1125.align,v.&,n.定位,对准 [əˈlaɪn] +1126.yellow,a.&,n.黄色(的) [ˈjeloʊ] +1127.assist,v.&,n.加速,帮助 [əˈsɪst] +1128.finish,v.&,n.完成,结束 [ˈfɪnɪʃ] +1129.micro,a.&,n.微的,百万分之一 [ˈmaɪkroʊ] +1130.beyond,prep.超过,那边 [bɪˈjɑnd] +1131.against,prep.反对,阻止 [əˈɡenst] +1132.upon,prep.依据,遵照 [əˈpɑn] +1133.service,n.&,vt.服务,业务 [ˈsɜrvɪs] +1134.little,a.小的,少量的 [ˈlɪtl] +1135.exhaust,v.取尽,用完 [ɪɡˈzɔst] +1136.choice,n.选择,精品 [tʃɔɪs] +1137.sounding,a.发声的 [ˈsaʊndɪŋ] +1138.develop,v.发展,研制,显影 [dɪˈvɛləp] +1139.holding,n.保持,固定,存储 [ˈhoʊldɪŋ] +1140.alpha,n.希腊字母,α,未知数 ['ælfə] +1141.constant,n.常数 [ˈkɑnstənt] +1142.warranty,n.保证(书),授权 [ˈwɔrənti] +1143.stay,v.停止,停留 [ste] +1144.indus,try,n.工业 +1145.trigger,n.&,v.触发器;触发 [ˈtrɪɡɚ] +1146.lesson,n.功课,教训 [ˈlɛsən] +1147.handling,n.处理,操纵 [ˈhændlɪŋ] +1148.treat,v.处理,加工 [trit] +1149.busy,a.忙碌的,占线的 [ˈbɪzi] +1150.usage,n.应用,使用,用法 [ˈjusɪdʒ, -zɪdʒ] +1151.difficult,a.困难的,不容易的 [ˈdɪfɪˌkʌlt, -kəlt] +1152.failure,n.失效,故障,失败 ['feɪljər] +1153.communication,n.通信 [kəˌmjunɪˈkeʃən] +1154.building,n.建造,建筑,房屋 +1155.ally,v.联合,与…关联 ['ælaɪ] +1156.exclamation,n.惊叹(号) [ˌɛkskləˈmeʃən] +1157.turning,a.转弯的,旋转的 [ˈtɜrnɪŋ] +1158.whole,a.全部的,整个的 [hoʊl] +1159.parent,n.双亲,父代 [ˈperənt] +1160.connection,n.连接(法) [kəˈnɛkʃən] +1161.connectivity,n.连通性,联络性 [ˌkɑnekˈtɪvɪti] +1162.translation,n.翻译,变换,平移 [trænsˈleʃən, trænz-] +1163.dynamic,a.动态的,动力的 [daiˈnæmik] +1164.foreground,n.前台 [ˈfɔrgraʊnd] +1165.preserve,vt.保存,维持 [prɪˈzɜrv] +1166.vice,n.缺点,毛病,错误 [vaɪs] +1167.necessarily,ad.必定,当然 [ˌnɛsɪˈsɛrəli, -ˈsɛr-] +1168.circle,n.圆,圈,循环,周期 [ˈsɜrkl] +1169.differ,vi.不同,不一致 [ˈdɪfɚ] +1170.stationary,a.静止的,平稳的 [ˈsteɪʃəneri] +1171.extract,vt.抽取,摘录,开方 [ɪkˈstrækt] +1172.unrecognized,a.未被认出的 +1173.thereafter,ad.此后,据此 [ˌðerˈæftə(r)] +1174.inverse,a.反向的,逆的,, [ˌɪnˈvɜrs] +1175.spell,v.拼写 [spɛl] +1176.limiting,n.(电路参数)限制处理 [ˈlɪmɪtɪŋ] +1177.restructure,vt.调整,重新组织 [riˈstrʌktʃɚ] +1178.delimit,vt.定界,定义 [dɪˈlɪmɪt] +1179.pay,v.付款,支付 [pe] +1180.separately,ad.分别地 [ˈsɛpərɪtlɪ] +1181.classify,vt.分类,分级 [ˈklæsəˌfaɪ] +1182.interfere,vi.干涉,干扰,冲突 [ˌɪntərˈfɪr] +1183.mind,n.愿望,想法,智力 [maɪnd] +1184.individually,ad.个别地,单独地 [ˌɪndɪˈvɪdʒuəli] +1185.vertical,a.垂直的,立(式)的 [ˈvɜrtɪkl] +1186.undesirable,a.不合乎需要的 [ˌʌndɪˈzaɪrəbəl] +1187.lot,n.一块(批,组,套) [lɑt] +1188.piece,n.一块,部分,段 [pis] +1189.unavailable,a.不能利用的 [ˌʌnəˈveləbəl] +1190.unlike,a.不象的,不同的 [ʌnˈlaɪk] +1191.sit,v.位于,安装 [sit] +1192.insufficient,a.不足的,不适当的 [ˌɪnsəˈfɪʃənt] +1193.map,n.&,vt.图;映射,变址 [mæp] +1194.figure,n.数字;图,图形,形状 [ˈfɪgjər] +1195.prepare,v.准备 [prɪˈper] +1196.consider,v.考虑,认为,设想 [kənˈsɪdər ] +1197.detect,vt.检测 [dɪˈtɛkt] +1198.convenience,n.方便,便利 [kənˈvinjəns] +1199.method,n.方法,方案 [ˈmɛθəd] +1200.mean,n.&,vt.平均;意味着 [min] +1201.salary,n.&,vt.薪水;发工资 [ˈsæləri, ˈsælri] +1202.pacific,a.平稳的,太平(洋)的 [pəˈsɪfɪk] +1203.strong,a.强的 [strɔŋ] +1204.emphasize,v.强调,着重,增强 [ˈɛmfəˌsaɪz] +1205.department,n.部门,门类,系 [dɪˈpɑrtmənt] +1206.forced,a.强制的,压力的 [fɔrst] +1207.ansi,n.美国国家标准协会 +1208.permanent,a.永久的 [ˈpɜrmənənt] +1209.remark,n.评注,备注 [rɪˈmɑrk] +1210.away,ad.离开,(去)掉 [əˈwe] +1211.concatenate,vt.连接,串联,并置 [kɑnˈkæt(ə)ˌneɪt] +1212.lightning,n.闪电 [ˈlaɪtnɪŋ] +1213.additionally,ad.另外,又 [ə'dɪʃənəlɪ] +1214.emulate,v.仿真,模仿;赶上或超过 [ˈɛmjəˌlet] +1215.tape,n.磁带,纸带 [tep] +1216.accidentally,ad.偶然地 [ˌæksɪ'dentəlɪ] +1217.concept,n.概念 [ˈkɑnsept] +1218.optimize,v.优选,优化 [ˈɑptɪmaɪz] +1219.counter,n.计数器,计算器 [ˈkaʊntɚ] +1220.expect,vt.期望,期待,盼望 [ɪkˈspɛkt] +1221.subsequently,ad.其后,其次,按着 [ˈsʌbsɪˌkwɛntlɪ] +1222.registration,n.登记,挂号,读数 [ˌrɛdʒɪˈstreʃən] +1223.city,n.城市,市区 [ˈsɪti] +1224.designate,vt.任命,标志 [ˈdɛzɪɡˌnet] +1225.visible,a.可见的,明显的 [ˈvɪzəbəl] +1226.consult,v.咨询,顾问 [kənˈsʌlt] +1227.completely,ad.十分,完全,彻底 [kəmˈpliːtli] +1228.virtually,ad.实际上 [ˈvɜrtʃuəli] +1229.substantially,ad.实质上,本质上 [səbˈstænʃəlɪ] +1230.specialize,v.(使)专门化 [ˈspɛʃəˌlaɪz] +1231.fail,n.故障,失效 [fel] +1232.primarily,ad.首先,起初,原来 [praɪˈmɛrəli, -ˈmɛr-] +1233.sequentially,ad.顺序地 [sɪ'kwenʃəlɪ] +1234.client,n.顾客,买主 [ˈklaɪənt] +1235.runtime,n.运行时间 [rʌn'taɪm] +1236.fix,v.固定,定影 [fɪks] +1237.author,n.程序设计者,作者 [ˈɔθɚ] +1238.programmer,n.程序设计人员 [ˈproʊgræmə(r)] +1239.commercial,a.商业的,经济的 [kəˈmɜrʃl] +1240.particularly,ad.特别,格外,尤其 [pərˈtɪkjələrli] +1241.low,a.低的,浅的,弱的 [loʊ] +1242.sheet,n.(图)表,纸,片 [ʃit] +1243.employee,n.雇员 [ɪmˈplɔɪi] +1244.legal,a.合法的,法律的 [ˈliɡəl] +1245.qualified,a.合格的,受限制的 [ˈkwɑlɪfaɪd] +1246.context,n.上下文,来龙去脉 [ˈkɑntekst] +1247.involved,a.有关的 [ɪnˈvɑlvd] +1248.conditional,a.有条件的 [kənˈdɪʃənəl] +1249.halfway,a.中途的,不彻底的 [ˌhæfˈweɪ] +1250.oriented,a.有向的,定向的 ['ɔrɪrntɪd] +1251.pair,n.(一)对,一双 [per] +1252.week,n.(一)星期,(一)周 [wik] +1253.suppressed,vt.抑制,取消,, +1254.subroutine,n.子程序 [ˈsʌbruˌtin] +1255.bracketed,a.加括号的 ['brækətɪd] +1256.manually,ad.用手,手动地 [ˈmænjʊəlɪ] +1257.preset,vt.预置 [priˈsɛt] +1258.autoindex,n.自动变址(数) [ɔ'tɔɪndeks] +1259.restrict,vt.约束,限制 [rɪˈstrɪkt] +1260.performance,n.性能,实绩 [pərˈfɔrməns] +1261.showing,n.显示,表现 [ˈʃoʊɪŋ] +1262.ever,ad.在任何时候,曾经 [ˈɛvɚ] +1263.distribution,n.分布,分配 [ˌdɪstrəˈbjuʃən] +1264.denote,vt.指示,意味着,代表 [dɪˈnoʊt] +1265.cash,n.现金 [kæʃ] +1266.repeatedly,ad.重复地 [rɪ'pitɪdlɪ] +1267.replicate,vt.重复,复制 [ˈrɛplɪˌket] +1268.mega,n.兆,百万 ['meɡə] +1269.conform,vi.遵从,符合 [kənˈfɔrm] +1270.rebuild,v.重建,修复,改造 [riˈbɪld] +1271.certainty,n.必然,确实 [ˈsɜrtnti] +1272.controller,n.控制器 [kənˈtroʊlə(r)] +1273.pseudo,a.假的,伪的,冒充的 ['sudoʊ] +1274.manage,v.管理,经营,使用 [ˈmænɪdʒ] +1275.administrator,n.管理人,行政人员 [ædˈmɪnɪˌstretɚ] +1276.ensemble,n.总体,集合体 [ɑnˈsɑmbl] +1277.bus,n.总线,信息通路 [bʌs] +1278.allowable,a.容许的,承认的 [əˈlaʊəbl] +1279.limitations,n.限制,边界 [lɪmɪ'teɪʃnz] +1280.restriction,n.限制,约束,节流 [rɪˈstrɪkʃən] +1281.height,n.高度 [haɪt] +1282.remainder,n.余数,余项,剩余 [rɪˈmendɚ] +1283.traverse,v.横渡,横过,横断 [trəˈvɜrs] +1284.organization,n.结构,机构,公司 [ˌɔrgənəˈzeɪʃn] +1285.resulting,a.结果的,合成的 [rɪ'zʌltɪŋ] +1286.solution,n.解,解法,解答 [səˈluʃən] +1287.external,a.外部的 [ɪkˈstɜrnl] +1288.adequate,a.足够的,充分的 [ˈædɪkwɪt] +1289.interpretability,n.配合动作性 [ɪntɜprɪ'təbɪlɪtɪ] +1290.vary,v.变化,变换 [ˈveri] +1291.gap,n.间隙,间隔,缝隙 [ɡæp] +1292.indexing,n.变址,标引,加下标 ['ɪndeksɪŋ] +1293.board,n.板,插件板 [bɔrd] +1294.package,n.插件,(软件)包 [ˈpækɪdʒ] +1295.insertion,n.插入,嵌入,插页 [ɪnˈsɜrʃn] +1296.intervene,vi插入,干涉 [ˌɪntərˈvin] +1297.conflict,v.冲突,碰头 [ˈkɑnflɪkt] +1298.really,a.真正地,确实地 [ˈriəˌli, ˈrili] +1299.overflow,v.溢出,上溢 [ˌoʊvərˈfloʊ] +1300.charge,n.电荷,充电,负荷 [tʃɑrdʒ] +1301.phone,n.电话,电话机,音素 [foʊn] +1302.virtual,a.虚(拟)的,虚拟 [ˈvɜrtʃuəl] +1303.compose,v.组成,构成,构图 [kəmˈpoʊz] +1304.snapshot,n.抽点打印 [ˈsnæpʃɑt] +1305.sensitivity,n.灵敏度 [ˌsɛnsɪˈtɪvɪti] +1306.familiar,a.熟悉的,惯用的 [fəˈmɪljɚ] +1307.mach,n.马赫(速度单位) +1308.incorrect,a.错误的,不正确的 [ˌɪnkəˈrɛkt] +1309.cut,v.割,切 [kʌt] +1310.lowest,a.最低的,最小的 ['loʊɪst] +1311.simple,a.简单的 [ˈsɪmpəl] +1312.subsequent,a.后来的,其次的 [ˈsʌbsɪˌkwɛnt, -kwənt] +1313.capitalized,a.大写的 ['kæpɪtəlɑɪzd] +1314.compact,a.紧致的,压缩的 [ˈkɑmˈpækt] +1315.plain,n.明码 [plen] +1316.noted,a.著名的 [ˈnoʊtɪd] +1317.desirable,a.所希望的,称心的 [dɪˈzaɪrəbəl] +1318.substitution,n.代替,替换,置换 [ˌsʌbstɪˈtuʃən, -ˈtju-] +1319.consume,v.消耗,使用 [kənˈsum] +1320.forget,v.忘记 [fərˈget] +1321.keyed,a.键控的 [kid] +1322.overstrike,n.过打印 [oʊvə'straɪk] +1323.tornado,n.旋风,龙卷风 [tɔrˈneɪdoʊ] +1324.quotation,n.引证,引用(句) [kwoʊˈteɪʃn] +1325.ones,n.二进制反码 ['wʌnz] +1326.parse,vt.(语法)分析 [pɑrs] +1327.experience,vt.&,n.试验 [ɪkˈspɪriəns] +1328.manufacture,vt.&,n.制造(业),工业 [ˌmænjəˈfæktʃɚ] +1329.hundred,n.&,a.(一)百,百个 [ˈhʌndrɪd] +1330.thousand,n.&,a.(一)千,无数的 [ˈθaʊzənd] +1331.twentieth,n.&,a.第二十(的) [ˈtwɛntiɪθ, ˈtwʌn-] +1332.understanding,n.&,a.了解的,聪明的 [ˌʌndərˈstændɪŋ] +1333.hand,n.&,a.手,手工(动)的 [hænd] +1334.restricting,n.&,a.限制(的),, [rɪs'trɪktɪŋ] +1335.fancy,n.&,a.想象(的),精制的 [ˈfænsi] +1336.wide,a.&,ad.宽的,广阔的 [waɪd] +1337.fine,a.&,ad.微小的,细的 [faɪn] +1338.worry,v.&,n.(使)烦恼 [ˈwɜri] +1339.somewhat,pron.&,ad.稍微,有点 [ˈsʌmwʌt] +1340.quiet,a.&,n.静态,静止的 [ˈkwaɪɪt] +1341.purge,v.&,n.清除 [pɜrdʒ] +1342.mod,a.&,n.时髦的 [mɑd] +1343.numeral,n.&,n.数字的,数码 [ˈnumərəl] +1344.whichever,a.&,pron.无论哪个 [hwɪtʃˈɛvɚ, wɪtʃ-] +1345.purchase,n.&,v.购买 [ˈpɜrtʃəs] +1346.care,n.&,v.关心,注意 [ker] +1347.watch,n.&,v.监视,观测 [wɑtʃ] +1348.endeavor,n.&,v.尽力,力图 [ɪn'devə] +1349.mismatch,n.&,vt.失配,不匹配 [mɪsˈmætʃ] +1350.printout,n.印出 [ˈprɪntˌaʊt] +1351.ellipsis,n.省略符号,省略(法) [ɪˈlɪpsɪs] +1352.ship,n.舰,船 [ʃɪp] +1353.british,a.&,n.英国的;英国人 [ˈbrɪtɪʃ] +1354.parallel,a.并行 [ˈpærəˌlɛl] +1355.custom,a.&,n.常规的,惯例;用户 [ˈkʌstəm] +1356.congratulation,n.祝贺 [kənˌɡrætʃəˈleʃən, -ˌɡrædʒ-, kəŋ-] +1357.protection,n.保护 [prəˈtɛkʃən] +1358.glass,n.玻璃 [glæs] +1359.pattern,n.模式 [ˈpætərn] +1360.insure,v.保证,保障 [ɪnˈʃʊr] +1361.stopping,n.停止,制动(状态) ['stɒpɪŋ] +1362.factory,n.工厂,制造厂 [ˈfæktəri] +1363.implement,n.&,vt.工具;执行,实现 [ˈɪmpləmənt] +1364.effort,n.工作,研究计划 [ˈefərt] +1365.worker,n.工作人员 [ˈwɜrkə(r)] +1366.ampersand,n.&号(and) [ˈæmpərsænd] +1367.deal,v.处理,分配,交易 [dil] +1368.power,n.功率,电源,幂 [ˈpaʊɚ] +1369.difficulty,n.困难,难点 [ˈdɪfɪˌkʌlti, -kəl-] +1370.lose,n.失去,损失 [luz] +1371.magic,n.魔术,幻术 [ˈmædʒɪk] +1372.proprietary,a.专有的 [prəˈpraɪəteri] +1373.aware,a.知道的,察觉到的 [əˈwer] +1374.numerous,a.为数众多的,无数的 [ˈnumərəs] +1375.vowel,n.元音,母音 [ˈvaʊəl] +1376.closely,a.精密地,仔细地 [ˈkloslɪ] +1377.accuracy,n.精确度,准确度 [ˈækjərəsi] +1378.traditional,a.传统的,惯例的 [trəˈdɪʃənəl] +1379.synchronization,n.同步 [ˌsɪŋkrənaɪ'zeɪʃn] +1380.fragment,n.片段,段,分段 [ˈfræɡmənt] +1381.primary,a.原始的,主要的 [ˈpraɪmeri] +1382.safely,ad.安全地,确实地 [ˈseflɪ] +1383.habit,n.习惯 [ˈhæbɪt] +1384.comprise,vt.包括,由…组成 [kəmˈpraɪz] +1385.landler,n.兰德勒舞曲 ['lændlər] +1386.absence,n.缺少,没有 [ˈæbsəns] +1387.revolutionize,vt.变革,彻底改革 [revəˈluːʃəˌnaɪz] +1388.constantly,ad.不变地,经常地 [ˈkɑnstəntli] +1389.seldom,ad.不常,很少,难得 [ˈsɛldəm] +1390.unfortunately,ad.不幸,遗憾地 [ʌnˈfɔrtʃənətli] +1391.expunge,vt.擦除,删掉 [ɪkˈspʌndʒ] +1392.security,n.安全性,保密性 [səˈkjʊrəti] +1393.touch,v.&,n.按,揿,触;触力 [tʌtʃ] +1394.contrast,n.反差,对比,对比度 [ˈkɑntræst] +1395.invent,vt.创造,想象 [ɪnˈvɛnt] +1396.reflect,v.反射 [rɪˈflɛkt] +1397.undone,a.未完成的 [ʌnˈdʌn] +1398.unshift,v.未移动,不移档 [ʌn'ʃɪft] +1399.complex,a.&,n.复杂的;复数 [kəmˈpleks] +1400.complexity,n.复杂性,复杂度 [kəmˈplɛksɪti] +1401.creation,n.创造,创作 [kriˈeʃən] +1402.unknown,a.未知的,无名的 [ˌʌnˈnoʊn] +1403.greatly,ad.大大地,非常 [ˈɡreɪtli] +1404.cost,n.值,价值,成本 [kɔst] +1405.degrade,v.降低,减少,递降 [dɪˈɡred] +1406.suggestion,n.暗示,提醒 [səɡˈdʒɛstʃən, səˈdʒɛs-] +1407.real,n.实数,实的,实型 [ˈriəl, ril] +1408.experimentation,n.实验(工作,法) [ɪkˌspɛrəmɛnˈteʃən] +1409.experiment,n.实验,试验(研究) [ɪkˈspɛrəmənt] +1410.substantial,a.实质的,真正的 [səbˈstænʃəl] +1411.solely,ad.独自,单独,只 [ˈsoʊlli] +1412.announce,vt.发表,宣布 [əˈnaʊns] +1413.squeeze,v.挤压 [skwiz] +1414.distribute,vt.分布,配线,配给 [dɪˈstrɪbjut] +1415.negate,vt.否定,求反,“非”,, [nɪˈɡet] +1416.capture,vt.俘获,捕捉 [ˈkæptʃɚ] +1417.father,n.父,上层(树节点的) [ˈfɑðɚ] +1418.reinstate,vt.复原,恢复 [ˌriɪnˈstet] +1419.tutorial,a.指导的 [tuˈtɔriəl] +1420.nicety,n.细节,精细 [ˈnaɪsɪti] +1421.roll,n.&,v.案卷;卷动,滚动 [roʊl] +1422.exponent,n.指数,阶,幂 [ɪkˈspoʊnənt] +1423.exponential,a.指数的,幂的,阶的 [ˌɛkspəˈnɛnʃəl] +1424.prefer,vt.更喜欢,宁愿 [prɪˈfɚ] +1425.complicated,v.使复杂化,使混乱 [ˈkɑmplɪkeɪtɪd] +1426.reactivate,v.使恢复活动 [riˈæktəˌvet] +1427.spread,v.展开,传播 [sprɛd] +1428.synchronize,v.使同步 [ˈsɪŋkrəˌnaɪz, ˈsɪn-] +1429.formation,n.构造,结构,形成 [fɔrˈmeɪʃn] +1430.widely,ad.广泛,很远 [ ˈwaɪdlɪ] +1431.comma,n.逗号“,,”,逗点 [ˈkɑmə] +1432.very,ad.很,非常,最 [ˈvɛri] +1433.unnecessary,a.不必要的,多余的 [ʌnˈnesəseri] +1434.unchanged,a.不变的 [ʌnˈtʃeɪndʒd] +1435.cross,n.交叉,十字准线 [krɔs] +1436.yet,ad.还,仍然,至今 [jɛt] +1437.slowly,ad.缓慢地 [ˈsloʊli] +1438.inexperienced,a.不熟练的,外行的 [ˌɪnɪkˈspɪriənst] +1439.noninteractive,a.不相关的,非交互的 ['nɒnɪntə'æktɪv] +1440.unwanted,a.不需要的,多余的 [ˌʌnˈwɑntɪd] +1441.unused,a.不用的,空着的 [ˌʌnˈjuzd] +1442.unmarked,a.没有标记的 [ʌnˈmɑrkt] +1443.nothing,n.没有任何东西 [ˈnʌθɪŋ] +1444.chart,n.图(表) [tʃɑrt] +1445.dearly,ad.极,非常,昂贵地 [ˈdɪrli] +1446.extremely,ad.极端地,非常 [ɪk'strimlɪ] +1447.hardly,ad.几乎不,未必 [ˈhɑrdli] +1448.placement,n.布局 [ˈpleɪsmənt] +1449.think,v.考虑,以为,判断 [θɪŋk] +1450.technical,a.技术的,专业的 [ˈtɛknɪkəl] +1451.idea,n.思想,观念 [aɪˈdiə] +1452.stamp,n.图章 [stæmp] +1453.indirectly,ad.间接地 [ˌɪndəˈrɛktlɪ] +1454.equation,n.方程,方程式 [ɪˈkweʒən, -ʃən] +1455.smooth,v.&,a.平滑;平滑的 [smuð] +1456.attached,a.附加的 [əˈtætʃt] +1457.average,n.平均,平均数 [ˈævərɪdʒ, ˈævrɪdʒ] +1458.quietly,ad.静静地 [ˈkwaɪətlɪ] +1459.discard,v.删除,废除,放弃 [dɪsˈkɑrd] +1460.never,ad.决不,从来不 [ˈnɛvɚ] +1461.initiate,vt.开创,起始 [ɪˈnɪʃieɪt] +1462.powerful,a.强大的,大功率的 [ˈpaʊərfl] +1463.purpose,n.&,vt.目的,用途;打算 [ˈpɜrpəs] +1464.regard,vt.考虑,注意,关系 [rɪˈgɑrd] +1465.daily,a.每日的,日常的 [ˈdeli] +1466.possibly,ad.可能地,合理地 [ˈpɑsəbli] +1467.potentially,ad.可能地,大概地 [pəˈtɛnʃəlɪ] +1468.moreover,ad.况且,并且,此外 [mɔrˈoʊvər] +1469.american,a.美国的 [əˈmerɪkən] +1470.guard,v.&,n.防护;防护装置 [gɑrd] +1471.world,n.世界,全球 [wɜrld] +1472.independent,a.独立的 [ˌɪndɪˈpɛndənt] +1473.independently,a.独立地 [ˌɪndɪˈpɛndəntlɪ] +1474.continuously,ad.连续不断地 [kənˈtɪnjʊəslɪ] +1475.shield,v.屏蔽,罩,防护 [ʃild] +1476.glance,n.闪烁 [glæns] +1477.happening,n.事件,偶然发生的事 [ ˈhæpənɪŋ] +1478.transaction,n.事项,事务,学报 [trænˈsækʃən, -ˈzæk-] +1479.emulation,n.仿真,仿效 [ˌɛmjəˈleʃən] +1480.strike,v.敲,击 [straɪk] +1481.dump,v.(内存信息)转储 [dʌmp] +1482.occasionally,ad.偶尔(地),不时 [əˈkeɪʒnəli] +1483.tension,n.张力 [ˈtɛnʃən] +1484.probable,a.概率的,可能的 [ˈprɑbəbl] +1485.talent,n.才能,技能,人才 [ˈtælənt] +1486.financial,a.财务的,金融的 [faɪˈnænʃ(ə)l] +1487.meter,n.仪表,米 [ˈmitɚ] +1488.logged,a.记录的,浸透的 [lɔgd] +1489.ware,n.仪器,商品 [wer] +1490.disregard,vt.轻视,把…忽略不计 [ˌdɪsrɪˈgɑrd] +1491.waiting,a.等待的 [ˈwetɪŋ] +1492.preceding,a.先的,以前的 [prɪˈsidɪŋ] +1493.comparison,n.比较,对照 [kəmˈpærɪsən] +1494.advanced,a.先进的,预先的 [ədˈvænst] +1495.rate,n.比率,速率,费率 [ret] +1496.fly,v.飞,跳过 [flai] +1497.programmable,a.可编程的 [ˈproʊgræməbl] +1498.definable,a.可定义的,可确定的 +1499.readable,a.可读的 [ˈridəbəl] +1500.recoverable,a.可恢复的,可回收的 [rɪˈkʌvərəbl] +1501.possibility,n.可能性 [ˌpɑsəˈbɪləti] +1502.finisher,n.成品机 +1503.applicable,a.可适用的,合适的 [ˈæplɪkəbəl, əˈplɪkə-] +1504.printable,a.可印刷的 [ˈprɪntəbəl] +1505.executable,a.可执行的 [ɪgˈzekjətəbl] +1506.essentially,ad.实质上,本来 [ɪˈsenʃəli] +1507.confuse,vt.使混乱,干扰 [kənˈfjuz] +1508.familiarize,vt.使熟悉,使通俗化 [fəˈmɪljəˌraɪz] +1509.employe,vt.使用,花费 [ɪm'plɔɪi] +1510.suitable,a.适合的,相适宜的 [ˈsutəbəl] +1511.generation,n.(世)代,(发展)阶段 [ˌdʒɛnəˈreʃən] +1512.quality,n.质量,性质,属性 [ˈkwɑləti] +1513.defective,a.故障的,有毛病的 [dɪˈfɛktɪv] +1514.interpretable,a.彼此协作的 [ɪn'tɜprɪtəbl] +1515.interest,n.兴趣,注意,影响 [ˈɪntrɪst, -tərɪst, -ˌtrɛst] +1516.fourscore,n.八十 ['foʊr'skoʊr] +1517.teach,v.教,讲授 [titʃ] +1518.procedural,a.程序上的 [prəˈsidʒərəl] +1519.phrase,n.短语,成语 [frez] +1520.specifically,ad.特别地,逐一地 [spəˈsɪfɪkli] +1521.penalty,n.惩罚,罚款,负担 [ˈpɛnəlti] +1522.violate,vt.违犯,妨碍,破坏 [ˈvaɪəˌlet] +1523.indefinitely,ad.无限地,无穷地 [ɪnˈdefɪnətli] +1524.major,a.较大的,主要的 [ˈmedʒɚ] +1525.higher,a.较高的 +1526.wise,a.聪明的 [waɪz] +1527.becoming,a.合适的,相称的 [bɪˈkʌmɪŋ] +1528.equally,ad.相等地,相同地 [ˈiːkwəli] +1529.enjoy,vt.享受,欣赏,喜爱 [ɛnˈdʒɔɪ] +1530.forth,ad.向前 [fɔrθ] +1531.disappear,vi.消失 [ˌdɪsəˈpɪr] +1532.crop,v.切,剪切 [krɑp] +1533.diagonally,ad.斜(对) [daɪ'æɡənəlɪ] +1534.labeled,a.有标号的 ['leɪbld] +1535.decision,n.判定,决定,决策 [dɪˈsɪʒən] +1536.effective,a.有效的 [ɪˈfɛktɪv] +1537.significant,a.有效的,有意义的 [sɪɡˈnɪfɪkənt] +1538.avail,v.&,n.有益于;利益 [əˈvel] +1539.hang,v.中止,暂停,挂起 [hæŋ] +1540.craze,n.&,v.裂纹开裂 [krez] +1541.consequently,ad.因此,从而 [ˈkɑnsəkwentli] +1542.introduce,vt.引进,引导 [ˈdus] +1543.team,n.队,小组 [tim] +1544.visual,a.视觉的,直观的 [ˈvɪʒuəl] +1545.acknowledgment,n.,接收(收妥),承认 [ækˈnɑlɪdʒmənt] +1546.efficiently,ad.有效地 [ɪˈfɪʃəntlɪ] +1547.predict,vt.预测,预言 [prɪˈdɪkt] +1548.anticipate,vt.预先考虑,抢…先 [ænˈtɪsəˌpet] +1549.bypass,n.旁路 [ˈbaɪˌpæs] +1550.nature,n.自然,天然 [ˈnetʃɚ] +1551.natural,a.自然的 [ˈnætʃrəl] +1552.grant,vt.允许,授权 [grænt] +1553.logarithm,n.对数 [ˈlɔgərɪðəm] +1554.reappears,vi.再现,重现 [riə'pɪrz] +1555.reload,vt.再装入 [ˌriˈloʊd] +1556.occupy,vt.占有,充满 [ˈɑkjupaɪ] +1557.photograph,n.照片;v.照相 [ˈfoʊtəgræf] +1558.terminating,n.终止,终结,收信 ['tɜmɪneɪtɪŋ] +1559.resolve,v.分辨,解像 [rɪˈzɑlv] +1560.unsafe,v.恢复 [ʌnˈsef] +1561.separator,n.分隔符 [ˈsɛpəˌretɚ] +1562.hierarchical,a.分级的,分层的 [ˌhaɪəˈrɑrkɪkl] +1563.assortment,n.种类,花色品种 [əˈsɔrtmənt] +1564.growing,n.分类,分组,成群 [ˈgroʊɪŋ] +1565.discussion,n.讨论,商议,论述 [dɪˈskʌʃən] +1566.alphabet,n.字母,字母表 [ˈælfəˌbɛt, -bɪt] +1567.scattered,a.分散的 [ˈskætərd] +1568.eventually,ad.终于,最后 [ɪˈvɛntʃuəli] +1569.finally,ad.终于,最后 [ˈfaɪnəli] +1570.subgroup,n.分组,子群 [ˈsʌbˌɡrup] +1571.superimpose,vt.重叠,叠加 [ˌsupərɪmˈpoʊz] +1572.reorganization,vt.重排,改组 [riˌɔrɡənɪˈzeʃən] +1573.rewrite,vt.重写,再生 [riˈraɪt] +1574.university,n.(综合性)大学 [ˌjunɪˈvɜrsəti] +1575.deter,vt.阻止,拦住,妨碍,, [dɪˈtə] +1576.pool,n.&,v.池,坑;共享 [pul] +1577.moment,n.矩,力矩,磁矩 [ˈmoʊmənt] +1578.shut,v.关闭 [ʃʌt] +1579.closed,a.关闭的,闭迹 [kloʊzd] +1580.respond,v.回答,响应 [rɪˈspɑnd] +1581.repeating,n.重复,循环 [rɪ'pitɪŋ] +1582.repetitive,a.重复的 [rɪˈpɛtɪtɪv] +1583.reenter,v.重新进入 [ri'entə] +1584.rearrange,v.重新整理,重新排序 [ˌriəˈrendʒ] +1585.rectangular,a.矩形的,成直角的 [rɛkˈtæŋɡjəlɚ] +1586.tag,n.特征,标记,标识符 [tæɡ] +1587.suppose,v.假定,推测 [səˈpoʊz] +1588.supposed,a.假定的,推测的 [səˈpoʊzd] +1589.manipulating,v.操纵,操作 +1590.operator,n.操作员,运算符 [ˈɑpəreɪtə(r)] +1591.masking,n.掩蔽,屏蔽 ['mɑskɪŋ] +1592.price,n.价格 [praɪs] +1593.demonstrate,v.论证,证明,证实 [ˈdɛmənˌstret] +1594.importance,n.价值,重要 [ɪmˈpɔrtns] +1595.pipe,n.管,导管 [paɪp] +1596.overall,a.总共的,全部的 [ˌoʊvərˈɔl] +1597.turnkey,n.总控钥匙 [ˈtɜrnki] +1598.restricted,a.受限制的,受约束的 [rɪˈstrɪktɪd] +1599.suspension,n.暂停,中止,挂起 [səˈspɛnʃən] +1600.seamless,a.无缝的 [ˈsimlɪs] +1601.clipper,n.限幅器,钳位器 [ˈklɪpɚ] +1602.unsigned,a.无符号的 [ʌn'saɪnd] +1603.unformatted,a.无格式的 [ʌn'fɔˌmætɪd] +1604.infinite,a.无限的,无穷的 +1605.useless,a.无用的 [ˈjuslɪs] +1606.limiter,n.限制(幅)器 ['lɪmətə] +1607.mountain,n.高山,山脉 [ˈmaʊntn] +1608.redundant,a.冗余的 [rɪˈdʌndənt] +1609.dependent,a.相关的 [dɪˈpɛndənt] +1610.contiguous,a.相连的,邻接的 [kənˈtɪɡjuəs] +1611.consistent,a.相容的,一致的 [kənˈsɪstənt] +1612.multiprocessing,n.多重处理,多道处理 ['mʌltɪˌproʊsesɪŋ] +1613.architecture,n.结构,构造 [ˈɑrkɪtektʃə(r)] +1614.structural,a.结构的,结构上的 [ˈstrʌktʃərəl] +1615.outcome,n.结果,成果,输出 [ˈaʊtˌkʌm] +1616.association,n.结合,协会,联想 [əˌsoʊʃiˈeɪʃn] +1617.opinion,n.意见,见解,判断 [əˈpɪnjən] +1618.interpret,v.解释 [ɪnˈtɜrprɪt] +1619.explanatory,a.解释(性)的 [ɪkˈsplænətɔri] +1620.assemble,v.汇编,装配 [əˈsɛmbəl] +1621.assembler,n.汇编程序 [əˈsɛmblɚ] +1622.cad,计算机辅助设计 [kæd] +1623.arithmetic,n.算术,运算 [əˈrɪθmɪtɪk] +1624.varying,a.变化的,可变的 ['veərɪŋ] +1625.representative,a.典型的,表示的 [ˌrɛprɪˈzɛntətɪv] +1626.typical,a.典型的,标准的 [ˈtɪpɪkəl] +1627.sufficient,a.充足的,足够的 [səˈfɪʃənt] +1628.blast,v.&,n.清除;爆炸 [blæst] +1629.clean,a.清洁的,干净的 [klin] +1630.caret,n.插入符号 ['kærət] +1631.socket,n.插座,插孔,插口 [ˈsɑkɪt] +1632.stated,a.规定的 ['steɪtɪd] +1633.protocol,n.规约,协议,规程 [ˈproʊtəkɔl] +1634.presence,n.存在,有 [ˈprɛzəns] +1635.telephone,n.电话 [ˈtelɪfoʊn] +1636.social,a.社会的 [ˈsoʊʃl] +1637.equipment,n.设备,装备,仪器 [ɪˈkwɪpmənt] +1638.lending,n.&,a.借给,出租;借出的 [ˈlɛndɪŋ] +1639.book,n.书,手册,源程序块 [bʊk] +1640.circumstances,n.情况,环境,细节 ['sɜkəmstənsɪz] +1641.situation,n.情况,状况,势态 [ˌsɪtʃuˈeʃən] +1642.desk,n.书桌,控制台,面板 [dɛsk] +1643.please,v.请 [pliz] +1644.mixture,n.混合物 [ˈmɪkstʃɚ] +1645.representation,n.表示 [ˌrɛprɪzɛnˈteʃən] +1646.esoteric,a.深奥的,奥秘的 [ˌɛsəˈtɛrɪk] +1647.depth,n.深度,浓度(颜色的) [dɛpθ] +1648.final,a.最终的 [ˈfaɪnəl] +1649.physically,a.物理上,实际上 [ˈfɪzɪkəlɪ] +1650.aid,n.帮助,辅助程序 [ed] +1651.successive,a.逐次的,相继的 [səkˈsɛsɪv] +1652.succession,n.逐次性,连续性,, [səkˈsɛʃən] +1653.unpack,v.拆开,卸,分开 [ʌnˈpæk] +1654.chunk,n.厚块,大部分 [tʃʌŋk] +1655.alignment,n.序列,成直线 [əˈlaɪnmənt] +1656.typewriter,n.打字机 [ˈtaɪpˌraɪtɚ] +1657.big,a.大的,重要的 [bɪɡ] +1658.tone,n.音调,音色,色调 [toʊn] +1659.sensitive,a.敏感的,灵敏的 [ˈsɛnsɪtɪv] +1660.reduction,n.减化,还原,减少 [rɪˈdʌkʃən] +1661.indentation,n.缩进,缩排 [ˌɪndɛnˈteʃən] +1662.terminology,n.术语 [ˌtɜrməˈnɑlədʒi] +1663.ascending,a.增长的,向上的 [əˈsɛndɪŋ] +1664.augment,v.增加,添加,扩充 [ɔɡˈmɛnt] +1665.increment,n.增量,加1,递增 [ˈɪnkrəmənt, ˈɪŋ-] +1666.gain,n.增益(系数) [ɡen] +1667.stream,n.流 [strim] +1668.obsolete,a.作废的,过时的 [ˌɑbsəˈlit] +1669.accommodate,v.调节,适应,,老男孩 [əˈkɑmədeɪt] +1670.motif,n.主题,要点,特色 [moʊˈtif] +1671.subject,n.主题,源 [ˈsʌbdʒekt] +1672.job,n.作业 [dʒɑb] +1673.differentiate,v.区别,分辨 [ˌdɪfəˈrɛnʃiˌet] +1674.distinction,n.区别,相异,特性 [dɪˈstɪŋkʃən] +1675.distinguish,v.区别,辨识 [dɪˈstɪŋɡwɪʃ] +1676.locking,n.锁定,加锁 ['lɒkɪŋ] +1677.progress,n.进度,进展 [ˈprɑgres] +1678.fundamental,a.基本的,根本的 [ˌfʌndəˈmɛntl] +1679.basis,n.基础,座 [ˈbesɪs] +1680.underlying,a.基础的,根本的 [ˌʌndərˈlaɪɪŋ] +1681.sound,n.声音,音响 [saʊnd] +1682.vital,a.生动的,不可缺少的 ['vaɪtl] +1683.national,a.国家的 [ˈnæʃənəl, ˈnæʃnəl] +1684.sale,n.销售,销路 [sel] +1685.agree,v.符合,相同 [əˈɡri] +1686.iterative,a.迭代的 ['ɪtəˌreɪtɪv] +1687.inclusive,a.包括的,内含的 [ɪnˈklusɪv] +1688.charm,n.吸引力 [tʃɑrm] +1689.hit,v.命中,瞬时干扰 [hɪt] +1690.course,n.过程,航向,课程 [kɔrs] +1691.exceeded,a.过度的,非常的 [ɪk'sidɪd] +1692.numerical,a.数量的,数字的 [nuˈmerɪkl] +1693.digital,a.数字的 [ˈdɪdʒɪtl] +1694.combo,n.二进位组合码 [ˈkɑmboʊ] +1695.cord,n.绳子,电线 [kɔrd] diff --git a/_posts/tools/2021-04-01-i3wm_tips.md b/_posts/tools/2021-04-01-i3wm_tips.md new file mode 100644 index 00000000..64535018 --- /dev/null +++ b/_posts/tools/2021-04-01-i3wm_tips.md @@ -0,0 +1,19 @@ +--- +title: i3wm tips +category: tools +tags: i3 +comments: true +--- + +## 获取当前窗口的class属性 + +```shell +$ xprop +``` + +## 重新加载配置文件 + +```shell +$ i3 reload +``` + diff --git a/_posts/translate/2019-09-11-google_code_review.md b/_posts/translate/2019-09-11-google_code_review.md new file mode 100644 index 00000000..8a1317d3 --- /dev/null +++ b/_posts/translate/2019-09-11-google_code_review.md @@ -0,0 +1,101 @@ +--- +title: 谷歌工程实践-CodeReview +category: translate +tags: codereview +--- + +## 代码审核的标准 + +代码审核是为了保证代码的质量,保持良好的结构和一致的风格,不因为时间的推移而变得难以维护. + +* 摒弃不需要的功能,即使该功能设计良好 +* 没有最好的代码,只有不断改进的代码,所以不应该追求完美,而应该追求持续的改进,权衡是否接受CL +* Review应该保持开放的态度进行回复,可以轻松的指出有些东西可以更好或者一些补充的回复 +* 代码的指导(包括代码质量,代码的规范,关于软件的设计思想) +* 不断改善代码库 + +### 原则 + +* 事实大于个人偏好 +* 代码风格请遵循作者的指导 +* 软件设计的各个方面几乎从来不是纯粹的风格问题,也不只是个人偏好。它们是建立在基本原则的基础上的,应该在这些原则的基础上加以衡量,而不仅仅是个人意见。有时有一些有效的选择。如果作者能够证明(通过数据或基于可靠的工程原理)几种方法是同样有效的,那么审稿人应该接受作者的偏好。否则,选择取决于软件设计的标准原则. +* 如果没有其他规则适用,那么审查员可能会要求作者与当前代码库中的内容保持一致,只要这不会恶化系统的整体代码健康状况. + +### 解决分歧 + +双方基于现有的系统文档和第三方文档如:[CL作者代码评审指南](https://google.github.io/eng-practices/review/developer/)和[代码评审指南](https://google.github.io/eng-practices/review/reviewer/).如果还不能解决就需要面对面的讨论交流,团队会议... + + + +## Code Review评审的是什么内容 + +* 代码设计得很好. +* 该功能对代码的用户很好 +* 任何UI更改都是合理的,看起来也不错. +* 任何并行编程都是安全的. +* 代码并不比它需要的复杂. +* 开发人员没有实现他们将来可能需要但不知道现在需要的东西. +* 代码有适当的单元测试. +* 测试是精心设计的. +* 开发人员对所有东西都使用了清晰的名称. +* 注释清晰有用,主要解释为什么而不是什么. +* 代码被适当地文档化(通常在g3doc中). +* 代码符合我们的样式指南. + +## 检查CL + +### 第一步:更广的视角看待变化 + +检查变更是否必要,如果变更不必要要马上回复,并解释为什么不需要变化,并且提出自己针对该变化的建议(保持态度亲和). + +### 第二步:检查CL变化的主要逻辑 + +定位CL描述的主要的变化逻辑,如果CL涉及的逻辑比较多,需要询问开发人员主要逻辑,或者请求将本次提交进行[拆分](https://google.github.io/eng-practices/review/developer/small-cls.html). + +如果发现主要设计或主要逻辑的错误,需要尽快通知开发者,对于未review的部分可以略过,因为如果是设计出现错误或者主要逻辑错误,那很可能意味着其它部分的修改也需要相应的调整,所以对这部分代码的review很可能是无意义的. + +### 第三步:以适当的顺序review剩下的代码 + +## 加速review + +review不及时带来的问题: + +* 整个团队的速度降低 +* 开发人员对code review处理进度的抱怨 +* 代码整体的质量降低(堆积的大量的review处理的不够慎重) + +### Code Review 速度 + +* 如果不是在紧急的任务中需要对新的Review进行简单的处理 +* 最长不超过一个工作日 + +当然在保证自己的工作不被搅乱的情况下有序的处理Review,选择合理的时机:编码工作告一段落、饭后、会议结束后... + +如果当前不能review可以告知开发者什么时间可以开始review,避免心理等待时间过长.如果最近确实没有时间可以建议其他人进行review. + +**注意**:不要为了加速Review而降低[review的标准](https://google.github.io/eng-practices/review/reviewer/standard.html). + +## 如何撰写code review的评论 + +* 和气 +* 阐述你的原因 +* 指出问题,避免明确的指示,应该由开发者决定如何处理问题 +* 建议开发人员使用简明清晰的代码和注释替代对复杂实现的解释 + +## 处理对Code Review结论的质疑 + +面对Code Review的驳回有时候会有得不到开发人员的认同,这时候该怎么办? + +### 谁是正确的 + +面对质疑首先要想到,是不是他们(开发者)是正确的?因为开发者更了解他们的代码,如果是这样就撤销问题. + +如果认为review没有问题需要耐心的听取开发人员的意见,并予以解释,必要的情况下需要准备恰当的示例. + +重要的是双方要互相的倾听,认真的思考对方的理由. + +不接受"稍后修改",因为"稍后修改"可能被别的工作打扰,然后被遗忘. + +## 引用 + +[eng-practices](https://google.github.io/eng-practices) diff --git a/_posts/vim/2021-10-26-vim_surround.md b/_posts/vim/2021-10-26-vim_surround.md new file mode 100644 index 00000000..c0fd8439 --- /dev/null +++ b/_posts/vim/2021-10-26-vim_surround.md @@ -0,0 +1,72 @@ +--- +title: vim-surround +category: tools +tags: vim +comments: true +--- +## 介绍 + +> vim-surround,tpope大神的一款life-changed插件,和文本对象组合使用能让更改成对的符号异常方便,安装完成以后直接就可以使用 + +## 使用 +```vim + Old text Command New text ~ + "Hello *world!" ds" Hello world! + [123+4*56]/2 cs]) (123+456)/2 + "Look ma, I'm *HTML!" cs" Look ma, I'm HTML! + if *x>3 { ysW( if ( x>3 ) { + my $str = *whee!; vlllls' my $str = 'whee!'; +
Yo!*
dst Yo! +
Yo!*
cst

Yo!

+ +# *代表当前光标位置,添加替换时使用后半括号)]},添加的括号和内容间就没有空格(如第2个示例),反之会在内容前后添加一个空格(如第4个实例) +``` + +## 命令列表 + +```vim +Normal mode +----------- +ds - delete a surrounding +cs - change a surrounding +ys - add a surrounding +yS - add a surrounding and place the surrounded text on a new line + indent it +yss - add a surrounding to the whole line +ySs - add a surrounding to the whole line, place it on a new line + indent it +ySS - same as ySs + +Visual mode +----------- +s - in visual mode, add a surrounding +S - in visual mode, add a surrounding but place text on new line + indent it + +Insert mode +----------- + - in insert mode, add a surrounding + - in insert mode, add a new line + surrounding + indent +s - same as +S - same as +``` + +## Vim基于surrounding的文本编辑 +提到了surround插件,不得不提一下Vim中广为人知的对surrounding内文本的编辑功能,其实surround插件就是对Vim这部分功能的增强。原理和细节请参照vim中的[text-object motion](http://vimdoc.sourceforge.net/htmldoc/motion.html),这里只列举一些常见用法。可以不夸张的说,任何习惯了vim中[operation+motion](https://blog.carbonfive.com/vim-text-objects-the-definitive-guide/)操作的人都会上瘾的,其他编辑器都是个渣了。 + +以修改surrounding内文本为例: +```vim +ci[ ci( ci< ci{ 删除一对 [], (), <>, 或{} 中的所有字符并进入插入模式 +ci” ci’ ci` 删除一对引号字符 ” ‘ 或 ` 中所有字符并进入插入模式 +cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式 +``` +其他常见operation + +```vim +ci: 例如,ci(,或者ci),将会修改()之间的文本; +di: 剪切配对符号之间文本; +yi: 复制; +ca: 同ci,但修改内容包括配对符号本身; +da: 同di,但剪切内容包括配对符号本身; +ya: 同yi,但复制内容包括配对符号本身。 +PS. dib等同于di(。diB等同于di{。 +``` +## 转自 +[http://zuyunfei.com/2013/04/17/killer-plugin-of-vim-surround/](http://zuyunfei.com/2013/04/17/killer-plugin-of-vim-surround/) diff --git a/a.svg b/a.svg new file mode 100644 index 00000000..dde633d2 --- /dev/null +++ b/a.svg @@ -0,0 +1 @@ + diff --git a/about.html b/about.html index a531768d..7e8a98d0 100644 --- a/about.html +++ b/about.html @@ -1,4 +1,5 @@ --- +layout: default title: 关于 --- diff --git a/anchor.svg b/anchor.svg new file mode 100644 index 00000000..a15abc05 --- /dev/null +++ b/anchor.svg @@ -0,0 +1 @@ + diff --git a/assets/img/avatar-320x320.png b/assets/img/avatar-320x320.png index 929fa178..d3d58fbb 100644 Binary files a/assets/img/avatar-320x320.png and b/assets/img/avatar-320x320.png differ diff --git a/assets/img/avatar-320x320_ori.png b/assets/img/avatar-320x320_ori.png new file mode 100644 index 00000000..929fa178 Binary files /dev/null and b/assets/img/avatar-320x320_ori.png differ diff --git a/assets/img/avatar.png b/assets/img/avatar.png index 929fa178..20a54514 100644 Binary files a/assets/img/avatar.png and b/assets/img/avatar.png differ diff --git a/assets/img/avatar_org.png b/assets/img/avatar_org.png new file mode 100644 index 00000000..929fa178 Binary files /dev/null and b/assets/img/avatar_org.png differ diff --git a/assets/img/blog/arts/mysql_design.png b/assets/img/blog/arts/mysql_design.png new file mode 100644 index 00000000..3b0d9e64 Binary files /dev/null and b/assets/img/blog/arts/mysql_design.png differ diff --git a/assets/img/blog/arts/mysql_index_b-tree.png b/assets/img/blog/arts/mysql_index_b-tree.png new file mode 100644 index 00000000..7387678d Binary files /dev/null and b/assets/img/blog/arts/mysql_index_b-tree.png differ diff --git a/assets/img/blog/arts/mysql_search_seq.png b/assets/img/blog/arts/mysql_search_seq.png new file mode 100644 index 00000000..19acc9bc Binary files /dev/null and b/assets/img/blog/arts/mysql_search_seq.png differ diff --git a/assets/img/blog/db/mysql_undo_log.png b/assets/img/blog/db/mysql_undo_log.png new file mode 100644 index 00000000..82231fa2 Binary files /dev/null and b/assets/img/blog/db/mysql_undo_log.png differ diff --git a/assets/img/blog/db/row_trx_id.png b/assets/img/blog/db/row_trx_id.png new file mode 100644 index 00000000..616a6d25 Binary files /dev/null and b/assets/img/blog/db/row_trx_id.png differ diff --git a/assets/img/blog/linux/tmux_example.jpg b/assets/img/blog/linux/tmux_example.jpg index 5c953c01..224e0b35 100644 Binary files a/assets/img/blog/linux/tmux_example.jpg and b/assets/img/blog/linux/tmux_example.jpg differ diff --git a/bookmarks.html b/bookmarks.html new file mode 100644 index 00000000..4cdd9b55 --- /dev/null +++ b/bookmarks.html @@ -0,0 +1,127 @@ + + + +Bookmarks +

Bookmarks

+

+

Bookmarks bar

+

+

Book

+

+

古诗文网-古诗文经典传承 +
汉典古籍 - gj.zdic.net- +
论坛 - 汉典论坛 - 汉典旗下网站 +
国学网 +
常用國字標準字體筆順學習網 +
汉典 zdic.net +
中國哲學書電子化計劃 +
Kindle伴侣 - 为静心阅读而生 +
kindle推|kindle推送|kindle图书推送|kindlepush|kindle电子书推送|kindle网站 +
Linux - Free Computer, Programming, Mathematics, Technical Books, Lecture Notes and Tutorials +
中国国家图书馆•中国国家数字图书馆 +
七月 – 2018 – 我的小书屋-最新最全电子书免费下载 +
周读:提供免费电子书下载、分享。包括mobi、epud、pdf、txt格式,kindle电子书下载 - 周读 +
kindle——珍藏的优质电子书网站 - 简书 +

+

MyBlog

+

+

代理

+

+

科学上网:ubuntu 16.04服务器上搭建Shadowsocks服务 | 令狐葱@前端笔记 +
ubuntu shadowsocks polipo 全局代理 | dearmadman-王奇的博客 +
SSH隧道翻墙的原理和实现 +
国外主机测评-国外VPS,国外服务器,国外主机,测评及优惠码 +
解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止【后台运行程序】 - bohaoist - 博客园 +
使用shadowsocks科学上网 +
shadowsocks配合SwitchyOmega科学上网 | fazero +
linux screen 命令详解 - David_Tang - 博客园 +
Squid Linux 代理服务器 - WangXiaoQiang - 博客园 +
Squid服务全攻略 | 独自等待-信息安全博客 +
Linux下配置Squid代理服务器_服务器应用_Linux公社-Linux系统门户网站 +

+

推广相关

+

+

酷壳 – CoolShell.cn +
代码之谜(五)- 浮点数(谁偷了你的精度?) - justjavac(迷渡) +
ilanyu's Blog +
VIM替换 压箱底的技巧 | 夕阳下的奔跑 +
张志敏的技术专栏 +
Welcome | 刘彦玮的技术博客 +
vi/vim使用进阶: 自动补全 – 易水博客 +
Linux下查看系统硬件信息的命令和脚本 – 笑遍世界 +
metaboy's blog +
OneCoder & Y & W +
Wuyuan's Blog +
HTTP 代理原理及实现(一) | JerryQu 的小站 +
Spring的@PropertySource和@Value注解例子 - 9leg +
huangz/blog — huangz/blog +
Wscrlhs +

+

Google Analytics(分析) +
主页 - 百度统计 +
Typecho Official Site +
😍iEmoji.com - 👀Lookup, ✨Convert, and 💁Tweet with Emoji! 🔥 +
如何提升网站在搜索引擎的收录量 - stma - 博客园 +
框架的思考 - CSDN博客 +
Manage 45.32.37.68 - Vultr.com +
丁亮的个人博客 +
优雅地使用命令行:Tmux 终端复用 | Harttle Land +
Manage 45.32.37.68 - Vultr.com +
泰晓科技 - 聚焦嵌入式 Linux - 追本溯源,见微知著! +

+

Papers

+

+

2007-cpwl.pdf +
二叉查找树、平衡二叉树、红黑树、B-/B+树性能对比 - CSDN博客 +
The Pathologies of Big Data - ACM Queue +
Profile - LeetCode +
Raft 一致性算法论文译文 +
StackEdit – Editor +
由 B-/B+树看 MySQL索引结构 - ygmyth - SegmentFault 思否 +
为什么实用B-Tree(B+Tree) · MySQL索引背后的数据结构及算法原理 · 看云 +

+

磨铁

+

+

【新消息】 - 赵亮 - 北京磨铁数盟信息技术有限公司 - 磨铁文档管理系统(专业版) +
石墨文档 +
阿里云code +
Jenkins +
Home +
控制台快捷入口 +
用户信息: 赵亮 - JIRA +
磨铁后台 - 磨铁后台 - Confluence +
Welcome! - Confluence +
各环境配置 - 磨铁后台 - Confluence +
如何编写 Commit Message | Harttle Land +
员工关爱平台 +

+

Work

+

+

知名互联网公司 Java 开发岗面试知识点解析 +
Java面试----2018年MyBatis常见实用面试题整理-云栖社区 +
阿里专家与你分享:你必须注意的Java编程细节-博客-云栖社区-阿里云 +
Linux OOM-killer机制(out of memory)-弦断指间-51CTO博客 +
个人简历 +
浅析Spring编程式事务管理及声明式事务管理 - CSDN博客 +
https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247487544&idx=1&sn=a15c8762edf234e843e11061def8931a&chksm=e9292d37de5ea42115530d2e8a59cf456388068b8e8aa382e2bdeccc7b218e7a10f1aea07c2f&mpshare=1&scene=1&srcid=0528V6LdmlNoviLuBrsjwPSA&pass_ticket=CWD5ICMAAIvkyaG%2FQrICDzOxA%2BBc8VtzMuFH2U1cTExujn9YBwKGfLVqbk0M8I0W#rd +
架构师之路 +
git rebase - Git 中文开发手册 - 开发者手册 - 云+社区 - 腾讯云 +
深入理解Java类型信息(Class对象)与反射机制 - CSDN博客 +
深入理解Java枚举类型(enum) - CSDN博客 +
偏向锁,轻量级锁,自旋锁,重量级锁的详细介绍 - wade&luffy - 博客园 +
Tcpdump Examples - 22 Tactical Commands | HackerTarget.com +
阿里技术 +

+

CodingTed +
+
+
阮一峰 +
+
+
掘金 +

+

关于跑步那些事 | 如何挑选合适的跑鞋_正确的跑步姿势_跑前拉伸动作_什么值得买 +
fsck error on boot: /dev/sda6: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY - Ask Ubuntu +

diff --git a/index.html b/index.html index 5b2488bd..72d28ae0 100644 --- a/index.html +++ b/index.html @@ -44,7 +44,7 @@