自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZJE

  • 博客(382)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 安卓学习笔记之--------ViewPager控件

ViewPager可以实现界面的滑动切换。如下:按着黄色区域往左拖动,即可滑动到第二个界面要使用ViewPager,首先要用app 的 build.gradle文件中配置依赖:dependencies { implementation 'androidx.core:core-ktx:1.1.0' implementation 'com.google.android.material:material:1.2.0-alpha01'}我们可以将 ViewPag..

2021-05-11 17:50:45 1027 2

原创 安卓开发之-------RecyclerView

目录一、什么是RecyclerView?二、RecyclerView的适配器什么是ViewHolder?三、RecyclerView的布局管理器3.1 三大布局3.2 横向、纵向划动代码实例1. 首先要用这个控件,你需要在gradle文件中添加包的引用2. 创建一个主界面RecyclerViewActivity的布局文件recyclerview_main.xml3. 主界面RecyclerViewActivity的逻辑代码4. 把创建的主界面加入到androidm

2021-05-10 22:28:15 1160 1

原创 安卓学习笔记------ListView与适配器

目录一、ListView是什么二、适配器(以Base适配器为例子)2.1 适配器的常用方法(必须实现的)2.11 getView2.12 getItem2.13 getItemId2.14 getCount三、工程项目例子3.1 确定主界面MainActivity.xml的布局3.2. 定义ListView中一栏数据(即可ListItem)的布局3.3. 确定ListView一栏数据的字段组成3.4. 编写适配器3.5. MainActivity的...

2021-05-09 19:12:47 1759

原创 安卓学习笔记--------安卓六大布局

目录一、LinearLayout 线性布局二、RelativeLayout 相对布局2.1 子控件相对于父控件布局2.相对给定Id控件3. 相对布局的居中三、ConstraintLayout约束布局3.1 常用属性3.2 角度定位四、FrameLayout帧布局4.1 常用属性五、AbsoluteLayout绝对布局六、GridLayout 网格布局6.1 常用属性一、LinearLayout 线性布局主要属性:1. orientation设.

2021-05-07 15:16:42 511

原创 安卓学习笔记------ fragment控件

目录一、Fragment是什么二、Fragment的生命周期三、添加Fragment的方式3.1 静态添加fragment3.2 动态添加Fragment:一、Fragment是什么Android3.0以后引进了新的控件Fragment(碎片),Fragment相较于Activity更灵活,Fragment有自己的类和xml配置文件,因此一个Fragment可以被多个Activity复用。而且Activity是需要在Androidmanifest.xml上声明的,Fragment

2021-05-06 18:08:59 1635

原创 安卓学习笔记-------四大组件之Service

目录一、什么是Service二、Service的启动方式1. 调用startService()启动服务:2. 调用bindService()绑定服务:三、Service的生命周期简介总体的Service生命周期流程图:四、Service的创建过程1. 定义要创建的Service类2. 定义布局--设置按钮来开启服务和关闭服务和调用服务方法3. MainActivity入口程序4. 加入Service5. 效果一、什么是ServiceServi...

2021-05-04 14:53:51 315

原创 安卓学习笔记三--------四大组件之Activity

一、什么是activity可以通俗地认为一个activity代表的是一个窗口界面,应用程序的每一个界面都是一个Activity,所以也有人称其为视图界面。大多数APP包含多个界面,那么也意味着它包含了多个activity。而不管一个APP由多少个activity组成,它都只有一个MainActivity(主activity),也就是用户启动APP后看到的第一个界面,在程序工程中,MainActivate也是作为启动APP程序的入口。如下图:二、activity生命周期onCreate.

2021-04-28 21:13:04 352

原创 安卓学习笔记二-------使用Android Studio画UI界面

我们已经知道,安卓项目主要是由activity_main.xml和MainActivity.java 两部分构成,前者负责UI界面布局,后者负责代码逻辑。本文主要使用 activity_main.xml,因为是关于界面。activity_main.xml有两种显示方式,一种Design,一种是Text,前者是现实布局,后者是直接现实xml代码,如默认情况下:Text如下图:Design如下图:在Design状态下,可以从palette栏目处直接拖拉空间到界面中,从而十分方便.

2021-04-18 18:44:24 1847

原创 安卓学习笔记一------创建并运行Android Studio项目

目录一、构建项目二、运行简单的Android项目一、构建项目1. 新建项目2.选择 空的Activity3. 给项目起名4. 建立项目后的视图。可以看到,一个项目由两部分组成,分别是 activity_main.xml 和 MainActivity.java 。前者表示的是App的界面布局,后者则是运行逻辑二、运行简单的Android项目1. 当我们右键点击运行时会报错,如下图:意思是没有运行设备。原因是app是运行在某种设备上去.

2021-04-18 18:09:17 528 4

原创 java-------Arrary.sort 用 Comparator比较器定制排序方式(例如逆序)

一、Arrays.sortArrarys.sort()是用于给数组排序的,默认的情况下,是顺序排序,即从小到大:public class Test5 { public static void main(String[] args) { int[] arr = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5}; Arrays.sort(arr); for(int x:arr){ System.out.pri

2021-03-11 23:51:00 11666 3

原创 java----创建线程的三种方法

目录一、继承 Thread类二、实现 Runnable接口三、实现Callable接口和Future接口四、线程同步问题一、继承 Thread类继承Thread类后必须重写Thread 的run()方法。 run()为线程类的核心方法,相当于主线程的main方法,是每个线程的入口public class MyThread extends Thread { public MyThread() { } public void run() { for(int i=0.

2021-03-09 17:30:32 209

原创 Java基础-----java四大引用

一、强引用如果一个对象具有强引用,那么他将不会被垃圾回收器回收。即使当前内存不足,JVM也不会回收它,而是抛出OutOfMemoryError,使程序终止。如果想终端强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM就会在合适的时候回收对象。二、软引用在使用软引用时,如果内存足够,软引用就能继续被使用,而不会被垃圾回收,只有在内存不足的时候,软引用才会被垃圾回收。三、弱引用具有弱引用的对象拥有的生命周期更短暂。因为当JVM进行垃圾回收,一旦发现弱引用,无论当

2021-03-09 08:56:33 280

原创 TCP和UDP的区别

目录一、TCP和UDP都属于TCP/IP协议族二、UDP和TCP的不同2.1 TCP是面向连接的,UDP是面向无连接的2.2 TCP是可靠的,UDP是不可靠的2.3 TCP是面向字节流的,UDP是面向报文的2.4 TCP只有一对一的传输方式,而UDP不仅可以一对一,还可以一对多,多对多2.5 UDP的头部开销小,TCP的头部开销大2.6 TCP会产生粘包问题,UDP会产生丢包问题2.6.1 TCP粘包2.6.2 UDP丢包问题三、总结一、T...

2021-03-07 10:40:18 29896 1

原创 操作系统------死锁的条件和解决方法

目录一、死锁的四种必要条件二、避免死锁的方法2.1 死锁预防(确保不会进入死锁状态)2.1.1 破坏不可剥夺条件2.1.2 破坏请求与保持条件2.1.3 破坏循环等待链条件2.2 进程使用前判断-------只允许不会产生死锁的进程申请资源2.2.1 什么是银行家算法2.2.3 银行家算法设计的矩阵2.2.4 具体例子死锁概念:多个并发进程因争夺系统资源而产生相互等待的现象。一、死锁的四种必要条件1. 互斥:某种资源一次只允许一个进程访问,即该...

2021-03-04 21:18:37 1349 1

原创 JUC-----java各种线程池及其参数

目录一、线程池的好处二、Java中的ThreadPoolExecutor类的构造方法三、线程池执行流程四、Java线程池的类型五、使用线程池代码例子六、关于线程池相关疑问6.1 为什么线程池的工作队列要是阻塞队列 BlockingQueue?一、线程池的好处(1)、降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;(2)、提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;(3)方便线程并发数的管...

2021-02-24 23:10:06 345

原创 实现CAS的方法(JUC,mysql数据库,缓存redis)

目录1. JUC并发包自带的原子操作类2. 基于mysql的实现3. 基于缓存的实现简单解释:CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较下在旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换。CAS操作是原子性的,所以多线程并发使用CAS更新数据时,可以不使用锁。JDK中大量使用了CAS来更新数据而防止加锁(synchronized 重量级锁)来保持原子更新。1. JUC并发包自带的原子操作类例如:AtomicInte.

2021-02-18 01:05:23 1392

原创 JUC并发包------countdownlatch的使用

一、countdownlatchcountdownlatch是用于线程同步的,例如有5个线程需要同时开始运行,那怎么办呢,例如第一个就绪的线程必须等到其他4个线程就绪才能开始往下运行,若其他4个线程还没都就绪,那么第一个线程就会阻塞。同理的,其他就绪了的线程也一样,必须要等待所有线程都就绪后,才能往下运行,否则就阻塞。如下图:就如跑步比赛一样,第一个运动员在起跑线就绪后,并不能开始跑,而是要等待其他运动员都到达起跑线后,才能一起起跑。当一个运动员就绪,那么就会调用 countDown方法,表示减

2021-02-17 14:14:20 212

原创 Redis-----缓存穿透和缓存击穿和缓存雪崩

一、什么是缓存雪崩举个简单的例子:我们都知道redis里都是 key-value对。如果所有首页的Key失效时间都是12小时,中午12点刷新的,我零点有个秒杀活动大量用户涌入,假设当时每秒 6000 个请求,本来缓存在可以扛住每秒 5000 个请求,但是缓存当时所有的Key都失效了。此时 1 秒 6000 个请求全部落数据库,数据库必然扛不住,它会报一下警,真实情况可能DBA都没反应过来就直接挂了。此时,如果没用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了

2021-02-13 00:18:34 1175 3

转载 Redis的持久化方式------RDB和AOF

目录一、Redis为什么需要持久化二、RDB持久化2.1 创建RDB文件2.2 载入RDB文件2.3 服务器状态三、AOF持久化3.1 AOF持久化的实现3.2 载入AOF文件3.3 AOF重写3.3.1 AOF重写的原理3.3.2 AOF后台重写3.3.3 AOF重写的触发方四、AOF和RDB持久化的区别4.1 实现方式4.2 文件体积4.3 安全性4.4 优先级4.5 优缺点一、Redis为什么...

2021-02-11 22:06:09 289

转载 Mysql----日志系统redo log 和 bin log

目录一、mysql大概架构二、redo log(重做日志)2.1 WAL机制 (Write-Ahead Logging )2.2 redo log结构2.3 redo log 和 crash safe三、bin log (归档日志)3.1 bin log有什么用3.2 两阶段提交3.3 为什么需要两阶段提交小结一、mysql大概架构大体来说,mysql可以分为Server层和存储引擎两部分。Server 层包括连接器、查询缓存、分析器、优化器...

2021-02-10 16:06:06 289

转载 Mysql------BufferPool缓冲池和数据页

目录1.1 BufferPool是个什么东西1.2 BufferPool这个内存结构到底长什么样子1.3 数据页:MySQL中抽象出来的数据单位1.4 磁盘中的数据页怎样跟BufferPool中的缓存页对应1.5 缓存页对应的描述信息是什么?1.1 BufferPool是个什么东西数据库中的Buffer Pool是个什么东西?其实他是一个非常关键的组件,数据库中的数据实际上最终都是要存放在磁盘文件上的,但是我们在对数据库执行增删改操作的时候,不可能直接更新磁盘上的数据...

2021-02-09 19:34:45 805

原创 Mysql-----联合索引和最左匹配

目录一、最左匹配二、联合索引失效的情况2.1 不遵循最左匹配原则2.2 范围查询右边失效原理2.3 like索引失效原理三、实战一、最左匹配讲联合索引,一定要扯最左匹配!最左匹配:所谓最左原则指的就是如果你的 SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配,值得注意的是,当遇到范围查询(>、<、between、like)就会停止匹配。假设,我们对(a,b)字段建立一个索引,也就是说,你w...

2021-02-08 18:16:51 5638 1

原创 Java IO 的stream 和 channel

通道(Channel):由 java.nio.channels 包定义 的。Channel 表示 IO 源与目标打开的连接。Channel 类似于传统的“流”。只不过 Channel 本身不能直接访问数据,Channel 只能与 Buffer 进行交互。(Channel本身不存储数据,因此需要配合缓冲区进行传输)https://blog.csdn.net/zcw4237256/article/details/78662762...

2021-02-06 18:05:22 2299 5

转载 Java数据结构-------HashSet

来说说HashSet。如果有点Java基础的童鞋,应该都知道List和Set都实现自Collection,List保证元素的添加顺序,元素可重复。而Set不保证元素的添加顺序,元素不可重复。创建一个 HashSet如下:Set<String> strSet = new HashSet<>();//new了一个HashSetnew了一个HashSet,前面的文章已经说过很多次了,只要是看到new,这货肯定在堆内存里开辟了一块空间,先找到HashSet的构造函数看看,看

2021-02-01 16:32:59 213

转载 Mysql-----聚集索引和辅助索引(非聚集索引)

目录一、索引二、聚集索引和非聚集索引2.1 实例讲解聚集索引2.2 实例讲解非聚集索引一、索引数据库只做两件事情:存储数据、检索数据。而索引是在你存储的数据之外,额外保存一些路标(一般是B+树),以减少检索数据的时间。一张表可以建立任意多个索引,每个索引可以是任意多个字段的组合。索引可能会提高查询速度(如果查询时使用了索引),但一定会减慢写入速度,因为每次写入时都需要更新索引,所以索引只应该加在经常需要搜索的列上,不要加在写多读少的列上。二、聚集索引和非聚集索引...

2021-01-30 21:22:58 942 2

转载 Mysql的SQL语句分析-------explain语句

目录一、为什么要使用explain语句二、explain各个字段2.1 id1.2 select_type1.3 table1.4 type1.5 possible_keys1.6 key1.7 key_len1.8 ref1.9 rows1.10 filtered1.11 extra总结一、为什么要使用explain语句我们很多时候编写完一条SQL语句,往往想知道这条SQL语句执行是否高效。或者说,我们建立好...

2021-01-30 14:38:25 254

原创 高并发限流-------令牌桶算法和漏桶算法

用户在点击下单时,会在后端生成一个令牌(token),并存到redis中,然后又会从redis把对应的令牌读出来,若能成功读取,则能正常下单,若不能,证明生成令牌没成功,若没有令牌,用户是不能够正常下单的。一、令牌桶算法令牌桶算法的原理是系统以恒定的速率产生令牌,然后把令牌放到令牌桶中,令牌桶有一个容量,当令牌桶满了的时候,再向其中放令牌,那么多余的令牌会被丢弃;当想要处理一个请求的时候,需要从令牌桶中取出一个令牌,如果此时令牌桶中没有令牌,那么则拒绝该请求。二、漏桶算法把请..

2021-01-28 21:54:06 422

转载 CAP理论和解决方案BASE

目录一、概述二、Consistency 和 Availability 的矛盾三、解决方案BASE四、C、A、P取舍策略一、概述CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。一致..

2021-01-28 13:29:40 573 1

原创 RocketMQ在秒杀时的应用

目录一、RocketMQ是什么二、broker和nameserver2.1 Broker2.2 NameServer三、MQ在秒杀场景下的应用3.1 利用MQ进行异步操作3.2 削峰填谷四、面试题问1:任何一台Broker突然宕机了怎么办?那不就会导致RocketMQ里一部分的消息就没了吗?这就会导致MQ的不可靠和不可用,这个问题怎么解决?问2:如果Broker宕了,NameServer是怎么感知到的?一、RocketMQ是什么消息中间件的发展:...

2021-01-27 22:39:46 1515 2

原创 Linux命令之------free

free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。如果加上 -h 选项,输出的结果会友好很多:有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:free -h -s 3上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。输出简介:Mem行(第二行)是内存的使用情况。Swap行(第三行)是交换空间的使用情况。total:内存总大小。used:使用了多少内存。...

2021-01-26 15:27:50 228

转载 彻底搞清分库分表(垂直分库,垂直分表,水平分库,水平分表)

一、背景随着公司业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。分析一下问题出现在哪儿呢? 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。方案1:通过提升服务器硬件能力来提高数据处理能力,比如增加存储容量 、CPU等,这种方案成本很高,并且如果瓶颈在MySQL本身那么提高硬件也是有很的。方案2:把数据分散在不同的数据库中,使得

2021-01-26 13:47:16 513

原创 mysql语句及优化之----join以及join的优化

目录一、内连 inner join二、左连 left join 和 右连 right join三、全连 full join四、join语句的底层算法4.1 NLJ算法(index Nested-Loop Join)4.11 驱动表与被驱动表4.2 BNL算法(Block Nested-Loop Join)4.3 BKA算法(Batched Key Access)4.3.1 MRR(即:Multi-Range Read)4.3.2 BKA算法4.4 Hash...

2021-01-24 16:43:13 783

转载 Linux命令之-----top命令

目录一、头部信息二、内容信息Linux中的top命令就像windows中的任务管理器,它会展示出系统当前装填及进程信息,并定期更新。(top -H 则是显示线程信息)直接执行top命令,就会看到如下界面。一、头部信息第一行:概况13:48:42 表示当前系统时间。up xxx days ,HH:mm 表示从开机到现在经过的时间。x user:当前有几个用户登录该机器。load average:系统1分钟、5分钟、15分钟内的平均负载值。load averag.

2021-01-20 16:47:12 3626

原创 ConcurrentHashMap的原理

目录一、ConcurrentHashMap与HashMap等的区别二、JDK1.7版本的CurrentHashMap的实现原理1.Segment(分段锁)2.内部结构3.该结构的优劣势三、JDK1.8版本的CurrentHashMap的实现原理get操作put操作由于ConcurrentHashMap 的实现在JDK1.7 和 JDK1.8 有较大不同,因此会分开两个版本讲解。一、ConcurrentHashMap与HashMap等的区别1.HashMap..

2021-01-19 17:57:17 419

原创 synchronized原理

一、synchronized原理如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,可以说在并发控制中是必不可少的部分。1.1 原子性所谓原子性就是指一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。但是像i++、i+=1等操作字符就不是原子性的,它们是分

2021-01-18 19:23:30 357

原创 HTTP 的缓存机制

一、前言我们在用http访问时,会先发送一个请求,之后服务器返回一个应答,在chrome浏览器中,F12 进入开发者模式后,进入随意一个网站,会出现如下过程:第一部分General是概要,包含请求地址,请求方式,状态码,服务器地址等等。第二部分是应答头部(response),是服务器返回的。第三部分是请求头部(request),是客户端发送的。我们可以看到在response和request中都出现cache-control,cache-control 是控制本地缓存的字段。.

2021-01-14 15:50:49 248

原创 B树和B+树

一、BST树到AVL树到B树的简介1.1 BST树 --- 二叉排序树特点:1. 根节点的值大于其左子树中任意一个节点的值2. 根结点的值小于其右节点中任意一节点的值3. 这一规则适用于二叉查找树中的每一个节点。好处:查询的时间复杂度比链表快,链表的查询时间复杂度是O(n),二叉排序树平均是O(logn)。二叉排序树越平衡,越能模拟二分法,所以越能想二分法的查询的时间复杂度O(logn)。二叉排序树如下图:不足:但是BST树有一个不足的地方,就是如果插.

2021-01-12 12:40:48 46799 41

原创 AVL树

一、AVL树-----平衡二叉搜索树1.1 什么是二叉搜索树(BST树)?二叉搜索树的两个特点:根结点的值大于左子树上任意一个结点的值。 根结点的值小于右子树上任意一个结点的值。1.2 AVL树的特点拥有二叉搜索树的特点 AVL树上任意两个子树的高度差最大为1。 AVL树的 查找、插入、删除在平均和最差的情况下的时间复杂度都是O(logn)。1.3 AVL树调整结构1.3.1 平衡因子平衡因子:某个结点的左子树高度减去右子树高度得到的差值。AVL树:所...

2021-01-11 13:57:26 2869 1

原创 Redis 的五种数据类型及其底层原理

Redis是 key-value结构的数据库。Redis常用的五种数据类型分别是:String、List、Set、Hash、Zset。一、Redis五种类型的常用命令1.1 StringString是 redis 最基本的数据类型。一个 key 对应一个value。redis的String可以表示任何数据,比如 jpg图像或者序列化的对象,String的最大值能存储512MB。常用命令:get、set、incr、decr、mgetset:往redis里输入key-value,如:

2021-01-08 21:11:15 19636 4

原创 redis的主从复制到读写分离到哨兵模式

一、什么是自从复制主从复制,意思是将一台主服务器(称为master,主节点)的数据复制到其他的从服务器(称为slave,从节点)。这种数据的复制是单向的,只能从主节点往从节点复制。一个主节点可以有多个从节点,但一个从节点就只能有一个主节点。1.1 主从复制的作用1. 数据的热备份:因为主机会往从机同步数据,所以万一主机的数据没了,也能从从机上恢复数据。2. 主从切换技术:当主机出现问题时,可以由 从机 顶上继续提供服务。3. 负载均衡:在主从复制的基础上,可以配合读写分离,即主机提供

2021-01-04 21:58:16 1135

pytorch-FCN-easiest-demo-master.rar

用pytorch写FCN进行手提包的语义分割。用pytorch写FCN进行手提包的语义分割。用pytorch写FCN进行手提包的语义分割。

2019-06-17

Linux下C语言多进程实现TCP程序

Linux下C语言多进程实现TCP程序

2017-01-09

Linux下C语言多进程TCP程序

Linux下C语言多进程TCP程序

2017-01-09

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

TA关注的人

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