- 浏览: 55557 次
- 性别:
- 来自: 深圳
-
文章列表
第一次在云主机上开发,启动项目时报如下错误,其实是有密码的。
写道
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
查看数据库的用户信息:
select host,user,plugin,auth ...
在Hashtable类中得到key的hash值后会进行如下运算:
hash & 0x7FFFFFFF
原因是得到的hash值可能是个负数,而0x7FFFFFFF表示int类型的最大值,0x7FFFFFFF的二进制表示如下:
0111 1111 1111 1111 1111 1111 1111 1111
首位表示符号位,0表示正整数,这样和hash值进行‘与’操作时得到一个正整数。
系统进程占用CPU过高的处理流程
- 博客分类:
- java
1、jps -v列出java进程;
2、top列出所有进程及占用CPU情况,结合上一步就可以找出占用CPU过高的java进程pid;
3、top -H -p pid,查看进程中线程占用CPU的情况;
4、printf "%x\n" tid,把线程ID转换为16进制;
5、使用jstack -l pid > pid.dump命令dump出进程的堆栈信息到文件;
6、在文件中找到线程ID的16进制数据;
从图可以看出,jvm内存模型由三部分组成:
堆:存放对象实例、数组;
方法区:也叫持久代,存放类的信息(类名、方法、字段)、静态变量、编译后的代码;
本地方法栈:也叫线程栈,存放引用(指向对象或数组在堆中的位置)、基本类型变量。
堆内存划分:
新生代,包含了Eden区和Survivor区;
老年代。
各区存放对象:
Eden区:存放新建的或短期的对象;
Survivor区:存放回收过后幸存下来的对象;
老年代:存放长期存活的对象。
内存管理
只有垃圾收集器才能释放分配在堆中的对象和数组,工作流程如下:
1、新对象和数组分配到新生代的Eden区;
2、 ...
sentinel是一个独立于redis之外的进程,不对外提供key/value服务。在redis的安装目录下名称叫 redis-sentinel 。 主要用来监控redis-server进程,进行master/slave管理,如果你的redis没有运行在master/slave模式下,不需要设置sentinel。
两个 ...
Criteria criteria = new Criteria();
criteria.and("type").is("1");
criteria.and("id").is("10009");
criteria.orOperator(new Criteria("src").is("online"),new Criteria("src").exists(false));
Query query = new Query();
query.addCr ...
在java中有byte、short、int、float、double、long、boolean7中基本类型即其对应的包装类型。在java SE5之前要想生产一个基本类型数值的对象,必须像下面这样:
Integer count = new Integer(1);
而从java SE5开始提供了自动装箱功能,即要生成一个基本类型数值的对象,只要像下面这样即可:
Integer count = 1;
而把一个包装类型变量赋给一个基本类型的变量即是拆箱:
Integer count = 1; //装箱
int n = count; //拆箱
所以,装箱就是把基本类型转为包装类型,拆箱就 ...
使用Aspect记录操作日志时,启动项目报以下异常:
严重: StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mvcContentNegotiationManager': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error Type referred to is not an a ...
在eclipse发布工程部署时,报如下异常:
到部署在tomcat的项目目录WEB-INF下看,并没有lib目录,也就是依赖的jar并没有拷贝过来。
解决办法是,右击工程:Properties--->Deploymeng Assemly
从图中可以看出,部署缺少lib目录,把lib目录加入进去就可以了。
redis集群数据同步
- 博客分类:
- reids
1、redis没有像mysql那样复制位置的概念,所以Slave和Master断开连接再重新连接时,会全量取Master的快照,Slave的所有数据都会清除,重新建立整个内存表,这样导致Salve恢复数据特别慢,同时也给Master带来的压力。
2、通过主动复制解决redis本身复制的缺陷,即通过业务端或代理中间件对redis中的数据进行多份存储。Twitter开发的用于复制和分区的中间件gizzard(
设计模式六大原则:
1、开闭原则
具体就是对扩展开放,对修改关闭。即在程序需要扩展的时候,不能去修改原来的代码,而是用抽象类和接
口去进行扩展。
2、里式代换原则
里式代换原则((Liskov Substitution Principle LSP))是面向对象设计的基本原则之一,里式代换原则定义:基类可以出现的地方,子类一定可以出现。
3、依赖倒转原则
这是开闭原则的基础,具体就是:对接口编程,依赖于抽象而不依赖于具体实现。
4、接口隔离原则
具体就是:使用多个隔离的接口,比使用单个接口好,降低依赖,降低耦合。
5、迪米特法则(最少知道原则)
具体就是:一个实体应该尽量 ...
一、nginx缓存静态资源
在nginx中使用expires指令来控制HTTP头部过期时间,这个指令可以放在http {}、server {}、location {} 等语句块或者 location {} 语句块中的条件语句中,如在 location 语句块中用 expires 指令控制静态文件:
写道
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 1d; }
即jpg、jpeg、png、gif、ico、css、js这些文件缓存一天。
时间单位:
ms:毫秒
s:秒
m:分钟
h:小时
d:天
w:星 ...
mysql有三类索引:
B-Tree索引
MySQL中的B-Tree索引的物理文件大多都是以BalanceTree的结构来存储的,也就是所有实际需要的
数据都存放于Tree的LeafNode,而且到任何一个LeafNode的最短路径的长度都是完全相同的,所以我们大家都称 ...
一、sql优化原则:
使用EXPLAIN分析;
使用小结果集驱动大结果集;
尽可能在索引中完成排序;
只取出需要的字段;
尽可能避免复杂的join和子查询。
二、sql优化
1、创建索引;
创建组合索引时,选择范围较小的字段放到前面。
2、分页:先分页查出主键,再使用inner join查询,如:
select id,name from user t inner join (select id from user u limit 1000000,100) a on t.id=a.id
3、当只查询一行数据时加上:
LIMIT 1
因为找到一 ...