自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 JDK并发包

中断响应的实现可以用reentrantLock.lockInterruptibly()方法获取锁,当目标线程调用interrupt()方法后,该线程将响应中断,并抛出中断异常,释放自己获得的锁的同时,如果有正在申请的锁,也会放弃对该锁的申请,从而让其他线程可以获得该锁。如下代码如果两个线程用的都是读写锁的读锁readLock.lock()那么他们就是非阻塞的不需要等待彼此的锁。否则不管是写写的情况,还是读写的情况都是阻塞的。固定数量的线程池,当有新任务时,如果有空余线程直接使用空余线程。......

2022-07-21 08:49:46 209

原创 算法树问题汇总

先遍历根节点,再遍历左子树,再遍历右子树即:A-B-D-F-G-H-I-E-C先遍左子树,再遍历根节点,再遍历右子树:A-B-D-F-G-H-I-E-C先遍左子树,再遍历右子树,再遍历根节点:F-H-I-G-D-E-B-C-A一层一层的遍历:A-B-C-D-E-F-G-H-I把任意树转化为二叉树用以下方法可以将任意树转化成二叉树,且可以恢复到之前的树任意节点左右子树高度差不超过1的二叉树参考:https://jarvan.blog.csdn.net/article/details/1124280

2022-06-11 20:51:43 181

原创 排序问题汇总

冒泡排序思路从头到尾比较相邻两个元素的大小,如果前面的元素比后面的元素大就交换他们的位置(从小到大排序)。这样第一次就会把最大的数排在最后,需要n-1次交换。然后重复上面的做法,因为第一次已经得到最大的数,所以第二次只需要n-2次交换操作,以此类推。算法复杂度计算o=n^2计算过程:代码//按照刚才那个动图进行对应//冒泡排序两两比较的元素是没有被排序过的元素--->public void bubbleSort(int[] array){ for(int i=0;i<

2022-05-04 22:01:58 313

原创 Keycloak详细教程

Keycloak安装&初始化下载只需前往 http://www.keycloak.org/downloads.html ,按需进行下载。笔者下载的是“Standalone server distribution” 。安装&启动安装Keycloak非常简单,步骤如下:解压下载下来的安装包将目录切换到KEYCLOAK_PATH/bin ,其中KEYCLOAK_PATH是您Keycloak的根目录执行./standalone.sh ,即可启动Keycloak,如需后台运行,则

2020-08-27 20:54:05 18073 8

原创 30分钟搞懂 RocketMQ原理

概述消息队列作用应用解耦:对系统之间的交互使用消息队列,降低系统之间的耦合.流量消峰:利用消息队列进行缓存,使短时高并发的任务,可以分散在一段时间内进行处理.消息分发:将数据写入消息队列,供个个系统之间进行订阅.保证最终一致性:通过消息队列的事物功能,保证两个系统的事物要么都成功要么都失败.RocketMQ优点1.基于java开发,易于优化和维护2.相较于rabbitMq吞吐量更好3.相较于kafka消息失败可以支持重试.4.经过阿里双十一的洗礼,对万亿级消息支持良好消息队列的选择1

2020-08-14 23:18:27 1919

原创 Java内存模型

java内存模型(JMM)定义来屏蔽各种硬件和操作系统的内存差异,以实现让java程序在各种平台都能达到一致的内存效果的模型。主内存与工作内存关系1.Java内存变量定义:包括实例字段,静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的。2.主内存与工作内存关系:所有变量都存储在主内存,工作内存保存了主内存的副本拷贝3.变量读取,赋值等操作都在工作内存中进行,不能直接读取内存变量。主内存与工作内存交互流程lock:作用于主内存变量,一个变量标识为被一条线程锁定的状态

2020-07-13 20:16:56 1638

原创 JVM java虚拟机-垃圾收集

引用计数法对象增加一个引用计数加1,失去减1判断对象是可以被回收1.引用计数为02.无法链接到“GC Roots”对象,GC Roots对象有:静态常量,静态对象,native对象,虚拟机栈对象(因此两个对象a,b如果互相引用,然后a=null,b=null,会被判定可以被垃圾回收;不需要stop the word,因为OopMap)四种引用类型1.强引用:即一般普遍的引用2.软引用:用SorftRefernce实现,在内存即将用完时,会被清理,使用场景网页缓存、图片缓存3.弱引用:弱引用通

2020-07-11 14:52:22 366

原创 JVM java虚拟机-Java内存区域

Jdk8之后的内存分区Jdk8之前的内存分区程序计数器1.可以看做当前线程执行字节码的行号指示器,用于控制java字节码执行到第几行。2.每个线程都有一个独立的程序计数器,从而实现切换线程后能恢复到正确的位置执行虚拟机栈1.生命周期与线程相同2.主要存放对象引用与基本数据类型本地方法栈为虚拟机的native方法服务Java堆存放对象实例方法区1.是各个线程共享的区域2.存放类信息,常量,静态变量修改java内存区域的大小1.修改java堆内存(xmx最大值,xms最小值)

2020-07-11 14:44:25 345

原创 Redis开发与运维教程

Redis 学习笔记Redis特性Redis可以做什么缓存;排行榜系统;计数器应用;社交网络:点赞,喜好,推送;消息队列。Redis为什么这么快1.通过内存访问数据2.采用非阻塞IO,不在网络IO上浪费过多时间3.单线程避免了线程切换和多线程竞争资源的问题Redis与Memcahce比较1.Redis为单线程系统,memcache为多线程2.Redis支持持久化,memcache不支持3.Redis天然支持主从复制,memcache需要自己实现4.Redis内存分配临时申请空间,存在

2020-07-06 22:07:14 3512

原创 java高并发程序设计-锁的优化

即对类似如下的方法改进为从而减少锁的持有时间。

2022-07-28 07:48:13 181

原创 java并行基础之注意事项

可以通过调用interrupt()方法中断线程,中断后当前线程的isInterrupted()会变为true,然后根据sInterrupted()的状态去做一些操作退出这个线程。需要注意的是如果线程调用了Thread.sleep(),会因中断而抛出异常,它会清除掉中断标记,所以有时需要在catch中重新调用interrupt().wait(),sleep()与suspend()的比较wait()需要在synchronized语句中使用,通过notify()唤醒其中一条wait的线程,sleep会让

2022-07-10 21:46:58 207

转载 算法复杂度计算

复杂度基础计算规则代码时间复杂度计算_牟小喵的博客-CSDN博客_代码的时间复杂度怎么算递归复杂度计算公式递归的实质以及递归时间复杂度的计算_sdr_zd的博客-CSDN博客_递归的时间复杂度计算复杂度比较...

2022-02-03 11:27:49 83

原创 3分钟搞懂 springBoot 初始化过程

初始化SpringBootServletInitializer通过new SpringApplication(primarySources)初始化SpringBootServletInitializer 相关源码代码:@SpringBootApplicationpublic class MySpringbootTomcatStarter extends SpringBootServletInitializer { public static void main(String[] args) {

2020-08-09 10:38:17 1906 1

原创 java虚拟机-解释器与编译器

Java最初通过解释器进行解释执行,为了提高代码执行效率,在运行时,对热点代码会把这些代码与本地平台相关的机器码。完成这个任务的编辑器称为即时编译器,简称JIT编译器。用户可以使用参数-Xint强制虚拟机运行与“混合模式”,使用-Xcomp强制运行与编译模式。热点代码有两类:1. 被多次调用的方法2. 被多次执行的循环体检查热点代码有两种方式:1.采用热点探测,查找经常出现的栈顶的方法2.基于计数器的热点探测:为每个方法或者代码块建立计数器,统计技术方法。HotSpot虚拟机采用第二种方式,为每

2020-07-12 22:36:58 540

原创 java虚拟机-类加载机制

概述虚拟机把类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。java类的加载,连接和初始化都是在程序运行时完成的,这种策略增加了一定开销,但是提高了灵活性,如:1.对于面向接口的编程,可以根据实际情况决定实现类2.用户可以自定义类加载器,让本地的应用程序通过网络或者其他地方加载一个二进制流做为文件。类加载时机五总初始化场景1.遇到new,getstatsic,putstatic或者invokestat

2020-07-12 19:00:45 360

转载 JDK和CGLIB动态代理原理区别

JDK和CGLIB动态代理原理区别JDK和CGLIB动态代理原理区别https://blog.csdn.net/yhl_jxy/article/details/806350122018年06月09日 18:34:17 阅读数:657 标签: JDK动态代理 CGLIB动态代理 动态代理 代理模式 更多个人分类: —Spring实战版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yhl_jxy/article/details/80635012一 J

2020-07-12 10:23:06 548

原创 阿里云RocketMQ_Exception]valid resource owner failed. maybe the resource wswy_tp_test_1 not created

这是我之前工作时遇到过的一个问题,在网上提供的解决方法都不可用,于是询问了阿里云的工单,终于解决了这个问题,现出把这个方法拿出来和大家分享: 1. instanceId是否有填,虽然给的demo说默认为空,其实不填就会报这个错,可能是由于mq版本升级的问题 2. 查看AccessKeyId对应的用户是否有操作mq的权限 3. 顺序消息类型不支持http请求(本人的项目就是由这个问题引起的,这个阿里云rocketmq的文档中没讲)保证上述1,2,3没问题就不会报这个错,希望可以帮到大家...

2020-07-08 21:38:52 4308 1

原创 springMvc+mybatis配置

web.xml:<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmln

2017-03-29 01:17:23 423

原创 springMvc+Restful+redis+rabbitMq+activti+mysql 架构图参考样例

2017-03-28 05:57:53 1127

原创 nginx负载均衡说明

负载均衡的五种算法:点击打开链接配置样例:在http{}中添加: upstream cluster { server 127.0.0.1:9080; server 127.0.0.1:8080; } server { listen 8000; location / { pro

2017-03-28 03:35:35 387

原创 nginx实现根据二级域名跳转到同一服务器的不同端口

反向代理设置:server { listen 80 default_server; #监听端口 root /mnt/aa; #访问根目录 index index.html index.htm; #默认页,可以不设置 server_name www.yanyusun.com; #根据域名跳转 location / {

2017-03-28 03:29:22 6977 1

原创 activti工作流表数据与用户自建表的数据的联合查询

了解activti请看:点击打开链接假设需求:查询当前用户在工作流程各个节点下的如下数据内容:节点列表为: 发布,一级审核,二级审核.已发布,已通过一级审核,已通过二级审核;这些内容都来自用户自己建的表数据,而运行到哪个节点与该节点的操作权限由activiti控制解决方案:1.根据流程图上的节点为请求带上标志为参数:即这里的id,该参

2017-03-26 00:35:25 607

原创 activit与spring的整合

applicationContext.xml配置:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframew

2017-03-26 00:26:09 279

原创 springMvc DispatcherServlet的初始化过程

1.web.xml文件配置:chapter2org.springframework.web.servlet.DispatcherServlet1contextConfigLocationclasspath:spring-servlet-config.xmlcontextConfigLocationclasspath:spring-common-config.xml,c

2017-03-25 21:25:59 600

原创 springMvc访问简介

原文地址:点击打开链接具体执行步骤如下:1、 首先用户发送请求————>前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图 2-1 中的 1、2 步骤;2、 页面控制器接收到请求后,进行功能处理, 首先需要收集和绑定请求参数到一个对象, 这个对象在 Spring Web MVC中叫命令对象

2017-03-25 20:39:21 296

原创 工作流activti使用简单样例

绘制流程图:为idea下载 bpmn插件:绘制流程图:数据库配置: 1.新建activiti.cfg.xml文件,mysql配置如下:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="htt

2017-03-23 22:52:08 1274

空空如也

空空如也

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

TA关注的人

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