SSH命令的几种典型用法

2014年11月17日 没有评论

ssh命令是一把军刀,能干很多事,举几个比较典型的例子。
1、做ssh穿墙的firewall,192.168.1.10是firewall的当前ip,xx.xx.xx.xx是远端用来当跳板的ip

ssh -fNg -D192.168.1.10:22022 xx.xx.xx.xx

2、NAT:把当前server上的22022端口映射到xx.xx.xx.xx的22上。

ssh -fNg -L 22022:127.0.0.1:22 xx.xx.xx.xx

3、Socket5代理:用当前Server上的8080端口当代理,通过xx.xx.xx.xx上网。

ssh xx.xx.xx.xx -D192.168.1.10:8080 -g -f sleep 30d

更多内容…

分类: 工作 标签: , , ,

PostgreSQL生成唯一序列号

2014年11月17日 没有评论

项目中经常会用到数字的唯一标识生成,比较常见的做法是用PostgreSQL的SEQUENCE来生成。
简单说一下步骤:
基础:
PostgreSQL自带的命令行工具是psql,用法是psql -Uuserxxx -Wpasswordxxx dbname
如果未配置到PATH环境变更中,默认可执行文件位置/usr/local/pgsql/bin/psql
退出命令行使用\q

1、创建一个从123456开始名为xxx_id_seq序列

CREATE SEQUENCE xxx_id_seq START 123456;

2、使用方法

SELECT nextval('xxx_id_seq');

3、改当前序列号为从10000001开始

SELECT setval('xxx_id_seq',10000001);

更多内容…

分类: 工作 标签: , , ,

SSLv3的POODLE漏洞处理

2014年10月23日 没有评论

漏洞描述:

SSLv3协议中,黑客可以通过某种手段,获取到一定长度的明文信息,Google的员工发现并命名此漏洞为POODLE

漏洞检查:

# openssl s_client -connect *.*.*.*:443 -ssl3

把*.*.*.*换成真实的IP,如果得到类似于如下信息,则证明不支持SSLv3,无此问题。

[root@*** ~]# openssl s_client -connect *.*.*.*:443 -ssl3
CONNECTED(00000003)
139973583345480:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1256:SSL alert number 40
139973583345480:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1414048994
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

更多内容…

分类: 工作 标签: , ,

Maven打包Spring项目成单独文件

2014年10月23日 没有评论

Maven打包项目成单独文件,一般用maven-assembly-plugin插件,一般配置如下:

			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>

				<configuration>
					<appendAssemblyId>false</appendAssemblyId>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<descriptors>
						<descriptor>src/main/assemble/package.xml</descriptor>
					</descriptors>
					<archive>
						<manifest>
							<mainClass>*.*.*.Main</mainClass>
						</manifest>
					</archive>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>assembly</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

碰到Spring项目,就容易出问题:

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace

更多内容…

提交读和可重复读两种隔离级别

2014年9月29日 没有评论

隔离级别中,很容易弄混的就是这两种了:read committed(提交读)和repeatable read(可重复读)。
两者的概述:
1、read commited:事务执行中,别人committed的数据,它能立即看到。增删改都可见。
2、repeatable read:事务执行中,别人也在事务执行中的增删它也能看到,别人的的修改它看不到。

更多内容…

AbstractOwnableSynchronizer的疑问

2014年9月26日 没有评论

ReentrantLock内部用到了AbstractQueuedSynchronizer(也就是AQS),而AbstractQueuedSynchronizer是AbstractOwnableSynchronizer(先简称AOS吧)的子类。
翻AOS的源码,发现其本身就像是个ThreadHolder,表示当前被哪个线程占用。

疑问是这个线程的定义有问题

    /**
     * The current owner of exclusive mode synchronization.
     */
    private transient Thread exclusiveOwnerThread;

AQS专为并发设计的,所以第一反应就是线程安全,觉得这个Thread的定义仅有transient(不序列化),而没有volatile。
比起AQS里清一色的volatile,AOS里的这个Thread的定义没有volatile的原因,我一直没弄明白。