java基础
我是胡同学
这个作者很懒,什么都没留下…
展开
-
Servlet路径匹配
四种匹配方式精确匹配:无通配符的精确字符串路径匹配: 以/开头,且以/*结尾后缀匹配:以*.开头,所以/api/*.jsp这么写是非法的缺省匹配:固定值 /若当路径匹配,/*后面不能再有任何东西若当后缀名匹配,*.必须是最前面URL匹配注意事项举例两种典型的错误理解,应该能帮助到你:/api/*.jsp:该urlPatterns是非法的,原因为:若当路径匹配,/*后面不能再有任何东西若当后缀名匹配,*. 必须是最前面/api//demo:这个urlPatterns是合法的转载 2022-04-06 14:53:39 · 324 阅读 · 0 评论 -
Mybatis在Mapper.xml排序失效
#{user_id} 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号如: order by #{id},如果传入的值是id,那么解析成sql时的值为order by “id”,这种情况会造成排序失败$将传入的数据直接显示生成在sql中。如:order by ${user_id},如果传入的值 如果传入的值是id,则解析为order by id。所以order by 排序,要使用$而不是#摘自https://blog.csdn.net/hongweigg/article/details.转载 2022-03-29 10:50:12 · 721 阅读 · 0 评论 -
使用状态机来管理对象状态变更
文章目录1.背景2.定义接口和基础类3.具体的实现4.总结1.背景 在日常工作过程中,我们经常会遇到状态的变化场景,我们往往需要对对象的当前状态和发生事件来确定状态的变更是否合法,确定下一个状态等操作,我们可以使用很多的if else操作来进行判断,但是不太好看,下面使用一个例子介绍一个使用状态机来管理状态的方式。2.定义接口和基础类首先我们定义一个接口StateMachine,里面只有一个方式,根据当前的状态和发生的事件,返回下一个合法的状态,如何没有合法的状态则返回empty。 具体的代原创 2020-12-20 13:32:18 · 439 阅读 · 0 评论 -
java线程池学习
本文摘抄自深度解读 java 线程池设计思想及源码实现构造线程池的基础参数corePoolSize核心线程数,不要抠字眼,反正先记着有这么个属性就可以了。maximumPoolSize最大线程数,线程池允许创建的最大线程数。workQueue任务队列,BlockingQueue 接口的某个实现(常使用 ArrayBlockingQueue 和 LinkedBlockingQueue)。keepAliveTime空闲线程的保活时间,如果某线程的空闲时间超过这个值原创 2020-12-13 15:33:02 · 77 阅读 · 0 评论 -
Java元注解
内置的元注解 @Retention, @Target, @Documented, @Inherited, @Repeatable(1.8)@Inherited 注解@Inherited 标明注解是能够被传递到子类的,即注解在父类的注解也会作用到它的子类上去,但是标注在接口上则子类不会获取到该注解,同样在方法上也不会被子类获取Java 元注解及 Spring 组合注解应用@Target 注解ElementType.ANNOTATION_TYPE 的用处,好像也就是一个约束,只限定被它声明了注解只原创 2020-12-13 15:30:53 · 117 阅读 · 0 评论 -
Unsafe类的使用
####1.unsafe类的使用unsafe类一般作为一个静态变量存储在一个类里面,他可以类中某个属性的内存偏移地址,需要修改属性是传入类对应对象的实例,从而修改指定对象实例的属性值1.操纵对象属性public native long objectFieldOffset(Field f);通过此方法,可以获取类中某个属性的内存偏移地址,然后可根据偏移地址直接对对象的属性进行修改,属性是否可读都无所谓,都能修改。2.操作数组元素public native int arrayBaseOffset(原创 2020-12-13 15:29:44 · 263 阅读 · 0 评论 -
深入分析 java 8 编程语言规范:Threads and Locks
摘自深入分析 java 8 编程语言规范:Threads and Locks1.同步Java 提供了多种线程之间通信的机制,其中最基本的就是使用同步 (synchronization),其使用监视器 (monitor) 来实现。java中的每个对象都关联了一个监视器,线程可以对其进行加锁和解锁操作。在同一时间,只有一个线程可以拿到对象上的监视器锁。如果其他线程在锁被占用期间试图去获取锁,那么将会被阻塞直到成功获取到锁。同时,监视器锁可以重入,也就是说如果线程 t 拿到了锁,那么线程 t 可以在解锁之前转载 2020-12-13 15:28:47 · 87 阅读 · 0 评论 -
JVM杂记
程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。方法区(method area)只是JVM规范中定义的一个概念,用于存储类信息、常量池、静态变量、JIT编译后的代码等数据,但并没有规定这原创 2020-12-13 15:27:27 · 65 阅读 · 0 评论 -
AQS学习总结
摘自一行一行源码分析清楚AbstractQueuedSynchronizer // 下面这个方法,参数node,经过addWaiter(Node.EXCLUSIVE),此时已经进入阻塞队列 // 注意一下:如果acquireQueued(addWaiter(Node.EXCLUSIVE), arg))返回true的话, // 意味着上面这段代码将进入selfInterrupt(),所以正常情况下,下面应该返回false // 这个方法非常重要,应该说真正的线程挂起,然后被唤转载 2020-12-13 15:26:17 · 134 阅读 · 1 评论 -
ThreadLocal学习笔记
// nextHashCode的值会发生溢出,变为负数,private final int threadLocalHashCode = nextHashCode();private static AtomicInteger nextHashCode = new AtomicInteger();private static final int HASH_INCREMENT = 0x61c88647;private static int nextHashCode() { return n原创 2020-12-13 15:23:46 · 85 阅读 · 0 评论 -
javacv开发入门之Maven环境搭建
javacv开发入门之Maven环境搭建maven在java开发中使用的频率很高,所以使用java来搭建环境,直接使用javacv的maven依赖会把所有平台的jar包都现在下来很多也很慢,所以折腾了一下只下载windwos平台下的jar包。在windows打开摄像头成功,其中pom的依赖如下:<properties> <javacpp.platform....原创 2018-05-02 22:14:01 · 12509 阅读 · 3 评论 -
java中的SPI机制
1.SPI机制简介面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。 java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中原创 2017-05-06 09:33:09 · 341 阅读 · 0 评论 -
Java集合源码阅读笔记-ArrayList
1.数组中元素的移动都是使用System.arraycopy(Object src, int srcPos,Object dest, int destPos, int length)的本地方法实现的2.在remove方法中:移除元素之后要将之前元素占用的位置设为null方便GC回收3.在batchRemove中使用if (c.contains(elementData[r]) == c原创 2020-12-20 12:40:59 · 93 阅读 · 0 评论 -
java基础集合源码阅读笔记
1.数组中元素的移动都是使用 System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)的本地方法实现的2.在remove方法中:移除元素之后要将之前元素占用的位置设为null方便GC回收3.在batchRemove中使用if (c.contains(elementData[r]) == complem原创 2017-02-28 14:57:01 · 480 阅读 · 0 评论 -
java中路径问题详解
在jsp和class文件中调用的相对路径不同。在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。另:在Jsp,Servlet,Java中详细获得路径的方法!1.jsp中取得路径:以工程名为TEST为例:(1)得转载 2017-01-20 16:16:20 · 385 阅读 · 2 评论 -
Java集合源码阅读笔记-LinkedList
本文转自http://blog.csdn.net/ns_code/article/details/35787253关于LinkedList的源码,给出几点比较重要的总结: 1、从源码中很明显可以看出,LinkedList的实现是基于双向循环链表的,且头结点中不存放数据,如下图; 2、注意两个不同的构造方法。无参构造方法直接建立一个仅包含head节点的空链表,包含转载 2017-03-01 17:12:15 · 255 阅读 · 0 评论 -
java集合源码阅读笔记-HashMap
//如果x是一个实现了comparable接口则返回x的class对象,反之返回nullstatic Class<?> comparableClassFor(Object x) { if (x instanceof Comparable) { //ParameterizedType表示一个参数化类型,就像Collection<String>一样原创 2017-03-02 21:17:28 · 262 阅读 · 0 评论 -
自己看一些零散源码的小结
在很多的源码中都是用了下述的这种方式来进行类型转换public class Fruit { public void peel() { System.out.println("peel Fruit"); }}public class Apple extends Fruit { public void peel() { System.out.prin原创 2017-03-02 22:34:08 · 224 阅读 · 0 评论 -
Java集合源码阅读笔记-HashSet
HashSet本文转自http://alex09.iteye.com/blog/539549对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保存元素。所以如果对HashMap比较熟悉,那么理解HashSet就比较容易Set接口是一种不包括重复元素的Collection,它维持它自己的内部排序,所以随机访问没有任何意义,基本属性如下:public class HashS转载 2017-03-03 15:41:32 · 437 阅读 · 0 评论 -
mybatis 中#与$的区别
转自http://weijun726.blog.163.com/blog/static/87342299201362652950398/1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id转载 2017-03-03 16:21:36 · 290 阅读 · 0 评论 -
java数据类型的相关知识
1.小数默认为double型,如果为float型需要加上f显示说明,即0.6332f2.NaN--nota number表示一个合理但不合法的实数3.Integer内部缓存了-128到127共256个Integer对象,Integer i1=6产生一个Integer对象,Integer i2=6会检查缓存中是否有指向6的对象,这个跟String有点类似,直接Integer i1= 6 这样初始化是...原创 2018-05-02 22:15:51 · 273 阅读 · 0 评论