JDK

杨玲 201771010133《面向对象程序设计(java)》第十七周学习总结

可紊 提交于 2021-02-17 13:05:28
《面向对象程序设计( java )》第十七周学习总结 第一部分:实验部分 实验名称:实验十七 线程同步控制 1 、实验目的与要求 (1) 掌握线程同步的概念及实现技术; (2) 线程综合编程练习 2 、实验内容和步骤 实验1: 测试程序并进行代码注释。 测试程序1: l 在Elipse环境下调试教材651页程序14-7,结合程序运行结果理解程序; l 掌握利用锁对象和条件对象实现的多线程同步技术。 1 package synch; 2 3 import java.util.* ; 4 import java.util.concurrent.locks.* ; 5 6 /** 7 * A bank with a number of bank accounts that uses locks for serializing access. 8 * @version 1.30 2004-08-01 9 * @author Cay Horstmann 10 */ 11 public class Bank 12 { 13 private final double [] accounts; // 银行运转的基本数据 14 private Lock bankLock; // 锁对象 15 private Condition sufficientFunds; // 16 17 /** 18 *

树莓派4b + Ubuntu20.10 Server 安装Java8 64

自古美人都是妖i 提交于 2021-02-17 12:39:07
安装环境: 树莓派4b +Ubuntu 20.10 (GNU/Linux 5.8.0-1015-raspi aarch64) 首先查看一下自己系统的版本 uname -m 1. 下载jdk https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 2. 解压 tar -zxvf jdk-8u281-linux-aarch64.tar.gz 3. 将解压后的文件夹剪切到usr/local/jdk1.8 目录下 创建目录 cd /usr/local sudo mkdir jdk1.8 剪切至所创建的 /usr/local/jdk1.8/ 目录下 sudo mv jdk1.8.0_281 /usr/local/jdk1.8/ 4. 配置环境变量 sudo vim /etc/profile 在最后面追加 #jdk export JAVA_HOME=/usr/local/jdk1.8/jdk1.8.0_281 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 5. 重载环境变量 source /etc/profile 6. 检查 java -version

「Java面试题精华集」1w字的Java集合框架篇(2020最新版)附PDF版 !

一世执手 提交于 2021-02-17 12:29:39
一个多月前,我和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来 夯实基础! 小册的标准就一个,那就是: 取精华,取重点 。每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标准。 上一期中,我们已经将 《 Java基础知识篇》 完成,这一期到 Java 集合框架篇了。感谢下面👇的小伙伴对本期文章的帮助和修正。👏 昨天晚上终于把 Java 集合框架部分的的知识点肝完了,转换成 PDF 一共 25 页,后台回复:“ 面试突击 ” 即可免费获取下载地址( 同样提供了夜间阅读版本 )。 很多小伙伴可能会问这个和 《JavaGuide面试突击》 不是不冲突了么? 我都看了 《JavaGuide面试突击》 ,为啥还有这个,还嫌我头发不够少么,艹,Guide你可 真坏! 实际上,两者是不冲突的。 首先,两者的内容在很大程度上都是一样的。但是,《Java 知识点常见重要问题的小册》的话知识点会稍微更加全面一点,更加适合自己系统复习知识,而 《JavaGuide面试突击》 更加适合准备面试。 集合概述 Java 集合概览 从下图可以看出,在 Java 中除了以 Map 结尾的类之外, 其他类都实现了 Collection 接口。 并且,以 Map 结尾的类都实现了 Map 接口。 说说 List,Set,Map 三者的区别? List (对付顺序的好帮手)

Java中的常量池(字符串常量池、class常量池和运行时常量池)

半腔热情 提交于 2021-02-17 11:35:16
转载。 https://blog.csdn.net/zm13007310400/article/details/77534349 简介: 这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的说法,然后我就去CSDN、博客园等上找资料,里面说的内容真是百花齐放,各自争艳,因此,我好好整理了一下,将我自认为对的理解写下来与大家共同探讨: 在Java的内存分配中,总共3种常量池: 1.字符串常量池(String Constant Pool): 1.1:字符串常量池在Java内存区域的哪个位置? 在JDK6.0及之前版本, 字符串常量池是放在Perm Gen区(也就是方法区)中; 在JDK7.0版本, 字符串常量池被移到了堆中了。至于为什么移到堆内,大概是由于方法区的内存空间太小了。 1.2:字符串常量池是什么? 在HotSpot VM里实现的string pool功能的是一个StringTable类,它是一个Hash表,默认值大小长度是1009;这个StringTable在每个HotSpot VM的实例只有一份,被所有的类共享。字符串常量由一个一个字符组成,放在了StringTable上。 在JDK6.0中,StringTable的长度是固定的,长度就是1009,因此如果放入String Pool中的String非常多,就会造成hash冲突,导致链表过长,当调用String

maven setting配置

♀尐吖头ヾ 提交于 2021-02-17 09:05:00
<? xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed

超详细的Fastjson<=1.2.47反序列化漏洞复现

匆匆过客 提交于 2021-02-17 06:17:31
本公众号专注于最新漏洞复现,欢迎关注! ---------------------------------------------------------------------------------------- 本文作者:daxi0ng(Timeline Sec新成员) 本文共1946字,阅读大约需要6分钟 0x00 简介 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 0x01 漏洞概述 首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会造成一些严重的安全问题。并且在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。 0x02 影响版本 Fastjson1.2.47以及之前的版本

一、Docker概述与安装

末鹿安然 提交于 2021-02-17 02:16:53
一、概述 官网: https://www.docker.com dockerhub: https://hub.docker.com/ Docker 是一个开源的应用容器引擎,基于Go语言,并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包 他们的应用以及依赖包 到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用 沙箱机制 ,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 把项目从windows发布到linux环境并不能跨平台,以前发布一个jar或者war,需要在机器上配置redis、mysql、ES、jdk。使用docker后可以带上环境来打包(镜像)。 二、组成 镜像(image) :通过镜像来创建容器,相当于是一个 root 文件系统,创建 Docker 容器的模板。 容器(container) :独立运行应用,是镜像运行时的实体。 仓库(repository) :Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 三、安装 CentOS的安装文档: https://docs.docker.com/engine/install/centos/ 1、卸载: sudo yum remove docker \ docker-client \ docker

服务器搭建个人网站(阿里云服务器)

天大地大妈咪最大 提交于 2021-02-16 22:03:06
服务器搭建个人网站 一丶购买服务器 这里我选的是 阿里云 服务器,进入 阿里云 官网 https://www.aliyun.com 阿里云 提供了几种服务器,云服务器ESC、轻量应用服务器,ESC更好一点儿,我选了轻量级应用服务器。购买好了之后,在 阿里云 网站主页→控制台→轻量应用服务器。找到运行中的实例点进去就好了。服务器器就购买好了 二、配置服务器环境 首先你要知道怎么把你本机的文件放到你的服务器里去:你在本机上复制文件,远程连接服务器(运行中敲“mstsc”可打开远程连接窗口),在服务器中粘贴即可,就这么简单。你也可以设置本机上的各个盘为共享也是OK的。其次千万要注意:要在 阿里云 服务器中把你的防火墙的端口打开比如8080,3306之类的,不打开你是访问不了的 (1)JDK和JRE 去官网 http://www.oracle.com/technetwork/java/javase/downloads/index.html 找到对应的JDK下载,或者百度“JDK”进入官网下载也是OK的,下载之后配置环境变量,此电脑→属性→高级系统设置→高级→环境变量→系统变量,新建JAVA_HOME和JRE_HOME两个变量,变量的值就是JDK和JRE的安装位置,配好之后再在path中加入JAVA_HOME和JRE_HOME,可以不用配classPath变量,新的jdk不建议配。 (2

PriorityQueue 优先级队列

北城余情 提交于 2021-02-16 17:48:14
JDK版本是1.8 特点 1.不能插入null对象 2.插入的对象支持排序。(可以自己传入比较器) 3.如果排序的结果一样的话,那么这两个的对象在队列中的位置是前后随机的 4.队列是无界的 5.线程不安全,如果安全请使用PriorityBlockingQueue 6.是一个完全二叉树来实现的最小二叉堆(非子节点的值,不大于其左右子节点),所以使用数组进行存储(父子节点的关系可以通过公式进行计算)。 主要的方法 1. add() 和 offer() 插入方法 两种方法没有什么本质的区别,add()只是把offer()方法包装一下。 if (e == null) throw new NullPointerException(); modCount++; int i = size; if (i >= queue.length) grow(i + 1);//扩容 size = i + 1; if (i == 0) queue[0] = e;//队列为空的情况下,直接放入 else siftUp(i, e); //调整节点(该方法是主要的方法),在位置i处插入e,和e的父节点比较,直到该节点大于或等于其父级或者是根。 return true; 2.peek()获取元素 获取队列头元素,但不会删除 (size == 0) ? null : (E) queue[0]; 3.poll()获取元素

详细分析 Java 中实现多线程的方法有几种?(从本质上出发)

独自空忆成欢 提交于 2021-02-16 13:07:01
目录 详细分析 Java 中实现多线程的方法有几种?(从本质上出发) 正确的说法(从本质上出发) 经典错误说法(从本质上出发) 详细分析 Java 中实现多线程的方法有几种?(从本质上出发) 正确的说法(从本质上出发) 实现多线程的官方正确方法: 2 种。 Oracle 官网的文档说明 方法小结 方法一: 实现 Runnable 接口。 方法二: 继承 Thread 类。 代码示例 /** * <p> * 实现 Runnable 接口的方式创建线程 * </p> * * @author 踏雪彡寻梅 * @version 1.0 * @date 2020/9/7 - 00:34 * @since JDK1.8 */ public class RunnableStyle implements Runnable { @Override public void run () { System.out.println( "用 Runnable 方式实现线程~~~" ); } public static void main (String[] args) { Thread thread = new Thread( new RunnableStyle()); thread.start(); } } /** * <p> * 继承 Thread 类的方式创建线程 * </p> * * @author