自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 MySQL性能优化之索引优化

什么是优化?合理安排资源、调整系统参数使MySQL运行更快、更节省资源。优化是多方面的,包括查询优化、更新优化、服务器优化等很多方面。没有特定方式特定的方法,总是要具体场景,具体分析,但是我们要掌握基本的优化手段。原则:减少系统瓶颈,减少资源占用,增加系统的反应速度。数据库性能参数我们可以通过SHOW STATUS语句查看MySQL数据库的性能参数 SHOW STATUS LIKE ‘v

2017-08-30 14:30:59 466

原创 观察者模式

案例宝宝睡觉, 爸爸在一旁观察, 宝宝醒来后, 爸爸给宝宝喂食代码(第一版)package design.observer;/** * @ClassName: Child * @Description:小孩类 */public class Child implements Runnable { // 是否醒来 默认是睡着的 private Boolean wakeup

2017-08-29 14:27:52 298

原创 手写SpringMVC框架

springmvc在项目中的作用处理请求,把请求分发到不同的类和方法中ioc 依赖注入,创建实例。配置的方式和annotation的方式,今天实现annotation的方式aop 动态代理,事物控制,让程序员只专注于写自己的业务代码步骤定义包结构com.annotationcom.controllercom.servicecom.service.implcom.s

2017-08-28 16:38:07 405

原创 redis主从

关系型数据库和NOSQL的比较关系型数据库的优势保持数据的一致性(事务处理)可以进行Join等复杂查询其中能够保持数据的一致性是关系型数据库的最大优势关系型数据库的不足大量数据的写入处理需要等待为有数据更新的表做索引或表结构(schema)变更, 共享锁–读锁,排他锁–写锁需要等待字段不固定时应用对简单查询需要快速返回结果的处理当数据量过大时候需要进行数据库的水平切分: 数据库的分

2017-08-28 11:06:39 207

原创 SpringAOP神秘面纱之动态代理

1、写代码的原则 开闭原则 开闭原则就是说对扩展开放,对修改关闭。 2、静态代理 以找对象为例子讲解静态代理 张三写代码、玩游戏没空找对象 张三他爹着急,年龄大了,想抱孙子了。张三他爹拿着张三的照片(持有张三的引用)给张三满世界找对象 张三他爹就是张三的一个代理 1、关键

2017-08-25 13:37:57 239

原创 MySQL学习随记---触发器

概念(1) 触发器是一个特殊的存储过程, 他是MySQL在insert, update, delete 的时候自动执行的代码块(2) 触发器必须定义在特定的表上(3)自动执行, 不能直接调用作用: 监视某种情况并触发某种操作触发器的思路:监视 it_order 表, 如果 it_order 里面有增删改查的操作, 则自动触发 it_goods 里面增删改的操

2017-08-24 18:31:27 308

原创 阻塞队列ArrayBlockingQueue

队列包含固定长度队列和不固定长度队列ArrayBlockingQueue固定长度的阻塞队列 只有put()和take()方法才具有阻塞功能

2017-08-23 15:22:29 186

原创 Exchanger

用于实现两个人(线程)之间的数据交换, 每个人(线程)在完成一定的事务后想与对方交换数据, 第一个先拿出数据的人(线程)将一直等待第二个人(线程)拿着数据到来时, 才能交换数据, 例如毒品交易—哈哈

2017-08-23 14:51:41 156

原创 CyclicBarrier和CountDownLatch

CyclicBarrierCyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。CyclicBarrier就象它名字的意思一样,可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍。CyclicBarrier初始时还可带一个Runnable的参数,此Run

2017-08-22 18:59:45 166

原创 Semaphore实现信号灯

Semaphore可以维护当前访问自身的线程个数, 并提供了同步机制. 使用Semaphore可以控制同时访问资源的线程个数, 例如实现一个文件允许的并发访问数Semaphore实现的功能就类似厕所有5个坑, 假如有设个人要上厕所, 那么同时能有多少个人去上厕所呢? 同时只能有5个人能够占用, 当5个人中的任何一个人离开后, 其中在等待的另外五个人中又有一个可以占用了.  另外等待的5个人中可

2017-08-22 17:01:57 237

原创 java性能优化

性能优化1. 减少gc的压力, gc 线程是一个优先级比较低的线程, 他是一个守护线程(服务于主线程), 回收我们的堆内存2. 尽量避免我们的new操作总结避免对象创建和GC 对象使用完成后进行置空1、String, StringBuffer, StringBuilderStringString a = new String("a");String a1 = "

2017-08-19 14:23:00 187

原创 HashMap那些事

1. 什么是hash它是一个任意长度的二进制值通过一个映射关系(哈希算法---相当于大学里面的学号的一个映射规则)转换成一个固定长度的二进制值(哈希值---相当于我们大学里面的学号)任意长度的二进制值 和 固定长度的二进制值 是一个一一对应关系固定长度的二进制值就相当于一个任意长度的二进制值的一个摘要固定长度的二进制值 相当于一个关键字 key真正有效的数据 就是这个学

2017-08-19 11:24:09 185

转载 通过注解实现通用导出Excel

http://blog.csdn.net/u013132051/article/details/64921585

2017-08-15 13:51:03 440

转载 30 个java编程技巧(最佳实践的初学者)

http://www.envicloud.cn/pages/news/235.html#4

2017-08-06 23:02:04 470

原创 Lock&Condition实现线程同步通信

Lock比传统线程模型中的synchronized方式更加面向对象, 与生活中的锁类似, 锁本身应该是一个对象. 两个线程执行的代码片段要实现同步互斥的效果, 谈么必须用一个Lock对象.锁是在代表要操作的资源的类的内部方法中, 而不是线程代码中!ReentrantLock(重入锁)在需要进行同步的代码部分加上锁,但不要忘记最后一定要释放锁,不然会造成锁永远无法释放,其它线程永远进

2017-08-04 18:41:37 284

原创 Callable和Future的应用

Future取得的结果类型和Callable返回的结果类型必须一致, 这是通过泛型来实现的Callable要采用ExecutorService的submit方法提交, 返回的future对象可以取消任务代码package mutithread.threadpool;import java.util.concurrent.Callable;import java.util.co

2017-08-04 17:38:28 233

原创 线程池

线程池的概念与Executors类的应用创建固定大小的线程池创建缓存线程池创建单一线程池(线程死掉会重新启动)代码package mutithread.threadpool;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class T

2017-08-04 16:45:36 261 1

原创 多个线程访问共享对象和数据的方式

如果每个线程执行的代码相同, 可以使用同一个Runnable对象, 这个Runnable对象中有那个共享数据, 例如:卖票系统(只考虑卖出)如果每个线程执行的代码不同, 这时候需要用不同的Runnable对象, 有如下两种方式来实现这些Runnable对象之间的共享数据:(1) 将共享数据封装在另外一个对象中, 然后这个对象逐一传递给各个Runnable对象. 每个线程对共享数据的操作方法

2017-08-04 14:07:08 258

原创 ThreadLocal实现线程范围的共享变量

线程范围内共享数据的示意图ThreadLocal的作用和目的: 用于实现线程内的数据共享, 即对于相同的程序代码, 多个模块在同一线程中运行时要共享一份数据, 而在另外线程中运行时又共享另外一份数据每个线程调用全局ThreadLocal对象的set方法, 就相当于往其内部的map中增加一条记录, key分别是各自的线程, value是各自的set方法传递进去的值. 在线程结

2017-08-04 09:56:48 279

原创 线程的互斥与同步通信

synchronized的使用和wait与notify实现线程间的通信案例: 子线程循环10次, 主线程循环5次, 两者交替运行50次代码package thread;public class TraditionalThreadCommunication { public static void main(String[] args) { final Bussine

2017-08-03 18:22:38 219

原创 传统线程技术和定时器的应用

创建线程的两种传统方式代码package thread;public class TraditionalThread { public static void main(String[] args) { // 第一种 继承 Thread类 Thread thread = new Thread() { @Override public void run() {

2017-08-03 15:56:28 299

原创 MySQL学习随记---存储函数

概念自定义函数他跟js中的函数几乎一样: 需要先定义, 然后调用(使用). 只是规定这个函数必须要返回数据----要有返回值(1)定义语法create function 函数名(参数) returns 返回值类型begin    //代码end特别注意第三点!!!!!(2)调用跟系统函数调用一样: 任何需要数据的位置, 都可以调用该函

2017-08-03 11:38:30 254

原创 MySQL学习随记---存储过程

存储过程定义概念类似于函数, 就是把一段代码封装起来, 当要执行这一段代码的时候, 可以通过调用该存储过程来实现, 在封装的语句体里面, 可以使用 if/case, case, while 等控制结构. 可以进行sql编程.查看现有的存储过程: show procedure status存储过程的优点创建存储过程create procedur

2017-08-02 18:51:58 321

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除