CREATE TEMPORARY TABLESPACE ATS_TEMP TEMPFILE 'D:\Oracle11g\oradata\orcl\ATS_TEMP.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; CREATE TABLESPACE ATS_PACS DATAFILE 'D:\Oracle11g\oradata\orcl\xxxx.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING ONLINE BLOCKSIZE 8K EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT MANUAL; CREATE TABLESPACE ATS_AIGATE DATAFILE 'D:\oracle\product\10.2.0\db_1\oradata\orcl\xxxxx.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING ONLINE BLOCKSIZE 8K EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT MANUAL; CREATE USER AIGATE IDENTIFIED BY AIGATE DEFAULT TABLESPACE ATS_AIGATE TEMPORARY TABLESPACE ATS_TEMP PROFILE DEFAULT; GRANT DBA TO AIGATE WITH ADMIN OPTION;
SpringAOP的两种代理方式
SpringAOP有两种代理方式:JDK动态代理和CGLIB。
如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理(该目标类型实现的所有接口都将被代理)。
如果被代理的目标对象没有实现任何接口,则会使用CGLIB代理。
所以,当你将一个JDK动态代理的对象Cast为一个Class而不是Interface的时候,就会报ClassCastException
这时,就要强制使用CGLIB代理
<aop:config proxy-target-class="true"> ... </aop:config>
或在使用@AspectJ时强制使用CGLIB代理
<aop:aspectj-autoproxy proxy-target-class="true">
<aop:include name="bean1" />
<aop:include name="bean2" />
....
</aop:aspectj-autoproxy>
VC的链接顺序
CRT库在链接new, delete, DllMain这些符号的时候,使用的是弱外链接
MFC库同样也包含了new, delete, DllMain这几个符号,而MFC库必须在CRT库之前被链接才会成功。
如果link时出现了符号冲突,做下面的设置即可
project>properties>configuration properties>linker>input
在”Additional dependency”中依次增加 Nafxcwd.lib Libcmtd.lib
在add to “ignore specific library”中依次增加Nafxcwd.lib;Libcmtd.lib
存储单位
Kilobyte〈KB〉=1024 Bytes
Megabyte〈MB〉=1024 Kilobytes
Gigabyte〈GB〉=1024 Megabytes
Terabyte〈TB〉=1024 Gigabytes
Petabyte〈PB〉=1024 Terabytes
Exabyte〈EB〉 =1024 Petabyte,
Zettabyte〈ZB〉=1024 Exabyte
Yottabyte〈YB〉=1024 Zettabyte
1KB相当于一则短篇故事的文字内容;
1MB相当于阅读一则短篇小说的文字内容;
1GB相当于贝多芬第五章交响曲的乐谱内容;
1TB相当于一家大型医院中所有X光图片资讯量;
1PB相当于50%的全美学术研究图书馆藏书资讯内容;
5EB相当于至今全世界人类所讲过的话语;
1ZB如同全世界海滩的沙子总和;
1YB相当于7000位人类体内的微细胞总和;
CS访问网络资源
using System.Runtime.InteropServices;
public class WNetHelper
{
[DllImport("mpr.dll", EntryPoint = "WNetAddConnection2")]
private static extern uint WNetAddConnection2(NetResource lpNetResource, string lpPassword, string lpUsername, uint dwFlags);
[DllImport("Mpr.dll", EntryPoint = "WNetCancelConnection2")]
private static extern uint WNetCancelConnection2(string lpName, uint dwFlags, bool fForce);
[StructLayout(LayoutKind.Sequential)]
public class NetResource
{
public int dwScope;
public int dwType;
public int dwDisplayType;
public int dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
}
public static uint WNetAddConnection(string username, string password, string remoteName, string localName)
{
NetResource netResource = new NetResource();
netResource.dwScope = 2;
netResource.dwType = 1;
netResource.dwDisplayType = 3;
netResource.dwUsage = 1;
netResource.lpLocalName = localName;
netResource.lpRemoteName = remoteName.TrimEnd('\\');
uint result = WNetAddConnection2(netResource, password, username, 0);
return result;
}
public static uint WNetCancelConnection(string name, uint flags, bool force)
{
uint nret = WNetCancelConnection2(name, flags, force);
return nret;
}
}
VC服务程序调用远程资源
当VC服务程序调用远程资源时,经常返回路径不存在等问题
这是因为Windows中,服务程序以System用户登录,而不是桌面用户登录
这样就导致,虽然桌面程序已经映射网络资源,但System用户仍无法访问的问题
为了可以访问远程资源,可以调用API:WNetAddConnection2
BOOL AcessNetworkDrtive(CString szDevice,CString szDeviceName,CString szUsername,CString szPassword)
{
DWORD dwRetVal;
NETRESOURCE nr;
memset(&nr, 0, sizeof (NETRESOURCE));
nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = strDevice.GetBuffer(szDevice.GetLength());
nr.lpRemoteName = szDeviceName.GetBuffer(szDeviceName.GetLength());
nr.lpProvider = NULL;
dwRetVal = WNetAddConnection2(&nr, szUsername, szUsername, CONNECT_UPDATE_PROFILE);
if (dwRetVal != NO_ERROR)
{
CString cError;
cError.Format(TEXT("[ERROR]WNetAddConnection2 Failed: %u\n"), dwRetVal);
LogEvent(cError,TEXT("With remote name "),nr.lpRemoteName);
return dwRetVal;
}
return dwRetVal;
}
C#深度拷贝
如果类实现了序列化,那么先序列化再反序列化一下,
就得到了一个深度拷贝的对象啦
public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T) formatter.Deserialize(ms);
}
}
EclipseADT过期
今天升级adt后,居然告诉我adt过期了,我去,开源你还要过期啊:
Debug Certificate expired on 12-4-30 下午8:57 Unknown Android Packaging Problem
后面发现,删除下面这个文件就好了
%USER%/.android/debug.keystore
Nginx反向代理upstream跳转错误
前两天架设Nginx反向代理时,用ip hash的方法设置了几个upstream(backend1,backend2,backend3…)
发现有一个网站总是去查找
http://backend2/
最后域名解析失败。
可其他网站都是好的啊。
无奈用Firebug看了一下网页,http header中赫然写着一行
baseurl=http://backend2/
找出jsp文件,发现是MyEclipse生成模板是,会加这么几行
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<head>
<base href="<%=basePath%>"]
</head>
Java多线程同步的几种方式
1、原子变量
AtomicBoolean
AtomicInteger
AtomicLong
AtomicReference
AtomicStampedReference
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
2、Unsafe类
Unsafe.monitorEnter(this);
Unsafe.monitorExit(this);
3、synchronized关键字
同步静态方法
同步普通方法
同步代码块
4、锁
Object.wait()方法和Object.notify()方法:
5、ReentrantLock重入锁
Condition
6、ReadWriteLock读写锁
StampedLock
7、Semaphore信号量
8、BlockingQueue阻塞队列
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
LinkedBlockingDeque
SynchronousQueue
DelayQueue
9、CyclicBarrier
10、CountDownLatch
11、Phaser
12、Exchanger
13、ForkJoinPool
RecursiveTask
13、Future
CompletionService
CompletableFuture
FutureTask
14、Collections
Collections.synchronizedList
Collections.synchronizedSet
Collections.synchronizedMap
15、volatile变量
可以解决并发读的问题,无法单独解决并发写的问题