自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(418)
  • 资源 (4)
  • 收藏
  • 关注

转载 使用AI大模型过程中遇到的一本正经胡说八道

现在很多开发者已经将大模型作为一个日常工具使用。一方面我们在感叹它带来的便捷,一方面我们又要处处提防。它就像是一个死要面子的百事通,遇到它不通的,也要说的好像自己知道一样。场景一,基于错误的问题会得到错误的回答。咱们分析一下AI一本正经胡说八道的经典场景:林黛玉倒拔垂杨柳。大体是说问chatgpt林黛玉倒拔垂杨柳是什么故事,它会给出几个版本的故事听着好像那么回事是的。实际上在四大名著中,倒拔垂杨柳...

2024-09-14 22:23:56 111

原创 如何通过k8s来降低运营成本?

通过k8s来降低运营成本从大方面上分为两类:资源配置和自动运维。下面具体来聊聊。资源配置方面资源配置主要是通过资源使用率来减少成本。超卖多数服务都有资源浪费的情况,特别是业务系统多数为IO密集型。CPU利用率很低,这时候可以进行超卖来提高资源使用率。超卖是指比如分配给了4个核,但是因为资源共享,在自身使用不高的情况下,有可能将4个核共享。比如超卖率为2。就是说极端情况下其实自己只得到2个核。但是这...

2024-09-02 06:45:36 633

原创 在工作中这样用大模型来提升研发效率

我在咱们技术交流群里抛出一个问题,照例很快收到了朋友的有效建议。本来这个问题是我传参的问题,我开始的传参是这样。这是我记错了,这是模拟前端传文件,类型为@RequestParam("file") MultipartFile file文件时的入参。其实这里需要的是二进制。那postman工具也是支持的,选择类型为二进制即可。到此问题本来已经解决了,但是又有朋友回复,给了我新的思路。因为本来我从运营那...

2024-08-23 10:11:14 175

原创 云原生除了微服务有什么关键技术?

‌云原生技术除了微服务还包括容器编排、云服务、Devops、弹力设计、可观测、以及云原生安全。容器编排是云原生的内核;剩下的是云原生发展而来的生态。‌‌容器编排将应用程序及其所有依赖项打包到一个独立的、可移植的容器中,实现跨平台、可扩展和可部署的应用程序。常用的容器化技术有Docker和容器编排工具如Kubernetes。云服务‌云服务‌则是一种通过互联网提供和管理计算资源的模式,包括基础设施即服...

2024-08-20 09:48:08 488

原创 怎样写出无BUG的代码?

充分理解理解业务逻辑存在即合理。乍一看不合理的逻辑,既然存在,一定有其历史原因。修改的前提是理解它怎样来的。理解技术原理基本类型的数据,比如int是可以直接==来判断相等的。但是如果两个数据都是Integer类型,再用==就会出bug了。值比较和对象地址比较的区别。这是一个技术原理上如果认知不清可能会引起bug的简单例子。作为代码评审的人,可以事先定好规矩:如果评审过程中发现代码编写者不清楚自己写...

2024-08-07 08:41:44 407

原创 AI+用户增长方向垂直领域头部公司招聘

帮朋友招聘,简历发邮箱:987489055@qq.com标题格式:姓名XXX的简历坐标:北京有以下要求哈,我说说自己的理解:1. 希望您最近仍然一线开发,有强悍的编码能力2. 希望您最好是985/211本科以上学历3. 希望您有在至少一个一线大厂至少2年以上的工作经历4. 如果你有其他亮点能让简历筛选官眼前一亮,以上可以都不满足说说为什么有这个要求哈。第一条就不多解释了,招聘的是开发岗。第二条,...

2024-08-02 06:00:38 435

原创 盘点那些莫名其妙的环境问题

问题一:DEBUG启动时卡住你有没有遇到过debug启动时,日志也没有任何报错,就是没有完全启动完就不动了?反正我是遇到过。用的Intelij idea进行调试的,因为没有自动跳转到断点,所以没有第一反应是运行到了断点。这种运行到了打包好的代码文件时的断点很容易因为代码和源文件不同步而引起不自动跳转的现象。问题二:启动报错组件连不上这个问题通常和本机环境有关。我用两台电脑办公。两台电脑用的不是同一...

2024-07-29 06:01:25 436

原创 单元测试的最佳实践

整体架构合适的架构可以提升可测试性。比如菱形对称架构的模块化和解耦特性使得系统各个部分可以独立进行单元测试。这不仅提高了测试的效率,还能够减少测试的依赖性,提高测试准确性。代码设计代码设计和可测试性有密切关联。强烈建议一个方法的代码行数不要太多。这样,如果需要细粒度单元测试(需要比较高的代码覆盖率的单元测试),就更容易。大不了把私有方法变成公有,加一@VisibleForTesting注解来测试。...

2024-07-24 06:01:12 1005

原创 怎样全面的考虑容灾?

清晰概念容灾:是指系统冗余部署,当一处由于意外停止工作,整个系统应用还可以正常工作。容错:是指在运行中出现错误(如上下游故障或概率性失败)仍可正常提供服务。可用性:描述的是系统可提供服务的时间长短。用公式来说就是A=MTBF/(MTBF+MTTR),即正常工作时间/(正常工作时间+故障时间)。稳定性:这个业界没有明确的定义,我的理解是:在受到各种干扰时仍然能够提供符合预期的服务的能力。从要求的严格...

2024-07-23 12:47:29 421

原创 如何正确解读并发数?

本文的叙事结构是由浅入深,大家可根据自身情况选择跳过前面,直接往后看。基础认知并发和并行并发和并行概念的不同:1、并发:并发是指两个或多个事件在同一时间间隔发生。2、并行:并行是指两个或者多个事件在同一时刻发生。狭义一点理解:在同一台机器上,从CPU处理来看,并行度是有几个CPU内核并行度就是几,因为同一个时刻1个CPU只能做一件事;而并发度一般用每秒做多少事情来衡量,就出现了QPS、TPS等指标...

2024-07-22 06:00:26 327

原创 工作中最大的难点是什么?

【工作中最大的难点是什么?】这是一个非常好的用于自评的问题。通过这个问题可以对自身的项目经验、问题解决能力、团队协作能力、态度与价值观进行反思,寻找到潜在改进点。我在工作中的最大难点核心是三个字:不兼容。包括:规范不兼容、组件升级不兼容和设备不兼容。规范不兼容规范不兼容最难办,因为会涉及到与外部客户、合作方或者用户的规范。所以稳定是规范的最重要职责之一。它一般对扩展开放,对修改关闭。就是说新添加内...

2024-07-18 06:01:28 646

原创 到底什么是流处理?

流处理就是数据处理工作流,本质上是一种计算机编程范例。非要做一个定义,那就是流处理是对接收到的新数据事件的连续处理。‌它涉及对从生产者到消费者的一系列事件进行处理。‌咱们从大数据、流式编程、Java流三个方面来聊。但是首先咱们先看看什么是数据流。什么是数据流数据流(也被称为事件流或流数据),是无边界数据集的抽象表示。无边界意味着无限和持续增长。无边界数据集之所以是无限的,是因为随着时间的推移,会有...

2024-07-17 06:01:06 793

原创 DDD领域驱动设计的四重边界

在DDD(领域驱动设计)中,四重边界是指分析边界、设计边界、实现边界和运行边界。这四个边界定义了软件开发的不同阶段应遵循的原则和策略。分析边界 (Analysis Boundary):确定业务问题范围,定义问题域。设计边界 (Design Boundary):根据领域模型划分限界上下文。实现边界 (Implementation Boundary):确保软件实现符合目标的领域编程模型。聚合边界 (A...

2024-07-16 06:02:27 301

原创 监控系统怎样做?

监控类型自底向上分为资源监控、服务监控和业务监控。希望打造公司级的监控系统最好的时机是系统规划时,如果把监控设计往后放,将会面临一个巨大的难题:推行和现有不兼容的规范。三种监控类型资源监控这个相对简单,随着k8s的兴起,目前比较流行的是Prometheus。zabbix和falcon也比较普遍。因为对业务侵入性较小,属于比较容易实现和维护的部分。服务监控中间件、数据库和安全漏洞扫描,这些软件依赖于...

2024-07-15 06:00:08 685

原创 看得见摸得着的DDD领域驱动设计

七八年前大家就开始流行聊DDD了,但那时很少有人能说得明白。现在DDD逐渐变成了能听得懂、说得清、看得见、摸得着的方法。今天咱们就来聊一聊。对复杂的理解DDD领域驱动设计是软件复杂性应对之道。这个复杂性怎么理解呢?Jurgen Appelo从理解力与预测能力两个维度分析了复杂系统理论。理解力的复杂度体现在规模和结构上。预测能力的复杂度体现在变化上。从对应的手段上,规模复杂度可以通过分解分而治之;结...

2024-07-12 11:55:39 372

原创 海量计数的统计系统如何设计?从万级到万亿级

中小规模的计数服务(万级)本着 KISS(Keep It Simple and Stupid)原则,尽量将系统设计得简单易维护,所以可以采用缓存 + DB 的存储方案存储计数的数据,因为它是咱们最熟悉的,团队在运维上经验也会比较丰富。当计数变更时,先变更计数 DB,计数加 1,然后再变更计数缓存,修改计数存储的 Memcached 或 Redis。这种方案比较通用且成熟,但在高并发访问场景,支持不...

2024-07-11 12:35:35 493

原创 注册中心与配置中心,是分?是合?

一零年代初,我还自己动手写过socket连接来做服务注册发现,后来有了zookeeper就方便多了,那时候zookeeper也直接做配置中心使用。后来出现了一些专门的服务注册发现组件如Eureka\etcd\consul,专门的配置中心比如spring cloud config\apollo。但是spring cloud全家桶后来又用nacos把注册发现和配置中心合在一起了。为什么它们能合在一起用...

2024-07-10 13:27:49 415

原创 如何设计建立和保持100w的长连接?如果有人恶意创建非法连接,怎么解决?

首先要考虑建立长连接的目的是服务端进行信息推送还是固定客户端与服务端同步调用、又或者是IM即时通讯场景呢?采用什么协议?如何做负载均衡?为了实现100w长连接,需要使用非阻塞I/O模型:采用如epoll、kqueue等高效的I/O多路复用技术,可以同时处理大量并发连接;异步处理:使用事件驱动或协程模型,避免线程阻塞,提高处理效率。这些在java中,netty都已经实现封装好了,也是目前使用最普遍的...

2024-07-09 12:36:05 831

原创 如果有十几亿白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计?...

首先要明确,几十亿白名单,数据量有多大?是否存储在一个数据库中?要不要数据分片?未来数据会不会增加,增加会以怎样的趋势进行?高可用上有什么要求,是否需要多活容灾?其次高并发有多高?查询是单独的查询还是有关联关系?是否有热点数据?从问题描述来看,这是一个典型的读多写少场景,可以在数据前加一层NoSql缓存来优化查询效率。具体NoSql中如何组织数据需要根据查询条件来设计。还要考虑的一个问题是,更新缓...

2024-07-08 12:05:44 274

原创 架构师应该在团队中发挥怎样的作用?

架构师分为5种:1.企业架构师EA(Enterprise Architect) EA的职责是决定整个公司的技术路线和技术发展方向。2.基础结构架构师IA(Infrastructure Architect) IA的工作就是提炼和优化技术方面积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些都是一个技术型公司传承下来的最宝贵的财富之一;3.特定技术架构 TSA (Technology-S...

2024-07-05 12:55:07 871

原创 怎样通过状态码快速定位问题?

5个案例。1、400状态码有次在发版验证环节,小哥哥发现自己的账号无法登录。叫来了其他测试人员,他们的登录都没有问题。我当时有说:我看报错是400错误,就是客户端请求非法。这种错误一般是请求时cookie或者其他参数有问题造成的,应该不是服务问题。小哥哥还是比较担心,我就等着他验证。他用账号在手机端登录也没问题。其他人登录也没问题。甚至将有问题的账号发给其他人登录也没有问题。他才放心继续发布。晚上...

2024-07-02 19:13:55 232

原创 生产日志敏感信息处理实践

咱们常见的日志主要有两种:一种是路由层日志,一种是应用日志。路由层日志路由层日志因为主要作用是监控某一个地址有没有正确被转发到对应应用,以及通过状态码来监控应用有没有正确被处理。所以日志也主要包含这两个内容:请求路径+状态码。遇到由于配置日志的信息打印过多:打印了请求路径+请求参数,因为参数中存在敏感信息,造成风险。咱们使用k8s的ingress来实现域名访问时,ingress本质还是nginx+...

2024-07-01 13:33:28 286

原创 Kafka消费端怎样保证消息不丢失?真正的处理方式其他文章中竟然没有见过

现有方案之前kafka消费端采用的是standalone模式,使用的是单分片。消费端指定分片0。使用了zookeeper进行选主。只在主节点进行消费。这个选主的过程要几分钟才能选出来。之后为了保证消息不丢失,已经执行完的kafkaOffset会保存到数据库。每次在重启时会拉取数据库里的kafkaOffset执行consumer.seek到此位置。然后才开始consumer.poll.我们做过破坏性...

2024-06-30 16:54:14 310

原创 日志堆栈不打印问题以及解决方法

我们在进行生产问题排查时发现日志的异常只打印了异常类型,没有打印详细堆栈。调研发现JVM默认在同一个异常大概抛出2800次以后为了提升效率进行了优化,详情不打印。这个问题有两种解决方法:第一种JVM为了提高处理异常的性能,引入了“回边计数器”(Back Edge Count)的概念。当异常被抛出的次数超过一个阈值(这个阈值在不同版本的JVM中可能会有所不同,比如在HotSpot中,这个值大约是28...

2024-06-29 15:59:57 445

原创 生产运行这么久了,我就抄了一下,能有什么风险?

咱们经常写业务代码时,如果用到了某个组件或者相似逻辑,有时候会从项目的其他地方抄一份改一改。有人会认为,这段逻辑在生产运行这么久了,是经过时间验证的。我就抄一下,快速完成任务即可,运行原理可以不用理解。用成熟的逻辑本身没错。但要建立在自身理解的基础上。下面以实际场景为例,咱们来看看不理解的抄代码会引起哪些问题。某业务为了实现kafka顺序消费,在消费端使用zookeeper的leader选举逻辑实...

2024-06-10 19:19:10 294

原创 JWT鉴权体系

引子对于业务的发展阶段,不同的人对0到100的定义差距很大。上图是我认知里的阶段划分。和很多人的认知相比,我认为的1不是系统搭建起来可用,而是系统已经获得了一定的认可,具备持续运营的条件;下一阶段是高速发展期,系统复杂性增加,业务量指数级增长,甚至应该是在行业处于领先地位才能叫做10;在100的阶段是做到了行业第一。毕竟不是第一怎么敢说给自己打100分呢?100+就像是小学生常规题满分之后的附加题...

2024-06-02 14:50:27 377

原创 性能优化:跨服务使用分布式缓存的3个思考

《性能优化:使用本地缓存遇到实际问题的思考》里提到我们架构团队最近在和业务团队合作,承接一些业务性能优化的小项目。最近遇到的几个项目分别用到了本地环境和分布式缓存。对于各种类型,我们希望做成设计标杆,以后不管是业务团队同学自己开发还是我们架构团队帮助优化,都有一套标准的设计模版。本文是使用Redis分布式缓存优化的项目。要不要打破服务化的限制当时拿到需求的时候有个纠结点:原来数据查询服务通过RPC...

2024-05-20 09:01:00 920

原创 性能优化:使用本地缓存遇到实际问题的思考

我们架构团队最近在和业务团队合作,承接一些业务性能优化的小项目。最近遇到的几个项目分别用到了本地环境和分布式缓存。对于各种类型,我们希望做成设计标杆,以后不管是业务团队同学自己开发还是我们架构团队帮助优化,都有一套标准的设计模版。本文介绍的内容和《性能优化实践:一行代码性能提升几十倍?》是一个项目,具体技术的使用和性能数据可直接参考这篇文章。本文主要是从问题角度来看。本地缓存缓存全量还是按请求缓存...

2024-05-19 15:09:17 853

原创 CURD系统怎样做出技术含量:微内核改造

建「中心」还是「平台」?10年前在一个公司,公司里经常需要做线上活动。对开发来说,就是通过不同的活动页面进行注册、登录,之后会有一些个性化的小活动:领取小礼物、领取红包或者参加抽奖。前端和后端疲于天天做各种换汤不换药的注册、登录。开发方式基本是把上次的代码拷贝一份,在此基础上做修改,来支撑新活动。大家就开会一起想解决办法解决重复开发的问题。大龄前端架构师说:「可以做工具自动生成注册、登录代码。」新...

2024-05-18 15:37:31 253

原创 为什么要理解类加载?遇到这种问题就知道书到用时方恨少了

Part1问题背景我们项目中引入了sharding-jdbc,本机运行、开发环境运行、测试环境运行都没有问题,结果到了预发布环境发生了一个异常:Cannot support database type 'MySQL' at org.apache.shardingsphere.sql.parser.core.parser.SQLParserFactory.newInstance(SQLParserF...

2024-05-16 00:43:02 906

原创 添加一个索引要投产,需要哪些步骤?

编程一生致力于写大家都能看懂的、有深度的技术文章05/202401开场白亚马逊有个bar raiser文化。就是说新招来的人一定要超过之前入职人员的平均水平,宁缺毋滥。越来越多的公司在推行这种文化。在这种氛围下:“虽然我不懂,但是活儿是能出来的”这种解决问题型人才也在以飞奔的速度转型为“活儿能干好,话能说明白”的综合素质人才。今天咱们就来聊一聊一个简单的添加索引在这个时代要怎样实施。02添加普通索...

2024-05-09 00:00:59 333

原创 如何确定应用的最佳数据库连接数?

Part1问题背景目前应用连接DB的连接数没有一个统一标准。目前既有应用的连接数设置普遍偏大,每个长连接都会产生开销,对DB服务器造成压力。随着服务的扩容和拆分,数据库服务端的压力会增大,有影响系统稳定性的风险。需要对数据库连接数建立标准,消除隐患。Part 2结论数据连接数设置10个能达到单机500多TPS,满足一般的生产要求。建议新应用默认为此值。后续根据压测情况可再进行调整。Part 3科学...

2024-05-06 00:01:05 1008

原创 五一上海旅游计划

旅游开始前1、提前订好酒店或者民宿。民宿可以选择小朋友比较喜欢的loft。2、提前抢票,卧铺比高铁舒服,时间点好,能多玩半天。旅游第一天1、提前跟房东沟通好,预计晚上9点之后入住(上海这边都是密码,不需要房卡。这点比较方便,房东不出面,自己就能完成看房和入住)。入住自带: 香皂盒,洗发水,毛巾,洗换衣物,拖鞋。2、提前订好外卖,9点40送到。外卖内容:小杨生煎、蜜汁鸡、水果捞。下车先吃点热乎饭。3...

2024-04-30 12:01:48 274

原创 性能优化实践:一行代码性能提升几十倍?

Part1问题背景手头本来有个很重要的性能优化工作,我也一直在提高它的优先级。毕竟按照四象限时间管理法则,重要的事情要先做。问大家一个问题:给你一个「重要不紧急」的事情和「紧急不重要」的事情,你先做哪一个?在一般的互联网公司,大家都非常忙碌。活儿是永远干不完的。这时候,我建议先做重要的事情。试想:一个人永远都在做「紧急不重要」的事情,他的产出必然是非常低的。这就是为什么「重要不紧急」在第二象限,仅...

2024-04-27 19:40:41 705

原创 Java转go,我用了12小时,10小时在解决环境问题

Part1问题背景作为一个资深的Java开发者,我深知面向对象的高级语言,语法是不用学的。需要的时候搜索就可以了,甚至可以用ChatGPT来写。之前我做一个安全多因素校验服务。因为是临时服务,扩展性上基本没有要求,为了快速开发,我使用了之前基本没有接触过的python语言。完成基本的开发(不包括调试),做到能运行起来,基本完成功能,我用了3个小时。因为python脚本不需要安装环境,直接用文本编辑...

2024-04-15 21:30:28 1036 1

原创 新来架构师,为什么不急于抛出发现的问题?

果芽科技GUOYA TECHNOLOGY致力于写大家都能看懂的、有深度的技术文章04/202401其他员工心声新来的架构师,据说原来很厉害。但是来了之后看也没什么想法。什么问题也没提,只是解决被分派的任务。新到一个地方在没有被同化之前,应该能看到很多问题,是不善于发现吗?02架构师心声要提出问题,对既有问题作优化,是首先要确认自己对解决程度的把握的。存在即合理。有些问题是问题,但是问题之所以存在,...

2024-04-11 21:30:51 260

原创 画好一张架构图有多难?

果芽科技GUOYA TECHNOLOGY致力于写大家都能看懂的、有深度的技术文章04/2024经过梳理与整合,我发现我们当前的架构呈现出一个洋葱型结构,从外到内分别是应用层、领域服务层和业务基础能力层。尽管这个基础架构方向是正确的,但绘制出来的架构图却显得杂乱无章,仿佛是我早晨未梳理的头发。02架构图的挑战与机遇绘制架构图之所以困难,一方面是因为我个人的绘图技巧有待提升,另一方面则是由于当前架构本...

2024-04-07 21:28:26 342

原创 AKF扩展立方体和AKF可用性立方体

很多人知道AKF扩展立方体是从《架构即未来》这本书开始。实际上akfpartners官方写过4篇关于AKF扩展立方体的文章,还有一篇介绍AKF可用性立方体。akfpartners官方在高可用、扩展性方面有很多专业技术文章,建议有空就翻翻看。AKF扩展立方体和AKF可用性立方体都介绍了X轴、Y轴和Z轴。X轴核心是复制,Y轴核心是按业务拆分;Z轴核心是按算法拆分。AKF扩展立方体解决的问题是提供无限扩...

2024-04-03 00:00:08 371

原创 Redis性能瓶颈与安全隐患排查验证纪实

在写《Redis怎样保证数据安全?》这篇文章,我是有对redis设置密码需要哪些步骤,设置密码的性能损耗有验证的。这就涉及到要对redis的配置做修改。开始时我是打算采用直接使用redis配置文件的方式。所以我从redis官网下载了一个默认的配置文件,就打算只将这个配置文件的requirepass注释打开,设置一个密码。redis我用docker启动,如果 docker run -p 6379:6...

2024-04-02 00:00:48 892

原创 Redis怎样保证数据安全?

问题:Redis默认是没有设置密码调研:Redis默认没有设置密码是因为它的设计目标是追求高性能和低延迟。当Redis配置文件中启用密码后,客户端连接Redis时需要进行密码验证。这个验证过程会增加CPU的负载,并可能导致链接响应时间变长,从而影响整体系统性能。特别是在处理大量并发连接时,密码验证可能会成为系统的瓶颈。此外,如果Redis和客户端位于不同的机器上,并且两者之间的网络延迟较高,密码验...

2024-04-01 00:00:24 630

阿里技术参考手册研发篇

阿里技术开放的三份资料:《阿里巴巴Java开发手册》《阿里技术参考图册》(研发篇)《阿里技术参考图册》(算法篇)

2018-04-25

用pinyin4j来给excel数据注音的实例

用pinyin4j来给excel数据注音的实例

2014-09-16

计算机组成电子教案:清华大学计算机系列教材王爱英主编

计算机组成电子教案 ,ppt的 清华大学计算机系列教材王爱英主编 总 目 录 第1章 计算机系统概论 第2章 计算机的逻辑部件 第3章 运算方法和运算部件 第4章 主存储器 第5章 指令系统 第6章 中央处理部件CPU 第7章 存储系统 第8章 辅助存储器 第9章 输入输出(I/O)设备 第10章 输入输出(I/O)系统 第11章 计算机系统 第12章 计算机硬件设计和实现导论

2010-08-28

spring aop学习实例

包内是aop入门的一些小例子。包括java代码和其中用到的xml文件。一个子包(如aop包)里有一个可执行应用程序。

2008-01-10

空空如也

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

TA关注的人

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