vim调用python格式化json数据
python有个标准模块叫json,用于编码/解码,序列化/按序列化json格式数据。
python有个标准模块叫json,用于编码/解码,序列化/按序列化json格式数据。
为了弄明白git show-branch的输出格式,先做一系列实验,看其输出
初始化一个空的git库
1 | $ git init |
在master分支上做初始提交
1 | $ touch master |
看看当前分支的情况
$ git branch
$ git show-branch
[master] master init commit
新建devel分支
$ git branch devel
$ git branch
devel
$ git show-branch
! [devel] master init commit
* [master] master init commit
–
+* [devel] master init commit
切换到devel分支并做新的提交
$ git checkout devel
Switched to branch ‘devel’
$ touch devel
$ git add –all
$ git commit -m “first commit on devel”
$ git branch
$ git show-branch
* [devel] first commit on devel
! [master] master init commit
–
* [devel] first commit on devel
*+ [master] master init commit
回到master分支
$ git checkout master
$ git show-branch
! [devel] first commit on devel
* [master] master init commit
–
+ [devel] first commit on devel
在devel分支上新建feature分支
$ git checkout devel
$ git checkout -b feature
$ touch feature
$ git add –all
$ git commit -m “first commit on feature”
$ git show-branch
切换到devel分支
$ git checkout devel
$ git show-branch
切换到master分支
$ git checkout master
$ git show-branch
合并分支feature到devel
$ git checkout devel
$ git merge feature
$ git show-branch
feature分支多次提交之后
然后再将分支feature合并到devel
标识符的颜色只是用于容易区分列,一列的颜色是一致的,看起来更清楚。
===
[erq]
在这个多核的时代,代码的线程安全是应该优先被考虑的事情。
过早优化是万恶之源(premature optimization is the root of all evil)
jQuery对象(实际是jQuery.fn.init对象)并不会继承jQuery.xxx这些jQuery名字空间下的函数,但可以调用这些函数,因为所有人都可以调用。jQuery.xxx函数只是使用了jQuery作为名字空间,避免了全局名字空间污染而已。当用普通方式调用jQuery.xxx函数时,this指针指向jQuery函数对象自身。
一图胜千言:
HTML元素实际占据content部分,外围是padding填充,再往外是border边框,最外面为margin空白。
padding又叫内边距,margin又叫外边距。
可以这样想象CSS盒模型:
有一个存储货物的仓库,货物用纸箱包装起来,因为货物很贵重,所以在货物和纸箱之间我们要加一些泡沫填充材料。货物就是HTML元素,填充的塑料泡沫就是padding,而纸箱本身就是border。因为货物很贵重,不能将箱子直接叠放在一起,所以我们有了margin,也就是箱子与箱子之间的空白。
而这些padding,border,margin都是可以调整的,如果货物比较廉价,那就不用太在意,直接将货物堆放在一起就可以了,这时候padding,border和margin就都为零了。
HTML文档默认采用流式布局。
块元素(block)和行内元素(inline)
所有的HTML标签都遵守CSS Box Model,都是盒子,但是在HTML的流式布局中分为两种显示类型。
一种是块元素(block),比如div,p,h1等。这种元素在默认的流式布局中会独占一行,前后都会有断行符。
另一种是行内元素(inline),比如span,strong,input等。这种元素在在默认的流式布局只会占据必要的宽度,而且不会自动断行,会与其他行内元素和平共处,共享同一行(line box)。
可以使用水平方向的内边距(padding)、边框(border)和外边距(margin)调整行内元素的间距。但是,垂直方向内边距、边框和外边距不影响行内元素的高度。行的高度总是足以容纳它包含的所有内联元素,也可以通过设置行高增加这个行的高度。
HTML元素有默认的显示类型,block或inline。但可以通过使用display属性显式的更改它们的显示类型,比如将典型的块级元素div,设置为行内元素
[html]
div {display:inline;}
[/html]
如果将元素的display属性设置为none,则元素根本就不会显示。
HTML元素可以有4种不同的定位类型,使用positon元素来进行定位。
如果不指定其位置属性(top,bottom等),则元素会跟随在上一个正常文档流(没有被删除的,包括保留位置的relative定位元素)的位置之后定位,但其宽度只能容纳其实际内容,不会自动伸展。
虽然绝对定位框有外边距,这些外边距不与其他外边距折叠(Collapse)。
浮动可以让某个元素脱离正常的文档流,漂浮在正常的文档流之外。浮动元素在正常文档流中的位置不会保留。浮动的设置有两个属性,float和clear。
float可以设置为left,right和none值,用于指定元素的浮动类型。
根据HTML代码中元素定义的顺序,如果浮动元素的上一个元素不是浮动的,则当前浮动元素紧随上一个非浮动元素的下一个元素位置(下一个元素的位置依据非浮动元素的显示类型而有所不同)处布局,根据float属性,靠左侧或右侧浮动。
如果浮动元素的上一个元素也是浮动元素,则当前浮动元素会紧随上一个元素在同一个行内进行浮动。
而clear则用于清除浮动,取值为left,right,both和none。
对于CSS的清除浮动(clear),有一点要注意,清除浮动只能影响使用清除的元素本身,不能影响其他元素。也就是说,比如想让A浮动元素右侧的B浮动元素移动到下一行,应该设置B浮动元素的clear属性为left,而不是在A元素中设置clear属性为right。也就是不能通过一个元素的clear属性强迫另一个元素移动,只能通过clear属性让自己移动。
CSS不但可以平面布局,还可以通过指定元素的堆叠次序来进行垂直布局(深度方向),这个属性就是z-index。(x,y)是平面,而z是垂直于平面的第三维。
只有非静态定位(static)的定位元素可以使用z-index属性,也就是只有position:absolute, position:relative, 或者position:fixed的元素可以使用z-index指定堆叠次序。
box-sizing
如果所有的浏览器都遵守W3C规范就不会有这个属性。不用看我,我说的就是你,低版本的IE!
CSS属性box-sizing用于更改默认的CSS盒模型来计算元素的宽度和高度。可以用这个属性来模拟没有正确支持CSS盒模型的浏览器。
这个属性的取值如下:
不推荐使用这个属性,保持其默认值即可。
IE 10+才算是现代浏览器,之前的版本都应该被抛弃!
参考:
1、CSS Box Model
2、CSS Positioning
3、CSS Display and Visibility
4、CSS z-index Property
5、理解绝对定位和相对定位布局
5、CSS浮动(float,clear)经验分享
6、用z-index进行层次堆叠
7、CSS float 属性
8、CSS clear 属性
[9]box-sizing
[10]HTML DOM display 属性
[11]position
===
[erq]
批量查找文件内的字符串,并输出结果的行号,可以这样find . -name “*.foo” xargs grep -n -s ‘bar’或者grep -n -s ‘bar’ `find . -name “*.foo”`
Spring 3 内置支持5种scope(bound),还可以自定义scope。
如果没有明确的指定scope,默认就是singleton。Spring IoC容器只会创建一个singleton bean的实例,所有对这个bean的请求,spring都会返回这个实例。spring的singleton不同于GOF模式书中的singleton,GOF的singleton是每一个类装载器实例化一个对象,而spring是每一个容器实例化一个对象。
因为singleton是被共享的,因此singleton bean应该是无状态的,线程安全的,不然并发访问会出现问题。
每次请求prototype bean,容器会生成(或从缓存队列中挑选)一个新的bean实例,因此prototype bean没有并发的问题,因为没有共享问题。所有有状态的bean应该使用prototype scope,而所有无状态的bean应该使用singleton scope。
singleton bean的性能和节约资源方面会优于prototype bean
但是spring不会管理prototype bean的全部生命周期,spring只负责实例并初始化prototype bean,然后交付给客户就撒手不管了,客户使用完prototype bean后必须负责清理bean使用的资源。也可以通过bean post-processor让容器负责prototype bean的清理工作。
每一个HTTP请求有一个Request scope bean的实例。每一个http请求会在一个单独的线程里处理,因此Request scope bean无需考虑并发问题。其他的HTTP请求不会看到另一个HTTP请求使用的bean实例的状态。
每一个HTTP Session生成一个Session scope bean实例。会话之间是隔离的,因此也不会有并发问题。
只有portlet web应用程序中才有的scope,绑定到整个portlet Session。
注意事项:
1、只要有可能,尽量将bean设计为线程安全的,从而可以使用默认的singleton scope,提高程序的运行效率,减少对系统资源的占用。
可以通过使用ThreadLocal改造非线程安全的类,使其可以使用singleton scope。Spring和Mybatis的很多组件使用了这个技术。
2、@Controller, @Service, @Repository, @Compenent等注解修饰的bean默认都是singleton scope,因此一定要注意线程安全问题。非线程安全的类要么使用ThreadLocal改造为线程安全的,要么使用其他scope。
3、Request,Session和Global session只在web应用程序环境中存在。
4、通常不应该让容器管理细粒度的domain对象(又叫entity对象或者model对象),因为创建和管理domain对象是DAO和业务逻辑层的职责。实际上一定不要让容器管理domain对象,因为domain对象是state full的,非线程安全的,自己管理比交给容器管理更容易,更少出问题。
Typically one does not configure fine-grained domain objects in the container, because it is usually the responsibility of DAOs and business logic to create and load domain objects.
from spring:
Typically one does not configure fine-grained domain objects in the container, because it is usually the responsibility of DAOs and business logic to create and load domain objects.
添加cassandra源
新建source list文件/etc/apt/source.list.d/cassandra.list,在其中添加cassandra源
[javascript]
deb http://www.apache.org/dist/cassandra/debian 20x main
deb-src http://www.apache.org/dist/cassandra/debian 20x main
[/javascript]
20x表示使用2.0.x系列版本,20x目前是最新的,可选12x,11x等。
添加源的public key
1 | $ gpg --keyserver pgp.mit.edu --recv-keys F758CE318D77295D |
输出:
1 | gpg: requesting key 8D77295D from hkp server pgp.mit.edu |
安装cassandra
1 | # apt-get update |
update(06/21/2019)
当前最新的release版本系列为311x,当前还在支持的release版本系列还有30x, 22x, or 21x
22x的最新版本为2.2.14,下面以安装2.2.14为例:
添加源
1 | $ echo "deb http://www.apache.org/dist/cassandra/debian 22x main" sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list |
添加仓库公钥key
1 | $ curl https://www.apache.org/dist/cassandra/KEYS sudo apt-key add - |
安装
1 | $ sudo apt update |
References:
[1]Downloading Cassandra