后端

代码生成器辅助类Stub、StubQueue与CodeletMark

认识Stub与StubQueue 初始化模板表我们介绍过TemplateInterpreter::initialize()函数,在这个函数中会调用TemplateTable::initialize()函数初始化模板表,随后会使用new关键字初始化定义在AbstractInterpreter类中的_code静态属性,如下: static StubQueue* _code; 由于TemplateIn

Spring整合Mybatis源码剖析

Spring整合其他框架的核心思路:就是将其他框架生成的类放到Spring容器中。同理,Spring整合Mybatis也是让Mybatis生成的Mapper接口的代理对象作为Bean注册到Spring容器中。 解决的核心问题: 1)通过FactoryBean创建Mapper接口代理对象,并且指定构造方法参数为Mapper接口class,并且设置BeanDefinition.setAutowire

SpringBoot添加过滤器Filter

1. 拦截器和过滤器 先说一下,过滤器和拦截器的区别和联系。 1.1 相同点 首先过滤器和拦截器都能实现请求的筛选(过滤或者拦截),然后根据自己的业务需求,添加自己的逻辑,保证请求往后走的时候数据能满足自己的需求。同时呢,他们又都能终止请求流(过滤器只要不在过滤链中往后传request就形;拦截器返回false)。 1.2 不同点 1.2.1 实现原理不同 过滤器和拦截器 底层实现方式大不相同,过

位运算-统计位1的个数

题目leetcode191 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数 示例 输入:00000000000000000000000000001011 输出:3 解题思路 思路1 直接循环检查给定整数 n 的二进制位的每一位是否为 111。 image.png image.png public class S

Android进程间通信

Linux进程间通信 基础概念 内核态/用户态 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核空间)。操作系统的资源是有限的,如果访问资源的操作过多,必然会消耗过多的资源,而且如果不对这些操作加以区分,很可能造成资源访问的冲突。所以,为了减少有限资源的访问和使用冲突,Unix/Linux的设计哲学之一就是:对不同的操作赋予不同的执行等级,

IDEA配置MAVEN超详细

一、需要准备什么? 1、已安装配置MAVEN 2、已安装IDEA 二、步骤 1、打开idea,在开始界面点击Customize-->All settings,推荐大家从这里设置,这样以后新建的项目就不用再设置了,在里面设置的话每次打开新项目都要设置一次。 1.allsetting.png 2、依次点击Build,Execution,Deployment-->Buil

Golang无限缓存channel

需求 最近在弄一个游戏的gate网关转发服务器,服务器之间使用的是nats通讯,gate的作用是接收客户端发来的消息转发到对应的服务器上,并从nats上获取游戏服务器发送给客户端的消息并转发给客户端。前面接收还好处理,因为都是发布订阅模式的消息,收到消息直接向nats上扔就行了。但转发服务器来的消息就不一样了,从nats上取的速度远大于gate转发给客户端的速度,会有数据囤积在nats中。为了解决

PLT Hook基本原理

最近经常用到PLT hook,接下来几篇文章,给大家介绍一下PLT hook的原理、使用、案例、以及一些注意事项。 今天是第一篇,先来介绍一下PLT Hook的基本原理。 ELF文件格式 ELF:Executable and Linkable Format 动态链接库就是ELF格式的文件,要搞清楚PLT Hook的原理,首先要了解ELF文件格式。 image.png ELF分为连接视图

android系统稳定性-内存问题分析总结

前言 软件版本在拷机(长稳)阶段最容易系统稳定性问题,而且任何卡死/卡顿/崩溃/重启等现场都可能是内存异常导致,从系统工程师角度会遇到各种内存问题,不管是应用挂死,系统挂死,kernel挂死,应用内存泄漏,系统内存泄漏,kernel内存泄漏等都会遇到,有时解决一个稳定性问题,需要不同的团队开发人员,且每次挂死原因都不会一样,一百次挂死有一百个原因,导致问题也不好总结,下面也是根据之前遇到过的内存问