JDK

JSP-Runoob:JSP开发环境搭建

旧时模样 提交于 2021-01-23 07:23:32
ylbtech-JSP-Runoob:JSP开发环境搭建 1. 返回顶部 1、 JSP 开发环境搭建 JSP开发环境是您用来开发、测试和运行JSP程序的地方。 本节将会带您搭建JSP开发环境,具体包括以下几个步骤。 如果你使用的是 Eclipse 环境 ,可以直接参阅: Eclipse JSP/Servlet 环境搭建 。 配置Java开发工具(JDK) 这一步 涉及Java SDK的下载和PATH环境变量 的 配置 。 您可以从Oracle公司的Java页面中下载SDK: Java SE Downloads Java SDK下载完后,请按照给定的指示来安装和配置SDK。最后,通过设置PATH和JAVA_HOME环境变量来指明包括java和javac的文件夹路径,通常是java_install_dir/bin和java_install_dir。 假如您用的是Windows系统并且SDK的安装目录为C::\jdk1.5.0_20,那么您就需要在 C:\autoexec.bat 文件中添加以下两行: set PATH = C : \jdk1 . 5.0 _20\b in ;% PATH % set JAVA_HOME = C : \jdk1 . 5.0 _20 或者,在Windows NT/2000/XP下,您可以直接右击我的电脑图标,选择属性,然后高级,然后环境变量

CompletableFuture异步编排

孤人 提交于 2021-01-23 05:26:17
什么是CompletableFuture CompletableFuture是JDK8提供的Future增强类。CompletableFuture异步任务执行线程池,默认是把异步任务都放在ForkJoinPool中执行。 在这种方式中,主线程不会被阻塞,不需要一直等到子线程完成。主线程可以并行的执行其他任务。 Future存在的问题 Future实际采用FutureTask实现,该对象相当于是消费者和生产者的桥梁,消费者通过 FutureTask 存储任务的处理结果,更新任务的状态:未开始、正在处理、已完成等。而生产者拿到的 FutureTask 被转型为 Future 接口,可以阻塞式获取任务的处理结果,非阻塞式获取任务处理状态。 使用 runAsync 和 supplyAsync方法 CompletableFuture 提供了四个静态方法来创建一个异步操作。 public static CompletableFuture<Void> runAsync(Runnable runnable) public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor) public static <U> CompletableFuture<U> supplyAsync(Supplier<U>

Java初阶

馋奶兔 提交于 2021-01-22 13:47:40
Java语言特点与开发环境 Java语言是一个功能强大的跨平台程序设计语言,是目前应用最为广泛的计算机语言之一。 Java的特性有: 1、简单性 没有头文件、指针运算、结构、联合、操作符重载等 2、面向对象 3、分布式 Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议;Java应用程序能够通过URL打开和访问网络上的对象 4、健壮性 Java采用的指针模型可以消除重写内存和损坏数据的可能性,且Java编译器能够检测出许多其他语言在运行时才能检查出来的错误 5、安全性 6、操作平台无关性 Java编译器生成与平台无关的字节指令,只要安装了Java运行系统,程序就能在任意的处理器上运行 Java程序可以方便的移植到不同的机器上 7、多线程 8、动态性 库中可以自由添加新方法和实例变量,而对客户端没有任何影响,在Java中找出运行时类型信息十分简单 Java开发环境: JDK :Java开发工具包,包括了Java运行环境JRE、一堆Java工具和Java基础的类库; JRE :基于Java语言编写的程序所不可缺少的运行环境,也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中; JVM :(Java虚拟机)是整个Java实现跨平台的最核心的部分,所有的Java程序会首先编译成.class的类文件,这类文件可以在虚拟机上执行

react-native项目运行环境搭建及遇到的坑

元气小坏坏 提交于 2021-01-22 10:52:49
运行react-native项目遇到的坑: 一:有时候运行项目的时候,会出现报错,其中包含一些网址,那么说明访问外网的网络不好,需要自己设置代理。 二:从公司拉取下来的项目,运行并没有报错,而是一直卡在0%不动,那么是因为下载外网依赖太慢,或者无法翻墙,可以通过拷贝其他电脑已经下载好的 .gradle 文件即可运行。卡顿情况如下第二张图: 安装依赖(Node、JDK、Android Studio) 第一步: Node版本必须大于等于12,这个项目的话安装版本是12.13.1,直接使用安装包安装即可(注:如果是node版本过高,会出现一些问题,可以手动使用命令降低Node版本,参考地址: https://www.cnblogs.com/judeyq/p/12124985.html )。 安装完Node 后建议设置 npm 镜像(淘宝源)以加速后面的过程。 第二步: 安装JDK,JDK版本必须是1.8(不支持其他版本及最新版本),安装完JDK之后,需要进行环境变量配置,具体操作参考( https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html ) 第三步: 安装Android Studio(这一步比较复杂),该项目最好安装Android Studio 191版本的,直接使用安装包安装后,需要下载SDK,安装界面中选择

常用的JVM配置参数

喜欢而已 提交于 2021-01-22 10:36:34
一、Trace 跟踪参数   在Eclipse中,如何打开GC的监控日志     选择菜单栏Run -> Run Configurations -> Java Application -> 选择自己的项目 -> 在右侧找到Arguments选项卡 -> 在VM arguments中填写参数,具体参数在下面会有说明。     根据右侧Main的project和下面Main class确定自己监控的main方法     在右侧找到Arguments选项卡 -> 在VM arguments中填写参数 -verbose:gc(打开GC的跟踪日志) -XX:+printGC(打开GC的log的开关,简要日志)     上图为我自己的一个小项目中的gc简要的日志信息 其中 9865k 表示在堆中GC之前使用了9865k的空间,2891k 表示GC之后使用2891k的空间,剩空间为19456k ,本次GC使用的时间为0.0021802 secs -XX:+PrintGCDetails(打印GC的详细信息)     上图我们以第二条为例:PSYoungGen表示新生代 GC之前为9214k,GC之后为 1016K,新生代总大小为9216k,GC所使用的时间为0.0016505 secs。而后面的信息则为上面简要信息中的内容。user 总计本次 GC 总线程所占用的总 CPU 时间 ,sys –

java多线程并发编程

我只是一个虾纸丫 提交于 2021-01-22 05:09:32
知识体系图 : 1、线程是什么? 线程是进程中独立运行的子任务。 2、创建线程的方式 方式一:将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法 方式二:声明实现 Runnable 接口的类。该类然后实现 run 方法 推荐方式二,因为接口方式比继承方式更灵活,也减少程序间的耦合。 3、获取当前线程信息? Thread.currentThread() 4、线程的分类 线程分为守护线程、用户线程。线程初始化默认为用户线程。 setDaemon(true) 将该线程标记为守护线程或用户线程。 特性:设置守护线程,会作为进程的守护者,如果进程内没有其他非守护线程,那么守护线程也会被销毁,即使可能线程内没有运行结束。 5、线程间的关系? 某线程a 中启动另外一个线程 t,那么我们称 线程 t是 线程a 的一个子线程,而 线程a 是 线程t 的 父线程。 最典型的就是我们在main方法中 启动 一个 线程去执行。其中main方法隐含的main线程为父线程。 6、线程API一览:如何启动、停止、暂停、恢复线程? (1)start() 使线程处于就绪状态,Java虚拟机会调用该线程的run方法; (2)stop() 停止线程,已过时,存在不安全性: 一是可能请理性的工作得不得完成; 二是可能对锁定的对象进行“解锁”,导致数据不同步不一致的情况。 推荐 使用

解读 java 并发队列 BlockingQueue

左心房为你撑大大i 提交于 2021-01-22 03:52:09
点击上方蓝色字 "码之初" 关注,点击右上角选择"设为星标" 精品技术文章每天准时送达 让我陪你,每天都进步一点点 ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ 来源:https://javadoop.com/post/java-concurrent-queue 最近得空,想写篇文章好好说说 java 线程池问题,我相信很多人都一知半解的,包括我自己在仔仔细细看源码之前,也有许多的不解,甚至有些地方我一直都没有理解到位。 说到线程池实现,那么就不得不涉及到各种 BlockingQueue 的实现,那么我想就 BlockingQueue 的问题和大家分享分享我了解的一些知识。 本文没有像之前分析 AQS 那样一行一行源码分析了,不过还是把其中最重要和最难理解的代码说了一遍,所以不免篇幅略长。本文涉及到比较多的 Doug Lea 对 BlockingQueue 的设计思想,希望有心的读者真的可以有一些收获,我觉得自己还是写了一些干货的。 本文直接参考 Doug Lea 写的 Java doc 和注释,这也是我们在学习 java 并发包时最好的材料了。希望大家能有所思、有所悟,学习 Doug Lea 的代码风格,并将其优雅、严谨的作风应用到我们写的每一行代码中。 目录: BlockingQueue 开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现。 首先,最基本的来说,

linux环境常用命令

白昼怎懂夜的黑 提交于 2021-01-21 11:28:01
1、查看、安装和卸载软件 1.1、查看已安装软件(.rpm) [root@xxx] $ rpm - qa | grep jdk 1.2、卸载已安装软件 [root@xxx] $ rpm - e softwarename -- nodeps [root@xxx] $ yum - y remove softwarename 1.3、安装软件 [root@xxx] $ rpm - ivh * . rpm [root@xxx] $ yum - y install lrzsz [root@xxx] $ yum - y install firefox 2、查找替换命令 2.1、批量替换 sed - i 's/被替换的字符串/替换的字符串/g' 包含被替换的字符串文件路径 3、网络设置 3.1、设置固定ip [root@xxx] $ vi / etc / sysconfig / network - scripts / ifcfg - ethXX TYPE =Ethernet BOOTPROTO=static DEVICE=ethXX ONBOOT=yes IPADDR=10 . xxx . xxx . 4 NETMASK=255 . 255 . 255 . 0 GATEWAY=10 . xxx . xxx . 1 DNS1=8 . 8 . 8 . 8 3.2、重启网卡 [root@xxx] $

ELK的安装部署以及nginx日志采集

*爱你&永不变心* 提交于 2021-01-21 11:27:32
ELK的安装部署以及日志采集 环境要求:最低是2G 2核心的配置,没有上限,请根据自己机器本身情况而定。 思路: 192.168.80.130 jdk+elasticseach+kibana 192.168.80.131 jdk+logstash 1. 关闭防火墙 systemctl stop firewalld 2. 时间同步 yum - y install ntpdate ntpdate pool.ntp.org 如果出现下面这种情况 var/run/yum.pid 已被锁定,PID 为 3382 的另一个程序正在运行。 Another app is currently holding the yum lock ; waiting for it to exit .. . 另一个应用程序是:PackageKit 内存: 28 M RSS (440 MB VSZ) 已启动: Mon Jan 18 20:29:35 2021 - 00:38之前 状态 :睡眠中,进程ID:3382 [ root@localhost ~ ] # rm -rf /var/run/yum.pid 3. 两台机器安装jdk环境 [ root@localhost ] # rpm -ivh jdk-8u131-linux-x64_.rpm 验证一下: [ root@localhost ] # java

如何优雅地终止一个线程?

牧云@^-^@ 提交于 2021-01-21 07:26:22
我们的系统肯定有些线程为了保证业务需要是要常驻后台的,一般它们不会自己终止,需要我们通过手动来终止它们。我们知道启动一个线程是start方法,自然有一个对应的终止线程的stop方法,通过stop方法可以很快速、方便地终止一个线程,我们来看看stop的源代码。 通过注解@Deprecated看出stop方法被标为废弃的方法,jdk在以后的版本中可能被移除,不建议大家使用这种API。 那为什么这么好的一个方法怎么不推荐使用,还要标注为废弃呢? 假设有这样的一个业务场景,一个线程正在处理一个复杂的业务流程,突然间线程被调用stop而意外终止,这个业务数据还有可能是一致的吗?这样是肯定会出问题的,stop会释放锁并强制终止线程,造成执行一半的线程终止,带来的后果也是可想而知的,这就是为什么jdk不推荐使用stop终止线程的方法的原因,因为它很暴力会带来数据不一致性的问题。 正因为stop方法太过暴力,所以一般不推荐使用,除非你非常清楚你自己的业务场景,用stop终止不会给你的业务带来影响。 说了这么多,那如何优雅地终止一个线程呢?看看下面的程序。 其实也不难,只需要添加一个变量,判断这个变量在某个值的时候就退出循环,这时候每个循环为一个整合不被强行终止就不会影响单个业务的执行结果。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2. Spring MVC