自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一叶知秋

记录分享

  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 起航

从今天起,开始好好写些文章。仔细想想,未来很多事情和技能可能都是极容易被替代,技术也不能例外,一叶知秋,技术也已经是比较内卷了。而流量和个性化的人格属性,和具有一定的影响力才是机器不能替代的东西。言而总之,总而言之,现在开始放置自己的一些输出。 ...

2020-06-18 10:54:06 174

原创 从0-1 的java 后端工程项目设计及其反思

工程项目分层架构回顾项目启动前的模块划分设计项目实践后,相关的模块划分还是相对比较合理的,但有些细化和优化,通过idea 的模块依赖图,生成的组件依赖图为举例其 实现细节处,如 assignmentImpl,classroomimpl,userimpl 模块 自动生成的依赖图,可能显得不是很明显, 在之前没有预想到的,是 baseconstants 这块,这块有些内容校验和安全校验的基本接口,和基本 enum ,action 变量, 因为把内容校验...

2021-01-27 17:52:15 401

原创 基于JetCache --单Entity缓存 查询增强的一种方式

直接入主题,先说引用和使用方法引用root pom <parent> <groupId>com.weishi</groupId> <artifactId>weishi-root-pom</artifactId> <version>experiment-1.0.9-RELEASE</version> </parent&gt...

2021-01-27 17:45:24 529

原创 JetCache -- CacheResult 介绍

序言程序的灵魂是数据结构和算法我们从数据结构出发了解,jetCache 的整体设计, 我们知道 Cache 简单来说就是 一个 Map<K,V> 承载的 一个 hash结构, 但是这样的话,我们通过 key 来拿到 value ,就不能拿到其他很多的信息。而且往往通过 map.get(key) 拿到的value 往往隐含的一个事实,就是这个是一个同步操作,不能利用到异步的优点,从get 方式我们看不出异步的好处,但是从put 的方式,我们很容易看到异步的好处,要是...

2020-11-12 14:35:37 734

原创 JetCache-- 从 Config查看其衍生出的特殊功能

序言从jetCache 中,查看几个特色功能,例如 loader ,当cache 没有数据时候,怎么进行loader 取出数据refreshCache ,怎么定时刷新cache,当然是从loader cache 中取怎么合理利用proxy 模式组合怎么进行moniter 事件通知这几个专题可能需要多篇来解释正文我们还是从Cache 接口中看起 /** * Get the config of this cache. *...

2020-11-12 14:33:57 478

原创 JetCache系列 -- Cache 的使用场景和其详细使用

序言本文,我想详细地讲讲缓存的使用。我们都知道,根据现代计算机存储介质的不同,我们引入了Cache 这个概念, Cache 在计算机芯片, 各级内存,硬盘,乃至于各种软件设计中都是非常常见的,Cache 使用的好,能够合理分层,我们能解决百分之八十以上的性能问题,由于目前大部分的互联网服务应用都是 重io为主的服务,所以 网络服务的质量和速度 跟缓存的使用有着密不可分的关系。这节会结合 各种场景下 缓存的使用,推荐一些最佳的使用场景,结合JetCache 达到一种比较边界的提升接口性能的代码编...

2020-11-12 14:32:00 7667

原创 JetCache 系列 -- JetCache的优势

内部集成了 caffeine Cache 比较优秀的本地cache 方案 redis lettuce ,基于nio的远程 redis 客户端 特点可设置多级缓存,不用每次缓存都走 远端cache 方便的注解使用,和非注解使用方式 有cache 命中的统计数据...

2020-11-12 14:30:59 1524

原创 redis 客户端 -- lettuce 介绍

序言本文意在介绍 redis 的非阻塞客户端 lettuce 的用法,比起jedis 客户端来说, lettuce 的异步特性和 底层的 nio 异步加持,显得 更加好用且高性能。正文关于远程 客户端 代码连接的通用设计的思考常见 客户端连接的通用逻辑,redis 客户端 lettuce 也遵循了通常的连接流程构建 连接 connect uri , 根据不同的客户端,schema 有所不同,类似 mysql 的连接schema 以 mysql::// 开始,而redis ...

2020-11-12 14:30:20 1439

原创 Go Map 简介 和 实现解析

序言map 是go 中一种很重要的 映射查找的数据结构,通过 key 的hash 运算来找到 值,这在各个语言中都不少见,这篇我们主要讲go map 的使用和其内部实现。正文map的使用关于 map的使用问题, 如下map的声明为 /* 声明变量,默认 map 是 nil */var map_variable map[key_data_type]value_data_type/* 使用 make 函数 */map_variable := make(...

2020-11-12 14:22:18 2515 3

原创 Go系列 --Context 解析

序言:关于 go的并发编程正文前言需知, channel 的使用https://blog.csdn.net/dongjijiaoxiangqu/article/details/1096427331.context 的使用场景context 的含义,context 意为上下文, go中的context 的主要使用场景为在多个goroutine 中进行 通信,避免浪费无用的计算资源。打个比方:比如说一个 网络请求中, 系统起了一个 go routine A来服务此请...

2020-11-12 14:10:09 1047

原创 Go系列 --channel 及其介绍

序言go 中以 goroutine 为最小并发单元,具有比线程更小的开销,使得go的并发和切换性能较强。 而goroutine 之间的相互通信就需要靠 channel来实现。不像 一般语言,线程之间共享信息的方式是通过共享内存方式来进行,为了保护数据安全,通常访问时候需要加锁,或者采用乐观锁技术(CAS比较),当然go也实现了共享内存加锁方式。 而channel 就像是信道,两个不同的goroutine 相互通信时候,一方充当消费者,另一方充当生产者,信道就像是消息队列有FIFO的性质,g...

2020-11-12 14:08:05 2162

原创 分布式算法 -- Basic Paxos

序言本章意在讲解,基本的分布式算法,Basic Paxos 的原理, 以及其解决的问题正文所谓的Paxos 算法,是兰伯特先生在1990 年提出的一个共识算法,何谓共识? 即指多个节点之间对某个值能达成统一的共识。 而 Paxos 算法,分为 Basic Paxos 和 Mutliple Paxos ,Multiple Paxos 算是一种思想,在兰伯特的论文里面并没有提及其内部实现,而基于此种思想,衍生出一些 分布式一致性算法,其中raft算法,是其中经过验证的一致性算...

2020-08-22 16:14:41 550

原创 DDD领域模型阅读思考

DDD领域模型阅读思考序言:一家之言的文章,对于此文的内容,是本人对此概念的理解,加以自身的总结,高度概括,所以越发抽象,对其他人可能没有参考意义业务设计之前:常见软件设计模式注重数据库和数据表模型,把表捋出来来以后,仿佛代码流程就出来了,但这个只是多个存储模型,存储数据的流程,这样是能完成存储数据的功能,但是是很底层的设计思路,思路固化以后,会容易写出面条串似的业务流程代码, 没有确定 领域边界,不是至顶向下,而是从底向上的思考,这样的代码容易无组织,只有一串串堆叠的业务代码配合。复用也不容易

2020-08-19 11:18:28 252

原创 Java 编程规范 -- 易错精简版

Part 1 – 易错点-- edit by liudeyu,If you have any adivice or suggestion, please participate in the discussion命名规范方面:1. 【强制】 POJO 类中的任何布尔类型的变量, 都不要加 is 前缀,否则部分框架解析会引起序列化错误。说明: 在本文 MySQL 规约中的建表约定第一条,表达是与否的值采用 is_xxx 的命名方式,所以,需要在<resultMap>设置从 ..

2020-08-10 17:49:20 1288

原创 浅谈 Go中的 Array 和 Slice

Go中参数传递的方式只有传值一种方式,不像C++还有传引用的方式Array声明一个 array的方式为:var variable_name [SIZE] variable_type 例子: var arr[10] int值得注意的是,这里的size 作为明确的参数,需要显示的传进来, arr[10] int 和 arr[12]int 是不能使用简单的方式互转的Array,进行赋值或者传参都是拷贝值,不影响原始数组:例子: func enterAndLeaveCall(t...

2020-08-04 10:40:16 320

原创 Zookeeper源码解析 -- 本地持久化之快照持久化

序言本章的关键词是 SnapShot, FileSnap 实现, 以及实现日志 TxnLog和SnapShot接口的 FileTxnSnapLog ,通过 这几个接口的进行持久化和加载持久化到内存的一些操作。其间涉及 关键数据结构,zk的树形存储结构的设计DataTree 和节点 DataNode,ACL等结构的解说正文zk 里面持久化有两种方式,一种是全量 持久化,一种是增量持久化, 这两种持久化的方式,在其他组件的设计方案里面也有见到,因为全量持久化解决的是持久化...

2020-07-31 13:33:39 411

原创 我们与库开发者,代码质量的距离

我们与库开发者,代码质量的距离浅谈 ImmutableMap 的设计通过阅读jdk中的Map接口,发现好的库代码,从接口就设计的很好,这里的很好是指,能够以接口对接口的理念来设计整个协作过程。然后学习点,泛型的广泛使用,如何进行高层次代码复用,很多时候依靠好的设计和泛型代码的设计 public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K,V>> comparin

2020-07-10 11:19:00 169

原创 Zookeeper源码解析 -- 本地事务日志持久化之FileTxnLog

序言在各个分布式组件中,持久化数据到本地的思想并不少见,为的是能保存内存中的数据,以及重启后能够重载上次内存状态的值。那么如何行之有效的进行,内存数据持久化到磁盘,怎么样的落盘策略合适,怎么设计持久化数据格式,如何进行记录的日志文件大小扩容,以及如何加载回磁盘数据到内存中,这么一些问题就是值得思考的问题了。 2. 通过这篇文章的分析,我们能够看到一些持久化数据的基本原则,以及一些如何行之有效写数据到磁盘的方式方法(例如 利用稀疏文件,文件空洞,来进行文件大小的占位和填充),以及一些持久化本...

2020-07-02 21:15:45 656 1

原创 Zookeeper源码解析 -- 序列化和解序列化器

序言:1. 序列化器在各个常见库中都是不可或缺的一部分,不管是通过json,probuff,还是zk 中用到的jute设计, 通过阅读序列化器和反解析器,我们能从中得到怎样的工程写法和工程设计的思路,这些是值得总结的。2. apache jute 包下的解析器和反解析器,用到的把解析分散化到个体的设计思路值得学习,具体表现有 不同的bean 的序列化和反序列化应该是要放其本身的类定义里面,通过接口往外暴露序列,反序列化方法,代码从集中式管理到分散式管理,提取出接口统一对外调用...

2020-06-24 16:38:50 322

原创 Go中指针绑定函数和值绑定函数的区别

本文阐述,go语法中,指针绑定函数和 值绑定函数的区别和表现首先先定义一个struct,然后定义两个方法,一个用pointer 绑定,一个用value绑定 type StructA struct { name string}func(a *StructA) sayHelloPoint() { a.name="helloPoint"}func (a StructA) sayHelloNoPoint() { a.name="helloNopoint"}...

2020-06-22 10:18:00 888 2

原创 Effective Go

命名规范:function 的命名有讲究, 首字母是否大写代表了 该函数的可见性, 大写表示可见,小写表示包外不可见 package name 一般简洁简短即可单词小写,因为import时候可以重命名,所以不用担心命名碰撞 package name 一般也是source dir的名字,例如the package insrc/encoding/base64is imported as"encoding/base64"but has namebase64, notencoding_b...

2020-06-19 14:21:07 1055

原创 计算机网络总结

计算机网络知识总结网络分层知识osi分层,这里的osi分层分为七层协议,每层都有它最为重要的功能,分层也是为了解耦和可替换性高的目地。从底向上分为七层分别为:物理层 (主要保证数据能够在物理硬件层稳定地传输的作用)数据链路层 (主要功能是物理地址寻址,讲数据包装成帧,控制传输速率,错误重传等)网络层 (主要功能就是寻址,建立连接或断开连接,路由或逻辑寻址),涉及主要的协议有一些: IP协议

2017-03-26 17:24:50 396

原创 设计模式思考

面向对象和设计模式的一些思考总结(极致浓缩版)高层模块不应该依赖于底层模块,应该在他们之间建立一个抽象层,来实现可替换的底层,不变的接口层。这个是面向对象的更高境界了,面向接口编程。上层和下层通过唯一途径联系就是接口,这有点类似与操作系统和软件和硬件之间的关系,他们的联系也是通过能够接触到那一层接口来实现。可以说我们只需知道接口就能完成调用其他模块的功能而不需要知道实现的具体细节,这也正是面向对

2017-03-19 14:33:10 335

原创 java 学习总结

java学习总结java 语言特性相关构造器相关 继承时候,如果默认构造器无任何参数,编译器会默认调用父类构造器,如果子类构造器 有参数,那就必须显式调用父类构造器构造器有多种时候,常用的是调用已有构造器,若构造器实在太多时候,应考虑工厂方法(多用于父类子类一系列),再设置参数 java 内存回收相关Java 中只需简单地忘记对象,不需强行破坏它们。垃圾收集器会在必 要的时候自动回收内存

2017-03-19 13:52:51 397

原创 python自我总结笔记,加上一些自己思考

python语法知识总结

2017-02-25 21:01:27 2815

空空如也

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

TA关注的人

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