自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机网络基本概念

随着时代的发展,我们已经迈入计算机网络时代,身为一个程序猿,我们需要对计算机网络的一些基本概念进行了解。

2024-05-26 19:21:40 382

原创 哈夫曼编码(下)

由于每个哈夫曼编码都是一个字节(最后一个可能不是一个字节,上章在步骤四有介绍),所有我们需要将字节转换为字节转化为一个二进制的字符串,当所有哈夫曼编码的字节对应的二进制编码连接在一起,就是我们需要的二进制字符串。接下来我们需要遍历stringBuilder得到对应的字符串,将得到的每一个字符放入list中,然后将list中的每个字符再放入字符数组byte[]我们将huffmanCodes编码表进行调换,因为我们需要反向编码,即用字符串中的数字来对应字符串中的字符。里面放着的即是我们需要的二进制字符串。

2024-05-19 12:30:28 379

原创 哈夫曼编码(上)

通常来说,如果信息中字符的重复次数越多,那么哈夫曼编码后所占的空间就越小,这也是我们为什么使用哈夫曼编码的原因,同时,哈夫曼编码还是天然的前缀编码,这让它与其他编码方式(定长编码,变长编码)相比,具有天然的优势。将list集合排序,把list集合的前两个节点拿出来,作为新树的两个子节点,然后将该新树放回list集合中,将原本拿出的两个子节点从list集合中移除,然后再次排序,重复上面步骤,就能得到一颗哈夫曼树。我们规定,哈夫曼树中的节点,从该节点到左子节点路径的值为0,到右子节点的值为1。

2024-05-12 10:41:16 941

原创 八皇后问题

首先将第一个皇后放在第一行第一列,然后将第二个皇后放在第二行第一列,判断是否可行,不可行将第二个皇后放在第二行第二列,依次类推。在8 * 8格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不能处于同一行,同一列或同一斜线上。直到找到一个正确解为止,此时开始回溯,将第一个皇后放在第一行第二列,再执行以上步骤。

2024-05-05 14:36:36 435

原创 逆波兰表达式的运算

以其为字符串来计算,首先把放入集合中,每一个字符都当作一个字符串,而此时我们还需考虑多位数的计算,如果某表达式为26 + 2,我们不能把它变为2,6,+,2,于是我们在遍历字符串时需要一个中间变量,来记录当前的数,如果当前读到的是符号,就把中间变量放入集合中,同时把中间变量置空,然后把符号放入集合中,依次遍历最后得到盛放逆波兰字符串的集合。注意,当我们运算+ *法时,弹出栈的数据计算顺序可以随便写,但是当遇见- / 法时,我们需要用栈下面的值-或/上面的值。,35 6 -,最后得到29。

2024-04-28 15:26:56 271

原创 约瑟夫环问题

/创建一个环形的单向链表//创建一个first节点,当前没有编号//添加小孩节点,构建一个环形链表//对nums做数据校验return;int n = 1;//辅助指针,帮助构建环形链表}else {++n;//根据用户的输入,计算用户出圈的顺序/*** @param startNo 表示从第几个小孩开始数数* @param countNum 表示数几下* @param nums 表示最初有几个小孩在圈中*/

2024-04-21 11:12:10 1033

原创 redis_watchDog机制

redis的watchDog机制实现了超时续约的功能,简单来说就是在获取锁成功以后,开启一个定时任务,这个任务每隔一段时间(relaseTime / 3),重置超时时间,避免的因业务阻塞导致锁过早释放。如果ttlRemaining == null表示获取锁成功,这时候需要我们解决有效期的问题,就执行以下方法this.scheduleExpirationRenewal(threadId);实现自动更新,续期的功能。所以最后entry里放入两个东西,一个是线程id,另一个是定时任务。

2024-04-13 17:21:00 244

原创 Mysql索引

如果两个(或多个)键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为hash碰撞),可以通过链表来解决。哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。B-Tree,B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支,即多叉。我们平常所说的索引,如果没有特别指明,都是指B+树结构组织的索引。

2024-04-05 18:19:29 735

原创 HashSet解析

HashSet是Set集合下的子接口,set集合添加的元素是无索引,不重复,无序,与List系列集合正好相反。无序:存储顺序不一致。不重复:可以去除重复。无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素。

2024-04-01 09:05:59 421

原创 求最大回文质数

给你一个整数 n ,返回大于或等于 n 的最小回文质数。一个整数如果恰好有两个除数:1 和它本身,那么它是 质数。注意,1 不是质数。例如,2、3、5、7、11 和 13 都是质数。一个整数如果从左向右读和从右向左读是相同的,那么它是 回文数。例如,101 和 12321 都是回文数。测试用例保证答案总是存在,并且在 [2, 2 * 108] 范围内。

2024-03-25 08:21:50 163

原创 简述JVM

JVM本质上是一个运行在计算机上的程序,他的职责是运行java字节码文件。是java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。作用:将字节码文件中的指令解释成机械码,同时使用即时编译器优化性能。包含即时编译器,解释器,垃圾回收器等。

2024-03-17 11:29:23 884

原创 简述stream流

【代码】简述stream流。

2024-03-10 08:47:05 336

原创 Mysql数据库基本操作

数据库: 英文:DataBase 简称DB数据库管理系统: 英文:DataBase Management System,简称DBMSSQL: 英文:Structured Query Language,简称SQL,结构化查询语言mysql 退出:exit或quitmysql 修改默认账号密码 mysqladmin -u 账号名(账号名) password 密码(密码)

2024-02-28 22:49:09 742

原创 黑马瑞吉公共字段自动填充代码实现

log.info("公共字段自动填充[insert]...");log.info("公共字段自动填充[update]...");log.info("线程id为: {}",id);欢迎大家一起学习,有不足的地方还请指出。* 插入操作自动填充。* 更新操作自动填充。

2023-12-17 20:12:13 285 1

原创 黑马瑞吉用户登录和退出简单实现

/6.登录成功,将员工id存入session并返回登陆成功结果。//5.查看员工状态,如果为已禁用状态,则返回员工已禁用结果。//1.将页面提交的密码password进行MD5加密处理。return R.error("账号已禁用");//2.根据页面提交的用户名username查询数据库。return R.success("退出成功");//4.密码比对,如果不一致则返回登陆失败结果。//清除Session中保存的当前员工的id。//3.如果没有查询到则返回登陆失败结果。

2023-12-09 11:00:41 432

原创 黑马瑞吉购物车添加及清空代码实现

return R.success("购物车清空成功");//如果不存在,则添加到购物车,数量默认就是1。//设置用户id,指定当前是哪个用户的购物车数据。//如果以及存在,就在原来数量基础上加一。//查询当前菜品或者套餐是否在购物车中。//添加到购物车的是菜品。//添加到购物车的是套餐。欢迎大家一起学习,有不足的地方还请指出。

2023-12-09 10:58:00 802

原创 黑马瑞吉用户下单代码实现

throw new CustomException("用户地址信息有误,无法完成订单");throw new CustomException("购物车为空,无法完成订单");//原子操作,线程安全,多线程不会算错。//向订单明细表插入数据,多条数据。欢迎大家一起学习,有不足的地方还请指出。//向订单表插入数据,一条数据。//查询当前用户的购物车数据。//获得当前用户id。

2023-12-02 21:03:31 862

原创 全局异常处理器的简单实现

异常处理方法,关于SQLIntegrityConstraintViolationException数据库异常处理。String msg = spilt[2] + "已存在";//写方法需要返回JSON数据,最终把数据封装为JSON进行返回。return R.error("未知错误");//拦截类上加载了RestController这个类。* 异常处理方法,业务逻辑处理。欢迎大家一起学习,有不足地方还请指出。

2023-11-29 21:51:19 356

原创 黑马瑞吉订单与订单明细表代码实现

throw new CustomException("用户地址信息有误,无法完成订单");throw new CustomException("购物车为空,无法完成订单");//原子操作,线程安全,多线程不会算错。//向订单明细表插入数据,多条数据。欢迎大家一起学习,有不足的地方还请指出。//向订单表插入数据,一条数据。//查询当前用户的购物车数据。//获得当前用户id。

2023-11-25 18:25:50 640

原创 过滤器的简单实现

log.info("用户已登录,用户id为:{}",request.getSession().getAttribute("employee"));log.info("用户已登录,用户id为:{}",request.getSession().getAttribute("user"));//匹配器,当访问路径为/backend/login.html,和backend/**匹配上。"/user/sendMsg", //移动端发送短信。"/user/login", //移动端登录。//定义不需要处理的请求路径。

2023-11-22 21:20:41 934

原创 简述分页查询

/添加查询条件,根据name进行like模糊查询。//添加排序条件,根据更新时间降序排序。//根据分类id查询分类对象。欢迎大家一起学习,有不足地方还请指出。

2023-11-18 19:41:07 37

原创 关于服务图片的上传和下载

public R upload(MultipartFile file){ //参数名不能随便写,跟页面的request的name一致。//file是一个临时文件,需要转存到指定位置,否则本次请求完成后临时文件会删除。//使用UUID重新生成文件名,防止文件名称重复造成文件覆盖。//输出流,通过输出流将文件写回浏览器,在浏览器展示图片。//输入流,通过输入流读取文件内容。//目录不存在,需要创建。//写出返回的什么类型,返回图片。//判断当前目录是否存在。//创建一个目录对象。

2023-11-16 15:55:16 31

原创 自定义redis客户端

/代表数组,有三个元素。//单行字符串,直接读一行。sendRequest("auth","写入自己redis设置的密码");//再读字节,读len个字节,假设没有特殊字符,所以读一行(简化)//2.获取 输出流,输入流。//读取首字节,判断数据类型标示。//定义集合,接收多个元素。

2023-11-08 19:15:34 53

原创 SpringBootAdmin

url: http://localhost:8080 # 这个应用被谁监视。show-details: always # 健康指标中的所有明细是否让监视看。include: "*" # 开启所有指标。欢迎大家一起学习,有不足的地方还请指出。

2023-11-06 19:40:24 41

原创 SpringBoot_Kafka

bootstrap-servers: localhost:9092 # 启动zookeeper默认端口:2181 启动kafka默认端口:9092。System.out.println("已完成短信发送业务(kafka),record: " + record.value());System.out.println("待发送短信的订单已纳入处理队列(kafka),id: " + id);@Autowired //kafka注入。

2023-11-04 17:51:09 31

原创 SpringBoot_RocketMQ

/第一个参数写入队列的名字,第二个参数写入分组在application.yml配置rocketmq中的group属性,使生产者和消费者在一个组中。System.out.println("待发送短信的订单已纳入处理队列(rocketmq),id: " + id);System.out.println("已完成短信发送业务(rocketmq),id: " + id);欢迎大家一起来学习,有不足的地方还请指出。

2023-11-03 19:41:18 32

原创 SpringBoot_RabbitMQ

System.out.println("待发送短信的订单已纳入处理队列(rabbitmq direct),id: " + id);@RabbitListener(queues = "direct_queue") //指定要处理的队列名称。//第一个参数交换机的名称,第二个参数绑定队列和交换机的名称,第三个参数是消息。今天学习了springboot整合RabbitMQ(direct模式)。//绑定队列和交换机,一个交换机可以绑定多个队列。//创建交换机,直连交换机。//受到消息自动处理。

2023-11-02 18:53:05 28

原创 SpringBoot_ActiveMQ

SendTo("order.other.queue.id") //监听消费后再发送到order.other.queue.id这个区域,返回的是当前方法的返回值。@JmsListener(destination = "order.queue.id") //监听器,当消息传入服务器之后立马会被消费。System.out.println("待发送短信的订单已纳入处理队列,id: " + id);System.out.println("已完成短信发送业务,id: " + id);

2023-11-01 19:13:12 57 1

原创 SpringBoot_JavaMail

password: afklmasklfnkl //非qq邮箱的登录密码,而是服务器给你提供的一个加密的密码。message.setFrom(from + "(小明)");//"(小明)"替代发送人信息。username: 105465468@qq.com //本人qq邮箱。@SpringBootTest //springboot测试类。@Autowired //自定义功能,发送邮件。@Autowired //注入发送客户端。//发送人,邮箱地址。//接收人,邮箱地址。//发送邮件接口实现类。

2023-10-31 21:25:19 54 1

原创 SpringBoot_task

调度线程关闭前最大等待时间,确保最后一定关闭。今天学习了springboot整合task。# 调度线程名称前缀 默认 scheduling。# 线程池关闭时等待所有任务完成。# 任务调度线程池大小 默认1。欢迎大家一起学习,有不足的地方还请指出。

2023-10-30 16:33:37 51 1

原创 SpringBoot_quartz

/newJob(MyQuartz.class)里面的参数写入有任务要执行的class。第一个表示秒,第二个表示分钟,小时,日,月,星期。//storeDurably()是否持久化。启动springboot项目就会执行定时任务。欢迎大家一起来学习,有不足的地方还请指出。//绑定对应的工作明细。

2023-10-28 19:06:57 60 1

原创 Cache_j2cache

今天学习了springboot整合j2cache,j2cache只是一个框架,接下来向大家介绍一下j2cache整合redis和ehcache。config-location: j2cache.properties # 配置j2cache需要的文件。-- 自带有redis依赖 -->-- 导入ehcache依赖 --># 1级缓存中的数据如何到达2级缓存。

2023-10-27 20:03:36 44 1

原创 Cache_jetcache

CreateCache(name = "jetCache_",expire = 3600,timeUnit = TimeUnit.SECONDS) //创建jetcache缓存对象。今天学习了缓存jetcache,既能本地缓存,又能远程缓存,接下来介绍远程缓存,本项目为springboot项目。//写的验证码生成类。//取出内存中的验证码与传递过来的验证码比对,如果相同,返回true。poolConfig: # 此配置必须配,否则会报错,至少配一个。type: redis # 缓存配置指定应用。

2023-10-26 20:08:16 46

原创 SpringBoot_cache(3)

/存入memcached缓存,第二个参数代表过期时间,0代表永不过期。@ConfigurationProperties(prefix = "memcached") //需要读取的配置对应yml文件中的memcached。今天依旧学习springboot整合cache,今天整合memcached。//写入连接池数量,可忽略。欢迎大家一起来学习,有不足的地方还请指出。//写入超时时间,可忽略。# memcached服务器地址。@Autowired //注入服务端。@Data //lombok依赖。

2023-10-25 20:10:18 34 1

原创 SpringBoot_cache(2)

CachePut(value = "smsCode",key = "#tel") //向缓存中放,不能取出。-- 其他配置,调用方法时如果指定缓存名字如以下:smsCode,会在这个缓存中找数据-->今天继续学习springboot整合cache,本次用的是ehcache。timeToLiveSeconds="10" 缓存10s后自动消失-->欢迎大家一起学习,有不足的地方请及时指出。-- 默认配置-->

2023-10-24 19:55:59 38

原创 SpringBoot_cache(1)

Cacheable(value = "cacheSpace",key = "#id") //在本方法开启缓存,value设置存储空间,key设置名字。//bookDao是我写的查询数据库的接口。其实缓存还有许多其他的功能,在这里就不多叙述了,欢迎大家和我一起学习,有不足的地方请指出。//如果当前缓存中没有本次要查询的数据,则进行查询,否则直接从缓存中获取数据返回。

2023-10-23 19:54:08 41

原创 SpringBoot整合ES

今天学习了SpringBoot整合ES(Elasticsearch,以下简称ES),ES是一个分布式全文搜索引擎,接下来介绍SpringBoot整合ES。//此处没有配置,故不能用@Autowired。首先在springboot项目的pom文件中导入相关依赖,如下:(springboot源码自带版本)//运行后释放client资源,每个方法运行后执行。//对client初始化,每个方法运行前执行。

2023-10-21 20:19:40 36 1

原创 SpringBoot整合mongodb

今天学习克隆springboot整合mongodb,来这里打卡一下吧,本人操作的是idea,大家需要先下载mongodb数据库才可进行下一步。uri: mongodb://localhost/table(具体的表) # mongodb数据库地址。@Data //lombok中的注解,几乎涵盖了一个bean中的所有方法(get,set等)//这里需要导入lombok坐标。void save() { //向mongodb写入数据。void find() { //从mongodb读出数据。

2023-10-20 20:27:44 41 1

原创 springboot整合redis

client-type: jedis # 配置客户端,此处可以不写,springboot默认用lettuce,使用的话需 # 要导响应坐标。今天聊聊springboot操作redis,首先需要配置redis并开启,我是在idea上操作,使用。spring-boot-starter-data-redis这个包操作redis。void set() { //简单的设值。void get() { //简单取值。@Autowired //自动注入。

2023-10-19 15:21:53 41

原创 java.net.ConnectException:Connection timed out:connect

但是还是无法解决连接异常,接下来将VMnet1这个虚拟网络编辑器的子网地址设置为电脑的IP地址,只需要前三位相同即可,类型设置为仅主机模式,VMnet8设置为NAT模式,VMware Workstation Pro中需要连接的IP地址设置为VMnet8前三位一样,最后一位在DHCP设置里面有个起始IP地址和结束IP地址,在这两个之间选一个即可,最后将虚拟机设置中的网络适配器设置为NAT模式,到这里就结束了。我这个方式仅供参考,可能大家的问题跟我的不一样,不过解决了就皆大欢喜了。

2023-10-10 19:46:15 2457 1

空空如也

空空如也

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

TA关注的人

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