第一次线上 OOM 事故,竟和 where 1 = 1 有关

这篇文章,聊聊一个大家经常使用的编程模式 :Mybatis +「where 1 = 1 」。 笔者人生第一次重大的线上事故 ,就是和使用了类似的编程模式 相关,所以印象极其深刻。 这几天在调试一段业务代码时,又遇到类似的问题,所以笔者觉得非常要必要和大家絮叨絮叨。 1 OOM 事故 笔者曾服务一家电

N 年前,为了学习分库分表,我把 Cobar 源码抄了一遍

10 几年前,互联网产业蓬勃发展,相比传统 IT 企业,互联网应用每天会产生海量的数据。 如何存储和分析这些数据成为了当时技术圈的痛点,彼时,分库分表解决方案应运而生。 当时最流行的 Java 技术论坛是 javaeye ,有位淘宝的技术人员分享了一篇分库分表的文章 ,这篇文章,我反复看了几十遍,想

线程安全使用 HashMap 的四种技巧

这篇文章,我们聊聊线程安全使用 HashMap 的四种技巧。 1方法内部:每个线程使用单独的 HashMap 如下图,tomcat 接收到到请求后,依次调用控制器 Controller、服务层 Service 、数据库访问层的相关方法。 每次访问服务层方法 serviceMethod 时,都会在方法

如何实现一个简单易用的 RocketMQ SDK

2018 年,做为架构负责人,接到一个架构需求:实现一个简单易用的 RocketMQ SDK 。 因为各个团队 RocketMQ 原生客户端配置起来千奇百怪,有的配置存在风险,各团队负责人都需要一个简洁易用的 RocketMQ SDK 。 我立马调研相关开源的方案,当时 RocketMQ-Sprin

CCPC 2023 湘潭邀请赛游记

序 04:36,长沙返程的硬卧列车上。 禁不起隔壁大叔富有特色的鼾声,对着窗外发愣。 写写游记吧。 Day (-inf, 0) 由于 UCUP Taiwan 场神奇的发挥,意外获得湘潭邀请赛名额 x1。公费旅游万岁! 然而,飞机不给报,高铁不给报,软卧不给报,打车也不给报,路途时间高达 30h,还被

RocketMQ为什么要保证订阅关系一致

这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:保证订阅关系一致。 订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。 1 订阅关系演示 首先我们展示正确

高一学年期末考试回忆记暨退役游记

## 前言: ~~从某种意义上来说,我退役了~~ 我怎么可能会似?我还有一些事没有了结,一桩心愿未能完成,还有一个人不能辜负。在这之前我是不会退役的(~~标题党:6~~) 这个游记将会记载在这高一学年一次总结性的文化课考试,作为我的收官之战,同时也是决定我命运的一战,虽然这考试对我的实际影响并不大,

雷电模拟器改真机保姆级教程,游戏搬砖党必备!

游戏工作室今天分享最新防封电脑模拟器改真机技术,适用于所有模拟器搬砖游戏,有效防止电脑模拟器封禁问题。 游戏搬砖玩家可以像使用真机一样流畅地操作游戏,电脑模拟器可以模拟真机的运行环境,让游戏服务器难以察觉到运行设备的差异,从而起到防封的作用更加安全。 重要提示:要多开模拟器,每个模拟器,都新建,并用

KPM算法求字符串的最小周期证明

先给出公式 ans = n - LPS[n-1] 其中ans为最小周期,n为给出的由假设的周期字符串中提取出的子串长度,LPS为前缀函数,n-1为字符串最后的位置下标 证明如下 证明ans = n - LPS[n-1],思路: (1) 证明特殊情况,即先对完整周期字符串进行证明,这时候的字符串组成是

游戏行业如何利用隐私计算技术增强玩家体验

在游戏行业,玩家体验的个性化是提升用户粘性和满意度的关键。随着技术的发展,游戏公司现在可以利用大量的玩家数据来定制游戏体验。然而,这同时也带来了对玩家隐私保护的挑战。隐私计算技术的出现为这一问题提供了解决方案,它允许在不泄露个人数据的情况下分析和利用数据。

我用 GitHub 9.8k 的 Go 语言 2D 游戏引擎写了个游戏

游戏引擎的贡献者依旧在积极维护,是一个兼具学习 & 娱乐的项目!为此我也用这个引擎写了一个生存游戏: avoid-the-enemies

CRAPS赌博小游戏

游戏规则 代码实现 首先把这个规则用代码写出来 再在它基础上进行简单的可视化(主要是利用Easygui的界面) 最后查缺补漏,看看有没有什么Bug 利用pyinstaller -F -w -i xx.ico craps.py命令打包成exe文件 from random import randint

[转帖]某游戏海外版本堆外内存泄露排查

https://www.jianshu.com/p/cae00d9c99fe 某游戏海外版本堆外内存泄露排查 现象 线上有部分服务器用top发现Java进程内存占用占比达到99,而且出现了有一个服务器被Linux OOM Kill 排查 选择了110服,该机器的Java进程最大堆内存设置的是9710

游戏内嵌社区服务开放,助力开发者提升玩家互动与留存

华为 HMS Core 游戏内嵌社区服务提供快速访问华为游戏中心论坛能力,支持玩家直接在游戏内浏览帖子和交流互动,助力开发者扩展内容生产和触达的场景。 一、为什么要游戏内嵌社区? 二、游戏内嵌社区的典型使用场景 1、游戏内打开论坛 您可以在游戏内绘制论坛入口,为玩家提供沉浸式发帖、浏览、点赞、回帖、

游戏开发者应该了解的小游戏变现逻辑

因为小游戏不用去应用商店或者落地页下载,因而看广告但是不直接点击,而是选择去微信自己搜索启动的流量占比要高一些。为了适应这一情况,有些媒体平台会选择在小游戏链路将之前 APP的默认有效触点前置到播放或者视频浏览上。这里会让监测归因方式需要处理的数据提升两个数量级,对归因触点识别的难度也会加大。

看我是如何用C#编写一个小于8KB的贪吃蛇游戏的

译者注:这是Michal Strehovský大佬的一篇文章,他目前在微软.NET Runtime团队工作,主要是负责.NET NativeAOT功能的开发。我在前几天看到这篇文章,非常喜欢,虽然它的内容稍微有点过时(还是使用的.NET Core 3.0),不过其中的一些编程技巧和思维方式很受用,特

用【游乐场】说清楚“硬件、操作系统、跨平台、应用软件、开发语言、代码”的关系

经常有小伙伴对一些计算机技术和概念不太清楚,产生很多误区,甚至张冠李戴,在一起聊天时又很难给对方解释清楚,经过苦思冥想,终于想到一些比喻,能够很好地阐述了“硬件、操作系统、跨平台、应用软件、开发语言、代码”之间的关系。 硬件 陆地(Intel)与海洋(AMD):硬件就像是一个广阔的自然环境,其中In

Libgdx游戏开发(7)——开始游戏界面实现

原文: Libgdx游戏开发(7)——开始游戏界面实现-Stars-One的杂货小窝 上篇文章也是讲解了如何实现暂停,但实际上,上篇的做法可能不够优雅 因为暂停和游戏界面我们可以分成2个Screen对象,这样只需要监听键盘输入,更改显示不同的Screen对象即可 本文的实现目标: 使用Screen来

Libgdx游戏开发(6)——游戏暂停

原文: Libgdx游戏开发(6)——游戏暂停-Stars-One的杂货小窝 暂停也是一个游戏的必要功能了,本文研究了Libgdx实现游戏暂停 例子以桌面端游戏实现讲解为主,至于移动端,可能之后会进行补充... 本文最终实现的就是 按下esc暂停,之后会出现一个界面提示,表示当前已经暂停 重新按下e

经典游戏:吃豆人

该游戏的背景以黑色为主。画面中,“Google”6个字母组成回廊似的迷宫画面,四个颜色分别为红、黄、蓝、绿的鬼面符号在迷宫中穿梭,似乎在寻找一个半开半合的黄色圆圈符号。当记者按动键盘上的方位键时,发现该黄色圆圈符号可以行走,并且可以吞吃迷宫路径上的小黄豆,但遇到鬼面符号时就要被吃掉。