如何学习一种技能(总结)

学习任何一种技能的最好方式都是实际去做,这是被广泛认同的观点。但是当我们想学习一种新的技能,或者想要提高一种技能时,往往并没有实际的迫切需求,那么该怎么办呢?一种方式是被动的等待,等着有这种需求的时候自然会有学习的机会了。有没有更主动的方式呢? 想要去探寻主动的方式,我们必须从研究如何学习是最高...

2017-10-09 22:06:54

阅读数 699

评论数 0

JVM 堆内存调优

最近我的服务器的因为在tomcat7放了比较多的项目所以JVM内存不够用了,报OutOfMem java heap size 的异常。很显然需要对tomcat的JVM堆内存重新进行设置。 我的服务器是买的阿里云的服务,单核2G内存,因为不需要跑太复杂的应用,所以这足够了。 从GC日志看...

2017-02-25 22:21:32

阅读数 277

评论数 0

性能优化(四)高CPU利用率

还是上一篇中提到过的API,通过调查我们发现这个API在需要返回的数据量比较大的有些单次调用中CPU可能达到90%到100%。所以即便是调用量不大的情况下,这个API一样是造成整个系统性能低下的最大贡献者。其中有一次调用返回时间更是长达10s。其实CPU的使用率高的话,响应时间自然就长,需要很长时...

2016-12-28 20:33:58

阅读数 1248

评论数 0

性能优化总结(三)一对多join的级联查询

最近在对一个已经运行了4年的老项目进行性能优化,这是一个app,我主要还是从后台优化。这个项目后台提供的API并不多,只有十几个,但是性能非常差。有些API连每分钟2000的request都扛不住,虽然后台的并发node已经增加到8个。一看代码就知道为什么了,原来这些API都需要返回很多的数据,而...

2016-12-23 21:20:00

阅读数 2167

评论数 0

性能优化总结(二)

今天优化一个存储过程,这是一个关于查询的存储过程,因为需要查询的数据比较多,所以写了存储过程,比较耗时的是1. 需要join很多表,2.需要进行多次排序计算排名,3.需要进行计算得到一些平均值,4.有个复杂的查询需要循环处理。由于做其他接口的时候意见将排名信息预先计算并保存所以第二步算是省下来了。...

2016-12-15 21:25:13

阅读数 337

评论数 0

性能优化总结

最近都在进行性能优化,做个总结。 首先要说的是一个新的项目,这是一个原有网站,现在加app的项目,原来的网站是收购其他公司的,老项目了。这个项目坑的地方就在于表结构非常复杂,或者说设计的不好,表结构成了一大障碍。由于大多数接口都是查询所以用了MyBatis,Sql 几乎都是自己写的,每个查询都需...

2016-12-14 20:57:13

阅读数 350

评论数 0

/dev/xvda1 占满

最近tomcat总是奔溃,通过df查看后发现,/dev/xvda1占满了 通过du --max-depth=1 -h /  查找大文件,发现/var/lib很大,逐级查看,发现最近安装的jenkins下面有个日志文件很大,果断删除,释放了30%的磁盘空间。另外通过du命令还发现mongodb也很...

2016-10-16 16:05:49

阅读数 4112

评论数 0

ubuntu 安装jenkins

使用以下命令: wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stabl...

2016-09-05 22:50:16

阅读数 254

评论数 0

Spring AOP 实践(五)基础篇下

Spring支持的AspectJ切入点指示词: execution:匹配一个方法的执行,最常用的一个; within:匹配在一个包或者类型中; this:匹配一个这个类型的proxy; target:匹配一个这个类型的目标对象--被代理的对象; args:匹配一个方法,参数是这个...

2016-08-25 21:48:39

阅读数 214

评论数 0

Spring AOP 实践(四)利用annotation实现声明式服务

上一篇中说到Spring AOP的一个重要作用是提供声明式企业服务,比如著名的声明式事务处理。 声明式企业服务真的很诱人,可以少写很多代码啊!就好像一句魔法就可以搞定一切。 AOP中可以用annotation来作为切入点的判断条件,比如@Transactional作为切入点,凡是声明了这个注解...

2016-08-23 21:44:05

阅读数 314

评论数 0

Spring AOP实践(三)基础篇上

在Spring AOP实践(一)中已经总结了一些基础知识。AOP作为OOP的补充,完整了编程实践的方式。虽然java以面向对象语言著称,但是也不能总是言必设计模式。面向对象设计的基本模块化单元是类,而AOP的基本模块化单元是切面(aspect)。 在Spring AOP实践(一)中讲到,AOP要...

2016-08-23 20:41:13

阅读数 245

评论数 0

Spring AOP实践(二)编程篇

上一篇泛泛的讲了很多关于AOP和代理的理解,实现原理,动态和静态代理的比较,如何选择等。这篇讲到如何实践。 Spring的AOP很容易使用,查看Spring文档即可。 http://docs.spring.io/spring/docs/5.0.0.BUILD-SNAPSHOT/spring-fra...

2016-08-22 21:08:45

阅读数 390

评论数 0

Spring AOP实践(一)动态代理和静态代理,为什么使用AOP

作为Spring仅次于IOC的第二大代表功能,AOP的应用就不是很广泛了。众所周知AOP是面向方面编程,是对面向对象编程做出补充的一种编程方式。AOP使得编程人员可以把分散在代码各个地方的相同功能抽象到一处进行处理。任何方法的出现都是因为有着广泛的需求,比如在编程的过程中你总会想:凡是遇到某某情况...

2016-08-22 20:39:41

阅读数 4368

评论数 0

Error Code: 1235. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

最近遇到一个需要在in里面写limit子查询的情况,然后执行SQL的时候就遇到这个错误: Error Code: 1235. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery', 比如...

2016-08-17 07:40:37

阅读数 420

评论数 0

mysql 查询缓存

mysql参考文档中关于query cache的配置的说明: http://dev.mysql.com/doc/refman/5.7/en/query-cache-configuration.html 与查询缓存相关的参数一共有3个,第一个就是have_query_cache,如果...

2016-08-08 21:00:56

阅读数 281

评论数 0

mysql explain join types

explain 命令可以很清晰的展现sql 语句的执行计划,对于优化SQL语句很有帮助。在我看来执行计划中最有用的两列莫过于type和rows。rows很好理解就是这个查询遍历的行数,当然是越少越好了。type列就是指join type,也就是本文要尝试阐述的。 mysql的使用文档中有对joi...

2016-08-08 15:29:52

阅读数 312

评论数 0

java GC 日志查看 gcviewer

要查看GC日志首先要知道GC的log放在哪里,使用jps命令查看当前有哪些java进程在运行,找到我们要查看的java程序的进程pid 使用命令jinfo pid 来查看这个进程对应的java 信息,可以看到大概在最下面的地方有个参数-Xloggc:,他对应的就是gc log的位置。

2016-08-04 22:48:15

阅读数 7576

评论数 0

一个因为SQL join引发的内存泄露

最近公司的一个系统频繁的发生内存泄露,把server上的dump文件下载下来打开却是损坏的。用Jconsle监控server发现,线程的数量和内存的使用率都在不断上升。服务器重启后还好,运行一天之后就会发现线程数量很多,内存使用率很高,监控GC的日志发现full GC一直被调用,然后空间不能得到释...

2016-08-03 15:32:23

阅读数 649

评论数 0

一次简单的SQL语句优化

最近写了一个查询语句,为了做这个查询创建了一些view,最终的view中包含了另外两个view。这个SQL的查询要传入一个条件语句,最后发现这个SQL语句会随着数据量的增加而越来越耗时。即使为所有可以创建索引的地方都已经创建了索引也没有用。 用explain解释之后发现这个语句在执行其中的子查询...

2016-07-31 18:18:32

阅读数 255

评论数 0

SQL 行转列的一些思考

如果项目本身就是分析性大于事务性的,那一开始的设计就会把数据库设计成分析性的。但是如果一开始是设计成事务性的,我们必然也有需求做一些分析性的工作-单纯事务性的项目比较少。那这种时候我们就需要把这种事务性的表向分析性做一些转化。view可以很好的起到这个作用,既不用重新建表,又可以建立新的表结构。v...

2016-07-30 23:23:15

阅读数 307

评论数 0

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