- 博客(38)
- 收藏
- 关注
原创 Redis
主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。需要注意的是,AOF重写是把Redis进程内的数据转化为写命令,同步到新的AOF文件;AOF是文件形式存储的,文件有可能会出现问题,当AOF文件出错redis将无法正常启动,对于这个问题Redis提供了一个修复工具 redis-check-aof可对ADF文件进行修复,但会丢失一些Key值,这种丢失是可以接受的。
2023-08-24 11:58:44
107
原创 微服务架构基础知识
在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的 100%可用,如果单个服务出现问题,调用这个服务就会 出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。但该写法依旧会有问题,假设有两个线程,当第一个线程执行时间大于健的失效时间时,当执行到一半时锁释放,第二个线程获取到锁并执行,这时第一个线程执行完毕,并且执行了删除key这个步骤,但是他删除的是第二个线程所存储的的key值,这样会导致锁失效。
2023-08-17 20:42:09
191
原创 Mysql事务,锁机制,Sql优化
数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。在 MySQL。
2023-08-08 16:48:57
155
原创 JAVA Spring进阶
Spring Framework 的官方文档翻译一下:在Spring中,构成应用程序骨干并由Spring IoC容器管理的对象称为bean。bean是由Spring IoC容器实例化、组装和管理的对象。bean 是由 Spring IoC 容器实例化、组装和管理的对象。对于普通的 Java 对象,当创建对象后该对象就能够使用了。一旦该对象不再被使用,则由 Java 自动进行垃圾回收。
2023-07-19 22:00:29
52
原创 JAVA进阶(3)
虽然相对于静态代理,动态代理大大减少了我们的开发任务,同时减少了对业务接口的依赖,降低了耦合度。但是他仅支持interface的代理。
2023-07-17 18:48:30
43
原创 JAVA进阶(2)
里氏替换原则表明,在软件中将一个基类对象替换成它的子类对象时程序将不会产生任何错误和异常。通俗地说,对于里氏替换原则,我们可作如下表述:任何基类可以出现的地方,子类一定可以出现。所以,子类可以扩展父类的功能,但不能改变父类原有的功能。换句话说,子类继承父类时除添加新的方法完成新增功能外尽量不要重写父类的方法。
2023-07-13 19:09:10
51
原创 JAVA并发编程(3)线程池
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。在 Java 中可以通过线程池来解决此问题。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。在 JDK5 之前,我们必须手动实现自己的线程池,从 JDK5 开始,Java 内置支持线程池。
2023-07-12 17:33:31
54
原创 JAVA并发编程(2)
以保证 state 的 可见性, 同时虽然 volatile 能保证可见性,但不能保证原子性,所以 AQS 提 供了对 state 的原子操作方法,保证了线程安全。另外 AQS 中实现的 FIFO 队列其实是双向链表实现的,head 结点代表 当前占用的线程,其他节点由于暂时获取不到锁所以依次排队等待锁释放。队列由 Node 对象组成,Node 是 AQS 中的内部类。ReentrantLock 锁实现ReentrantLock 是基于AQS实现的 其中共有三个内部类,并且三个内部类是紧密相关的。
2023-07-08 18:44:03
60
原创 JVM基础知识(4)垃圾回收
1.java是支持自动垃圾回收的,2.在jvm中堆和方法区需要进行垃圾回收,3.一般没有被引用指向的对象成为垃圾,如下图 s在运行过程中被赋值为null 那么“aaa”就成为没有引用指向的对象4.垃圾回收是必要的 如果不及时清理这些垃圾对象,会导致5.再回收过程中还可以对内存碎片进行整理 以便分配内存给其他对象(有些对象必须连续空间存储 如数组)
2023-07-04 21:21:56
78
原创 JVM基础知识(3)方法区,本地方法接口,执行引擎
解释器: 将字节码逐行解释执行, 效率低编译器(JIT just in time 即时编译器): 将字节码编译,缓存起来,执行更高效。编译器会将一些频繁执行的热点代码进行编译,并缓存到方法区中,以后执行效率提高了.
2023-06-12 17:46:09
95
原创 JVM(2)运行时数据区
运行时数据区包括 1.程序计数器,2.本地方法栈,3.java虚拟机栈,4.java堆,5.方法区 下来我们来依次学习他们的作用。
2023-06-08 22:10:59
47
原创 解决项目部署到阿里云后无法发送邮件的问题
今天把写好的项目部署到阿里云服务器上 测试过程中发现无法正常发送邮件 查看日子发现以下错误。2.改配置文件端口为465,这个方便快捷。2 修改配置(输入时注意等级)原因:阿里云没有开放25端口。
2023-01-17 17:50:32
669
原创 Vue的安装和项目搭建
(最新版)/(以往版本)安装点击Install会在所选下载的位置文档中 看到node.js配置环境变量安装完毕后 输入 node -v命令 查看node是否安装配置正确输入npm -v 命令查看是否 安装 npm测试出现以下结果 说明安装配置完成(数字不同也可)
2022-11-11 18:53:32
349
原创 Vue框架
Vue是一套用于构建用户界面的渐进式框架. 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue.js 是前端的主流框架之一,和 Angular.js、React.js 一起,并成为前端三大主流框架Vue.js官网。
2022-11-11 17:48:49
10410
原创 JDBC基础知识
JDBC 是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,java开发人员只需要编写一次程序,就可以访问不同的数据库.
2022-08-30 21:08:37
226
原创 Java异常知识点
Java 异常概念Java程序在执行过程中所发生的异常(运行时一切不正常情况)事件可分 为两类:1.ErrorJava虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。一般不编写针对性的代码进行处理。其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如: 访问数组下标越界 试图读取不存在的文件 网络连接中断。...
2022-08-08 10:21:49
290
原创 MySQL数据库
数据库)为了方便数据的存储和管理,它将数据按照特定的规则存储在磁盘上,就是一个存储数据的仓库。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。数据库的相关概念DB数据库存储数据的容器,它保存了一系列有组织的数据。DBMS数据库管理系统又称为数据库软件或数据库产品,用于创建或管理DB。SQL结构化查询语言用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言。...
2022-07-21 10:34:24
71
原创 JAVA Lambda和Stream
Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda表达式可以使代码变的更加简洁紧凑。不需要声明参数类型,编译器可以统一识别参数值。一个参数无需定义圆括号,但多个参数需要定义圆括号。如果主体包含了一个语句,就不需要使用大括号。如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。...
2022-07-18 17:25:43
484
原创 JAVA GUI
GUI基本介绍1.GUI是什么?GUI的全称为GraphicalUserInterface,图形化界面或图形用户接口,是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求5.事件处理6.内部类。......
2022-07-17 19:48:27
265
原创 JAVA 线程基础知识
继承Thread类重写里面的run();方法,将所要执行的任务写入run方法。在main()方法中调用run方法 实现Runnable接口的方式实现Runnable接口的方式 Runnable接口中仅仅只有run()一个抽象方法: 也可以通过实现Runnable接口的方式来实现线程,只需要实现其中的run方法即可; Runnable接口的存在主要是为了解决Java中不允许多继承的问题Thread中的常用方法:start(); 启动线程 并行:多个CPU同时执行多
2022-07-16 18:24:50
124
原创 JAVA IO的基本概念及File的常用方法
IO以流为主对数据进行输入输出操作叫做IO流;从数据流编码格式上可将IO流划分为流分为字符流和字节流字节流:
2022-07-11 20:28:13
332
2
原创 Java 集合知识汇总
当我们需要保存一组类型相同的数据时,我们想到的是数组,但数组的缺点是一旦长度确认就无法改变。而集合解决了这一问题集合是一种存储相同数据且长度可自行改变的一种容器
2022-07-11 17:50:27
119
原创 JAVA 面向对象基础知识
对象与引用首先定义一个Person类,它有name和age两个属性。public class Person { private String name; private int age; public Person(String name, int age){ this.name =name; this.age = age; }}创建一个对象:Person p1 = new Person(
2022-05-28 15:47:25
2218
原创 定义一个中国银行类 要求实现 注册账号,存款、取款、查询余额功能。
属性:账号、密码、余额,银行名称。方法:注册账号,存款、取款、查询余额。 创建该类对象并测试import java.util.Scanner;public class Bank { int Zhanghao; int mima; int yue = 1000; String bankname; Scanner c = new Scanner(System.in); public void Chuangjian() //创建账号{ ..
2022-05-21 18:01:14
430
原创 JAVA基础知识——数组
声明数组变量首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:int a[];或int []a;创建数组Java语言使用new操作符来创建数组,语法如下:arrayRefVar = new dataType[arraySize];...
2022-05-13 19:57:14
1215
原创 家庭收支查询
写一个家庭收支明细记账软件1.收支明细2.登记收入 3.登记支出 4.退出假设生活基金为10000元;记录每次支出/收入明细,并记录下来,以便下次查询;import java.util.Scanner;public class jtsz { public static void main(String[] args) { String c = ""; Scanner sc = new Scanner(System.in); .
2022-04-26 11:17:15
93
原创 java 基本数据类型 运算符 条件语句 循环 方法
java数据类型:Java 语言的数据类型分为两种:基本数据类型和引用数据类型。(1) 基本数据类型包括 boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和 double (双精度浮点型)共 8 种。所有的基本数据类型的大小(所占用的字节数)都已明确规定,在各种不同的平台上保持不变,这一特性有助于提高 Java 程序的可移植性。(2) 引用数据类型建立在基本数据类型的基础上,包括数组、类......
2022-04-26 11:13:02
662
原创 根据指定月份,打印该月份所属的季节
3,4,5春季678夏季91011秋季12,1,2冬季import java.util.Scanner;public class yuefen { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a= sc.nextInt(); if (a==3||a==4||a==5) { ...
2022-04-22 18:06:45
400
原创 编程一个程序,计算今天是今年的第几天
例如: 输入年 2022 输入月 4 输入天 17由于2月份的特殊性所以需判断输入年份是否为闰年。1.判断某一年是否为闰年通过Scanner输入一个年份,然后判断概念是否是闰年闰年判断标准(满足任何一个)1.如果能够被4整除&&但是不能被100整除2.能够被400整除import java.util.Scanner;public class dijitian { public static void main(String[] args) { ...
2022-04-22 18:02:31
861
原创 狗狗的年龄
我家的狗5岁了,5岁的狗相当于人的多大呢?,其实狗的前两年,每一年相当于人的10.5岁,之后每增加一岁就增加4岁,那么5岁的狗相当于人的年龄就应该是10.5+10.5+4+4+4=33岁.编写程序获取用户输入狗的年龄(整数),通过程序输出显示相当于人的年龄.如果为负数请提示.mport java.util.Scanner;public class llj{ public static void main(String[] args) {int b=0; Scanner
2022-04-22 17:57:05
152
原创 设计一个对银行账户余额操作的程序
假设账号:intaccount=666666密码:intpassword=111111余额:intbalance=1000进入程序输出选择操作选项:1.存款,2.取款,3.查询余额要求使用Scanner交互式操作.存款,取款,查询均需要输入账号密码,验证没有问题即可操作.可以多次重复操作mport java.util.Scanner;public class dje{public static void main(String[] a...
2022-04-22 17:40:38
251
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人