Java
文章平均质量分 67
Lion_H
这个作者很懒,什么都没留下…
展开
-
C3P0简单使用
C3P0官方文档地址:https://www.mchange.com/projects/c3p0/一:为什么是C3P0?c3p0之前是使用传统的jdbc进行开发,步骤如下:在主程序中建立数据库连接进行sql操作断开数据库连接存在问题普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,在验证用户名和密码(需要耗时0.05~1s左右),需要数据库连接的时候,就向数据库要求一个,执行完成后在断开连接,这样的方式原创 2021-07-12 13:51:22 · 817 阅读 · 0 评论 -
Java 注解(Annotation)
一:什么是注解?面向编程人员和代码的一种特殊解释,从JDK5.0开始。 可以被其他程序读取部分注解:@override,@Deprecated,部分注解还可加参数值,如(value=“get”),抑制警告注解@SuppressWarnings(value=“unchecked”)注解是一种配置文件,它代替了xml配置文件,使代码更加的简洁。注解本身不起作用,起作用的是注解解释器,注解需要和反射一起使用才能发挥大的威力。提供信息给编译器: 编译器可以利用注解来探测错误和警告信息编译阶段时的处理:原创 2021-07-11 11:18:31 · 87 阅读 · 0 评论 -
Java 反射
一:反射前述动态语言:是一类在运行时可以改变其结构的语言:例如新的函数,对象,甚至代码。通俗的说就是在运行时代码可以根据某些条件改变自身结构。主要动态语言:Object-c,C#,JavaScript,PHP,Python等静态语言:与动态语言相对应,运行时结构不可变的语言。如Java,C,C++Java不是动态语言,但我们可以利用反射机制获得类似动态语言的特性,让编程更灵活。 反射机制允许程序在执行期间借助Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加原创 2021-07-11 10:45:10 · 69 阅读 · 0 评论 -
手写AQS核心代码
1:AQS简介AQS(AbstractQueuedSynchronizer):j.u.c下的Lock就是使用AQS实现的;为了使得多线程在并发访问资源的时候的安全性,纯Java语言实现(其中synchronized底层是由c++实现的) AQS支持线程抢占两种锁——独占锁和共享锁: 独占锁:同一个时刻只能被一个线程占有,如ReentrantLock,ReentrantWriteLock等,...原创 2020-04-06 12:06:47 · 635 阅读 · 0 评论 -
JMM线程内存模型
1:常规cpu模型增加了缓存的概念,就比如cpu的一级二级缓存等等(速度大于主内存)2:Java线程内存模型Java线程内存模型跟cpu缓存模型类似,是基于CPU缓存模型建立起来的,Java线程内存模型时标准化的,屏蔽了底层不同计算机的区别JMM有单独的工作内存,即使主内存变量修改了,其他线程也不一定得到通知,示例如下:package main;public class...原创 2020-04-02 20:52:48 · 415 阅读 · 0 评论 -
Java程序员面试笔记(基础知识)
1:Java语言1.1:Java语言优点Java为纯面向对象语言 平台无关性(为解释型语言,由jdk解释为机器码) Java提供了很多内置的类库 提供了对web应用开发的支持 具有较好的安全性和健壮性(安全机制:数组边界检测和Bytecode效验等) 去除了c++中难以理解的易混淆的概念(指针,结构,多重继承等),使代码更严谨更简洁1.2:Java与C++有什么异同Java...原创 2020-04-02 10:23:31 · 345 阅读 · 0 评论 -
浅谈Java虚拟机及其优化
1:jdk体系结构2:Java为解释性语言,跨平台(一行代码,到处运行):3:Java虚拟机模型 &执行顺序。类装载子系统->运行时数据区->字节码执行引擎以下代码为测试代码,通过以下代码详解运行过程public class Test6 { public static final int initData = 123; pub...原创 2020-03-31 12:27:31 · 233 阅读 · 0 评论 -
3.26面试总结(Java基础)
1:throw和throws的区别Throw:作用在方法内,表示抛出具体异常,由方法体内的语句处理。 具体向外抛出的动作,所以它抛出的是一个异常实体类。若执行了Throw一定是抛出了某种异常。Throws:作用在方法的声明上,表示如果抛出异常,则由该方法的调用者来进行异常处理。 主要的声明这个方法会抛出会抛出某种类型的异常,让它的使用者知道捕获异常的类型。 出现异常是一种可能性...原创 2020-03-26 11:44:42 · 217 阅读 · 0 评论 -
Java线程池
1:为什么要线程池多线程的缺点:处理任务的线程创建和销毁都非常耗时并消耗资源。多线程之间的切换也会非常耗时并消耗资源。解决方法:采用线程池使用时线程已存在,消除了线程创建的时耗通过设置线程数目,防止资源不足2:ThreadPoolExecutor的全参构造函数参数介绍在Java中创建线程池常用的类是ThreadPoolExecutor,该类的全参构造函数如下:...原创 2020-03-23 20:37:44 · 172 阅读 · 0 评论 -
Java多线程进阶
1:Java 运行过程大体介绍其中运行时数据区主要由五部分组成:虚拟机栈,堆,方法区(永久堆),程序计数器(帮助执行虚拟机栈中的方法),本地方法栈(最底层方法);2:运行时数据区详解程序计数器:每个线程对应有一个程序计数器,各线程的程序计数器是私有的,互不影响,且线程安全的。程序计数器记录线程正在执行的内存地址,以便被中断线程恢复执行时再次继续执行; 虚拟机栈:每个线程会对应...原创 2020-03-23 12:26:22 · 147 阅读 · 0 评论 -
详解Java线程创建和线程通讯
1:继承Thread类实现run()方法。然后new实例之后启动即可。2:实现Runnable接口,实现run方法,然后new Thread(new MyRunnable),启动线程即可。3:实现Callable接口,实现call方法(相比与run方法,此方法带有返回值),创建FutureTask实例,新建线程传入参数:4:线程池(常用)线程池接口Excute的继承关系...原创 2020-03-22 22:53:36 · 259 阅读 · 0 评论 -
架构笔记
1:用户浏览器产生数据,发送到Nginx服务器2:Nginx服务器进行分流,分发到不同tomcat(一个tomcat承压有限)3:tomcat下的服务分为多份微服务,根据优先级设置每个微服务资源份额(每次使用服务注册来判断哪一个服务地址承压小,进而转发至此服务器进行服务)4:在特殊情况下(淘宝双11),通过限制某一服务(退款),来提高其他服务的承压量。...原创 2020-03-20 17:55:55 · 156 阅读 · 1 评论 -
Java集合类汇总详解
1、List(有序、可重复)ArrayList:object数据存储元素,有序,但线程不同步->插入删除麻烦,查询为O(1),支持随机访问,多于存储结尾预留空间,浪费空间 LinkedList:实现了Queue接口,双向循环列表,有序,但线程不安全->插入删除简单,查询为O(n),不支持随机访问,多余存储索引浪费空间 Vector:Object数组存储元素,方法线程同步,但粒度...原创 2020-03-21 19:51:56 · 212 阅读 · 0 评论