VS2012格式化全部代码

只需要在VS2012中运行下面代码即可:
Tools->Library Package Manager->Package Manager Console

function FormatItems($projectItems) {
    $projectItems |
    % {
        # Write-Host "    Examining item: $($_.Name)";

        if ($_.Name -and $_.Name.ToLower().EndsWith(".cs") `
            -and (-not $_.Name.ToLower().Contains(".designer."))) {

            $win = $_.Open('{7651A701-06E5-11D1-8EBD-00A0C90F26EA}');
            $win.Activate();

            $dte.ExecuteCommand('Edit.FormatDocument');

            if (!$_.Saved) {
                Write-Host "    Saving modified file: $($_.Name)";
                $dte.ExecuteCommand('File.SaveSelectedItems');
            }

            $dte.ExecuteCommand('Window.CloseDocumentWindow');
        }

        if ($_.ProjectItems -and ($_.ProjectItems.Count -gt 0)) {
            # Write-Host "    Opening sub-items of $($_.Name)";

            FormatItems($_.ProjectItems);
        }
    };
}

$dte.Solution.Projects | % {
    Write-Host "-- Project: $($_.Name)";

    FormatItems($_.ProjectItems)
}
;

注意:上面代码会遍历文件,打开,格式化,保存再关闭。运行前请保存并备份!

参考:How to format all files in Visual Studio 2012?

JVM常用参数设置

运行方式设置
-client
-server
两者的区别在JIT的编译比例及GC的方式不同,也可以近似的这样理解:client会启动比较快,GC默认为串行,但JIT编译较少,速度慢一些;server启动慢,GC默认为并行,但JIT编译较多,开始速度慢,但JIT编译后会越来越快。

内存设置
-Xms
设置初始化堆的大小

-Xmx
设置最大堆大小

-Xss 或 -XX:ThreadStackSize
设置每个线程栈大小

-Xmn 或 -XX:NewSize
设置年轻代的内存大小

-XX:MaxNewSize
设置最大年轻代新生代内存大小

-XX:PermSize
设置持久代内存大小

-XX:MaxPermSize
设置最大值持久代内存大小

-XX:NewRatio
设置年轻代与年老代的比值

-XX:SurvivorRatio
设置年轻代中Eden区与Survivor区的大小比值

GC设置
-XX:+DisableExplicitGC
禁用java代码中的System.gc()

-XX:+UseSerialGC
设置串行收集器

-XX:+UseParallelGC 或 -XX:+UseParNewGC
设置年轻代为并行收集器

-XX:ParallelGCThreads
设置并行收集器的线程数

或 -XX:+UseParallelOldGC
设置年老代为并行收集

-XX:+UseConcMarkSweepGC
设置年老代为CMS收集

-XX:MaxGCPauseMillis
一次GC最大的停顿时间

-XX:GCTimeRatio
GC占用CPU时间比例

调试GC
-verbose:gc
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
-XX:PrintHeapAtGC

调试加载类
-verbose:class 监视加载的类的情况

调试JNI
-verbose:jni

设置字符集为UTF-8
-Djavax.servlet.request.encoding=utf-8
-Dfile.encoding=utf-8

调试SSL
-Djavax.net.debug=ssl:record
-Djavax.net.debug=ssl:handshake
-Djavax.net.debug=all

内存溢出时抓取JVM快照
-XX:+HeapDumpOnOutOfMemoryError

一家IT公司最重要的财产是什么?

这个问题问过一些人,也在网上找过答案,有人说IT公司最重要的财产是源码,有人说是产品,有人说是客户,也有人说是关系。
其实这些回答,都是有一定道理的。

但我今天想说的答案却是:传承。
这里的传承,不仅是源码,不仅是产品,不仅是业务知识,不仅是编程技巧,更是一种精神,一种文化,一种理念,一种信仰。传承可以将一盘散沙铸成利剑,披荆斩棘。传承可以凝聚成一股强大的力量,无往而不利。

传承,在一个公司的不同阶段,有着不同的表现和不同的作用。

在公司的创业阶段,传承是靠个人来完成的。
这个阶段,公司规模很小,人员很少,是公司对个人依赖最强的阶段,但也是转型最快的阶段。
这个阶段,个人要有很强的付出精神,加班加点甚至通宵是常有的事情。是一个很累很痛苦,但也很充实很快乐的阶段。
创业团队的个人能力及付出,很大程度上决定着公司的未来,
这个阶段,沟通不要很多成本,但每个人都要独挡一面,一个都不能少。
知识都存在人的大脑中,靠人的记忆传递下来。

在公司迅速扩张的阶段,传承是靠传帮带及梯队建设来完成的。
这个阶段,公司初具规模,是对管理层能力要求最高的阶段。
管理层不仅要懂开发,而且要懂运营管理,可以团结力量,调动大家的积极性,沟通成本急速上升。
这个阶段,是公司文化形成的时期,各个环节处理的好坏,直接决定了公司的命运。
这个阶段,知识及文化的传播,主要依赖于师徒关系,一点儿一点儿扩散开来。梯队起来了,稳定了,也就成了;梯队一直不稳定,尤其是核心团队不稳定,也就危险了。

在公司平稳发展的阶段,传承是靠制度及培训完成的。
公司发展到一定规模,个人能力对公司的改变越来越小,甚至被称为螺丝钉。
这个阶段,主要靠公司的制度来保证公司的运营。员工进入公司时,便会接收大量培训,个人按制度完成自己的职责,保障公司正常运营,从而实现公司盈利。
这个阶段,个人对公司的影像变小,很难有所改变。但灵魂人物的作用却变得强大,因为灵魂人物要团结所有人,向应该努力的方向前进。

没有传承,一家公司就谈不上发展;
没有传承,一家公司就一直在走相同的老路;
没有传承,一家公司就会逐渐消亡;

传承,随着一家公司的进步而慢慢改变;
传承,决定了一家公司的气质及未来;
传承,是一家公司最宝贵的财产。

Android Custom Protocol中intent-filter的data标签

当在Android中使用Custom Protocol时,需要在AndroidManifest.xml中,增加相应的intent-filter标签。
其中intent-filter下的data标签,通知了Android,何时处理调用请求,其语法如下:

    <data android:scheme="string"
          android:host="string"
          android:port="string"
          android:path="string"
          android:pathPattern="string"
          android:pathPrefix="string"
          android:mimeType="string" />

其实,上述内容描述了一个URI,当第三方调阅请求不符合该URI时,会直接忽略;而当第三方调阅请求符合该URI时,则会进行调用或让用户进行选择。

URI的具体规则如下:

<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]

如果没有指定scheme,则整个URI无效;
如果没有指定host,则port属性无效;

其各属性说明如下:
scheme:就是协议名称,如http,https,myprotocol等,建议全部小写,而且不包含“:”。
host:ip地址或域名,建议全部小写。
port:端口
path:完全路径匹配
pathPrefix:路径前缀匹配
pathPattern:路径匹配规则(例如:“*”表示字符重复出现0到多次;“.”表示任意字符;“.*”表示0到多个任意字符;转义符为“\”,由于xml的格式限制,非转义的“*”要写为“\\*”,非转移的“\”要写为“\\\\”。)
mimeType:指定MIME类型,如image/jpeg,其中子类型可以使用通配符“*”,建议全部小写。

	<!--http协议下的任何pdf文件-->
	<intent-filter>
		<action android:name="android.intent.action.VIEW"/>
		<category android:name="android.intent.category.DEFAULT"/>
		<data android:scheme="http" android:pathPattern=".*\\.pdf"]</data>
	</intent-filter>

	<!--任何音频文件-->
	<intent-filter>
		<action android:name="android.intent.action.VIEW" />
		<category android:name="android.intent.category.DEFAULT" />
		<data android:mimeType="audio/*" />
	</intent-filter>

	<!--自定义私有协议myproto的任何请求-->
	<intent-filter>
		<action android:name="android.intent.action.VIEW" />
		<category android:name="android.intent.category.DEFAULT" />
		<data android:scheme="myproto"/>
	</intent-filter>

参考资料:
Android开发手册
newcj的博客

IOS实现Custom Protocol

在IOS中,实现Custom Protocol,需要以下两步:

1、修改Info.plist文件,增加以下内容:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.neohope.custom.protocol.test</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>myproto</string>
            </array>
        </dict>
    </array>

2、在AppDelegate.m中,增加以下内容:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    if(url!=nil)
    {
        NSString *path = url.absoluteString;
        //do your job here
    }
    return YES;
}

Andoid实现Custom Protocol

Android中实现Custom Protocol,只需要简单的两步:

1、修改AndroidManifest.xml文件,在activity节增加以下内容:

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="myproto"/>
            </intent-filter>

2、修改对应activity中,用以下代码,就可以处理URL中的数据啦

        Intent intent = getIntent();
        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
            Uri uri = intent.getData();
            String user = uri.getQueryParameter("user");
            String password = uri.getQueryParameter("password");
            //do your job here
        }

MySQL5.7 datetime无法设置默认值为0

在mysql5.7以上版本中,如果datetime默认值为0,则会出现下面的错误:

ERROR 1067 (42000) at line xxx: Invalid default value for 'xxx'

这是因为mysql5.7调整了校验规则,修改一下/etc/mysql/my.cnf配置文件就可以了

[mysqld]
#默认规则
#sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode="ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后重启mysql就可以啦。

常用MIME Type

MIME Type组成规则为:content-type/subtype
content-type:消息内容的类型,比如text,application,multipart,image,audio,video,message
subtype:消息内容的子类型,比如:content-type为text时,常用的子类型有plain,html等。最终MIME Type为:text/plain,text/html。

文件类型 MIME 文件类型 MIME
3gp video/3gpp aab application/x-authoware-bin
aam application/x-authoware-map aas application/x-authoware-seg
ai application/postscript aif audio/x-aiff
aifc audio/x-aiff aiff audio/x-aiff
als audio/X-Alpha5 amc application/x-mpeg
ani application/octet-stream apk application/vnd.android.package-archive
asc text/plain asd application/astound
asf video/x-ms-asf asn application/astound
asp application/x-asap asx video/x-ms-asf
au audio/basic avb application/octet-stream
avi video/x-msvideo awb audio/amr-wb
bcpio application/x-bcpio bin application/octet-stream
bld application/bld bld2 application/bld2
bmp image/bmp bpk application/octet-stream
bz2 application/x-bzip2 cal image/x-cals
ccn application/x-cnc cco application/x-cocoa
cdf application/x-netcdf cgi magnus-internal/cgi
chat application/x-chat class application/octet-stream
clp application/x-msclip cmx application/x-cmx
co application/x-cult3d-object cod image/cis-cod
cpio application/x-cpio cpt application/mac-compactpro
crd application/x-mscardfile csh application/x-csh
csm chemical/x-csml csml chemical/x-csml
css text/css cur application/octet-stream
dcm x-lml/x-evm dcr application/x-director
dcx image/x-dcx dhtml text/html
dir application/x-director dll application/octet-stream
dmg application/octet-stream dms application/octet-stream
doc application/msword dot application/x-dot
dvi application/x-dvi dwf drawing/x-dwf
dwg application/x-autocad dxf application/x-autocad
dxr application/x-director ebk application/x-expandedbook
emb chemical/x-embl-dl-nucleotide embl chemical/x-embl-dl-nucleotide
eps application/postscript eri image/x-eri
es audio/echospeech esl audio/echospeech
etc application/x-earthtime etx text/x-setext
evm x-lml/x-evm evy application/x-envoy
exe application/octet-stream fh4 image/x-freehand
fh5 image/x-freehand fhc image/x-freehand
fif image/fif fm application/x-maker
fpx image/x-fpx fvi video/isivideo
gau chemical/x-gaussian-input gca application/x-gca-compressed
gdb x-lml/x-gdb gif image/gif
gps application/x-gps gtar application/x-gtar
gz application/x-gzip hdf application/x-hdf
hdm text/x-hdml hdml text/x-hdml
hlp application/winhlp hqx application/mac-binhex40
htm text/html html text/html
hts text/html ice x-conference/x-cooltalk
ico application/octet-stream ief image/ief
ifm image/gif ifs image/ifs
imy audio/melody ins application/x-NET-Install
ips application/x-ipscript ipx application/x-ipix
it audio/x-mod itz audio/x-mod
ivr i-world/i-vrml j2k image/j2k
jad text/vnd.sun.j2me.app-descriptor jam application/x-jam
jar application/java-archive jnlp application/x-java-jnlp-file
jpe image/jpeg jpeg image/jpeg
jpg image/jpeg jpz image/jpeg
js application/x-javascript jwc application/jwc
kjx application/x-kjx lak x-lml/x-lak
latex application/x-latex lcc application/fastman
lcl application/x-digitalloca lcr application/x-digitalloca
lgh application/lgh lha application/octet-stream
lml x-lml/x-lml lmlpack x-lml/x-lmlpack
lsf video/x-ms-asf lsx video/x-ms-asf
lzh application/x-lzh m13 application/x-msmediaview
m14 application/x-msmediaview m15 audio/x-mod
m3u audio/x-mpegurl m3url audio/x-mpegurl
ma1 audio/ma1 ma2 audio/ma2
ma3 audio/ma3 ma5 audio/ma5
man application/x-troff-man map magnus-internal/imagemap
mbd application/mbedlet mct application/x-mascot
mdb application/x-msaccess mdz audio/x-mod
me application/x-troff-me mel text/x-vmel
mi application/x-mif mid audio/midi
midi audio/midi mif application/x-mif
mil image/x-cals mio audio/x-mio
mmf application/x-skt-lbs mng video/x-mng
mny application/x-msmoney moc application/x-mocha
mocha application/x-mocha mod audio/x-mod
mof application/x-yumekara mol chemical/x-mdl-molfile
mop chemical/x-mopac-input mov video/quicktime
movie video/x-sgi-movie mp2 audio/x-mpeg
mp3 audio/x-mpeg mp4 video/mp4
mpc application/vnd.mpohun.certificate mpe video/mpeg
mpeg video/mpeg mpg video/mpeg
mpg4 video/mp4 mpga audio/mpeg
mpn application/vnd.mophun.application mpp application/vnd.ms-project
mps application/x-mapserver mrl text/x-mrml
mrm application/x-mrm ms application/x-troff-ms
mts application/metastream mtx application/metastream
mtz application/metastream mzv application/metastream
nar application/zip nbmp image/nbmp
nc application/x-netcdf ndb x-lml/x-ndb
ndwn application/ndwn nif application/x-nif
nmz application/x-scream nokia-op-logo image/vnd.nok-oplogo-color
npx application/x-netfpx nsnd audio/nsnd
nva application/x-neva1 oda application/oda
oom application/x-AtlasMate-Plugin pac audio/x-pac
pae audio/x-epac pan application/x-pan
pbm image/x-portable-bitmap pcx image/x-pcx
pda image/x-pda pdb chemical/x-pdb
pdf application/pdf pfr application/font-tdpfr
pgm image/x-portable-graymap pict image/x-pict
pm application/x-perl pmd application/x-pmd
png image/png pnm image/x-portable-anymap
pnz image/png pot application/vnd.ms-powerpoint
ppm image/x-portable-pixmap pps application/vnd.ms-powerpoint
ppt application/vnd.ms-powerpoint pqf application/x-cprplayer
pqi application/cprplayer prc application/x-prc
proxy application/x-ns-proxy-autoconfig ps application/postscript
ptlk application/listenup pub application/x-mspublisher
pvx video/x-pv-pvx qcp audio/vnd.qcelp
qt video/quicktime qti image/x-quicktime
qtif image/x-quicktime r3t text/vnd.rn-realtext3d
ra audio/x-pn-realaudio ram audio/x-pn-realaudio
rar application/x-rar-compressed ras image/x-cmu-raster
rdf application/rdf+xml rf image/vnd.rn-realflash
rgb image/x-rgb rlf application/x-richlink
rm audio/x-pn-realaudio rmf audio/x-rmf
rmm audio/x-pn-realaudio rmvb audio/x-pn-realaudio
rnx application/vnd.rn-realplayer roff application/x-troff
rp image/vnd.rn-realpix rpm audio/x-pn-realaudio-plugin
rt text/vnd.rn-realtext rte x-lml/x-gps
rtf application/rtf rtg application/metastream
rtx text/richtext rv video/vnd.rn-realvideo
rwc application/x-rogerwilco s3m audio/x-mod
s3z audio/x-mod sca application/x-supercard
scd application/x-msschedule sdf application/e-score
sea application/x-stuffit sgm text/x-sgml
sgml text/x-sgml sh application/x-sh
shar application/x-shar shtml magnus-internal/parsed-html
shw application/presentations si6 image/si6
si7 image/vnd.stiwap.sis si9 image/vnd.lgtwap.sis
sis application/vnd.symbian.install sit application/x-stuffit
skd application/x-Koan skm application/x-Koan
skp application/x-Koan skt application/x-Koan
slc application/x-salsa smd audio/x-smd
smi application/smil smil application/smil
smp application/studiom smz audio/x-smd
snd audio/basic spc text/x-speech
spl application/futuresplash spr application/x-sprite
sprite application/x-sprite spt application/x-spt
src application/x-wais-source stk application/hyperstudio
stm audio/x-mod sv4cpio application/x-sv4cpio
sv4crc application/x-sv4crc svf image/vnd
svg image/svg-xml svh image/svh
svr x-world/x-svr swf application/x-shockwave-flash
swfl application/x-shockwave-flash t application/x-troff
tad application/octet-stream talk text/x-speech
tar application/x-tar taz application/x-tar
tbp application/x-timbuktu tbt application/x-timbuktu
tcl application/x-tcl tex application/x-tex
texi application/x-texinfo texinfo application/x-texinfo
tgz application/x-tar thm application/vnd.eri.thm
tif image/tiff tiff image/tiff
tki application/x-tkined tkined application/x-tkined
toc application/toc toy image/toy
tr application/x-troff trk x-lml/x-gps
trm application/x-msterminal tsi audio/tsplayer
tsp application/dsptype tsv text/tab-separated-values
tsv text/tab-separated-values ttf application/octet-stream
ttz application/t-time txt text/plain
ult audio/x-mod ustar application/x-ustar
uu application/x-uuencode uue application/x-uuencode
vcd application/x-cdlink vcf text/x-vcard
vdo video/vdo vib audio/vib
viv video/vivo vivo video/vivo
vmd application/vocaltec-media-desc vmf application/vocaltec-media-file
vmi application/x-dreamcast-vms-info vms application/x-dreamcast-vms
vox audio/voxware vqe audio/x-twinvq-plugin
vqf audio/x-twinvq vql audio/x-twinvq
vre x-world/x-vream vrml x-world/x-vrml
vrt x-world/x-vrt vrw x-world/x-vream
vts workbook/formulaone wav audio/x-wav
wax audio/x-ms-wax wbmp image/vnd.wap.wbmp
web application/vnd.xara wi image/wavelet
wis application/x-InstallShield wm video/x-ms-wm
wma audio/x-ms-wma wmd application/x-ms-wmd
wmf application/x-msmetafile wml text/vnd.wap.wml
wmlc application/vnd.wap.wmlc wmls text/vnd.wap.wmlscript
wmlsc application/vnd.wap.wmlscriptc wmlscript text/vnd.wap.wmlscript
wmv audio/x-ms-wmv wmx video/x-ms-wmx
wmz application/x-ms-wmz wpng image/x-up-wpng
wpt x-lml/x-gps wri application/x-mswrite
wrl x-world/x-vrml wrz x-world/x-vrml
ws text/vnd.wap.wmlscript wsc application/vnd.wap.wmlscriptc
wv video/wavelet wvx video/x-ms-wvx
wxl application/x-wxl x-gzip application/x-gzip
xar application/vnd.xara xbm image/x-xbitmap
xdm application/x-xdma xdma application/x-xdma
xdw application/vnd.fujixerox.docuworks xht application/xhtml+xml
xhtm application/xhtml+xml xhtml application/xhtml+xml
xla application/vnd.ms-excel xlc application/vnd.ms-excel
xll application/x-excel xlm application/vnd.ms-excel
xls application/vnd.ms-excel xlt application/vnd.ms-excel
xlw application/vnd.ms-excel xm audio/x-mod
xml text/xml xmz audio/x-mod
xpi application/x-xpinstall xpm image/x-xpixmap
xsit text/xml xsl text/xml
xul text/xul xwd image/x-xwindowdump
xyz chemical/x-pdb yz1 application/x-yz1
z application/x-compress zac application/x-zaurus-zac
zip application/zip