自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 map家族

map家族对比如下集合KeyValue有序线程安全初始化容量HashMap可以为null可以为null无序线程不安全16,扩容后容量翻倍HashTable不可以为null不可以为null无序线程安全,通过synchronized 实现11,扩容后容量翻倍+1TreeMap不可以为null可以为null有序线程不安全LinkedHashMap可以为null可以为null有序线程不安全ConcurrentHashMap

2021-04-01 20:33:18 252

原创 10进制快速转2进制

计算机中整数表示方式:补码正数的补码是(原码)负数的补码是(原码取反+1)例:3 = 0011-3 = (0011取反) => (1100加1) => (1101)public class HexToBin { /** * 十进制转二进制 */ private final static int DEFAULT_DATA = 0x01; public static void main(String [] args) { //第一种方案 HexToBin1(5

2021-03-25 22:55:43 285

原创 Hook线程及其注入

Hook线程实例应用

2021-03-22 22:48:35 270

原创 生产者消费者模型

生产者消费者模型读写分离生产者消费者模型

2021-03-21 18:00:43 77

原创 Thread

设置线程优先级线程的优先级不能小于1也不能大于10,指定线程优先级不能大于线程所在组的优先级,线程默认优先级为5,即与它的父线程(main)保持一致。//为线程设定优先级public final void setPriority(int newPriority)//获取线程优先级public final int getPriority获取线程ID//获取线程的唯一IDpublic long getId()获取当前线程//用于返回当前执行线程的引用public static Thre

2021-03-20 16:42:54 77

原创 多样化的数据访问与交互

每个应用程序都要使用数据,Android应用程序也不例外,区别于Windows和Linux的公共文件系统,Android采用了一种完全不同的方式,Android应用的文件都是自己私有的。为了更好地与其他Android应用程序进行交互,Android提供了多种标准方式供我们使用。1.FilesFiles的存储方式,我们再常见不过了,几乎所有的后端语言都有自己的Files系统,同样,这也被Andr...

2021-03-19 00:00:51 140

翻译 HashMap

HashMapMap<Integer, Integer> map = new HashMap<Integer, Integer>(); //iterating over keys onlyfor (Integer key : map.keySet()) { System.out.println("Key = " + key);} //iterating over values onlyfor (Integer value : map.values()) { Sys

2021-03-18 23:59:33 258

翻译 IntStream

构造IntStreamIntStream.generate() 产生一个无限流,这里需要传入一个IntSupplier函数式接口实例 。IntStream.range()产生指定区间的有序IntStream,这里需要传入一个区间(左闭右开),产生的元素不包含最后一个。IntStream.rangeClosed()产生指定区间的有序IntStream,与IntStream.range()不同的是,产生的元素包含最后一个,即左闭右闭。IntStream.of()填充一个或多个int元素构造流。IntS

2021-03-18 23:54:25 573

原创 TimeUnit

JDK1.5以后,JDK引入了枚举类TimeUnit,对sleep方法进行了封装。使用TimeUnit代替sleep!TimeUnit.HOURS.sleep(3);TimeUnit.MINUTES.sleep(4);TimeUnit.SECONDS.sleep(27);TimeUnit.MILLISECONDS.sleep(88);

2021-03-18 23:14:42 56

原创 线程构造函数剖析

父线程子线程在创建之初,都会设置一个父线程,且子线程与父线程拥有同等的优先级 private void init(ThreadGroup g, Runnable target, String name, long stackSize, AccessControlContext acc, boolean inheritThreadLocals) { if (name == null) {

2021-03-18 22:42:09 119 1

翻译 synchronized and CAS

synchronized:同步1.使用场景伪代码被锁对象public synchronized void method()类的实例对象public synchronized static void method()类synchronized(this)类的实例对象synchronized(this.getClass())类2.例如,我们定义static int count = 0;在两个线程并发执行的时候:/*When two threads exe

2021-03-15 23:49:51 65

原创 mysql

MySQL的安装与配置MySQL8.0登录提示caching_sha2_password问题解决方法

2021-03-07 19:12:19 49

翻译 Serializable序列化

Serializable接口一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化序列化与反序列化序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据为什么需要序列化Serializable接口就是Java提供用来进行高效率的异地共享实例对象的机制,实现这个接口即可...

2021-03-07 19:11:01 73

翻译 Floyd算法

Floyd算法求任意两个顶点之间的最短路径,是图的求最短路径的典型应用问题算法思想我们只需要比较任意两个顶点之间直达的路径e[i][j]与经过转折点的路径e[i][k]+e[k][j],将其中较小的路径更新到最短路径即可样例代码for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(e[i][j]>e[i][k]+e[k][j] ) e[i][j]=e[i][k

2020-06-03 19:07:07 119

原创 dijkstra算法

**dijkstra算法:是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。**算法思想从第一个顶点出发,将每一个与之相邻顶点的路径长度更新到最短路径长度之中去。再找到目前既是最短长度又是未被访问的顶点,从这个顶点再次出发,如果第一个顶点到这个顶点的路径长度+这个顶点到某一顶点的路径长度<第一个顶点到某一顶点的路径长度,则更新到最短路径长度之中去。重复以上过程,直到所有的顶点都被访问过(被作为出发顶点)。样例求解计算出从顶点 1 到顶点 n 的最短路径(最小疲劳值)

2020-06-03 18:42:59 197

原创 Java中null==obj vs obj==null ?

1. null == obj vs obj == nullJava不同于c++if(obj=null)是会报编译错误的,所以不用刻意把null写在前面2. “”.equals(object) vs object.equals("")if("".equals(object))可以避免空指针的问题但是如果写成if(object.equals("")),在object为空时会报空指针错误3....

2020-05-05 16:24:35 663

原创 NULL==object和object==NULL

NULL == object vs object == NULL在c++中,这两种写法是相同的,但是前者可以保证不会出现运行时错误。因为c++中 NULL = object在编译时会报错,从避免出现少打一个=使得程序运行出错的情况。...

2020-05-05 15:55:11 607

原创 链表之哈夫曼树

在学习了链表的基本使用方法后,我尝试使用链表构建了比较常见的一种树形结构: 哈夫曼树这里不对哈夫曼树进行介绍,直接开始首先是定义子节点class node { public: char c; int num; node* left; //叶子左节点 node* right; //叶子右节点 node(){ left=NUL...

2019-12-23 21:59:29 1028

原创 链表尾插法

链表的使用方法链表是我们日常编程中最常见到的一种数据结构,链表单个节点的定义如下所示struct Node{ int Data; //最基本的数据元素 Node *next; //向下扩展的指针节点};下面我们通过链表的尾插法来学习使用链表首先我们需要读取数据//读取数据Node* readData(int length){ Node* head...

2019-12-23 21:41:19 558

原创 简单计算机系统综合设计(CPU)

简单计算机系统综合设计(CPU)前言:作为一位来自于湖南大学的本科生,让我最难忘记的就是这一次CPU的综合设计了。学软件的我,贴一篇硬件编程没啥意思,纯当打发时间。基本部件数字逻辑实验中我们要求完成的有以下基本部件,使用VHDL源完成编程。0000:指令寄存器IR,a) 模块的接口设计控制信号:LDIR,CLK,I[7…0]输入信号:需执行指令I[7…0] 输出信号:需执行指令ou...

2019-12-23 21:03:37 2230 1

原创 Android底层-四大容器

Android应用程序主要由Activity,Service,Broadcast Receiver,Content Provider四大部分组成,也就是我们通常意义上说的四大容器。1.ActivityActivity是可视界面的最底层,在它上面是一个Window对象,在上面是布局容器,之后才是用户进行操作的基本组件。一个应用通常是由多个Activity组成的,当前活动的Activity处于栈...

2019-08-19 14:28:26 720

原创 通信协议/UDP通信

通信协议通信协议是UDP/TCP通信的基础,没有通信协议的“通信”是没有任何意义上的,通信协议不是底层函数或者高深的原理,而是程序员之间的一种文本约定。数据在网络上是以字节的形式传送的(底层是01码),我们在读取到数据之后,该以怎样的方式对它进行解码呢?这就是我们在通信之前需要制定的通信协议。如果程序员不知道这个协议,那么他拿到的就是一堆无意义的数据。举一个简单的例子:发送端我们约定,我...

2019-08-16 17:56:22 312

原创 Java(数据,字节数组)输入输出流

Java的数据输入输出流是非常强大的IO,使用它可以使我们的程序更加高效。它封装了很多的函数供我们使用。import java.io.DataInputStream;import java.io.DataOutputStream;readInt();//读取一个整型readChar();//读取一个字符readFloat();//读取一个浮点数readLine();//读取一行rea...

2019-08-16 17:37:54 935

原创 Android 如何用子线程更新UI

线程定义参考本人JAVA单线程与多线程在这里直接分析Android多线程问题在学习该篇内容以前,需要牢记一句话,这句话将会是本文的核心问题:UI界面只能由该UI的主线程来进行访问(更新),这也是单独拿出一篇文章来讲Android多线程的原因。...

2019-08-16 17:26:49 517

原创 异常之try-catch-finally语句

异常分类Java所有的异常(Exception)都是派生自Throwable,异常是可以被捕获的。而错误(Error)是不能被捕获的。这里详细介绍Java的异常捕获机制(try-catch语句)1.最简单的try-catch语句int x=10;try { System.out.println(x); //代码块 int y=x/0; System.out.println(y);...

2019-07-27 22:15:23 387

原创 Java(文件)输入输出流

标准输入流java.util.ScannerScanner s=new Scanner(System.in);//构造一个Scanner对象,其传入参数为System.in System.out.println("请输入一个整数"); BigInteger i=s.nextBigInteger();//输入一个大整数 System.out.println(i);循环输入while(...

2019-07-24 13:18:12 149

原创 Java数据结构(1)

在Java当中,基本的数据结构有以下几种向量(Vector)枚举(Enumeration)位集合(BitSet)哈希表(Hashtable)栈(Stack)字典(Dictionary)属性(Properties)这里主要介绍前四种Vector实现了一个动态数组,这个数组与ArrayList类似,不同点主要有以下几种Vector 是同步访问的。Vector 包含了许多传统...

2019-05-28 00:18:10 123

原创 Java单线程与多线程

1.什么是线程?在我们了解单线程和多线程之前,我们必须搞清楚什么是进程。一个运行起来的程序就是一个进程!那程序又是什么呢?对程序的通俗定义就是:一段可执行的代码。当我们执行一段Java程序时,就在java虚拟机(JVM)中形成了一个进程,一个进程可以包括多个线程。而单线程就是进程的一个基本运行单位。JVM通过在程序中执行main()方法,形成一个线程(主线程)。当main()方法结束后,...

2019-03-08 18:17:52 3827

原创 Java参数传递中的值传递和引用传递

在我们了解java的参数传递之前,我们需要首先了解java的数据类型;java的数据类型分为两类;第一类是基本数据类型:byte ,short,int,long,char,double,float,boolean;第二类是引用数据类型:类,抽象类,接口,数组;String是类的一种,但比较特殊。我们最后单独拿出来说;我们通过代码来分析int x=10;int y=x;System....

2019-02-16 17:53:55 193

原创 Java-图形重绘

Java图形重绘分享───如何在拖动,放大,缩小容器组件后,保留已经绘制的内容。通常我们所使用的画图板,都有对已经做出图形的保留功能。但我们使用java语言编写的画图板是不具备自动保存图形功能的,这就需要我们自己来通过代码的使用来保存已经存在的图形。要实现这一功能,我们需要首先思考一个问题。为什么我们所绘制的图形会消失呢?容器组件不是依然存在吗?其实,java是通过调用系统底层的画图函数来实...

2019-02-16 15:00:31 784

空空如也

空空如也

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

TA关注的人

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