- 博客(74)
- 收藏
- 关注

原创 Talk Is Cheap,Show Me The Code: 三种语言个人框架压测(Java/Go/Rust)
Java/Rust/Go 个人框架压测
2022-09-09 09:45:32
653

原创 Talk Is Cheap,Show Me The Code. Rust
github链接记录2022-05-20记录下rust 吧,学了快一个月了,写个rust框架
2022-05-20 17:35:20
426

原创 源码分析-Golang Mutex
锁的实现数据结构type Mutex struct { state int32 sema uint32}一个mutex 总共只占8个字节,因此是一个充分使用位的数据结构state意义:最后3位充当状态的概念第0位: mutexLocked: 表示互斥锁的状态为锁定状态,既是否被某个goroutine所持有,是否已经被加锁第1位: mutexWoken: 是否被唤醒(既某个goroutine尝试获取锁)第2位: mutexStarving:表示当前的互斥锁处于 饥
2021-11-19 10:15:31
225

原创 Talk Is Cheap Show Me The Code - 枯燥乏味的leetcode刷题
工作至今,解决过的最难的问题,莫过于实现一个bft 算法,弄懂bft 算法,但是后来发现,在leetcode面前,bft就是毛毛雨昂刷不完的题,一段时间不刷,就忘了思路,关键做不到每天刷(毕竟已经工作了 ????)头疼的刷题啊重刷层次遍历,得重新刷几次汇总滑动窗口的临界条件是right<len(s),而不是 left<right二维数组:arr[m][n] 代表的是n行m列,所以m是列,n是行回溯算法或者说是深度优先dfs算法考虑以下问题什么时候添加到结果
2021-11-19 10:10:28
289

原创 Task Is Cheap Show Me The Code-个人Java框架-整合Nacos & prometheus & 网关 & 多集群
框架地址TODO http gateway prometheus rpcevent: 后续会重构,写的不好discovery: 重构,写的不好db一些遗留问题extension 并不是都是需要注入为bean的clean cacheBUG当extension中通过plugin注解注册的时候,会发现 其他实例可能会无法autoplugin ,使用@Bean注解就行简单设计数据流转:exampledemo主要为这个demo简单架构图.
2021-11-14 16:37:48
772

原创 源码分析-Golang Map
相关常量解析bucketCntBits = 3 // 代表的是bit bucketCnt = 1 << bucketCntBits // 代表的是一个bucket(bmap)最大存储8个keyloadFactorNum = 13loadFactorDen = 2 // 通过这2者计算得出 负载因子(负载因子关乎到什么时候触发扩容)maxKeySize = 128 maxElemSize = 128 // emptyRest = 0 : 代表该topHa
2021-09-17 09:20:41
479

原创 源码分析-Golang Select
实现原理每个select 在编译期间会被转换成OSELECT节点,每个OSELECT节点都有对应的OCASE信息,不同的写法,编译器会有不同的操作select 不存在任何的 case;select 只存在一个 case;select 存在两个 case,其中一个 case 是 default;select 存在多个 case;相关的函数在: cmd/compile/internal/gc/select.go#walkselectcases第一种情况: select 不
2021-09-10 11:12:46
264

原创 源码分析-Golang Chan
channel结构体src/runtime/chan.go内部存储是以循环队列的形式存储额type hchan struct { qcount uint // 代表着这队列中总共有多少元素 dataqsiz uint // 创建时的容量设置,既make时候的大小, buf unsafe.Pointer // 存储的数据 elemsize uint16 // chan数据对象的自身大小,既make的时候的参数类型的大小 clos
2021-09-08 13:05:31
274

原创 Talk Is Cheap,Show Me The Code-GoLang动态监听chan
通常而言,监听chan的做法为(忽略退出条件,以及close情况:))生产消费模型:func TestForSelect(t *testing.T) { c := make(chan int) go func() { for { select { case v := <-c: fmt.Println(v) } } }() go func() { for { time.Sleep(time.Second) c <- 1 } }()
2021-08-22 14:35:13
483

原创 Golang 锁源码分析
锁的实现数据结构type Mutex struct { state int32 sema uint32}一个mutex 总共只占8个字节,因此是一个充分使用位的数据结构state意义:最后3位充当状态的概念第0位: mutexLocked: 表示互斥锁的状态为锁定状态,既是否被某个goroutine所持有,是否已经被加锁第1位: mutexWoken: 是否被唤醒(既某个goroutine尝试获取锁)第2位: mutexStarving:表示当前的互斥锁处于 饥饿模式
2021-08-11 09:24:37
349

原创 Talk Is Cheap,Show Me The Code-个人框架(无缝衔接Spring)
框架以Java为主,先把Java的整了,再写Go的框架模块划分core/base模块(业务相关)配置模块日志模块dao模块service模块http模块网关模块缓存模块任务模块MQ模块
2020-11-22 16:15:23
270

原创 Hyperledger Fabric 国密改造 & 兼容多证书 & 兼容证书升级
fabric-sdk-java 兼容多证书 允许同个channel中的所有节点(peer/orderer)共用同一套算法体系 允许同个channel中的节点使用不同的算法(peer0.org1.com 使用ecdsa而peer0.org2.com使用SM2) 节点配置错误时,内存增长控制范围内fabric-ca 国密支持 权威机构颁发的证书国密支持...
2020-11-15 22:21:13
1115
15

原创 共识算法
共识算法POW 工作量证明暴力破解的方式实现原理关键字:难度系数 Difficulty随机值 Nonce将新生成的区块信息(包含上一个hash,nonce,difficulty)等信息通过Sha256计算hash值,再对hash值进行判断,判断前缀是否符合难度系数,如难度系数为5,代表生成的hash值前面有5个0,则代表这个区块是一个合法区块,如果区块不合校验规则,则Nonce++ 的方式不停的重试区块校验区块结构语法有效验证pow,区块头的hash满足难度系数区块时间
2020-08-15 17:55:32
317

原创 Hyperledger Fabric 源码 浅谈
更新日志2020-07-22添加创建channel时候的相关debugOrderer创建channel:路口处理方法为:// Handle reads requests from a Broadcast stream, processes them, and returns the responses to the streamfunc (bh *Handler) Handle(srv ab.AtomicBroadcast_BroadcastServer) error {
2020-07-22 21:27:04
637

原创 TCP/IP相关
HTTPMIMEMIME(Multipurpose Internet Mail Extensions): 多用途互联网邮件扩展类型.用途在于设定某种扩展名的文件用一种特殊的应用程序所打开特地的文件对应的MIME类型RTF文本rtfappliation/rtf普通文本txttxt/plaingif图形image/gitau声音文件audio/basicavi文件video/x-msvideohttp协议的特点灵活: 允许客户端和服务端
2020-06-06 20:43:55
220

原创 Talk Is Cheap,Show Me The Code 大文件上传解决方案与实例代码
核心:分段接收,分段解析,分段写文件问题Q:不同用户上传同一文件:A: 通过token加文件md5码解决,并且后期如果发现为同一文件甚至不需要上传,直接服务器cp一份Q:同一个用户刷新上传(重复上传)A:通过会话id (processId: 通过token+md5 生成,防止上传重复上传同一文件) & 碎片状态化: 杜绝重复上传碎片,同时实现断点续传Q: 碎片有哪些状态:A: 传输失败 | 正在传输(因为是分段解析,所以会有中间状态) | 传输成功
2020-05-28 13:54:39
374

原创 操作系统-review
操作系统shell 又称作外壳,如gui 等,提供给外部服务,操作系统提供的对外可见的服务kernel 内核操作系统管理三大资源cpucpu调度进程线程管理内存物理内存管理虚拟内存管理磁盘文件系统的形式进行管理中断处理与设备驱动管理中断与异常处理中断的处理过程, 软硬件的结合硬件:标记中断状态生成一个keyId软件...
2019-10-28 21:55:12
231

原创 数据结构-算法-源码-复习
最近并不是很忙,基础不能落下,不定期更新复习,会涉及Java,Python,GoLang:线性表:什么是线性表:线性表指的是线性存储结构,可以理解为数组,所有数据一根线串一起,再存储到物理空间中具体实现:Java参考实现:ArrayList:解析:ArrayList内部有EMPTY_ELEMENTDATA 和DEFAULTCAPACITY_EMPTY...
2019-09-16 18:17:48
240

原创 Hyperledger Fabric网络环境搭建 CA,RAFT,SOLO 单机 多机
区块链就是分布式的kv数据库peer挂在在channel上,而chaincode又是挂在peer上的账本ledgel通过通道channel进行隔离交易与智能合约: 智能合约是函数的声明,而交易是函数的调用过程什么是背书结果: 既背书节点endorser节点对业务逻辑处理后的数据结果世界状态: 指的是交易执行后的所有键的最新值历史溯源(历史读取): 历史数据索引+ 区块读取某键在...
2019-06-16 12:43:46
794
2

原创 小技巧 && 算法 浅谈
位运算位运算符的分类及其定义与运算符&: 既二进制情况下,2者都为1才都为1 1101 & 0011=0001(按位与)或运算符|: 既二进制情况下,2者有一个为1就是1 如 1011| 0010=1011 (按位或)异或运算符^: 既二进制个情况下,相同则为0,否则为1,如1111 ^ 0010=1101 (按位异或)作用:因为计算机都是二进制数据,而通常位运算...
2019-03-10 18:13:53
270

原创 Spring浅谈
Spring因为最近要重回业务的怀抱,因而重新看一遍Spring的内容刻不容缓目标对于一些Spring关键点源码分析对Spring设计上的一些分析BeanFactory 和ApplicationContext区别:ApplicationContext是BeanFactory的一个子类(wip)BeanFactory加载bean的时候,是只有get 的时候才会触发加载,...
2019-02-23 16:58:45
307

原创 Redis浅谈
REDISTODOGithub上更新的较这里勤客户端命令待补事件待补事务待补慢慢更新…-.-数据结构和对象数据结构简单动态字符串(SDS):与c的string不同,Redis中的SDS多了以下几点属性free属性: 作用如下扩容:空间预分配(减少重分配次数): 当对sds进行修改的时候,为了防止频繁的申请内存,提供了预留空间,并且有阈值,阈值为1m如:当对...
2019-02-16 23:42:41
1202

原创 数据结构源码分析目录
说明会包括常见的数据结构,这里应该只会说明一个大概,具体的源码一步一步会单独的抽出一篇文章来写的,不过最近没啥时间,可能会慢点,不过之前的时候写过一些源码解析之类的现在还是浅层的,要深层的话必须详细的看源码一步一步来,但是现在时间不是很充裕,暂且如此HashMap源码剖析HashMap源码hashMap实现了Map,Cloneable,Serializable接口,继承了抽象M...
2019-02-15 13:08:16
348

原创 MySQL浅谈
MySQLTODO索引什么是索引:索引是指数据库管理系统中的一个排序的数据结构,索引的两大类型有b tree,hash,lsm树hash索引: 基于hash的特性,检索效率非常的高,一次定位,不需要像b tree一样多次io缺点:仅仅只能满足&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;=&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;,“IN”,和&
2019-02-15 12:17:22
367

原创 RabbitMQ 学习兼实战
RabbitMQ 学习兼实战在之前已经有写过部分RMQ的代码了,这段时间重新学更新日志2019-01-2323:16重新看了文档的内容,帮助真的大啊明天将exchange的相关内容加上,都写在草稿本上了demo会重新写,结合Spring的,题材会跟官网上的log分级相同,会有变化这是肯定的,但是需求还没想好基本角色producer: 生产者: 既发送消息的对...
2019-01-27 23:18:18
263

原创 Java-基于redis 分布式锁形式和队列形式实现秒杀架构(配合消息队列)
代码在这https://github.com/ItsFunny/spring-test/tree/master/spring-test-order-and-stock基本的流程图为:关于可能发生的几个问题:1.重复下单问题:1):用户不小心点多了,点击立即购买多次2):网络延迟,用户刷新重复提交多次3):用户恶意请求解决方法:a:前端按钮当点击完毕之后立马将其按钮变灰,防止无意请...
2018-10-16 20:16:24
6005
2

原创 常见的排序,查找算法,以及常见的数据结构如链表,二叉树等的实现
假设所有数组要求的结果都要为升序1.直接插入排序:核心:长度为n的数组,假设n-1都是有序的,则只需要插入即可 public static void simpleInsert(Integer[] arr) { for (int i = 0; i &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; arr.length; i++) { int temp = arr[i]; int j = i - 1; fo...
2018-10-04 14:45:04
822

原创 数据库水平分库分表后的数据分页查询解决方案
为什么要分库分表,水平与竖直的区别,这里就不讲述了,想了解的自行google开门见山直接说解决方案:分库分表的策略,依项目需求而定,这里采用的是常规的做法:根据取模的方式,假设我们水平分库2个,每个库又水平拆表2个 既总共有4个表,查询的时候默认没有按照其他的条件进行排序,假设我们要查询第41页的数据,每页显示10条数据第一种:也是最简单的一种:通过额外的添加一张关联表,属性中必有id...
2018-09-14 08:08:51
32720
14

原创 通过rabbitMQ消息队列实现分布式环境下的最终一致性
话不多说,直接切入正题: 2018-09-07 20:30 更 基础流程图: 上游服务接收到信息,先保存在本地消息表中,保存失败直接返回退出,保存成功则通知消息服务器new一个新的消息对象,状态为NEW,表示这个可能要发送,,通知成功(注意这里的通知这一步需要为同步模式,不然会出现这种情况,本地已经消费了,但是却没通知到,这样消息就丢失了)通知成功之后则开...
2018-09-07 20:30:57
9089

原创 SpringCloud feign服务熔断下的异常处理
2019-01-18 10:21 在此推荐下自个的一个基础复习库,囊括常见的数据结构和算法以及一些解决方案,还处于更新状态---------------------------------------------------------------------------------------------------------------------------------------...
2018-08-18 21:01:17
16441
6

原创 SSO基于全局Session和局部Session的实现
推荐一下自己的一个数据结构与算法整合的库,还处于更新状态2019-01-12 18:23 更: demo明天给出 . emmmmm我记得这个demo应该是18年的啊,怎么19是上个月给的?蛤?---2019-01-13 18:51 更: https://github.com/ItsFunny/examples/tree/master/sso_demo什么是sso:single si...
2018-05-24 12:50:04
6297
10
原创 jmeter docker 分布式压测
背景fabric 框架源码改完了之后需要测试性能,然后发现怎么也无法打满cpu,所以只能多来几台服务器,多跑几个jmeter了使用方式:docker pull jokerlvccc/bench-jmeter:1.0.0docker tag jokerlvccc/bench-jmeter:1.0.0 bidsun.com/bench-jmeter:1.0.0需要将自己的计划文件映射到 : /home/services/bidsun/bench/bashes/如 -v /Users/jo
2020-12-27 23:58:51
441
转载 mac brew缓慢
天下文章一大抄# 更新 brewcd "$(brew --repo)"git remote set-url origin https://gitee.com/brew-cn/brew.git# 更新 homebrew-corecd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"git remote set-url origin https://gitee.com/brew-cn/homebrew-core.git````...
2020-11-10 13:17:52
167
转载 Java Maven 修改第三方库源码
背景修改fabric-sdk-java 源码,然后涉及到grpc,需要修改grpc的源码工具jd-guiidea步骤创建一个新的maven工程,maven工程的名字任意用jd-gui打开所依赖的第三方库的源码,如grpc-core找到具体的class文件,ctrl+all在新创建的maven工程中,创建package(要与grpc-core所修改的类的package一致)创建一个相同名称的类,粘贴进去,然后修改,使得没有错误(当然这个maven工程的pom包也
2020-11-05 09:36:49
3571
1
原创 SpringBoot 整合mybatis 和mybatis-plus
起由之前使用的是mybatis,后面为了再简化开发,引入plus ,期间发现相关问题依赖:引入mybatis-spring-boot-starter 的原因在于 ,原先是基于mybatis开发,内部使用到了 MybatisAutoconfiguration ,后面要基于plus ,因此 exclude 原先的依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId>
2020-07-25 07:02:04
672
原创 服务器
Ubuntu无法复制粘贴:ssh提示Connection refused:设置静态IPvi /etc/network/interfacesauto eth0iface eth0 inet staticaddress 192.168.8.100 netmask 255.255.255.0gateway 192.168.8.2dns-nameserver 8.8...
2019-10-15 13:57:33
174
原创 文本-图片-视频-相似度算法-demo
D:[] 视频相似度关键帧获取[] 音频相似度计算源语言: GoLang文本相似度:小文本采用的方式为php自带的文本比较即可:// 简单字符串匹配,适用于当长度小的情况func SimpleCompareTextSimilarity(prev, newUpload string) (float64, int) { per := 0.0 i := php2g...
2019-09-18 10:42:16
1645
原创 环境搭建
GoLangwget https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz && \tar -zxvf go1.12.9.linux-amd64.tar.gz && \mkdir -p /usr/local/go/ && \cd /usr/local/go && \mkdi...
2019-09-03 15:08:12
185
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人