- 博客(97)
- 收藏
- 关注
原创 确认幂等性
在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建,一个是已付款。但是你先接收到已付款,然后又接收到了已创建......
2022-07-12 16:03:45
166
原创 计算机组成原理
文档:计算机组成与原理链接:http://note.youdao.com/noteshare?id=4f13f3b05b0135e983a15708cdae5e76
2022-02-23 22:48:16
454
翻译 为什么LINUX不需要碎片整理(Why Linux Doesn’t Need Defragmenting)
如果您是Linux用户,您可能听说过不需要对Linux文件系统进行碎片整理。您还会注意到Linux发行版没有提供磁盘碎片整理工具。但这是为什么呢?要理解为什么Linux文件系统在正常使用时不需要碎片整理——而Windows文件系统需要——您需要理解为什么会出现碎片整理,以及Linux和Windows文件系统的工作方式是如何不同的。碎片是什么许多Windows用户,即使是没有经验的用户,也相信定期整理文件系统会提高电脑的运行速度。很多人不知道的是为什么会这样。简而言之,硬盘驱动器上有许多扇区
2021-09-05 11:06:50
267
原创 shiro1.6升级到1.7后的问题处理
由于shiro1.6出现了安全漏洞,需要进行1.7的升级问题描述进行升级后有个url突然访问不了,HTTP返回了400,Invaild Request。接收的URL为 xxx/detail/{name}。前端传递的地址为 xxx%2fdetail%2f%e6%88%bf%e4%ba%a7(带有中文,已用URL编码)思路看到HTTP响应400,我在想是前端参数出了什么问题吗?还是后台接收参数改动了吗?看了git记录,这边没人改动,那这就很灵性了,只能通过调试找出哪个地方访问了400了,我
2020-11-29 13:36:59
10889
36
原创 manjaro 日常使用
重装后挂载硬盘1.sudo fdisk -l查看列表,找到自己要挂载的硬盘例如/dev/sda32.运行命令ls -l /dev/disk/by-uuid/查看UUIDlrwxrwxrwx 1 root root 10 6月 24 12:02 0009E26D0006ECF4 -> ../../sda30009E26D0006ECF4这个就是/dev/sda3对应的UUID,记录下来。3. 编辑/etc/fstab文件我的挂载点是/home/kaizen/data...
2020-08-21 11:24:18
728
转载 分布式事务五种方案
文章是转自中华石衫https://gitee.com/shishan100/Java-Interview-Advanced/blob/master/docs/distributed-system/distributed-transaction.md分布式事务的实现主要有以下 5 种方案:XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案两阶段提交方...
2020-05-01 11:40:53
267
原创 AbstractQueuedSynchronizer源码解析(AQS)
在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等类的基础...
2020-03-19 01:11:01
193
原创 线程池源码分析(三)
Executorsjdk带结尾带s都是工具,我们简单的说一下这个工具类生成一个固定大小的线程池: public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, ...
2020-03-11 00:09:51
142
原创 线程池源码解析(二)
接(一),我们看到AbstractExecutorService像 submit、invokeAny、invokeAll 等方法,它们都没有真正开启线程来执行任务,它们都只是在方法内部调用了 execute 方法ThreadPoolExecutorThreadPoolExecutor 是 JDK 中的线程池实现,这个类实现了一个线程池需要的各个方法,它实现了任务提交、线程管理、监控等...
2020-03-10 23:56:58
172
原创 IDEA jvm 调优
问题描述:内存8G,电脑开久IDEA了就卡,刚打卡项目也很卡。下载VisualVm和VisualGc插件原始参数:-Xms 堆初始化大小:512m 这里还是会慢慢扩容 可以使用# 强制JVM在启动时申请到足够的堆内存(否则IDEA启动时堆初始大小不足512m)#-XX:+AlwaysPreTouch-Xmx: 堆最大1024m最后那句-Dc...
2019-11-20 18:54:59
1058
原创 线程池源码解析(一)
首先先看一下线程池在平时的使用 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUn...
2019-11-20 00:30:46
165
原创 java8 时间处理笔记(常用)
1.获取两个日期时间差查看支持的时间单位 ChronoUnit类获取两个LocalDate的时间差 /** * 入住日期 */ private LocalDate checkinDate; /** * 离店日期 */ private LocalDate checkoutDate; long days =...
2019-04-30 16:30:34
604
原创 SpringBoot 跨域Filter
在@Configuration下的类加一个Bean配置 private static final int TOKEN_FILTER_ORDER = Integer.MAX_VALUE;/** * corsFilter * * @return */ @Bean public FilterRegistrationBea...
2019-04-26 18:48:46
489
转载 JAVA NIO
文章来自程序员乔里戈公众号(NIO) 库是在 JDK 1.4 中引入的,弥补了原来的 I/O 的不足,提供了高速的、面向块的 I/O。流与块I/O 与 NIO 最重要的区别是数据打包和传输的方式,I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。面向流的 I/O 一次处理一个字节数据:一个输入流产生一个字节数据,一个输出流消费一个字节数据。为流式数据创建过滤器非常...
2019-04-07 18:26:35
114
原创 堆,堆排序
很久没写博客了 还是抽时间写一写~堆用来做优先队列 插入与删除平均时间复杂度都为O(n),以链表实现插入是O(1),删除是O(n),数组实现反之JUC包就有优先队列的实现(后面深入并发后再补充)判断:叶子节点为左节点时是完全二叉树,叶子节点为右节点时,不连续紧密排列,非完全二叉树堆的定义:堆是一颗完全二叉树。堆的基本要求是堆中所有结点的值必须大于(或小于)其孩子结点的值。完...
2019-03-10 16:31:51
123
原创 2. 两数相加
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。package zwy.saas.app.base;import java.util.ArrayList;import ...
2018-12-03 20:19:16
160
原创 完美解决docx4j变量替换问题
最近工作上需要自己完成word文档变量替换的问题把里面的变量给替换成数据库里的值,但是由于在word文档渲染成xml的时候,会通过某些原因把字段放在不同层次的xml标签上面是docx4j文档说的原因,大概是字体格式不同(我的问题是用了粗体${和正常中文是不同格式的),拼写语法问题,编辑顺序。在StackOverflow找了很久解决方案,Variableprepare.pr...
2018-11-24 14:29:10
4453
转载 关于拦截器与过滤器使用场景、拦截器与过滤器的区别整理
转载自https://blog.youkuaiyun.com/qq_36411874/article/details/53996873过滤器在web.xml中配置:(1)因为一开始在过滤器中映射的url-pattern填写路径是*.action。所有的action要经过它的过滤。<url-pattern>*.action</url-pattern>(2)因为在web.xml...
2018-07-17 11:02:54
325
转载 分布式系统常用思想和技术
文章转载自https://blog.youkuaiyun.com/rickiyeat/article/details/78554894一、分布式系统的难点分布式系统比起单机系统存在哪些难点呢?1. 网络因素由于服务和数据分布在不同的机器上,每次交互都需要跨机器运行,这带来如下几个问题:1. 网络延迟:性能、超时同机房的网络IO还是比较块的,但是跨机房,尤其是跨IDC,网络IO就成为不可忽视的性能瓶颈了。并且,...
2018-07-12 11:44:49
293
原创 String
StringUtils.isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0StringUtils.isBlank(String str) 判断某字符串是否为空或长度为0或由空白符(whitespace) 构成主要的区别在于System.out.println(StringUtils.isEmpty(" ")); 输...
2018-07-11 16:13:34
225
转载 设计模式的使用场景
文章转载自:https://blog.youkuaiyun.com/wanglingxxx/article/details/52859815这个方便一下使用的时候查看 用得多了 自然会理解关于设计模式的总结1.抽象工厂: Factory提供一个创建一系列或相关依赖对象的接口,而无需指定他们具体的类。针对多级结构.抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。 产品族...
2018-07-04 16:48:34
496
转载 使用VisualVM远程监控Tomcat
这里补充一下 装一下VisualGC插件 更直观得看到信息用JVisualVM连接远程JVM,监控系统运行性能参数。作用:JVM和监控的应用程序运行在不同的服务器上,减轻应用程序的负担,特别是HeapDupm的时候,应用常能够续负担很大。1为 10.87.40.141 上的 tomcat 配置 jvm 启动参数。在 tomcat 的 catalina.bat 中添 加如下...
2018-07-03 10:17:33
1090
转载 确认幂等性思路
在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景:一个订单创建接口,第一次调用超时了,然后调用方重试了一次在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建,一个是已付款。但是你先接收到已付款,然后又接收到了已创建...
2018-07-02 18:14:43
548
转载 jdk8的特性--stream
转载http://www.cnblogs.com/CarpenterLee/p/6550212.html /https://blog.youkuaiyun.com/lz710117239/article/details/75579586你可能没意识到Java对函数式编程的重视程度,看看Java 8加入函数式编程扩充多少功能就清楚了。Java 8之所以费这么大功夫引入函数式编程,原因有二:代码简洁,函数式编程写...
2018-06-30 18:50:45
956
转载 TortoiseSVN 1.9.5安装 与 Eclipse4.4.2中安装SVN插件 图解详解
文章转载:https://blog.youkuaiyun.com/chenchunlin526/article/details/54631458TortoiseSVN 1.9.5安装 与 Eclipse4.4.2及以上版本中安装SVN插件 ---于2017-7-11编辑过1、先在本机安装TortoiseSVN 1.9.5①安装包官网下载地址: https://tortoisesvn.net/downloads...
2018-06-28 17:22:42
657
原创 SpringBoot集成百度ueditor富文本编辑器(实现自定义上传路径)
springboot默认不支持直接访问jsp 首先去官网下载源文件 将以下文件导入自己的项目本人使用的是4.1.13的按照教程你需要访问这里的jsp 其实这个jsp的作用也是获取同目录下的json文件来读取配置所以导致你获取不到config.json由于要用到文件上传 需要导入jar包 放在WEB_INF的lib目录下就行 然后右键项目buildpath一下我这里用maven <dep...
2018-06-28 15:44:01
5633
4
原创 代码生成器
笔者由于觉得很多东西都用工具可以做到很便利 公司由于换成Springboot和用Springdata JPA开发 所以本人觉得什么都要手写效率不高(觉得超级烦好不好)故使用freemaker生成了一些通用的代码这里生成用到了两种方式 一种用模板 一种直接在内存生成(字符串拼接)这里用maven来构建项目 后面会等基本功能完善好会扩展到项目里面 这里只能当初单独的生成工程来使用了...
2018-06-22 22:17:56
3128
原创 设计模式 链接
做一个链接方便自己也方便他人查看~设计模式(一)--创建型模式设计模式(二)--结构型模式设计模式(三)--行为型模式设计模式(四)--行为型模式理论其实有点基础看上面四篇文章的东西就可以了 看完你再来看一下UML图都没有太大的困难 我之前刚开始不理解找的几篇文章 反过头来就恍然大悟 做笔记这个习惯还是挺好的UML关系设计模式准备篇 笔记命令模式简单的策略模式观察者模式与发布/订阅模式区别...
2018-06-22 21:53:55
195
原创 设计模式(四)--行为型模式
其实每个设计模式都是很重要的一种思想,看上去很熟,其实是因为我们在学到的东西中都有涉及,尽管有时我们并不知道,其实在Java本身的设计之中处处都有体现,像AWT、JDBC、集合类、IO管道或者是Web框架,里面设计模式无处不在。本章不出意外的话,应该是设计模式最后一讲了,首先还是上一下上篇开头的那个图:本章讲讲第三类和第四类。19、备忘录模式(Memento)主要目的是保存一个对象的某个状态,以便...
2018-06-22 21:36:51
212
原创 设计模式(三)--行为型模式
行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类13、策略模式(strategy)策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口...
2018-06-22 19:14:28
204
原创 设计模式(二)--结构型模式
讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图:6、适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将S...
2018-06-22 00:42:01
161
原创 mysql 变量
SELECT ( @i := case WHEN car_lg =@pre_code THEN @i + 1 ELSE 1 END ) as aaa ,car_noFROM ( SELECT car_no,car_lg,(@pre_code := car_lg) FROM device_car a, (SELECT @i := 0, @pre_code := ''...
2018-06-15 17:30:14
1286
转载 序列化与反序列化(概念)
只有序列化的对象才可以存储在存储设备上。为了对象的序列化而需要继承的接口也只是一个象征性的接口而已,也就是说继承这个接口说明这个对象可以被序列化了,没有其他的目的。之所以需要对象序列化,是因为有时候对象需要在网络上传输,传输的时候需要这种序列化处理,从服务器硬盘上把序列化的对象取出,然后通过网络传到客户端,再由客户端把序列化的对象读入内存,执行相应的处理。 对象序列化是java的一个特征,通...
2018-06-15 17:00:57
151
原创 HOW Tomcat Work 笔记
第一章http请求 http响应socket一个httpservlet servetSockret main入口 有await方法 静态资源路径 里面调用request接收inputStream 和response 接受收outStreamrequest 里 parse方法解析http原始数据parseUri方法解析出URIgetUri方法返回urirespon
2018-06-15 16:53:41
412
翻译 java相关名词概念
服务器(server):服务器涵盖了几乎所有的大型机以及大部分中型机甚至一些小型机,通俗点话说就是24小时提供服务。操作系统:人们把一些与硬件紧密相连的又经常用到必不可少的功能做到一套程序中去这一套程序就被人们称做操作系统。表示层这一层一般在客户端pc机上,最常见的是IE浏览器,这就是表示层的软件表示层是直接与使用者交互的软件业务逻辑层这一层一般在服务器端,顾名
2018-06-15 16:49:08
646
原创 设计模式(一)--创建型模式
笔者根据https://blog.youkuaiyun.com/zhangerqing/article/details/8194653写的文章自己撸了一遍设计模式做四篇设计模式的文章巩固一下 设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编...
2018-06-09 12:17:00
213
原创 数据库三大范式
总共有八大范式:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。参考https://blog.youkuaiyun.com/qingking520/article/details/52937728和https://www.zhihu.com/question/246963661NF的定义为:符合1NF的关系中的每个属性都不可再分。◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成...
2018-06-09 11:47:40
244
原创 简单实现IOC
本人对IOC怎么实现的很好奇 思路完全按照 http://www.54sb.org/博主实现首先是包结构讲解一下思路 首先通过@initBean注解注入bean,然后定义一个初始化类的方法,用classUtil扫描包,扫描出包下有initBean注解的类 放入beanContainer容器里面然后在初始化类的方法里再定义一个方法,该方法用classUtil扫描包,扫描包下有writeBean的字段...
2018-06-09 11:42:46
224
原创 实现简单AOP
AOP都是使用设计模式的代理模式来实现的jdk的是通过动态代理 且目标类必须有接口为啥要有接口 https://blog.youkuaiyun.com/ray890206/article/details/70146029 这篇文章解释得比较简单易懂 笔者也无法分析好 所以建议还是百度一下 当然最后会有自己的看法现在先来实现JDK 的动态代理首先是需要被增强的目标类与目标类的接口public interface...
2018-06-08 21:17:07
1190
4
转载 jackson,fastjson,gson的对比与简易使用方法
JSON技术的调研报告一 、各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph...
2018-05-27 16:17:21
770
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人