【spring】spring boot 注解启动流程 SpringBoot 究竟是如何跑起来的?SpringBoot中的条件注解底层是如何实现?如何让这些条件注解生效的?SpringBoot 启动类 @SpringBootApplication 注解 以及执行流程
【转载】【面试】【多线程】多线程并发与线程安全 线程安全性原子性、可见性、有序性volatilehappens -beforeJava并发编程:volatile关键字解析https://www.cnblogs.com/dolphin0520/p/3920373.htmlcas算法CAS算法的理解及应用 https://blog.csdn.net/mashaokang1314/article/details/84335970理解CAS算法在JAVA中的作用 https://www.cnblogs.co...
【转载】【面试】【多线程】线程池中多余的线程是如何回收的? ThreadPoolExecutor回收工作线程,一条线程getTask()返回null,就会被回收。未调用shutdown() ,RUNNING状态下全部任务执行完成的场景线程数量大于corePoolSize,线程超时阻塞,超时唤醒后CAS减少工作线程数,如果CAS成功,返回null,线程回收。否则进入下一次循环。当工作者线程数量小于等于corePoolSize,就可以一直阻塞了。调用shutdown() ,全部任务执行完成的场景shutdown() 会向所有线程发出中断信号,..
【转载】【面试】【多线程】面试问题 Tomcat 的线程池和 JDK 的线程池实现有啥区别, Dubbo 中有类似 Tomcat 的线程池实现吗? 我司网关 dubbo 调用线程池曾经出现过这样的一个问题:压测时接口可以正常返回,但接口 RT 很高,假设设置的核心线程大小为 500,最大线程为 800,缓冲队列为 5000,你能从这个设置中发现出一些问题并对这些参数进行调优吗? 线程池里的线程真的有核心线程和非核心线程之分? 线程池被 shutdown 后,还能产生新的线程? 线程把任务丢给线程池后肯定就马上返回了? 线程池里的线程
【转载】【面试】【多线程】线程池ThreadPoolExecutor 文档:线程池.note链接:http://note.youdao.com/noteshare?id=cebae0ca2ebdf78763121f59e13e8b14&sub=1253E822F9494DA6932E64A2F543D137
【转载】【面试】【多线程】面试官问我:Java创建线程有几种方式?我笑了 文档:面试官问我:创建线程有几种方式?我笑...链接:http://note.youdao.com/noteshare?id=c72081979a861b43180bc307a2d09129&sub=546C1DF6AABA49BEA2AED9D13532E1BB
【面试基础复习】github -Java基础 Java基础https://github.com/CyC2018/CS-Notes/blob/master/notes/Java%20%E5%9F%BA%E7%A1%80.md一、数据类型 :基本类型 ,包装类型 ,缓存池二、string :不可变的好处 ,string stringbuffer stringbuilder 区别 ,string pool ,newstring("abc")三、运算 :参数传递 ,flot double ,隐式类型转换 ,switch四、关键...
SpringBoot-shiro-JWT-Redis 现实登录用户角色授权 转载 :spring-boot-shiro-jwt-redis实现登陆授权功能 ,https://github.com/it-wwh/sping-boot-shiro-jwt-redis前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置部署都变得简单,越来越多的互联网公司已经选择SpringBoot作为微服务的入门级微框架。SpringBoot+JWT+Shiro+MybatisPlus单项目架构的 ,https://gith...
【资源下载】Java并发编程与高并发解决方案(完整) 学习 Java并发编程与高并发解决方案(完整) [百度链接下载 见文末]Java并发编程实践多线程并发与线程安全高并发处理思路与手段Java并发编程与高并发解决方案(完整) 视频 :链接:https://pan.baidu.com/s/128eTpn-jXvsntKMcYx1esw提取码:0c4rJAVA并发编程实践(中文).pdf ...
【SpringBoot】手写一个简单的SpringBoot-starter starter会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦。虽然不同的starter实现起来各有差异,但是他们基本上都会使用到两个相同的内容:ConfigurationProperties和AutoConfiguration。Starters are a set of convenient dependency descriptors that yo...
【SpringBoot】使用@ConfigurationProperties/@PropertySource 读取properties/yaml属性,注入字符/数值/日期list/map/对象/ Spring Boot可使用注解的方式将自定义的properties文件映射到实体bean中,比如application.properties文件 或者application.yml。ConfigurationProperties是一个注解,可以标注在一个Class上,这样Spring Boot会从Environment中获取其属性对应的属性值给其进行注入。首先看代码项目结构,代码@...
【SpringBoot】@SpringBootApplication 自动装配执行原理 -- @SpringBootConfiguration和@EnableAutoConfiguration spring boot内置了tomcat,并且不需要打成war再执行。可以在appication.properties对端口号等服务端信息进行配置。spring boot将各个应用/三方框架 设置成了一个个“场景”stater,以后要用哪个,只需要引入那个场景即可。选完之后,spring boot就会将 该场景所需要的所有依赖 自动注入。例如 选择 “web”,spring boo...
Spring 3.x 装配 Java bean的三种方式 项目结构 ,其他的具体文件就不展开介绍了。一、基于XML的配置方式1、xml文件的bean声明<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2...
【周末学习】 【20190519】 docker 镜像、容器、仓库【20190526】 api文档管理 swagger Yapi doclever最好的API是用Swagger工具构建的 昂首阔步 YApi-高效、易用、功能强大的可视化接口管理平台 DOClever 移动时代首选接口管理平台!【20190616】Jmeter 测试工具【20190624】 vue...
【面试】MySQL事务隔离 转载事务隔离级别(图文详解)什么是事务事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都...
MySQL锁机制 转载一、 锁分类(按照锁的粒度分类) 表级锁 Mysql中锁定粒度最大的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM和 InnoDB引擎都支持表级锁。表锁下又分为两种模式:表读锁(Table Read Lock) 表写锁(Table Write Lock)从下图可...
【转载】MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇 转载MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5...
【面试】JAVA 多线程并发(下) 转载 Java 并发进阶常见面试题总结1、synchronized1.1 说一说对于synchronized关键字的了解synchronized关键字解决的是多线程之间访问资源的同步性问题。synchronized可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。在早期版本中,synchronized属于重量级锁,效率低,因为监视(monitor)是依赖于底...
Spring中bean的作用域与生命周期 转载【Spring】Bean的生命周期Spring中bean的作用域与生命周期在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义以及bean相互间的依赖关系将通过配置元数据来描述。 Spring中...
【转载】Quartz框架流程 SpringBoot中的定时任务与Quartz的整合https://www.cnblogs.com/wadmwz/p/10315481.htmlQuartz框架从入门到实战https://blog.csdn.net/qq_37142346/article/details/78627237quartz实例和流程(含springmvc和Springboot两种模式下配置)...
一次非常有意思的SQL优化经历:从30248.271s到0.001s 转载一次非常有意思的SQL优化经历:从30248.271s到0.001s场景用的数据库是mysql5.6,下面简单的介绍下场景课程表:数据100条create table Course(c_id int PRIMARY KEY,name varchar(10))学生表:数据70000条create table Student(id int PRIMARY...
分库分表--如何做到永不迁移数据和避免热点 转载分库分表?如何做到永不迁移数据和避免热点?1、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们...
【转载】分布式一致性算法、分布式存储、分布式计算 分布式一致性算法早在1898年就诞生了著名的Paxos经典算法(Zookeeper就采用了Paxos算法的近亲兄弟Zab算法),但由于Paxos算法非常难以理解、实现、排错。所以不断有人尝试简化这一算法,直到2013年才有了重大突破:斯坦福的Diego Ongaro、John Ousterhout以易懂性为目标设计了新的一致性算法——Raft算法,并发布了对应的论文《In Search...
【面试】分布式事务方案与分布式系统一致性 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。分布式系统的经典基础理论 CAP 理论对于一个分布式计算系统来说,不可...
【面试】redis缓存穿透、缓存击穿、缓存雪崩区别和解决方案 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。缓存穿透描述: 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求。由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据...
【转载】Redis高可用技术解决方案 转载史上最全Redis高可用技术解决方案大全Redis各种使用方式的优缺点:1、Redis单副本Redis 单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。优点:架构简单、部署方便。 高性价比,当缓存使用时无需备用节点(单实例可用性可以用supervisor或cronta...
【转载】Redlock(redis分布式锁)原理分析 转载 Redlock(redis分布式锁)原理分析Redlock:全名叫做 Redis Distributed Lock;即使用redis实现的分布式锁;使用场景:多个服务间保证同一时刻同一时间段内同一用户只能有一个请求(防止关键业务出现并发攻击);官网文档地址如下:https://redis.io/topics/distlock这个锁的算法实现了多redis实例的情况...
Java 开发 设计模式 ----结构型模式【 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式】 1、适配器模式(Adapter)适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑...
Java 开发 设计模式 ----创建型模式【单例模式,工厂模式,建造者模式,原型模式】 1、单例模式(Singleton)基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。懒汉式public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */ private static Singleton instance = null; /* 私有构造方法...
Java 开发 设计模式 ----行为型模式【策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式】 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。结构型模式:把类或对象结合在一起形成一个更大的结构。行为型模式:类和对象如何交互,及划分责任和算法。行为型模式第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类策略模式(strategy)定义一系列算法,把他们封装起来,并且使它们可以相互替换。策...
Java 开发 设计模式 ----策略模式strategy 策略模式 strategy策略模式 strategy 定义了一系列算法,并将每个算法封装起来,使得他们可以相互转化,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(辅助类)。ICalculator提供统一的方法。AbstractCalculator是辅助类,提供辅助方法,接下来,依次实现下每个类:首先...
【面试】为什么要重写hashcode和equals方法? 1、通过Hash算法来了解HashMap对象的高效性先复习数据结构里的一个知识点:在一个长度为n(假设是10000)的线性表(假设是ArrayList)里,存放着无序的数字;如果我们要找一个指定的数字,就不得不通过从头到尾依次遍历来查找,这样的平均查找次数是n除以2(这里是5000)。我们再来观察Hash表(这里的Hash表纯粹是数据结构上的概念,和Java无关)。它的平均查找次数接...
【面试】Nginx全面解析 --【负载均衡、反向代理、高可用、宕机容错】 1、什么是NginxNginx是一个高性能的HTTP和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。 同时也是一个非常高效的反向代理、负载平衡。 cpu、内存等资源消耗却非常低,运行非常稳定。 多进程异步非阻塞事件处理机制:运用了epoll模型2、为什么要用Nginx跨平台、配置简单。 非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万...
【面试】 MySQL的读写分离的思路 1、读写分离是什么读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。2、为什么要读写分离呢?增加冗余 增加机器的处理能力 对于读操作作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上...
MySQL的执行流程 —— 一条SQL语句在MySQL中如何执行的 References•《MySQL实战45讲》•MySQL 5.6参考手册:https://dev.MySQL.com/doc/refman/5.6/en/[16]转载 一条SQL语句在MySQL中如何执行的1.MySQL 基本架构概览Server 层 :主要包括连接器,查询缓存,分析器,优化器,执行器。所有跨存储引擎的功能都在这一层实现 ,比如,存储过程,...
笔试题 【1】hello world(10分)描述:判断从一个字符串中是否能抓取出helloworld,可以不连续但是一定要保持顺序。如helllllllo wwwwwwworld 但不能是helolllllworld。 public static boolean isHelloWorld(String text) { char[] word1=text.toCharArray()...
【面试】消息中间件 Rabbit MQ 1、为什么使用RabbitMQ? RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件;优点流量削峰,高并发缓存 消息缓冲 消息分发 应用解耦(系统拆分,分布式解耦) 异步处理(预约挂号业务处理成功后,异步发送短信、推送消息、日志记录等)缺点系统可用性降低(MQ中间件突然挂掉) 系统稳定性降低(消息丢失) 分布式一致性问题...
【面试】JAVA 多线程并发(上) 1.JAVA 线程实现/创建方式 1.1继承 Thread 类Thread类实质上是实现了Runnable接口的一个实例,代表一个线程的实例,启动的方法通过Thread类的start()方法,start()方法是一个native()方法,它将启动一个新的线程,并执行run()方法。public class MyThread extends Thread { pub...
【面试】 HashMap ,HashTable ,ConcurrentHashMap 的区别 HashMap底层实现:数组+链表 ,可以存储null键和null值,线程不安全。 初始size容量 16 ,扩容: newsize = oldsize * 2, size一定是2的n次幂。 扩容针对整个Map,每次扩容时,数据结构就发生变化,原来的数组中的元素依次重新计算位置,并重新排序。 插入元素后才判断该不该扩容,有可能无效扩容(插入后再扩容,如果没有再插入,就会产生...
Java 8 新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。更多的新特性可以参阅官网:What's New in JDK 81、Lambda 表达式− Lambda允许把函数作为一个...
【面试】Java泛型 1. 概述Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。2. 为什么要用泛型--解决编译时期的问题public class Gen...
【面试】Java static方法能否被重写或重载 “覆盖”只有在某方法是基类的接口的一部分时才会出现。即,必须能将一个对象向上转型为它的基本类型并调用相同的方法。class StaticSuper{ public static void staticGet() { System.out.println("StaticSuper staticGet"); } public void dynamicG...
【面试】Redis面试常见问题总结 Redis是单进程单线程的,Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。Redis快的主要原因是:完全基于内存 数据结构简单,对数据操作也简单 使用多路 I/O 复用模型redis 的单进程单线程的,利用队列技术,...
Java从入门到放弃 --没放弃就写java程序员职业规划 网上很多这样的段子,表情包 : Java从入门到放弃,从入门到改行,从入门到出轨,,,最近看到一段话,很喜欢何炅说的一段话:想要得到,你就要学会付出,要付出还要坚持;如果你真的觉得很难,那你就放弃,如果你放弃了就不要抱怨。人生就是这样,世界是平衡的,每个人都是通过自己的努力去决定自己生活的样子。 最怕的就是我懵懵懂懂过了一年,这一年似乎没有改变,,,,,,翻...
【面试】tomcat 8的特性 Servlet 3.1Servlet 3.1最大的改进是实现了非阻塞式的I/O通信。这使得性能得到巨大的改进,数据可以通过ReadListener和WriteListener接口以异步的方式进行管理。Servlet 3.1的第二大改进是HTTP协议的升级。它允许客户端指定双方通信所使用的协议。比如说,服务器和客户端原本使用HTTP通信协议,能够升级成WebSockets通信。...
【面试】数据库的三大范式以及五大约束 实体:表; 属性:表中的数据(字段); 关系:表与表之间的关系;数据库设计三大范式(重点): 第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性; 例如:userInfo:山东省烟台市 131777368781 --》 userAds:山东0省烟台市 userTel:1317773...
【面试】遍历HashMap的方法以及性能比较 JDK8之前,可以使用keySet或者entrySet来遍历HashMap,JDK8中引入了map.foreach来进行遍历。原因:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。...
【面试】拦截器、过滤器、监听器 servlet、filter、listener、interceptor 区别总结 1、过滤器:依赖于servlet容器; 在实现上基于函数回调,可以对几乎所有请求进行过滤; 缺点是一个过滤器实例只能在容器初始化时调用一次; 使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。2、拦截器:依赖于web框架,在SpringMVC中就是...
【面试】SpringMVC与Struts2区别与比较总结 一、框架机制1、Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。 2、Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。二、拦截机制Struts2框架是类级别的...
【面试】Mybatis常见面试题总结(收集于网络) 1、什么是Mybatis?mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发只需关注SQL语句本身,不需要花费时间去处理加载驱动,创建连接,创建statement对象等繁琐过程。直接编写原生态SQL,执行。 mybatis可以使用XML或者注解的形式来配置和映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 通...
Redis五大数据类型应用场景 转自java思维导图公众号Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:首先Redis内部使用一个redisObject对象来表示所有的key和value,red...
【面试】平时是如何优化MySQL的? 1、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。mysql> explain select * from emp where empno=413345\G;*************************** 1. row *************************** id: 1 select_type: ...
【面试】Java的OOP三特性 与抽象类 一、抽象类 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象类的声明格式如下:public abstract class ClassName { abstract void...
Oracle中分页查询语句 Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。Oracle分分页查询格式:SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FR...
http请求头有哪些字段 >>请求头字段的具体含义Accept:浏览器可接受的MIME类型。Accept-Charset:浏览器可接受的字符集。Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。Authorization:授权信息,通常出现在对服务器发送的WWW-Authe...
【设计模式】--反射 1、什么是反射?Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态(或准动态,为啥要说是准动态,因为一般而言的动态语言定义是程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动...
【面试】Java中sleep方法和wait方法的区别? --Java基础 Java中sleep方法和wait方法的区别最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁)。 wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围) 。 sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 。...
【面试】反射用到了哪些接口,哪些类?--Java基础知识 反射用到了哪些接口,哪些类?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射就是把java类中的各种成分映射成一个个的Java对象接口和类:类:Class(Class 对象是在加载类时由 Java 虚拟机...
【面试】volatile有什么用? --Java基础知识 volatile有什么用?把代码声明synchronized 有两个重要的后果,通常指该代码的原子性atomicty和可见性visibility。原子性意味着 这个时刻只有一个线程能够执行一段代码,这代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。 可见性则更奇妙 ,他必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另...
JVM 调优学习(三)--垃圾回收面临的问题 目录如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结回收器选择辅助信息常见配置汇总调优总结垃圾回收的瓶颈增量收集的演进展望JVM调优工具如何调优线程监控内存泄漏检查垃圾回收的悖论我们的内存中都放了什么...
JVM 调优学习(二)--基本垃圾回收算法 按照基本回收策略分引用计数(Reference Counting):比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法...
JVM调优学习(一) --基础概念 数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,boolean,returnAddress引用类型包括:...
【面试】 MySQL语句优化 --通过慢查询日志监控查询语句性能分析 一、定位慢查询 1.1、数据库准备首先创建一个数据库表:CREATE TABLE emp(empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '编号',ename VARCHAR(20) NOT NULL DEFAULT "" COMMENT '名字',job VARCHAR(9) NOT NULL DEFAUL...
【面试】兼任IE低版本思路方案 【主要是针对ie6 7 8对支持和让老浏览器支持html5+css3的一些js脚本】 html5shiv.js // 让IE8及耕地版本的IE识别section,article,nav等html5元素 CSS3Pie(www.css3pie.com) // 让IE6-IE9支持圆角,背景渐变,边框图片,盒子阴影,RGB...
【面试】HTTP中post和get的区别 --Java面试题 1. get在浏览器回退时是无害的,而post会再次提交请求;2. get产生的url可以被添加到书签,而post不可以;3. get请求会被浏览器主动缓存,而post不会,除非手动设置;4. get请求只能进行url编码,而post支持多种编码方式;5. get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留;6. ge...
【面试】 servlet生命周期 --Java基础 J2EE基础知识Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示Servlet的生命周期包含了下面4个阶段:1.加载和实例化2.初始化3.请求处理4.服务终止(1)加载和实例化当Servlet容...
关于大型网站系统架构你不得不懂的10个问题(转载) 转载1. 你使用过哪些组件或者方法来提升网站性能,可用性以及并发量提高硬件能力、增加系统服务器。(当服务器增加到某个程度的时候系统所能提供的并发访问量几乎不变,所以不能根本解决问题) 使用缓存(本地缓存:本地可以使用JDK自带的 Map、Guava Cache.分布式缓存:Redis、Memcache.本地缓存不适用于提高系统并发量,一般是用处用在程序中。比如Spring是如何实现单例的...
互联网账户系统如何设计(转载) 互联网账户系统如何设计在很多互联网公司业务发展的早期,业务模式比较单一的情况下,涉及用户账户资金交易相关的逻辑也比较简单,但是随着公司业务模式的不断创新及类型的多元化发展,会渐渐发现现有系统账户逻辑越来越雍肿,不仅难以支持新业务的扩张,对现有业务的支持也适配困难,最终导致新业务系统不得不重新搭建自己的业务账户逻辑,造成重复建设不说,也往往给后续的财务资金核算造成混乱。以某互联网A租车...
支付公司如何预防和治理重复出款的风险(转载) 一、出错场景一般的出错场景:1. 程序逻辑错误每次出款,都等银行返回结果后,再去保存数据库出款成功的结果。一旦网络异常或者数据库繁忙,无法插入成功状态或者其他原因导致存储过程回滚,这时候由于最终状态没有更新,所以能够重复再次出款。2. 隔日场景,或者服务器时间差某一笔结算流水,刚好跨天了,比如23:59分提交,银行出款在下一天。但因为未能正常异步通知成功,查询程序...
(转载) Spring 中获取 request 的几种方法,及其线程安全性分析 Spring 中获取 request 的几种方法,及其线程安全性分析转载 :http://www.cnblogs.com/kismetv/p/8757260.html概述在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的属性(如cookie、授权信息)、body中的数据等。由于在Sp...
微信公众号支付: JSAPI缺少参数:total_fee ;没有生成预支付ID package=prepay_id=null; 微信公众号支付 缺少“total_fee”的可能性以下几点1.订单编号重复2.订单编号为空3.金额为“Null”或者为“0”4.AppID或者AppSecret不对5.预支付id为空 ,API密钥不对(在商户后台设置)...
分布式系统的经典基础理论 (转载) 分布式系统的经典基础理论 原文分布式系统设计理念分布式系统架构的第一原则是不要分布!这句话看似矛盾实则揭露了分布式系统的很多特征。分布式系统的目标与要素分布式系统的目标是提升系统的整体性能和吞吐量另外还要尽量保证分布式系统的容错性(假如增加10台服务器才达到单机运行效果2倍左右的性能,那么这个分布式系统就根本没有存在的意义)。即使采用了分布式系统,我们也要尽力运用并发编程、高性...
自己动手实现的 Spring IOC 和 AOP - 上篇 (转载笔记) 转载地址 2. 简单的 IOC 和 AOP 实现根据 xml 配置文件加载相关 bean 对 BeanPostProcessor 类型的 bean 提供支持 对 BeanFactoryAware 类型的 bean 提供支持 实现了基于 JDK 动态代理的 AOP 整合了 IOC 和 AOP,使得二者可很好的协同工作2.1 简单的 IOC最简单的 IOC 容器只需4步即可实现...
Java 开发 设计模式 ----单例模式(Singleton) 单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个...
Java 开发 设计模式 ----工厂方法模式(Factory Method) 工厂方法模式(Factory Method)工厂方法模式分为三种:11、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:举一个发送邮件和短信的例子。首先,创建二者的共同接口: public interface Sender { public void Send(); } 其次,创建实现类:...
Java 开发 设计模式 总结详情(转载笔记) 一、设计模式的三个分类 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。结构型模式:把类或对象结合在一起形成一个更大的结构。行为型模式:类和对象如何交互,及划分责任和算法。行为型模式:类和对象如何交互,及划分责任和算法。 二、设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展...
JAVA虚拟机 JVM 详情 (转载笔记) 1. JVM生命周期启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。 运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。 消亡。当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者...
Mysql数据分组GROUP BY 和HAVING,与WHERE组合使用---转载 理解分组,可以这样:对GROUP BY子句后面跟随的列名进行分组,然后对每一个分组而不是整个表进行操作。举例:在产品表中,检索每一个供应商提供的商品的数量。mysql> SELECT vend_id,COUNT(*) AS num_prods FROM products GROUP BY vend_id;结果:+---------+-----------+| vend_i...
Spring JdbcTemplate+JdbcDaoSupport实例 1. 不使用JdbcTemplate示例如果不用JdbcTemplate,必须创建大量的冗余代码(创建连接,关闭连接,处理异常)中的所有DAO数据库的操作方法 - 插入,更新和删除。它的效率并不是很高,容易出错和乏味。private DataSource dataSource; public void setDataSource(DataSource dataSource) {...
Spring松耦合实例 输出生成器的例子File : IOutputGenerator.java – 输出生成器接口package com.yiibai.output;public interface IOutputGenerator{ public void generateOutput();}File : CsvOutputGenerator.java – 一个CSV输出生成器用来实现IOut...
【java 微信公众号开发】 微信端获取code和opendId,access_token 步骤调试 一、网页授权 页面授权获取code,到微信公众平台配置,https://open.weixin.qq.com/connect/oauth2/authorize?appid=Appid&redirect_uri=http://xxx/xxx/xxx.html&response_type=code&scope=snsapi_userinfo&state=...
form 表单上传 文件 ,form两种提交方式 ,springmvc 文件上传 ResponseEntity附件下载 前端 form 表单提交 ,注意:form 表单 上传文件 enctype="multipart/form-data" , method="POST" form 表单 两种方式提交 到后台两种路径<body> <form class="layui-form layui-form-pane" action="" name="fo
jQuery each() 方法遍历,生成 JS 前端 jQuery each() 方法遍历,通过ajax请求后台数据,在前端自动生成数据项。 $.each(jsonData.data, function(index,item) { $("#lxul").append('<li><a href="javascript:void(0)" ...
java 读写修改word (POI包) HWPFDocument读文件 poi jar包 的基本概念Java可用org.apache.poi包来操作word文档。org.apache.poi包可于官网上下载 在使用POI写word doc文件的时候我们必须要先有一个doc文件才行,因为我们在写doc文件的时候是通过HWPFDocument来写的,而HWPFDocument是要依附于一个doc文件的。所以通常的做法是我们先在硬盘上准备好一个内容空白的doc文...
清空 form 表单 input file类型(reset无效) 其实我也不知道有没清除 input file 的数据,但是我在后台用了两个字段控制 ,待了解...页面代码: <form class="layui-form layui-form-pane" action="hy_addLegalReview.html" target="hidden_frame" method="POST" enc...
form 表单 上传文件 前端页面部分:1、form 表单action提交 乱码:method="POST" 2、文件上传 需要: enctype="multipart/form-data"3、通过fform表单提交数据,处理返回参数 思路:<form id="importBookForm" action="uploadReadBook.action" encType="multipart/form...