JAVA
小李飞飞砖
这个作者很懒,什么都没留下…
展开
-
Android网络知识总结
网络原创 2022-12-31 21:07:25 · 89 阅读 · 0 评论 -
ASM插桩举例
如何使用ASM给android的某个函数做插桩?原创 2022-10-09 14:32:27 · 646 阅读 · 0 评论 -
java动态代理与静态代理的区别
动态代理原创 2022-10-03 19:26:23 · 980 阅读 · 0 评论 -
重拾设计模式
为何又重新整理起来设计模式,目前开发已经5年多,日常开发过程中也偶有用到例如工厂模式、观察者模式、builder模式、单例模式等,但是真正对于什么模式可以解决什么问题还是不够熟稔于心,做不到灵活运用,所以在此时此刻,有必要重新整理一遍面向对象的基本原则和设计模式,力求达到熟稔于心、融会贯通、熟稔于心:原创 2022-09-15 12:20:15 · 103 阅读 · 0 评论 -
HTTPS数据传输流程
1.客户端向服务器端发起HTTPS请求,连接到服务器端的443端口上2.服务器端有一个秘钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,将公钥发送给客户端3.客户端收到服务器端的公钥之后,对公钥进行检查,验证其合法性,如果发现公钥有问题,那么HTTPS传输无法继续;如果合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的秘钥,即客户端秘钥,然后用服务器端的公钥对客户端秘钥进行非对称加密,这样客户端秘钥就变成了密文了,至此,https中的第一次HTTP请求结束4.客户端原创 2020-05-14 11:03:24 · 1096 阅读 · 0 评论 -
Hook技术
参考:https://www.jianshu.com/p/4f6d20076922使用 Java 反射实现 API Hook通过对 Android 平台的虚拟机注入与 Java 反射的方式,来改变 Android 虚拟机调用函数的方式(ClassLoader),从而达到 Java 函数重定向的目的,这里我们将此类操作称为 Java API Hook。下面通过 Hook View 的 OnC...原创 2020-02-04 17:40:44 · 194 阅读 · 0 评论 -
动态代理
代理模式的应用场景:1、例如要给某个方法加上监控,记录方法开始时候的时间,方法结束时的时间。静态代理:静态代理缺点:接口与代理类是1对1的,有多个接口需要代理,就需要新建多个代理类,繁琐,类爆炸。 public interface IPerson { void say(); } public static class Man implements I...原创 2020-02-04 16:47:09 · 142 阅读 · 0 评论 -
八个经典的java多线程编程题目
文章目录1、要求线程a执行完才开始线程b, 线程b执行完才开始线程2、两个线程轮流打印数字,一直到1003、写两个线程,一个线程打印1~ 52,另一个线程打印A~Z,打印顺序是12A34B...5152Z4、编写一个程序,启动三个线程,三个线程的ID分别是A,B,C;,每个线程将自己的ID值在屏幕上打印5遍,打印顺序是ABCABC...5、编写10个线程,第一个线程从1加到10,第二个线程从11加...原创 2020-01-01 18:01:32 · 19041 阅读 · 7 评论 -
activity主题
1、沉浸式主题<style name="Theme.Gallery" parent="android:Theme.Light.NoTitleBar.Fullscreen"> <item name="android:windowBackground">@color/black</item> <item name="andro...原创 2019-11-22 17:53:12 · 179 阅读 · 0 评论 -
多线程----ConcurrentHashMap
学习ConcurrentHashMap需要达到以下三点:一、比较HashMap为什么不是线程安全的,及HashTable是如何实现的安全的,并且HashTable有什么问题?二、深入理解CHM各项并发优化的原理。三、掌握锁优化的方法。一、比较HashMap为什么不是线程安全的,及HashTable是如何实现的安全的,并且HashTable有什么问题?1、HashTable的问题(很暴力)...原创 2019-11-10 14:54:20 · 475 阅读 · 0 评论 -
多线程---线程安全
线程安全是开发者在开发多线程任务时最关心的问题,那么线程安全需要注意哪些呢?一、思考:线程安全产生的原因是什么?二、final,volatile关键字的作用?三、1.5之前的javaDCL有什么缺陷?四、如何编写线程安全的程序?五、ThreadLocal使用的注意事项有哪些?一、思考:线程安全产生的原因是什么?原因:可变资源(内存)线程间共享由Java的内存模型:各线程都有自己的工...原创 2019-11-10 11:10:46 · 162 阅读 · 0 评论 -
多线程专题---如何停止一个线程
最近做项目及看别人源码过程中涉及到多线程的知识,感觉自己多线程方面还不够系统,所以需要系统的总结一下这方面的知识。先从如何停止一个线程开始:这里先记下最关键的一点:停止线程:应该代码逻辑上停止线程中的任务从而让线程自动停止,而不是强制停止线程自身下面先问自己几个问题,由浅入深的学习线程知识:1、是否了解线程的用法?2、是否了解对线程的stop,suspend,resume方法?3、线程...原创 2019-11-09 16:54:07 · 401 阅读 · 0 评论 -
return i++
return i++;//先返回i的值,i再加一 return ++i ; //i先加一,再返回i的值原创 2016-08-10 20:51:12 · 1747 阅读 · 0 评论 -
内部类
http://www.cnblogs.com/dolphin0520/p/3811445.html原创 2016-07-31 10:23:38 · 348 阅读 · 0 评论 -
javaIO
文章目录一、java网络编程1、基础知识a、ip地址和端口号b、TCP和UDP协议c、URLd、InetAddress2、socketa、创建socket实例b、客户端连接步骤:c、服务端连接步骤:d、总结二、阻塞IO1、java的IO接口a、基于字节操作的IO接口b、基于字符操作的IO接口c、基于磁盘操作的IO接口d、基于网络操作的IO接口2、阻塞IO的通信模型3、总结a 、 BIO数据在写入O...原创 2018-11-25 15:06:19 · 161 阅读 · 0 评论 -
抽象类与接口
含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为ab原创 2016-07-30 12:43:59 · 266 阅读 · 0 评论 -
c++与java异同
1、JAVA没有指针的概念,被封装起来了,而C++有; 2、JAVA不支持类的多继承,但支持接口多继承,C++支持类的多继承; 3、C++支持操作符重载(如cout>>等),JAVA不支持; 4、JAVA的内存管理比C++方便,而且错误处理也比较好; 5、C++的速度比JAVA快。 6、C++更适用于有运行效率要求的情况,JAVA适用于效率要求不高,但维护性要好的情况。 7、JAVA不支原创 2016-08-01 21:18:56 · 289 阅读 · 0 评论 -
collection
选项linkedlist类是实现了List接口,而不是继承 b选项AbstractSet类实现Set接口 c选项HashSet继承 AbstractSet类,同时也实现set d选项WeakMap是js里面的玩意儿吧,,不太懂List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedList Set有两个实现类:HashSet和Link原创 2016-08-01 21:14:56 · 302 阅读 · 0 评论 -
wait()与sleep()
Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。 共同点 : 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。 2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。 如果线程A希望立即原创 2016-08-01 20:31:12 · 238 阅读 · 0 评论 -
String的==和equals()
public class Main{ private static final String MESSAGE="taobao"; public static void main(String [] args) { String a ="tao"+"bao"; String b="tao"; String c="bao"; System.out.println(原创 2016-08-01 19:21:25 · 312 阅读 · 0 评论 -
子类覆盖掉父类的同步方法
1、如果父类中的某个方法使用了synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上synchronized关键字才可。 2、当然,也可以在子类中调用父类中相应的方法,这样虽然子类中的方法并不是同步的,但子类调用了父类中的同步方法,也就相当子类方法也同步了原创 2016-08-01 19:07:49 · 4229 阅读 · 1 评论 -
接口中的变量和方法
变量默认:public static final (1)public static的 ,是所有实现类共有的 .假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢? (2)接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量.方法默认:public abs原创 2016-08-01 19:06:04 · 1188 阅读 · 0 评论 -
static与final的区别
一、 1、static变量 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。public class Test { public原创 2016-07-31 15:07:59 · 493 阅读 · 0 评论 -
java泛型的作用及实现原理
一、泛型的介绍 泛型是Java 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java泛型被引入的好处是安全简单。在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这原创 2016-07-30 22:17:53 · 16528 阅读 · 0 评论 -
instanceof
interface A{}class B implements A{}class C extends B{}public class Iinstanceof { public static void main(String[] args) { A ab=new B(); A ac=new C(); B bc=new C();原创 2016-07-29 09:53:41 · 259 阅读 · 0 评论 -
子类与超类,多态,上转型,下转型
写一个父类package SuperAndThis;public class SuperClass{ public static void eat(){ System.out.println("我是静态的,父类吃!"); } public void say(){ System.out.println("我是父类说!"); } pub原创 2016-07-28 15:19:38 · 324 阅读 · 0 评论 -
静态方法(类方法)与非静态方法(成员方法/实例方法)
(访问变量区别)非静态方法可以访问类中的任何成员(静态与非静态//方法与变量); 但静态方法只能访问静态成员(包括方法和变量)。(被调用区别)非静态方法必须由实例对象来调用,而静态方法除了可由实例对象调用外,还可以由类名直接调用。(super,this)非静态方法中可以使用super、this关键字,但在静态方法中不能使用super、this关键字。原创 2016-07-28 14:29:46 · 1227 阅读 · 0 评论 -
Comparable和Comparator的区别
Comparable 定义(只包含一个方法):package java.lang;import java.util.*;public interface Comparable<T> { public int compareTo(T o);}Comparator 定义(Comparator 接口仅仅只包括两个函数):package java.util;public interface原创 2016-07-28 14:09:54 · 387 阅读 · 0 评论 -
HashSet(Collection<? extends E> c)
historyCitySet=new HashSet<String>(Arrays.asList(historyCityRecord.split("#")));//HashSet(Collection原创 2016-07-27 16:41:05 · 885 阅读 · 0 评论 -
JAVA中复制数组的五种方法
“=”,相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变.使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用,效率最高publ原创 2016-07-26 17:18:43 · 13841 阅读 · 0 评论 -
ArrayList的动态扩展过程
这里的所谓动态数组并不是那个“ 有多少元素就申请多少空间 ”的意思,通过查看源码,可以发现,这个动态数组是这样实现的,如果没指定数组大小,则申请默认大小为10的数组,当元素个数增加,数组无法存储时,系统会另个申请一个长度为当前长度1.5倍的数组,然后,把之前的数据拷贝到新建的数组。原创 2016-08-01 21:30:30 · 525 阅读 · 0 评论 -
try-catch-finally
public class Main { public static void main(String[] args) { System.out.println("返回:"WithException()); } public static int WithException() { int i = 10; try {原创 2016-08-02 11:10:37 · 226 阅读 · 0 评论 -
java多线程之六种状态
一、java线程的六种状态其中,RUNNABLE状态包括 【运行中】 和 【就绪】;BLOCKED(阻塞态)状态只有在【等待进入synchronized方法(块)】和 【其他Thread调用notify()或notifyAll(),但是还未获得锁】才会进入;二、sleep() 、yield()、join()与 wait()/notify()的区别sleep() 、yield()、join...原创 2018-10-10 21:30:41 · 2155 阅读 · 0 评论 -
Java注解Annotation使用
Java注解Annotation的使用RuntimeAnnotation注解package annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.l...原创 2018-09-29 18:48:55 · 225 阅读 · 0 评论 -
markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...原创 2018-08-15 19:19:46 · 132 阅读 · 0 评论 -
Comparator(用于Collections.sort())
package Text;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Text { public static void main(String[] args) { List<原创 2016-07-28 10:57:21 · 377 阅读 · 0 评论 -
Comparator(用于Arrays.sort)
package snippet;import java.util.Arrays;import java.util.Comparator;public class ComparatorUse { public static void main(String[] args) { Student[] persons = new Student[5]; persons原创 2016-08-11 19:37:37 · 1055 阅读 · 0 评论 -
Comparable的使用(用于Arrays.sort)
package snippet;import java.util.Arrays;/** * 使用Comparable接口:让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法 * 缺点是只能按照一种规则排序 * @author tong * */public class Compara { public static v原创 2016-08-11 19:20:20 · 676 阅读 · 0 评论 -
comparable的使用(用于list)
写一个Person类,继承自Comparable接口,只需重写compareTo():package ComparableTest;public class Person implements Comparable<Person>{ private String name; private int age; public Person(String name, int age)原创 2016-07-28 13:51:33 · 558 阅读 · 0 评论 -
java中重写方法应遵循规则
方法的重写(override)两同两小一大原则:方法名相同,参数类型相同 子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限。原创 2016-08-10 20:31:38 · 876 阅读 · 0 评论