源码

EventBus源码详解

≯℡__Kan透↙ 提交于 2020-01-20 18:48:32
我们在使用EventBus的时候,首先要注册EventBus: EventBus.getDefault().register(this); 那么我们就从这段代码作为入口,一步一步探索EventBus的秘密! 我们先看看getDefault()这个方法: static volatile EventBus defaultInstance; public static EventBus getDefault() { if (defaultInstance == null) { synchronized (EventBus.class) { if (defaultInstance == null) { defaultInstance = new EventBus(); } } } return defaultInstance; } 很明显,采用了单例的设计模式。 进入register()方法查看: public void register(Object subscriber) { //通过反射,拿到这个类 Class<?> subscriberClass = subscriber.getClass(); //通过这个类,拿到所有subcriber注解的方法,并返回到一个集合里 List<SubscriberMethod> subscriberMethods =

RK3399—用户态操作EEPROM

佐手、 提交于 2020-01-20 18:37:48
  在此之前,在其他平台上应用i2c总线用户接口(ioctrl)进行访问EEPROM,具体可以参考“ 嵌入式Linux下 24系列EEPROM/FRAM驱动 ”文章。现将其移植到RK3399平台运行。 编译系统:Ubuntu16.04 ARM硬件:firefly RK3399 ARM系统:firefly Ubuntu16.04(SDK) 连接i2c:i2c4 EEPROM:AT24C02 电路原理图: 查看器件   首先使用“i2ctools”工具查看硬件连接是否正常。   i2c总线已经正确识别到到AT24C02,根据电路原理图地址线A0—A2接地,所以0x50是AT24C02的器件地址。0x51—0x57是24系列高容量型号芯片的地址(24c04—24c16)。 编译源码 clone源码 https://github.com/Prry/linux-drivers/tree/master/i2c-24cxx 文件目录结构: 24cxx目录为EEPROM/FRAM用户态访问抽象公共接口 at24cxx为EEPROM读写测试程序 fm24cxx为FRAM读写测试程序 修改“at24cxx.c”源码   本次硬件使用的是AT系列EEPROM,选择“at24cxx”目录源码。 /* 修改EEPROM数据结构描述 */ /** * @brief device init */ const

i春秋 第二届春秋欢乐赛 Web-Hello World

ぃ、小莉子 提交于 2020-01-20 18:27:23
访问题目 http://106.75.72.168:9999/ 解题过程 审查源码,抓包查看请求头及响应头,今发现flag.xmas.js,提示flag可能存在这个文件中,然而访问这个文件出现404。尝试访问flag.js出现flag.js源码,由于源码太长没看完就放弃了。。。 扫描后台目录没有收获,看来flag只能从flag.js找线索了。把flag.js放控制台运行无收获,就不会了。 查询资料后发现,这个题目考的是git泄露漏洞。使用大佬写的工具 Git_Extract ,可直接获取文件 【upload】 在beyond compare中将flag.js与flag.js.04bb09进行对比,如下: 【upload2】 可以看出开头即为 flag{ ,挑出所有访问量不一样的地方,即可获得flag。 补充git泄露 漏洞原因:在运行git init 初始化代码库时,会在当前目录下产生一个.git的隐藏文件,用来记录代码的变更记录等。在发布代码得时候,没有吧.git这个目录删除,导致可以使用这个文件来恢复源代码。 git文件夹分析 文件夹: hooks:存放一些sheel的地方 info:存放仓库的信息 object :存放所有git对象的地方 refs :存放提交hash的地方 config:github的配置信息 文件: description:仓库的描述信息

Mybatis深入源码分析之SqlSessionFactoryBuilder源码分析

大兔子大兔子 提交于 2020-01-20 10:41:41
一:源码分析代码片段 public static void main(String[] args) { try { // 基本mybatis环境 // 1.定义mybatis_config文件地址 String resources = "mybatis_config.xml"; // 2.获取InputStreamReaderIo流 Reader reader = Resources.getResourceAsReader(resources); // 3.获取SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 4.获取Session SqlSession sqlSession = sqlSessionFactory.openSession(); // 5.操作Mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); UserEntity user = mapper.getUser(2); System.out.println(user.getName()); } catch (Exception e) { e.printStackTrace();

[UE4]源码编译相关问题

…衆ロ難τιáo~ 提交于 2020-01-20 08:02:35
一、Github 下载源码 链接: https://github.com/EpicGames/UnrealEngine 二、按照下图顺序依次下载文件、加载初始化,需要等很久,最后打开UE4.sln编译 在编译结束后会有报错: Datasmith导致的报错,可以点击选中Datasmith,右键卸载项目,再次编译即可(当然如果项目需要用到DataSmith,这里就不可以卸载) 三、 如果还是报错,一般会提示当前源码版不包含同版本发布版引擎里的插件,需要添加插件到源码版引擎目录下 发布版引擎目录: 源码版引擎目录: 编译成功后关闭VS,创建新项目,Switch Unreal Engine Vision 时选择源码版 其他问题会及时更新,欢迎提问和建议。 来源: CSDN 作者: 秋刀鱼不费游泳丶 链接: https://blog.csdn.net/qq_31263521/article/details/103872001

jmeter二次开发之导入源码到idea

a 夏天 提交于 2020-01-20 04:27:31
2020年 新突破,新成就、新未来! 第一步 jmeter源码下载 https://archive.apache.org/dist/jmeter/source/ 这里选择的是jmeter3.3版本用的是ant构建,最新版5.2.1用的gradle构建后续导入研究。 解压之后显示如下图(此图) 第二步 如果直接导入到idea ,idea识别不到该项目为eclipse项目 执行命令:window+R 显示如下为操作成功 一顿操作猛如虎,直接点击next 该项目为ant构建点击最右侧ant build 选择apache-jmeter-3.3下的build.xml 双击download_jars 等待下载完毕 把之前包红的jar包干掉 引入重新引入类库与jar包 把sources中加入protocal 类库 、dependencies中加入如下所有的jar包 应用之后执行ant命令 install 完毕 Main class for JMeter - sets up initial classpath and the loader. 运行该文件 遇到这些不要慌只是提示已过时并不是报错 解决办法:修改newDriver源码 运行newDriver,启动jmeter成功 欢迎点赞 世界很美好!这世界我来过! 来源: CSDN 作者: BugSuperMan 链接: https://blog

Logback源码分析

一曲冷凌霜 提交于 2020-01-20 03:32:43
在日常开发中经常通过打印日志记录程序执行的步骤或者排查问题,如下代码类似很多,但是,它是如何执行的呢? package chapters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; // 省略... Logger logger = LoggerFactory.getLogger(LogbackTest.class); logger.info(" {} is best player in world", "Greizmann"); 本文以Logback日志框架来分析以上代码的实现。 slf4j 如今日志框架常用的有log4j、log4j2、jul(common-log)以及logback。假如项目中用的是jul,如今想改成用log4j,如果直接引用java.util.logging包中Logger,需要修改大量代码,为了解决这个麻烦的事情,Ceki Gülcü 大神开发了slf4j(Simple Logging Facade for Java) 。slf4j 是众多日志框架抽象的门面接口,有了slf4j 想要切换日志实现,只需要把对应日志jar替换和添加对应的适配器。 从图中就可以知道我们开始的代码为什么引 slf4j 包。在阿里的开发手册上一条 强制:应用中不可直接使用日志系统(log4j、logback)中的

Linux下IGH Ethercat Master安装

不羁岁月 提交于 2020-01-20 02:00:50
引言 简单igh ethercat master安装 1,准备工作 (1)一个Linux系统,在虚拟机里面也可以,不过如果在虚拟机里面需要一些其他的设置,这个最后再说。Linux内核需要是2.6和3.x,如果不是需要更换内核版本:可以 点这里 查看内核版本 uname -r (2)ethercat master源码,官网下载地址: http://www.etherlab.org/de/ethercat/index.php 2,编译 (1)下载源码 直接点击或者复制上面的链接到浏览器搜索,找到版本1.5.2,后缀名为.tar.bz2下载保存 或者可以直接在终端输入命令: wget http://www.etherlab.org/download/ethercat/ethercat-1.5.2.tar.bz2 默认保存到当前文件夹 (2)解压源码 进入压缩包文件夹,执行解压缩包命令: tar -xjf ethercat-1.5.2.tar.bz2 在当前目录下会多出一个ethercat-1.5.2文件夹 进入文件夹 cd ethercat-1.5.2 (3)执行配置文件 这个可以参考几个图片 有个配置网卡类型的,查看网卡类型: ethtool -i ethx "x"指的是网卡号,查看 ifconfig 这个可以不做选择,默认的是ec_generic

Redis源码剖析和注释(十九)--- Redis 事件处理实现

自古美人都是妖i 提交于 2020-01-20 00:22:23
Redis 事件处理实现 Redis事件介绍 Redis服务器是一个事件驱动程序。下面先来简单介绍什么是事件驱动。 所谓事件驱动,就是当你输入一条命令并且按下回车,然后消息被组装成Redis协议的格式发送给Redis服务器,这就会产生一个事件,Redis服务器会接收该命令,处理该命令和发送回复,而当你没有与服务器进行交互时,那么服务器就会处于阻塞等待状态,会让出CPU从而进入睡眠状态,当事件触发时,就会被操作系统唤醒。事件驱动使CPU更高效的利用。 事件驱动是一种概括和抽象,也可以称为I/O多路复用(I/O multiplexing),它的实现方式各个系统都不同,一会会说到Redis的方式。 在redis服务器中,处理了两类事件: 文件事件(file event):Redis服务器通过套接字于客户端(或其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。 时间事件(time event):Redis服务器的一些操作需要在给定的事件点执行,而时间事件就是服务器对这类定时操作的抽象。 2. 事件的抽象 Redis将这两个事件分别抽象成一个数据结构来管理。redis 所有源码注释 2.1 文件事件结构 /* File event structure */ typedef struct aeFileEvent { // 文件时间类型:AE_NONE,AE

开源 个人网站 响应式

偶尔善良 提交于 2020-01-19 23:02:54
个人网站: https://yicaifenchen8.github.io/personal/ 源码地址: https://github.com/yicaifenchen8/personal.git 首页 电脑效果 手机效果 更多 电脑效果 手机效果 博客 电脑效果 手机效果 视频,音乐,图片 电脑效果 手机效果 其他节面效果请直接访问个人网站切身体验 个人网站: https://yicaifenchen8.github.io/personal/ 源码地址: https://github.com/yicaifenchen8/personal.git 来源: CSDN 作者: yicaifenchen8 链接: https://blog.csdn.net/yicaifenchen8/article/details/104041762