自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (8)
  • 收藏
  • 关注

原创 WebSocket用户验证

在WebSocket中,如何携带用户的验证信息。

2024-04-01 16:02:34 711 1

原创 修改Windows环境变量

Windows设置环境变量

2022-08-26 17:46:14 2615 2

转载 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 232

原创 java线程安全——原子操作

竞态条件和临界区多线程访问相同资源,对资源进行写操作时,对执行顺序有要求。public class Demo { public int i = 0; public void incr() { i++; }}临界区:incr方法内部就是临界区域,关键部分代码的多线程并发执行,会对执行结果产生影响。竞态条件:可能发生在临界区内的特殊田间。多线程执行incr方法中i++关键代码时,产生了竞态条件。共享资源:如果一段代码是线程安全.

2020-05-27 02:28:35 271

原创 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 160

原创 线程封闭(ThreadLocal,栈封闭即局部变量)

概念:数据封闭在各自的香橙中,不需要进行数据的同步,这种通过将数据封闭在各自的线程中,避免使用数据同步技术即线程封闭。线程封闭有两种方式:1、ThreadLocal线程级别的变量,每个线程都有自己独立的ThreadLocal的变量,在并发模式下是绝对线程安全的。ThreadLocal会在每个线程上创建一个副本,副本之间是彼此独立、互不影响的;可以使用ThreadLocal存放参数,方便在线程的多个方法中使用,用来代替方法传参。 public static ThreadLocal&

2020-05-24 23:59:04 193

原创 线程池

线程池的概念与数据库连接池的概念基本相似,线程池是为了控制线程的数量;线程是java中的一个对象,频繁的创建和销毁线程,都将消耗时间,降低程序的执行效率;过多的线程也将加速堆栈控件的消耗;更多的线程会导致操作系统频繁切换线程的上下文,拖慢系统的性能。线程池的内容:1、线程池管理器:用于创建并管理线程池;2、工作线程:线程池中的线程,循环执行线程池中的任务,没有任务则处于等待状态;3、任务接口:规定了任务的入口、任务结束后的操作、任务状态等;是线程池中任务必须实现的接口,供工作线程调用;

2020-05-24 23:37:28 282

原创 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 186

原创 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 194

原创 JAVA运行原理

一、Class文件内容class文件包含java程序所执行的字节码,数据严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符,文件以0xcafebabe(咖啡宝贝)这个特殊标志作为开头。文件内容包括:版本、访问标志、常量池、当前类、父类、接口、字段、方法和属性二、java运行时java文件(源代码) 经过编译器编译,生成 class文件(字节码),JVM(java虚拟机)加载字节码三、JVM运行时数据区共享部分:所有线程都能访问到的内存数据,随虚拟...

2020-05-23 23:38:37 165

转载 Redis命令

http://doc.redisfans.com/index.html

2020-04-14 15:06:46 117

原创 JPA添加唯一索引或唯一约束(Mysql测试通过 version 5.7)

------------------------------------------------------------------------------------------------网上提供的版本基本都是这个版本的居多,据网友测试说在oracle中测试是没问题的,在mysql中测试是失败的@Table(name = “表名”, uniqueConstraints = {@Uni...

2020-01-29 00:37:01 5428

转载 spring boot gateway 过滤器的执行顺序

spring boot gateway 过滤器的执行顺序前言学习官方文档,发现对于过滤器有分为三类默认过滤器 自定义过滤 全局过滤器于是就有一个疑问,关于这些过滤器的访问顺序是怎样的,今天就以一个demo来进行测试准备阶段过滤器工厂类以此为模板,复制出几份就可以了,注意打印信息,可区分就行public class ExampleGatewayFilterFact...

2020-01-23 03:09:33 756

原创 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 12501

原创 SpringCloud——容错保护

SpringCloud提供Hystrix的库,支持微服务的容错保护Hystrix功能:1、对第三方接口、依赖服务潜在的调用失败提供保护和控制机制。2、隔离资源、降低耦合,防止服务之间的相互调用导致的级联失败。3、快速失败及迅速恢复。4、服务降级。5、近乎实时的监控、报警及控制操作。Hystrix原理:Hystrix基于断路器模式创建,即熔断机制,向调用方返回一个符合...

2019-07-19 10:57:44 544

原创 SpringCloud——负载均衡

负载均衡(Load Balancing,LB),微服务架构之前主要采用的是集中式的负载均衡方案,采用独立的负载均衡系统,通常由专门的硬件如F5或者基于软件(HAproxy,Engix)等实现。这种集中式的负载均衡保存了所有服务的地址映射表,当需要调用某个服务时,先向负载均衡系统发送请求,再由负载均衡系统将请求转发给目标服务器。该架构会导致一些问题:1、单点失败导致整个系统应用失败:负载均衡系统...

2019-07-17 23:59:15 223

原创 SpringCloud——服务治理

服务治理:服务治理是通过抽象将服务消费者和服务提供者进行隔离。服务消费者不知道服务提供者的真实地址,也不知道是谁在提供服务、有多少服务提供者。而服务提供者只需要将自己注册到治理服务器即可对外进行提供服务,也不需要知道具体哪些服务调用了自己。基于云服务治理的优点:更高的可用性、负载均衡、提升应用弹性、高可用性集群服务治理的3个部分:1、服务治理服务器(Eureka):服务注册中心...

2019-07-17 15:46:04 475

转载 IntelliJ Idea 常用快捷键列表

Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,可以快速打开类C...

2019-07-14 23:18:52 156

转载 微服务开发技术栈

2019-07-12 14:41:48 124

转载 阿里巴巴Java代码规约

阿里巴巴Java代码规约插件安装https://www.jianshu.com/p/d1dda276c91c阿里Java代码规约插件有Eclipse插件和IDEA插件。Eclipse插件安装Eclipse版插件支持4.2(Juno,JDK1.8+)及以上版本,通过 Help-- Install New Software 然后输入https://p3c.alibaba.com/pl...

2019-07-11 22:03:56 786

原创 Redis

Redis特点: redis是一个开源的、BSD授权许可、高级的key-value存储系统,可以用来存储字符串、链表、哈希结构、集合(list、set、sorted-set),常用来存储数据结构服务。 redis和memcached相比: 1、redis可以用来做存储,memcached是用来做缓存。Redis可以将数据持久化,而memcached是将数据保存到内存中...

2019-06-24 01:26:09 82

转载 企业的代码发布解决方案

企业的代码发布解决方案小型公司(3-20台服务器)使用FTP之间上传代码到服务器(使用 rz 的方式)多使用PHP语言进行开发缺乏测试人员,对网站用户的体验比较差小公司上线的建议:(上线:提供服务 下线:停止服务 平滑上下线)开发人员在个人电脑要搭建LAMP环境测试好开发好的网站代码,要进过IDC机房的测试程序代码上线要规定时间,如3天一次,每次在17点左右,尽可能保证用户体验...

2019-06-23 01:17:41 119

原创 Activiti6.0 Assignee CandidateUser CandidateGroup

在开发过程中发现,同时指定Usertask的Assignee CandidateUser CandidateGroup时,查询用户的待办任务时发现,只有Assignee的指定项才能查询到实际内容,而通过Group和User都不能查询到相应的待办任务,将Assignee属性删除后,则可以正常生效。...

2019-05-29 22:15:03 5820

原创 达梦数据库查询表结构

因为客户要求使用达梦数据库,项目中又需要查询表的结构,同事没搞定,就交给我了。。。。  背锅查询据说达梦跟Oracle数据库的用法和形式都很像(暂时还不清楚他们俩究竟是什么渊源),直接就按照Oracle的用法去查了,发现确实挺像。。。。查询表字段:select * from user_tab_columns where Table_Name='TestDataBase';查询限制字...

2018-09-14 10:07:37 15148

原创 Spring基础(22)——AOP——Introduction

引入与其他类型的通知有所不同,因为其他类型的通知是在方法调用的周围织入到不同的连接点,而引入会影响整个类,可以通过给需要消息的类添加方法和属性来实现。可以用一个已存在的类让它实现另外的接口,维持另外的状态(这也称为混合)。使用引入能够动态的建立符合对象,提供了多态继承的好处。实现introductionInterceptor:Spring通过一个特殊的方法拦截器接口IntroductionInte...

2018-07-22 20:22:09 479

原创 Spring基础(21)——AOP——动态PointCut

由于动态切入点除了要考虑方法的名称等静态信息外,还要考虑方法的参数。由于它是动态的,在执行时既要计算方法的静态信息,还要计算其参数,结果也不能被缓存。因此,动态切入点要消耗更多的系统资源。Spring提供的动态切入点的实现:ControlFlowPointcut:控制流程切入点。例如只有在某个特定的类或方法中调用某个连接点时,装备才会被触发,这时就可以使用ControlFlowPointcut,但...

2018-07-11 23:50:00 2251

原创 Spring基础(20)——AOP——静态PointCut

静态切入点只在代理创建时执行一次,而不是在运行期间每次调用方法时都执行,所以性能比动态切入点要好,是首选的切入点方式。在Spring中定义了两个静态切入点的实现类。StaticMethodMatcherPointcut:一个抽象的静态Pointcut,它不能被实例化。开发者可以根据自己扩展该类来实现自定义的切入点。NameMatchMethodPointcut:只能对方法名进行判别的静态Point...

2018-07-10 22:25:57 1219

原创 Spring基础(19)——AOP——定义Pointcut

Spring通过Pointcut接口描述切点,Pointcut由ClassFilter和MethodMather构成,通过ClassFilter定位到某些特定类上,也就是类过滤。通过MethodMather定位到某些特定的方法上,也就是方法过滤。Pointcut关系图:1、类过滤Pointcut根据方法和类决定在什么地方织入通知。ClassFilter接口决定了一个类是否符合通知的要求,Class...

2018-07-08 22:47:06 762

原创 Spring基础(17)——AOP——Throws Advice

Throws Advice:指异常通知,用来处理在方法调用过程中产生的错误或抛出的异常。ThrowsAdvice定义在异常发生时该有什么动作。ThrowsAdvice是一个标识接口,它没有定义任何实现的方法。但是,实现这个接口的类必须至少有个如下方法:void afterThrowing(Throwable throwable)package test.advice;public class ...

2018-07-08 01:38:48 618

原创 Spring基础(16)——AOP——AroundAdvice

Around Advice是环绕通知,是最常用的通知类型。前置通知和后置通知分别在目标类方法的前后织入通知,但是如果同时使用这两种类型的通知,使用环绕通知同样可以实现效果。MethodInterceor能够控制目标方法是否真的被调用。通过调用MethodInvocation.proceed()方法来调用目标方法。这一点不同于MethodBeforeAdvice,目标方法总是被调用,除非抛异常。能够...

2018-07-06 00:15:59 292

原创 Spring基础(16)——AOP——AfterAdvice

AfterAdvice即后置通知,与前置通知用法相似,但是功能是想反的,后置通知是指在目标方法被调用后执行。实现后置通知必须实现AfterReturningAdvice接口,同前置通知一样,后置通知有机会得到调用的方法、传入的参数以及目标对象,亦可以获得被通知方法的返回值。这个接口返回的也是空值。虽然可以获得目标方法的返回值,但是不能替换返回值。与前置通知相同,改变执行流程的唯一方法就是抛出异常。...

2018-07-05 23:49:46 1056

原创 Spring基础(15)——AOP——BeforeAdvice

Spring运行时通知对象:代理Bean只有在第一次被系统需要时才创建。如果使用ApplicationContext,代理对象在BeanFactory载入所有Bean时被创建。因为Spring在运行时创建代理,所以使用SpringAOP不需要特殊编译器。Spring有两种代理创建方式。如果目标对象实现了一个或多个接口暴露的方法,Spring将使用jdk的java.long.Proxy类创建代理。这...

2018-07-05 23:32:26 615

原创 Spring基础(14)——AOP——面向切面编程

1、切面:切面(Aspect)是指需要实现的交叉功能。是应用系统模块化的一个切面或领域。切面常见的例子是日志。系统中到处都需要使用日志记录,利用继承来重用日志模块不合适。然而,可以创建一个日志记录切面,在系统中通过使用AOP技术来应用。2、连接点:连接点(Joinpoint)是应用程序执行过程中插入切面的地点。这个地点可以是方法调用、异常抛出,或者是需要修改的字段。在这些地方将切面代码插入到应用流...

2018-07-02 22:45:24 140

原创 Spring基础(13)——后处理Bean2

配置信息分离:PropertyPlaceholderConfigurer是BeanFactoryPostProcessor的实现类,用于读取java properties文件中的属性,然后插入BeanFactory的定义中。在应用上下文中从单个外部属性文件装载配置信息:配置单个文件:<bean id="configurer" class="org.springframework.beans....

2018-07-01 22:38:11 175

原创 Spring基础(12)——后处理Bean1

Spring提供了特殊的Bean,通过配置后处理Bean对Bean进行后处理;从外部配置文件中加载配置信息;从属性文件中加载文本信息,包括国际化信息;监听并处理由其他Bean以及Spring容器发布的系统消息等。Spring提供了一类Bean,并不对外部提供服务,无需id属性,但它负责对容器中其他的bean进行处理,例如为容器中的目标Bean生成代理。这种bean可称为bean的后处理器,在bea...

2018-06-30 23:42:14 189

原创 Spring基础(11)——自动装配

自动装配类型:byname、bytype、constructor、autodetect1、byname根据属性名进行自动装配。此选项检查容器并根据名称查找与属性完全一致的bean,并将其与属性自动装配。使用byname自动装配类型时,对于设置的属性名字必须提供set方法,否则在启动Spring容器时,将会报出异常。package autowire;public class People { ...

2018-06-30 00:11:51 215

原创 Spring基础(10)——基本Bean装配

1、使用XML进行装配基本结构<beans><bean id="" class=""><!-- 配置Bean及其协作者--><bean><!-- 配置更多的bean--></beans>使用Import加载<beans><import resourc

2018-06-29 01:10:05 119

原创 Spring基础(9)——Bean的生命周期——ApplicationContext中Bean的生命周期

开始->调用BeanFactoryPostProcessor的postProcessBeanFactory方法对工厂定义信息进行后处理->调用InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation()方法->实例化->调用InstantiationAwareBeanPostProcessor的po...

2018-06-27 00:15:50 184

原创 Spring基础(8)——Bean的生命周期——BeanFactory中Bean的生命周期

1、定义BeanBean定义包括的内容如下:全限定类名:通常是Bean的真正实现类,但是如果一个Bean使用一个静态工厂方法创建,而不是由普通的构造方法创建,那么这实际上就是工厂类的全限定名Bean行为配置元素:声明这个Bean在容器中的行为方式,例如:prototype或singleton,自动装配模式、依赖模式检查、初始化和析构方法;构造方法的参数和新创建Bean需要的属性:例如一个管理连接池...

2018-06-26 23:59:01 189

原创 Spring基础(7)——Bean的生命周期——BeanFactory中Bean的生命周期

因为一些事,已经有好几天没有更新过Blog了,今天花点时间继续补习Spring基础。在Spring中,容器实现有BeanFactory和ApplicationContext两种,ApplicationContext扩展了BeanFactory。简单来说Bean的生命周期分为定义、初始化、调用和销毁四个过程;但是在Spring的实际运行中非常复杂。通过getBean方法获取一个Bean:开始-&gt...

2018-06-26 01:56:44 227

若依WebSocket集成

若依WebSocket集成

2024-04-01

JVM指令码表.zip

java的字节码指令码表,根据class文件中的指令查询相应的操作。本来想不要积分的,但是收集资料不容易,还是要一个积分吧。

2020-05-23

Java虚拟机规范(Java SE 7).zip

Java虚拟机规范(Java SE 7).pdf JAVA必看内容,虽然版本有点老,有些地方可能有错误,但是中文版本的,可以先看一遍,再看英文的会方便很多

2020-05-23

Redis-x64-3.0.504+redis-desktop-manager-0.9.3.817

Windows版本的Redis服务端及客户端工具,服务端无需安装解压后直接运行即可;客户端Manage工具,需要安装,默认没有密码,直接访问

2019-06-24

VC番茄工具

番茄工具是一款很好的开发辅助工具,可以大幅提高开发速度,降低代码的错误率

2014-01-09

Win程序设计

学习windows程序设计的入门代码 欢迎下载

2013-10-13

j2me编程教学

没办法 压缩完有点大 只能分章节传了 这可以算是第一章吧 大致介绍 J2ME 和熟悉 eclipse 开发J2ME的 环境

2012-12-25

html超文本标记语言

html'超文本编辑语言,适合初学者使用

2012-12-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除