背景介绍
Struts2的使用范围及其广泛,国内外均有大量厂商使用该框架。
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
背景介绍
Struts2的使用范围及其广泛,国内外均有大量厂商使用该框架。
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
Ubuntu-make可以非常方便的帮助开发者安装开发工具,只需要一条命令即可。但是由于Eclipse官网的调整,导致默认通过apt-get安装的Ubuntu-make无法正确的从Eclipse官网下载安装包,一直提示:
|
1 |
umake eclipse Download page changed its syntax or is not parsable |
因此只能是卸载默认的安装包,然后从github上手工下载安装最新的版本来解决这个问题,具体操作如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ sudo apt-get remove ubuntu-make $ sudo apt-get autoremve $ sudo apt-get update $ sudo apt-get install git $ sudo apt-get install python3-setuptools $ sudo apt-get install python3-yaml $ sudo apt-get install python3-argcomplete $ sudo apt-get install python3-progressbar $ sudo apt-get install python3-gnupg $ git clone https://github.com/ubuntu/ubuntu-make.git $ cd ubuntu-make/ $ python3 setup.py build $ sudo python3 setup.py install $ /usr/local/bin/umake -v ide eclipse-cpp |
Can't download eclipse anymore, as download link has changed
截止2017-03-05的最新版本代码,后续代码编译可能有所不同。为了实验目的,本次不开启GPU的支持,仅仅使用CPU。
虽然Google开源了tensorflow,但是受限于天朝的网络问题,在没有梯子的情况下,是基本上没办法编译成功的,因此我们尝试使用老牌的Caffe来进行实验,看看效果。
默认大家已经成功安装了HomeBrew,没有安装的同学参考 让Mac也能拥有apt-get类似的功能——Brew。默认大家已经安装好Xcode的最新版本,并且安装了命令行编译工具。
|
1 |
$ brew install git |
|
1 |
$ git clone https://github.com/BVLC/caffe.git |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ brew install protobuf $ brew install boost $ brew install gflags $ brew install glog $ brew install homebrew/science/opencv $ brew install hdf5 $ brew install leveldb $ brew install lmdb |
|
1 2 3 |
$ cd caffe $ cp Makefile.config.example Makefile.config |
修改其中的编译选项:
|
1 |
$ vim Makefile.config |
然后修改里面的内容,找到如下内容:
|
1 2 |
# CPU-only switch (uncomment to build without GPU support). # CPU_ONLY := 1 |
去掉注释,修改后如下:
|
1 2 |
# CPU-only switch (uncomment to build without GPU support). CPU_ONLY := 1 |
完成设置后, 开始编译
|
1 2 3 4 5 |
$ make all -j4 $ make test $ make runtest |
编译好的执行程序在build/tools/目录下。
在IPFire下一直提示更新失败,于是登录SSH,测试一下网络,发现无法解析域名
|
1 2 |
[root@ipfire ~]# ping www.baidu.com ping: www.baidu.com: Temporary failure in name resolution |
解决方法就是,编辑域名配置文件
|
1 |
$ vim /etc/resolv.conf |
添加一个域名解析服务器即可
|
1 |
nameserver 114.114.114.114 |
serialVersionUID的作用
详见这篇文档 http://lenjey.iteye.com/blog/513736
简单来说就是,在序列化对象时,编译器会自动给对象生成一个serialVersionUID,之后任意改动这个对象都会与编译器生成的UID不匹配。如果我们显示指定了serialVersionUID,那么对象序列化之后,也可以修改这个对象。
serialVersionUID生成
我们可以任意指定serialVersionUID,如
|
1 |
private static final long serialVersionUID = 1L; |
但最好还是使用让系统按照摘要算法生成一个指纹数字。eclipse是可以自动生成的,IDEA需要简单配置一下。
IntelliJ IDEA->Preferences->Inspections界面下
Serializable class without serialVersionUID后打钩,注意上面的Profile选为Default。
(继承了Serializable的类没有serialVersionUID就会Warning)

之后光标在继承了Serializable的类名上按 ALT+ENTER键,就会出现 Add serialVersionUID field 选项,生成的UID如下
|
1 |
private static final long serialVersionUID = 6496849704004740865L; |
在配置nginx做实验时配置错了,导致访问不了虚拟主机。一狠心把nginx的配置文件目录(/etc/nginx)都删除了,而且我没有备份这些配置文件,因此想重装nginx。
本来以为直接使用如下apt-get指令
|
1 2 |
$ sudo apt-get --purge remove nginx $ sudo apt-get install nginx |
就可以搞定,但实际上并没有有自动产生nginx的配置文件,连/etc/nginx目录都没产生。
于是autoremove
|
1 2 3 |
$ sudo apt-get --purge remove nginx $ sudo apt-get autoremove $ sudo apt-get install nginx |
提示
|
1 |
awk: cannot open /etc/nginx/nginx.conf (No such file or directory) |
虽然产生了/etc/nginx目录了,但只有部分配置文件
|
1 |
conf.d sites-available sites-enabled |
于是
|
1 2 3 |
$ sudo apt-get --purge remove nginx $ sudo apt-get autoremove $ dpkg --get-selections | grep nginx |
罗列出与nginx相关的软件
|
1 |
nginx-common |
然后卸载并重新安装
|
1 2 |
$ sudo apt-get --purge remove nginx-common $ sudo apt-get install nginx |
nginx配置失败,卸载后重装出问题 awk: cannot open /etc/nginx/nginx.conf (No such file or directory),nginxawk
在Windows 7中开程序的人来说,也许会发现DebugView在Win7中无法查看OutputDebugString所抛出的消息,
这对像Timer或者是连续发生的(Event)事件(比如:OnPaint或Mouse移动等Event)进行DEBUG非常不方
便,也许这是微软为了安全原因考虑,所以把此功能给关闭。
※如果要打开此功能,请依照如下步骤进行:
1.打开注册表(在Run -> regedit)。
2.打开这个键:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]。
3.建立[Debug Print Filter]这个新键。
4.新增加一个“DEFAULT”的DWORD值,将其内容设置0x0f,如下图所示:
5.重启OS后生效。

这样以后你就可以使用OutputDebugString来输出信息了。
图方便的话,直接下载注册表文件 OutputDebugString 下载并解压缩后,双击导入即可。
今天,尝试从 https://git-for-windows.github.io/ 更新msysgit到最新版本的时候,发现下载链接 https://github.com/git-for-windows/git/releases/download/v2.12.0.windows.1/Git-2.12.0-64-bit.exe被服务器重新定向到了亚马逊的服务器上去了,最后的下载地址是github-cloud.s3.amazonaws.com的某台机器上。但是国内访问亚马逊,基本上没办法下载成功的,很可能是被墙了。
搜索了一下,发现可以通过设置host,强制把访问节点从美国定向到香港的办法来解决这个问题。Windows下,编辑C:\Windows\System32\drivers\etc\hosts然后增加如下解析即可。
|
1 2 |
219.76.4.4 s3.amazonaws.com 219.76.4.4 github-cloud.s3.amazonaws.com |
对于Linux以及macOS,则修改/etc/hosts。
github release 的github-cloud.s3.amazonaws.com实在太慢,下载老在10几k徘徊
今天(2017.02.27)TortoiseGit 2.4.0发布了一个Hotfix来修正几个BUG,网站上的具体的版本信息如下:
2017-02-25 | Released TortoiseGit Hotfix 2.4.0.2 (fixes issue #2909 (Commit dialog unclosable) and issue #2911 (Add returns "invalid path") and contains PuTTY 0.68)
但是这次的修复引入了更大的BUG,导致无法提交代码,不管是拉取还是提交代码,都会提示"fatal: protocol error: bad line length character: Welc",如下图:
修复这个问题最简单的方法就是还原到TortoiseGit 2.4.0版本。
这个BUG是由TortoiseGitPlink.exe里面的代码改动引起的,只要还原这个文件到0.67版本(来自TortoiseGit 2.4.0),也可以解决这个问题。
目前已经提交了BUG给开发人员了。对于的BUG链接地址如下:
TortoiseGit 2.4.0.2 bug ( TortoiseGit 2.4.0 works but TortoiseGit 2.4.0.2 can not pull and push) "fatal: protocol error: bad line length character: Welc"
希望能尽快修复这个问题吧!
到目前为止(2017.05.09)这个问题依旧没有修复的可能,因此建议大家可以改用一下SourceTree-2.0.20.1,可以点击这里下载目前最新的版本。
~/.bashrc里面的一些设置,比如alias命令的设置“不起作用”,新开一个终端都要source一下才起作用。
unix下当shell是login shell,.bash_profile才会加载,而bashrc正好相反。
真正的区别是在linux下,当用户登录到一个图形界面,然后打开一个终端terminal,那些shell是non-login shell。
然而,在OS X登录的时候,并没有运行着一个shell,所以,在运行Terminal.app的时候,其实那是一个login shell。
后来新建了.bash_profile加载一次.bashrc.
|
1 2 3 |
if [ "${BASH-no}" != "no" ]; then [ -r ~/.bashrc ] && . ~/.bashrc fi |