- 博客(33)
- 收藏
- 关注
原创 post请求json字段大写,后端接收不到数据
和客户对接过程中,发现对方请求的字段都不符合驼峰命名法,例如 OrderNo、User等后端接收时一直报错,org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "Xxxxx"面对客户如此无礼的要求,也只能选择默默忍受,在注释里吐...
2020-03-05 15:42:55
2581
1
原创 nginx 301重定向后@RequestBody报错
服务器端Nginx做了301重定向,从域名A重定向到域名B。服务器端代码: @ResponseBody @RequestMapping("/test.do") public String test(HttpServletRequest request, @RequestBody Map<String, String> testName) { S...
2020-01-19 10:08:20
808
转载 MAC地址表、ARP缓存表以及路由表
一、MAC地址表详解说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。交换机的工作原理交换机在接受到数据帧以后,首先、会记录数据帧中的源MAC地址和对应的接口到MAC表中,接着、会检查自己的MAC表中是否有数据帧中目标M...
2020-01-11 17:14:18
2346
转载 深入解析J.U.C并发包(二十一)—— Locks框架:AQS(1)
一、AQS简介AbstractQueuedSynchronizer抽象类(以下简称AQS)是整个java.util.concurrent包的核心。在JDK1.5时,Doug Lea引入了J.U.C包,该包中的大多数同步器都基于AQS来构建的。AQS框架提供了一套通用的机制来管理同步状态(Synchronization state)、阻塞/唤醒线程、管理等待队列。我们所熟知Reentrant...
2019-10-24 09:39:40
187
转载 深入解析J.U.C并发包(二十二)—— Locks框架:(CLH Lock)自旋锁
参考https://www.jianshu.com/p/5ad8539e25c3CLH Lock摘要CLH lock is Craig, Landin, and Hagersten (CLH) locks, CLH lock is a spin lock, can ensure no hunger, provide fairness first come first service....
2019-10-22 20:21:18
218
转载 深入解析J.U.C并发包(二十)—— Locks框架:LockSupport
一、LockSupport简介LockSupport类,是JUC包中的一个工具类,是用来创建锁和其他同步类的基本线程阻塞原语。LockSupport类的核心方法其实就两个:park() 和 unpark(),其中 park() 方法用来阻塞当前调用线程,unpark()方法用于唤醒指定线程。这其实和Object类的wait() 和 signal() 方法有些类似,但是LockSuppo...
2019-10-21 19:17:48
182
转载 深入解析J.U.C并发包(十九)—— Locks框架:ReentrantReadWriteLock
一、ReentrantReadWriteLock类简介ReentrantReadWriteLock类,顾名思义,是一种读写锁,它是ReadWriteLock接口的直接实现,该类的内部实现了具体独占锁特点的写锁,以及具有共享锁特点的读锁,和ReentrantLock一样,ReentrantReadWriteLock类也是通过定义内部类实现AQS框架的API来实现独占/共享的功能。Reentr...
2019-10-19 17:56:05
147
转载 深入解析J.U.C并发包(十七)—— Locks框架:ReentrantLock
一、ReentrantLcok类简介ReentrantLock类,实现了Lock接口,是一种可重入的独占锁,它具有与使用 synchronized相同的一些基本行为和语义,但功能更强大。ReentrantLock内部通过内部类实现了AQS框架(AbstractQueuedSynchronized)的API来实现独占锁的功能。、1.1类声明ReentrantLock类直接实现了Loc...
2019-10-19 14:48:29
155
转载 深入解析J.U.C并发包(十六)—— Locks框架:接口
本系列文章中所说的juc-locks锁框架就是指java.util.concurrent.locks包,该包提供了一系列基础的锁工具,用以对synchronized、wait、notify等进行补充、增强。juc-locks框架中一共就三个接口:Lock、Condition、ReadWriteLock,接下来对这些接口作介绍。一、Lock接口简介1.1接口定义该接口的方法声明如下:...
2019-10-19 11:21:29
183
转载 深入解析J.U.C并发包(十五)—— Thread - Specific Storage(ThreadLocal)模式
一、定义Thread - Specific Storage就是“线程独有的存储库”,该模式会对每个线程提供独有的内存空间。java.lang.ThreadLocal类提供了该模式的实现,ThreadLocal的实例是一种集合(collection)架构,该实例管理了很多对象,可以想象成一个保管有大量保险箱的房间。java.lang.ThreadLocal类的方法:public vo...
2019-10-17 16:46:50
162
转载 深入解析J.U.C并发包(十四)—— Two - phase - Termination模式
一、定义我们将线程的正常处理状态称为“作业中”,当希望结束这个线程时,则送出“终止请求”。接着,这个线程并不会立即结束,而是进入“终止处理中”状态,此时线程还是运行着的,可能处理一些释放资源等操作。直到终止处理完毕,才会真正结束。Two - phase Termination主要考虑以下问题:安全地结束(安全性); 一定会进行终止处理(生命性); 收到“终止请求”后,要尽快进行终止...
2019-10-05 22:33:49
122
转载 深入解析J.U.C并发包(十三)—— Future模式
一、定义Future模式用来获取线程的执行结果。在Thread - Per - Message模式中,如果调用一个线程异步执行任务,没有办法获取到返回值,就像:host.request(10,'A');而Future模式送出请求后,马上就要获取返回值,就像:Data data = host.request(10,'A');但是上述的返回值并不是程序的执行结果,因为线程是异步的,...
2019-10-05 20:12:23
158
转载 深入解析J.U.C并发包(十二)—— Work Thread模式
一、定义Work Thread模式和Thread - Per - Message模式类似,Thread - Per - Message每次创建了一个新的线程处理请求,而Work Thread模式预先会创建一个线程池(Thread Pool),每次从线程池中取出线程处理请求。二、模式案例Request请求类:package Entity;import java.util.R...
2019-10-05 14:48:45
222
转载 深入解析J.U.C并发包(十一)—— Thread - Per - Message模式
一、定义Thread - Per - Message模式是指每个message一个线程,message可以理解成“消息”、“命令”或者“请求”。每一个message都会分配一个线程,由这个线程执行工作,使用Thread - Per - Message Pattern时,“委托消息的一端”与“执行消息的一端”会是不同的线程。二、模式案例该案例中,由Host分发请求,每一个请求发一个新的线...
2019-10-03 23:34:02
126
转载 深入解析J.U.C并发包(十)—— Read - Write Lock模式
一、定义Read-Write Lock Pattern将读取与写入分开处理,在读取数据之前必须获取用来读取的锁定,而写入的时候必须获取涌来写入的锁定。因为读取实例的状态不会改变,所以多个线程可以同时读取;但是,写入会改变实例的状态,所以当一个线程写入的时候,其他线程既不能读取也不能写入。二、模式案例Data类:数据类可以被多个线程同时访问。package Entity;i...
2019-10-03 19:21:08
152
转载 深入解析J.U.C并发包(九)—— Producer - Consumer模式
一、定义Producer - Consumer Pattern 就是生产者 - 消费者模式。生产者和消费者在为不同处理线程,生产者必须将数据安全地交给消费者,消费者进行消费时,如果生产者还没有建立数据,则消费者需要等待。一般来说,可能存在多个生产者和消费者,不过也有可能生产者和消费者都只有一个,当双方都只有一个时,我们也称之为Pipe Pattern。二、模式案例该案例中,定义...
2019-10-02 22:58:59
226
转载 深入解析J.U.C并发包(八)—— Balking 模式
一、定义Balking是“退缩不前”的意思。Balking Pattern和Guarded Suspension Pattern 一样需要警戒条件。在Balking Pattern中,当警戒条件不成立时,会马上中断,而Guarded Suspension Pattern则是等待可以执行时再去执行。二、模式案例该案例会保存数据的属性,之前所保存的属性都会被覆盖。如果当前数据的属性与上次保...
2019-10-02 21:32:21
157
转载 深入解析J.U.C并发包(七)——Guarded Suspension 模式
一、定义guarded是“被保护着的”、“被防卫着的”意思,suspension则是“暂停”的意思。当现在并不适合马上执行某个操作时,就要求想要执行该操作的线程等待,这就是Guarded Suspension Pattern。Guarded Suspension Pattern 会要求线程等候,以保障实例的安全性,其他类似的称呼还有guarded wait,spin lock等。二、模...
2019-09-16 14:21:23
240
转载 深入解析J.U.C并发包(六)——Immutable 模式
一、定义Immutable 是“永恒的”、“不会改变” 的意思。在Immutable Pattern中,有着能保证实例状态绝不会改变的类(immutable类)。因为访问这个实例时,可以省去使用共享互斥机制所会浪费的时间,提高系统性能。java.lang.String就是一个Immutable类。二、模式案例案例:Person类,具有姓名(name)、地址(address)等字段。...
2019-09-13 20:35:27
193
转载 深入解析J.U.C并发包(五)——Single Threaded Execution模式
一、定义Single Threaded Execution 是指“以一个线程执行”的意思,有时也称为Critical Section(临界区)。二、模式案例案例:假设三个人,频繁地通过一扇门,规定每次只能通过一个人,当通过一个人时,程序会将通过的总人次加1,同时记录该次通过人的姓名和出生地。门.javapackage Entity;public class Ga...
2019-09-13 17:00:32
178
转载 深入解析J.U.C并发包(四)——Java内存模型
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/hollis_chuang/article/details/80880118CPU和缓存一致性我们应该知道,计算机在执行程序的时候,每条指令都是在CPU中执行的,而执行的时候,又免不了要和数据打交道。而计算机上面的数据,是存放在主存...
2019-09-13 11:30:53
207
原创 深入解析J.U.C并发包(三)——并发基础Volatile
一、 可见性与MESI1.1可见性在JVM的内存模型中,每个线程有自己的工作内存,实际上JAVA线程借助了底层操作系统线程实现,一个JVM线程对应一个操作系统线程,线程的工作内存其实是CPU寄存器和高速缓存的抽象。现代处理器的缓存一般分为三级,由每一个核心独享的L1、L2 Cache,以及所有的核心共享L3 Cache组成,具体每个Cache,实际上是有很多缓存行组成:1.2缓...
2019-08-29 16:01:16
211
转载 深入解析J.U.C并发包(二)——AtomicInteger类
一、AtomicInteger简介AtomicInteger是Integer类型的线程安全原子类,可以在应用程序以原子的方式更新int值。1.创建AtomicInteger对象// setup to use Unsafe.compareAndSwapInt for updates private static final Unsafe unsafe = Unsafe.getU...
2019-08-28 22:25:52
303
转载 深入解析J.U.C并发包(一)——Unsafe类
一、J.U.C并发包简介J.U.C并发包,即java.util.concurrent包,是JDK的核心工具包,是JDK1.5之后,由Doug Lea实现并引入。整java.util.concurrent包,按照功能可以大致划分为: 1.juc-locks 锁框架 2.juc-atomic 原子类框架 3.juc-...
2019-08-22 14:13:51
319
原创 HibernateQBC查询
QBC(query by criteria)是一个通过组装不同查询条件来获取持久对象的条件类对象,代表特定持久类的一个查询。Criteria对SQL进行封装,让开发人员可以用对象的方式来对数据库进行操作。 Hibernate5.2以后通过Session的createCriteria()方法过时了,/** * Create {@link Criteria} instance for...
2018-06-20 15:34:48
187
原创 HIbernate关联映射小案例(CRUD)
做了一个hibernate关联映射的小案例(CRUD),包含一对多、多对多的映射关系。先看概念数据模型Student表因可能出现重名所以采用联合主键。School实体类package org.hrbust.vo;public class School { private int id; private String name; //省略getter/setter方法和构造方法 }...
2018-06-19 22:35:54
160
原创 Hibernate对象识别
重写实体类的equals()方法和hashCode()方法@Override public int hashCode() { int result; result = getName().hashCode(); result = 29 * result + getage(); return result; } @Override public b...
2018-05-28 20:28:54
161
原创 Hibernate自动建表
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd...
2018-05-20 09:28:03
170
原创 Hibernate SessionFactory单例模式
Hibernate SessionFactory具有以下特点:它是线程安全的,它的同一个实例能够供多个线程使用。它是重量级的,不能随意地创建和销毁它的实例。 由于SessionFactory的以上特点,一般情况下,一个项目中只需要一个SessionFactory,只有当应用存在多个数据源时,才为每个数据源创建一个SessionFactory实例。因此,在实际项目使用中,通常会抽取出一个Hib...
2018-05-16 23:02:48
402
原创 Caused by: java.sql.SQLException: Access denied for user 'sa'@'localhost' (using password: NO)
做了一个简单的SSH项目,在运行时候出现了一个问题:Caused by: java.sql.SQLException: Access denied for user 'sa'@'localhost' (using password: NO)jdbc.propertiesmysql.driver=com.mysql.jdbc.Drivermysql.url=jdbc:mysql://localho...
2018-05-13 00:09:36
3002
原创 ORM-Hibernate(1)
1.为什么使用Hibernate?Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作。Hibernate使用java的反射机制,而不是字节码增强程序类实现透明性。Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很...
2018-05-08 00:50:31
217
转载 Filter一些需要注意的问题
之前一直以为请求达到Web应用时,经过过滤器1,过滤器2……,处理后产生响应再经过过滤器n……过滤器2,过滤器1。这样的阐述似乎没有问题,但我的理解却有问题。比如过滤器1的doFilter方法执行了一个输出语句:System.out.println("hello"),我以为会在请求到达时输出一次,响应发出时输出一次。当时想来这样也不合理,但却没有深入思考。最近,好像才明白教材中那些流程图的真正含义
2017-11-22 16:14:41
898
转载 HTML中实现table垂直居中
html中是没办法实现上下居中的,如果设置上下居中,需要通过js程序来设置。方法一:在外面嵌套一层table,用table中的td来控制居中
2017-10-28 09:50:20
35067
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人