自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangkaixuan456的博客

编程路上的心得笔记

  • 博客(226)
  • 资源 (6)
  • 收藏
  • 关注

原创 分库分表 ——12 种分片算法

我们一起梳理下框架中的核心部分分片策略和分片算法,其内部针为我们提供了多种分片策略和分片算法,来应对不同的业务场景,本着拿来即用的原则。这次将详细介绍如何在中实战 5 种分片策略和 12 种分片算法,自定义分片算法,比较它们的应用场景以及优劣。

2024-04-01 21:31:44 1061

原创 老程序员不讲武德

职业生涯的一些心得,不一定对,大家辨证的看吧 只有结论,没有推论,如果有感兴趣的topic可以在评论区留言,我给你讲故事。

2024-03-29 14:47:48 726

原创 如何成为有潜力的研发工程师:个人成长的关键特质

从百科的定义看,“潜力”一词通常用来描述一个人、一个事物或一种情况具有尚未充分发挥的可能性或能力。这种能力或潜力可能尚未被完全发现或实现,但有望在适当的环境和条件下得到释放或发展。有时候,我们对潜力的理解往往不够准确,或者对有“潜力”的标准过高,往往认为起点高就有潜力,或者聪明就是有潜力。这会导致几种问题:起点高的同学并不一定能够持续发展好。当发展不顺利的时候,往往会把自己纳入到没有潜力的行列,丧失了恢复成长的可能性。“聪明”的同学也不一定能够有好的发展。我对潜力的理解,不看起点,也不是聪明。

2024-03-29 14:31:02 783

原创 如何写好一篇文档?

什么是好的文档?在我看来,从作者角度上讲,能够。从读者角度上讲,读者能够。那如何写好文档呢,先抛观点。先抛出自己写过的一些文档,你可以大概瞄一眼,如果觉得还算认可,就可以继续阅读,如果不认可,就也节约时间了。🧑💻以我常写的技术方案为例,除去方案本身的设计时间,大概时间占比如下除大家都熟练的填内容之外,其他部分比如排版,在刚开始时肯定会需要更多的时间,但用不了多久就不会再花更多时间,唯手熟尔。最后还是要先强调一下,,不用刻意模仿,没有意义。

2024-03-29 11:41:54 914

原创 系统日志规范及最佳实践

日志,维基百科中对其的定义是一个或多个由服务器自动创建和维护的日志文件,其中包含其所执行活动的列表。一个打印良好的日志文件可为开发人员提供精确的系统记录,可辅助开发人员定位到系统错误发生的详情及根源。在 Java 应用程序中,通常使用日志文件来记录应用程序运行过程中的重要逻辑参数及异常错误,辅之日志采集系统(ELK、DTM)构建系统监控体系。

2024-02-07 18:00:09 1000 1

原创 Go 原生 Channel 有这么多坑?应该如何避免?

仓库地址:https://github.com/bytedance/gopkg。

2023-12-25 15:57:02 530

原创 go通过pprof定位groutine泄漏

使用命令go tool pprof url可以获取指定的profile文件,该命令会发起http请求,然后获取到资源信息存储到本地,之后就可以使用命令查看运行信息,以下是5类请求的方式:​​​​​​​。上面介绍的俩种方法都是pprof自带的检测方法,虽让能够帮助定位到程序的问题所在,但是每次打开CPU和内存分析文件都是密密麻麻的数字和代码,还是蛮头疼的,下面介绍pprof结合graphviz带来的可视化服务,是问题定位能够更加清晰。可以看到协程号为21和22的协程都阻塞在了锁的获取上,阻塞时间为5min。

2023-09-09 12:13:34 782 1

原创 MySQL 使用规范 —— 如何建好字段和索引

一、案例背景二、库表规范1. 建表相关规范2. 字段相关规范3. 索引相关规范4. 使用相关规范三、建表语句三、语句操作1. 插入操作2. 查询操作四、其他配置1. 监控活动和性能:2. 连接数查询和配置本文的宗旨在于通过简单干净实践的方式教会读者,如何更好地使用 MySQL 数据库。这包括;库表创建规范、字段的创建规范、索引的创建规范以及SQL使用的相关规范,通过这些内容的讲解,让读者更好使用 MySQL 数据库,创建出符合规范的表和字段以及建出合适的索引。

2023-09-02 18:41:21 783

转载 GO如何编写一个 Worker Pool

先看接收到任务的 case,首先判断是否实际接收到 task,如果 ok 为 false,说明 taskQueue 这个 channel 已经被 close 了,直接退出循环,这里使用 label 的原因是在 for-select 嵌套的 select 中,如果直接 break 只会退出当前的 select,继续执行 for 以内 select 以外的代码并继续下次 for 循环,不会直接退出外面的 for 循环,如果想退出外面的 for 循环,则需要借助 label 来实现。

2023-08-18 12:54:30 220

原创 浅聊权限模型

权限相关术语英文名称中文名称描述Subject主体通常是用户或用户组Object对象权限所作用的对象,通常指各类资源Action操作对Object的操作,如:创建、删除、查询、修改等Effect结果/效力规则匹配后的限制操作,如:Allow/ DenyCondition限制条件权限生效的条件Permission权限用来指代是否允许某人在某种条件下对某种资源做某种操作Role角色权限集合,包含一个或多个权限(Permission)Policy策略。

2023-07-24 14:45:51 586

原创 如何设计一个优秀的 Go Web 项目目录结构

Go 语言作为一门高效、简洁、并发安全的语言,越来越受到开发者们的青睐,特别是在 Web 开发及云原生领域。而对于一个大型的 Go Web 项目而言,一个优秀的目录结构设计是必不可少的。它可以帮助我们更好地组织代码、减少冗余、提高可维护性和可扩展性。在本文中,我们将讨论如何设计一个优秀的 Go Web 项目目录结构。Go 项目标准布局不要在这个目录中放太多的代码,更不要放业务逻辑代码,保持整洁。/internal存放项目的内部私有代码和库,不允许在项目外部使用。同时这也是 Go 在编译时强制

2023-07-04 17:27:53 789

原创 从Java BIO到NIO再到多路复用,看这篇就够了

实际上,它是一个索引值,指向一个文件记录表,该表记录内核为每一个进程维护的文件记录信息。看下入参,需要用户主动传入要监视的文件描述符数量,可读文件描述符集合,可写文件描述符集合,异常文件描述符集合等入参,实际上就干了一件事,以前由用户态去循环遍历所有客户端产生系统调用(如果10k个socket,需要产生10k个系统调用),改成了由内核遍历,如果select模式,只需10系统调用(因为select最大支持传入1024个文件描述符),如果是poll模式(不限制文件描述符数量),则只需1次系统调用。

2023-06-06 12:51:22 165

原创 微信扫码授权到登录网页,中间究竟发生了什么?

在微信开放平台进行配置和申请,获得,配置好自己的回调URI根据拿到的数据,配上指定的参数得到二维码的URL微信SDK在二维码页面进行15s一次轮询检测,对于不同的状态有不同的状态码:如果没有扫码:状态码为408,且code为空如果扫码既不接受也不拒绝授权:状态码为404,且code为空如果扫码但是拒绝授权:状态码为403,且code为空如果扫码并且同意授权:状态码为405,返回一个code微信SDK检测到状态码和code后,进行对之前配置的回调URI的重定向,带上code。

2023-05-29 20:23:05 1348 3

原创 swaggo使用demo

执行完毕后,将会在docs目录下生成swagger.json和index.html文件。打开index.html文件即可查看API接口文档。以上就是Swaggo注解的详细使用示例,希望对你有所帮助!如果你想了解更多Swaggo的用法,可以参考Swaggo官方文档。执行完毕后,将会在项目根目录下生成docs目录和docs/swagger.json文件。括请求方法、请求路径等。

2023-04-28 12:56:04 141 1

原创 SQL优化13连问,收藏好!

可以根据查询语句的条件,增加相应的索引,从而加快查询速度。有些SQL语句本身可能存在一些问题,如join操作过于频繁,使用了不必要的子查询等,这些都会导致查询效率低下。查询执行时间过长有可能是由于锁的问题导致的,需要分析查询语句中是否存在锁的问题,如果存在锁的问题,可以考虑增加锁的并发度,从而提高查询效率。在编写SQL查询语句时,要尽可能地简单明了,避免复杂的查询语句,同时也要避免一些不必要的查询操作。const:通过一次索引就能找到数据,一般用于主键或唯一索引作为条件,这类扫描效率极高,,速度非常快。

2023-03-20 15:27:13 2400

转载 go 主流 web 框架中路由的实现原理

路由,就是url地址到业务处理代码的映射。当用户输入一个url地址时,服务器该知道该用户返回什么内容。比如,当用户点击登录时,服务器应该做登录相关的事情,并给用户返回登录成功或失败的页面。当用户点击退出时,服务器应该做和退出相关的事情(比如清理用户登录的数据),并返回给用户退出之后的页面。一个url到一个具体的处理函数之间的映射叫做一条路由。多条路由组成路由表。路由表主要用于路由查找,根据不同的路由表的组织形式,可以有不同的查找方法。最简单的路由表就是使用map。

2023-02-14 16:51:38 350

原创 Go select底层原理

这些处理或者直接调用运行时函数,或者直接转成对channel的操作,或者以非阻塞的方式访问channel,多种灵活的处理方式能够提高性能,尤其是避免对channel的加锁。首先,编译器对select没有case、有单case和单case+default的情况进行单独处理,这些处理或者直接调用运行时函数,或者直接转成对channel的操作,或者以非阻塞的方式访问channel,多种灵活的处理方式能够提高性能,尤其是避免对channel的加锁。随机的轮询顺序可以避免 channel 的饥饿问题,保证公平性。

2023-01-06 13:34:43 1252

原创 Golang基础教程——字符串常用方法总结

Golang 字符串操作小结,字符串函数主要集中在 strings 和 strconv 中,本文介绍使用方法,给出一个函数接口,然后匹配相关example。

2022-12-11 15:09:02 1233

原创 Go语言——对象的三种排序方法

使用sort.Slice函数排序,它使用一个用户提供的函数来对序列进行排序,函数类型为,其中参数i,j是序列中的索引。在排序切片时会保留相等元素的原始顺序。上面两个函数让我们可以排序结构体切片(order by struct field value)。Age int}{}// 用 age 排序,年龄相等的元素保持原始顺序})

2022-12-10 12:25:31 1753

原创 gorm crud 指南

CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。本文中的db变量为*gorm.DB。

2022-11-13 21:53:38 224

原创 mac 常用终端命令

最近公司换mac了,和windows用起来很不一样,记录一些常用操作命令。

2022-11-06 14:57:13 527

原创 git常用命令行操作

Git的配置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。下面是我整理的常用 Git 命令清单。Repository:仓库区(或本地仓库)Index / Stage:暂存区。Workspace:工作区。Remote:远程仓库。

2022-11-05 17:44:10 296

原创 jvm调优——出自百度内部文章分享

jvm调优案例,线上真实案例

2022-11-02 14:43:34 83

原创 elasticsearch 性能优化

合并线程数默认是:Math.max(1, Math.min(4, Runtime.getRuntime().availableProcessors() / 2)),如果是机械磁盘,可以考虑设置为1:index.merge.scheduler.max_thread_count: 1,7、关于段合并,合并在后台定期执行,比较大的segment需要很长时间才能完成,为了减少对其他操作的影响(如检索),elasticsearch进行阈值限制,默认是20MB/s,Lucene 随机三次磁盘读取比较耗时。

2022-09-15 18:17:37 457

原创 java性能优化案例——面试可能用得到

除了节省机器资源外,性能好的应用相对于性能差的应用,在应对流量突增时更不容易达到机器的性能瓶颈,在同样流量场景下进行机器扩容时,也只需要更少的机器,从而能够更快的完成扩容、应急操作。新的实现方式是在进行变量替换之前,通过循环模板内容字符串,利用双指针把模板里面所有变量都提取出来,再对变量集合进行循环,依次替换掉模板内容里面的变量。但V4版的代码可读性是不如V3版的,可以把V3版和V4版相结合,剔除掉缓存依赖,产生一个代码可读性和性能最佳的V5版。也就意味着,同一个模板对应的变量都是固定不变的。

2022-09-15 09:48:06 450

原创 分布式事务seate

5seata二阶段commit/rollback源码分析。2.seata底层自动补偿机制是如何实现的。1.seate一阶段本地事务执行流程分析。4seate底层是如何解决并发写隔离的。3.seata分支事务注册源码分析。

2022-08-18 23:10:20 746

转载 TCC分布式事务——设计思想及其可能遇到的问题

今天进行了 Seata TCC 模式的深度解析。主要介绍 Seata TCC 模式的原理,从 TCC 业务模型与并发控制的角度告诉大家怎么设计一个 TCC 的接口以及怎么处理空回滚、幂等、悬挂等异常,最后对蚂蚁金服内部对 TCC 的性能优化点简单介绍,使得 TCC 模式能够满足更高的业务需求。业务各有不同,有些业务能容忍短期不一致,有些业务的操作可以幂等,无论什么样的分布式事务解决方案都有其优缺点,没有一个银弹能够适配所有。...

2022-08-16 16:42:32 475 1

原创 MySQL灵魂十连问

根据场景选择什么字段作分表字段,比如淘宝日订单1000万,用userId作分表字段,数据查询支持到最近6个月的订单,超过6个月的做归档处理,那么6个月的数据量就是18亿,分1024张表,每个表存200W数据,hash(userId)%100找到对应表格。只有事务A提交了事务后,释放了锁,事务B才能进行接下去的操作。从MyISAM所支持的锁中也可以看出,MyISAM是一个支持读读并发,但不支持通用读写并发,写写并发的数据库引擎,所以它更适合用于读多写少的应用场合,一般工程中也用的较少。...

2022-08-15 14:15:37 17351 11

原创 mq消息积压怎么对应

你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了,或者消费的极其极其慢。没有,谁让你第一个方案执行的太慢了,你临时写程序,接入数据来消费,消费一个丢弃一个,都不要了,快速消费掉所有的消息。所以就这事儿,其实线上挺常见的,一般不出,一出就是大case,一般常见于,举个例子,消费端每次消费之后要写mysql,结果mysql挂了,消费端hang那儿了,不动了。关于这个事儿,我们一个一个来梳理吧,先假设一个场景,我们现在消费端出故障了,然后大量消息在mq里积压,现在事故了,慌了。...

2022-08-03 16:11:05 1005

原创 nacos注册中心面试总结

服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 leader raf

2022-07-05 14:43:48 2127 4

转载 Kafka 面试连环炮, 看看你能撑到哪一步?

大家好,我是 华仔, 又跟大家见面了。之前有粉丝留言说能否总结和分享一些 Kafka 相关的面试题。今天我们就来安排一期关于 Kafka 的核心面试题连环炮, 从「基础知识」、「进阶提升」、「架构调优」 三个方向梳理面试题,希望在金三银四的关键节点可以帮助到大家。由于内容很多,打算拆分成「上中下」三篇,本文是面试系列的中篇。这篇文章干货很多,希望你可以耐心读完。01 Kafka 整体架构图一个典型的 Kafka 集群中包含若干 Producer,若干 Broker「Kafka支持水平扩展,一般 Broke

2022-06-30 18:46:15 185

转载 Netty——内核角度看IO模型

从今天开始我们来聊聊Netty的那些事儿,我们都知道Netty是一个高性能异步事件驱动的网络框架。它的设计异常优雅简洁,扩展性高,稳定性强。拥有非常详细完整的用户文档。同时内置了很多非常有用的模块基本上做到了开箱即用,用户只需要编写短短几行代码,就可以快速构建出一个具有,,,等特征的高并发网络应用程序。本文我们来探讨下支持Netty具有,特征的基石----netty的。由Netty的开始,我们来正式揭开本系列Netty源码解析的序幕:网络包收发过程.png当通过网络传输到达网卡时,网卡会将网络数据帧通过放到

2022-06-30 18:14:20 222 2

原创 MySQL六十六问——面试复习必备

目录1. 什么是内连接、外连接、交叉连接、笛卡尔积呢?2. 那MySQL 的内连接、左连接、右连接有有什么区别?3.说一下数据库的三大范式?4.varchar与char的区别?5.blob和text有什么区别?6.DATETIME和TIMESTAMP的异同?7.MySQL中 in 和 exists 的区别?8.MySQL里记录货币用什么字段类型比较好?9.MySQL怎么存储emoji😊?10.drop、delete与truncate的区别?11.UNION与UNION ALL的区别?12.count(1).

2022-06-30 16:25:22 1079 1

原创 Nginx 面试题 40 问

目录什么是Nginx?Nginx 应用场景?Nginx 怎么处理请求的?Nginx 是如何实现高并发的?什么是正向代理?什么是反向代理?反向代理服务器的优点是什么?Nginx 目录结构有哪些?Nginx 配置文件 nginx.conf 有哪些属性模块?cookie 和 session 区别?为什么 Nginx 不使用多线程?nginx和apache的区别为什么要做动、静分离?什么叫 CDN 服务?Nginx 怎么做的动静分离?Nginx 负载均衡的算法怎么实现的?策略有哪些?如何用 Nginx 解决前端跨域

2022-06-28 18:39:06 373

原创 mybatis 执行流程,mybatis源码解析,推荐收藏

前言MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下:1、Mapper接口和映射文件是如何进行绑定的2、MyBatis中SQL语句的执行流程3、自定义MyBatis中的参数设置处理器typeHandler4、自定义MyBatis中结果集处理器typeHandlerPS:本文基于MyBatis3.5.5版本源码在MyBatis中,利用编程式进行数据查询,主要就是下面几行代码:第一行是获取一个SqlSession对象在上一

2022-06-23 10:56:30 408

原创 查数据库中每张表的大小

sql语句结果

2022-06-21 20:47:07 293

原创 grep,awk ,sed——Linux 文本处理三剑客

Linux 三剑客是(grep,sed,awk)三者的简称,熟练使用这三个工具可以提升运维效率。Linux 三剑客以正则表达式作为基础,而在Linux系统中,支持两种正则表达式,分别为“标准正则表达式”和“扩展正则表达式”。在掌握好正则表达式后,将具体讲解三剑客的用法。正则表达式:REGular EXPression, REGEXP。我们通过特定的字符串匹配模板,来获取到所需的内容。熟练掌握好正则表达式是使用的前提啊。: 匹配任意单个字符;: 匹配指定范围内的任意单个字符;:匹配指定范围外的任意单个字符;:

2022-06-20 17:07:22 588

原创 git Git 45 个经典操作场景,git操作大全,专治不会合代码

git对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 这样牛X的客户端工具,使得合并代码变的很方便。但找工作面试和一些需彰显个人实力的场景,仍然需要我们掌握足够多的git命令。下边我们整理了45个日常用git合代码的经典操作场景,基本覆盖了工作中的需求。如果你用 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。你就可以用下面的命令显示当前上的最近一次的提交(commit):或者我的提交信息(commit message)写错了如

2022-06-16 17:15:33 554

原创 自定义注解支持SpEL表达式(动态参数)

实际生产中一个案例:利用AOP生成用户操作日志代码直接复制过去就可以测试,亲测可用2.定义spel解析工具类3.定义切面类4.方法上使用日志注解

2022-06-09 20:41:45 2487 1

原创 mongo,mongodb优化思路

MongoDB 是高性能数据,但是在使用的过程中,大家偶尔还会碰到一些性能问题。MongoDB和其它关系型数据库相比,例如 SQL Server 、MySQL 、Oracle 相比来说,相对较新,很多人对其不是很熟悉,所以很多开发、DBA往往是注重功能的实现,而忽视了性能的要求。其实,MongoDB和 SQL Server 、MySQL 、Oracle 一样,一个 数据库对象的设计调整、索引的创建、语句的优化,都会对性能产生巨大的影响。为充分挖掘MongoDB性能,简单列举以下Mongodb优化方式:文档中

2022-06-09 20:36:20 1581

gps数据介绍.txt

 该GPS轨迹数据集记录了四川省成都市从2014年8月1日到2014年9月1日的一个月的15000量出租车GPS轨迹数据。约14亿条数据。强调一下这是付费数据。

2019-07-07

java写的文件上传与下载小案例

自己写的一个文件上传下载的案例,注释很详细。适合初学者学习。

2018-04-18

jquery.form.js

里面有 jquery.form.js jquery jquery.easy.ui 的txt文件,直接放到项目中就可使用,方便大家!

2017-11-07

C# chm 中文手册

C# chm中文手册 里面的内容相当全 大神总结的,适合新手学习,全面的总结了C#里面的知识,就像字典一样,初学者必不可少!

2017-09-05

考场编排小程序

学校作业小程序,根据考生随机编排考场。VS2015

2017-05-04

随机编排考场小程序,c#开发

根据考场的人数随机的编排考生,并可以查询学生信息。本人自己写的,比较简单,适合初学者,如有疑问,可以联系我。

2017-05-04

空空如也

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

TA关注的人

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