快乐开发
能力说明:
掌握封装、继承和多态设计Java类的方法,能够设计较复杂的Java类结构;能够使用泛型与集合的概念与方法,创建泛型类,使用ArrayList,TreeSet,TreeMap等对象掌握Java I/O原理从控制台读取和写入数据,能够使用BufferedReader,BufferedWriter文件创建输出、输入对象。
阿里云技能认证
详细说明如何手写一个切片呢。假设我现在需要一个计时切片,我想把每一次调用服务锁花费的时间打印到控制台,该怎么做呢? 拦截机制有三种: 1. 过滤器(Filter)能拿到http请求,但是拿不到处理请求方法的信息。
如何手写一个拦截器呢。假设我现在需要一个计时拦截器,我想把每一次调用服务锁花费的时间打印到控制台,我该怎么做呢? 拦截机制有三种: 1. 过滤器(Filter)能拿到http请求,但是拿不到处理请求方法的信息。
如何手写一个过滤器呢。假设我现在需要一个计时过滤器,我想把每一次调用服务锁花费的时间打印到控制台,我该怎么做呢? 拦截机制有三种: 1. 过滤器(Filter)能拿到http请求,但是拿不到处理请求方法的信息。
在进入正文前,我想把所有java可以实现的定时任务介绍一下,其实这个也是底层实现思路。 本教程大概目录: 线程等待实现定时任务 用Timer实现定时任务 用ScheduledExecutorService实现定时任务 Quartz 定时任务框架单...
前文摘自 菜鸟教程 :http://www.runoob.com/java/java-sending-email.html 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) 。
先来介绍下jooq jOOQ是一个基于Java编写SQL的工具包,具有:简单、轻量、函数式编程写SQL等独特优势,非常适合敏捷快速迭代开发。 SQL语句: SELECT AUTHOR.
本项目教程环境建立在spring boot2 整合(一)Mybatis (特别完整!) 的基础上。 1. Druid配置 1.1 修改pom.xml com.
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
整合Mybatis分为两种模式,一种是xml配置,一种是注解。(类似JPA) 我在这里重点放在xml配置上,因为如果想用注解的话,建议直接用jpa代替,因为Jpa有更成熟的CRUD接口更方便开发。
Spring Boot 2.0.0.RELEASE 需要Java 8 or 9 and Spring Framework 5.0.4.RELEASE 或者更高版本.
Lock就像synchronized块一样是一个线程同步机制。 然而,Lock定比synchronized更灵活、更复杂。 Lock和synchronized块 的区别 同步块不保证等待输入它的线程被授予访问权限的顺序。
通过java.sql.DatabaseMetaData 接口,我们能获取到数据库的列表、列等信息。 DatabaseMetaData 接口包含了许多方法,这里值介绍常用的。
事务Transaction是一组要作为单一的原子动作进行的行为。 要么执行所有的操作,要么都不执行。 我们可以通过它来调用事务: connection.setAutoCommit(false); 如果在事务中间出现失败,就需要对事务进行回滚 connection.rollback(); 如果所有操作都没有失败,那最终需要提交。
批量更新是分组在一起的一批更新,并以“批量”方式发送到数据库,而不是逐个发送更新。 一次发送一批更新到数据库,比一个一个发送更快,等待每个更新完成。 发送一批更新(仅一次往返)涉及的网络流量较少,数据库可能能够并行执行一些更新。
PreparedStatement 是一个特殊的Statement对象,如果我们只是来查询或者更新数据的话,最好用PreparedStatement代替Statement,因为它有以下有点: 简化Statement中的操作 提高执行语句的性能 可读性和可维护性更好 安全性更好。
结果集类型,并发性和可持续性 当创建一个ResultSet时,你可以设置三个属性: 类型 并发 可保存性 在创建Statement或PreparedStatement时已经设置了这些值,如下所示: Statement statement = connection.
加载JDBC驱动 只需要在第一次连接数据库时加载,java6以后我们可以直接这样加载: *我在本系列教程中用mysql示例。 需要导入jar包:mysql-connector-java-5.0.8-bin.jar(版本和下载网站自己挑) 如果是web程序,把jar包放到WebRoot/WEB-INF/lib/下 如果是普通java项目,将jar包导入到自己项目的lib库中。
有4种不同类型的JDBC驱动程序: 类型1:JDBC-ODBC桥驱动程序 类型2:Java +程序代码驱动程序 类型3:Java + Middleware转化驱动程序 类型4:Java驱动程序。
JDBC api包含以下几个核心部分: JDBC Drivers Connections Statements Result Sets JDBC Drivers -- 驱动 jdbc driver(驱动)是一个可以让你连接数据库的一个java类,它继承了很多个jdbc接口,当你用jdbc驱动的时候,它用标准的jdbc接口,所使用的具体JDBC驱动程序隐藏在JDBC接口后面。
Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便程序员在多线程环境下,无锁的进行原子操作。原子变量的底层使用了处理器提供的原子指令,但是不同的CPU架构可能提供的原子指令不一样,也有可能需要某种形式的内部锁,所以该方法不能绝对保证线程不被阻塞。
1.volatile关键字的两层语义 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
Java servlet容器/ Web服务器通常是多线程的。 为了确保servlet是线程安全的,必须遵循以下基本规则: servlet service()方法不应该访问任何成员变量,除非这些成员变量本身是线程安全的。
GZip Servlet过滤器可用于GZip压缩内容从Java Web应用程序发送到浏览器。 为什么要压缩 Gzip压缩HTML、js、css等,使得发送给浏览器的数据大小变得更小。
Servlet Filter 可以拦截所有指向服务端的请求。 Servlet Filter.png 如果你想创建一个ServletFilter ,你需要实现一个接口javax.
HTTP Cookies是Web应用程序可以存储在访问Web应用程序的用户的客户机上的一小部分数据。 通常最多4千字节的数据。我将解释如何设置,读取和删除Java Servlet(或JSP)内部的Cookie。
要从浏览器访问Java servlet,必须告诉servlet容器要部署哪些servlet以及要将servlet映射到哪个URL。 这是在Java Web应用程序的web.xml文件中完成的。
ServletContext是一个获取web应用信息的对象,我们可以通过HttpRequest对象来得到它: ServletContext context = request.getSession().getServletContext(); Context Attributes 就像session对象一样,你可以存储一些属性在servlet容器里。
大概来讲:
RequestDispatcher 让两个servlet相互通信成为可能,就像是浏览器发送request请求一样。所以我们可以从HttpRequest中获取到RequestDispatcher对象 protected void doPost(HttpS...
HttpSession 是一个用户的session。session包含了用户信息。 当用户第一次访问网站时,有一个唯一的ID明确他的身份,这个ID保存在cookie或者一个请求参数里。
HttpServlet 类需要两个参数HttpRequest和HttpResponse。比如doGet方法 protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } 我在这先介绍HttpResponse。
HttpServlet 类需要两个参数HttpRequest和HttpResponse。比如doGet方法 protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } 那我在这先介绍HttpRequest。
单例模式是指对一个对象进行一次实例化,然后全局都可以调用该实例化对象来完成项目的开发。 在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。
javax.servlet.http.HttpServlet类是比Simple Servlet示例中显示的GenericServlet稍高级的基类。 HttpServlet类读取HTTP请求,并确定请求是否为HTTP GET,POST,PUT,DELETE,HEAD等,并调用一个相应的方法。
Java Servlets是Java的一项Web技术。 这是Java的第一个Web技术,许多新的Web技术已经到来。 尽管如此,Java Servlets非常有用。
文章转载致博客 http://blog.csdn.net/javazejian/article/details/72828483 自己稍加完善。 线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。
优先级设定 一个合理的优先级可以在一定条件下避免一些活跃性问题,比如死锁、饥饿等 public class Task implements Runnable{ @Override public void run() { while (true) { System.
一、优势 并发编程之所以让人迷惑是因为有不止一种问题的解决需要使用并发,也有不止一种方法去实现并发,而且他们之间也没有清晰的映射。 使用并发编程来解决的问题可以划分为两类,即“speed”和“designmanageability”。
方法一:继承Thread类,作为线程对象存在(继承Thread对象) public class CreatThreadDemo1 extends Thread{ /** * 构造方法: 继承父类方法的Thread(String nam...
可以使用Java在运行时加载和重新加载类,虽然它不像人们希望的那样简单。 本文将解释何时以及如何在Java中加载和重新加载类。 ClassLoader Java应用程序中的所有类都使用java.lang.ClassLoader的一些子类加载。
使用Java反射,您可以在运行时创建接口的动态实现。 你可以使用类java.lang.reflect.Proxy。 这个类的名字是我将这些动态接口实现称为动态代理的原因。
最常用,在键值都需要时使用。 Map map = new HashMap(); for (Map.Entry entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } 在for-each循环中遍历keys或values。
工作中可能用Set比较少,但是如果用的时候,出的一些问题很让人摸不着头脑,然后我就看了一下Set的底层实现,大吃一惊。 看一个问题 Map map = new HashMap(); map.
在Java中使用数组反射有时可能有点棘手。 特别是如果您需要获取某个类型的数组的类对象,如int []等。本文将讨论如何通过Java Reflection创建数组并获取其类对象。
使用Java泛型通常分为两种不同的情况: 声明一个类/接口是可参数化的。 使用可参数化的类。 当你写一个类或接口时,你可以指定它应该是可参数化的。 java.util.List接口就是这种情况。
使用Java反射,您可以在运行时访问附加到Java类的注解。 什么是Java注释? 注释是Java 5中的一项新功能。注释是一种可以在Java代码中插入的注释或元数据。
尽管普遍认为通过Java Reflection可以访问其他类的私有字段和方法。 这并不困难。 这在单元测试中可以非常方便。 本文将告诉你如何。 访问私有字段 要访问私有字段,您需要调用Class.getDeclaredField(String name)或Class.getDeclaredFields()方法。
使用Java反射,您可以检查类的方法并在运行时调用它们。 这可以用来检测给定的类有哪些getter和setter。 你不能明确地要求getter和setter,所以你将不得不扫描一个类的所有方法,并检查每个方法是否是getter或setter。
使用Java反射,您可以检查类的方法并在运行时调用它们。 这是通过Java类java.lang.reflect.Method完成的。 本文将更详细地介绍Java方法对象。
使用Java反射,您可以检查类的字段(成员变量)并在运行时获取/设置它们。 这是通过Java类java.lang.reflect.Field完成的。 本文将更详细地介绍Java Field对象。