###步进 所谓步进:同一处理器型号随着时间推移,会有一些小的改进,厂商把这些小的改进通过新的步进来体现。 (通过汉语意思理解:就是与之前相比进了一小步,针对同一型号) 酷睿 i3/i5全线将从C2步进转换到K0,预计在品质等诸多方面比上一个步进要更加出色。 现在知道了吧,不用去关注它,只要知道是处理器在架构或者其他方面提高了就行。 步进更多的知识详见百度百科,里面讲到了用CPU-z识别当前使用的CPU的步进信息,如何通过编码知道步进信息。
###CPU各版本信息 ####ES 测试版CPU,发给制造商用于各类测试的版本,因为不是免费提供,intel无法回收CPU,测试结束以后部分CPU会流入市场,该类CPU如要购买最好先搜一下看看ES版是否存在一些BUG
####QS 最后一个版本的ES,一般用工具检测,固件烧录的也是ES,用于区分正式版
####BGA、PGA
BGA和PGA是intel的两种封装类型,BGA没有阵脚,直接焊在主板上,PGA带有阵脚,可以插在socket插座上使用,一些JS把BGA的CPU拆掉私自焊针脚来销售,稳定性极差,价格要低很多,温度要高一些,BGA和PGA无法用软件区分,只能拆开自己检查
引用:低电压板,L,SP,SU开头的型号,基本都是bga的 引用:http://www.xj123.info/1717.html
###CPU后面跟随的数字 I3 后面有四个数字 拿I3 3220为例, 第一个3就是第三代,所以2100就是第二代,530(三个数字)就是第一代 第二个2就是规格,一般取比第一个数字小1的数字,比如第一个是4,后面就是3,如果小于3,那就是进一步降低主频或删减缓存的缩水货。 第三个2就是等级,档次,越高越好。 最后一个0只是加上去为了英语发音好读。
I5也是一样,比如I5 3570K 第一个数字3代表第三代,第二个数字固定为5,小于5的就是精简过规格的产品,第三个是等级。
另外关于第二个数字还有一个小秘密,一般3以下都是I3(也有双核I5,很少),3-5是I5,6-9是I7。 引用:http://zhidao.baidu.com/question/573950249.html
Android SDK就是 Google 提供的Android开发工具包,之前请先配置好JDK
sudo apt update && sudo apt install android-sdk
安装之后 Android SDK 的地址可能在:
/home/account/Android/Sdk
/usr/lib/android-sdk
###配置Android SDK环境变量
下载Android SDK,点击安装,直接默认路径即可! 下载地址:https://developer.android.com/sdk/index.html
默认路径安装后,安装完成,开始配置环境变量。
打开计算机属性——高级系统设置——环境变量(如上文)
新建一个环境变量,变量名:ANDROID_HOME,变量值:D:\Android\android-sdk(以你安装目录为准,确认里面有tools和add-ons等多个文件夹),点击确认。
在用户变量PATH后面加上变量值;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;点击确认即可
Android SDK配置完成,接下来验证配置是否成功。
点击运行——输入cmd——回车——输入adb——回车,如果出现一堆英文,即表示配置成功,输入Android,启动Android SDK Manager。
Android sdk目录里,有一些文件夹:
参考: http://blog.csdn.net/rflyee/article/details/8973529
地址
:help NERDTree
通常情况下会设置一个 map
nmap <F2> :NERDTreeToggle<cr>
然后设置
" nerd comment
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Use compact syntax for prettified multi-line comments
let g:NERDCompactSexyComs = 1
" Align line-wise comment delimiters flush left instead of following code indentation
let g:NERDDefaultAlign = 'left'
" Set a language to use its alternate delimiters by default
let g:NERDAltDelims_java = 1
" Add your own custom formats or override the defaults
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } }
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 1
" Highlight Cursor line
let g:NERDTreeHighlightCursorline = 1
" Show hidden files
let NERDTreeShowHidden=1
" NERDTree will recursively open dirs with only one child
let NERDTreeCascadeOpenSingleChildDir=1
使用 :help NERDTreeMappings
来查看插件所有的绑定,这一些是日常中使用频率比较高的:
Enter
在窗口打开文件i
水平分割线分割,如果有一个打开的窗口,那么会分成上下两个窗口s
垂直分割线分割,左右两个窗口I
显示或者隐藏 hidden filem
菜单,m 是一个非常强大的命令,可以支持新增,删除,重命名,复制等等操作r
递归刷新当前目录R
递归刷新 root 目录?
Blogger 的主题和插件有自带的一套语法,下面就是 Blogger 主题中关于 Widget 的使用说明。
`
接下来谈论一下可以在widget中放置什么
Widget的内容包含在”includable” section中,像这样:
<b:includable id='main' var='thiswidget'>
[insert whatever content you want here]
</b:includable>
includable的属性有:
每一个widget必须有一个具有id='main'
的 includable 。通常这个widget的大部分内容都包含在这个includable中.
如果你有很多具有不同id属性的includable,他们不会自动的显示出来.但是如果你有一个includable带有id='new'
的属性,那么在main includable
中通过<b:include name='new' />
就能够引用,并显示出来.
b:include
标签的属性如下:
b:includable
的id简单例子同来讲解b:includable
和b:include
的用法.Loops和data会在后面讲述,这里主要要理解’main’ section是如何包含 ‘post’ section的.main包含了一个includable,传递了一个data叫做’i’,included section引用做’p’,使用p访问title.
<b:includable id='main'>
<b:loop var='i' values='posts'>
<b:include name='post' data='i'/>
</b:loop>
</b:includable>
<b:includable id='post' var='p'>
Title: <data:p.title/>
</b:includable>
下面这段的意思就是说如果你想重复使用代码,可以将代码放到includable中,然后用include引用.就不翻译了.
Includes are most useful if you have a section of code that you want to repeat multiple times in different places. You can just write the code once, put it inside a b:includable, then use b:include wherever you want it to appear. If you don’t need to do that, then you can just stick with the single main includable and not worry about the rest. (Note that the main includable is included automically –
data:标签大概是最为重要的一个标签了,因为它是获取一切事实数据的途径,一些例子如下:
<data:title/>
or
<data:photo.url/>
这个例子非常简单,他能够在几乎所有的widget中起作用,因为大多数widget有title.上面的例子就是打印出widget的title.第二个例子是一个较为复杂的变量,获取photo的url.
有很多data你能够通过data:标签来获取,查阅 comprehensive list 查询需要的data,一些data只能在特定的widget中使用.
b:loop 标签让你重复使用section中内容.通常用在打印给定的一系列post,或者每一条留言,或者每一个label,等等.通常用法,像这样:
<b:loop var='identifier' values='set-of-data'>
[repeated content goes here]
</b:loop>
identifier
可以选用任何名字,用来代表list中每一个item.可以简单的设定为”i”.set-of-data
可以是在 data tags article中定义的任何一系列data例如,在blog post widget中, posts是一个list,下面的代码是遍历每一个post,打印出每一个的标题title
<b:loop var='i' values='data:posts'>
<h2><data:i.title/></h2>
</b:loop>
注意,”i”是每一个post,在循环中使用i获取每一个post的title
if/else像很多编程语言一样,条件判断,这里是选择哪些显示和哪些不显示.通常如下:
<b:if cond='condition'>
[content to display if condition is true]
<b:else/>
[content to display if condition is false]
</b:if>
b:else
tag是可省略的. 而</b:if>
是不可省略的. 如果没有else子句,那么只有满足if条件才会执行if子句中代码,不然什么都不执行
条件语句中你可以放置任何结果是true或者false的语句,有一些data本身就表示true/false,像post中allowComments
.其他data,你可以用来比较得到结果.一些例子:
<b:if cond='data:post.showBacklinks'> True if the current post is set to show backlinks.
<b:if cond='data:blog.pageType == "item"'> True if the current page is an item page (post page).
<b:if cond='data:displayname != "Fred"'> True if this is not Fred's display name.
<b:if cond='data:post.numComments > 1'> True if the current post has more than one comment.
HAProxy is free, open source software that provides a high availability load balancer and proxy server for TCP and HTTP-based applications that spreads requests across multiple servers. It is written in C and has a reputation for being fast and efficient.
简单的来说 HAProxy 就是一个负载均衡,TCP 和 HTTP 的代理程序,开源,高可用,C 写成。他原本的作用是将前端的大量流量分发到后端的服务器中,用于负载特别大的 WEB 网站的,这里被大材小用了。
使用 HAProxy 中转 SS 流量至少需要两台 VPS,国内一台,国外一台,SS 客户端直接连国内的 VPS,而通过国内的 VPS 转发流量到国外的 VPS 上。
sudo apt install -y haproxy
HAProxy 的配置文件在 /etc/haproxy/haproxy.cfg
下:
global
ulimit-n 51200
defaults
log global
mode tcp
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend ss-in
bind *:8888
default_backend ss-out
backend ss-out
balance roundrobin
server server1 [VPS-IP]:8888 maxconn 20480
server server2 [VPS2-IP]:8888 maxconn 20480
主要的配置就是 frontend
和 backend
,也很好理解,将入站的 8888 端口中的流量转发到 VPS 的 8888 端口。然后重启 HAProxy 即可
sudo /etc/init.d/haproxy restart
启动之后,本地的 SS 客户端直接连国内的 IP 即可,需要注意的是配置用的是 ssserver 的配置。
配置监控界面监控转发流量:
listen stats #定义监控页面 $
bind *:1080 #绑定端口 1080$
mode http # http mode$
stats refresh 30s #每 30 秒更新监控数据 $
stats uri /stats #访问监控页面的 uri$
stats realm HAProxy\ Stats #监控页面的认证提示 $
stats auth username:password #监控页面的用户名和密码 $
在 Cinnamon 桌面环境下有一个开机启动应用的管理程序叫做 startup applications,用该程序来管理开机启动应用是非常方便的。更准确的来说应该是 login 到桌面环境中启动的应用程序管理。
命令行是
cinnamon-settings startup
同样在 gnome 的桌面环境下也有一个相似的 gnome-session-properties
但是这个应用没有 Cinnamon 提供的方便友好,一个很大的差别就是 Cinnamon 提供的 startup 工具允许用户直接选择已经安装的应用,而 gnome 提供的只允许用户自己选择执行脚本(命令),自己选择图标,标题等等。Cinnamon 帮我们做了很多友好的工作。
实际上所有开机自启动的配置都在 ~/.config/autostart
目录中,每一个启动项都以自己名字开头,比如 GoldenDict goldendict.desktop
这样的名字,包含如下内容。
[Desktop Entry]
Type=Application
Terminal=false
Categories=Office;Dictionary;Education;Qt
Name=GoldenDict
GenericName=Multiformat Dictionary
Comment=GoldenDict
Encoding=UTF-8
Icon=goldendict
Exec=goldendict
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[en_US]=GoldenDict
Comment[en_US]=GoldenDict
X-GNOME-Autostart-Delay=100
其中定义了常见的配置,包括启动命令,图标,名字等等。
manual 一般翻译为手册,指南。通常是制造商提供的一份详细的操作指示,更具体来说一般为官方提供的。
guide 向导,指南。是一个比较宽泛的词,鉴于 manual 可能是一份文档,游戏的小册子,或者更加复杂的汽车的手册,但是 guide 可能就是一个卡片,或者介绍的视频。guide 可能是一个比较细节的说明,但也可能是一个简单的介绍或者说明。
tutorial 通常翻译为教程,通常是针对无经验的初学者提供 step-by-step 每一步详细的说明。
cookbook 直译是食谱,在 鉴别 Mastering Cookbook xxx in Action 系列图书 文章中就已经解释了,通常指的是比较实用的一些用例。
reference 一般译作参考,引用,这个 reference 倒是不会产生什么歧义。我的文章中也经常使用。
在看 JDK 源码 HashMap 时发现在 put 方法实现过程中使用了下面的语句
if ((tab = table) == null || (n = tab.length) == 0)
n = (tab = resize()).length;
能够看到在判断语句中使用了赋值语句的结果来和 null 和 0 比较,再比如读写文件时会有
while ((line = reader.readLine()) != null) {
out.append(line);
}
就能发现 Java 中的赋值语句是有返回值的,并且也不是简单的 boolean 。事实上赋值语句返回的是左侧变量的引用值,也就是右侧的结果。
@Test
public void testAssignment() {
int i;
System.out.println(i=0);
System.out.println(i=1);
}
输出分别是 0 和 1.
学车到现在已经接近尾声,拖了两年之久的事情终于要有点眉目了。现在只剩下最后的理论—-科目四的考试了,这个考试应该也和科目一的理论差不多,只是最后多了五道多选题而已。现在回想起来,暑假,寒假,寒假,多少时间花在这个上面。断断续续不知道是福还是祸,考试从人监考一直到现在红外线考,变化多多,训练的方法也变化多多。
之前一个寒假我记得当时考试,倒桩和小路考是分开考的,而今年寒假回来就变成一起考了。以前小路考还考单边桥,而现在不见了。以前小路考是一次性,如果通过就通过,现在是有两次机会,第一次不过还有第二次机会。总之里面的变化任谁也搞不清楚。反正这些也不管了,都是过去的事情了。
下面就做一些记录,这是我一边学车,一边记录下来的:
##小路考 上车,安全带(安全带不能带反,因为车上有感应装置,如果安装反了感应不到就是不及格) 起步(不能停顿超过30秒),左方向灯 侧方停车位,开车到看到左边后视镜看见库一角,一圈方向,倒档,车身与库对角线齐平,返回一圈方向,看右后轮胎,快进库时,反方向打死方向盘,进库,出来时方向灯 s路,直着进弯道,看黄线到车头三分之一处一圈方向,车走正了,返回一圈方向,然后 坡上定点停车与坡道起步,车尽量往右边靠30cm,车头要在停止范围内,起步方向灯 直角转弯,反光镜到黄线齐平,打死方向 倒车入库,到黄线打死方向,看左反光镜,车声0.5米,返回半圈方向,看车身与黄线平行,将方向放正
##大路考
上车,安全带,座椅,踩离合,空档发动,大车灯,方向灯切换一下(后来分完车,车上教练教了一个好办法:上车1.空档 2.发动 3.大灯 4.方向 下车1.方向 2.大灯 3.熄火 4.挂一档,正好完全相反) 报告考官,灯光仪器正常,请求起步 方向灯,远近大灯,左右反光镜,挂一档,松离合,松手刹。 挂二档 靠边停车,转向灯,减速 下车,右转向,空档,手刹,关大灯,关方向,熄火,挂一档,松安全带,看反光镜,后面车,下车
总之上面就是这些天反复练习的东西,就这么多。考试也就这么多。
直接上官网
Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown'
安装插件之后会自动高亮语法。该插件有很多配置选项,建议 :help vim-markdown
而我个人比较常用的一些功能是打开文档中链接,将光标放到链接的任何位置使用如下命令
gx
打开 markdown 中相对链接进行编辑
ge
跳转到下一个标题
]]
同理跳转到上一个标题
[[
上面两个方法不管标题的级别都会直接跳转,如果只想要在同一级别的标题中跳转可以使用
[] # 前一个
][ # 后一个
跳转到当前标题
]c
跳转到父标题
]u
增加或者减少标题级别
:HeaderDecrease
:HeaderIncrease
显示 Toc
:Toc
:Toch " 水平打开
:Toct " 新 tab 中打开
格式化表格
:TableFormat
" disable folding
let g:vim_markdown_folding_disabled=1
" Highlight YAML frontmatter as used by Jekyll
let g:vim_markdown_frontmatter=1
:help vim-markdown