自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android程序员想进大厂?算法很重要!2020年必学的 10 大算法关注一下

这十分有用,因为我们可以把一个规则应用于 logistic 函数的输出,从而得到 0-1 区间内的捕捉值(例如,将阈值设置为 0.5,则如果函数值小于 0.5,则输出值为 1),并预测类别的值。对新数据点的预测结果是通过在整个训练集上搜索与该数据点最相似的 K 个实例(近邻)并且总结这 K 个实例的输出变量而得出的。而对于分类问题来说,预测结果可能是众数(或最常见的)的类的值。你需要在数据中取出大量的样本,计算均值,然后对每次取样计算出的均值再取平均,从而得到对所有数据的真实均值更好的估计。

2024-06-19 04:15:35 417

原创 情景再现,Java面试老大难问题:缓存雪崩,穿透,击穿,一文道明

同一时间大面积失效,那一瞬间Redis跟没有一样,那这个数量级别的请求直接打到数据库几乎是灾难性的,你想想如果打挂的是一个用户服务的库,那其他依赖他的库所有的接口几乎都会报错,如果没做熔断等策略基本上就是瞬间挂一片的节奏,你怎么重启用户都会把你打挂,等你能重启的时候,用户早就睡觉去了,并且对你的产品失去了信心,什么垃圾产品。像这种你如果不对参数做校验,数据库id都是大于0的,我一直用小于0的参数去请求你,每次都能绕开Redis直接打到数据库,数据库也查不到,每次都这样,并发高点就容易崩掉了。

2024-06-19 04:14:49 424

原创 Android性能优化常见Q

区域才会扫描对象引用关系,扫描到对象没有被引用则会标记对象,这时候仍然不会立即释放该对象内存,因为有些对象是可恢复的(在 finalize方法中恢复引用 )。只有确定了对象无法恢复引用的时候才会清除对象内存。uncher_layer.xml,将其设置为启动页专一主题的背景,并将其设置为启动页布局的背景。2、内存中如果加载一张500*500的png高清图片.应该是占用多少的内存?4、Bitmap如何处理大图,如一张30M的大图,如何预防OOM?6、内存泄露和内存溢出的区别?3、WebView的性能优化?

2024-06-19 03:42:35 261

原创 Android开发之MVVM模式实践(六):协程与网络请求的结合

null) {拿到后,我们就可以在添加如下代码:/**/**

2024-06-19 03:10:23 862

原创 如何下载Github上的单个文件或者指定目录?

比如:我想下载项目中的目录时,通常有以下方法。用SVN下载Github的指定目录GitZip一些个人做的工具网站。

2024-06-19 02:49:17 294

原创 Android安卓进程保活(二)设置前台Service

其它文章首先你要知道Android中的进程以及它的优先级,下面来说明它进程前台进程 (Foreground process)可见进程 (Visible process)服务进程 (Service process)后台进程 (Background process)空进程 (Empty process)

2024-06-19 02:38:23 589

原创 基于SpringBoot的策略模式多实现类注入(Map注入)

2基础知识=====2.1对@Autowired注解的理解在平常使用中我们对@Autowired都是这样用@Autowired是按照byType注入的(即按照bean的类型),当注入接口的时候我们都知道,他是注入的是这个接口的实现类,只不过引用是接口而已,当你调用其中的方法的时候,实质是调用接口实现的方法(多态原理),所以XXXService有多个实现类时,用上面代码块的方式进行注入,会报错。3策略模式的引入========

2024-06-19 02:11:27 495

原创 Android全面屏虚拟导航栏适配

但是这样虽然省事,但是很多时候会导致APP缺乏美感(设计师就是这么和我说的),设计师往往希望APP的显示区域伸入到虚拟导航栏中,达到一种沉浸感:像这种:面对设计师的这个小小的要求,我们能说不么?显然不能。那么这个时候,就需要考虑适配的问题了。我们需要知道当前界面是否存在虚拟导航栏,以及虚拟导航栏的高度,以便于对我们的布局做一定的调整,否则这两者就会重叠。这就是虚拟导航栏的适配。

2024-06-19 02:09:12 628

原创 Android中mmap原理及应用简析

获取用户空间有效虚拟地址分配,映射,更新页表if (!get_unmapped_area用于为用户空间找一块内存区域,current->mm->get_unmapped_area一般被赋值为arch_get_unmapped_area_topdown,arch_g。

2024-06-19 01:38:44 885

原创 Android-JVM面试专题:你知道面试官为什么要问JVM原理吗?原理包含哪些?

实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。1. 启动类加载器(Bootstrap ClassLoader)用来加载 java 核心类库,无法被 java 程序直接引用。2. 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。3. 系统类加载器。

2024-06-19 01:05:54 549

原创 Android 自定义注解详解

我们在开发中经常会需要计算一个方法所要执行的时间,以此来直观的比较哪个实现方式最优,常用方法是开始结束时间相减但是当方法多的时候,是不是减来减去都要减的怀疑人生啦,哈哈,那么下面我就来写一个运行时注解来打印方法执行的时间。

2024-06-19 00:36:20 118

原创 使用MySQL,请用好 JSON 这张王牌

但是业务在发展过程中,或许需要扩展单个列的描述功能,这时,如果能用好 JSON 数据类型,那就能打通关系型和非关系型数据的存储之间的界限,为业务提供更好的架构选择。但本质上,JSON 是一种新的类型,有自己的存储格式,还能在每个对应的字段上创建索引,做特定的优化,这是传统字段串无法实现的。可以看到,表 Tags 是一张画像定义表,用于描述当前定义有多少个标签,接着给每个用户打标签,比如用户 David,他的标签是 80 后、高学历、小资、有房、常看电影;用户 Tom,90 后、常看电影、爱外卖。

2024-06-19 00:31:18 692

原创 Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI

其实就是你可以在onCreate里面去设置tab显示的内容,以及可见的Tab数量,大家猜一猜,如果在布局和onCreate里面都写了数量,哪个有效呢(自己去实验)~~接下来设置一下点击事件。最前面的6个都是和绘制那个三角形相关的,画笔决定了三角形的样式(颜色等),Path用于构造这个三角形(其实就是3条线的封闭合),然后就是三角形的宽度什么的。看看我们构造方法里面:获得了自定义属性,即可见的Tab的数量,初始化了我们的画笔,这里设置了setPathEffect,就是为了画的线的连接处,有点圆角~~

2024-06-19 00:07:43 624

原创 什么是中间件?

背后遵循TCP/IP协议,但有时并不能满足业务场景的需求,因此要在TCP/IP协议的基础上构建自己的协议,比如AMQP协议,AMQP协议是rabbitMq的默认协议,包括在信息头中增加mark,消息内容标签、队列名、交换机名、ip、连接对象内存的一些信息。

2024-06-18 12:15:29 451

原创 不是吧,就因为他和面试官多聊了半个小时红黑树,进了腾讯?

**表示 节点@param@param*/// 节点是双向的return key;复制代码左旋代码实现/**围绕p左旋p pr(r)左旋的时候p-pl 和 pr-rr的关系不变pr-rl 要变为 p-rl还有就是要判断 p 是否有父节点如果没有如果有最后@param p*/if(p!= null){// 1.设置 pr-rl 要变为 p-rl// 把rl设置到p的右子节点if(r.left!= null){

2024-06-18 08:28:12 408

原创 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第五节)

比如,项目一旦上线,基本上就是专门的维护人员在跟进了,一旦要改个什么配置信息,作为开发人员,你只需要和对方讲,找到一个什么什么properties文件,然后将某一行改掉就好了。如果你不用配置文件,直接将信息写在Java类中,那么你就很难描述清楚了,改起来也特别麻烦。以下是读取的代码,流程就是我先把这个文件变成一个输入流InputStream,然后new一个Properties ,再去加载之前获得的输入流。DML表示—数据操纵语言,也就是SELECT,DELETE,UPDATE,INSERT。

2024-06-18 07:48:46 492

原创 【Java】室友打一把王者就学会了多线程

(你开的那一把游戏,你可以看到每个玩家的状态(生死),也可以看到每个玩家的出装备等等)(开的房间模式,你可以设置有多少人进,当房间满了后,其他人就进不去了,除非有人退出房间,其他人才能进)三、多线程的创建========@Overridei

2024-06-18 07:15:38 763

原创 「JVM」知识点详解一:JVM运行原理详解

JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由。

2024-06-18 06:38:45 537

原创 《这是全网最硬核redis总结,谁赞成,谁反对?》六万字大合集

一、入门Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构:字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。• Redis将所有的数据都存放在内存中,所以它的读写性能十分惊人,用作数据库,缓存和消息代理。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

2024-06-18 05:59:45 585

原创 《深入浅出SQL》问答录

A:因为表中的记录排序方式没有一定的规则,而且我们很快又要调整查询结果的记录,所以实在无法保证表的最后一条记录是最后插入的记录。除非我们记住哪份数据先进来。

2024-06-18 05:27:43 666

原创 《三分钟-算法修行》两数相加之解与应用

正所谓,一山更比一山难,这次我们遇到的Boss不简单,想要通关就要转动你的小脑筋,时刻留心Boss的"陷阱"。二、题目介绍二、题目介绍。

2024-06-18 04:49:33 827

原创 《JVM系列》 第三章 -- 深入理解JVM运行时数据区

这区域的内存回收目标主要是针对常量池的回收和对类型的卸载,一般来说,这个区域的回收“成绩”比较难以令人满意,尤其是类型的卸载,条件相当苛刻,但是这部分区域的回收确实是必要的。运行时常量池相对于Class文件常量池的另外一个重要特征是具备动态性,Java语言并不要求常量一定只能在编译期产生, 也就是并非预置入Class文件中常量池的内容才能进入方法区运行时常量池, 运行期间也可能将新的常量放入池中,这种特性被开发人员利用的比较多的便是String类的intern() 方法。这些底层系统常常是强大的操作系统。

2024-06-18 04:19:16 877

原创 《Java8实战》笔记汇总

《Java8实战》笔记(01):为什么要关心Java8《Java8实战》笔记(02):通过行为参数传递代码《Java8实战》笔记(03):Lambda表达式《Java8实战》笔记(04):引入流《Java8实战》笔记(05):使用流《Java8实战》笔记(06):用流收集数据《Java8实战》笔记(07):并行数据处理与性能《Java8实战》笔记(08):重构、测试和调试《Java8实战》笔记(09):默认方法《Java8实战》笔记(10):用Optional取代null《Java8实战》笔记(11):C

2024-06-18 03:48:25 264

原创 “828 页 Java 面试手册”在我手,何愁 offer 不到手!

由于文章篇幅原因,完整 828 页的(面试题合集)PDF,只能展示部分,需要完整文档的朋友们可以添加助理小姐姐的微信即可下载一份阅览!Java 中的 IO 与 NIO 面试题(15 道)Java 注解面试题多线程 &并发面试题(78 道)Elasticsearch 面试题(8 道)ZooKeeper 面试题(30 道)JavaOOP 面试题(108 道)Java 序列化面试题(38 道)MongoDB 面试题(12 道)Spring 面试题(30 道)Java 异常面试题(8 道)

2024-06-18 03:04:45 252

原创 wireshark简明教程,新手专用,挑实在的讲,不搞花里胡哨

或者还有个办法,就双击Traffic那个线。不同的版本可能表面上不一样,不要被事物的表面现象所迷惑,我们现在讲的是思维。它可能默认会给你全勾上,没事儿,不用管它,你只要确认你想监听的那个接口被选中,高亮,注意,是高亮,不是打勾,勾肯定是勾上了,看上面的图,蓝色高亮,然后开始。不然你可能会发现什么都抓不出来。当然,上面这个图也什么都抓不出来,因为根本没有网络波动,不难猜那条Traffic下面的横线代表的是网络波动,就像心电图一样。好,不管它,选好之后打开。wireshark抓包界面介绍。

2024-06-18 02:31:54 460

原创 Spring框架(四)SpringMVC基础

M(Model模型)负责数据访问、业务逻辑(dao、service、entity)V(View视图)负责和用户交互、展示数据(页面)C(Controller控制器)负责调用模型、更新视图(servlet–>Controller)作用:解耦,便于开发和维护。

2024-06-18 01:57:44 227

原创 SpringBoot中使用redis事务

4.0.0jartestRedis configuration (EnbaleTransactionSupport设为true):@Bean//打开事务支持Controller就是简单的set一个key到redis:启动后,我们使用RestClient发送请求http://localhost:8080/put,发送8次之后就会发现没有返回了。

2024-06-18 01:25:33 290

原创 Spring Cloud Admin健康检查 邮件、钉钉群通知

Bean。

2024-06-18 00:56:37 986

原创 ReentrantLock基于AQS的公平锁和非公平锁的实现区别

Sync的子类有两个:FairSync和NonfairSync(公平和非公平锁的具体实现类),两个锁的不同就在于两个方法的实现不同lock():加锁的方法,还有tryAcquire(int acquires):尝试持有锁的方法,获取成功返回true,失败返回false。可以看见,NonfairSync在使用lock()加锁的时候就已经体现了非公平性了,因为lock()加锁的时候直接尝试使用CAS获取锁,如果获取到了就不会入等待队列,所以会有后来的线程先抢占到锁;

2024-06-17 21:18:46 376

原创 PAT (Basic Level) Practice (中文)1061 判断题

输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非。判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。按照输入的顺序输出每个学生的得分,每个分数占一行。

2024-06-17 20:47:10 167

原创 Mysql三范式?你想要的在这里!!

即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF。表中主键为 (学号,课程),我们可以表示为 (学号,课程) -> (成绩,课程学分), 表示所有非主键列 (成绩,课程学分)都依赖于主键 (学号,课程)。那么上面2个表,学生选课表主键为(学号,课程),课程信息表主键为(课程),表中所有非主键列都完全依赖主键。| 学号 | 姓名 | 性别 | 班级 | 班主任 |

2024-06-17 20:14:51 300

原创 Lock与Synchronized的区别

System.out.println(“我是线程”+Thread.currentThread().getName()+“当前锁被别人占用,等待3s后仍无法获取,放弃!System.out.println(“我是线程”+Thread.currentThread().getName()+“当前锁被别人占用,我无法获取!System.out.println(“线程”+thread.getName() + “获取当前锁”);// 打印当前锁的名称。if (lock.tryLock()) { //尝试获取锁。

2024-06-17 19:45:48 650

原创 jvm监控及诊断工具-GUI篇

四、eclipse MAT![在这里插入图片描述](https://img-blog.csdnimg.cn/20210217160014660.png?八、Arthas。

2024-06-17 19:16:57 294

原创 Java编程:普里姆算法(已知起点求最小生成树)

最小生成树修路问题本质就是就是最小生成树问题, 先介绍一下最小生成树(Minimum Cost Spanning Tree),简称MST。

2024-06-17 18:45:46 548

原创 Java并发工具AQS条件队列Condition实现详解

当阻塞唤醒(即从LockSupport.park()放回)之后,且查询到当前线程结点已在锁队列上时,说明此时已有其他线程成功调用了signal()或signalAll(),然后执行争夺锁的操作并把之前的锁状态还原回去,即通过acquireQueued()完成。当有线程在这个Condition上调用了signal时,就会把线程从条件队列转移到它锁关联的那个AQS的锁队列上,并且将它唤醒(此时,阻塞循环中的判断是否在锁队列的条件就会满足,导致跳出循环)。最先开始等待的线程位于头结点,最后等待的线程位于尾结点。

2024-06-17 18:16:36 1009

原创 Java使用RSA加密解密签名及校验

/ 取出字节的高四位 作为索引得到相应的十六进制标识符 注意无符号右移。throw new Exception(“加密公钥为空, 请设置”);throw new Exception(“加密私钥为空, 请设置”);throw new Exception(“解密私钥为空, 请设置”);throw new Exception(“解密公钥为空, 请设置”);throw new Exception(“加密私钥非法,请检查”);throw new Exception(“解密私钥非法,请检查”);

2024-06-17 17:39:17 496

原创 java 线程池的创建方式

/ 创建一个定长的线程池,也是根据需要去调用线程,比如线程定为100个,而循环只有10个,那么也只会用到前10个进程。// 按顺序来执行线程任务 但是不同于单线程,这个线程池只是只能存在一个线程,这个线程死后另外一个线程会补上。// 创建一个定长线程池,支持定时及周期性任务执行。

2024-06-17 17:08:33 275

原创 IDEA版SpringBoot全教程 08 会员管理系统(中)

为了让前台能够知道方法的调用结果,我们需要设置返回信息,一般分为错误码和错误信息,如果错误码不是00000(返回成功),那么就需要对错误信息进行展示处理。相信你也发现了,就是有些字段显示是数字,这一点其实是不科学的。ipAddr是IP地址的意思,如果是用户注册的时候调用了这个方法,那么是可以获取用户当前网段的IP地址的。至于当前查询的是第几页page,还有每页多少条,在发送查询接口的时候,easyui就会帮我们自动带上。按照easyUI的套路,如果你要做分页,就得告诉他当前的列表数据,还有总条数。

2024-06-17 16:36:33 904

原创 docker入门(镜像和容器的使用)

docker 从 docker hub 拉取镜像,因为是从国外获取,速度较慢。可以通过配置国内镜像源的方式,从国内获取镜像,提高拉取速度。ustc镜像源(推荐)配置复制保存重启docker服务拉取centos镜像拉取成功后,查看。

2024-06-17 16:03:49 630

原创 @SpringbootApplication注释是什么意思?

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

2024-06-17 15:24:40 792

空空如也

空空如也

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

TA关注的人

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