
Java
文章平均质量分 91
Java相关知识
nerve_23
坚持学习记录
展开
-
java常用类介绍
种子数是随机数生成器的初始值,决定了随机数生成序列的起点。只是随机算法的起源数字,和生成的随机数字的区间无关。(使用相同的种子数创建多个Random对象,这些对象生成的随机数序列将完全相同)(适用于需要每次运行时生成不同随机数序列的场景,如模拟实验、游戏开发)(适用于需要可重复生成相同随机数序列的场景,如科学计算、算法测试)(每次调用时由于时间在变化,因此生成的随机数序列也会不同)②无参:使用当前时间的毫秒值作为种子数。①有参:通过指定种子数进行创建。原创 2024-10-30 14:34:31 · 182 阅读 · 0 评论 -
JVM(面试用)
虚拟机是指软件模拟的具有完整功能的、运行在一个完全隔离的环境中的完整计算机系统常见的虚拟机:JVM、VMwave、Virtual BoxJVM是一台被定制过的现实当中不存在的计算机一个运行起来的Java进程就是一个JVM虚拟机,就需要从操作系统申请一大块内存就会把这个内存划分成不同的区域,每个区域都有不同的作用。原创 2024-08-06 23:56:56 · 842 阅读 · 0 评论 -
Ubuntu配置项目环境
为了保护你的服务器安全,云服务器厂商就对哪些端口能够访问做出限制,默认情况下就只有22(xshell登录时使用端口)和3389(Windows的服务器的远程桌面)能够访问。当把程序放到云服务器上执行,程序访问的就是云服务器上的数据库了,需要确保数据库里面有数据(有表有库)注意这里进行JDBC访问mysql的密码就要是云服务器上mysql的访问密码,而不是本地主机上的。1、登录到云服务器得后台,找到对应的机器,查看详情,选择防火墙标签页。5)登录mysql(默认安装之后不需要密码就可登录)原创 2024-08-01 20:07:59 · 1118 阅读 · 0 评论 -
应用层的重点协议
HTTP工作过程中涉及到的密钥有3组:第一组(非对称加密):用于校验证书是否被篡改。服务器持有私钥(私钥在注册证书时获得),客户端持有公钥(操作系统包含了可信任的CA认证机构有哪些,同时持有对应的公钥)。服务器使用这个私钥对证书签名进行加密。客户端通过这个公钥解密获取到证书的签名,从而校验证书内容是否被篡改过第二组(非对称加密):用于协商生成对称加密的密钥。服务器生成这组私钥-公钥对,然后通过证书把公钥传递给客户端。原创 2024-07-21 21:41:51 · 1097 阅读 · 0 评论 -
数据链路层重点协议
目的主机接收到广播的ARP请求发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。双方在发送SYN时会在TCP头部写入自己能支持的MSS值,然后双方得知对方的MSS值之后,选择较小的作为最终MSS。最理想的情况下,MSS的值正好是在IP不会分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)MTU相当于发快递时对包裹尺寸的限制,这个限制是不同的数据链路对应的物理层产生的限制。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网、无线LAN网。原创 2024-07-16 14:18:56 · 693 阅读 · 0 评论 -
网络层重点协议—IP协议
在复杂的网络环境中确定一个合适的路径。原创 2024-07-13 23:12:40 · 449 阅读 · 0 评论 -
传输层重点协议
负责数据能够从发送端传输接收端。原创 2024-07-13 14:54:21 · 939 阅读 · 0 评论 -
关于网络编程
指网络上的主机,通过不同的进程以编程的方式实现网络通信(网络数据传输)原创 2024-05-30 19:57:50 · 1030 阅读 · 0 评论 -
超级初始网络
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。IP地址和端口号可以定位到网络中唯一的一个进程,计算机之间的传输媒介是光信号和电信号,通过”频率“和”强弱“来表示1和0这样的信息。一般的家用路由器,常见的有5个网口,要想让这几个电脑在同一个局域网上网,就要把他们连接到Lan口,Wan口是用来连上级的路由器的。网游打破了局域网的限制,成就了广域网对战-“传奇”(网游系列的开山之作)“PK”原创 2024-05-25 14:16:31 · 898 阅读 · 0 评论 -
龟兔赛跑(基于GUI与多线程实现)
直击龟兔赛跑现场下面这张图是我们设计龟兔赛跑界面的初始效果与基本组成结构:接下来是我仅代表我个人提出的一些疑问与解答:其实在这里两个动物类就像标签一样标签组件是什么?用于短文本字符串或图片显示固定提示信息。下面给出这个初始界面的代码与效果图:2、多线程实现俩小动物比赛在上面的代码中,我们把兔子乌龟都定为标签类,但是俩东西参加比赛,是要同时参与比赛过程的,这里要利用多线程实现,也就是兔子、乌龟这俩标签要在比赛过程中(进程)移动,他俩的行为都属于这个进程(比赛)中的俩线程。我们知道线程的创建方式有很多原创 2024-05-11 20:27:47 · 855 阅读 · 0 评论 -
GUI-图形化的用户界面
所谓GUI,即图形化的用户界面/接口(Graphical User Interface),实现了采用图形方式显示的计算机操作用户界面。比如下面的QQ登录界面:为了不被落下,Java依旧稳定发挥,它也提供了一套可以轻松构建GUI的工具,将GUI界面封装为类,其中若干类放在了java.awt包和javax.swing包内:java.awt(抽象窗口工具包)依赖于本地操作系统的GUI,缺乏平台独立性,属重量级控件包中主要包括界面组件、布局管理器、事件处理模型及图形和图像工具...java.swing。原创 2024-05-09 19:33:04 · 1469 阅读 · 0 评论 -
区区多线程...面试题
Servlet本身是工作在多线程环境下,若在Servlet中创建了某个成员变量,此时若有多个 请求到达服务器,服务器就会多线程进行操作,是可能出现线程不安全的情况的。在创建线程的同时需要指定线程完成的任务,可以直接重写Thread的run()方法,也可以使 用Runnable来描述这个任务。堆区就是多个线程之间共享的,只要把数据放到堆内存中,就可以让多个线程都能访问到。synchronized加在非静态方法上相当于针对当前对象加锁。原创 2024-04-28 21:41:50 · 430 阅读 · 2 评论 -
多线程(六)
可以看出,上述代码需要一个辅助类Result,还需要一系列的加锁和wait、notify操作,代码复杂,容易出错;比如我们知道的StringBuffer中的方法都是加了锁的,这里只是在单线程下使用,但append()方法每次调用都要加锁解锁,这没必要,浪费了大量的资源开销,这下就要给锁消除了...使用细粒度锁,是期望释放锁时其它线程可以使用,这样能够并发执行的逻辑更多,更有利于充分利用多核cpu资源,但是也有可能。Semaphore的PV操作的加减计数器都是原子的,可以在多线程环境下直接使用。原创 2024-04-28 20:40:14 · 1602 阅读 · 1 评论 -
多线程—CAS(五)
可以引入版本号version,约定每次修改余额version++,此时在使用CAS判定时,就不是直接 判定数值了,而是判定版本号,看版本号是否变化:若版本号不变,则表示没有其他线程穿插执行。全称Compare-And-Swap,即“比较并交换”,相当于一个原子的操作,同时完成“读取内存,比较是否相等,修改内存”这三个步骤,本质上需要cpu指令的支持。当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线程只会收到操作失败的信号。CAS则是通过重试的方式避免穿插执行。原创 2024-04-26 18:14:08 · 738 阅读 · 1 评论 -
多线程基础(一)
执行 isInterrupt() 方法将标志位改为true,线程被唤醒,sleep()抛出InterruptedException异常,但sleep()方法又同时自动清除刚才的标志位,又改回false,循环又继续执行,线程就又无法结束。而start()方法会启动一个新的线程,并在新的线程中异步执行run()方法中的指令,而当前线程会继续执行后续的代码,这就实现了并发执行的效果;所以实际在Java的线程中,直接调用run()方法 和 调用start()方法的主要区别在于线程的执行方式。原创 2024-04-06 16:37:50 · 651 阅读 · 1 评论 -
多线程—锁策略(四)
按照之前对锁的设定,第二次加锁的时候,就会阻塞等待,直到第一次的锁被释放,才能获取到第二个锁,但是释放第一个锁也是由该线程完成的,结果这个锁没有解锁反而又加锁,这也就无法进行解锁操作,这时候就会死锁。若调用increase2( ),则increase()先加了一层锁,在increase2里又调用increase(),这就又加了一层锁,但是上个锁还没释放。一旦该线程锁之后,接下来哪个线程能拿到锁?若线程t1加锁时,发现锁已被占用,而这个占用者正是自己,这时是仍可以获取到锁的,并且让计数器自增;原创 2024-04-24 20:57:52 · 868 阅读 · 0 评论 -
多线程基础—案例(三)
这个时候就可以把这些请求 都放到一个阻塞队列中,然后再由消费者线程慢慢的来处理每个支付请求。这种饿汉模式即便是在多线程的情况下也是线程安全的,因为它在类加载的时候就已经创建了实例,后续只能通过getinstance获取对象,而即便多个线程同时调用getinstance也只是都在进行读取操作,这显然是非常安全的。上面我们已经说了,线程安全问题只会出现在首次创建对象的时候,实例一旦创建好了,后面在多线程环境调用getinstance就不再修改instance了,而只是读取返回,这是线程安全的。原创 2024-04-24 12:57:37 · 1622 阅读 · 0 评论 -
多线程—线程安全(二)
比如说ATM,一个人取款发现里面没钱了,那他得等人来把钱放进去才能有钱,这时候为了避免让他近水楼台先得月一直在那里跟后面的人排队竞争,让他wait(不让他参与排队直接让他在旁边等人放钱进去),让后面的人进行存款业务,等ATM里面有钱了再叫他去取款,这样存款的人跟取款的人都不会饿死。按照之前对锁的设定,第二次加锁的时候,就会阻塞等待,直到第一次的锁被释放,才能获取到第二个锁,但是释放第一个锁也是由该线程完成的,结果这个锁没有解锁反而又加锁,这也就无法进行解锁操作,这时候就会死锁。但可惜的是,寄存器贵。原创 2024-04-20 16:42:10 · 734 阅读 · 0 评论 -
JDBC — Java的数据库编程
JDBC(Java Database Connectivity,数据库连接)是用于执行SQL语句的Java API,是Java中的数据库连接规范,由java.sql.*、javax.sql.*包中的类和接口组成,为Java开发者提供标准API以统一方式访问多种关系数据库工作原理:作为特定厂商数据库访问API的高级抽象,为多种关系数据库提供统一访问方式,包含通用接口类JDBC访问数据库层次结构:优势在于Java访问数据库操作完全面向抽象接口编程,开发不受特定数据库厂商API限制,程序的可移植性强。原创 2024-04-04 13:10:37 · 997 阅读 · 1 评论 -
文件操作 — IO
方法返回值类型方法签名说明intread()返回0~255之间的数据(一个字节byte),返回-1表示读到文件末尾int最多读取b.length字节的数据到b中,返回实际读到的数量intvoidclose()关闭字节流while (len!=-1) {方法返回值类型方法签名说明void写入要给字节的数据void将b这个字符数组中的数据全部写入os中intvoidclose关闭字节流void。原创 2024-03-08 22:16:42 · 693 阅读 · 1 评论