自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android问题总结

Android Studio开发环境搭建与报错解决

2021-06-18 11:50:48 145

原创 球鞋结构 英文

鞋子结构对照

2021-06-11 20:36:59 209

原创 奇数页 偶数页 页脚不一致怎么处理

奇数页 偶数页 页脚不一致怎么处理删除奇数页的页脚,然后在设计-页码-设置页码格式,插入,然后就可以对齐了插入的时候,不要选择 页面底端

2021-03-14 10:49:08 2249

原创 合成大西瓜安装踩坑

合成大西瓜开发源码部署到远程服务器vercel注册的时候,需要使用微软邮箱或谷歌邮箱注册的github进行关联,使用qq邮箱会发生错误在进行vercel --prod 部署的时候,如果部署不了,应该是网络问题。...

2021-02-21 18:11:27 193

原创 在ubuntu中如何简体和繁体转化

ctrl+shift+f

2021-01-08 21:06:15 280

原创 2021-01-08

rosrun运行C++程序提示有语法错误问题没有加命名空間

2021-01-08 17:35:17 96

原创 Could not resolve dependencies recyclerview的问题

我试过从project structrue导入依赖,或者直接在build.gradle加入依赖,但是都不管用最后解决方法,在app文件夹创建一个libs文件,直接从maven库下载jar包,复制到libs文件夹下,然后进行同步

2020-12-17 10:08:44 195

原创 vol.8 concurrent包下的Lock以及AQS

同步队列节点的数据结构,即AQS的静态内部类Node,节点的等待状态等信息;同步队列是一个双向队列,AQS通过持有头尾指针管理同步队列;acquire根据当前获得同步状态成功与否做了两件事情:1. 成功,则方法结束返回,2. 失败,则先调用addWaiter()然后在调用acquireQueued()方法addWaiter1.当前同步队列的尾节点为null,调用方法enq()插入;2. 当前队列的尾节点不为null,则采用尾插入(compareAndSetTail()方法)的方式入.

2020-08-11 16:57:00 159

原创 我的一百道题--vol.1三数之和

首先对数组进行排序,取出第一个数作为结点,然后使用双指针 left 和right 进行遍历,如果存在三数之和等于零,则对left 和right进行查重,遍历完后,对a进行查重时间复杂度为O(n^2)空间复杂度O(n)arrays.sort排序class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> list=ne

2020-06-18 17:43:51 161

原创 static方法不能被重写的原因

从语义就可以看出static、final、private方法本身都是编译期绑定的(也叫前期绑定)这些方法不存在多态,他们是在还没有运行的时候,程序在编译器里面就知道该调用哪个类的哪个方法了,而其他可观察的普通方法的绑定是在运行的时候根据具体的对象决定的,因为从语义上看这些方法是可被继承的,有了多态而造成了不确定性。...

2020-06-13 12:00:03 1469

原创 守护线程daemon

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。...

2020-06-06 23:04:41 138

原创 设计模式之间的差别

模板方法与策略模式的区别模板方法是在父类中,定义出方法的骨架,需要在子类中重写某个步骤策略模式,是在父类中定义一个方法,然后重写这个方法代理模式和装饰器模式的区别代理模式是与原对象实现同一个接口,必须要实现原接口和持有真实的对象,才能称之为代理类。代理模式一定是自身持有这个对象,不需要从外部传入。用代理模式,代理类可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。装饰模式的一定是从外部传入,并且可以没有顺序,按照代码的实际需求随意挑换顺序.

2020-06-06 22:59:40 200

原创 final内存屏障在处理器的使用

final 语义在处理器中的实现现在我们以 x86 处理器为例,说明 final 语义在处理器中的具体实现。上面我们提到,写 final 域的重排序规则会要求译编器在 final 域的写之后,构造函数 return 之前,插入一个 StoreStore 障屏。读 final 域的重排序规则要求编译器在读 final 域的操作前面插入一个 LoadLoad 屏障。由于 x86 处理器不会对写 - 写操作做重排序,所以在 x86 处理器中,写 final 域需要的 StoreStore 障屏会被省略掉。同

2020-06-02 17:57:03 530

原创 vol.5 jvm中的为什么问题?

为什么程序计数器不会发生溢出?程序计算器仅仅只是一个运行指示器,它所需要存储的内容仅仅就是下一个需要待执行的命令的地址,无论代码有多少,最坏情况下死循环也不会让这块内存区域超限,因为程序计算器所维护的就是下一条待执行的命令的地址,所以不存在OutOfMemoryError为什么移除永久代?1、字符串存在永久代中,容易出现性能问题和内存溢出。2、永久代大小不容易确定,PermSize指定太小容易造成永久代OOM3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。4、Oracle 可能会将.

2020-06-01 20:32:10 140

原创 度量性能的指标

度量性能的指标有很多,但是有两个指标是最核心的,它们就是延迟和吞吐量。延迟指的是发出请求到收到响应这个过程的时间;延迟越短,意味着程序执行得越快,性能也就越好。吞吐量指的是在单位时间内能处理请求的数量;吞吐量越大,意味着程序能处理的请求越多,性能也就越好。这两个指标内部有一定的联系(同等条件下,延迟越短,吞吐量越大),但是由于它们隶属不同的维度(一个是时间维度,一个是空间维度),并不能互相转换。...

2020-05-31 15:58:09 328

原创 HashSet原理

hashset继承里abstractset类,实现了cloneable,serializable,set接口内部是通过hashmap实现的内部只有两个成员变量 private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map //是所有写入 map 的 value 值。 private static final Obj

2020-05-31 10:46:18 133

原创 计算机网络 第五章运输层

运输层为相互通信的应用进程提供逻辑通信从应用层看,只要把应用层的报文交给下面的运输层,运输层就可以把这报文传送到对方的运输层复用和分用复用:发送方的不同应用进程之间都可以使用同一运输层协议传送数据分用:运输层剥去报文的首部后能够把这些数据准确交付到目的应用进程端口和套接字的意义协议端口号,特指软件端口号 应用层各种协议进程与运输实体进行层间交互的一种地址TCP连接的端点叫套接字或者插口套接字socket={IP地址:端口号}端口号分为两大类1)、服务器端使用的端口号熟知..

2020-05-28 21:05:33 331

原创 vol.2 int和Integer有什么区别

java 5中新特性:自动装箱\自动拆箱在 Java 5 中新增了静态工厂方法 valueOf,在调用它的时候会利用一个缓存机制,带来了明显的性能改进。按照 Javadoc,这个值默认缓存是 -128 到 127 之间Mark Word:标记位 4字节,类似轻量级锁标记位,偏向锁标记位等。Class对象指针:4字节,指向对象对应class对象的内存地址。对象实际数据:对象所有成员变量。...

2020-05-28 16:29:20 230

原创 vol.1 java基础

谈谈你对Java平台的理解?Java本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection),Java通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。jre和jdk的区别我们日常会接触到JRE(Java Runtime Environment)或者JDK(Ja.

2020-05-28 15:25:30 155

原创 BIO、NIO、AIO区别及实现

Java提供了哪些IO方式? NIO如何实现多路复用?Java IO方式有很多种,基于不同的IO抽象模型和交互方式,可以进行简单区分。首先,传统的java.io包,它基于流模型实现,提供了我们最熟知的一些IO功能,比如File抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序。java.io包的好处是代码比较简单、直观,缺点则是IO效率和扩展性存在局限性,容易成为应用性能的瓶颈。很多时..

2020-05-27 22:47:13 240

原创 vol.9 两种密码体制

对称密钥体制加密密钥和解密密钥是相同的密码体制公钥密码体制由于对称密钥的密钥分配问题;对于数字签名的需要在公钥体制中,加密密钥PK是向大众公开的,解密密钥是需要保密。加密算法E和解密算法D也是公开的步骤:通过密钥对生成器产生出接受者B的一对密钥,加密密钥和解密密钥,发送者所使用的的加密密钥就是接受者的公钥,他向大众公开。解密密钥是接收者的私钥,保密;发送者用接受者的私钥通过加密算法对明文加密,得出密文发送给接受者接受者用密钥通过解密算法恢复出明文数字签名...

2020-05-27 21:03:40 264

原创 jvm面试必看

jvm性能调优web服务器集群:给session创造粘性,意思是让用户每次都访问的同一个应用服务器

2020-05-27 20:48:20 168

原创 堆排序原理

堆是一个完全二叉树;堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。通过数组实现一个堆往堆中插入一个元素public class Heap { private int[] a; // 数组,从下标1开始存储数据 private int n; // 堆可以存储的最大数据个数 private int count; // 堆中已经存储的数据个数 public Heap(int capacity) { a = new int[capacity + 1];

2020-05-27 17:17:06 131

原创 vol.5 TCP,UDP格式

序号 :本报文段所发送的数据的第一个字节的序号(用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。)确认号 :期望收到的下一个报文段的序号。(例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。)数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。 .

2020-05-27 15:51:06 118

原创 vol.1 java基础面试题

java中为什么要单继承,多实现若为多继承,那么当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清,因此用了单继承。为什么是多实现呢?通过实现接口拓展了类的功能,若实现的多个接口中有重复的方法也没关系,因为实现类中必须重写接口中的方法,所以调用时还是调用的实现类中重写的方法。那么各个接口中重复的变量又是怎么回事呢?接口中,所有属性都是 static final修饰的,即常量,这个什么意思呢,由于JVM的底层机制,所有static final修饰的变量都在编译时期确定了其值,若在使用时,两.

2020-05-26 22:48:33 107

原创 java并发面试题vol.1

说一个最熟悉的垃圾回收算法吞吐量优先和响应时间优先的回收器有哪些怎么判断内存泄漏为什么压缩指针超过32G失效为什么压缩指针超过32G失效什么是内存泄漏?GC调优有经验吗?一般出现GC问题你怎么解决?讲一下CMS的流程Threadlocal有没有内存泄漏问题G1两个Region不是连续的,而且之间还有可达的引用,我现在要回收一个,另一个怎么处理?讲一下JVM堆内存管理(对象分配过程)听说过CMS的并发预处理和并发可中断预处理吗到底多大的对象会被直接扔到老年大通过设置-XX:Pretr.

2020-05-26 22:38:08 264

转载 vol.4 redis分片

分片是将数据划分为多个部分的方法,可以将数据存储到多台机器里面,这种方法在解决某些问题时可以获得线性级别的性能提升。假设有 4 个 Redis 实例 R0,R1,R2,R3,还有很多表示用户的键 user:1,user:2,… ,有不同的方式来选择一个指定的键存储在哪个实例中。最简单的方式是范围分片:例如用户 id 从 0~1000 的存储到实例 R0 中,用户 id 从 1001~2000 的存储到实例 R1 中,等等。但是这样需要维护一张映射范围表,维护操作代价很高。还有一种方式是哈希分片:使用

2020-05-26 22:32:05 136

转载 vol.3 redis高可用性之 哨兵

Redis主从同步是怎么实现的?主从节点建立连接后,从节点会进行判断1.如果这是从节点之前没有同步过数据,属于初次复制,会进行全量重同步 那么从节点会向主节点发送PSYNC?-1 命令,请求主节点进行全量重同步。2.如果这是从节点不说初次复制(例如出现掉线后重连), 这个时候从节点会将之前进行同步的Replication ID(一个随机字符串,标识主节点上的特定数据集)和offset(从服务器当前的复制偏移量)通过PSYNC 命令发送给主节点,主节点会进行判断,如果Replication ID跟..

2020-05-26 22:24:31 124

转载 vol.2 redis持久化

持久化技术分析redis中如何实现高可用性:持久化、复制、哨兵和集群持久化:持久化是最简单的高可用方法,有时甚至不被归为高可用的手段,主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份以及对于读操作的负载均衡和简单的故障恢复。缺陷是故障恢复无法自动化、写操作无法负载均衡、存储能力受到单机的限制。哨兵:在复制的基础上,哨兵实现了自动化的故障恢复。缺陷是写操作无法负载均衡

2020-05-26 22:03:43 116

转载 vol.1 redis基础

Redis是什么?redis是一个键值对数据库,基于内存进行操作,也可以进行持久化Redis过期key是怎么样清理的?(1)惰性清除在访问key时,如果发现key已经过期,那么会将key删除 。(2)定时清理Redis配置项hz定义了serverCron任务的执行周期, 默认每次清理时间为25ms,每次清理会依次遍历所有DB,从db随机取出20个key,如果过期就删除,如果其中有5个key过期,那么就继续对这个db进行清理,否则开始清理下一个db。(3)内存不够时清理当执行写入命令时,如果.

2020-05-26 21:10:24 138

原创 LFU 算法实现 优先队列+hashmap

首先创建一个内部结点包含四个参数 频率 索引 键 值这个内部结点node实现了comparable类里面的compareto 方法,当 他们出现的频率相同的时候,比较他们的索引大小get方法通过hashmap获得node,如果node==null,返回-1否则就更新node的频率和索引通过queue.remove queue.offer操作进行排序put方法通过hashmap获得node,如果node!=null,更新node的频率和索引,和get方法类似,并且从map中移除键值

2020-05-26 20:39:53 402

原创 http各版本之间的区别

http版本Value缺点0.9仅支持请求方式GET,并且仅能请求访问HTML格式的资源。1.0请求方式POST和HEAD;每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接,就是不支持keepalive1.11.TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive;2. 加入了管道机制,在同一个TCP连接里,允许多个请求同时发送,增加了并发性,进一步改善了HTTP协议的效率;...

2020-05-25 17:50:25 532

原创 微信二维码扫描原理

每次打开微信网页版的时候,都会生成一个含有唯一uid的二维码,而且每次刷新后都会改变。这样可以保证一个uid只可以绑定一个账号和密码,确定登录用户的唯一性。除了返回唯一的uid,实际上打开这个页面的时候,浏览器跟服务器还创建了一个长连接,请求uid的扫描记录。当用户使用登录后的微信扫描二维码的时候,会将uid和手机微信产生的token进行绑定,并上传到服务器。这个时候,浏览器通过长轮询查询到uid扫描记录,立即得到201响应码,然后通知服务器,客户端由此也进入一个新的页面(就是那个要你点确认的按钮)。.

2020-05-25 17:18:48 2021

原创 vol.4运输层

TCP之 流量控制(滑动窗口)和 拥塞控制(拥塞控制的工作过程)利用滑动窗口实现流量控制发送窗口的选择 滑动窗口和拥塞窗口的最小值拥塞控制方法:慢开始 拥塞避免 快重传 快恢复浅析SYN FLOOD攻击原理是在三次握手的第三次握手的时候,服务端需要客户端发送ack包进行回应时,他会耗费一定数量的系统内存来等待这个连接首先是客户端发送一个SYN报文给服务端,然后这个服务端发送一个SYN-ACK包以回应客户端,接着,客户端就返回一个ACK包来实现一次完 整的TCP连接。在服务端返回一个确认的..

2020-05-25 15:58:46 104

原创 vol.2 数据链路层

以太网的硬件地址:MAC地址 48位长,和适配器的数量有关MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。基本问题2.1. 封装成帧将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束2.2. 透明传输帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要.

2020-05-25 11:48:20 265

原创 vol.1计算机网络概述

添加链接描述OSI 将网络分为七层:应用层、表示层、会话层、运输层、网络层、数据链路层、物理层。OSI 七层协议体系结构概念清除,理论完善,但是既复杂也不实用。TCP/IP 是一个四层体系结构,包含应用层、运输层、网际层和网络接口层(网际层是为了强调该层是为了解决不同网络的互联问题),这种体系结构得到了广泛应用。但是 TCP/IP 从实质上讲只有最上面三层,最下面的网络接口层并没有什么具体内容,因此一般学习时结合 OSI 和 TCP/IP 的优点,采用一种五层协议的体系结构:应用层应用层的任务是通

2020-05-25 11:27:32 172

原创 LRU算法实现 双向链表+哈希表

创建一个双向链表,有key ,value, 前驱节点 和后继节点class Node{ int key; int value; Node next; Node pre; Node(int key,int value){ this.key=key; this.value=value; } }在主类里面创建四个实例字段 private in.

2020-05-25 10:21:36 642

原创 vol18plus ThreadLocalMap

里面有一个entry数组实现了弱引用类,他的键就为弱引用 static class ThreadLocalMap { //里面有一个entry数组实现了弱引用类,他的键就为弱引用 static class Entry extends WeakReference<ThreadLocal<?>> { /** The value associated with this ThreadLocal. */ ..

2020-05-24 22:03:27 159

原创 vol18. ThreadLocal解析

set方法//set 方法设置在当前线程中 threadLocal 变量的值,该方法的源码为:public void set(T value) { //1. 获取当前线程实例对象 Thread t = Thread.currentThread(); //2. 通过当前线程实例获取到ThreadLocalMap对象 ThreadLocalMap map = getMap(t); if (map != null) //3. 如果Map不为null,则以当前threadLo.

2020-05-24 16:50:21 326

原创 vol.2 线程状态转换以及基本操作

如何新建一个线程?(1)通过继承Thread类,重写run方法;(2)通过实现runable接口,重写run方法,然后作为target对象加入Thread;(3)通过实现callable接口,重写call()方法,使用Future对象进行封装,然后将Future对象加入到Thread中继承Thread和runnable接口有什么区别继承 Thread 类:我们创建了三次 MyThread 对象,也就是创建了三个任务(工作四个小时这个任务)和三个线程(张三,李四和赵五三个人),每个线程去完成自己的.

2020-05-24 15:51:52 140

NeatConverter2.1.0.rar

转Neat Converter 电子书转码器,是否收费?是否支持移动端?   该软件完全免费,没有任何收费项目,请放心使用。由于技术原因,目前尚不支持Mac平台和移动端版本,敬请谅解。   Neat Converter 电子书转码器,都支持哪些格式的转换?   支持 ePub、Azw3、Mobi、Doc、PDF、TXT 文件的相互转换。   日常生活中,为什么要使用 Neat Converter?   文件格式转码是一种很常见的需求。比如有很多朋友会在网上搜索“怎么让Kindle阅读epub文件”,其实这样的问题,更好的解决方案是把ePub文件转码为Kindle原生支持的Azw3或是mobi文件。 另外还有一些需求,比如想要打印mobi格式的文件,但是一般的阅读器连打开mobi都不行,更别提打印了。此时你可以把mobi文件转码为docx或是pdf文件,然后用相应的阅读器打开,就可以打印了。

2019-11-27

空空如也

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

TA关注的人

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