`
文章列表
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的具体的线程任务了,即就是你自己定义处理具体逻辑的 ...
Global site tag (gtag.js) - Google Analytics