LineageOS 15.1 For 魅族16 2019-02-26

LineageOS Lineage版本:15.1 android版本: 8.1 编译日期: 2019-02-18 适配机型: 魅族16th 此为最终版,以后应该不会再更新了 适配进度: 大部分的硬件都工作正常,适合日常使用 注意事项: 刷入前请双清并清除fbe加密(rec自带功能)并格式化data 需提前解锁bootloader 刷入后需手动去除avb校验(rec自带功能)或者卡刷一个magisk 魅族16th twrp 链接: https://pan.baidu.com/s/1h4Ce22DGWe_ZNtq8dk799A 提取码: 3tih 刷机包 20190218 https://pan….

阅读全文 »

JAVA 多线程 基础

java中的线程操作都是就基于Thread类以及派生类实现的。 学习java多线程知识的时候,建议阅读java的源码,了解实现原理,而且源码包本身也提供了一些example。 阅读本文需要预先学习lambda,函数式接口等基础知识。这不算什么教材,并逼近于笔记,以知识点为主。 1.写一个简单的多线程例子 一句话简述:创建一个Thread实例,传递一个Runnable对象,调用Thread的start方法执行方法。 new Thread(()->{}).start(); 这大概是最精简的代码了.具体的代码解释如下。 Thread类是java中实现多线程的核心类,包含了多线程相关的大部分操作。这里…

阅读全文 »

Java 类的加载和初始化

直接从书上抄来的,自己写一遍加深印象 类的加载 加载就是通过指定的类全限定名,获取此类的二进制字节流(可以是clazz文件或者直接内存读取或者远程网络,jar包等),然后将此二进制字节流转化为方法区的数据结构,在内存中生成一个代表这个类的java.lang.Class对象。 java.lang.Class这个类用于维护目标类,包括读取字段 读取构造函数,读取方法,创建实例(newInstance)等等。 class对象可以通过Class.forName(“java.lang.String”)获取,或者直接String.class获取, 或者”java.lan…

阅读全文 »

Ubuntu 18.04 下编译 LineageOS 15 on 魅族16th 教程

自己整理的编译cm的大致步骤,英文能力不错的可以去lineage的官方wiki看看。 没有特别说明,所有的文件操作都在代码的根目录下执行。 0x0 安装adb和fastboot sudo apt install adb fastboot 安装后执行adb devices可能提示有权限问题,自己百度下提示的错误解决即可。   0x1 环境搭建 先安装几个必要的组件,包括: bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses…

阅读全文 »

魅族16th 简易刷机指南

首先,你必须解锁手机,也就是bootloader unlocked。目前来说,没什么好的解锁渠道。所以本教材仅供那些已经解锁的人使用。解锁后magisk就能用了,flyme直接刷magisk不会无法开机。 注意着是16th的 不是16P 我没16P 0x1 刷入第三方recovery 下载适配好的twrp镜像,然后使用app刷入或者fastboot刷入 链接: https://pan.baidu.com/s/1h4Ce22DGWe_ZNtq8dk799A 提取码: 3tih 0x2 去除fbe加密和avb 这个twrp无法解密加密的data分区,第一次进入recovery的时候请格式化Data…

阅读全文 »

基于Spring深入源码学习RabbitMQ

这篇文章将继续学习RabbitMq的一些东西,为了更好的学习,阅读和理解相关源码是非常有必要的。本篇文章将简单讲解下与RabbitMQ交互所使用的几个类和方法。 基本注解 @RabbitListener(queues = queueName) public @interface RabbitListener { // 本监听器的唯一id String id() default “”; // 指定容器工厂 默认的是SimpleRabbitListenerContainerFactory String containerFactory() default “”; // 绑定的队列对象 通过名字绑定…

阅读全文 »

Spring Cloud整合RabbitMQ

0x1.导入maven依赖 现在你需要导入一个starter包就好了,不用理会什么版本。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 0x2.添加RabbitMQ配置 这里只需要配置下RabbitMQ服务端的连接参数就好了,其他的直接用默认配置。 spring: rabbitmq: host: localhost port: …

阅读全文 »

消息队列 MQ 总结(入门)

序言 在实际开发环境中,你可能会遇到如下场景: 1.系统运行中会在特定时间产生了大量日志,日志服务的磁盘的IO 性能跟不上,导致某些服务运行缓慢。 2.某服务A的功能可能会调用服务B,但服务B的处理逻辑又与A无关(仅仅需要通知B处理下一些东西) 3.服务又注册用户机制,需要验证邮箱,但是处理和发送邮件占用了整个接口时间的2/3,但验证邮件并不是注册阶段验证的。 这些例子中,都存在AB两个独立服务,A是消息的发布者,B是消息的订阅者。实际环境中可能是一对多的关系(A对应多个B 或者A对应BCD多个不同的服务) 通过例子我们不难看出某些情况下,服务之间的调用存在一定的耦合性,但这种耦合性又是非必要…

阅读全文 »

Windows下的RabbitMQ安装与开启Web管理界面

因为项目开发需要用到MQ,所以花点时间时间学习了一下,简单写点文章吧。毕竟好久没写博客了。 目前主流的MQ比如RabbitMQ,RocketMQ,Kafka之类的很多。我选择RabbitMQ是因为项目本身是类OA的,不会有太大的并发和性能需求,RabbitMQ的API完善,可以和spring 无缝整合,入门简单部署也简单。 所以选型方面就敲定了RabbitMQ。 0x0 ERLang 在安装RocketMQ之前我们需要安装下erlang语言环境。因为RocketMQ是基于erlang开发的,运行RocketMQ的时候需要erlang运行时环境。就有好比运行.net程序要安装net frmewo…

阅读全文 »

Sping boot Oauth2.0 添加记住我功能

现在各种系统的登入页面一般都会有记住密码,记住我的功能。在使用oauth的时候,framework本身就提供了相关功能。我们只需要简单的配置一下就可以使用了。 1.首先登入页面添加一个checkbox <input type=”checkbox” value=”true” name=”remember-me”>记住我 checkbox的name定义在 org.springframework.security.config.annotation.web.configurers.RememberMeConfigurer 类定义的代码片段: public final class Remembe…

阅读全文 »