自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 volatile

Java并发编程:volatile关键字解析 - Matrix海子 - 博客园目录并发编程三大特性原子性可见性有序性volatile作用可见性一定的有序性volatile常见用法volatile与并发编程的三大特性volatile可以保证可见性和一定的有序性,下面会分别介绍。原子性在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。可见性我们知道,线程有工作内存,跟主内存不同,工作内存

2022-01-16 21:07:18 159

原创 UI卡顿优化

Android系统每隔16ms会发出VSYNC信号重绘我们的界面(Android设定的刷新率是60FPS(Frame Per Second),也就是每秒60帧的刷新率, 约合16ms刷新一次) ,如果我们的操作(CPU+GPU)耗时大于16ms,导致我们无法按时在下一个16ms到来之前完成UI的一次绘制,进而就导致了屏幕上显示的只能是上一个16ms在显示的内容,这给用户造成的体验就是 掉帧、卡顿。那么显然,我们要找出CPU和GPU耗时的原因,并减少CPU和GPU的耗时操作。原因可能会是:1. .

2022-01-09 20:38:26 1456

原创 注解和注解处理器APT

我们写代码经常遇到注解,这些注解显然不是随便写出来就能用的,他们的生效需要注解处理器(APT)。Java代码从编写到运行会经过三个大的时期:代码编写,编译,读取到JVM运行,针对三个时期(也可以说是生命周期吧,其实就是@Retention的三个参数)也分别有三类注解:SOURCE:就是针对代码编写阶段,比如@Override注解CLASS:就是针对编译阶段,这个阶段可以让编译器帮助我们去动态生成代码RUNTIME:就是针对读取到JVM运行阶段,这个可以结合反射使用,我们今天使用的注解也都是在这个

2021-12-15 13:49:13 2027

原创 View(二):自定义举例之继承控件

以继承Layout为例1.自定义一些我们需要用的属性,在res/values/attrs.xml里<declare-styleable name="xxxxx"> 这里名字随便取啦,但是后面java文件里会用到哦 <attr name="animation_time" format="integer" /> <attr name="background" format="reference" /> </dec...

2021-12-15 11:31:43 1819

转载 子线程能否更新UI的问题

面试官:子线程 真的不能更新UI ?_胡飞洋的技术积累-CSDN博客找不到地方记笔记了,转载一下大佬的博客

2021-12-14 16:17:48 69

原创 anr问题学习中

2021-12-14 16:04:52 73

原创 android生命周期注意点

onStart()这个方法在活动由不可见变为可见的时候调用。onResume()这个方法在活动准备好和用户进行交互的时候调用。 此时的活动一定位于返回栈的栈顶,并且处于运行状态。onPause():当acitivity不再保留在活动堆栈的顶部的时候会被调用。网上有些说法是错的,没研究过是不是因为android版本的问题,反正最新的android源码是这样的。(可以自己试下,当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDial...

2021-12-14 15:35:13 1658

原创 view事件分发机制

简介事件分发和处理很重要,尤其是当我们的view是重叠的时候,我们对于点击或者其他的事件操作,显然只能给一个view去消费,因此这个时候就需要我们根据实际情况,去设计到底如何响应和消费事件。另外,view分发事件有一个特点就是,他在函数里判断down之后所做的逻辑,往往有一些是为下一次进入函数的up事件做准备。比如我在down事件置的标志位,可能会在下一次up事件里才会用到MotionEvent事件还有一个ACTION_CANCEL事件,是代码内部设置的,跟上面几个动作不大一样的,后面.

2021-12-10 10:34:53 248

转载 SparseArray

重点:1. key是int型的,升序排列2. 延迟删除机制

2021-11-24 10:26:17 106

原创 AsyncTask(已弃用)

作用实现多线程:在工作线程中执行任务,如 耗时任务 异步通信、消息传递:实现工作线程 & 主线程(UI线程)之间的通信,即:将工作线程的执行结果传递给主线程,从而在主线程中执行相关的UI操作,保证线程安全。比如,适用于子线程执行耗时操作并且需要有一个结果返回给主线程,这个时候我们就可以用AsyncTask实现.基本使用1.继承抽象类AsyncTask类并指定泛型,根据需求实现/重写该类的方法.AsyncTask<Params, Progress, Result>

2021-11-09 15:43:21 2398

原创 AdapterView

2021-10-21 14:40:25 67

原创 Lambda表达式

Lambda表达式了解之前要先了解匿名内部类,有助于理解Lambda表达式本身就是一个接口的实现下面举几个例子:无返回值的例子public class Java8Tester { public static void main(String args[]){ //具体描绘接口方法的实现 GreetingService greetService2 = (message) -> System.out.println("Hello

2021-10-12 14:13:14 58

转载 匿名内部类

简单来说,就是个没名字的内部类。为啥要有这个玩意呢,很大程度上是因为新建一个类太麻烦了,如果一个类只是简单用用没啥复杂逻辑和关系的话没必要新建一个类。比方说下面的例子:是不是,新建一个类感觉小题大做的...匿名内部类使用那么下面我们简单看下怎么写一个匿名内部类(写出匿名内部类的同时就已经实例化了(有new哎),毕竟匿名内部类的出现本来就是为了方便嘛)可以看到哈,匿名内部类的实现形式,要么是实现一个接口,要么是继承一个类(继承的类可以是抽象类也可以是普通的类,干,好像在说废话...

2021-10-12 11:22:37 83

转载 Java 泛型

目录一、泛型的意义:二、泛型的使用1、泛型类2、泛型接口3、泛型方法泛型,即“参数化类型”。就是说,不指定明确的类型,将类型参数化,在使用/调用时才传入具体的类型。一、泛型的意义:1, 适用于多种数据类型执行相同的代码(显然利于代码复用)2, 泛型中的类型在使用时指定,不需要强制类型转换(更像是1附带的功能,主要是在使用的时候能保证类型安全,编译器会检查类型,保证在编译阶段就报错,而不是等到程序运行之后报错)意义1(复用)举例:对于一个简单的add函数,就不用

2021-10-12 10:16:05 381

转载 Android动画

提起动画,会有三种动画类型在Android开发中经常被用到:帧动画 补间动画 属性动画1.帧动画帧动画非常容易理解,其实就是简单的由N张静态图片收集起来,然后我们通过控制依次显示 这些图片,因为人眼"视觉残留"的原因,会让我们造成动画的"错觉",跟放电影的原理一样!8.4.1 Android动画合集之帧动画 | 菜鸟教程2.补间动画顾名思义,补间动画开发者只需指定动画开始,以及动画结束"关键帧", 而动画变化的"中间帧"则由系统计算并补齐请给我上一份动画总结之补间动画_la

2021-09-28 10:56:17 74

原创 JNI基本使用

1、Java层声明本地方法;编写java文件:package com.val.hardware.utils;//import android.util.Log;public class Native { public static native String sayHello(String name); // 1.声明这是一个native函数,由本地代码实现 public static void main(String[] args) { String text =..

2021-09-15 15:40:54 1054

转载 序列化与反序列化

序列化与反序列化为什么要有序列化和反序列化?

2021-03-31 15:58:47 132

转载 Spring 定时任务之 @Scheduled cron表达式

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为秒(0~59)分钟(0~59)小时(0~23)天(月)(0~31,但是你需要考虑你月的天数)月(0~11)天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)7.年份(1970-2099)其中每个元素可以是一个值(如6),一个连续区间(9-12),一...

2018-09-11 09:55:05 162

转载 java 批量打包zip下载 代码

ZipUtil.javapackage com.hs.common.util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;im...

2018-09-11 09:42:28 378

原创 head first servlets and jsp 笔记3

ServletContextListener在上下文初始化和撤销时得到通知(监听ServletContext的初始化和撤销)容器会检查类,并注意监听者接口以此明确是监听的哪个事件。public class MyServletContextListener implements ServletContextListener {     public MyServletContextLi...

2018-08-01 13:56:47 192

转载 head first servlets and jsp 笔记2

get和post的区别1:请求数据的大小不同。因为get请求的数据是要追加到URL中,而URL的数据量一般不能超过2K,所以用get请求的方法对数据的大小有限制。而post请求方法是把数据放在消息体中,所以理论上对数据量没有限制。(但是实际操作中也不能能太大)2:安全性不一样因为get请求的数据是追加在URL中,外部用户能很方便的看到,从这个角度上来讲不安全。而post方法因为是讲请求放...

2018-07-27 16:40:19 132

原创 head first servlets and jsp 笔记1

     Servlet本身并没有main()方法,所以必须要有其他Java程序去调用它的方法(如doGet(),doPost()),这个Java程序就是Web容器(Container)(Servlet受控于web容器)。同时,服务器得到的请求也是要交给web容器,由容器向Servlet提供http请求。Tomcat就是一个容器。       但很显然,使用容器管理控制Servlet势必会产生...

2018-07-27 11:24:28 495

原创 关于js写在head部分的问题

当我们将js写在head部分时,我们要知道,html页面的加载顺序是从上到下的,如果我们写的js代码需要在文档加载完成后才能够去执行(一般都是要到文档加载完才执行的),那么我们放到&lt;head&gt;内可能导致无法获取对象的情况为了避免类似情况的发生,可以使用以下方式:(1).将脚本代码放在网页的底端,运行脚本代码的时候,可以确保要操作的对象已经加载完成。(2).通过window....

2018-07-19 10:13:57 2566

转载 windows下的MySQL下载安装及卸载(图文)以及Navicat连接mysql报错1251解决方案

下载1.进入官网  https://www.mysql.com/,点击下图中的DOWNLOADS,然后点击下面的Community(社区版,第一个Enterprise是企业版的要花钱的嘿嘿),再点击图中圈起的download                                2.                            q'na'hung...

2018-06-13 18:35:33 300

原创 visual studio 2017运行程序闪退

一点点的小问题,先记下来好了vs窗口闪退,解决方法:在工程上右键---&gt;属性---&gt;配置属性---&gt;连接器---&gt;系统---&gt;子系统(在窗口右边)---&gt;下拉框选择控制台(/SUBSYSTEM:CONSOLE)...

2018-06-02 21:59:22 14583 5

空空如也

空空如也

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

TA关注的人

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