赞
踩
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
java语言是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言,是一种面向Internet的编程语言。
Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。applet使用现代的图形用户界面与Web用户进行交互。 applet内嵌在HTML代码中。
随着Java技术在Web层面的不断成熟,已经称为Web应用程序的首选开发语言。
java语言的三个平台版本:
JavaSE: Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础
JavaME: Java 语言的(小型版),用于嵌入式消费类电子设备
JavaEE: Java 语言的(企业版),用于 Web 方向的网站开发
与C语言不同,Java是一种面向对象编程的语言,他的底层借鉴了C++语言但又不是完全相同,Java语言并不支持多继承、指针、go to 语句、操作符重载、头文件等,但其语法基于C语言,免去了预处理操作。
Java语言是一个面向对象的语言,基本思想是使用对象、类、封装、继承、多态等概念进行程序设计。每一个物体都可以成为一个对象,其本身具有唯一性,有各自不同的变化状态,对Java来说,现有类,才有对象,对象是类实例化后的产物。
不同于其他语言,Java优点在于自身的跨平台和可移植性,在Java环境安装好后,会自带一个Java的虚拟机,它可以屏蔽掉不同操作系统之间的差异,实现了跨平台运行Java程序。
在我们实际编写项目中通常会用到一些Java中间件,像网关、缓存、负载均衡、数据库、分布式架构等方面都有涉及,这都可以较快提高我们项目的性能,同时Java可以通过虚拟机来优化提升运行效率。
分布式系统是由多个互通节点组成在一起的系统,主要有增加系统容量、加强系统可用、扩展性高、通过服务模块的拆分提升相应效率、团队协作流程得到改善等优点。基于Java自身可以实现信息之间的通信,通常使用TCP/IP异步通信可以达到分布式的效果。
Java中的动态性主要体现在反射机制、动态字节码操作、动态编译、执行其他脚本编码等方面,在后期建立各模块之间的互通,这就意味着在现有的应用程序下可以实现各模块之间的互连。
一个进程可以启动多个线程,例如:我们可以将火车站看作一个进程而其中的每一个售票窗口可以看作一个线程,每一个线程都有一个单独的栈空间,栈与栈之间互不干扰,各自执行各自的线程并发。
Java安全措施主要体现在面向对象的规范上,主要包括:封装数据细节,只提供接口给用户、在Java除了基本类型的操作外都是引用的操作、数组边界检查、强制类型转换和语言对线程的支持。
在Java中有一种机制:自动垃圾回收机制(GC机制),Java虚拟机负责调动该机制,不需要编码者过多的干涉。
我们知道java有跨平台的特性,即一次编译处处运行,其实质是jvm在编译java代码时,会将代码编译成.class的字节码文件,只要在不同的环境中安装对应的JDK(其中包含jvm),我们就可以运行程序了。
其实java虚拟机不仅可以支持java语言,对于其他语言,我们都可以通过把它转换成字节码文件,最后转换的字节码文件都能通过Java虚拟机进行运行和处理。随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。
Java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件。也就是说Java虚拟机拥有语言无关性,并不会单纯地与Java语言“终身绑定”,只要其他编程语言的编译结果满足并包含Java虚拟机的内部指令集、符号表以及其他的辅助信息,它就是一个有效的字节码文件,就能够被虚拟机所识别并装载运行。
我们平时说的java字节码,指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。
不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式——Class文件格式所关联,Class文件中包含了Java虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他辅助信息。
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位 (bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,
通常用大写字母”B”表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,其换算单位如下:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数类型 | byte | 1 | -128~127 |
short | 2 | -32768-32767 | |
int(默认) | 4 | -2的31次方到2的31次方减1 | |
long | 8 | -2的63次方到2的63次方减1 | |
字符型 | float | 4 | |
double(默认) | 8 | ||
字符类型 | char | 2 | 0-65535 |
布尔类型 | boolean | 1 | |
e35表示的是乘以10的38次方,同样e-45表示乘以10的45次方,在java中整数默认是int类型 |
成员变量(方法外、类内)的声明格式:
【访问修饰符】【类型修饰符】<数据类型>变量名
访问级别 | 访问控制修饰符 | 同类 | 同包不同类(不含子类) | 同包子类 | 不同包不同类 | 不同包子类 |
---|---|---|---|---|---|---|
公开 | public | ✓ | ✓ | ✓ | ✓ | ✓ |
受保护 | protected | ✓ | ✓ | ✓ | × | ✓(注意) |
默认 | 没有访问修饰符 | ✓ | ✓ | ✓ | × | × |
私有 | private | ✓ | × | × | × | × |
注:成员变量通常设置为private,然后在设置一些public权限的方法来设置、获取成员变量的值,防止由对象直接访问变量导致数据的错误、混乱或安全性问题。
在Java中,构造方法(Constructor)是一种特殊类型的方法,用于初始化对象
String内部是一个使用final修饰修饰的字符数组,所以不可变
为何这样设计:
安全性:字符串经常用于存储敏感信息,如网络连接的用户名、密码、URL等。如果字符串是可变的,那么这些信息可能会被恶意修改,从而导致安全问题。
线程安全:由于字符串是不可变的,所以它们在多线程环境中是安全的,不需要额外的同步。
哈希码缓存:字符串是哈希映射(如HashMap和HashSet)中常用的键类型。由于字符串的内容不会改变,所以它们的哈希码可以被缓存,而不需要每次使用时都重新计算。这可以提高哈希映射的性能。
字符串池:Java虚拟机(JVM)维护了一个特殊的内存区域,称为字符串池(String Pool)。当你创建一个字符串字面量(如"Hello")时,JVM首先会检查字符串池中是否已经存在该值。如果存在,JVM将返回对现有字符串的引用;否则,JVM将在字符串池中创建一个新的字符串。这种技术可以节省内存,因为相同的字符串字面量只需要存储一次。
从源码角度来看:String类的不可变性主要体现在其内部使用了一个私有的、最终的字符数组来存储其值,并且没有提供修改这个数组的方法。这意味着一旦一个String对象被创建,其内部的字符数组就不能被改变了。
字符串常量池又称为字符串池,全局字符串池(Spring Pool)。在工作中,String类是我们使用频率非常高的一种对象类型。JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维护了一块特殊的内存空间,就是字符串常量池。字符串常量池由String类私有保护。
/** * Returns a canonical representation for the string object. * <p> * A pool of strings, initially empty, is maintained privately by the * class {@code String}. * <p> * When the intern method is invoked, if the pool already contains a * string equal to this {@code String} object as determined by * the {@link #equals(Object)} method, then the string from the pool is * returned. Otherwise, this {@code String} object is added to the * pool and a reference to this {@code String} object is returned. * <p> * It follows that for any two strings {@code s} and {@code t}, * {@code s.intern() == t.intern()} is {@code true} * if and only if {@code s.equals(t)} is {@code true}. * <p> * All literal strings and string-valued constant expressions are * interned. String literals are defined in section 3.10.5 of the * <cite>The Java™ Language Specification</cite>. * * @return a string that has the same contents as this string, but is * guaranteed to be from a pool of unique strings. */ public native String intern();
由源码可知,String.intern()是一个native方法,注释大致意思是:如果常量池中存在当前字符串,就会直接返回当前字符串,如果常量池中没有此字符串,会将此字符串放入常量池中,然后返回。
多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持能够在同一时间执行多个线程,提升性能。
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。