凌晨提交的代码炸了生产环境?1024致敬每一位负重前行的开发者

第一章:凌晨提交的代码炸了生产环境?1024致敬每一位负重前行的开发者

在无数个寂静的深夜,当城市沉入梦乡,总有一群人仍在与代码搏斗。他们可能是为了修复一个紧急的线上 bug,也可能是赶在版本截止前完成功能上线。而一次看似微小的疏忽——比如一个未校验的空指针或一条错误的 SQL 语句——就可能让整个生产环境陷入瘫痪。

那些年我们踩过的坑

  • 忘记切换 Git 分支,将开发代码直接合并至主干
  • 数据库迁移脚本未做回滚方案,导致服务无法启动
  • 配置文件中硬编码测试环境地址,上线后连接失败

如何避免“凌晨炸弹”

建立完善的发布流程是关键。以下是一套推荐的上线检查清单:
  1. 通过自动化测试覆盖核心业务逻辑
  2. 使用 CI/CD 流水线强制代码审查与构建验证
  3. 上线前执行预发布环境灰度验证
  4. 部署时启用蓝绿发布或金丝雀策略

一段安全的数据库升级示例


-- 升级用户表结构,增加邮箱唯一索引
ALTER TABLE users 
ADD COLUMN IF NOT EXISTS email VARCHAR(255) UNIQUE;

-- 添加非空约束前先清理数据
UPDATE users SET email = 'unknown@example.com' WHERE email IS NULL;

-- 安全添加约束
ALTER TABLE users 
ALTER COLUMN email SET NOT NULL;
该脚本确保在添加约束前处理潜在空值,防止因数据异常导致迁移失败。

致敬数字背后的坚守

角色职责常备物资
后端工程师守护服务稳定性咖啡、日志分析工具
运维工程师保障系统高可用监控大屏、应急预案
前端工程师提供流畅用户体验浏览器兼容性列表
graph TD A[本地开发] --> B[Git 提交] B --> C{CI 自动化测试} C -->|通过| D[预发布部署] C -->|失败| E[阻断合并] D --> F[人工验收] F --> G[生产灰度发布] G --> H[全量上线]

第二章:从事故中学习——典型线上故障剖析

2.1 缺乏代码审查机制导致的逻辑错误

在没有严格代码审查机制的开发流程中,逻辑错误极易潜入生产环境。这类问题往往不触发编译错误或单元测试失败,却在特定条件下引发严重业务异常。
典型逻辑缺陷示例
// 计算用户折扣,但未校验输入范围
func CalculateDiscount(price, rate float64) float64 {
    return price * (rate / 100) // 若 rate > 100,将产生超额折扣
}
上述函数未对 rate 进行边界检查,当传入超过100的值时,会导致折扣金额反超原价,造成资损。
常见漏洞类型
  • 边界条件处理缺失
  • 并发访问下的竞态条件
  • 异常路径未覆盖
  • 权限校验绕过
通过引入强制性代码评审流程,结合静态分析工具,可显著降低此类风险。

2.2 配置变更未同步至生产环境的灾难性后果

配置管理是保障系统稳定运行的核心环节。当开发与生产环境间配置不同步时,极易引发服务异常甚至系统崩溃。
典型故障场景
  • 数据库连接字符串错误导致服务启动失败
  • 缓存超时设置不一致引发雪崩效应
  • 功能开关(Feature Flag)状态错配造成逻辑混乱
代码示例:配置加载差异

# staging.yaml
database:
  host: "db-staging.internal"
  timeout: 3000 # 毫秒

# production.yaml(未同步更新)
database:
  host: "db-prod.internal"
  timeout: 1000
上述配置中,预发环境延长了数据库超时时间以应对高延迟,但该优化未同步至生产环境,导致在网络波动时大量请求超时,最终触发连锁故障。
监控缺失加剧风险
可视化配置比对工具应纳入CI/CD流程,确保跨环境一致性。

2.3 数据库变更缺乏回滚方案的设计缺陷

在数据库变更管理中,缺失回滚机制是高风险设计缺陷。一旦上线后发现数据结构错误或性能问题,无法快速恢复至稳定状态,将导致服务中断与数据不一致。
典型问题场景
  • 直接执行 ALTER TABLE 删除字段,造成历史数据丢失
  • 未保留旧表结构,导致版本回退困难
  • 自动化部署脚本中缺少条件判断与逆向操作逻辑
改进方案:可逆迁移脚本
-- 升级:添加新字段(非破坏性)
ALTER TABLE users ADD COLUMN email_backup VARCHAR(255) NULL;

-- 回滚:安全删除(仅当无依赖时)
ALTER TABLE users DROP COLUMN email_backup;
上述代码通过分离“新增”与“删除”操作,确保每个变更均可逆。字段重命名或类型变更应分阶段进行,先加字段、迁移数据、再下线旧字段,避免原子性破坏。
推荐流程图
→ 变更评估 → 备份当前结构 → 执行增量变更 → 记录版本号 → 部署回滚脚本模板

2.4 第三方依赖突变引发的服务雪崩案例

在微服务架构中,某核心订单服务依赖第三方支付网关API。当该网关因版本升级导致响应延迟从50ms激增至2秒,且未设置合理熔断策略时,请求积压迅速耗尽线程池资源。
服务降级缺失的后果
大量同步调用阻塞,连锁反应致使上游库存、用户服务相继超时,最终形成雪崩效应。
熔断机制配置示例

circuitBreaker := gobreaker.NewCircuitBreaker(gobreaker.Settings{
    Name:        "PaymentGateway",
    MaxRequests: 3,                         // 半开状态时允许3个请求
    Interval:    10 * time.Second,          // 统计窗口间隔
    Timeout:     60 * time.Second,          // 熔断后等待60秒进入半开
    ReadyToTrip: func(counts gobreaker.Counts) bool {
        return counts.ConsecutiveFailures > 5 // 连续5次失败触发熔断
    },
})
该配置通过限制连续失败次数和恢复策略,有效隔离故障依赖,防止系统级崩溃。

2.5 定时任务误操作在凌晨集中爆发的根因分析

系统监控数据显示,多个定时任务在凌晨2:00至4:00间频繁出现执行失败与资源争用现象。该时段为日志归档、数据备份等批处理任务的集中调度窗口,任务密度骤增导致调度器负载过高。
任务调度冲突
大量任务使用 crontab 配置于同一时间点,缺乏错峰机制。以下为典型配置示例:

# 高峰时段集中触发
0 2 * * * /backup/script.sh
0 2 * * * /sync/data_sync.py
30 2 * * * /report/generate.sh
上述配置未考虑 I/O 竞争与内存占用叠加效应,易引发数据库连接池耗尽或磁盘 IO wait 升高。
资源竞争与连锁故障
  • 多个 Python 数据脚本同时读写共享存储,导致文件锁冲突
  • 备份进程占用大量带宽,影响主服务心跳检测
  • 任务无超时控制,长期阻塞致使后续任务堆积
通过引入随机延迟与优先级队列可显著缓解此类问题。

第三章:构建高可靠系统的防御体系

3.1 多层次发布策略:灰度、蓝绿与金丝雀部署

在现代持续交付体系中,安全可控的发布策略至关重要。灰度发布通过逐步放量验证新版本稳定性,适合用户规模庞大的系统。
蓝绿部署机制
该策略维护两套相同的生产环境(蓝色与绿色),版本切换瞬时完成,极大降低发布风险。
  • 零停机更新,保障业务连续性
  • 快速回滚,只需切换流量指向
金丝雀发布流程
先将新版本推送给小比例用户,监控关键指标后再逐步扩大范围。
canary:
  replicas: 2
  traffic: 
    - percentage: 5   # 初始导入5%流量
      version: "v2"
上述配置表示将5%的请求导向v2版本,便于观测错误率与延迟变化。
策略对比分析
策略回滚速度资源消耗适用场景
蓝绿部署极快高关键业务升级
金丝雀较快中功能迭代验证

3.2 监控告警闭环:从指标采集到自动响应

指标采集与数据上报
现代监控系统依赖于高频率、低延迟的指标采集。通过在应用层嵌入探针(如 Prometheus Client Library),可定时暴露关键性能指标。
// 暴露HTTP请求计数器
var httpRequests = prometheus.NewCounterVec(
    prometheus.CounterOpts{Name: "http_requests_total"},
    []string{"method", "path", "status"},
)
prometheus.MustRegister(httpRequests)

// 中间件中记录请求
httpRequests.WithLabelValues(r.Method, path, fmt.Sprintf("%d", status)).Inc()
该代码定义了一个带标签的计数器,用于按方法、路径和状态码维度统计HTTP请求量,便于后续聚合分析。
告警规则与自动响应
通过Prometheus等工具配置告警规则,当指标持续超出阈值时触发告警,并经由Alertmanager实现去重、分组与路由。
  • 采集层:Exporter + Pushgateway 支持主动推送与被动拉取
  • 处理层:PromQL 实现复杂指标计算与条件判断
  • 通知层:集成Webhook、钉钉、企业微信实现自动化响应

3.3 故障演练常态化:混沌工程在真实业务中的落地

从被动响应到主动验证
传统故障处理依赖事后复盘,而混沌工程通过主动注入故障,提前暴露系统薄弱点。将故障演练纳入CI/CD流程,实现每周自动执行网络延迟、服务宕机等场景测试。
典型实验场景配置

apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
  name: delay-pod-network
spec:
  action: delay
  mode: one
  selector:
    labelSelectors:
      "app": "order-service"
  delay:
    latency: "500ms"
    jitter: "100ms"
  duration: "30s"
该配置模拟订单服务的网络延迟,latency设定固定延迟500ms,jitter增加随机波动,验证下游服务超时熔断机制是否生效。
常态化执行策略
  • 灰度环境每日执行基础场景(如CPU打满)
  • 生产环境按季度执行高危演练,配合业务低峰期
  • 演练结果自动生成MTTR与可用性报告

第四章:开发者的核心能力修炼地图

4.1 写出可维护代码:命名规范与函数单一职责实践

良好的命名规范是代码可读性的基石。变量、函数和类的名称应准确反映其用途,避免使用缩写或模糊词汇。例如,getUserData() 比 fetchData() 更具语义。
函数应遵循单一职责原则
每个函数只做一件事,并将其做好。这不仅提升可测试性,也便于后期维护。
func calculateTax(income float64, rate float64) float64 {
    if income <= 0 {
        return 0
    }
    return income * rate
}
该函数仅计算税额,不处理数据库操作或日志记录。参数 income 表示收入,rate 为税率,返回值为计算结果。
命名规范对照表
场景推荐命名不推荐命名
获取用户信息getUserInfo()getData()
配置结构体ServerConfigConf

4.2 日志设计的艺术:结构化日志与上下文追踪

在分布式系统中,传统文本日志难以满足高效检索与问题定位需求。结构化日志通过统一格式(如JSON)记录事件,便于机器解析与集中处理。
结构化日志示例
{
  "timestamp": "2023-10-01T12:00:00Z",
  "level": "INFO",
  "service": "user-service",
  "trace_id": "abc123",
  "message": "User login successful",
  "user_id": "u12345"
}
该日志采用JSON格式,包含时间戳、日志级别、服务名、追踪ID和业务上下文。字段标准化有助于ELK或Loki等系统快速索引与查询。
上下文追踪机制
为追踪请求在微服务间的流转,需在日志中注入唯一trace_id。每个服务沿用该ID,形成完整调用链。
字段用途
trace_id标识一次完整请求链路
span_id标识当前服务内的操作片段

4.3 异常处理的正确姿势:分级捕获与用户无感降级

在构建高可用系统时,异常处理不应止于“捕获错误”,而应实现**分级捕获**与**用户无感降级**的协同机制。
分级捕获策略
按异常严重性分层处理:底层捕获具体异常,高层处理通用错误。
func fetchData() ([]byte, error) {
    resp, err := http.Get("/api/data")
    if err != nil {
        return nil, fmt.Errorf("network_error: %w", err) // 包装为可追溯错误
    }
    defer resp.Body.Close()
    return io.ReadAll(resp.Body)
}
该代码通过 %w 保留原始错误链,便于后续分级判断。
用户无感降级实践
当非核心功能异常时,返回默认值或缓存数据:
  • 网络请求失败 → 使用本地缓存
  • 图片加载异常 → 展示占位图
  • 第三方服务超时 → 返回空结构体
通过此类策略,系统在局部故障时仍能维持整体可用性。

4.4 技术债务管理:如何识别并逐步偿还隐形风险

技术债务如同代码中的“隐形利息”,初期提升开发速度,长期积累则引发维护成本激增。识别技术债务需关注重复代码、缺乏测试覆盖和架构耦合等问题。
常见技术债务信号
  • 频繁出现的“临时修复”(quick fix)注释
  • 单元测试覆盖率低于70%
  • 模块间依赖关系混乱
重构示例:消除重复逻辑

// 重构前:重复的验证逻辑
function saveUser(user) {
  if (!user.name || !user.email) throw new Error("Missing fields");
  // 保存逻辑
}

function updateUser(user) {
  if (!user.name || !user.email) throw new Error("Missing fields");
  // 更新逻辑
}
上述代码存在重复校验,增加维护负担。通过提取共用函数降低耦合:

// 重构后:统一验证入口
function validateUser(user) {
  if (!user.name || !user.email) throw new Error("Missing fields");
}

function saveUser(user) {
  validateUser(user);
  // 保存逻辑
}

function updateUser(user) {
  validateUser(user);
  // 更新逻辑
}
该重构将校验逻辑集中管理,提升可读性与可维护性,是偿还技术债务的有效实践。

第五章:致所有在黑夜中点亮星光的程序员

写给凌晨三点的你
当城市沉睡,服务器仍在运行。无数个深夜,开发者面对闪烁的终端,用一行行代码编织着数字世界的骨架。这不是浪漫的比喻,而是真实发生在全球各地角落的日常。
一个真实的调试案例
某次线上服务突然出现 503 错误,日志显示数据库连接池耗尽。经过排查,发现是某个未加索引的查询在高并发下引发锁争用。解决方案如下:
-- 添加复合索引以优化查询性能
CREATE INDEX CONCURRENTLY idx_user_status_created 
ON orders (user_id, status, created_at);
同时调整连接池配置:
# connection pool settings
max_connections: 100
idle_timeout: 30s
max_conn_lifetime: 1h
工具链的选择至关重要
  • 使用 Prometheus + Grafana 实现实时监控
  • 通过 Jaeger 追踪分布式调用链路
  • 采用 GitLab CI/CD 实现自动化部署流水线
团队协作中的关键实践
角色职责响应时间 SLA
前端工程师维护 UI 组件与接口对接< 15 分钟
后端工程师保障 API 稳定性与数据一致性< 5 分钟
SRE系统可用性与灾备恢复< 2 分钟
[用户请求] → API Gateway → Auth Service → [Service A → DB] ↓ Logging & Tracing → ELK Stack
Anthropic新架构:让LLM应用层归零的工程革命 在大模型工程实践中,'应用层胶水代码'长期构成隐性成本核心——包括上下文编排、流式响应解析、安全策略注入等非智能逻辑。其本质是模型服务与应用之间职责边界模糊所致。随着推理基础设施向确定性、低开销、高内聚演进,平台方正将本该由服务端承担的协议处理、格式校验与合规保障能力原生集成。这种‘责任内聚’设计显著降低延迟抖动、内存占用与代码维护面,使开发者得以聚焦prompt设计与业务逻辑。Anthropic此次通过v1/messages新endpoint实现的layer归零,正是这一趋势的关键落地:它不新增功能,却让 阅读详情

相关推荐

Anthropic新架构解析:如何让Claude API‘无感减层’

大模型API调用中的上下文编排、流式响应解析、安全护栏等胶水逻辑,长期构成工程落地的隐性负担。其本质是客户端与推理服务之间因协议抽象不足而被迫补全的‘非模型智能层’。随着Anthropic推出内聚式服务端处理机制,这类逻辑正从client侧迁移至inference server内部,依托声明式metadata控制、WASM原生执行与事件驱动响应,显著降低延迟、内存占用与运维熵增。该演进代表LLM基础设施从‘命令式适配’迈向‘声明式契约’的关键转折,尤其适用于高SLA对话服务、RAG生产部署及低延迟AI应用构

weixin_30316097的博客 699

2021 1024

节日快乐~

Welcome to my 优快云 blog 3万+

IEC 104 规约仿真工具实战:客户端服务端配置与调试避坑指南

IEC 104 是电力远动通信的核心协议,基于 TCP 实现主站与变电站间的实时数据交换。其会话模型采用客户端主动连接、服务端监听机制,通过 STARTDT 激活传输,并利用 APDU 中的 ASDU 承载遥测、遥信、遥控等类型标识。仿真工具通过模拟客户端与服务端,在工位上复现总召唤、遥控返校、时钟同步等交互,大幅降低现场调试成本。典型应用包括协议一致性回归、报文回放与边界测试,帮助工程师快速定位公共地址不匹配、点表类型错误、序号回绕等常见问题。

weixin_29184371的博客 253

连续粉体进料与混合建模教程(19):工艺操作空间与鲁棒性——多约束交集窗口与场景扫描

(顶层-底层 API 质量分数差),注释里写死了"非普适定量式、不可跨研究比较"(底账 §7.4 明确警告过不同研究的偏析指数不可直接比较)。

kkchenjj的博客 76

10204_vista_w2k8_x64_production_client.zip

10204_vista_w2k8_x64_production_client.zip

Xcelium XRUN实用指南:从入门到高效仿真

本文是Xcelium XRUN仿真工具的实用指南,从基础入门到高效应用全面解析。XRUN作为Cadence Xcelium的统一命令行入口,能自动化编译、精细和仿真流程,大幅提升数字芯片与FPGA验证效率。文章详细介绍了最简命令、波形调试、增量编译、多核并行仿真等核心功能,并提供了管理复杂项目、性能调优与深度调试的进阶技巧,帮助工程师快速上手并精通这一高效仿真工具。

weixin_29238147的博客 741

揭秘1024代码大赛高分秘诀:Top选手不愿公开的7个编程实战策略

auto-generated

FuncFun的博客 811

【第六届起重机创意大赛国一作品——资料分享】

文章目录前言一、比赛内容分析二、确定方案与作品模型1.方案简图2.作品模型三、电控部分控制思路单片机选择与资源分配拓展板的设计接线与走线代码分享总结

qq_19308801的博客 7783

Anthropic API 架构瘦身:胶水层归零与客户端轻量化实践

在大模型应用开发中,API 协议与工程现实之间的‘胶水层’长期导致高延迟、高内存占用和重复胶水代码。本文围绕 Anthropic 推出的 zero-layer 架构演进,解析其如何通过 server 端 Rust+WASM 原生处理 prompt 注入、streaming 语义标准化、tool use 输入校验等关键能力,实现 client 端 runtime 开销趋近于零。该设计并非新增抽象,而是对 Prompt Assembly Layer、Streaming Orchestration Layer 等

weixin_38170853的博客 469

基于plc的工厂除尘控制系统设计(S7-200、仿真、调试、高质量)

工业作为我国第二支柱产业,在近十几年来发展非常迅速,虽然带了了可观的经济效益,但在工业生产中所产生的大量粉尘气体对大气的污染现象也不容忽视。为减少工业粉尘对环境的污染,世界各国制定了严格的环境保护要求。为了减少工业中粉尘的排放,除尘器的研发改良,以及燃煤的使用等等都在不断更改以符合粉尘排放标准。而目前最先进的除尘设备无机膜除尘器具备除尘效率高,稳定性好,结构紧凑易于维护等优点,且无机膜对于粉尘吸附效率高,抗腐蚀能力优秀,耐高温,因此能更有效应用于高温烟气的除尘。本文根据PLC技术在除尘方面的应用,来优化设计

老高的博客 1281

别再手动发通知了!用Python+飞书机器人,5分钟搞定自动化消息推送(附完整代码)

本文详细介绍了如何利用Python和飞书机器人实现自动化消息推送,大幅提升工作效率。通过Webhook调用和Python脚本,可以轻松发送告警、日报等各类消息,并与业务系统深度集成。文章还提供了完整代码示例和避坑指南,帮助开发者快速上手。

weixin_28736335的博客 307

Anthropic 架构级减法:API 层胶水逻辑归零实录

大模型 API 调用中的 context 编排、output 结构化、streaming 控制和 error recovery 等非模型逻辑,长期构成开发者必须自行实现的‘胶水层’。其本质是模型服务与应用工程之间的职责错位,导致高延迟、高内存占用与低解析成功率。Anthropic 通过将该层能力内嵌至 inference server 的 Rust+WASM 运行时,实现 system prompt 模板、JSON Schema 校验、流式 chunk 合并等能力的原生支持,使客户端代码大幅精简。这一架构演

weixin_30323631的博客 298

PXE 批量安装 Ubuntu 20.04

原文链接:https://www.cpweb.top/1698 一、介绍   Ubuntu 20.04 的服务器安装程序支持新的操作模式:自动安装(automated installation)。自动安装可以通过自动安装配置提前回答所有这些配置问题,并使安装过程无需任何交互即可运行。   在 Ubuntu 18.04 中,用的应答文件是 preseeds(预配置文件),它基于 debian-installer(aka di)来实现自动安装的。需要注意的是,如果你使用的是 cobbler,那你应....

supahero的博客 1万+

1024

这里输入要写的内容

✍千里之行,始于足下 ^,^ 9247

STK之Commu模块之三仿真卫星通信链路参数计算

考虑上述衰减的影响,可以得到卫星接收机输入端的载波功 [C] = [PT] +[GT] +[GR] -[L] -[L1] -[L2] (

juanhuokang2681的博客 8268

RK3588开发笔记-PCIE接口2.5G网卡RTL8125调试记录

在RK3588平台上调试2.5G网卡(Realtek RTL8125)时,我们会用到PCIE接口,这篇文章记录了从硬件连接、内核驱动到最终实现网络通信的整个调试过程,包括可能遇到的问题和解决方案。Realtek RTL8125是为高带宽需求设计的一款高性价比2.5G以太网控制器。它不仅提供了高达2.5Gbps的网络传输速率,还具备良好的节能特性、硬件卸载引擎和广泛的操作系统支持。无论是在家庭网络、企业NAS,还是游戏和云计算等场景中,RTL8125都能为用户提供更快速、更稳定的网络连接。

flypig has a dream! 3681

1024啊、终于等到了

1024

weixin_48205788的博客 3万+

LLC谐振变换器软启动,不只是“慢启动”,还是“智能启动”

LLC谐振变换器的软启动,不只是“慢慢来”,而是要在控制时序、限流、响应速度之间精妙权衡。而数字控制,特别是用查表法或混合信号法,为实现真正的“最佳轨迹”提供了可能。✨小Tips:如果你的系统成本敏感,选择查表法准没错;如果你的设计目标是超高速响应,那就上混合信号的高配方案!

weixin_43199439的博客 691

1024,你懂的

全世界只有不到1%的人关注了我们你真是个特别的人写字楼里写字间,写字间里程序员;程序人员写程序,又拿程序换酒钱。酒醒只在网上坐,酒醉还来网下眠;酒醉酒醒日复日,网上网下年...

lovenankai的专栏 59万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

注意,你注册的假1024可能就是它

  近年来,随着信息技术的迅猛发展,网络已经成为我们生活不可或缺的一部分。网络小芬给我们带来方便快捷的同时,也成为诈骗犯罪的温床,不发分子利用网友的好奇心理,制作上线钓鱼网站诱骗消费者。钓鱼网站是不法分子尽心网络诈骗的主要手段之一。    今天讲的就是一次对钓鱼***到社工的经历  废话不多说 看图跑进来的请认真看 记好笔记  目标站 http://www.caoliu10240.com/  10...

weixin_34068198的博客 3万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ip地址 @91.189.91.93 security AppCompatActivity(1024td

LifecycleBoundObserver(LifecycleOwner owner, Observer<? super T> observer) { super(observer); mOwner = owner; class LiveDataActivity : App cao mpatActivity liu() 观察 Data 1024数据的代码社区地址通常这样写: archive.https://1024td.com @91.189.91.93...

fuli99999的博客 6万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Direct vs non-direct ByteBuffer

转载于:http://crmky.spaces.live.com/Blog/cns!8C989768DB1A6B14!458.entry?sa=254330365 这两种类型的ByteBuffer相信大家都知道,但是两者的区别在什么地方呢?在不同的环境下采用哪种类型的ByteBuffer会更有效率呢? 先解释一下两者的区别: Non-direct ByteBuffer内存是分配在堆上的,直接由J...

Java企业应用 174

tomcat eclipse 内存配置和部署路径

-Dcatalina.base="E:\apache-tomcat-7.0.64" -Dcatalina.home="E:\apache-tomcat-7.0.64" -Dwtp.deploy="E:\apache-tomcat-7.0.64\webapps" -Djava.endorsed.dirs="E:\apache-tomcat-7.0.64\endorsed" -Xms1024M ...

pengfeicao521的专栏 233
上一篇: 2024年1024程序员节黑马键盘曝光:这款国产轴凭什么火?
下一篇: 【1024程序员节专属游戏卡揭秘】:如何用一张卡玩转技术圈年度狂欢?
QuickProceed
博客等级 码龄1年 149粉丝 2008原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值