- 博客(22)
- 收藏
- 关注
原创 redis五种数据类型
在后面的版本redis5.0中做出改进,根据字符串的长度,分成了五种类型,sdshdr5、8、16、32、64,并且sdshdr5是没有头部属性的(len和free),而其他的却多了一个flags字段,这是因为在一般情况下,小字符串更普遍,所以redis进一步压缩了sdshdr5的数据结构,将长度和类型放入了同一个属性(flags)中,用低三位来存储数据类型,高五位来存储长度,将ht[0]中的数据转移到ht[1]中,在转移的过程中,重新计算键的哈希值和索引值,然后将键值对放置到ht[1]的指定位置。
2023-07-26 17:15:00 560
原创 jvm垃圾回收篇
java语言与C/C++语言的区别,就在于垃圾收集技术和内存动态分配上,C/C++语言没有垃圾技术,需要程序员手动释放资源。垃圾收集,并不是java语言的伴生产物,早在1960年,第一门开始使用内存动态分配和垃圾收集技术的语言Lisp语言诞生。关于垃圾收集有三个经典的问题:那些内存需要回收?什么时候回收?如何回收?如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,java的垃圾收集技术仍然在不断演进中,不同大小的设备,不同特征的场景,对垃圾收集提出了新的挑战。
2023-07-24 16:11:25 655
原创 jvm(2)
简单来讲,一个native method就是一个java调用非java代码的接口,该方法的底层实现是非java代码,比如c语言代码,在定义一个native method时,并不提供实现体,像是定义一个接口,native可以和其他java标识符连用,但是abstract除外。 局部变量表和操作数栈是栈帧中用于存储方法执行过程中数据的重要部分,执行引擎根据程序计数器中的指令位置从字节码中读取指令,并根据指令操作数从局部变量表和操作数栈中取出数据执行相应操作,从而实现了方法的执行和程序的运行。
2023-07-22 09:15:00 101
原创 jvm(1)
对于程序在运行时的性能方面的管理的需要 架构师/高级程序员必须掌握的对于我们写代码时,是有帮助的,例如对内存的分布管理… 不同垃圾回收器的选择…让我们对java程序运行过程更加了解,为我们写出优质的代码做好准备 虚拟机是一种软件,是一种模拟的计算机环境,分为系统虚拟机(VMware)和程序虚拟机(JVM 只运行java程序).当一个方法执行完毕之后,要返回之前调用它的地方,因此在栈帧中必须保存一个方法返回地址。
2023-07-21 19:49:33 560 1
原创 java反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知 道这个类的所有属性和方法;对于任意一个对象,都能够调用 它的任意一个方法和属性;这种动态获取信息以及动态调用对 象的方法的功能称为java语言的反射机制。...
2022-07-16 22:00:00 102
原创 java泛型简述
java早期的Object类型可以接收任意的对象类型,但是在实际的使用中,有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
2022-07-15 22:00:00 660
原创 集合/容器
当我们需要保存一组一样(类型相同)的元素的时候,我们应该使用一个容器来存储,数组就是这样一个容器。但是 ,数组一旦定义,长度将不能再变化。然而在我们的开发实践中,经常需要保存一些变长的数据集合,于是,我们需要一些能够动态增长长度的容器来保存我们的数据。而我们需要对数据的保存的逻辑可能各种各样,于是就有了各种各样的数据结构。Java中对于各种数据结构的实现,就是我们用到的集合。结果:代码测试结果:List接口集合迭代迭代器遍历(iterator)Set接口Set接口继承了Collec
2022-07-13 21:09:10 363
原创 异常(java)
异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠 代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网 络是否始终保持通畅等等。异常的概念异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。Java程序在执行过程中所发生的异常(运行时一切不正常情况)事件可分为两类:Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资 源耗尽等严重情况。一般不编写针对性的
2022-01-21 21:56:19 115
原创 正则表达式(regex)(java)
正则表达式正则表达式,也叫规则表达式,使用一些特定的符号来制定一个规则,使用此规则与一个字符串进行模式匹配, 匹配成功返回true,否则返回false。有了正则表达式,我们就可以用很少甚至一行代码就可以把一些复杂的字符串组合进行匹配,而不需要用一连串的循环和条件语句。//典型的调用序列Pattern p = Pattern.compile("a*b");//定义一个规则,“*”表示左边的字符可以出现0次或多次Matcher m = p.matcher("aaaab");//输入内容boo
2022-01-20 22:05:30 1824
原创 API(Java笔记)
API(Java)API(Application Programming Interface)应用程序编程接口java语言中实际提供的类和接口API文档:对java中提供的类和接口中的功能进行说明的文档基本类型包装类Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类.包装类(如:Integer,Doubl
2022-01-19 20:52:10 410
原创 面向对象三大特征
面向对象的三大特征封装继承多态封装将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 。封装的具体表现:使用不同的访问权限public class Demo{ private String name; public String getName (){ return name; } public void setName(String name){ t.
2021-11-14 23:05:20 361
原创 面向对象笔记2
对象与引用 static关键字 代码块 包 访问权限修饰符 对象与引用 变量分类 基本类型:int double float boolean long short byte char 引用类型:数组、String、自定义的类 Java 语言中除基本类型之外的变量类型都称之为引用类型。 Java中的对象是通过引用对其操作的. 例:class Car{ String color; ...
2021-11-07 23:28:01 173 1
原创 java关键字
boolean:基本数据类型之一,布尔类型byte:基本数据类型之一,字节类型char:基本数据类型之一,字符类型double:基本数据类型之一,双精度浮点数类型float:基本数据类型之一,单精度浮点数类型int:基本数据类型之一,整数类型long:基本数据类型之一,长整数类型short:基本数据类型之一,短整数类型import:表明要访问指定的类或包void:声明当前成员方法没有返回值void getName(){ System.out.println(..
2021-11-06 16:23:02 146
原创 Java实现五子棋
设计一个五子棋,实现基本的落子和判断输赢功能初始化一个棋盘,并创建输出棋盘方法 选择谁先落子 创建落白子和黑子的方法 判断输入的棋子坐标是否超出棋盘或此处已有棋子 每次落完子输出棋盘并且判断输赢判断输赢基本思路:遍历每一个点,从每个点出发从横竖斜三个方向判断棋子是否有连续的五个(代码简洁但用时较多) 以刚刚落的棋子出发,从横竖斜三个方向判断棋子是否有连续的五个(代码繁琐但用时较少)这里采用后者代码实现:import java.util.Scanner;public clas..
2021-11-01 22:41:48 1113
原创 冒泡排序和选择排序(Java)
分析:主要运用循环嵌套冒泡排序:import java.util.Arrays;public class Bubbling_Sort {//冒泡排序 public static void main(String[] args) { int [] arr = new int[]{5,4,3,2,1}; //4 3 2 1 5第一趟 //3 2 1 4 5第二趟 //2 1 3 4 5第三趟 //1 2 ...
2021-10-30 23:34:55 142
原创 数组(Arrays)的声明和数组的基本操作(Java)
数组定义 数组是一种用于存储多个相同类型数据的存储模型 数组定义格式 格式一:数据类型 + [] + 变量名(推荐使用) 例:int [] arr 格式二:数据类型 + 变量名 + [] 例:int arr [] 数组初始化 动态初始化 初始化时至指定数组长度,由于系统为数组分配初始值 格式:数据类型 [] 变量名 = new 数据类型 [数组长度](new:为数组申请内存空间) int [] arr = new int[10...
2021-10-27 22:43:34 977
原创 银行账户余额操作(Java小白版)
要求:设计一个对银行账户余额操作的程序 假设账号: int account=11111 密码:int password=22222 余额:int balance=2020 密码输入错误数:int count=0; 进入程序需要输入账号密码,验证没有问题即可操作. 进入程序输出选择操作选项: 1.存款,2.取款,3.查询余额可多次重复操作分析:使用Scanner实现数据的交互式输入 使用switch语句实现分级选项菜单 使用while循...
2021-10-27 17:04:08 2179
原创 家庭收支记账软件(Java简易版)
设计一个 家庭收支记账软件 需求说明模拟实现基于文本界面的《家庭记账软件》 该软件能够记录家庭的收入、支出,并能够打印收支明细表。 项目采用分级菜单方式。主菜单如下:分析需要使用Scanner输入语句,if-else判断语句,while、for循环; 使用ArraysList容器来存储支出或收入的说明和金额;代码实现package hw;import java.util.ArrayList;import java.util.List;public cl...
2021-10-26 23:49:43 497
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人