自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Redis的java客户端

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网:https://spring.io/projects/spring-data-redis。尽管方式一可以满足我们的需求,但依然存在一些问题,为了在反序列化时知道对象的类型,JSON序列化器会将类的class类型写入JSON结果,存入Redis,会带来额外的内存开销。redisTemplate.opsForValue().set("name" ,"李四");

2023-10-18 16:59:11 53

原创 Redis常见数据类型及常用命令

SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。其value是字符串,不过根据字符串的格式不同,又可以分为三类:普通字符串(String)、整数类型(int)可以做自增自减、浮点类型(float)可以自增自减。Redis共有16个数据库0-15,5种常见数据结构,分别字符串(String)、列表(List)、集合(Set)、哈希(Hash)、有序集合(SortedSet)。(五)有序集合(SortedSet)

2023-09-23 16:00:00 61

原创 RedisDesktopManager-Windows图形化管理工具安装教程

RedisDesktopManager-Windows图形化管理工具安装教程

2023-09-22 13:34:57 102

原创 垃圾回收相关知识

垃圾收集器的作用垃圾收集器是为了保证程序能够正常、持久运行的一种技术,它是将程序中不用的死亡对象也就是垃圾对象进行清除,从而保证了新对象能够正常申请到内存空间。中,所有的对象都是要存在内存中的(也可以说内存中存储的是一个个对象),因此我们将内存回收,也可以叫做死亡对象的回收。也需要暂停应用程序的执行,它会标记从根对象出发,在根对象的第一层孩子节点中标记所有可达的对象。对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段稍长一些,但远比并发标记的。垃圾回收器在清除实例所占用的内存空间后,还会做内存压缩。..

2022-07-30 10:15:00 119 1

原创 JVM 类加载及双亲委派模型

如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去完成加载。虚拟机将常量池内的符号引用替换为直接引用的过程,也就是初始化常量的过程。类的话,那么程序运行的时候,系统就会出现多个不同的。对象,作为方法区这个类的各种数据的访问入口。)过程中的一个阶段,它和类加载。...

2022-07-29 14:10:55 191

原创 TCP/IP协议详解

如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送端继续发送,就会造成丢包,继而引起丢包重传等等一系列连锁反应。协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。对于变长的包,还可以在包和包之间使用明确的分隔符(应用层协议,是自己来定的,只要保证分隔符不和正文冲突即可);机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据;对于变长的包,可以在包头的位置,约定一个包总长度的字段,从而就知道了包的结束位。..

2022-07-16 22:28:54 3679

原创 “从输入URL到展示出页面“ 这个过程发生了什么

从输入url按下回车后,我们进入了第一步就是 DNS 解析过程,首先需要找到这个 url 域名的服务器 ip,为了寻找这个 ip,浏览器首先会寻找缓存,查看缓存中是否有记录缓存的查找记录为:浏览器缓存 -> 系统缓存 -> 路由器缓存,缓存中没有则查找系统的 hosts 文件中是否有记录。如果没有缓存则查询 DNS 服务器,得到服务器的 ip 地址后,浏览器根据这个 ip 以及相应的端口号发送连接请求;如果DNS服务器中没有解析成功,他会向上一步获得的顶级DNS服务器发送解析请求。这个连接请求到达服务器

2022-07-14 09:15:00 161

原创 网络原理基础

网络互连随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。网络互连:将多台计算机连接在一起,完成数据共享。数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。根据网络互连的规模不同,可以划分为局域网和广域网。局域网LAN局域网,即 Local Area Network,简称LAN。Local 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间

2022-07-13 09:00:00 83

原创 Cookie 和 Session

Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。由于http协议是一种无状态的协议(客户端和服务端互相不认识)Cookies是一些存储在用户电脑上的小文件。它是被设计用来保存一些站点的用户数据,这样能够让服务器为这样的用户定制内容。页面代码能够获取到Cookie值然后发送给服务器,比如Cookie中存储了所在地理位置,以后每次进入地图就可以默认定位

2022-07-12 08:15:00 210

原创 HTTP和fiddler

1.HTTP 是什么?HTTP (全称为 "超⽂本传输协议") 是⼀种应⽤⾮常⼴泛的应⽤层协议.HTTP 诞⽣与1991年. ⽬前已经发展为最主流使⽤的⼀种应⽤层协议,我们平时打开⼀个⽹站, 就是通过 HTTP 协议来传输数据的。当我们在浏览器中输⼊⼀个 搜狗搜索的 "⽹址" (URL) 时, 浏览器就给搜狗的服务器发送了⼀个 HTTP 请求, 搜狗的服务器返回了⼀个 HTTP 响应。这个响应结果被浏览器解析之后, 就展示成我们看到的⻚⾯内容. (这个过程中浏览器可能会给服务器发送多个 HTT

2022-07-11 11:13:04 234

原创 CSS选择器

1.选择器的功能选中页面中指定的标签元素,要先选中元素, 才能设置元素的属性。2.选择器种类常见选择器:● 标签选择器● 类选择器● id选择器● 通配符选择器2.1 标签选择器特点: ● 能快速为同⼀类型的标签都选择出来。● 但是不能差异化选择。<style> p { color: red; }div { color: green; }</style> <p&gt...

2022-05-28 22:04:33 79

原创 线程池 ---线程池的创建及ThreadPoolExecutor的七个参数

1.线程池是什么?线程池(ThreadPool)是⼀种基于池化思想管理和使⽤线程的机制。它是将多个线程预先存储在⼀个“池⼦”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池⼦”内取出相应的线程执⾏对应的任务即可。2.为什么要用线程池?1. 降低资源消耗:通过池化技术重复利⽤已创建的线程,降低线程创建和销毁造成的损耗。 2. 提⾼响应速度:任务到达时,⽆需等待线程创建即可⽴即执⾏。 3. 提⾼线程的可管理性:线程是稀缺资源,如果⽆限制创建,不仅会消耗系统资源,还

2022-04-22 16:15:59 935

原创 wait和sleep的区别

wait使用wait 执⾏流程: 1.使当前执⾏代码的线程进⾏等待. (把线程放到等待队列中) 2.释放当前的锁 3.满⾜⼀定条件时被唤醒, 重新尝试获取这个锁. wait 要搭配 synchronized 来使⽤. 脱离 synchronized 使⽤ wait 会直接抛出异常. wait 结束等待的条件: 1.其他线程调⽤该对象的 notify ⽅法. 2.wait 等待时间超时 (wait ⽅法提供⼀个带有 timeout 参数的版本, 来指定等待时间). 3

2022-04-20 21:03:19 354

原创 快速入门之MySQL(七) ---JDBC 编程

1.程序是怎么操作数据库的?使⽤程序只所以能操作数据库,主要是因为数据库⼚商提供了操作的 API,也就是数据库驱动,驱使数据库⾏动起来,就是数据库驱动,不光是程序,向我们之所以能通过命令⾏操作 MySQL,也是因为MySQL 的数据库驱动。2.什么是 JDBC?JDBC 定义 JDBC,即 Java Database Connectivity,Java 数据库连接。是⼀种⽤于执⾏ SQL 语句的 Java API,它是 Java 中的数据库连接规范。这个 API 由 java.sql.*,j

2022-04-19 13:01:27 211

原创 快速入门之MySQL(六) ---事务(附重点:事务隔离级别)

一.什么是事务?事务(Transaction)是将⼀组操作封装成⼀个执⾏单元(封装到⼀起),这⼀个执⾏单元要么⼀起执⾏成功,要么⼀起失败,不会出现执⾏“⼀半”的情况。 二.为什么⽤事务?以银⾏转账为例,A 给B转账 ,如果执⾏了⼀半,断点了或者程序崩溃了,那么 A 账号的钱就永久消失了?那怎么办?⽤事务就可以解决,封装成⼀个执⾏单元,要么⼀起成功,要么⼀起失败。 三.事务怎么⽤?事务的使⽤步骤有三个: 1. 开启事务(start transaction)。 2. 执⾏多条 SQL

2022-04-14 23:05:58 74

原创 快速入门之MySQL(五) ---索引

1.什么是索引索引是⼀种特殊的⽂件,包含着对数据表⾥所有记录的引⽤指针。可以对表中的⼀列或多列创建 索引,并指定索引的类型,各类索引有各⾃的数据结构实现。2.为什么需要索引数据库中数据存储在磁盘,磁盘的顺序查询速度是很慢的,所以的顺序查找指的是读取磁盘中的数据⼀条⼀条的进⾏查找。索引可以提⾼查询效率,所以每个表中都会有索引。 3.索引的作⽤ ● 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍⽬录的关系。 ● 索引所起的作⽤类似书

2022-04-02 10:03:38 1353

原创 快速入门之MySQL(四)---⾼级SQL查询

1. 聚合查询 1.1 COUNT 函数(返回查询到的数据的条数。)统计班级共有多少同学:SELECT COUNT(*) FROM student;1.2SUM 函数 (返回查询到的数据的总和,不是数字没有意义。)统计数学成绩总分:SELECT SUM(math) FROM exam_result;1.3AVG 函数 (返回查询到的数据的平均值,不是数字没有意义。)统计平均总分:SELECT AVG(chinese + math + english) ..

2022-04-01 12:43:53 2307

原创 快速入门之MySQL(三)---表约束与表设计

1.什么是表约束表约束是在创建表的时候,设计⼀些表的约束条件,⽤来保证数据的合法性和数据的正确性。2.常⻅约束2.1 NOT NULL:⾮空约束,指示某列不能存储 NULL 值具体使⽤:CREATE TABLE student ( id INT NOT NULL, name VARCHAR(250));2.2 UNIQUE:唯⼀约束,保证某列的每⾏必须有唯⼀的值具体使⽤:CREATE TABLE student_unique ( id INT unique, n

2022-03-31 12:51:50 629

原创 快速入门之MySQL(二)---初级增删改查

(一)添加1.1全列添加1.1.1⼀次添加⼀条 insert into score values(1,'张三'); 1.1.2⼀次添加多条 insert into score values (2,'李四'), (3,'王五'); 1.2指定列添加 ⼀次添加⼀条:insert into score(id,name) values(4,'可可'); ⼀次添加多条 :insert into score(id,name) values(5,'乐.

2022-03-30 12:40:21 535

原创 快速入门之MySQL(一)

1. 数据库的基础操作 1.1 显示当前的数据库 SHOW DATABASES; 1.2 创建数据库 create database [数据库名] 1.3 切换数据库use [数据库名] 1.4 删除数据库drop database [数据库名] 1.5查询所有数据库show databases 1.6查询当前所在数据库select database();2.MySQL 数据类型 2..

2022-03-29 12:24:07 2875

原创 Java 线程的几种状态及线程安全问题

所有线程状态 :public class Test { public static void main(String[] args) { for (Thread.State item : Thread.State.values()) { System.out.println(item); } }}NEW:线程被创建,调用start()前;RUNNABLE:运行状态;BLOCKED:阻塞,线程进入等待状态;WAI.

2022-03-29 10:38:25 392 1

原创 实现多线程数组求和.

给定一个很长的数组 (长度 1000w), 通过随机数的方式生成 1-100 之间的整数.实现代码, 能够创建两个线程, 对这个数组的所有元素求和.其中线程1 计算偶数下标元素的和, 线程2 计算奇数下标元素的和.最终再汇总两个和, 进行相加记录程序的执行时间public class ThreadDemo11 { public static void main(String[] args) throws InterruptedException, ExecutionExce

2022-03-28 10:33:29 768

原创 Thread 类的基本用法

1.线程创建(1)继承Threadpublic class ThreadDemo1 { public static void main(String[] args) { Thread thread=new MyThread(); thread.start(); }}class MyThread extends Thread{ public void run(){ System.out.println("hello");

2022-03-28 10:16:34 503

原创 进程和线程

进程:进程是表示资源分配的基本单位线程:线程是处理机调度的基本单位一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程可以共享,进程不可共享线程的构造方法:public Thread() :分配一个新的线程对象public Thread(String name) :分配一个指定名字的新的线程对象public Thread(Runnable target) :分配一个带有指定目标新的线程对象public Thread(Runnable target,Str

2022-03-27 17:24:53 107

原创 七大排序算法

package work;import java.util.Random;public class SevenSort { public void bub(int[] arr){ for(int i=0;i<arr.length-1;i++){ boolean flat=false; for(int j=0;j<arr.length-i-1;j++){ if(arr[j]>a.

2022-02-19 20:09:54 127

原创 常见的二叉树问题

1.判定二叉树是否是完全二叉树public boolean isCBT(TreeNode root){if(root==null){return true;}Queue<TreeNode> queue=new LinkedList<>();queue.offer(root);boolean flag=false;while(!queue.isEmpty()){int size=queue.size();for(int i=0;i<size

2022-01-03 20:12:43 691

原创 自定义异常实现登录

实现一个简单的控制台版用户登陆程序, 程序启动提示用户输入用户名密码. 如果用户名密码出错, 使用自定义异常的方式来处理import java.util.Scanner;public class Test { private static String name="zt"; private static String password="123"; public static void main(String[] args) throws NameException, Pa

2021-11-28 17:50:52 502

原创 String类

1.创建String的三种方式 a.String arr="hh";//直接赋值 b.String arr=new String("ssss"); c.String arr=new String(char[]);2.内存 String arr="hhhh";//直接赋值的即为字面量3.字符串常量池当使用直接赋值声明字符串时,JVM会检查当前常量池中是否包含了该字符串,若没有产生该对象将它放入常量池,若存在,则直接将该对象的地址分配到该引用4.字符串的不...

2021-11-19 21:35:37 252

原创 抽象类、接口

抽象类:抽象类必须有子类,子类必须覆写所有的抽象方法。关键字为abstract。抽象类无法实例化接口:接口使用interface来定义接口,子类使用implements实现接口接口和接口之间是可以多继承的,子类可以多实现接口中只有全局变量和方法深浅拷贝:浅拷贝:当一个对象是通过另外一个对象clone出来的,此时这两个对象是独立的两个对象,但是这两个对象的内部包含的其他引用是相同的,这即为浅拷贝。深拷贝:一个对象是通过另外一个对象clone来的,并且内部其他引用也是独立

2021-11-12 20:52:38 331

原创 顺序表练习

import java.util.Arrays;public class DynamicArry { private int size; private int[] arr; public DynamicArry(){ this.arr =new int[10]; } //在index位置插入数据 public void addIndex(int index,int data){ if(index<0||index&g.

2021-10-22 18:54:52 37

原创 2021-09-30

实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 清空所有联系人 以名字排序所有联系人#include"contact.h"int add_contact(pContact pcon){ if(pcon->count_user ==MAX) { printf("通讯录已满!");...

2021-09-30 22:00:08 63

原创 2021-09-30

模拟实现memmove#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>void* mymemmove(void* dst, void* src, size_t num){assert(dst&&src);unsigned char* pdst = (unsigned char*)dst;unsigned char*

2021-09-30 21:52:01 35

原创 2021-09-30

杨辉三角#include <stdio.h>#define N 14int main(){int i, j, k, n=0, a[N][N];while(n<=0||n>=14){printf("请输入要打印的行数:");scanf("%d",&n);}printf("%d行杨辉三角如下:\n",n);for(i=1;i<=n;i++)a[i][1] = a[i][i] =...

2021-09-30 20:19:22 61

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除