- 博客(31)
- 收藏
- 关注
原创 Nginx+Tomcat搭建集群
nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。Nginx百度百科 正向代理当我们需要访问一下外国网站时由于一定的原因,无法正常访问,此时找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,...
2018-06-01 01:26:18 23772 2
原创 自定义类加载器
通过继承classloader实现自定义的类加载package week01;import java.io.*;import java.util.Arrays;public class MyClassLoader extends ClassLoader { @Override public Class<?> findClass(String name) throws ClassNotFoundException { // 加载D盘根目录下指定类名的cl
2021-05-07 22:14:40 175
转载 Java JVM 栈帧(Stack Frame)
一、概述栈帧位置JVM 执行 Java 程序时需要装载各种数据到内存中,不同的数据存放在不同的内存区中(逻辑上),这些数据内存区称作运行时数据区(Run-Time Data Areas)。其中 JVM Stack(Stack 或虚拟机栈、线程栈、栈)中存放的就是 StackFrame(Frame 或栈帧、方法栈)。对应关系一个线程对应一个JVM Stack。JVM Stack 中包含一组Stack Frame。线程每调用一个方法就对应着JVM Stack 中Stack Fram...
2021-04-28 10:40:10 386
转载 Java类加载过程
转载类的加载类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。下面的这张图红色圈框表示类的加载机制运行时机:从图中可以看出:编译器(比如eclipse)首先将java文件编译为.class文件,而类加载器又将这些.class文件加载到JVM中。其中类装载器的作用就是类的加载。类的加载:将类的.class文件中的二进制数据读入到内存中,将其.
2021-04-27 20:41:03 1737
原创 java高级面试题
11.多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁?2.JAVA的AQS是否了解,它是干嘛的?3.除了synchronized关键字之外,你是怎么来保障线程安全的?4.Tomcat本身的参数你一般会怎么调整?5.你有没有用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?6.如果一个接口有2个不同的实现, 那么怎么来Autow...
2019-03-27 22:44:57 2652 2
原创 Nginx常见错误
nginx启动报错(1113: No mapping for the Unicode character exists in the target multi-byte code page)使用windows版本的nginx启动时遇到(1113: No mapping for the Unicode character exists in the target multi-byte code p...
2019-03-25 23:19:12 455
转载 数据结构与算法
最近面试发现数据结构这块知识很薄弱,整理下大神的数据结构文章恶补一下。转自:http://blog.csdn.net/column/details/datastructureinjava.html目录(1) 数据结构与算法概念解析(2) 数据结构之数组(3) 数据结构之栈(4)数据结构之队列 (5)数据结构之链表(6)数据结构之二叉树(7)数据结构之霍夫曼树(8)数据结构之红黑...
2019-03-18 23:18:17 492
转载 数据库SQL优化
程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。技巧1比较运算符能用 “=”就不用“<>”“=”增加了索引的使用几率。技巧2明知只有一条查询结果,那请使用 “LIMIT 1”“LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。技巧3为列选择合适的数据类型能用TINYINT就不用SMALLINT,能用SMALLINT就不...
2019-03-18 21:59:59 2293
原创 数据库SQL索引什么时候会失效
对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引alter table student add index my_index(name, age) // name左边的列, age 右边的列 select * from student where ...
2019-03-18 21:57:35 9906 1
原创 2019-3-15携程面试
前两天收到携程的Java后端的面试邀请,总结一下自己的不足有一套简单的Java基础的笔试题写一个单例模式一个有序的数组,显示一个X的位置在64位操作系统中,8个基本数据类型占用多少字节然后进行了面试项目中有没有用到线程池,在什么情况下用到的,用的哪一种线程池,线程池的线程配置了多少,为什么这样配,配置之后性能提升多少说一下jvm的垃圾回收机制,什么样的数据会进行回收has...
2019-03-16 14:08:51 554
转载 Spring IOC实现原理
condition标签可以使用@Condition标签来设置这个类/方法是否类加载,在SringBoot 中有大量的使用。如果满足条件则加载这个类/方法。public class LinuxCodition implements Condition { /** * context :判断条件使用的上下文 * AnnotatedTypeMetadata:注释信息 ...
2019-02-22 00:09:28 204
转载 java对象创建过程
HotSpot 虚拟机对象探秘通过上面的介绍我们大概知道了虚拟机的内存情况,下面我们来详细的了解一下 HotSpot 虚拟机在 Java 堆中对象分配、布局和访问的全过程。3.1 对象的创建下图便是 Java 对象的创建过程,我建议最好是能默写出来,并且要掌握每一步在做什么。Java创建对象过程类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中...
2019-02-14 12:13:54 438
原创 深入分析synchronized实现原理
1. 可重入性字面的意思就是可以再次进入的锁,synchronized其实也是可重锁,同一线程每进入一次,锁的计数器都会加一,在释放锁是计数器都会减一,只有当计数器为0 时才能释放锁2 . 锁的实现ReentrantLock是JDK实现的 Synchronized 是JVM实现 前者可以直接看到源码,后者实现难以看到3. 性能的区别在Synchronized优化以...
2018-07-03 00:36:21 1530
转载 AQS之CyclicBarrier
原本出处:海子 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法CountDownLat...
2018-07-02 23:48:44 262
原创 AQS之Semaphore
AQS在功能上有独占控制和共享控制 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源Semaphore 同一时间最多允许5个线程同时执行acquire方法和release方法之间的代码Semaphore semaphore = new Semaphore(5);@Slf4jpublic class Sem...
2018-06-23 01:20:46 249
转载 Java线程池
在Java程序中没到达一个请求就创建一个线程,会造成比较大的性能开销,线程创建的销毁会消耗相当大的系统资源,而线程执行任务所需要的时间很短就结束了。我们可以通过线程池的方式来复用线程,在线程运行结束之后不是销毁而是放入线程池中,下次可以直接使用 线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到...
2018-06-22 23:39:46 178
原创 java 多线程编程
线程:指的是进程中一个单一顺序的控制流,一个进程可以并发多个线程,每条线程并行执行不同的任务。 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个进程。一个线程不能独立存在,他必须是进程的一部分。一个线程一直运行,直到所有的非守护线程运行结束之后才能结束线程的生命周期有五种状态:新建状态适应new关键字和Thread或者器子类建立一个线程对象之后,该线程处...
2018-06-22 23:02:32 173
原创 线程封闭
线程封闭的三种方法Ad_hoc线程封闭:程序实现控制,最糟糕,忽略堆栈封闭:局部变量,Java线程访问局部变量时,会拷贝一份到栈中,所以不会产生并发问题ThreadLocal线程封闭 Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是...
2018-06-14 00:13:57 356
原创 不可变对象
在Java中我们可以使用final关键字来修饰类,方法,和变量 final 关键字:类,方法,变量修饰类时不能被继承修饰方法时不可被继承类修改 private 方法被隐式的指定为final修饰变量时,如果是基本数据类型时,final修饰后数据不能被修改,如果是引用类型,不能指向另外一个对象,里面的值可以修改// final修饰map,map的值可以修改@Slf4j@Not...
2018-06-13 23:30:52 167
转载 jvm垃圾回收机制和内存回收算法
垃圾回收算法1. 引用计数器算法引用计数器算法是给每一个对象设置一个计数器,当有地方引用这一个对象时,计数器加一,当引用失效时,计时器减一。当计数器为0时,jvm就认为这个对象不再被使用,标记为“垃圾”。这种算法虽然实现简单,效率高。但是很难解决对象之间循环引用的问题。当A引用B,B引用A,但是两个对象已不再被其他任何对象引用。(举个例子:两个对象objA和objB中都有字段i...
2018-06-04 23:33:04 309
原创 Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
当我们通过nginx实现负载均衡,将用户的请求按照一定的规则分发到到不同的服务器上,就带来了,一个用户进行登陆,这个请求分发到服务器A上,当用户再次请求这个请求被分发到服务器B上,就会出现用户未登录的情况,虽然我们可以使用nginx的iphash策略一定程度上规避这种情况,但是ip_hash有些缺陷使它不能随便使用(如多台pc使用同一个外网ip)。 使用spring 提供的Spring sess...
2018-06-01 22:55:55 520
原创 Lombok插件
lombok:使用简洁注解的方式,消除代码的冗余。 maven引入&amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;org.projectlombok&amp;amp;amp;lt;/groupId&amp;amp;amp;gt; &amp;amp;amp;lt;arti
2018-05-30 02:33:05 293
原创 使用Jaskon进行序列化和反序列化
在项目中用Jackson完成json和对象之间的转换,可以完成把对象序列化之后,存入redis,设置超时间,完成用户的登陆。1. 在maven的pom文件中引入jackson.jar <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jack...
2018-05-19 11:07:36 1302
原创 使用mybatis的pageHelper插件实现分页查询
PageHelper的原理是利用mybatis拦截器,在查询数据库的时候,拦截下SQL,然后进行修改,从而实现分页我们在是用myatias的可以使用第三方提供的插件来实现数据的分页,在maven的poom.xml文件中加载所需的包<!-- mybatis pager --><dependency> <groupId>com.github.pagehelp...
2018-04-25 02:12:57 903
原创 项目中读取配置文件的两种方式
大型项目中,我们往往会对我们的系统的配置信息进行统一管理,一般做法是将配置信息配置与一个cfg.properties的文件中,然后在我们系统初始化的时候,系统自动读取cfg.properties配置文件中的key value(键值对),然后对我们系统进行定制的初始化。 那么一般情况下,我们使用的java.util.Properties,也就是java自带的。往往有一个问题是,每一次加载的时候,...
2018-04-25 01:52:35 2731
原创 forward和serdredirect的区别
> sendRedirect() 和forward()的区别 HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源。 sendRedirect实现请求重定向,forward实现的是请求转发。 在web服务器内部的处理机制也是不一样的。 1.
2016-09-27 21:29:19 219
原创 Servlet学习笔记
运行在服务器端的java程序根据请求方式的不同将请求派发给doGet()或doPost()方法被访问时候tomcat会调用servlet的service方法 再重写service()时 doget()或者是dopost()方法不会起作用一个servlet程序就是一个继承了java.servlet.Servlet接口的 java类Servlet接口定义了Servlet定义了 开发步骤: 1.
2016-09-27 21:25:39 274
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-09-27 21:25:14 371
原创 servlet中的service()
在学习Servlet的过程中,我们大多时候编码都是直接继承HttpServlet这个类,并且重写doGet ,doPost,但是查看Api时我们会发现Servlet接口 ,GenericSevlet抽象类 以及HttpServlet类中都有service方法,那么为什么我们继承HttpSevlet类时不要重写service 而要重写doGet doPost呢?service的作用是什么捏??
2016-09-27 21:21:32 338
原创 chronoment暂停方法的实现
package com.example.king.chronometer;import android.app.Activity;import android.os.SystemClock;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;
2016-06-14 15:12:02 505
原创 安卓网络下载图片picasso的使用
利用异步任务方法publicclassimageTaskextendsActivity{privateImageViewimageView;privateButtonbutton;privatestaticStringURL="http://e.hiphotos.baidu.com/zhidao/pic/item/a2cc7cd98d1001e92d0c404ebe0e7b
2016-06-14 13:55:00 450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人