
Java
顾国玉
这个作者很懒,什么都没留下…
展开
-
jps命令
1 位置可以通过which jps进行查看,jps位于我们java的安装目录的bin目录下2 查看进程输入jps即刻,就可以查看java程序的pid,以及程序名称jps命令是查看当前用户启动的java进程,我们切换其他用户,从下图可以看出jack用户没有启动java进程3 存储位置存储的位置位于/tmp/hsperfdata_用户名...原创 2019-07-29 20:52:10 · 404 阅读 · 0 评论 -
JavaWeb BaseServlet的用法及原理(含图解执行流程)
主要通过反射的知识来实现BaseServlet,由浅入深的了解下BaseServlet能给我们开发过程中提高一些效率原创 2018-06-18 14:48:11 · 18800 阅读 · 26 评论 -
Java多线程 子线程执行10次,主线程执行100次,接着子线程再10次,主线程再执行100次,往复循环50次
通过本文可以了解到Java多线程的互斥和通信原创 2018-06-10 12:24:13 · 2153 阅读 · 0 评论 -
JavaWeb dao层条件查询(模糊查询)的sql语句
目的:通过一条查询语句能够实现用户所有的条件进行查询原创 2018-06-02 16:15:01 · 19206 阅读 · 3 评论 -
jdbc 原始数据库连接
java对mysql的原始数据库连接方式原创 2018-06-23 20:09:08 · 458 阅读 · 0 评论 -
java定时器 实现2秒打印一次,1秒打印一次,循环往复
由于要求隔一段时间执行一次任务,则我们可以想到使用定时器,先介绍下定时器两种常用的方法,最后再写下2秒打印1次,4秒打印1次,然后再2秒打印1次,4秒打印1次,如此循环往复定时器第一种方法代码public static void main(String[] args) { //创建定时器对象 Timer timer = new Timer()...原创 2018-06-01 23:28:48 · 9993 阅读 · 0 评论 -
JavaWeb 文件上传
Jsp代码 注意事项UploadUtil工具类工具类目的: 1.获取上传文件的真实名称,例如1.jpg 2.生成uuid文件名称,因为用户可能重复上传,不然会覆盖 3.在指定路径下生成随机的路径import java.util.Random;import java.util.UUID;public class UploadUtils { /** * 获...原创 2018-06-23 15:11:11 · 300 阅读 · 0 评论 -
Java synchronized多线程互斥技术
了解synchronized的用法,实现线程之间互斥原创 2018-06-08 18:58:30 · 429 阅读 · 0 评论 -
JavaWeb dao层 用户订单 分页查询(三层封装)
通过dao层对数据进行三层封装,返回到前台页面,实现订单分页查询原创 2018-06-14 22:57:21 · 4808 阅读 · 10 评论 -
Spring AOP的实现原理及应用场景(通过动态代理)
AOP 思想: 基于代理思想,对原来目标对象,创建代理对象,在不修改原对象代码情况下,通过代理对象,调用增强功能的代码,从而对原有业务方法进行增强 !原创 2018-06-30 18:58:00 · 68891 阅读 · 16 评论 -
MyBatis 实现主键回写
当我们向数据库插入数据时,主键是设置的自增的,但是我们插入好数据库后,我们希望得到刚刚插入的数据的主键,mybatis可以实现这样的功能 应用场景: 员工与部门,当新员工进公司,该员工肯定属于某个部门,插入数据的时候,要告诉部门表,这个员工属于哪个部门数据库表mapper.xml文件代码<?xml version="1.0" encoding="UTF-8"?&g...原创 2018-06-26 23:55:42 · 7816 阅读 · 0 评论 -
AQS源码分析(含图解详细流程)
本文围绕reentrantLock源码分析来了解AQS文章目录一 AQS是什么二 ReentrantLock重入锁一 AQS是什么二 ReentrantLock重入锁重入锁的意思就是,线程thread1执行ReentrantLock的lock()方法获取到锁之后且没有释放锁,再次调用lock()方法的时候,不会阻塞,直接增加重入次数,具体的在哪里增加次数,后面源码分析会体现,我们看下下面...原创 2019-06-09 16:26:22 · 9513 阅读 · 12 评论 -
java 单例模式(八种写法)
本文通过饿汉和懒汉两种模式分析单例模式,并分析每种单例的优缺点。目录1 饿汉-Hungry(可用)2懒汉-Lazy(不推荐)3线程安全-synchronized(可用)4 双重检测-DoubleCheck(推荐)5内部类-InnerClass(推荐)6序列化-Serializable(可用)7容器单例-IOC(可用)8枚举-Enum(推荐)1 饿...原创 2018-09-13 13:58:38 · 2035 阅读 · 0 评论 -
Java观察者模式&事件委托(通过dota和王者荣耀故事讲解)
故事情景 首先介绍下故事的三位同学,阿顾、蛋蛋和洋洋,蛋蛋,洋洋喜欢玩游戏,但是又生怕班主任回来了被抓到,所以他们就找到了阿顾同学帮他们把风,但是阿顾同学不是谁都通知的,只有到阿顾那里登记的,阿顾同学才会通知这些登记的人,下面我们来模拟下整个流程:蛋蛋说:“阿顾,我在玩dota,班主任回来了,通知一声”阿顾说:“好的,我记录一下”洋洋说:“阿顾,我在玩王者荣耀,班主任回来了,通...原创 2018-10-13 15:24:47 · 624 阅读 · 1 评论 -
Java三个线程循环打印
先上效果图: 目录资源测试资源这里用了condition执行流程:线程1执行完,让线程2醒来工作;线程2执行完,让线程3醒来工作;线程3执行完,让线程1醒来工作原理(都是按最坏的情况分析):①一开始3个线程抢锁,如果线程2和3抢到锁,会进入等待(因为num=1),并释放锁,此时只有线程1可以拿锁②线程1开始执行,将num=2,并唤醒线程2,此时线程1和...原创 2018-09-19 21:04:24 · 3117 阅读 · 0 评论 -
Java设计一个高性能缓存模型(两种方法)
本文从线程不安全、线程安全、高性能三个方面一步步优化缓存模型,如果有疑问或者写的不好的地方可以留言沟通1. 缓存模型(线程不安全)import java.util.HashMap;import java.util.Map;public class CacheDemo { //声明一个map,用来作为缓存模型 private static Map<String...原创 2018-09-16 18:09:41 · 5480 阅读 · 7 评论 -
Java代码解决生产者---消费者问题(两种方法)
本文通过两种方法解决生产者--消费者问题,思想都是通过锁的竞争进行资源的消耗或者生产,如果有疑问或者写的不好的地方可以留言沟通(代码中都作了详细的注释)目录方法一:synchronized, wait, notify 1.1 资源1.2 消费者1.3 生产者1.4 测试代码方法二:lock, condition, await, signal2.1 资源2.2 消...原创 2018-09-11 13:49:23 · 18228 阅读 · 21 评论 -
Dubbox+SSM分布式框架搭建与测试
Zookeeper的安装这里就不写了,可以百度一下(文末会附上工程源码)目录一 工程结构二 框架搭建2.1 父工程2.2 实体类模块2.3 数据访问模块2.4 接口模块2.5 服务模块2.6 控制层模块2.7 逆向工程三 测试3.1 数据库表3.2 后端代码3.3 前端代码3.4 结果展示四 常见错误4.1 注册中心找不到服务...原创 2018-08-24 15:47:33 · 4342 阅读 · 4 评论 -
echarts+ajax动态获取后端数据
效果图:下面从前端和后端来讲解(如果有些地方描述的不是很好或者不够详细,可以留言交流)目录一 前端1.1 引入js文件1.2 准备容器1.3 日期控件和按钮1.4 异步请求1.5 前端完整代码二、后端2.1 Controller层2.2 Service层一 前端1.1 引入js文件<script src='../js/echart...原创 2018-08-20 20:53:58 · 39197 阅读 · 27 评论 -
JavaWeb 自动登录和退出(图解代码执行流程)
通过图解执行流程以及对cookie和session的使用,实现用户自动登录和退出功能原创 2018-06-21 18:07:37 · 15521 阅读 · 2 评论 -
JavaWeb ajax异步自动填充(含图解执行流程)
ajax异步访问数据库(含图解执行流程),并自动填充到浏览器原创 2018-06-05 00:56:24 · 1558 阅读 · 0 评论 -
Java多线程 执行流程(图解源码分析)
多线程的两种创建方式,图解对源码进行分析原创 2018-05-28 00:08:40 · 4783 阅读 · 0 评论 -
JDBC 工具类JdbcUtils封装与测试应用(针对MySql)
解决问题: 如果数据库的相关信息(驱动,地址,用户名,密码)发生改变,只需要更改配置文件即可,无需重新编译代码源码及配置文件:https://download.youkuaiyun.com/download/u010452388/10390242MySql数据库表的信息properties配置文件driverClass=com.mysql.jdbc.Driverurl=...原创 2018-05-03 18:17:27 · 1068 阅读 · 0 评论 -
算法(第4版) 编写一个静态方法lg(),接受一个整型参数N,返回不大于log2N的最大整数。(不要使用Math库)
解题思路:1.设要求的数为k 2.则k<=log2N 3.即2的k次方小于等于N 4.第三条中2的k次方肯定大于0,以及题目要求一个整形参数N 5.可以肯定N为正整数,k的值为0或正整数 6.代码中设M为2的k次方,从k=0时开始循环,即M=1java代码: public static void main(String[] args) { int k = lg(18原创 2018-05-03 16:32:04 · 1097 阅读 · 0 评论 -
java 算法 将一个二维数组转置打印
第一种方法:通过改变二维数组输出的方式(格式反转打印)//先定义一个二维数组 int[][] arr=new int[3][4]; //循环给二维数组赋值 for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j...原创 2018-05-03 14:35:45 · 2448 阅读 · 0 评论 -
Java基础 遍历【子文件夹】和【文件】并且 层级打印
【各位网友,有问题请留言和我沟通哈!】要求aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,还有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来知识点1.文件的获取 2.文件的判断 3.递归的使用递归方法的逻辑流程图源代码import java.io.File;...原创 2018-04-19 18:20:24 · 1531 阅读 · 0 评论 -
java static静态修饰符的执行顺序
类初始化时执行顺序:1、父类静态变量和静态代码块(先声明的先执行);2、子类静态变量和静态代码块(先声明的先执行);3、父类的变量和代码块(先声明的先执行);4、父类的构造函数;5、子类的变量和代码块(先声明的先执行);6、子类的构造函数。注意:在(静态)代码块中可以使用(静态)变量,但是被使用的(静态)变量必须在(静态)代码块前面声明。示例:根据下面代码判...原创 2018-04-23 22:26:47 · 666 阅读 · 0 评论 -
Java 输出4位数中能被6整除不能被12整除的数,打印时,两个数字一行,三个数字一行交替输出
大体流程: 1.先定义一个计数器row=0; 2.首先循环判断这个数字是否能被6整除不能被12整出 3.如果满足第2步,则打印该数字,并且row++,并且判断row的数值 4.如果row==2,则换行,如果row==5,则换行,并将重置为0逻辑流程图:代码:public class Test { public static void main(String[] args)...原创 2018-03-31 14:16:46 · 2783 阅读 · 0 评论 -
Java 计算整数是几位数字(正数或者负数都可以,但是符号位不算有效的数字位)
要求:1.键盘录入一个整数(正数或者负数都可以,但是符号位不算有效的数字位) 2.定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回3.在main方法中打印该数字是几位数 4.演示格式如下: (1)演示一: 请输入一个整数:1234 控制台输出:1234是4位数字 (2)演示二: 请输入一个整数:-34567 控制台输出:-34567是5位数字逻辑流程图:代码:import java...原创 2018-03-30 23:34:02 · 4400 阅读 · 0 评论 -
TCP上传案例(将图片从客户端上传至服务器)
程序运行时,优先运行服务端,因为服务端要开始等待客户端上传图片服务端线程import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.So...原创 2018-05-03 19:05:41 · 1662 阅读 · 0 评论 -
Java 中return和finally的关系
下面代码打印的结果是2,执行流程如下: 1.首先main方法调用show方法 2.进入show方法后,执行if语句时,后面跳转到代码块2(代码块1不会执行) 3.进入代码块2之后,return 记录了x的值1,后面让执行权让给finally 4.x继续+1,之后代码块3中的return返回2,覆盖了之前的1的值,并将2返回出去public class test { public...原创 2018-04-26 16:51:19 · 270 阅读 · 0 评论 -
EL中 empty语法及判断条件
格式:${ empty 对象 } 返回结果为Boolean值 只要满足下面三个条件都返回true 1.对象是否为null 2.字符串是否为”” 3.集合长度是否为0关键代码<!-- 特殊运算符 --> <h1>执行特殊运算符</h1> <% //向请求域中设置属性 ...原创 2018-05-27 11:25:57 · 8860 阅读 · 0 评论 -
Java 多线程机制会提高程序的运行效率吗?为什么会有多线程下载呢?
1.多线程机制会提高程序的运行效率吗?不会,就比如一个人在一个桌子上做油条,如果再给他2个桌子做油条,看上去是三个桌子都在出油条,但是这个人要在三个桌子上来回跑着做,肯定没有在一个桌子上做油条快2.为什么会有多线程下载呢?服务器默认给每个用户一个线程进行下载,比如说一个线程下载速度10KB/S,但是当一个用户拥有多个线程下载的时候,服务器认为的是多个人下载,所以当一个用户拥有多个线...原创 2018-05-21 22:26:00 · 1807 阅读 · 0 评论 -
JavaWeb 重定向与请求转发的区别和执行流程(图解分析)
本文通过现实生活的例子引出重定向和请求转发,通过图解的方式讲解了整执行流程原创 2018-05-21 22:16:24 · 21264 阅读 · 16 评论 -
Java servlet执行的完整流程(图解含源码分析)
浏览器请求 浏览器向服务器请求时,服务器不会直接执行我们的类,而是到web.xml里寻找路径名 ①:第一步,浏览器输入访问路径后,携带了请求行,头,体 ②:第二步,根据访问路径找到已注册的servlet名称,既图中的demo ③:第三步,根据映射找到对应的servlet名 ③:第四步,根据根据servlet名找到我们全限定类名,既我们自己写的类服务器创建对象 ①:服务器找到...原创 2018-05-21 21:46:17 · 33977 阅读 · 20 评论 -
Java servlet生命周期
Servlet从创建到销毁的过程.执行流程1.当浏览器第一次访问该servlet的时候,服务器会给我们创建该servlet的对象(单实例),并调用init(ServletConfig)方法进行初始化 2.init()方法执行完毕后service(ServletRequest,ServletResponse)方法会跟着执行. 每一次请求服务器都会创建一个新的线程访问Servlet中的ser...原创 2018-05-21 16:13:25 · 1056 阅读 · 0 评论 -
Java 自定义dbutils下的QueryRunner
摘要: 如果我们只会使用一些工具,那是知其然,但是如果我们也能写出一个类似的工具,那就是知其所以然;一步步理解下QueryRunner,提高下java的编程思想,理解底层原理;站在框架设计者的角度看本文,主要理解QueryRunner底层的思想,设计原理,同时还可以辅助理解动态代理,希望下面的思路能帮助大家好好理解 涉及到的知识点: 1.QueryRunner的使用 2.mysql数据库 ...原创 2018-05-07 16:15:12 · 987 阅读 · 0 评论 -
Java 动态代理实现自定义连接池
源码及配置文件:https://download.youkuaiyun.com/download/u010452388/10394985,有问题可以留言沟通哈一 为什么要用连接池?1.1 优化前1.当jdbc程序每次访问数据库都需要创建一个新的连接,访问完毕之后,需要释放资源。 2.那么在这样的一个过程中,连接的创建和销毁所消耗的资源是远远大于我们发送sql并执行的时间的。 3.基于这样的...原创 2018-05-05 23:56:18 · 3192 阅读 · 0 评论 -
java 通过反射,注解 自定义Junit 框架(Demo)
(本文只是一个简单的Demo,实际的Junit比这个复杂) 解决的问题:通过反射可以执行被指定注解修饰的方法,并且获取到指定注解中的值知识点1.反射1.1 在运行时通过代码操作类。(无需知道具体的类,由调用者告知) 1.2 要想操作类必就必须先获得该类的字节码对象Class 对象2.注解2.1 使用 @interface 关键字定义注解类. 2.2 编写注解的名称...原创 2018-04-26 22:26:28 · 709 阅读 · 0 评论 -
Java 求两个整数中的最大公约数
辗转相除法(欧几里得算法)点击打开链接 对要求最大公因数的两个数a、b; 设b<a,先用b除a,得a=bq+r1(0≤r1<b); 若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1q+r2 (0≤r2<r1); 若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1……如此循环,直到能整除为止。其最后一个非零余数即为(a...原创 2018-03-30 20:56:58 · 2747 阅读 · 0 评论