首页
学习
活动
专区
工具
TVP
发布

刘晓杰

专栏作者
281
文章
256733
阅读量
41
订阅数
Future系列(CompletableFuture与retrofit)使用和解析
注意,retrofit 2.9.0 已经内置了 java8 的 adapter,所以不需要 adapter-java8 的依赖了 另外,别忘了网络权限
提莫队长
2021-03-11
1.1K0
Coroutine(协程)(四)和retrofit搭配使用
注意:Coroutine和retrofit的使用在retrofit2.6之前之后是有区别的
提莫队长
2021-03-09
2.3K0
线程安全和锁机制(一)总述
当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么这个对象是线程安全的。
提莫队长
2021-03-03
7140
线程安全和锁机制(三)synchronized和Lock
synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性
提莫队长
2021-03-03
3650
线程安全和锁机制(二)谈谈volatile
计算机在执行程序的时候,每条指令都是在CPU中执行的,执行完了把数据存放在主存当中,也就是计算机的物理内存。 刚开始没问题,但是随着CPU技术的发展,执行速度越来越快。而由于内存的技术并没有太大的变化,导致从内存中读写数据比CPU慢,浪费CPU时间。 于是在CPU和内存之间增加高速缓存。这样就引入新的问题:缓存一致性。在多核CPU中,每个核的自己的缓存中,关于同一个数据的缓存内容可能不一致。 除了这种情况,还有一种硬件问题也比较重要。那就是为了使处理器内部的运算单元能够尽量的被充分利用,处理器可能会对输入代码进行乱序执行处理。这就是处理器优化。 除了现在很多流行的处理器会对代码进行优化乱序处理,很多编程语言的编译器也会有类似的优化,比如Java虚拟机的即时编译器(JIT)也会做指令重排。
提莫队长
2021-03-03
3330
线程安全和锁机制(四)谈谈 ThreadLocal 和 Handler
ThreadLocal可以实现线程本地存储的功能。把共享数据的可见范围限制在同一个线程内,就无须同步也能保证线程间不出现数据争用的问题。 那么它是如何实现解决数据争用的问题呢。看代码
提莫队长
2021-03-03
3520
Java注解详解
在研究了butterknife以后,感觉有必要深入研究一下注解(其实还有好多地方用到过,比如retrofit.以后准备研究的dagger2也用到了注解)
提莫队长
2020-06-02
9130
class文件字节码解析
本篇文章将介绍 .class 文件的结构,通过一个简单的例子认识 .class 文件。 首先写一个java文件(本人选择在Android平台,主要是接下来一篇会讲到dex文件,方便做对比)
提莫队长
2020-06-02
4370
简单聊聊AspectJ
考虑一个要在某些应用中实施安全策略的问题。安全性是贯穿于系统所有模块间的问题,而且每一模块都必须添加安全性才能保证整个应用的安全性,并且安全性模块自身也需要安全性. 传统的面向对象编程中,每个单元就是一个类,而类似于安全性这方面的问题,它们通常不能集中在一个类中处理因为它们横跨多个类,这就导致了代码无法重用,它们是不可靠 和不可承继的,这样可维护性差而且产生了大量代码冗余,这是我们不愿意看到的。 使用传统的编程解决此问题非常的困难而且容易产生差错,这就正是 AspectJ 发挥作用的时候了。
提莫队长
2020-06-02
9980
说说编译插桩
说到这里,有必要说一下Java字节码和Dalvik 字节码 java字节码可以参考这篇文章作为了解一文让你明白Java字节码,里面演示了如何将字节码反过来解析出对应的class文件。我自己也按照他的方法解析了一次class文件字节码解析 Dalvik 字节码可以看这篇dex文件字节码解析这篇文章开头还有对应的参考链接,本人按照这两个链接做的 总的来说,dex文件比class文件要复杂得多.一方面是小端排列,另一方面需要寻址.最重要的一点是,class文件的类索引里面所有的信息都是直接排进去的,但是dex文件里面的类都是存的索引,dex文件更为紧凑.也就是意味着,如果需要修改dex文件,那么他的成本会比修改class文件难得多
提莫队长
2020-06-02
1.2K0
简单介绍ASM树API
就是采用基于对象的模型,类可以用一个对象树表示,每个对象表示类的一部分,比如类本身、一个字段、一个方法、一条指令,等等,每个对象都有一些引用,指向表示其组成部分的对象。
提莫队长
2020-06-02
9760
java泛型详解
先来一道经典的测试题。 List<String> l1 = new ArrayList<String>(); List<Integer> l2 = new ArrayList<Integer>();
提莫队长
2020-06-02
6510
android socket实现文件导出功能
该功能主要描述如下:将SD卡中的文件通过socket导出到window文件夹中。 首先我要先介绍一个客户端和服务器端共有的一个文件类: UploadFile.java
提莫队长
2019-03-01
7830
通过GET方式传递数据给服务器
自动生成的ServerGET.java中有 @WebServlet(“/ServerGET”) 所以web.xml就不需要配置了
提莫队长
2019-02-21
1.1K0
多功能时钟应用
近几天做了个多功能时钟,分享一下 主界面 对应的代码: MainActivity.java package com.example.clock; import android.a
提莫队长
2019-02-21
9640
android studio编写jni,ndk程序(不用mk文件)
(1)打开as的Terminal,输入cd app/src/main/java (2)通过javah生成头文件:javah -d ../jni -jni test.ndkdemo.PrintUtil(包名+类名,而且不要再MainActivity里面定义native函数) 参考:http://blog.csdn.net/lvxiangan/article/details/52348975
提莫队长
2019-02-21
6760
ServerForXML网络编程
新建Dynamic Web Project,名称为ServerForXML(该勾选的勾上)。
提莫队长
2019-02-21
2490
编译时注解(一)AbstractProcessor实战
Java中的注解(Annotation)是一个很神奇的东西,特别现在有很多Android库都是使用注解的方式来实现的。 我们并不讨论那些在运行时(Runtime)通过反射机制运行处理的注解,而是讨论在编译时(Compile time)处理的注解。下面便入手学习下Java注解处理器。
提莫队长
2019-02-21
7.1K1
volatile,synchronized,ReentrantLock
实现机制:反编译以后monitor 优化:自旋锁,适应自旋锁,轻量级锁等 所谓自旋锁,就是让该线程等待一段时间,不会被立即挂起,看持有锁的线程是否会很快释放锁。怎么等待呢?执行一段无意义的循环即可(自旋)。 虽然可以避免线程切换带来的开销,但是占用处理器时间
提莫队长
2019-02-21
5600
类加载器
顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。
提莫队长
2019-02-21
4970
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档