摘要: 1、数据库字段宽度尽量选小,尽量设计为not null。 2、使用join代替子查询,join尽量用小表连大表。 3、建立索引,最好不超过6个,否则insert 和 update 会影响性能。 1、不要在存在大量重复值的列上建索引。 2、尽量不要在where 中对字段进行null判断,引擎会放弃使用 阅读全文
posted @ 2018-04-06 22:27 hy_ag 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 对于对线程,当主线程中有子线程运行出现异常时,主线程是不能捕获到该异常的,子线程会直接退出,不会记录任何日志。 解决: 1、子线程中try catch。 2、设置线程的未捕获异常处理器,UncaughtExceptionHandler。 3、通过future的get方法返回异常。 阅读全文
posted @ 2018-04-06 15:37 hy_ag 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 首先要知道springmvc的核心控制器dispatcherServlet(继承自httpServlet) 一般httpServlet的请求过程: 1、初始化(创建servlet实例时)时会执行servlet的init()方法对httpServlet进行初始化。 2、当一个请求request到来,会 阅读全文
posted @ 2018-03-30 16:12 hy_ag 阅读(215) 评论(0) 推荐(0) 编辑
摘要: Java内存大体上可以分为:本地方法区(线程共享)、Java栈(线程隔离)、本地方法栈(线程隔离)、Java堆(线程共享)、程序计数器(线程隔离)。 1、本地方法区 各个线程共享的内存区域,只要存放被虚拟机加载后的类的信息、常量、静态变量、即时编译器编译后的代码等。 2、Java栈 每个线程维护一 阅读全文
posted @ 2018-03-25 14:20 hy_ag 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 1.本地安装git 2.项目文件夹右键Git bash here,弹出git命令窗口 3.输入git init,使项目加入Git管理 4.输入git add .,将项目全部内容添加到git 5.输入“git commit -m "test"(git commit -m "提交信息") 6.输入“gi 阅读全文
posted @ 2018-03-12 15:29 hy_ag 阅读(109) 评论(0) 推荐(0) 编辑
摘要: Java 通过把String类设计为final使类不可继承,将变量value设置为private并且是final的,且value没有setter方法,不可修改。 为什么这么设计: 1.字符串常量池的需要.字符串常量池可以将一些字符常量放在常量池中重复使用,避免每次都重新创建相同的对象、节省存储空间。 阅读全文
posted @ 2018-03-11 20:07 hy_ag 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 1、类中的基本数据类型属性会初始化一个默认值,而局部变量不会初始化一个值(未初始化编译器会报错)。 阅读全文
posted @ 2018-03-08 15:18 hy_ag 阅读(95) 评论(0) 推荐(0) 编辑
摘要: java 堆中保存new 出来的对象(每个对象都包含一个与之对应的class的信息,【class信息存放在方法区】),堆中分配的内存,有虚拟机的自动垃圾回收器管理,栈内存只对其所属线程可见。 java 栈中保存一些基本数据类型 (int,long,byte,double,float,char,boo 阅读全文
posted @ 2018-03-08 11:31 hy_ag 阅读(289) 评论(0) 推荐(0) 编辑
摘要: TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文的长度,因此在应用层能很好的将不同的数据报文区分开,从而避免粘包和拆包的问题。而TCP 阅读全文
posted @ 2017-10-19 17:21 hy_ag 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 什么是类加载: 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Ja 阅读全文
posted @ 2017-03-20 17:05 hy_ag 阅读(231) 评论(0) 推荐(0) 编辑