自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (4)
  • 收藏
  • 关注

原创 Mac 升级 Git

 MAC OS默认使用自带的git,但是MAC OS自带git版本过低。为了使用git的一些新功能,有必要升级git。下载安装HomeBrew# 下载安装homebrew,这个过程时间非常长,请耐心等待/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)...

2020-04-15 16:09:45 670

转载 解决 mac zsh 所有命令失效

https://www.cnblogs.com/zhangrunhao/p/9970656.html

2019-12-15 14:34:00 1709 1

转载 View事件分发机制

参考资料:Android事件分发机制详解:史上最全面、最易懂android中的事件传递和处理机制用一张图告诉你Android中的事件传递机制要点提炼|开发艺术之View1. 基础认知(1)事件分发的对象是什么?  答:Touch事件; 包括点击,长按,滑动等相关事件;比如ACTION_DOWN或ACTION_MOVE或ACTION_UP;(2)事件分发的本质是什么? 答:事件...

2019-08-18 21:55:01 335

原创 Android异步消息处理机制(源码分析+面试题)

参考文献:Android异步消息处理机制源码剖析Handler全家桶之 —— Handler 源码解析你真的懂Handler吗?Handler问答android的消息处理机制(图+源码分析)——Looper,Handler,Message1 概述 主线程不能执行耗时操作,因为会阻塞,在子线程里进行耗时操作;子线程不能更新UI,用handler发送一个更新UI的消息,handler...

2019-07-26 15:43:43 710

原创 java容器迭代或序列化时不允许修改操作之ConcurrentModificationException异常

java容器迭代或序列化时不允许修改操作原因:迭代或序列化前后会查看modCount是否发生变化,如果发生变化,意味着容器结构发生变化,会抛出一个ConcurrentModificationException异常;容器在遍历时变化会发生一些不可控的问题。具体化:LikedList和LinkedHashMap、LinkedHashSet在使用Lru顺序前提下,遍历和序列化时不允许put,r...

2019-06-09 15:12:08 412

转载 线程池的使用和简单原理

参考文献:Android 多线程: 完全解析线程池ThreadPool原理&使用Android开发——Android中常见的4种线程池(保证你能看懂并理解)Java并发编程:线程池的使用1 简介 除了①线程池,使用线程还有三种方式,分别是 ②继承Thread类 ③实现Runnable接口④实现Callable接口,这三种方式最后都需要新建和销毁线程。在实际的高并发场景下,往...

2019-06-06 19:07:56 546

原创 【源码分析】HashMap的原理及常见面试题

1 HashMap数据结构  HashMap的主干是一个Entry数组;Entry是HashMap的基本组成单元,每一个Entry包含一个key-value键值对。//HashMap的主干数组,是一个Entry数组;初始值为空数组{};主干数组table的长度一定是2的次幂,至于为什么这么做,后面会有详细分析。transient Entry<K,V>[] table = (En...

2019-06-03 16:17:55 411 1

转载 ThreadLocal的原理

参考:https://blog.csdn.net/v123411739/article/details/78698834https://blog.csdn.net/u010687392/article/details/50549236https://www.jianshu.com/p/56f64e3c1b6chttps://www.jianshu.com/p/377bb840802f...

2019-05-29 20:55:20 661

转载 悲观锁和乐观锁

转自:面试必备之乐观锁与悲观锁1 什么是悲观锁与乐观锁?乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。1.1 悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一...

2019-05-24 17:13:08 132

原创 Java 异常

1 什么是java异常 异常是指在程序运行时,阻碍程序正常执行的错误事件。比如:用户输入错误数据、硬件故障、网络阻塞等都会导致出现异常。 只要产生了异常,一个异常对象就会被创建,JRE就会试图寻找异常处理程序来处理异常。2 Java异常层级Throwable是所有异常的父类,它有两个直接子对象Error,Exception;Error :运行时错误;Error对象由JVM生成并抛出...

2019-05-13 17:15:52 206

原创 Java中的Object类

1 源码 Object类是Java中其他所有类的父类,所有类包括自定义类默认继承了Object类; 没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。 Object类位于java.lang包中,java.lang包包含着Java最核心类,在编译时会自动导入。Object类没有定义属性,一共有13个方法,13个方...

2019-05-12 19:43:59 330

原创 一个类实现两个包含同名抽象函数的接口

1.同名抽象函数返回值类型相同  能正常编译;2.同名抽象函数返回值类型不同  能正常编译;public interface Listener1 { int a=0;//默认是public static final void fun();//默认是public abstract int fun1();}public interface Listener2 {...

2019-05-09 15:58:39 730

原创 Java包装类

2.1 包装类的作用(1)基本数据类型的存在意义  我们都知道在Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象。但是对于经常用到的一系列类型如int、boolean…如果我们用new将其存储在堆里就不是很高效——特别是简单的小的变量。所以,同C++一样Java也采用了相似的做法,决定基本数据类型不是用new关键字来创建,而是直接将变量的值存储在栈中,方法执行时创建,...

2019-05-08 13:46:55 184

转载 字符串模式匹配之KMP

1 场景  假设现在我们面临这样一个问题:有一个主串(文本串)S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?2 暴力法2.1 思想  如果使用暴力匹配的思路,并假设现在主串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果匹配(即S[i] == P[j]),则i++,j++,继续匹配下一个字符;如果失配(即S[i]! = P[j]),令i = i - j + 1,j...

2019-05-05 23:37:31 783

原创 对象的序列化

1 Android中用Intent传递数据1.1 单一类型数据 //发送方 Intent intent=new Intent(FirstActivity.this,Second.class); intent.putExtra("string_data","hello"); intent.putExtra("int_data",100...

2019-04-22 17:43:11 633 1

转载 五种单例模式的Java实现

转自:https://blog.csdn.net/u011386173/article/details/824547141.饿汉式(1)饿汉式  提前(类加载时)创建优点:确保单例;缺点:单例永远不用时浪费内存常见方式public class Singleton { private static Singleton instance=new Singleton(); ...

2019-03-28 01:10:51 475

原创 Android中的尺寸单位

1. in  inch(英寸),屏幕尺寸;2. px pixel(像素)3. 分辨率(Resolution) 水平方向n个像素,垂直方向m个像素,分辨率为m*n;4. dpi 等价于ppi(pixels per inch) ppi=√m* m + n* n/对角线英寸数5. dp  dip(device independent pixels),设备独立(无关)像素;边距单位;...

2019-03-25 22:20:12 534

转载 List.add报UnsupportOperationException异常

使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常说明:asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。转自:[添加链接描述](https://w...

2019-03-02 20:04:08 1437

原创 Java实现《王道数据结构》伪代码

一、单链表1.结点定义public class ListNode { int data; ListNode next; ListNode (int data){ this.data=data; }}2.建立链表 /** * 头插法建立链表 * @return 链表指针 */ public Lis...

2019-02-28 16:39:21 1090

原创 经典的8个内部排序算法

1.直插排序思想: 每一趟,对于待排序元素a[i],该元素前面的子序列已有序;在有序序列中从后往前查找其插入位置,一边比较一边移动。直至找到插入位置,插入该元素;一共n-1趟。举例: 待排序序列:5 8 4 12 9 第一趟: 5 8 4 12 9 第二趟: 4 5 8 12 9 第三趟: 4 5 ...

2019-02-23 14:56:11 1019

原创 监听器-回调机制-观察者模式

1.监听器Listener Android中监听器非常常见,下面我们来看一下最典型的button绑定监听器的例子:public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedIn...

2019-01-03 21:40:32 712

原创 Java泛型进阶

1.泛型类型安全检查 泛型的生存期为编译阶段,编译后生成字节码形式的Class文件,泛型信息被擦除,专业术语叫做类型擦除。所以在编译阶段,编译器会进行泛型类型安全检查,保证泛型类型匹配。List&lt;String&gt; list = new ArrayList&lt;&gt;();list.add("aaa");list.add(100);//无法编译通过 因为编译时会进行泛型类型...

2018-12-28 23:46:30 193

原创 Java反射

转自:https://blog.csdn.net/sinat_38259539/article/details/71799078http://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html1.反射是什么 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。Student student = new St...

2018-12-28 19:46:51 189

转载 Java注解

转自:https://blog.csdn.net/briblue/article/details/738240581.注解的定义和简单使用1.1 注解是什么  简单来说:注解可以理解为标签,用于解释说明代码。 1.2 注解定义  注解通过 @interface 关键字进行定义,它的形式和接口很类似,不过前面多了一个 @ 符号。下面的代码就创建了一个名字为 TestAnnotaion 的...

2018-12-28 00:06:52 445

转载 Java中的三个点"..."

转自:https://blog.csdn.net/it_faquir/article/details/49131173 java1.5引入。&amp;amp;amp;quot;…“必须是方法的最后一个形参,表示***多个(0,1,2,…)参数***。类似数组参数。但是与数组参数又有区别,***”…&amp;amp;amp;quot;表示多个参数,数组参数一个参数。***详见下面举例:public class Test { void t1(String......

2018-12-26 22:12:43 4192

转载 Java泛型

转自:http://www.runoob.com/java/java-generics.html Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据***类型***被指定为一个***参数***。 假定我们有这样一个需求:写一个排序方法,能够对整型数组、字...

2018-12-26 15:37:19 155

转载 Java中的Comparable和Comparator接口

一.Comparable简介 Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 该接口定义如下:package java.lang;import java.util.*;public interface Compa...

2018-12-26 14:38:00 243

转载 Java中List和Map的遍历

1.List的遍历import java.util.*; public class Test{ public static void main(String[] args) { List&lt;String&gt; list=new ArrayList&lt;String&gt;(); list.add("Hello"); list.add("World"...

2018-12-25 11:37:34 292

转载 Java匿名内部类中使用外部类方法的形参或局部变量必须声明为final

 对于这个问题,首先我们应该明确的一点是对于匿名内部类,它可能引用三种外部变量:外部类的成员变量外部方法或作用域内的局部变量外部方法的参数而第一种变量是不需要声明为final的,但后两种是需要声明为final的。那这是为什么呢?不急,我们首先来看第一个知识点。知识点一,匿名内部类同所有类一样,都是有构造函数的,只不过这个构造函数是隐式的,虽然是内部类,但是经过编译之后,JVM还是会为匿名内部类生成...

2018-12-21 18:39:56 1962

原创 Android文件存储路径分析

#1.internal or external storage内部存储和外部存储的对比:1.内部存储永远可以访问,由于外部存储可能是SD卡,可能无法访问;2.内部存储文件只有本App才能访问,外部存储文件可以共享给其他APP;3.卸载APP,相应的内部存储文件被系统删除;对于外部存储,除非使用getExternalFilesDir()方法,APP删除,相应的文件不被删除;4.访问内部...

2018-12-15 23:32:36 478

原创 Linux(Ubuntu,Debian,Centos)安装配置mysql并且远程连接数据库

1.Ubuntu 16#1.安装sudo apt-get install mysql-server mysql-client libmysqlclient-dev#2.检查是否安装成功sudo netstat -tap | grep mysql#3.启动服务service mysql startservice mysql stopservice mysql status#4.登...

2018-10-11 02:10:31 461

原创 【匿名通信】在Debian上安装运行tor和nyx并使用stem库

#1.安装运行torapt-get install tor #2.安装pythonapt-get install python-pip#3.更新全部pip库,写一个更新脚本vim pipupgrade.pyimport pipfrom subprocess import call for dist in pip.get_installed_distributions...

2018-09-10 14:00:03 878

原创 将Javaweb项目部署到云服务器

一、前言由于业务需要,要搞一个文件上传下载服务器,代码当前已经在localhost上调试成功。现在需要把这个项目部署到云服务器上,选择的服务器是vultr的vps,系统是Ubuntu16.04。二、环境准备1.jdk安装常规安装即可,注意使用wget jdk文件时用如下命令(accept license aggrement):wget --no-check-certifica...

2018-08-22 11:13:24 6531

原创 nyx(Tor的命令行监视器)的安装与使用

 一.前景为了对tor网络中继节点流量和带宽进行分析,使用tor官方的nyx工具.运行环境:Ubuntu16.04nyx主页,可能需要翻墙二.安装1.安装pip# 1. 更新系统包sudo apt-get updatesudo apt-get upgrade# 2. 安装Pipsudo apt-get install python-pip# 3. 检查 pi...

2018-08-20 15:24:37 2340

转载 一个List赋值给一个List

转自:Click1 List 是通过指针指向地址来查询和存储数据的。而如果直接将一个List赋值给另一个List。则会导致该两个List都指向同一个地址。而导致如果后一个List的元素值改变,前一个List的元素值也随之改变。这个要记住。如:List list1=new ArrayList();list1.add("1");list1.add("2");list1.add("3");...

2018-07-22 21:37:15 9486 1

原创 【匿名通信】在Linux(Ununtu 16.04)环境下编译运行tor源码

1.准备工作(1)安装make工具sudo apt-get install make(2)安装gccsudo apt-get install build-essential(3)创建目录    mkdir tor-build    cd tor-build2.安装libevent     sudo apt-get install libevent-d...

2018-07-21 03:08:08 2274

原创 【密码学】哈希函数-SHA

一、哈希函数1.定义:Hash函数将长度可变的数据块M作为输入,产生固定长度的Hash值h=H(M)。2.特征:(1)可变长度输入,固定长度输出;(2)不可逆;(3)小概率发生碰撞,只能减少碰撞概率,无法避免碰撞;3.应用:(1)消息认证;(2)数字签名;(3)登陆认证;(4)入侵检测和病毒检测;(5)构建伪随机函数和作为伪随机数发生器;4.密码...

2018-05-24 21:44:13 6324 4

转载 【密码学】彩虹表

        以前和很多人一样,对彩虹表的理解是片面的:以为彩虹表是一个大的“明文-&gt;密文”的映射表。按照这个理解(也就是暴力破解)某个哈希函数的彩虹表的容量是超大超大的,即使对明文做了分类。        今天看了一下上面链接的那个帖子后,对彩虹表有了更确切的理解。彩虹表(Rainbow table)所谓的time-memory trade-off,并不是简单地“以空间换时间”,而是双向...

2018-05-11 21:18:40 5967

原创 【密码学】轻松理解“加盐”的原理与java实现

上一篇博客中说到防御彩虹表攻击最常用的方法就是加盐,那么什么是加盐呢?一、什么是加盐?1.背景现在很多公司后台以hash值形式存储用户密码(虽然本文以MD5哈希函数为例,但becrypt函数最常用的),用于哈希函数存在碰撞的特性,当后台数据库被攻击然后获取到用户密码哈希值时,还是能通过一定的方法(比如彩虹表攻击)破解用户密码。举个例子:http://...

2018-05-11 18:00:06 33282 7

转载 【密码学】MD5原理与java实现

一、概述1.概念        MD5即Message Digest Algorithm 5(中文名为消息摘要算法第五版),是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),用以提供消息的完整性保护。主要是通过特定的hash方法将文本信息转换成简短的信息摘要,压缩+加密+hash算法的结合体,是绝对不可逆的。2.特征(1)压缩性:任意长度输入,得到固定长度输出(一般取128bit)。   ...

2018-05-09 13:23:43 2776 8

HashMap.java

jdk 1.7 HashMap源码

2019-06-04

Head First 设计模式(中文版)

Head First 设计模式(中文版),高清无水印,

2019-04-09

2019王道专业课:数据结构-计算机网络-操作系统-计算机组成原理(全四本,高清无水印)

2019王道专业课:数据结构-计算机网络-操作系统-计算机组成原理(全四本,高清无水印)

2019-04-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除