Java-Web
文章平均质量分 64
酱油砖家
我是酱油砖家 而不是酱油专家
展开
-
java中的锁机制
在java中的锁分为以下(其实就是按照锁的特性和设计来划分):1、公平锁/非公平锁2、可重入锁3、独享锁/共享锁4、互斥锁/读写锁5、乐观锁/悲观锁6、分段锁7、偏向锁/轻量级锁/重量级锁8、自旋锁(java.util.concurrent包下的几乎都是利用锁)从底层角度看常见的锁也就两种:Synchronized和Lock接口以及ReadWriteLock接口(读写锁)从类关系看出Lock接口是jdk5后新添的来实现锁的功能,其实现类:ReentrantLock、WriteLock转载 2020-06-23 02:14:11 · 239 阅读 · 0 评论 -
java线程安全——原子操作
竞态条件和临界区多线程访问相同资源,对资源进行写操作时,对执行顺序有要求。public class Demo { public int i = 0; public void incr() { i++; }}临界区:incr方法内部就是临界区域,关键部分代码的多线程并发执行,会对执行结果产生影响。竞态条件:可能发生在临界区内的特殊田间。多线程执行incr方法中i++关键代码时,产生了竞态条件。共享资源:如果一段代码是线程安全.原创 2020-05-27 02:28:35 · 277 阅读 · 0 评论 -
java内存模型
java的内存模型描述了java程序的可能行为。通过检查执行跟踪中的每个读操作,并根据某些规则检查该读操作观察到的写操作是否有效来工作。程序的所有执行的结果都可以通过内存模型来预测。具体的实现者任意实现,包括操作的重新排序和删除不必要的同步。内存模型决定了程序在每个点上可以读取到什么样的值。更多内容可直接参考java的官方文档https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.4Memory Mod原创 2020-05-27 00:38:51 · 167 阅读 · 0 评论 -
线程封闭(ThreadLocal,栈封闭即局部变量)
概念:数据封闭在各自的香橙中,不需要进行数据的同步,这种通过将数据封闭在各自的线程中,避免使用数据同步技术即线程封闭。线程封闭有两种方式:1、ThreadLocal线程级别的变量,每个线程都有自己独立的ThreadLocal的变量,在并发模式下是绝对线程安全的。ThreadLocal会在每个线程上创建一个副本,副本之间是彼此独立、互不影响的;可以使用ThreadLocal存放参数,方便在线程的多个方法中使用,用来代替方法传参。 public static ThreadLocal&原创 2020-05-24 23:59:04 · 198 阅读 · 0 评论 -
线程池
线程池的概念与数据库连接池的概念基本相似,线程池是为了控制线程的数量;线程是java中的一个对象,频繁的创建和销毁线程,都将消耗时间,降低程序的执行效率;过多的线程也将加速堆栈控件的消耗;更多的线程会导致操作系统频繁切换线程的上下文,拖慢系统的性能。线程池的内容:1、线程池管理器:用于创建并管理线程池;2、工作线程:线程池中的线程,循环执行线程池中的任务,没有任务则处于等待状态;3、任务接口:规定了任务的入口、任务结束后的操作、任务状态等;是线程池中任务必须实现的接口,供工作线程调用;原创 2020-05-24 23:37:28 · 296 阅读 · 0 评论 -
JAVA线程通信
JDK提供的线程协调的API:1、suspend、resume(已废弃)2、wait、notify3、park、unpark官方建议在循环中检查等待条件,因为处于等待状态的线程可能会因为错误或伪唤醒导致线程在没有满足结束条件的情况下退出。一、suspend、resume很容易死锁,所以被弃用;正常情况下:Thread consumerThread = new Thread(() -> { if (needWait == null) { // ...原创 2020-05-24 22:10:07 · 202 阅读 · 0 评论 -
Java的线程状态
JAVA的线程状态:1、New:尚未启动的线程的线程状态;2、Runnable:可运行或等待CPU调度;3、Blocked:线程阻塞等待监视器锁定或或处于synchronized同步代码块或方法中被阻塞;4、Waiting:等待状态;Object.wait、Thread.join、LockSupport.park5、Timed Waiting:具有等待时间的等待状态;Thread.sleep、Object.wait、Thread.join、LockSupport.parkNanos、Lo原创 2020-05-23 23:51:04 · 200 阅读 · 0 评论 -
JAVA运行原理
一、Class文件内容class文件包含java程序所执行的字节码,数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符,文件以0xcafebabe(咖啡宝贝)这个特殊标志作为开头。文件内容包括:版本、访问标志、常量池、当前类、父类、接口、字段、方法和属性二、java运行时java文件(源代码) 经过编译器编译,生成 class文件(字节码),JVM(java虚拟机)加载字节码三、JVM运行时数据区共享部分:所有线程都能访问到的内存数据,随虚拟...原创 2020-05-23 23:38:37 · 169 阅读 · 0 评论 -
Redis命令
http://doc.redisfans.com/index.html转载 2020-04-14 15:06:46 · 122 阅读 · 0 评论 -
JPA添加唯一索引或唯一约束(Mysql测试通过 version 5.7)
------------------------------------------------------------------------------------------------网上提供的版本基本都是这个版本的居多,据网友测试说在oracle中测试是没问题的,在mysql中测试是失败的@Table(name = “表名”, uniqueConstraints = {@Uni...原创 2020-01-29 00:37:01 · 5542 阅读 · 0 评论 -
spring boot gateway 过滤器的执行顺序
spring boot gateway 过滤器的执行顺序前言学习官方文档,发现对于过滤器有分为三类默认过滤器 自定义过滤 全局过滤器于是就有一个疑问,关于这些过滤器的访问顺序是怎样的,今天就以一个demo来进行测试准备阶段过滤器工厂类以此为模板,复制出几份就可以了,注意打印信息,可区分就行public class ExampleGatewayFilterFact...转载 2020-01-23 03:09:33 · 826 阅读 · 0 评论 -
Could not resolve placeholder
SpringCloud ConfigServer中,可能会配置多个yml文件进行组合,当@Value没有读取到相应的字段的时候,就会报Could not resolve placeholder的错误。在第一个application.yml下找不到的时候,就不会继续找下去了,直接报错。在启动类中添加如下Bean,继续查找后续的yml文件@Bean public static ...原创 2020-01-22 22:51:12 · 13921 阅读 · 0 评论 -
Spring基础(4)——设值注入、构造注入
设值注入:也称属性注入,是指通过setter()方法传入被调用者的实例。这种注入方式简单、直观,在Spring依赖注入中也是最常用的。public interface Animal { public void eatFood();}public interface Action { public void eat();}public class Cat implement An...原创 2018-06-11 23:43:27 · 1879 阅读 · 0 评论 -
Spring基础(22)——AOP——Introduction
引入与其他类型的通知有所不同,因为其他类型的通知是在方法调用的周围织入到不同的连接点,而引入会影响整个类,可以通过给需要消息的类添加方法和属性来实现。可以用一个已存在的类让它实现另外的接口,维持另外的状态(这也称为混合)。使用引入能够动态的建立符合对象,提供了多态继承的好处。实现introductionInterceptor:Spring通过一个特殊的方法拦截器接口IntroductionInte...原创 2018-07-22 20:22:09 · 491 阅读 · 0 评论 -
Activiti6.0 Assignee CandidateUser CandidateGroup
在开发过程中发现,同时指定Usertask的Assignee CandidateUser CandidateGroup时,查询用户的待办任务时发现,只有Assignee的指定项才能查询到实际内容,而通过Group和User都不能查询到相应的待办任务,将Assignee属性删除后,则可以正常生效。...原创 2019-05-29 22:15:03 · 5859 阅读 · 0 评论 -
企业的代码发布解决方案
企业的代码发布解决方案小型公司(3-20台服务器)使用FTP之间上传代码到服务器(使用 rz 的方式)多使用PHP语言进行开发缺乏测试人员,对网站用户的体验比较差小公司上线的建议:(上线:提供服务 下线:停止服务 平滑上下线)开发人员在个人电脑要搭建LAMP环境测试好开发好的网站代码,要进过IDC机房的测试程序代码上线要规定时间,如3天一次,每次在17点左右,尽可能保证用户体验...转载 2019-06-23 01:17:41 · 123 阅读 · 0 评论 -
Redis
Redis特点: redis是一个开源的、BSD授权许可、高级的key-value存储系统,可以用来存储字符串、链表、哈希结构、集合(list、set、sorted-set),常用来存储数据结构服务。 redis和memcached相比: 1、redis可以用来做存储,memcached是用来做缓存。Redis可以将数据持久化,而memcached是将数据保存到内存中...原创 2019-06-24 01:26:09 · 90 阅读 · 0 评论 -
微服务开发技术栈
转载 2019-07-12 14:41:48 · 128 阅读 · 0 评论 -
SpringCloud——容错保护
SpringCloud提供Hystrix的库,支持微服务的容错保护Hystrix功能:1、对第三方接口、依赖服务潜在的调用失败提供保护和控制机制。2、隔离资源、降低耦合,防止服务之间的相互调用导致的级联失败。3、快速失败及迅速恢复。4、服务降级。5、近乎实时的监控、报警及控制操作。Hystrix原理:Hystrix基于断路器模式创建,即熔断机制,向调用方返回一个符合...原创 2019-07-19 10:57:44 · 559 阅读 · 0 评论 -
SpringCloud——服务治理
服务治理:服务治理是通过抽象将服务消费者和服务提供者进行隔离。服务消费者不知道服务提供者的真实地址,也不知道是谁在提供服务、有多少服务提供者。而服务提供者只需要将自己注册到治理服务器即可对外进行提供服务,也不需要知道具体哪些服务调用了自己。基于云服务治理的优点:更高的可用性、负载均衡、提升应用弹性、高可用性集群服务治理的3个部分:1、服务治理服务器(Eureka):服务注册中心...原创 2019-07-17 15:46:04 · 536 阅读 · 0 评论 -
SpringCloud——负载均衡
负载均衡(Load Balancing,LB),微服务架构之前主要采用的是集中式的负载均衡方案,采用独立的负载均衡系统,通常由专门的硬件如F5或者基于软件(HAproxy,Engix)等实现。这种集中式的负载均衡保存了所有服务的地址映射表,当需要调用某个服务时,先向负载均衡系统发送请求,再由负载均衡系统将请求转发给目标服务器。该架构会导致一些问题:1、单点失败导致整个系统应用失败:负载均衡系统...原创 2019-07-17 23:59:15 · 229 阅读 · 0 评论 -
Spring基础(16)——AOP——AroundAdvice
Around Advice是环绕通知,是最常用的通知类型。前置通知和后置通知分别在目标类方法的前后织入通知,但是如果同时使用这两种类型的通知,使用环绕通知同样可以实现效果。MethodInterceor能够控制目标方法是否真的被调用。通过调用MethodInvocation.proceed()方法来调用目标方法。这一点不同于MethodBeforeAdvice,目标方法总是被调用,除非抛异常。能够...原创 2018-07-06 00:15:59 · 304 阅读 · 0 评论 -
Spring基础(16)——AOP——AfterAdvice
AfterAdvice即后置通知,与前置通知用法相似,但是功能是想反的,后置通知是指在目标方法被调用后执行。实现后置通知必须实现AfterReturningAdvice接口,同前置通知一样,后置通知有机会得到调用的方法、传入的参数以及目标对象,亦可以获得被通知方法的返回值。这个接口返回的也是空值。虽然可以获得目标方法的返回值,但是不能替换返回值。与前置通知相同,改变执行流程的唯一方法就是抛出异常。...原创 2018-07-05 23:49:46 · 1082 阅读 · 0 评论 -
Spring基础(15)——AOP——BeforeAdvice
Spring运行时通知对象:代理Bean只有在第一次被系统需要时才创建。如果使用ApplicationContext,代理对象在BeanFactory载入所有Bean时被创建。因为Spring在运行时创建代理,所以使用SpringAOP不需要特殊编译器。Spring有两种代理创建方式。如果目标对象实现了一个或多个接口暴露的方法,Spring将使用jdk的java.long.Proxy类创建代理。这...原创 2018-07-05 23:32:26 · 648 阅读 · 0 评论 -
Spring基础(3)——控制反转、IOC
Spring各对象以一种松耦合的方式,将各层的对象组织在一起,Action不需要关心Service层的具体实现,Service对象无需关心持久层的具体实现,各层对象的调用全面向接口。当系统重构时,代码的改写量将大大减少。上面所说的一起都得益于Spring的核心机制——依赖注入。通过依赖注入,将Bean与Bean之间以配置文件的形式组织在一起,而不是以硬编码的方式偶合在一起。Spring的核心是IO...原创 2018-06-10 23:44:39 · 164 阅读 · 0 评论 -
Spring基础(11)——自动装配
自动装配类型:byname、bytype、constructor、autodetect1、byname根据属性名进行自动装配。此选项检查容器并根据名称查找与属性完全一致的bean,并将其与属性自动装配。使用byname自动装配类型时,对于设置的属性名字必须提供set方法,否则在启动Spring容器时,将会报出异常。package autowire;public class People { ...原创 2018-06-30 00:11:51 · 225 阅读 · 0 评论 -
Spring基础(2)——单例模式、工厂模式
就在几分钟之前,还在挖单例模式和工厂模式,发现越挖内容越多,越挖范围越广,感觉再挖我就爬不出来了,以后在慢慢挖吧,很多原理性的东西可能不是每次都能遇得到,但是熟悉理论知识以后,在后面的工作和学习中,遇到类似的问题,就算不能马上反应出问题出在哪,也能慢慢分析出问题原因并且知道搜索哪些知识可以解决问题。接着补Spring的相关知识。之前在挖的单例模式和工厂模式现在就能用上了。Spring使用配置文件管...原创 2018-06-07 01:26:23 · 472 阅读 · 0 评论 -
Spring基础(5)——装配Bean之Bean容器1——Bean工厂
Spring提供了两种不同的Bean容器,第一种是Bean工厂,由beanFactory接口定义,是最简单的容器,提供基础的依赖注入支持;第二种是应用上下文,由ApplicationContext接口定义,建立在bean工厂之上,提供系统框架服务。所谓装配Bean,是指告诉Spring容器需要哪些Bean以及容器如何使用以来注入将他们组合在一起。一、Bean容器SpringIOC设计的核心是Bea...原创 2018-06-13 00:41:13 · 570 阅读 · 0 评论 -
Spring基础(1)——Spring简介
很多东西可能用的比较老的,跟不上时代的发展和进步,但是基础都是想通相似的。但是,我想能作为教材进入大学课堂的知识,虽然可能会有写偏差,应当不是太严重把。Spring致力于J2EE应用各层的解决方案,而不是仅仅专注于某一层,Spring是企业应用开发的一站式选择。Spring贯穿表现层、业务层和持久层。但是spring并不是要取代已有的框架,而是高度开放性的与他们无缝整合。Spring只不过是一个框...原创 2018-06-05 22:47:11 · 184 阅读 · 0 评论 -
Spring-Security-OAuth2.0 了解(1)
一、简介资源所有者为了给第三方应用提供受限资源的访问权限,需要与第三方共享它的凭据。作为使用资源所有者的凭据访问受保护资源的替代,客户端获得一个访问令牌———一个代表特定作用域、生命周期以及其他访问权限属性的字符串。访问令牌由授权服务器在资源所有者认可的情况下颁发给第三方客户端。客户端使用访问令牌访问托管在资源服务器上的受保护资源。使用HTTP(RFC2616)协议设计。1、角色OAuth定义了四...原创 2018-06-03 18:34:35 · 466 阅读 · 0 评论 -
测试工具
集成测试工具ab:ab是apache http服务器基准测试工具。可以测试http服务器每秒最多可以处理多少请求。如果测试的是web应用服务,这个结果可以转换成整个应用每秒可以满足多少请求。工具非常简单,用途也有线,只能针对单个url进行尽可能块的压力测试。 更多信息参考http://httpd.apache.org/docs/2.0programs/ab.html。http_原创 2017-10-14 00:22:50 · 224 阅读 · 0 评论 -
关于Date的一个问题
public static void testDate() {String payTime = "2017-10-26 00:12:49";String expTime = "25";int expDay = Integer.parseInt(expTime);Date datePay = Tools.stringToDate(payTime);Date dateExp =原创 2017-10-26 00:59:17 · 280 阅读 · 0 评论 -
tomcat 出错卡死
在window2003 系统下运行tomcat5.5 当运行时代码中有控制台输出的语句,如System.out.println 或 e.printStackTrace() 时,当前线程会卡住,而且控制台没有任何输出,只要在运行的服务器上敲下空格或回车,才回有输出,该线程才恢复运行。 原因: 1 在控制台左上角鼠标右键,选属性2 看图上的解释,去掉那个快速编辑转载 2017-10-30 17:55:22 · 362 阅读 · 0 评论 -
Spring基础(7)——Bean的生命周期——BeanFactory中Bean的生命周期
因为一些事,已经有好几天没有更新过Blog了,今天花点时间继续补习Spring基础。在Spring中,容器实现有BeanFactory和ApplicationContext两种,ApplicationContext扩展了BeanFactory。简单来说Bean的生命周期分为定义、初始化、调用和销毁四个过程;但是在Spring的实际运行中非常复杂。通过getBean方法获取一个Bean:开始->...原创 2018-06-26 01:56:44 · 238 阅读 · 0 评论 -
Spring基础(12)——后处理Bean1
Spring提供了特殊的Bean,通过配置后处理Bean对Bean进行后处理;从外部配置文件中加载配置信息;从属性文件中加载文本信息,包括国际化信息;监听并处理由其他Bean以及Spring容器发布的系统消息等。Spring提供了一类Bean,并不对外部提供服务,无需id属性,但它负责对容器中其他的bean进行处理,例如为容器中的目标Bean生成代理。这种bean可称为bean的后处理器,在bea...原创 2018-06-30 23:42:14 · 199 阅读 · 0 评论 -
Spring基础(21)——AOP——动态PointCut
由于动态切入点除了要考虑方法的名称等静态信息外,还要考虑方法的参数。由于它是动态的,在执行时既要计算方法的静态信息,还要计算其参数,结果也不能被缓存。因此,动态切入点要消耗更多的系统资源。Spring提供的动态切入点的实现:ControlFlowPointcut:控制流程切入点。例如只有在某个特定的类或方法中调用某个连接点时,装备才会被触发,这时就可以使用ControlFlowPointcut,但...原创 2018-07-11 23:50:00 · 2295 阅读 · 0 评论 -
Spring基础(10)——基本Bean装配
1、使用XML进行装配基本结构<beans><bean id="" class=""><!-- 配置Bean及其协作者--><bean><!-- 配置更多的bean--></beans>使用Import加载<beans><import resourc原创 2018-06-29 01:10:05 · 125 阅读 · 0 评论 -
Spring基础(20)——AOP——静态PointCut
静态切入点只在代理创建时执行一次,而不是在运行期间每次调用方法时都执行,所以性能比动态切入点要好,是首选的切入点方式。在Spring中定义了两个静态切入点的实现类。StaticMethodMatcherPointcut:一个抽象的静态Pointcut,它不能被实例化。开发者可以根据自己扩展该类来实现自定义的切入点。NameMatchMethodPointcut:只能对方法名进行判别的静态Point...原创 2018-07-10 22:25:57 · 1268 阅读 · 0 评论 -
Spring基础(14)——AOP——面向切面编程
1、切面:切面(Aspect)是指需要实现的交叉功能。是应用系统模块化的一个切面或领域。切面常见的例子是日志。系统中到处都需要使用日志记录,利用继承来重用日志模块不合适。然而,可以创建一个日志记录切面,在系统中通过使用AOP技术来应用。2、连接点:连接点(Joinpoint)是应用程序执行过程中插入切面的地点。这个地点可以是方法调用、异常抛出,或者是需要修改的字段。在这些地方将切面代码插入到应用流...原创 2018-07-02 22:45:24 · 157 阅读 · 0 评论 -
Spring基础(19)——AOP——定义Pointcut
Spring通过Pointcut接口描述切点,Pointcut由ClassFilter和MethodMather构成,通过ClassFilter定位到某些特定类上,也就是类过滤。通过MethodMather定位到某些特定的方法上,也就是方法过滤。Pointcut关系图:1、类过滤Pointcut根据方法和类决定在什么地方织入通知。ClassFilter接口决定了一个类是否符合通知的要求,Class...原创 2018-07-08 22:47:06 · 792 阅读 · 0 评论