- 博客(87)
- 资源 (2)
- 问答 (3)
- 收藏
- 关注
转载 mysql explain执行计划详解
1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。 2)、select_type列常见的有:A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位...
2018-05-23 23:47:59
280
原创 JVM的指令重排
JVM在执行代码的时候,在不影响最终结果的基础上,可能性的会对指令进行重排 。例如 : a = 2 ,b = a+3, c=5 . 重排后,可能是 :a = 2 , c=5,b = a+3。当然上面这个例子看不出什么影响 。再来看看 new Object()的例子 。在JVM中,new Object()并不属于原子操作,对于 Object a = new Object(),会分为3条指令1、在内存...
2018-05-20 12:17:06
672
原创 JVM内存中的主内存与工作内存即CAS
每个线程有自己的工作空间,称之为栈,而每个栈元素(栈帧)对应一个方法,这个栈帧里边又会分为局部变量、计数器等等区域。每次new的时候,对象会分配在堆,也就是主内存,线程是通过拷贝副本的方式把变量从主内存到工作内存。至于volatile,他是为了解决可见性的问题,刚才说了线程会拷贝副本,那么假如多个线程同时操作一个对象,他们把副本值更新回主内存的时候就会有线程安全问题,而用volatile修饰的变量...
2018-05-20 11:44:58
2032
3
转载 Linux查看对应的线程进程CPU问题
转摘地址:https://www.cnblogs.com/ghost240/p/3863774.html多线程程序 怎样查看每个线程的cpu占用可以用下面的命令将 cpu 占用率高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,...
2018-05-19 11:30:45
2644
原创 职责链(Chain of responsibility)模式
职责链模式: 书上说 : 职责链模式的目的是通过给予多个对象处理请求的机会,以解除请求的发送者与接收者之间的耦合 ; 而我说 :职责链模式的目的是体现请求的处理这之间的递进关系。例子 : 公司来放一个客人 , 接待者则是前台 。 如果只是问路等 ,前台即可解决 ;如果是谈生意,则会交给一个业务员 ; 如果谈的是大生意,业务员处理不了,
2017-11-29 11:21:06
246
原创 调停者模式
调停者模式 : 调停者模式的目的就是通过定义一个对象,封装一组对象的交互,从而降低对象间的耦合度,避免了对象间的显示交互,对于对象间的关系拓展有很好的作用。例子 : 需求 :创建一个广告,广告中可以嵌入多个视频,多个图片 。 模型设计 : 广告表 、图片表、视频表 、广告素材(图片、视频)关系表 (或者分为2个表) 映射java对
2017-11-29 10:54:04
330
转载 spring AOP切面表达式详解
在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分: 1、execution(): 表达式主体。
2017-10-09 14:09:57
27430
3
转载 大数据平台搭建(hadoop+spark)
大数据平台搭建(hadoop+spark)标签:大数据 发布于 2017-08-15 11:51:13一.基本信息1. 服务器基本信息主机名ip地址安装服务spark-master172.16.200.81jdk、hadoop、spark、scalaspark-slave01172.16.200.82jdk、hadoo
2017-08-16 10:35:04
432
转载 sybase 主键自动增长
CREATE TABLE peng_user( userId int identity, userName varchar(10) NULL, password varchar(10) NULL, comment varchar(10) NULL, constraint pk_peng_user PRIMARY KEY (userId))with iden
2017-07-14 09:29:20
516
原创 代理模式
代理模式 代理模式 , 即在某些时刻,某些场景下 ,原来的对象不足以应付时候,使用一个代理类来代替该对象 应用场景a、页面图片懒加载 ,当图片还未完全加载出来的时候 ,用一张临时小图片代替b、程序加载缓冲 ,用一个GIF代替位置c、动态代理实现切面编程JDK动态代理实现 示例 : 具体原理分析请看上文 public static interfa
2017-07-12 14:38:44
295
转载 CGLIB介绍与原理
原文地址 : http://blog.youkuaiyun.com/zghwaicsdn/article/details/50957474CGLIB介绍与原理(部分节选自网络)一、什么是CGLIB?CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者
2017-07-12 10:57:32
843
转载 JDK 动态代理实现原理
原文地址 : http://rejoy.iteye.com/blog/1627405请大家去看原文地址 ,原文地址编码格式比这里要好之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态
2017-07-12 09:29:27
309
原创 Log4j 4种日志文件生成方式
参考了某位兄弟的代码, 但是使用了之后,回过头来写博客忘记原地址,勿怪。Log4j 4种日志文件生成方式方式1 : 按天生成日志 org.apache.log4j.DailyRollingFileAppender (log4j.jar 自带)方式2 : 按大小生成日志 org.apache.log4j.RollingFileAppender (log4j.jar 自带)
2017-06-30 10:24:27
2033
原创 观察者(Observer)模式
观察者(Observer)模式当某被观察对象发生变化时候,观察它的对象都能及时做出相应的反应应用场景:定义一对多的依赖关系,当其中的一发生变化的时候,其中的多能够及时做出相应的反应场景A:如上一篇讲的,客户端的多个事件都关注着网络连接状态,当网络连接状态OK的时候,多个事件都能够及时继续执行场景B:生产者与消费者情景 。多个消费者都要竞争一个产品。但是目前产品缺货,当产
2017-06-20 16:36:24
370
转载 40个Java多线程问题总结
前言个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可
2017-05-04 16:33:21
241
转载 Mysql PARTITION 数据表分区技术
在这一章节里, 我们来了解下 MySQL 中的分区技术 (RANGE, LIST, HASH) Mysql 的分区技术与水平分表有点类似, 但是它是在逻辑层进行的水平分表, 对于应用而言它还是一张表, 换句话说: 分区不是实际真正的对一张表进行拆分,分区之后表还是一个表,它是把存储文件进行拆分。 在 Mysql 5.1(后) 有了几种分区类型: RANG
2017-05-03 16:45:51
445
原创 Array、ArrayList、Vector、LinkedList
ArrayList : 不固定大小的数据,初始化默认size=0,第一次插入的时候会增大defaultSize=10,后续每次加多少就扩充多大。 当然,删除的时候 ,size也会相应减小。非线程安全, 但是自身会有安全检测, 需要内存的连续空间 ,适合遍历查询,不适合插入和删除操作
2017-05-03 16:24:56
292
原创 Mysql 闲杂问题聚集
1、where 条件是 从左向右执行吗 ? 答:是的 。所有过滤较多数据的条件应该写在左边 。 Oracle 刚好相反 2、如何进行汉语排序 ? 答: mysql :select * from Table order by convert(column USING gbk) COLLATE gbk_chinese_ci asc
2017-05-02 16:53:41
299
原创 Mysql DBMS执行SELECT 顺序
SQLSelect语句的执行步骤【从DBMS实现者角度,这个对我们用户意义不大】: 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。 2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。 3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。 4)表达式转换...
2017-05-02 15:44:00
491
原创 Mysql select查询执行过程
SQL Select语句完整的执行顺序: 1、from 子句组装来自不同表的数据,包括join 、left join ; 全字段组装 2、where 子句基于指定的条件对记录进行筛选 3、group by 子句将数据划分为多个分组 4、执行select 中的聚促函数,例如count(*),Max(),min()函数
2017-05-02 15:41:37
1050
转载 Mysql 函数
原文地址 : http://www.cnblogs.com/kissdodog/p/4168721.htmlMySQL数据库提供了很多函数包括:数学函数;字符串函数;日期和时间函数;条件判断函数;系统信息函数;加密函数;格式化函数;一、数学函数 数学函数主要用于处理数字,包括整型、浮点数等。函数作用ABS(x)返回x的绝对值
2017-05-02 13:54:04
228
转载 浅析Mysql InnoDB存储引擎事务原理
一 事务的分类1.1 扁平事务要么都执行,要么都回滚,InnoDB最常用,最常见的事务.1.2 带有保存点的偏平事务事务的操作过程有 begin, A, B, C, D, commit 几个过程,那么带有保存点的扁平事务过程大致如下:begin--> 隐含保存点1(save work 1)-->A-->B(save work2)-->C-->D(rollback work2)
2017-05-02 11:19:57
347
转载 Mysql 通过锁对事务的实现
MVCC(Multi-Version Concurrency Control) 多版本并发控制MVCC的实现,是通过保存数据在某个时间点的快照来实现的. InnoDB的MVCC是通过在每行记录后面保存2个隐藏的列来实现的,一列保存了行的创建时间,一列保存了行的过期时间(或删除时间).但它们都存储的是系统版本号MVCC最大的作用是: 实现了非阻塞的读操作,写操作也只锁定了必要的行.
2017-05-02 11:17:04
332
转载 数据库事务隔离级别
本文系转载,原文地址:http://singo107.iteye.com/blog/1175084数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√: 可能出现 ×: 不会出现
2017-05-02 10:21:17
252
转载 浅谈MySQL中优化sql语句查询常用的30种方法
原文链接 : http://www.jb51.net/article/39221.htm 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中使用!=或3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select
2017-05-02 10:02:02
441
原创 使用nmon检测JVM运行情况
1、下载工具包 nmon_linux_14g.tar.gz 下载地址http://download.youkuaiyun.com/download/xubo_ob/9823700; 包里面包含了 各个linux环境下的检测工具2、按照nmon , 用的是红旗linux,32位的 。 过程如下 1)用root用户登录到系统中; 2)建目录:#mkdir /usr/test
2017-04-24 14:54:49
1173
转载 spring bean 创建
原地址 : http://www.cnblogs.com/fyx158497308/p/3977391.html一、首先我们来看ClassPathXmlApplicationContext类体系结构从该继承体系可以看出:1. BeanFactory 是一个 bean 工厂的最基本定义,里面包含了一个 bean 工厂的几个最基本的方 法,getBe
2017-04-01 15:41:08
259
原创 Java clone()方法详解
Object.clone()方法为影子(浅)克隆,例如将对象A克隆出个B, * 那么先根据A的大小分配B的空间,创建B对象,然后遍历A的域对象进行克隆。 * 克隆域对象时,如果是基本类型则重新创建对象然后赋值,包括String类型 * 对于非基本类型,则是复制引用,引用指向原域对象,修改其中一个另外一个就会改变 * * 至于深度克隆,这是将 原来对象的属性和引用属性全部复制一份
2017-01-05 16:28:59
416
原创 线程学习四:volatile 关键字
很显然,volatile关键字修饰的对象修改后,都能在任何线程中立马拿到。但是你是否注意到了volatile使用上面的2不能1必须呢?1、不能将volatile使用到频繁更新的值上面 如下图演示 public static void main(String args[]) throws InterruptedException { for (int i = 0; i <
2016-12-06 18:13:47
245
转载 如何提升网页加载性能
摘自 https://github.com/xitu/gold-miner/blob/master/TODO/building-a-shop-with-sub-second-page-loads-lessons-learned.md原文地址:Building a Shop with Sub-Second Page Loads: Lessons Learned原文作者:E
2016-11-15 21:07:37
2650
转载 Spring事务配置
摘自 http://www.cnblogs.com/newsouls/p/3988216.htmlSpring事务管理Spring是SSH中的管理员,负责管理其它框架,协调各个部分的工作。今天一起学习一下Spring的事务管理。Spring的事务管理分为声明式跟编程式。声明式就是在Spring的配置文件中进行相关配置;编程式就是用注解的方式写到代码里。下面先说声明式:
2016-11-03 16:33:59
308
原创 需要分OS类别处理的代码
1、获取根路径/** * getMainHome 获取工程目录 * @return */ public static synchronized String getMainHome() { String MAINHOME = System.getProperty("user.dir"); if (MAINHOME.startsWith("/workspace")) {
2016-11-03 14:09:43
266
转载 内存分析工具
摘自 : http://www.cnblogs.com/java-class/archive/2013/04/18/3027884.html 1:gc日志输出 在jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimestamps -XX:+PrintGCApplicationStopedTime,jvm将
2016-10-30 12:35:31
276
转载 通过GC日志分析程序性能与内存泄漏
摘自 : http://blog.youkuaiyun.com/huangzhaoyang2009/article/details/11860757JVM的GC日志的主要参数包括如下几个:-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)-
2016-10-30 11:09:46
1165
原创 线程学习三:线程池ThreadPoolExecutor 与 Executors
/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number of threads to keep in the pool, even * if they ar
2016-10-18 21:29:56
1032
原创 线程学习二:线程池执行Runnable与Callable
1、了解线程池几个类之间的关系 (结合图看后面的分析) FutureTask 继承 RunnableFuture , RunnableFuture 实现接口 Runnable2、分析常用调用线程池代码(以下称为代码A) Executo
2016-10-14 16:44:25
2666
原创 线程学习一:线程基础
2、 JVM 线程与操作系统的线程啥关系 ? 先理解 线程模型 内核级别线程 内核级别线程(Kernel-level threading)是指用户进程通过内核提供API创建的线程。这样用户进程里的线程和内核调度的线程是1:1对应的。这也就最简单的线程管理方法。
2016-10-14 11:01:31
335
FileOutputStream.write(byte[])处理问题
2016-10-11
新人如何选型语言步入it行业
2016-09-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人