自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈浩的博客

编程随笔

  • 博客(116)
  • 资源 (1)
  • 收藏
  • 关注

原创 一文带你深入了解 java和函数式编程

朋友, 进来看看呗~不变性是函数式编程的核心原则之一。例如Clojure,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这对于并行程序来说,bug会大大减少。java中可以通过final来实现。不可变的数据结构所有字段都是不可变的,其嵌套数据结构也要满足不可变性。除构造函数外应该没有其他的`set`方法。

2021-01-14 15:14:15 1400 5

原创 一文搞懂: 响应式编程是什么?

当一个系统具有即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)以及消息驱动(Message Driven)。 我们称这样的系统为反应式系统(Reactive System)。

2021-01-10 16:09:15 9210 9

原创 我用一张图彻底了解 SpringAOP 切面表达式

execution是最常用的PCD。它的匹配式模板如下展示: ```javaexecution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)execution(修饰符匹配式? 返回类型匹配式 类名匹配式? 方法名匹配式(参数匹配式) 异常匹配式?)```代码块中带`?`符号的匹配式都是可选的,对于`executi

2021-01-08 14:10:28 4923 12

原创 你真的知道Optional怎么使用吗?

Null可以带来一大堆问题,不提神出鬼没的NullPointException,就算采用防御式编程,代码中也会充斥着各种嵌套的null检查。而且这也破坏了java设计的哲学,java是一直试图避免让程序员意识到指针存在而努力的! Optional的设计思想很简单,就是对值包一层,如果`没有值`,就给出`Optional.empty()`,原理就如下图所示:

2021-01-07 20:07:08 2437

原创 一篇文章快速搞懂 AOP和SpringAOP

随着软件世界不断复杂化,传统的OOP(面向对象)建模思路已经不足以很好的处理好开发时所面临的种种挑战,AOP(Aspect Orient Programming)应运而生,它和OOP建模方式并不冲突,它是OOP编程的一种有效补充。OOP面向名词领域建模,使用类作为单位来模块化目标系统,而AOP面向动词领域建模,其模块化单位则是`Aspect`:切面。常见于处理一些具有==横切性质==的系统级服务,例如: `日志管理、事务管理、安全检查缓存、对象池管理等`。

2021-01-07 09:52:42 1149 3

原创 10分钟入门SpringAOP

SpringAOP切面核心就一个地方: 被`@Aspect`注解的类,将这个类注入IOC容器中。之后在其中使用advice注解定义横切逻辑(利用`@Around、@After等`)。环绕切面配合`ProceedingJoinPoint`类使用,其他切面看情况使用`JoinPoint`或不带参。

2021-01-07 09:50:48 1301 2

原创 JMH入门实战,这篇就够了

文章目录一、JMH介绍1.1 JMH是什么1.2 为什么需要基准测试二、JMH基础使用2.1 POM依赖2.2 BenchMark代码2.2.1 @BenchmarkMode(Mode.AverageTime)2.2.2 @OutputTimeUnit(TimeUnit.MICROSECONDS)2.2.3 @State(Scope.Thread)2.2.4 @Benchmark2.2.5 @SetUp2.2.6 @TearDown三、JHM实战注意四、相关链接五、参考链接一、JMH介绍1.1 JMH是

2021-01-06 18:00:20 2048 1

原创 分布式事务,这篇够了

生活就像海洋,只有意志坚强的人,才能到达彼岸 —— 马克思文章目录一、导读二、分布式理论CAP理论BASE理论: AP理论的衍生三、分布式解决方案2PC策略原子性保障隔离性保障小结TCC协议原子性保障一致性保障隔离性保障Saga 协议小结四、参考文章一、导读事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,保整原子性、持久性、隔离性(执行过程中互不可见)、一致性,提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。分布式事务可以看为两块,一个是serv.

2021-01-03 23:45:01 3662 7

原创 [别翻了,这篇搞定] java中断机制

福祸由天不由我,我命由我不由天。一、导言线程A对线程B发出建议: 你好,可以停止了哟~在实际生产环境中,对于阻塞任务,可能存在一些情况导致阻塞任务取消、终止,例如: 计时器到期,I/O 完成,或者另一个线程的动作(释放一个锁,设置一个标志,或者将一个任务放在一个工作队列中)。这种情况下可以使用java的中断机制来进行线程间通信。java线程中断的实现是基于一个称为中断状态的内部标志位来实现的,其中断的含义更像是建议,一个线程如何响应另一个线程的中断完全取决于程序员: 继续向上抛出、封装后抛出.

2021-01-02 22:25:53 4358 8

原创 [java并发]深入浅出条件队列-wait、notify、notifyall

君子生非异也,善假于物也 —— [荀子]·[劝学]一、导言条件队列灵活,但用错也十分容易。一般来说能用BlockingQueue、Latch、Semaphore、Future等高级工具实现的就不要直接使用条件队列。 ——<<java并发编程实战>>java的内置的条件队列存在一些缺陷,每个内置锁(基于synchronize块)都只能有一个关联的条件队列,因此可能存在多个线程因不同的条件谓词不满足而在同一个条件队列上。这个特性很可能就会导致"通知丢失"(不使用notify.

2020-12-30 16:04:01 4836 8

原创 用户研究-妈咪测试

向正确的人 问正确的事。 --- 探究你的想法是否可行,这会为你节约时间和金钱,免除日后的困苦。

2023-07-08 16:28:23 330

转载 关于中台的思考和复盘

对于业务中台,微服务、网关、REST API 及语义化版本控制、六边形架构是侧重于技术架构的方法论,DevOps、敏捷项目管理是侧重于流程层面的方法论,领域驱动设计(DDD)是侧重于业务架构的方法论。在代码难以管理的时候----这是必然会出现的,不是有了中台就好管理了,看看接入中台前后的代码量变化就知道了----实现必要的重构。前台服务单个业务,目标是这个业务的增长,前台必须紧贴业务做好差异化,在竞争激烈的环境,前台需要有足够的创新能力,通用化的中台服务和创新能力冲突。中台的推行机制往往是个掠夺的过程。

2023-05-09 10:14:32 225 1

原创 模仿 java Optional 设计 c# Optional

c sharp Optional 避免空指针 🌿🌿🌿

2023-04-08 14:49:35 277 1

原创 无自动化测试系统设计方法论

这一切都需要 一点代价, 但是相对于 单元测试来说, 代价还是轻微很多。

2023-02-26 18:07:24 489

原创 谦卑对象设计模式

谦卑对象模式‘最初的设计目的是帮助单元测试的编写者区分容易测试的行为与难以测试的行为,并将它们隔离。其设计思路非常简单,就是将这两类行为拆分成两组模块或类。其中一组模块被称为谦卑(Humble)组

2023-02-26 18:02:22 663

翻译 [中英对照] Final IK Main

FInal IK main

2022-08-19 11:14:36 275

原创 DDD-CQRS

CQRS: Command Query Responsibility Segregation。CQRS理论认为对于复杂的模型展示和模型存储逻辑,将查询和命令逻辑分开会比不分开好。这里的查询和命令模型(model)指的是内聚的、有责任模块。读写功能分开开发,并且高度内聚。例如: 用户发起的命令逻辑(例如修改)会自动通过内存\数据库\其他通信方式(例如事件) 在查询模型中显示。适用场景CQRS 非常适合基于事件(读事件和写事件)的编程模型–>基于事件的模型往往是最终一致性的,而CQRS可以很好的在[[最

2022-06-04 14:35:21 421

原创 [一文搞定] java线程池技术

文章目录池化思想线程池的开销和好处线程池定义常见误用java实现线程池线程: java.lang.Thread线程池实现线程池状态阻塞队列拒绝策略Worker添加worker回收worker预热 WarmUpThreadPoolExecutor 钩子 扩展点线程池编程: 异常处理线程池注意事项多线程编程最佳实践常见场景线程池caseStudy参考链接池化思想核心思想是空间换时间,期望使用预先创建好的对象来减少频繁创建对象的性能开销,同时还可以对对象进行统一管理,减少对象使用成本。 池子中的对象在需要在

2021-07-13 22:34:06 336

原创 自由经济体制的问题

经济学的思维方式有感最近在看<<经济学的思维方式>>这本书,里面大力推广自由市场的理念,任务政府的干预会导致价格失控,供给退出市场,进而削弱需求,最终导致情形朝着和预期相反的方向前进。书中认为"价格反应了基本现实的信息",通俗简单一点可以说是"越贵东西越好"。书中认为政府对市场的干预会导致市场紊乱,原本要给弱势群体的福利却最终给了富人。原因在于富人能够在"达尔文社会"中脱颖而出。书中对于"自由市场"的观点我觉得过于绝对,不符合马克思的"辩证法"。对于自由经济自然有他的好处,

2021-03-19 19:54:47 2263 2

原创 深入java注解开发 + spring注解开发

基于java1.8java注解: 介绍关于『注解』和『XML』两种不同的配置模式,争论了好多年了,各有各的优劣,注解可以提供更大的便捷性,易于维护修改,但耦合度高,而 XML 相对于注解则是相反的。追求低耦合就要抛弃高效率,追求效率必然会遇到耦合。所有的注解都实现了java.lang.annotation.Annotation这个接口。所有的注解本质上都是接口。一个注解如果没有对应的处理器的话,其实就当于注释。注解处理器一般来说有两种实现(下文会给出示例),分为编译期扫描、运行时反射。注解.

2021-03-07 17:32:42 684 2

原创 Error:java: 服务配置文件不正确, 或构造处理程序对象

在学习注解处理器使用的时候,依据这个学习,完成后build,报了个错误:Error:java: 服务配置文件不正确, 或构造处理程序对象javax.annotation.processing.Processor: Provider annotation.MyProcessor not found时抛出异常错误我是使用maven的,不是使用教程的gralde,网上查找一番后,得到结果:<plugin> <groupId>org.apache.maven.plugins&

2021-02-19 15:57:50 5589 3

原创 反脆弱 : 如何在复杂世界越变越强

反脆弱指遭受"破坏"后事物会更强壮、更好。反脆弱等于健壮性+一定概率捕获黑天鹅。在复杂系统中,规律往往不是线性的,而是非线性存在的,随机事件(风险)难以预测和把控,作者提出了不在乎随机事件风险本身,而是直接关注事物本身的脆弱性和反脆弱性。通过合理的配置,拥抱随机性,捕捉利好的随机、承受有一定损失的随机,从而变得更强。反脆弱的原理有点类似与进化算法,对于复杂系统,使用"突变、交叉"的手段产生变体,进而不断逼近最优解。而与之不同

2021-02-04 10:25:40 345 6

原创 你知道shell如何递归操作文件吗?

shell如何递归操作文件呢?说到递归,就很自然的使用递归函数,废话不多说直接上代码:function recur(){ echo $1; cd $1 # 进入对应目录 for f in $(ls .);do # 在对应目录ls,遍历其下的文件 if test -d $f;then # 如果是文件夹则递归调用本方法 recur $f else # 否则做一些操作 # 这里可以添加对非文件夹文件的操作

2021-01-15 12:47:21 2423

原创 Future使用的这个坑你知道吗?

我做了下测试,发现Future如果没有调用`get()`方法不会抛出异常。经过我深入观察发现: 其实这个不是Future的锅,是`java.util.concurrent.ThreadPoolExecutor`的问题!

2021-01-13 19:10:35 1450

原创 [看源码神器]idea如何修改源码

下载源代码java8源码下载下来后解压关联自定义源码source修改源码关联source之后导入关联的源码文件夹就好。

2021-01-13 12:46:28 2995 1

原创 junit在main线程执行结束时就会退出执行

junit在main线程执行结束时就会退出执行junit不支持多线程测试,junit在main线程执行结束时就会退出执行。至于为什么会这样,网络上找了一些文章:// junit.textui.TestRunner#mainpublic static void main(String args[]) { TestRunner aTestRunner = new TestRunner(); try { // 开始执行测试代码 TestResult r =

2021-01-12 19:58:22 839 3

原创 一文搞懂: java是如何支持函数式编程的

文章目录java对函数式的支持函数式接口lambda表达式方法引用模式匹配java对函数式的支持java8提供了lambda表达式、方法引用、预定义函数接口来适配函数式编程。java将lambda表达式看做函数式接口的对象实例,但这在设计层面上就已经满足一等值的概念了。函数式接口jdk已经提供了一系列的函数式接口(Package java.util.function)了,例如Consumer、Supplier、Function、Predicate以及其他的出于拆箱装箱性能损耗的DoubleCons

2021-01-11 18:13:59 476 2

原创 写给大忙人看的: java和函数式编程

此处的函数不同于OOP中的方法,可以理解成数学中的`函数`,是一种将输入集与输出集关联的表达式。和命令式编程不同,函数式编程只取决于它的输入,不依赖于函数外状态。

2021-01-10 22:53:49 214

原创 最通俗易懂的HashMap深度解析

文章目录导言Hash表什么是Hash表为什么要Hash表Hash表核心原理核心概念Hash表hash函数常见冲突解决方法开放地址法(再散列法)再哈希法链地址法(拉链法)java HashMap原理浅析java HashMap核心AIP查增删其他快速失败机制 Fail-Fast总结参考文章导言数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。常见的

2021-01-07 19:21:25 601 2

原创 idea httpClient 如何传list参数

最近在idea的http插件调试restapi程序,遇到了如何传递list参数的问题。解决后抛出来给大家看看:java controller示例@RequestMapping("/test")public void capture(@RequestParam("list") List<Integer> list) { System.out.println(list);}url示例GET http://localhost:8080/test?list=1&list=2

2021-01-07 13:31:54 2438

原创 [学习能力]结构化你的学习能力: 十步学习法,你学会了吗?

不要用战术上的勤奋掩盖战略上的懒惰。 —雷军文章目录导言前期准备第一步: 了解全局第二步: 确定范围第三部: 定义目标第四步: 寻找资源第五步: 创建学习计划第六步: 筛选资源小结后期实战第七步: 开始学习,浅尝辄止第八步: 动手实践,边玩边学第九步: 全面掌握,学以致用第十步: 乐为人师,融会贯通总结参考文章导言最近在看<<软技能— 代码之外的生存指南>>这本书,其中提到了“十步学习法”,对我很有启发,拿出来和大家讨论分享下。十步学习法顾名思义共分为.

2020-12-31 16:45:54 1213

原创 [java8]深入浅出-方法引用

无论明日,有多落魄,至少今天,没有蹉跎。 《人性的优点》一、背景java8是一个跨越式的版本更新,首次把函数当做一个"值"(以等值)来进行传递、动态生成、赋值。而不是看做类、接口(二等值)一个层次的东西。编程语言的整个目的在于操作之,这些值被叫做一等值。编程语言中的其他结构有助与表示值的架构,但在程序执行期间不能传递因此是二等值。1.1. 设计原因lambda表达式在java8的函数式编程中起到了关键作用,而方法引用则是对lamda的一个有力补充。对lambda的简化: 如果只是简单的.

2020-12-30 17:01:09 1136

原创 [沟通能力] 述职,你搞定了吗?

恐惧大都因为无知与不确定感而产生。—— <<人性的弱点>>导言工作的本质在于通过群体活动来达成一个阶段性目标。作为程序员,沟通是必不可少的,而每次季度总结、年度总结,都是对自身沟通能力的一项大考。述职的本质述职是一种群体性的工作总结、自我剖析、对标学习、互相反馈的会议机制。述职过程可以通过自我反馈、同事反馈的方式来多维度的对自己个人成长和阶段性工作的复盘。同时也可以横向了解同事、团队的工作,寻求更积极的合作方式,进而实现共赢 。述职是希望让大家看到自己的盲区,反馈是为.

2020-12-30 16:48:00 2266 4

原创 [java 并发]深入浅出 CountDownLatch

一、导言公交车来了,小明、小红要等小军来才上公交车,但是小军迟迟不来,于是小明和小红都迟到了。CountDownLatch直译为闭锁,CountDown就是表示倒计时的意思,Latch表示门栓的意思,CountDownLatch和门栓的含义有点像,可以看做代码执行时的一个门栓,条件不满足就进不了“门”(代码无法继续执行),此处的条件就是“latch”数字为0。常见于以下几种使用场景(如果还有其他的使用场景,麻烦在评论区补充出来,欢迎交流沟通)。实现最大并行性:当所有线程都满足与某个条件(lat

2020-12-28 23:48:07 638 2

原创 [java 随机数] ThreadLocalRandom、Random

[java 随机数] ThreadLocalRandom、Random真理具有相对性。----马克思文章目录[java 随机数] ThreadLocalRandom、Random一、什么是随机数: 真随机数? 假随机数?二、Random和ThreadLocalRandom的区别?2.1 Random使用以及原理浅析2.1.1 基础使用2.1.2源码浅析2.1.3 Random性能问题2.2 ThreadLocalRandom使用和原理浅析2.2.1 基本使用2.2.2 源码浅析参考链接计算机世界

2020-12-28 14:08:38 1030

原创 [idea插件推荐] 键盘流最爱,开发快到飞起

导言磨刀不误砍柴工,好的开发环境对开发效率的影响是毋庸置疑的,以下推荐一些我常用的idea插件必装插件Lombok几乎是每个项目都有用的lombok, 必安。Maven Helper便于直观查看maven依赖冲突的问题Alibaba Java Coding Guidelines各种规范提示,写出更优秀、优美的代码Free MyBatis pluginfree-idea-mybatis是一款增强idea对mybatis支持的插件,主要功能如下:生成mapper xml文件快速从代码

2020-12-28 10:52:43 1714 1

原创 MySQL与隔离级别

图画得有点丑…引言对于数据库的事务ACID特性我在之前的一篇文章中写过: 链接,用一张图表示可以如下所示。 图中的两个矩形表示为两个事务。在一个事务中可以体现原子性(右侧中的select update select三个操作都成功或都不成功)一致性: 如果有多个表的话,多表之间的约束,比如外键关系要保证不被破坏持久性: 持久性表示数据库的修改都要落到磁盘上,往往在机房断电,崩溃等重大不可中断的问题发生时体现。除此之外,还有再不同事务间体现的"隔离性"。事务三大伴生问题1. 脏读读取到未

2020-10-10 22:12:58 1387

原创 架构入门与架构师职责

这篇文章只是我对于架构认识的一些观点,如果您不认同我的观点或想和我讨论的话,十分欢迎评论指教。希望本文能帮助您在架构设计的路上多一点思考。本篇文章主要讲架构的一些定义和架构师的职责,最后还有一些如何设计架构的原则和观点。在开始正文前我先抛出3个问题:什么是架构? 框架、架构、模块、组件的区别与联系是什么?架构师的定义是什么? 他到底是做什么的? 什么是称职的架构师?架构师如何设计出高性能、高扩展性、高可用性的架构?1. 架构1.1 什么是架构先看看wiki百科给的架构的定义:软.

2020-07-25 23:29:58 471

原创 [一文搞定股票买卖问题]: 刷通[买卖股票]

121. 买卖一次:买卖股票的最佳时机Difficulty: 简单给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格...

2020-02-28 16:24:27 723

原创 动态优化: 最大子序号和

1. 53. 最大子序和Difficulty: 简单给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。可以化成’如何...

2020-02-28 14:09:56 464

东北大学2017届软件工程数据库实验1源代码

东北大学2017届软件工程数据库实验1源代码.花了三天时间打完的代码,以为很简单,打起来发现自己要学习的还是太多了.上传提供参考

2017-10-10

空空如也

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

TA关注的人

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