Java
文章平均质量分 53
songyuequan
这个作者很懒,什么都没留下…
展开
-
quartz定时任务修改系统时间后不执行
修改了服务器时间以后,原有的定时任务不执行了,其实定时器并没有失效,而是trigger定时调用以后会自动记录下一次调用的时间,当修改系统时间以后,假如修改后的时间靠后了,那你的定时调度任务将无法执行,假如修改后的时间靠前了,那定时调度任务是可以定时执行的...转载 2021-11-03 09:48:11 · 1325 阅读 · 0 评论 -
网络IO模型演进04——epoll模型示例
1. 简介epoll 是Linux内核为了解决io问题而引入的一种机制,避免了poll模型的几个缺点poll每次系统调用都要传递文件描述符集合,epoll在内核开辟了一个空间来存储文件描述符集合poll系统调用,内核每次都要遍历文件描述符集合,epoll通过和网卡中断做关联,避免了遍历文件描述符集合2. 笔者环境Ubuntu 18.04JDK1.83. 示例代码vim SocketMultiplexingSingleThreadv1.javajavac SocketMult原创 2021-03-10 17:42:55 · 295 阅读 · 0 评论 -
网络IO模型演进03——poll模型示例
1. 简介在 nio 模型中,需要在应用程序不断的做read系统调用,消耗系统资源,这个复杂度是O(n),但是这些read中有很多是无效的,从而引出了poll模型。在poll模型中,省去了在用户空间做O(n)复杂度的read系统调用,节省了大量的资源2. 笔者环境Ubuntu 18.04JDK1.83. 示例代码vim SocketMultiplexingSingleThread.javajavac SocketMultiplexingSingleThread.javast原创 2021-03-10 17:36:59 · 401 阅读 · 0 评论 -
网络IO模型演进02——NIO模型示例
1. 简介BIO 全称 Blocking IO , 也就是阻塞IO,这里的阻塞体现在两个方面,- accept内核分配的Socket资源后,阻塞的等待客户端的连接- 读取客户端发送的数据时是阻塞的2. 笔者环境- Ubuntu 18.04- JDK1.83. 示例代码vim SocketNIONonBlocking.javajavac SocketNIONonBlocking.javastrace -ff -o out java SocketNIONonBlockingim原创 2021-03-08 19:30:58 · 179 阅读 · 0 评论 -
网络IO模型演进01——BIO模型示例
1. 简介BIO 全称 Blocking IO , 也就是阻塞IO,这里的阻塞体现在两个方面,- accept内核分配的Socket资源后,阻塞的等待客户端的连接- 读取客户端发送的数据时是阻塞的2. 笔者环境Ubuntu 18.04JDK1.43. 安装JDK1.4注意这里要演示原始的BIO模型,需要使用JDK1.4来编译;如果使用JDK8编译,会发现在系统调用层面使用的是poll模型https://www.oracle.com/java/technologies/java-a原创 2021-03-08 19:30:09 · 101 阅读 · 0 评论 -
关于并发编程产生的问题的思考
计算机科学属于现代科学的一个门类。而现代科学的发展又依赖于哲学的发展。我们所处的时代是一个工商业文明的时代,整个时代的底层逻辑,是西方哲学体系。哲学本身的特点是不断的完善自己的模型,不断的推翻旧的模型。而科学作为哲学的一个产物,也继承了这个特性。哲学推演中有假设的方法。我们假设 计算机的CPU ,内存,I/O的速度是一样的,那么就不存在 CPU和IO的速度差异,线程在计算的时候,和I/O操作的时候,速度是一样的。那么就不存在,为了避免线程做I/O操作时,对CPU造成浪费。设计的线程调度。没有了线程切原创 2021-01-18 16:37:42 · 103 阅读 · 0 评论 -
编译OpenJDK
编译环境Ubuntu Server 18.04 LTSapt install openjdk-11-jdk编译OpenJDK12 需要先安装OpenJDK11 以此类推下载OpenJDK12可以到这个页面中 点击zip 下载源码也可以执行以下命令下载wget -c https://hg.openjdk.java.net/jdk/jdk12/archive/0622...原创 2020-02-13 00:05:37 · 567 阅读 · 0 评论 -
Idea中启动一个工程多个实例
在SpingCould案例中,经常一个工程启动多个实例,分别占用不同的端口。step 1在IDEA上点击Application右边的下三角 ,弹出选项后,点击Edit Configurationstep 2打开配置后,将默认的Single instance only(单实例)的钩去掉。 step 3通过修改application文件的server.port的端口,启动。多个实例,需要多个端口,分别...转载 2018-05-04 16:42:20 · 592 阅读 · 0 评论 -
getGenericSuperclass的用法
原文链接一、getGenericSuperclass()和getActualTypeArguments()基本用法:import java.lang.reflect.ParameterizedType;public class TT extends TT2 {public static void main(String[] args) {Sy转载 2016-04-08 10:55:15 · 6874 阅读 · 1 评论 -
Java编程思想读书笔记(二)----接口
一 抽象类和抽象方法 抽象方法:仅有声明而没有方法体。 抽象类:包含一个或者多个抽象方法的类,必须定义为抽象的(抽象类也可以没有抽象方法)。 目的:组织创建这个类的对象。二 接口 1. interface 默认是default权限 可以添加public修饰符。 2. interface中的变量都是 pub原创 2015-03-25 18:59:01 · 350 阅读 · 0 评论 -
多线程环境下 java.io.IOException: Mark has been invalidated.
[java] view plaincopybitmap = BitmapFactory.decodeStream(uc.getInputStream()); [java] view plaincopy12-15 15:25:47.275: W/System.err(2303): java.io.IOException: Mark has been i转载 2015-03-12 14:11:12 · 597 阅读 · 0 评论 -
Java 编程思想读书笔记(一)---多态
一 绑定 将方法调用通方法主体联系起来叫做绑定,在程序运行前进行绑定叫做前期绑定,C++只有一种绑定方法就是前期绑定。Java中除了final和static方法都是动态绑定,因为final方法不能被重写。 private方法属于final方法,所以子类中的方法要尽量避免与父类中的private方法同名。 二 优点 在良好的OOP设计中,遵循面向接口编程而不是面向实现类编...原创 2015-03-10 18:47:55 · 325 阅读 · 0 评论 -
Android中的设计模式
1、适配器模式:ListView或GridView的Adapter简介:不同的数据提供者使用一个适配器来向一个相同的客户提供服务。 2、建造者模式:AlertDialog.Builder简介:可以分步地构造每一部分。 3、命令模式:Handler.post后Handler.handleMessage简介:把请求封装成一个对象发送出去,方便定制、排队、取消。 4、转载 2015-03-21 17:28:22 · 335 阅读 · 0 评论