- 浏览: 50026 次
最新评论
文章列表
1. 创建一个存储过程
CREATE PROCEDURE T6125_Init()
2. 删除一个存储过程
DROP PROCEDURE IF EXISTS T6125_Init;
3.最基本的格式
BEGIN
END;
4. 声明的语句
DECLARE _error INT DEFAULT 0;
DECLARE _F01 INT DEFAULT 0;
5. 游标
DECLARE _t6125 CURSOR FOR SELECT xxx;
OPEN _t6125;
REPEAT
FETCH _t61 ...
List接口有两个实现,一个是ArrayList,另一个是LinkedList。从字面上就可以看出Array表示 的是数组,Link表示的是链表,区别一目了然,今天看看LinkedList的迭代器的实现。
节点定义:
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
...
在面试中,迭代器被问到了很多次,今天来总结一下。
从一个例子说起。
public static void main(String args[]){
List list=new ArrayList();
list.add(2);
list.add(5);
list.add(7);
Iterator Itr=list.iterator();
while(Itr.has ...
最近在看C3P0的原理,还是将C3P0的源码导入到Ecplise中debug看得清楚多了。下面记录我debug的经历。
1. 下载c3p0的jar和源码,这个百度吧。
2. 导入jar和源码到java工程中,导入后,会发现有些错误的,把junit的类去掉,有的提示没有实现一些方法,就加进去,还有的提示要删除多余的实现方法,就删除掉吧,这样下来,基本上不报错了。
3. debug的过程中,有些类没有源码的,到google上去搜,会有源码的,写一个对应的java类加进工程里去就行了。
1. 写一个连接池的简单的工具类
public class ConnectionPool {
pri ...
进入到新的一家公司后, 发现大家在mysql客户端上执行sql都不写commit,大家都习惯了这种写法,有一天来了另外一个DBA,环境变了,一早上update一个sql,大家发现怎么表被锁住了呢?
后天一发现,新的DBA,把autocommit给关掉了,查看的sql如下:
show variables like 'autocommit';
输出结果如下;
autocommit OFF
这样的后果有三种:
1. 如果是自己update一条语句后没有提交,再select同样的记录,那么会被锁住。
因为在同一个session里,如果update没有提交,再select同样 ...
微信在现在的生活中,扮演着举足轻重的角色,现在怎么东西都在微信上运转得风生水起,如微信支付,微信购物,微信红包等等。那么微信开发的原理又是怎样的呢?
这里要区分两个概念:微信服务器和应用服务器
微信服务器是腾讯的服务器,它做的工作是转发的作用。
应用服务器的使用是接收微信服务器的请求,处理逻辑,向微信服务器响应请求。
所以整个示意图如下:
用户 <---> 微信服务器 <---> 应用服务器
用户直接打交道的是微信服务器,处理逻辑的是应用服务器。
应用服务器上运行的服务的程序语言有多种,如何来做到通用呢?或者说用一种什么样的通讯格式来使所有的开发都支持呢?
...
1. BigDecimal 保留两位小数
今天在项目中遇到这样的一个需求,计算的结果保留两位小数点,不要求进行四舍五入。
直接上代码了,没有什么好说的。
BigDecimal decimal = new BigDecimal("0.002");
// 保留两位小数
String str = new DecimalFormat("0.00").format(decimal);
decimal = new BigDecimal(str);
if (decimal.compareTo(BigDecimal.ZERO) > 0) {
S ...
之前在博客中有一篇文章讨论过异常中return值的情况,有兴趣可以参见http://gaofulai1988.iteye.com/admin/blogs/2259371,当时的例子比较简单,今天来了特殊点的例子。
在上例子之前,还是回顾以下之前的几个要点:
1. throw 后面的代码是不会执行的。
2. 不管是否有异常,都会执行finally。
3. 不管有多少个return, 只会执行finally里的return。
public static int doexception(){
int x=0;
try{
throw new Exception(&q ...
对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十分熟悉的,尤其是在小型公司的开发人员来讲,大部分的工作也就是这些了。但是对于一个大型系统而言,简单的CRUD是无法存活下来的,因为它的数据量极大,不是简单的几千条,几万条,有时基本在几十万条,甚至几百万条数据量。
之前我们的业务也没有太多,简单的生成订单就是普通的insert操作,有一次发现,操作一个2w条的订单数量,前后花费的时间要15分钟,这个让我有点失望。2w的数据量真的不太大,为什么这么慢呢?当然系统中还有其它的操作存在,不至于这么点的数据量让mysql撑不住了。
原理其实也很简单,每insert一条记录,需要记录下log ...
今天想把在数据库所有的操作都记录下来,就在网上查了一些方法,一般的说法是在my.ini中增加一名 log = "D:\log.sql", 关闭服务后,重新启动就出现了问题。
后来,运维方面的人来帮我看了下,发现网上的一些说法根本是错误的!
下面介绍正确的做法。
1. 进入到mysql的命令行界面;
2. 执行下面这个命令:
show variables like 'gener%' ;
它会输出下面的结果:
+------------------+---------+
| Variable_name | Value |
+--- ...
今天来分析下java 中Exception的处理方式,我们都知道,它执行的顺序如下:
1. try:检查是否有异常发生;
2. 如果有,则由catch来捕获;
3. 不管是否有异常发生,都会进入到finally里执行。
先记住下面的结论:
1. throw 后面的代码是不会执行的。
2. 不管是否有异常,都会执行finally。
3. 不管有多少个return, 只会执行finally里的return。
例1.
public class Demo {
public static int doexception(){
try{
return 1;
}catc ...
这篇文章主要教大家怎样写定时器,在Mysql中,有几点是需要注意的。
1. 确定是打开了定时器
用这个sql可以查询,我自己在本地上第一次查询是OFF
show VARIABLES LIKE 'event%';
如果是OFF,则用下面的命令进行设置
SET GLOBAL event_scheduler = 1;
2. 定时器是需要调用存储过程的
drop table if exists test;
create table test
(
id int(11) not null auto_increment primary key,
time dat ...
今天有同事问了一下mysql的触发器的用法,就写了一个简单的例子供参考。
需求:
当在一张表上进行插入操作后,需要在另外一张表上做备份操作。
步骤1. 创建两张表
DROP TABLE IF EXISTS FIRST;
CREATE TABLE FIRST(id INT);
DROP TABLE IF EXISTS SECOND;
CREATE TABLE SECOND(
id VARCHAR(11),
time TIMESTAMP
);
步骤2. 创建触发器
CREATE TRIGGER t_afterinsert_on_First AFTER ...
我本身不是学密码出身的,但在工作中经常要使用加密与解密的东东,因为从事金融领域,没有办法,对安全性比较高,所以必需要接触到加密与解密的知识。在这一篇中,不具体讨论任何加密和解密的实现代码,只是从现实的角度去理解加密和解密。
数据的安全性体现在以下几点上:
1.数据加密;
2.数据的完整性;
3.数据的信任性。
对于加密而言,就是明文加密成密文,你拿去了也没有用。现在有两种加密方式:
1.对称加密。加密与解密用同一套密钥,如果这个密钥被人获取了,那你就完蛋了。
2.非对称加密。加密与解密使用非同一套密钥,这样对比对称加密而言,安全性就高多了。但是非对称加密的处理速度要低于对称加密的处理速度。
...
在分析java线程池源码之前,先对线程池作一个简单的介绍和铺垫。
在开发中,经常有两个与"池"相关的东西出现在我们的视野中:一个是连接池;另一个是线程池。为什么要使用它们呢?我想原因有两个:
1)不管创建一个连接池还是线程池,它们的性能开销还是十分大的;
2)连接的数量有一个边界,不可能来一个就创建一个,启到以有限的资源去处理未知的请求。
总言之,"池"是为了提升系统的性能而设计出来的。
那么在分析线程池之前,我想有几个概念需要理解清楚了。
1.线程任务
这个就是你submit或者execut的具体的线程任务了,即就是你自己定义处理具体逻辑的 ...