- 博客(15)
- 收藏
- 关注
原创 书写高质量SQL的30条建议
1、查询SQL尽量不要使用select *,而是select具体字段。反例子:select * from employee;正例子:select id,name from employee;理由:只取需要的字段,节省资源、减少网络开销。 select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit 1假设现在有employee员工表,要找出一个名字叫jay的人.CREATE
2020-10-23 08:58:19 317
原创 JVM类加载过程
一.类加载或类初始化:当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤。二.类加载时机:1.创建类的实例,也就是new一个对象2.访问某个类或接口的静态变量,或者对该静态变量赋值3.调用类的静态方法4.反射(Class.forName("com.lyj.load"))5.初始化一个类的子类(会首先初始化子类的父类)6.JVM启动时标明的启动类,即文件名和类名相同的那个类 ...
2020-09-27 20:10:08 241
原创 JVM面试题
JVM面试题整理一、什么情况下会发生栈内存溢出?1、栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表、操作数栈、动态链接、方法出口等信息,局部变量表又包括基本数据类型和对象的引用;2、当线程请求的栈深度超过了虚拟机允许的最大深度时,会抛出StackOverFlowError异常,方法递归调用肯可能会出现该问题;3、调整参数-xss去调整jvm栈的大小二、详解JVM内存模型?jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java
2020-09-24 17:38:53 237
原创 volatile、内存屏障、指令重排序、内存一致性解析
1. WHATvolatile是java中的一个特征修饰符;可以用来修饰一个变量,如下所示2. WHY在了解为什么要使用volatile关键字之前,我们需要先了解一下几点什么是指令重排序什么是内存一致性问题2.1 指令重排序首先,我们先要了解下指令重排序。有下面一段代码上面代码定义了一个 int 型变量,定义了一个 boolean 类型变量,然后分别对两个变量进行赋值操作。从代码顺序上看,语句 1 是在语句 2 前面的,那么 JVM 在真正执行这段代码的...
2020-09-04 22:53:29 762
原创 双指针之同向指针--彻底解决删除重复性系列
转载leetcode某一大神:https://leetcode-cn.com/u/liuchuan1992/双指针的题型,类似的题还有:1. 删除排序数组中的重复元素2. 移除元素3. 快排4. 归并另外像快慢指针,滑动窗口其实也是同向指针,后续打算单独做总结,这里只看上面这一类题:他们的通性是:同向指针,且其中一个指针是做循环使用的。同向指针同向指针很好理解,两个指针是相同方向的,类似于快慢指针求中点之类的。但不知道大家有没有这种感觉:思路很简单,写对却很难。各种条件稍有不慎全军覆
2020-08-31 16:43:29 425
转载 线程调度及进程调度
一、Java线程调度 1.抢占式调度:指的是每条线程执行的时间、线程的切换都由系统控制。系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。 2.协同式调度:指某一线程执行完后主动通知系统切换到另一线程上执行。线程的执行时间由线程本身控制,线程切换可以预知,不存在多线程同步问题,但它有一个致命缺点:如果一个线程编写有问题,运行到一半就一直阻塞,那么可能导致整个系统
2020-08-29 21:55:50 366
原创 五层协议体系架构
一、计算机网络体系结构 OSI的七层协议体系结构(图1-18(a)) 的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP 体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP 是一个四层的体系结构(图1-18(b)), 它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题)。不过从实质上讲,TCP/IP 只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/...
2020-08-23 15:13:51 1567
原创 计算机网络协议
一、什么是网络协议?在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。这里所说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定的条件下应当发生什么事件(例如,应当发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(networkprotocol)。 网络协议也可简称为协议。二、网络协议的组成要素语法,即数据与控制信息的结构或格式; 语义,即需要发出何种
2020-08-23 14:28:47 784
原创 引入第三方包 @Autowired Spring注入失败解决方案
一、问题背景开发工程中,我负责的微服务需要依赖中台服务层,在调用该服务的功能接口时,@Autowired 注入方式启动报错:Description:Field clientRouter in com.baiwang.cloud.spush.client.SPushClient required a bean of type 'com.baiwang.cloud.spush.client...
2019-10-12 13:08:11 10019 4
转载 Spring 事务配置管理,简单易懂,详细 [声明式]
原文地址:http://www.cnblogs.com/editor/p/4054498.htmSpring 事务配置说明Spring 如果没有特殊说明,一般指是跟数据存储有关的数据操作事务操作;对于数据持久操作的事务配置,一般有三个对象,数据源,事务管理器,以及事务代理机制;Spring 提供了多种的底层数据源实现,以及多种类型的事务管理器;所有的管理器都基于 Platf
2017-09-23 15:29:55 252
转载 解决Spring中singleton的Bean依赖于prototype的Bean的问题
转载于:https://yq.aliyun.com/articles/40268摘要: 当Spring容器中作用域不同的Bean相互依赖时,可能出现一些问题,例如:一个作用域为Singleton的Bean(设为A)依赖于一个作用域为prototype的Bean(设为B)。由于A是单例的,只有一次初始化的机会,它的依赖关系也只在初始化阶段被设置,但它所依赖的B每次都会创建
2017-09-20 19:58:19 319
转载 Servlet的运行原理
一:servlet定义Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。Servlet多线程体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。 当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类,此时它贮存于内存中。。当有新的客户端请求
2017-08-19 16:49:49 396
原创 Treeset(自然顺序的实现)
/** * 存学员成绩 * TreeSet * 问题:java.lang.ClassCastException: com.qf.treeset.test.Student cannot be cast to java.lang.Comparable异常 * 解决方法:给自定义类添加比较器,有的类系统已自动实现了Comparable接口,这里只针对于自定义类 * 比较器: *
2017-07-22 11:23:53 241
原创 JavaSE语法小知识汇总
public class TestVar3 { public static void main(String[] args) { // TODO Auto-generated method stub char c = ' '; System.out.println(c+0); c = 65+25+32;// for(int i=0;i<=10000;i++){// S
2017-07-22 10:14:27 289
原创 JavaSE基本语法阶段
一.Java语言(特点:跨平台)1.JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。2.JRE(Java Run Environment) Java运行环境。3.JVM 虚拟机 Java是跨平台的语言,是依靠虚拟机来进行跨平台的,所以说虚拟机并不跨平台 4.一个java源文件可以有无数个类,只能有一个使用public来修饰,使
2017-07-08 09:37:14 412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人