利用AbstractRoutingDataSource实现动态数据源切换 转载自:http://dsbjoe.iteye.com/blog/1176779最近要为公司多个游戏做类似的统计功能,考虑到模块的复用性,决定做个动态数据源,根据不同的游戏参数切换不同的datasource。网上查了下,spring2.0以后增加了AbstractRoutingDataSource这个东西。下面是实现方法 首先看下AbstractRout
JNDI 是什么 转载自:http://blog.csdn.net/zhaosg198312/article/details/3979435JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI到底起什么作用?
验证码 Servlet 编写一个验证码Servlet:生成图像,将值存入JSP的session。package com.gpengtao.servlet;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOExcept
java 实现关机工具,托盘图标 以下是自己使用swing编写的windows关机工具,实现了托盘图标。package com.gpengtao;import java.awt.AWTException;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.MenuItem;import java.awt.Popu
进程只运行一个实例 守护进程往往需要设置使其只运行一个实例,这里展示文件锁的方式实现:1.使用fcntl()函数设置文件锁#include #include #include #include #include #include #include int main(){ int fd; int res; struct flock lock; fd = o
ioctl()函数获取本机IP、MAC #include int ioctl(int d, int request, ...);/* Socket configuration controls. */#define SIOCGIFADDR 0x8915 /* get PA address */#define SIOCSIFADDR 0x8916 /* set PA address */#define SIOCGI
线程与信号 总结:signal()设置对某种信号的处理方式,只能有一种处理方式,即设置进程、线程的信号handler,对进程、线程都有效。pthread_kill()可以向线程发送信号。pthread_sigmask()设置线程的阻塞信号集,但是仅仅对该线程有效。kill()向进程发送信号,由哪个线程处理该信号是未知的。可能发生的情况是,进程本身屏蔽了该信号,而某个线程没有屏蔽改信号,进而该线
linux守护进程 编写要点 守护进程(Daemon)是运行在后台的一种特殊进程,脱离于终端。它在执行过程中产生的信息也不会在终端上显示。守护进程周期性地执行某种任务或等待处理某些事件的发生。Linux的大多数服务器就是用守护进程实现的。编写要点:(最后有完整示例)1.屏蔽一些有关终端操作的信号。这是为了防止在守护进程还没有正常运行起来前,受到终端干扰退出或者挂起。代码:signal(SIGTTOU, SIG_IG
linux 睡眠函数——sleep(),usleep() #include unsigned int sleep(unsigned int seconds);//睡眠秒返回值:成功返回0,或者返回剩余的要睡眠的秒数(被signal中断后).int usleep(useconds_t usec);//睡眠微秒返回值:成功返回0,出错返回-1.useconds_t == unsigned int秒的进制:1秒 (s)= 1
linux进程状态 1.R: TASK_RUNNING,正在运行或者处于就绪状态很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态,这两种状态在linux下统一为 TASK_RUNNING状态。例子:ps -aux //会看到ps这个程序命令的运行状态是R,+一会再说2.S :TASK_INTERRUPTIBLE,可中断的睡眠状态进程因为
exit 和 _exit 函数声明:#include void exit(int status);void _Exit(int status);//等同于_exit #include void _exit(int status);eixt和_exit的比较:exit:1.退出程序;2.处理所有I/O缓冲区,然后关闭文件;3.调用atexit、on_exit注册的函数。
pthread_attr_init 线程属性 我们一般创建线程是这样 pthread_t tid;pthread_create(&tid, NULL, func, NULL);第二个参数是线程属性设置,一般设置为了NULL,但是可以通过系统API进一步设置第二个参数,细化创建的线程的属性。 大致步骤为:pthread_attr_t attr;pthread_attr_init(&attr);pthread_at
Windows下命令行编译程序 以我的机子为例,安装的是VC2010,目录是:D:\Program Files (x86)\Microsoft Visual Studio 10.0。cl.exe是VC控制 Microsoft C和C++编译器与链接器的32位工具,在目录 D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin 下面。cl就相当于linux的gc
这CSDN博客内容的格式怎么设置?求指导 我的代码粘上去之后各种看着不舒服,比如一个函数的参数很长,一行容不下,我换行后就是对不齐,tab键是不是显示不出来,看着乱乱的,可读性一下子不行了!所以请教CSDN的博客怎么排版啊?
Win32多线程编程 总结 DWORD = unsigned longHANDLE = void *LPVOID = void *WINAPI = __stdcall//线程函数的原型DWORD WINAPI ThreadFunc(LPVOID);//创建线程:HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttri
getc,getchar,getch,getche Windows平台下:#include int getc(FILE *_File); //从文件中读取一个字符,文件位置指示器后移一个int getchar(void); //从stdin读取一个字符,回显(就是屏幕上显示输入的字符),等到输入的回车才结束,只取输入的第一个字符#include int getch(void);
fork,vfork,system 1.fork()函数#includepid_t fork(void);创建一个子进程。正确返回:父进程中返回子进程的进程号;子进程中返回0;(返回两次,父进程和子进程中各返回一次)错误返回:-1;(父进程中返回)2.vfork()函数#includepid_t vfork(void);创建一个子进程,阻塞父进程。vfork创建新进程的主要目的在于用exec函数执
linux 信号signal 一.信号的分类:1.kill–l //列举所以信号2.不可忽略信号: SIGKILL,SIGSTOP。二.信号的发送:kill()、raise()、 sigqueue()、alarm()、setitimer()以及abort()1. kill#include #include int kill(pid_t pid, int signo);向某个进程发送信号,参数为进程id和信号的
数据库范式(1NF 2NF 3NF BCNF) 来自:http://jacki6.iteye.com/blog/774866数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入( insert )、删除( delete )和更新( update )操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。范式说明 1.1 第一范式(