java
文章平均质量分 88
流火星空
七月流火,浩瀚星空
展开
-
地理位置数据存储方案——Redis GEO
地理位置数据存储方案之redis-geo探索:基础介绍与源码解析。原创 2022-06-26 12:14:31 · 7320 阅读 · 1 评论 -
Java 操作 Office:POI之word图片处理
系列文章:Java 操作 Office:POI 之 word 生成一 背景问题本系列旨在分享一些word操作框架POI的一些使用技巧,系统学习可直接参考官方文档,或上一篇中提到的Apache POI Word(docx) 入门示例教程。更多交流可添加公众号【程序员架构进阶】一起探讨。本篇是根据一个真实场景,探索的实现方法。我们有一些希望插入word的图片,在插入时也要对图片本身添加一些标注,例如红框标记等等,也可能是添加文字标注。如果是手工操作,这显然比较简单,使用美图秀秀、Photos原创 2021-08-07 12:20:19 · 1909 阅读 · 0 评论 -
Java 操作 Office:POI 之 word 生成
一 背景最近在项目开发中,有数据导出到word的需求。这就涉及代码生成word文档的操作,且有格式要求。 大家用word做过简历的都有了解,做简历时,会使用表格、图片、文字等元素。而且表格也可能有嵌套、合并单元格,以及插入图片到单元格的操作。该怎么做?二 Java操作Office方案百度一下Java Office操作,或者再直接一点搜索Java word,就比较容易搜到iText、POI等组件。在文章 Java导出word的几种方式 这篇文章中,提到了包括Jacob、Apache POI、J..原创 2021-08-06 19:22:37 · 1373 阅读 · 0 评论 -
权限与认证:JWT
一 背景最近在做的一个项目中,需要自己开发权限与角色功能,所以就再次调研了一下认证和授权框架及方案,JWT也是其中之一。因此做本篇整理。二 JWT简介及Token认证方案2.1 简介JWT,即JSON Web Tokens(JWT官网),也就是JSON结构的Web Token。完整描述参见rfc7519。JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transfe...原创 2021-06-03 21:11:13 · 338 阅读 · 2 评论 -
微服务注册中心:Consul——服务注册
系列文章:微服务架构:网关概念与 zuul微服务网关:Spring Cloud Gateway —— Zuul微服务网关:Spring Cloud Config- 配置中心微服务网关方案:Kong & NacosNacos 实践微服务网关:Nacos 源码实践(二)微服务注册中心:Consul——概念与基础操作一 简介微服务注册中心:Consul——概念与基础操作介绍了consul的安装和基本操作,本篇开始在consul上进行服务注册与发现,语言使用Java.原创 2021-05-27 19:44:14 · 940 阅读 · 0 评论 -
怎样做好服务提供方
一 摘要在日常的开发中,我们经常会接触到服务方、服务商、服务提供方这类的角色。简单来说,就是提供服务让我们使用。本篇会展开思考,如果我们作为服务提供方,那么应该做到哪些,才能保证服务的提供是“好”的。二 概念2.1 什么服务这个“服务”,可能是具体一点的资源对象,也可能是一些业务能力的抽象,还可能是支持类的能力提供。2.2 服务对象服务对象,可以理解为是我们的“客户”。大家有过相关经验的都能够理解,当面向不同的客户时,我们提供的内容或提供方式会有所差别,这是由客户本身的特性和需求决定原创 2021-05-23 21:20:00 · 256 阅读 · 0 评论 -
微服务网关方案:Kong & Nacos
系列文章:微服务架构:网关概念与 zuul微服务网关:Spring Cloud Gateway —— Zuul微服务网关:Spring Cloud Config- 配置中心公众号:程序员架构进阶一 摘要 前面我们介绍了 Spring Cloud 体系下的网关 Gateway(Zuul)。事实上,还有很多开源且广泛应用的网关方案,例如 Kong 和 Nacos。本篇将先介绍这两种网关,包括架构和主要原理,并给出集中网关方案的对比。二 Kong2.1 介绍 ...原创 2021-04-26 21:55:31 · 2735 阅读 · 0 评论 -
【Java 试题】AQS 解析
系列文章:【Java 试题】从一道题目再看 Java 继承公众号:程序员架构进阶一 背景AQS 即 AbstractQueuedSynchronizer,是 java.util.concurrent.locks 包的一个重要概念。Java 中锁实现/同步的几种方式:synchronized,ReentrantLock,CAS。其中,可重入锁 ReentrantLock 就是基于 AbstractQueuedSynchronizer(AQS)的。因此,理解 AQS 的实现原理,对 Java 锁原创 2021-04-08 10:39:19 · 239 阅读 · 4 评论 -
【leetcode题目】2. 两数相加
原题链接https://leetcode-cn.com/problems/add-two-numbers题目描述给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。我的题解链接:https://leetcode-cn.com/problems/add-two-numbers/solution/lian-b...原创 2021-04-01 16:15:17 · 367 阅读 · 0 评论 -
算法:求两个单向链表的最早公共交点
链接:https://mp.weixin.qq.com/s/A4jjclVpd7Q03yJfARR3DA公众号:程序员架构进阶一 题目 求两个单向链表的最早公共交点;如果没有返回null。二 解析 链表是单向链表,即只有指向下一个节点的指针,而没有反向;公共节点,指地址相同的节点。即假设链表L1中有一个节点node1,L2中有一个节点node2,node1 = node2,注:这里的“=”,指的是node1 和 node2是同一个节点,也就是说,L1 和 L2都持有了对一个节点的...原创 2021-03-29 22:40:16 · 382 阅读 · 2 评论 -
Mac 下 brew 更新及安装 Prometheus+Grafana
一 背景 近来在做容器研究,本地也打算做一次基于原生k8s的动态扩容。k8s提供了基于cpu和内存的扩容方案,但如果需要根据其他规则,例如接口访问次数等等,就需要其他的一些辅助工具,例如监控:prometheus。本篇先准备好相关环境,并了解Prometheus和Grafana的安装和基本配置使用方式。二 brew重新安装 尝试安装监控工具prometheus的时候,由于换了自己的旧电脑,发现brew install失败,报错信息如下:当然,已经尝试过了各种切换brew源,并...原创 2021-03-28 22:55:45 · 1974 阅读 · 5 评论 -
设计模式沉思录:一 资源池
文章首发链接:https://mp.weixin.qq.com/s/pUjm_u6xaoFreK_36qITcg公众号:程序员架构进阶一 摘要 在工作中,经常会看到或者用到池化技术,例如数据库连接池、线程池、内存池等等。这类池化技术在很多经典框架中都存在,并且是设计中的重要部分。本篇将分析几种常见的池化技术框架,并结合业务案例来做资源池设计探索。二 资源2.1 什么是资源? 资源,百度上的解释是生产资料或生活资料的天然来源。在生活中可能这样描述没有问题,但似乎无法更准确地圈定...原创 2021-03-28 13:51:01 · 1073 阅读 · 2 评论 -
【Mysql 实战】问题分析利器之 binlog
一 摘要在【Mysql-InnoDB 系列】事务提交过程及系列文章中,对mysql(InnoDB引擎)的redolog、undolog、binlog及事务的提交过程有了一些介绍,本篇将尝试去实践binlog在日常操作中的查看、分析方式,以及可能遇到的问题和解决方法。二 binlog的位置2.1 寻找方式2.1.1 文件遍历直接简单粗暴地根据命名查找,因为binlog文件通常都是mysql-bin.000001这样的明明方式,所以sudo find / -name mysql-bin.00原创 2021-03-23 16:58:27 · 398 阅读 · 0 评论 -
源码分析 Netty:核心组件及启动过程分析
系列文章:源码分析 -Netty:开篇源码分析 -Netty:多线程在 Netty 中的应用源码分析-Netty: 并发编程的实践(二)源码分析-Netty: 架构剖析源码分析-Netty: 高性能之道一 Netty核心组件1.1 ChannelChannel(通道)是 NIO 基本的结构。JDK的NIO包中,有Channel接口的介绍:A nexus for I/O operations.A channel represents an open connect原创 2021-03-22 18:25:23 · 293 阅读 · 0 评论 -
源码分析-Netty: 并发编程的实践(二)
摘要 前面一篇介绍了多线程在Netty中的大概使用情况,本篇将结合源码,详细描述使用方式,以及值得我们思考、学习和借鉴的地方。一 synchronized使用 关键字synchronized,我们在并发编程的艺术系列文章中有过描述,用于保证在同一时刻,只有一个线程能够执行某个方法或代码块。同步的作用,既有互斥,也有保证共享变量的可见性:当某个线程修改了变量值并释放锁后,其他线程可以立即获取被修改变量的最新值。 以ServerBootstrap进行分析。在类中,定义了一个final...原创 2021-03-16 10:01:46 · 224 阅读 · 0 评论 -
源码分析-Netty:多线程在 Netty 中的应用
系列文章:源码分析 -Netty:开篇一 Netty线程模型需要注意的是,Netty的线程模型并非固定不变,而是取决于用户的启动参数配置。通过启动参数的设置,Netty可以支持Reactor单线程模型和多线程模型。二 Java内存模型与多线程2.1 Java内存模型(JMM)Java的内存模型JMM,我们在并发编程艺术相关文章中有过详细的阐述。感兴趣的可以回顾文章:【并发编程的艺术】Java 内存模型总结。简单来说,JVM规范定义了Java内存模型,来屏蔽各种操作系统原创 2021-03-15 17:38:06 · 752 阅读 · 0 评论 -
dubbo 源码 v2.7 分析:通信过程及序列化协议
系列文章dubbo 源码 v2.7 分析:结构、container 入口及线程模型dubbo 源码 v2.7 分析:SPI 机制dubbo 源码 v2.7 分析:核心机制(一)dubbo 源码 v2.7 分析:核心机制(二)关注公众号:程序员架构进阶,每天实时获取更新,上百份面试资料和其他福利等你拿~一 摘要前面我们介绍了dubbo的核心机制,今天将开始分析远程调用流程。毕竟,作为一个rpc框架,远程调用是理论的核心内容。通过对dubbo相关实现的探究,深入了解rpc原理及可能的原创 2021-03-05 16:52:57 · 498 阅读 · 4 评论 -
dubbo 源码 v2.7 分析:核心机制(一)
系列文章dubbo 源码 v2.7 分析:结构、container 入口及线程模型dubbo 源码 v2.7 分析:SPI 机制一 回顾上一篇我们介绍了SPI机制。本篇会先介绍dubbo中的核心机制,包括设计模式、bean加载、扩展点机制、动态代理和远程调用流程。二 设计模式2.1 装饰器&责任链模式2.1.1 装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作原创 2021-03-02 10:30:56 · 241 阅读 · 0 评论 -
【Mysql-InnoDB 系列】锁定读
系列文章:【Mysql-InnoDB 系列】InnoDB 架构【Mysql-InnoDB 系列】锁【Mysql-InnoDB 系列】事务模型【Mysql-InnoDB 系列】关于一致读一 概念锁定读,是相对于一致(非锁定)读来说的。当我们在同一个事务(T1)中先读数据,然后执行插入或更新相关数据时,普通的SELECT语句并不能给予足够的保护。其他事务也可能更新或删除我们在T1事务中查询的相同行。InnoDB支持两种类型的锁定读,来提供额外的保护:1、SELECT ...原创 2021-02-27 07:21:24 · 254 阅读 · 0 评论 -
【转】优化Kubernetes上的JVM Warm-up
原文地址:https://zhuanlan.zhihu.com/p/352523219作者:iyacontrolJVM 预热(warm-up)是一个臭名昭著的问题。尽管基于JVM的应用程序有着出色的性能,但是需要一个预热的过程,在预热期间,性能不是最佳的。它可以归因于即时(JIT)编译之类的事情,它通过收集使用情况配置文件信息来优化常用代码。最终的负面影响是,与平均时间相比,在预热期间收到的请求将具有非常高的响应时间。在容器化,高吞吐量,频繁部署和自动伸缩的环境中,此问题可能会加剧。在这篇.转载 2021-02-25 18:15:03 · 348 阅读 · 0 评论 -
Spring框架源码整理:BeanFactory接口源码阅读
类路径:org.springframework.beans.factory.BeanFactoryBeanFactory是Spring IOC实现的基础,提供了getBean方法(),isSingleton(),isPrototype(name),isTypeMatch(),getType和String[] getAliases(String name)等核心方法。String FACTORY_BEAN_PREFIX = "&";接口中包含了一个成员变量,内容从变量命名上看,是fac原创 2021-01-05 11:09:19 · 217 阅读 · 0 评论 -
xxl-job使用问题整理
一 手动录入执行器 及其地址原创 2020-12-26 11:14:40 · 1555 阅读 · 0 评论 -
gitlab页面操作——引子
git操作大家都比较熟悉,命令行执行merge、 merge abort等也都比较方便。但有些场景,例如对master分支的操作,各公司处于安全的考虑,会加上比较严格的权限控制,也有些公司会限制在gitlab页面操作。这样就不太能像命令行一样随心所欲了。背景,一次上线操作,开发分支(dev)已经被合并到master,但上线后观察,依赖服务存在问题,导致需要回滚到旧版代码,gitlab页面操作回退的示例:1、进行Merge Requests列表,找到上线前的Merge Request记录:.原创 2020-12-26 10:48:18 · 793 阅读 · 0 评论 -
Idea应用启动时WEB-INF/lib无效标记问题处理
一 问题描述如图所示:问题:多module工程,sprintboot应用,启动执行时报错,信息为: Error:java:无效的标记: xxxx/src/main/webapp/WEB-INF/lib查看compiler.xml信息(如下图,在工程 =>.idea => libraries => compiler.xml):问题所在的位置是 <component name="JavacSettings"> 下,如下图:二 开发环境及版本信息.原创 2020-12-16 11:34:59 · 1385 阅读 · 0 评论 -
Java基础问题系列-同步之Synchronized关键字
一个问题,有简单的类如下,有一个静态synchronized方法,两个非静态synchronized方法,这个类的两个对象(实例):A,B,那么以下几种情况中,那种组合的方法执行会发生互斥(锁竞争)?1、SyncTest.method1,A.method1;2、A.method2, B.method2;3、SyncTest.method1,A.method2;4、A.method2,A.met...原创 2020-01-12 11:03:52 · 199 阅读 · 0 评论 -
JAVA的网络编程【转】
原文网址: http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html转载 2014-10-26 21:01:43 · 763 阅读 · 0 评论 -
java集合框架学习笔记
前段时间老师让看看java的基础,查了网上的一些资料加上自己的总结做了个word文档交给老师。当然问题很多,老师建议自己开个博客把所学的东西放到上面并定时更新,而且如果有人看到的话也可以提出好的意见有利于学习。想想也对,于是就厚着脸皮把东西贴上来了,希望能够作为自己学习的一个记录,如果大家有好的意见可以随时提出,让我能够更好的学习。先谢谢大家了。一、数组类ArrayJava中最基本原创 2012-04-15 21:42:02 · 708 阅读 · 0 评论 -
Java.math学习笔记
图片没有粘上。。。明天把代码直接贴出来吧,不用图片了。一 软件包 java.math 的描述 java.math包在API中的描述为:提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。BigInteger 除提供任意精度之外,它类似于 Java 的基本整数类型,因此在 BigInteger 上执行的操作不产生溢出,也不会原创 2012-04-16 23:20:10 · 2063 阅读 · 0 评论 -
Java.text包学习笔记
一 java.text包概述:Java API中对java.text包的描述为: 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。这意味着所编写的主程序或 applet 是与语言无关的,并且它可以依靠独立的、动态链接的本地化资源。这实现了随时为新本地化添加本地化的灵活性。这些类能够格式化日期、数字和消息,分析,搜索和排序字符串,以及迭代字符、单词、语句和换行符。java原创 2012-04-16 23:17:58 · 4895 阅读 · 0 评论 -
java.util
Java.util包 一描述包含集合框架、遗留的 collection类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。下图给出了java.util包的基本层次结构图。 ┌java.util.BitSet │java.util.Calendar │ └原创 2012-04-27 22:37:00 · 921 阅读 · 0 评论 -
根据URL加载图片并付给bitmap(微信分享中使用)
原文网址: http://xiaxveliang.blog.163.com/blog/static/297080342013827768676/转载 2014-10-20 13:00:27 · 942 阅读 · 0 评论 -
android播放器:mediaplayer之遇到的问题篇
题外话:阴错阳差地做了三四个月的android开发,终于要结束了。折腾了很久仍然没有得到满意的结果,搞得一团糟。不知道四天之后会是怎样,也许会就此离开,但还是坚持过剩下的这几天吧,尽力了就没有遗憾了。近几天的主要问题在于播放器。原来采用的方案最终发现存在问题无法实施,只好临时替换。想起最开始就曾经想用的android提供的VideoView和MediaPlayer组件,开始替换,然后就转载 2014-12-06 19:30:34 · 16768 阅读 · 1 评论 -
Java中request获取IP(转自推酷)
原文网址:来自推酷 - http://www.tuicool.com/articles/Nfmyqy其基本逻辑为先取得配置的IP列表,然后通过request.getRemoteAddr()取得客户端的IP地址,做鉴权和校验,逻辑没问题,那么肯定是request.getRemoteAddr()出了问题,google下,发现有人遇到类似的问题。最终定位为request.ge转载 2015-03-03 11:26:57 · 660 阅读 · 0 评论 -
java读写Mysql数据库乱码
写代码又遇到了万恶的中文乱码问题,比较奇怪的是server上已有的代码,在链接时通过"useUnicode=true&characterEncoding=gbk"转码后无乱码,但在本机上使用同样的代码读写得到的确实中文乱码。数据库是远程server,环境不能改动,在网上搜到的大部分方法都是抄来抄去且不能解决实际问题的方法。所幸搜了半天还是找到了一个。查看server数据库编码,执行sql:“ sh原创 2015-06-26 23:12:14 · 2306 阅读 · 0 评论 -
Thrift学习笔记
参考文章 IBMDeveloper works网址:http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/文章标题:Apache Thrift - 可伸缩的跨语言服务开发框架Thrift定义:Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。可知是与Webservice 【基于SO原创 2016-06-21 20:02:51 · 618 阅读 · 0 评论 -
Maven学习记录
1、maven简单项目创建最简单的demo开始,eclipse中,file-->new-->maven project,创建simple project创建之后报错,问题为:Could not calculate build plan: Failure to transfer org.apache.maven.plugins:maven-surefire-plugin。。。问题解决方法原创 2017-02-19 23:31:28 · 714 阅读 · 0 评论 -
微软云Blob存储账号使用——Java使用
项目中使用了微软云提供的服务,包括虚机、存储、虚拟网络、存储账号等等。官网上有1元体验的服务,于是申请了一个账号进行了测试。本系列文章主要用于记录/学习和使用过程中遇到的一些问题和解决步骤,作为后续的技术储备和问题备忘。目前,非官方总结的文档数量和覆盖度还是不够高,所以目前还是只能依赖官网的文档进行使用和开发。好在相对还是比较完整的,尽管有些地方存在说明不够详细的情况。可以参考的文档主要有这两原创 2017-08-20 21:59:05 · 3748 阅读 · 0 评论 -
Java IO学习笔记(JDK1.5)
一流对象简介Java的io流用来处理数据,实现数据和流对象之间的转换。Java的IO分类:根据处理数据的类型,流对象包括字符流和字节流;从流向来分,可以分为输入流和输出流。字节流的基类包括InputStream,OutputStream,是两个抽象类,其他以字节为导向的流都继承自这两个基类。字符流的两个基类:Reader,Writer。字符流与字节流的区别:1、字节流进行数据的读取原创 2012-04-24 16:30:53 · 1037 阅读 · 0 评论