自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(208)
  • 资源 (16)
  • 收藏
  • 关注

原创 网站上的图片显示不清晰的解决办法!

网站上的图片显示不清晰的解决办法!

2024-04-05 10:51:10 124

原创 等待超时模式

可以看出,等待超时模式就是在等待/通知范式基础上增加了超时控制,这使得该模式相比原有范式更具有灵活性,因为即使方法执行时间过长,也不会“永久”阻塞调用者,而是会按照调用者的要求“按时”返回。开发人员经常会遇到这样的方法调用场景:调用一个方法时等待一段时间(一般来说是给定一个时间段),如果该方法能够在给定的时间段之内得到结果,那么将结果立刻返回,反之,超时返回默认结果。前面的章节介绍了等待/通知的经典范式,即加锁、条件循环和处理逻辑3个步骤,而这种范式无法做到超时等待。上述描述等待超时模式的伪代码如下。

2024-02-27 08:59:29 318

原创 等待/通知机制

等待/通知机制,是指一个线程A调用了对象O的wait()方法进入等待状态,而另一个线程B调用了对象O的notify()或者notifyAll()方法,线程A收到通知后从对象O的wait()方法返回,进而执行后续操作。3)notify()或notifyAll()方法调用后,等待线程依旧不会从wait()返回,需要调用notify()或notifAll()的线程释放锁之后,等待线程才有机会从wait()返回。1)难以确保及时性。// 获取lock的锁,然后进行通知,通知时不会释放lock的锁,

2024-02-27 08:57:41 338

原创 volatile和synchronized关键字

Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量访问的可见性和排他性。

2024-02-27 08:54:46 253

原创 安全地终止线程

这种通过标识位或者中断操作的方式能够使线程在终止时有机会去清理资源,而不是武断地将线程停止,因此这种终止线程的做法显得更加安全和优雅。在4.2.3节中提到的中断状态是线程的一个标识位,而中断操作是一种简便的线程间交互方式,而这种交互方式最适合用来取消或停止任务。在代码清单4-9所示的例子中,创建了一个线程CountThread,它不断地进行变量累加,而主线程尝试对其进行中断操作和停止操作。// 睡眠1秒,main线程对CountThread进行中断,使CountThread能够感知中断而结束。

2024-02-27 08:49:44 254

原创 过期的suspend()、resume()和stop()

大家对于CD机肯定不会陌生,如果把它播放音乐比作一个线程的运作,那么对音乐播放做出的暂停、恢复和停止操作对应在线程Thread的API就是suspend()、resume()和stop()。注意 正因为suspend()、resume()和stop()方法带来的副作用,这些方法才被标注为不建议使用的过期方法,而暂停和恢复操作可以用后面提到的等待/通知机制来替代。在代码清单4-8所示的例子中,创建了一个线程PrintThread,它以1秒的频率进行打印,而主线程对其进行暂停、恢复和停止操作。

2024-02-27 08:47:50 384

原创 JAVA线程 启动线程 理解中断

线程通过检查自身是否被中断来进行响应,线程通过方法isInterrupted()来进行判断是否被中断,也可以调用静态方法Thread.interrupted()对当前线程的中断标识位进行复位。中断好比其他线程对该线程打了个招呼,其他线程通过调用该线程的interrupt()方法对其进行中断操作。在代码清单4-7所示的例子中,首先创建了两个线程,SleepThread和BusyThread,前者不停地睡眠,后者一直运行,然后对这两个线程分别进行中断操作,观察二者的中断标识位。

2024-02-27 08:46:07 605

原创 在构建Daemon线程时,不能依靠finally块中的内容来确保执行关闭或清理资源的逻辑。

main线程(非Daemon线程)在启动了线程DaemonRunner之后随着main方法执行完毕而终止,而此时Java虚拟机中已经没有非Daemon线程,虚拟机需要退出。Java虚拟机中的所有Daemon线程都需要立即终止,因此DaemonRunner立即终止,但是DaemonRunner中的finally块并没有执行。Daemon线程被用作完成支持性工作,但是在Java虚拟机退出时Daemon线程中的finally块并不一定会执行,示例如代码清单4-5所示。代码清单4-5 Daemon.java。

2024-02-27 08:42:21 193

原创 线程的状态图

进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而超时等待状态相当于在等待状态的基础上增加了超时限制,也就是超时时间到达时将会返回到运行状态。当线程调用同步方法时,在没有获取到锁的情况下,线程将会进入到阻塞状态。阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态,但是阻塞在java.concurrent包中Lock接口的线程状态却是等待状态,因为java.concurrent包中Lock接口对于阻塞的实现均使用了LockSupport类中的相关方法。

2024-02-27 08:40:01 133

原创 java线程

现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行,直到终止。但是,每个运行中的线程,如果仅仅是孤立地运行,那么没有一点儿价值,或者说价值很少,如果多个线程能够相互配合完成工作,这将会带来巨大的价值。

2024-02-27 08:34:04 121

原创 java内存模型的基础

从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的副本。当线程A和线程B需要通信时,线程A首先会把自己本地内存中修改后的x值刷新到主内存中,此时主内存中的x值变为了1。随后,线程B到主内存中去读取线程A更新后的x值,此时线程B的本地内存的x值也变为了1。在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。

2024-02-27 07:49:53 342

原创 内部类访问外部类的私有成员必须通过静态函数来访问。

【代码】内部类访问外部类的私有成员必须通过静态函数来访问。

2024-02-26 11:46:06 74

原创 volatile是如何来保证可见性的呢?

如果对声明了volatile的变量进行写操作,JVM就会向处理器发送一条Lock前缀的指令,将这个变量所在缓存行的数据写回到系统内存。但是,就算写回到内存,如果其他处理器缓存的值还是旧的,再执行计算操作就会有问题。缓存是一致的,就会实现缓存一致性协议,每个处理器通过嗅探在总线上传播的数据来检查自己缓存的值是不是过期了,当处理器发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效状态,当处理器对这个数据进行修改操作的时候,会重新从系统内存中把数据读到处理器缓存里。volatile的应用。

2024-02-26 07:59:20 175

原创 公众号回复idea能给出下载链接。

你可以使用字典来存储这些数据,然后在接收到消息时根据消息内容在字典中查找对应的回复内容。这样做不仅可以更优雅地管理多组数据,还可以轻松地扩展和维护。

2024-02-25 16:52:52 203

原创 今日头条自动点赞!

如果在滚动和重新寻找图片的过程中依然无法找到指定的图片,程序会继续循环,直到达到滚动次数的限制。在滚动后,程序尝试再次寻找指定的图片,如果找到了,就执行点击操作,并更新计数器,表示完成了一次点击任务。主要目的是在程序无法找到指定的图片时进行滚动页面或者刷新页面,然后重新尝试找到图片并点击。在进行页面刷新后,会将刷新次数加1,以便在未来的循环中对刷新次数进行判断,并可能采取不同的等待策略。语句块内部尝试寻找指定的图片,如果找到了则进行点击,并将计数器减1,表示完成了一次点击任务。

2024-02-25 13:45:33 123

原创 微信朋友圈自动点赞!

微信朋友圈自动点赞python实现!

2024-02-25 08:56:04 123

原创 封装串口接收数据函数出现ANR的---解决办法!

封装串口接收数据函数出现ANR的---解决办法!

2024-02-24 11:47:22 88

原创 观察器(Observer)解决了什么问题?

如果有人说“好了,所有人都要检查自己,并可能要进行更新”,那么 Observable 类会执行这个任务——为列表中的每个“人”都调用 notifyObservers()方法。在Smalltalk 的MVC(模型-视图-控制器)的“模型-视图”部分中,或在几乎等价的“文档-视图结构”中,大家可以看到这个问题。若答案是肯定的,那么也修改自己的颜色,保持与点中那个箱子的协调。观察器(Observer)范式解决的是一个相当普通的问题:由于某些对象的状态发生了改变,所以一组对象都需要更新,那么该如何解决?

2024-02-23 18:20:49 254

原创 java 中什么是什么是Bean,解决了什么问题?为什么android开发中没用到?

2. **公共方法(Public Methods):** Bean类通常提供一系列公共方法来访问和修改私有字段,这些方法通常遵循一定的命名约定,比如getXxx()和setXxx()。1. **封装数据:** Bean通过将数据封装在私有字段中,并提供公共方法来访问和修改这些数据,可以有效地隐藏数据的实现细节,从而提高了代码的安全性和可维护性。2. **统一访问方式:** Bean提供了一种统一的访问方式,使得不同的类可以以相似的方式来访问和操作数据,这样就可以减少代码的重复性和冗余性。

2024-02-23 18:14:41 137

原创 迭代器是干什么的?为什么需要他?

put(Object key, Object value)添加一个值(我们希望的东西),并将其同一个键关联起来(想用于搜索它的东西);而 elements()产生对所有值的一个枚举。这种“从一系列对象中选择”的概念亦可叫作一个“映射”、“字典”或者“关联数组”。堆栈就是这样的一个例子:它的选择标准是“最后压入堆栈的东西”。有时候,我们需要一个一个地访问集合中的每个元素,就像你一个一个地拿出盒子里的玩具一样。迭代器就像是一个指示器,可以帮助我们逐个访问集合中的元素,这样我们就可以处理集合中的每个元素了。

2024-02-23 18:10:50 220

原创 集合是干嘛的?解决了什么问题?

有些时候甚至想用更复杂的方式来保存对象。为解决这个问题,Java 提供了四种类型的“集合类”:Vector(矢量)、BitSet(位集)、Stack(堆栈)以及。“关联数组”,允许我们将任何对象关联起来。除此以外,所有Java 集合类都能自动改变自身的大小。所以,我们在编程时可使用数量众多的对象,与拥有集合功能的其他语言相比,尽管这儿的数量显得相当少,但仍然能用它们解决数量惊人的实际问题。这些集合类具有形形色色的特征。例如,Stack 实现了一个 LIFO(先入先出)序列,而 Hashtable 是一种。

2024-02-23 18:07:47 134

原创 内部类能覆盖吗?内部类解决了什么问题?

内部类对我们非常有用,因为利用它可对那些逻辑上相互联系的类进行分组,并可控制一个类在另一个类里的“可见性”。然而,我们必须认识到内部类与以前讲述的“合成”方法存在着根本的区别。在本章的末尾,介绍完内部类的所有语法之后,大家会发现一个特别的例子。通过它应该可以清晰地认识到内部类的好处。在Java 1.1 中,

2024-02-23 17:33:22 226

原创 更换公众号人工服务提示!

n这里是ChatGPT,如何需要人工服务,请加微信:AIGPTchina",找到目录下 /root/data/chatgpt-on-wechat/config.json 文件。

2024-02-23 16:47:36 87

原创 为什么需要抽象类和接口?

抽象类和接口都有自己的适用场景和优劣势,根据具体情况选择使用哪种方式。通常情况下,应该首选接口而不是抽象类,以便更好地利用Java的接口多继承特性。“过载”是指同一样东西在不同的地方具有多种含义;而“覆盖”是指它随时随地都只有一种含义,只是原先的含义完全被后来的含义取代了。

2024-02-23 09:02:15 206

原创 java多态的本质----将发生改变的东西同没有发生改变的东西区分开

在一个设计良好的 OOP 程序中,我们的大多数或者所有方法都会遵从tune()的模型,而且只与基础类接口通信。我们说这样的程序具有“扩展性”,因为可以从通用的基础类继承新的数据类型,从而新添一些功能。即使 tune()位于一个独立的文件里,而将新方法添加到Instrument 的接口,tune()也能正确地工作,不需要重新编译。可以看到,在围绕 tune()方法的其他所有代码都发生变化的同时,tune()方法却丝毫不受它们的影响,依然故我地正常工作。新方法是what()和adjust()。

2024-02-23 08:42:21 125

原创 在jar里限制指定的包名才可调用(白名单)。

3. 将当前应用的hash值与预设的值进行比较,如果匹配,则允许调用接口;1. 在jar包中定义一个接口,例如 用于检查传入的hash值是否匹配预设的值。2. 在调用接口的地方,获取当前应用的hash值。

2024-02-22 17:57:04 488

原创 每个java文件里都定义TAG变量-冗余的解决办法!

因为每个java文件都需要打印日志。获取调用位置的类名来替换LOG打印日志里的TAG变量。每个java文件里都得写一句这样得话来打印日志。

2024-02-22 17:32:31 80

原创 java 第 7 章 多态(多变态到底是要解决什么问题?)

但多形性却涉及对“类型”的分解。通过上一章的学习,大家已知道通过继承可将一个对象当作它自己的类型或者它自己的基础类型对待。利用具有多形性的方法调用,一种类型可将自己与另一种相似的类型区分开,只要它们都是从相同的基础类型中衍生出来的。也就是说,如果我们能不顾衍生类,只让自己的代码与基础类打交道,那么省下的工作量将是难以估计的。在第6 章,大家已知道可将一个对象作为它自己的类型使用,或者作为它的基础类型的一个对象使用。同时举一些简单的例子,其中所有无关的部分都已剥除,只保留与多形性有关的代码。

2024-02-22 16:09:14 809

原创 【无标题】

【代码】解析协议

2024-02-22 11:42:24 341

原创 java十六进制字符转换为相应的字节

【代码】java十六进制字符转换为相应的字节。

2024-02-22 11:09:35 99

原创 将一个 List 中的 byte 数组转换成一个合并后的 byte 数组。

【代码】将一个 List 中的 byte 数组转换成一个合并后的 byte 数组。

2024-02-22 10:54:25 112

原创 将十六进制字符串转换为字节数组

【代码】将十六进制字符串转换为字节数组。

2024-02-22 10:51:33 161

原创 final 关键字

通常,只有在方法的代码量非常少,或者想明确禁止方法被覆盖的时候,才应考虑将一个方法设为final。由于i1 和 I2 都是具有 final 属性的基本数据类型,并含有编译期的值,所以它们除了能作为编译期的常数使用外,在任何导入方式中也不会出现任何不同。正如我们在本书其他地方提到的那样,显然一些类的设计人员与其他设计人员有着全然不同的素质(注意比较Hashtable 极短的方法名与Vecor 的方法名)。正如在第14 章要讲到的那样,这会造成显著的性能开销,可能会把final 提供的性能改善抵销得一干二净。

2024-02-22 08:55:41 465

原创 JAVA如何使用条件编译?

最开始的时候,package 关键字的运用可能会令人迷惑,因为除非坚持遵守根据目录路径指定包名的规则,否则就会在运行期获得大量莫名其妙的消息,指出找不到一个特定的类——即使那个类明明就在相同的目录中。具体地,作者创建了两个不同的Assert类,一个用于调试版本,一个用于最终发布版本,它们分别位于不同的包中。:在Java中,包是用来组织类的命名空间的一种机制。- 汽车的例子展示了合成的使用,通过将引擎、轮子、门等对象嵌入到汽车类中,实现了汽车的功能,但隐藏了这些对象的具体接口,使得汽车类的接口更加清晰。

2024-02-22 08:52:40 862

原创 android绑定不成功!applicationid要是包名。

1.com.subpos.client包名 对应 Kif_OrdinaryPos_1.1_20220310_release.apk (client)客户端。2.com.pos.function包名 对应 KMS_V1.8.apk(service) 是一个service.

2024-02-21 18:05:52 103

原创 Failure [DELETE_FAILED_INTERNAL_ERROR]的解决办法

1.接上ADB 找到包名。2 adb uninstall --user 0 com.subpos.client

2024-02-21 16:57:14 500

原创 在windows 下对某个apk 获取包名的命令

您可以使用以下命令来获取apk的包名:aapt dump badging 。例如,如果您的apk文件位于E:\work_study\app\baidu\app目录下,则可以使用以下命令:aapt dump badging E:\work_studyapp\baidu\app\exueba_parent.apk。

2024-02-21 16:31:40 228

原创 一个接口需要很多地方调用,就封装起来。

接口实现改成统一调用。

2024-02-21 14:12:06 120

原创 重载版本并未编写任何代码。这种做法显得冗余,重新考虑如何更有效地处理这一部分代码?

您可以使用接口的默认方法(Default Method)来避免在onLength和onRealLength方法中添加不必要的代码。在接口中定义默认方法,子类可以选择性地覆盖这些方法。

2024-02-21 10:59:04 102

原创 JAVA编程思想-第 4 章 初始化和清除

这样做一个稍显奇怪的地方是在调用runFinalization()之前调用gc(),这看起来似乎与 Sun 公司的文档说明有些抵触,它宣称首先运行收尾模块,再释放存储空间。在标记为(1)的行内访问 static 对象c1 的时候,或在行(1)标记为注释,同时(2)行不标记成注释的时候,用于Cups 的 static 初始化模块就会运行。与其他 static 初始化一样,这段代码仅执行一次——首次生成那个类的一个对象时,或者首次访问属于那个类的一个 static 成员时(即便从未生成过那个类的对象)。

2024-02-21 08:44:12 790

根据ini文件打印菜单

根据ini文件打印菜单

2014-12-08

AccessPort.exe

AccessPort串口监听工具

2012-12-19

WIN Socket

网络编程windows socket源代码。VC

2012-11-07

Source+Insight破解版.rar 安装文件

Source+Insight破解版.rar 安装文件

2012-05-13

foxmail7.0 收取邮件,快,好用。发邮件也快。

foxmail7.0 收取邮件,快,好用。发邮件也快。

2012-05-13

WPS办公软件

绿色版,比OFFICE安装文件小,安装快。支持国产软件,可以查阅微软件的OFFICE东东

2012-05-12

中国银联POS规范最新版(2011年)

1、中国银联POS规范最新版(2011年) 2、pdf版 3、没病毒

2011-03-15

doc转pdf工具(word转pdf)

1、doc转pdf工具,解压后有两个文件。1个是安装文件。1个是序列号。 2、资源分,我要求2分,多谢大家支持。我也来找这个资料,发现资源分10分。下载不成功。在google\baidu去找,很多病毒。好不容易找到一个。 3、绝对没病毒。

2011-03-15

中国电信集团公司企业标准--中文信息终端服务接口协议(CTSI协议)V1.38

中国电信集团公司企业标准--中文信息终端服务接口协议(CTSI协议)V1.38

2009-02-01

window清理助手.exe

window清理助手 很还用的工具 window清理助手.exe window清理助手.exe window清理助手.exe

2009-01-20

apache_2.0.63-win32-x86-no_ssl.msi

apache_2.0.63-win32-x86-no_ssl.msi

2009-01-20

软件测试考试题

软件测试考试题,以方便软件测试人员参考!

2008-08-25

空空如也

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

TA关注的人

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