- 博客(41)
- 收藏
- 关注
原创 java itext5 生成PDF并填充数据导出
**文本勾选框**,**页眉**,**页脚**,**图片**,Java, itext5,pdf
2023-12-27 15:48:27 1438 1
原创 自定义UI对象转流程节点
*** 递归 转 bpmnModel* @param childNode 数据节点* @param paramMap 流程参数* @param nodeId 路由节点 下游节点id (非路由节点传 null)* @param paramValueMap 启动流程参数 非启动时 null* @param keys 非启动流程时 不能为null 获取全部动态参数*/@Override//主线 结束 拼接 end节点endEvent.setName("结束");= null。
2023-10-08 10:47:29 294
原创 Java Jco SAP函数
(104) RFC_ERROR_SYSTEM_FAILURE: Error in module RSQL of the database interface.执行函数。原文地址:http://hi.baidu.com/gary_c/blog/calendar/200809/index/2。RFC接口调用SAP如果有异常会通过com.sap.mw.jco.JCO。返回的表没有值.那个表连第一行都没有,取不到。输入参数不能插入SAP函数输入字段中.组权限访问 server文件没更新.执行函数,函数的问题。
2023-10-08 09:46:51 276
原创 activitiy学习 (动态加签,动态流程图,指定节点跳转,指定多人节点跳转)
activitiy学习 (动态加签,动态流程图,指定节点跳转,指定多人节点跳转)
2023-02-15 15:45:14 8111 5
原创 Kafka基础原理
官方文档: https://kafka.apache.org/24/documentation.html#brokerconfigs日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。消息系统:解耦和生产者和消费者、缓存消息等。用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订
2023-02-11 11:45:51 375
原创 Redis分布式锁原理及性能优化
这样只要使用java提供的锁机制就可以解决并发访问带来的问题,但是分布式系统中,系统是多个,并且所使用的内存也是不同的,每个系统也都有独立的进程,这样Java提供的锁就没办法解决分布式系统中的并发访问问题。缓存层的作用就是分担数据库层面的压力,如果缓存层宕机,大量的请求就直接打到数据库,高并发下数据库有可能宕机。缓存层和数据库都没有数据,每次请求都会落到数据库,如果是高并发场景下,就会引起数据的压力剧增,甚至宕机。当同一时刻有大量的缓存失效,就会导致大量的请求打到数据库,会造成数据库压力过大甚至宕机。
2023-02-11 11:19:14 604
原创 Redis常见架构及其原理
主从架构:能解决读写分离问题,但是只有一个主节点,抗不了很高的并发,主从切换也不支持。哨兵架构:可以自动切换主从节点,但是仍然只有一个主节点,只解决了高可用。集群架构:解决了高可用、高并发问题,还引入了逻辑槽位,将数据进行分片存储,降低了单个小集群的读写压力,还支持水平扩展,整体提升了redis的性能。
2023-02-11 11:10:19 887
原创 springboot自动装配及启动原理
SpringBoot中众多的条件注解,都是基于Spring中的@Conditional来实现的。使用自定义条件注解@Overridetry {
2023-01-15 18:49:46 178
原创 MySQL之InnoDB引擎底层存储结构
如果我们只在内存的 Buffer Pool 中修改了页面,假设在事务提交后突然发生 了某个故障,导致内存中的数据都失效了,那么这个已经提交了的事务对数据库 中所做的更改也就跟着丢失了,这是我们所不能忍受的。有时候我们仅仅修改了某个页面中的一个字节,但是我们知道在 InnoDB 中是以页为单位来进行磁盘 IO 的,也就是说我们在该事务提交时不得不将一个完整的页面从内存中刷新到磁盘,我们又知道一个页面默认是 16KB 大小,只修改一个字节就要刷新 16KB 的数据到磁盘上显然是太浪费了。
2022-12-21 23:14:16 367
原创 MySQL优化实战
分析trace中的执行计划。可以有效分析建的索引为什么没有走。查看优化器如何选择执行计划,获取每个可能的索引选择的代价。TRACE 字段中整个文本大致分为三个过程。
2022-12-06 23:43:45 825
原创 Map底层原理
用于处理当key为null的元素,默认将该元素放置在数组的0号位置上,插入时,优先判断当前位置上是否存在key为null的元素,如果存在则进行覆盖并且返回旧值;否则,采用头插法将该元素插入。
2022-11-20 12:11:26 298
原创 深入理解线程池工作原理
主要优势:参数介绍创建线程池需要以下几个参数,其中有5个是必需的:什么是“非核心线程”呢?是不是先创建的线程就是核心线程,后创建的就是非核心线程呢?一个线程执行完了一个任务后,会去阻塞队列里面取新的任务,在取到任务之前它就是一个闲置的线程。取任务的方法有两种,一种是通过 take() 方法一直阻塞直到取出任务,另一种是通过 poll(keepAliveTime,timeUnit) 方法在一定时间内取出任务或者超时,如果超时这个线程就会被回收,请注意核心线程一般不会被回收。那么怎么保证核心线程不会被回收呢
2022-11-17 21:34:57 274
原创 AQS之ReentrantLock
java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer(简称AQS)实现的,AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。JDK中提供的大多数的同步器如Lock, Latch, Barrier等,都是基于AQS框架来实现的一般是通过一个内部类Sync继承AQS将同步器所有调用都映射到Sync对应的方法。
2022-11-12 13:48:44 356
原创 深入理解synchronized
在获取锁时,是将当前线程插入到cxq的头部,而释放锁时,默认策略(QMode=0)是:如果EntryList为空,则将cxq中的元素按原有顺序插入到EntryList,并唤醒第一个线程,也就是当EntryList为空时,是后来的线程先获取锁。用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机中分别为32bit和64bit,官方称它为“Mark Word”以上的结果可能是正数、负数、零。
2022-11-08 00:25:50 469
原创 深入理解CAS&Atomic原子类
CAS 可以看作是它们合并后的整体——一个不可分割的原子操作,并且其原子性是直接在硬件层面得到保障的。CAS可以看做是乐观锁(对比数据库的悲观、乐观锁)的一种实现方式,Java原子类中的递增操作就通过CAS自旋实现的。CAS是一种无锁算法,在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。
2022-11-02 22:08:28 230
原创 并发编程之深入理解JMM&Java线程
join可以理解成是线程合并,当在一个线程调用另一个线程的join方法时,当前线程阻塞等待被调用join方法的线程执行完毕才能继续执行,所以join的好处能够保证线程的执行顺序,但是如果调用线程的join方法其实已经失去了并行的意义,虽然存在多个线程,但是本质上还是串行的,最后join的实现其实是基于等待通知机制的。每个线程将由系统来分配执行时间,线程的切换不由线程本身来决定(Java中,Thread.yield()可以让出执行时间,但无法获取执行时间)。睡眠结束后的线程未必会立刻得到执行。
2022-10-30 21:51:07 534
原创 G1 收集器 介绍
G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多核处理器及大容量内存的机器。特点: STW停顿时间敏感,提升用户体验,高吞吐量,CPU利用率高。G1将Java堆划分为多个大小相等的独立区域(Region),每一个小方格代表一个Region,JVM最多可以有2048个Region。如图所示Region: 般Region大小等于堆大小除以2048,比如堆大小为4096M,则Region大小为2M。
2022-10-22 13:20:29 202
原创 《RocketMQ技术内幕》笔记
《RocketMQ技术内幕》笔记阅读源码的准备工作获取和调用RocketMQ源码IDEA获取RocketMQ源码IDEA调试RocketMQ源码RocketMQ目录结构RocketMQ设计理念与目标设计理念设计目标阅读源码的准备工作获取和调用RocketMQ源码IDEA获取RocketMQ源码IDEA调试RocketMQ源码RocketMQ目录结构RocketMQ 核心目 录说明如下broker: broker 模块(broke 启动进程)client :消息客户端,包含消息生产者、消息
2022-10-20 14:31:21 391
原创 JVM 垃圾收集器与收集算法 初探
不是Full GC,老年代的堆占有率达到参数(-XX:InitiatingHeapOccupancyPercent)设定的值则触发,回收所有的Young和部分Old(根据期望的GC停顿时间确定old区垃圾收集的优先顺序)以及大对象区,正常情况G1的垃圾收集是先做MixedGC,主要使用复制算法,需要把各个region中存活的对象拷贝到别的region里去,拷贝过程中如果发现没有足够的空region能够承载拷贝对象就会触发一次Full GC。每个对象有一个64位指针,这64位被分为。
2022-10-12 14:19:00 136
原创 JVM类加载,内存解析,分配
设计双亲委派模型有两个原因:沙箱安全机制:自己写的java.lang.String.class类不会被加载,这样便可以防止核心API库被随意篡改避免类的重复加载:当父亲已经加载了该类时,就没有必要子ClassLoader再加载一次,保证被加载类的唯一性应用程序类加载器 在加载时会优先往上找查看扩展类加载器是否已加载类, 已加载则直接返回,未加载则继续向上找查看启动类加载器是否已加载类,已加载直接返回, 依旧未加载时,才使用应用程序类加载器加载类(存在自定义类加载器时,也是依次向上找.)
2022-10-02 19:20:49 988
原创 ElasticSearch 集群搭建及相关原理解析
分布式系统的可用性与扩展性ES集群架构的优势:至关重要的作用blogs对应的架构对于生产环境中分片的设定,需要提前做好容量规划集群 statusGreen: 主分片与副本都正常分配Yellow: 主分片全部正常分配,有副本分片未能正常分配Red: 有主分片未能分配。例如,当服务器的磁盘容量超过85%时,去创建了一个新的索引CAT API查看集群信息:搭建三节点ES集群系统环境操作系统: CentOS7,准备用户eselasticsearch:elasticsearch-7.17.
2022-07-10 22:05:14 3165
原创 ElasticSearch 高级查询语法Query DSL 2
Elasticsearch除搜索以外,提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:聚合的分类Metric Aggregation:—些数学运算,可以对文档字段进行统计分析,类比Mysql中的 min(), max(), sum() 操作。Bucket Aggregation: 一些满足特定条件的文档的集合放置到一个桶里,每一个桶关联一个key,类比Mysql中的group by操作。Pipeline A
2022-07-04 20:47:57 1172
原创 Docker 部署 Nacos Spring Cloud
记录学习的每一小步Docker 部署 Nacos Spring Clouddocker pull Nacos 镜像及启动容器项目配置调整容器内访问ip调整生成jarDocker 部署 Nacos Spring Cloud项目搭建可以参考上一篇SpringCloud+Nacos 学习记录.docker pull Nacos 镜像及启动容器docker search nacosdocker pull docker.io/nacos/nacos-server:1.2.11.2.1 对应的版本号doc
2021-03-19 10:40:25 1077
原创 SpringCloud+Nacos 学习记录
记录学习的每一小步Spring Cloud + Nacos配置中心创建一个Spring Cloud项目添加依赖配置bootstrap.properties通过 Spring Cloud`原生注解 @RefreshScope 实现配置自动更新启动 Nacos 后,访问 iP:8848/nacos 登录账号/密码都是nacos启动项目 根据接口展示获取到的值,项目运行期间在配置中心修改并发布新的配置。刷新接口就能看到自动更新后的值了。注册中心在配置中心的项目代码上添加依赖配置bootstrap.properti
2021-03-18 15:58:12 506
原创 SpringCloud 初识四:Hystrix服务容错保护
HystrixHystrix服务降级通过上一篇 <SpringCloud 初识三:Feign>我们了解了feign消费服务的方式.本章将介绍服务容错保护工具:SpringCloud Hystrix通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力;Spring Cloud Hystrix具备了服务降级、服务熔断、线程隔离、请求缓存、请求合并以及服务监控等强大功能。Hystrix服务降级断开与有问题的服务访问,并快速返回定义的失败内容
2020-06-02 15:05:11 132
原创 SpringCloud 初识三:Feign
Feign创建一个module.主类配置通过上一篇 <SpringCloud初识一:eureka与server>我们已经成功注册了服务提供者,接下来我们将学习如何消费这些服务Feign是一个声明式 web 服务调用服务,他使得一切 web 服务得以简化。我们只需要创建一个接口并用注解和 JAX-RS 注解的方式来配置它,即可完成对服务提供方的接口绑定。创建一个module.依赖如下 <dependencies> <dependen
2020-06-01 14:47:48 141
原创 SpringCloud 初识二:服务消费与Ribbon负载
服务消费通过上一篇 <SpringCloud初识一:eureka与server>我们已经成功注册了服务提供者,接下来我们将学习如何消费这些服务1. 首先在Maven项目下创建一个server-consumer项目2.创建完之后注入RestTemplate@Configurationpublic class RestTemplateConfig { @Bean public RestTemplate restTemplate() { return
2020-05-28 13:53:25 136
原创 SpringCloud 初识一:eureka与server
eurekaSpringCloud的注册中心,管理注册的服务1. 创建一个Maven项目2. 配置下pom<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</versio
2020-05-27 17:53:47 320
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人