自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 无法获取到Nacos配置中心的配置问题

引言最近在学习 Spring Cloud Alibaba,用到了 Nacos 配置中心。Nacos 是 Spring Cloud Alibaba 中的一个组件,通常用作服务注册中心以及配置中心。问题复现项目中有一个如图所示的消息模块:在 application.yml 中做了如下配置:spring: application: name: message cloud: nacos: config: server-addr: localhost:8

2021-03-13 17:07:54 6122 8

原创 Integer类中的numberOfLeadingZeros和numberOfTrailingZeros方法

一、引例今天在阅读 Integer 类的源码的时候,发现了两个比较有意思的方法, 频繁的使用位运算进行左移和右移操作,分别是 numberOfLeadingZeros 方法和 numberOfTrailingZeros 方法。二、numberOfLeadingZeros这个方法从 JDK 1.5 以后开始出现,主要功能是返回无符号整型 i 的最高非零位前面的 0 的个数。例如:无符号整数 24 的二进制表示为 0000 0000 0000 0000 0000 0000 0001 1000,第五位

2020-08-03 16:51:22 1200

原创 Beego初体验

前言最近在学习 Go 语言,并打算用 Go 语言做 web 开发,便开始了 Beego 框架的学习,Beego 是一个使用 Go 的思维来帮助构建并开发 Go 应用程序的开源框架,是由国人开发的,官方文档都是中文的,官网地址如下:https://beego.me/安装首先要安装 bee 开发工具,在安装了 Go 语言的开发环境前提下,在命令行中输入go get github.com/beego/bee这个命令是到 GitHub 下安装相应的文件到本地的 $GOPATH/src 下,因为有防

2020-07-27 23:05:56 435

原创 SecurityManager——Java 语言的保护伞

一、引例今天在阅读 Thread 类的源码的时候,看到了如下一段代码:SecurityManager security = System.getSecurityManager();这个和 Security 有关的对象阻碍了我阅读的脚步,并且成功地吸引了我的注意。下面就来探讨一下这个类到底有什么样的魔力。二、定义当运行未知的 Java 程序的时候,该程序可能有恶意代码(删除系统文件、重启系统等),为了防止运行恶意代码对系统产生影响,需要对运行的代码的权限进行控制,这时候就要启用 Java 安全管理

2020-06-20 20:38:35 839

原创 程序设计范式测验二

第二次测验的主要内容是通用算法的设计,题量比上一次测验稍微大一些。1、有的算法可以适用于不同的数据结构,将这些较为通用的算法从数据结构中独立出来,可以使得预定义的操作作用于不同类型的数据,以此提高类型的安全性和程序的重用性,这就是?答案:泛型技术2、要交换两个变量的值,要设计通用代码,交换数据的函数原型应设计为?答案:void swap(void *a, void *b, int size);3、要交换两个变量的值,要实现通用算法(交换任意数据类型的数据),可以用内存管理函数复制要交换的两块内

2020-06-01 17:44:36 308

原创 LinkedHashMap 源码解析

一、简介LinkedHashMap 继承了 HashMap 类,是 HashMap 的子类,LinkedHashMap 的大多数方法的实现直接使用了父类 HashMap 的方法。LinkedHashMap 可以说是 HashMap 和 LinkedList 的结合体,既使用了 HashMap 的数据结构,又借用了 LinkedList 双向链表的结构。LinkedHashMap 实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双向链表。此链表定义了迭代顺序,该迭代顺序可以是

2020-05-23 23:09:01 236 1

原创 HashMap 源码解析

一、简介哈希表也叫散列表,是一种非常重要的数据结构,底层实现是一个 key - value 键值对。应用场景及其丰富,许多缓存技术(比如 Redis)的核心其实就是在内存中维护一张大的哈希表。Java 中的 HashMap 就是这样一种结构,不仅经常用于开发当中,而且 HashMap 的实现原理也常常出现在各类的面试题中。在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为 O(1),接下来我们就来看看哈希表是如何实现达到惊艳的常数阶 O(1)

2020-05-22 20:00:40 403 2

原创 程序设计范式测验一

我们软件工程卓越班这学期的 10-17 周开设了《程序设计范式》课程,这门课程是廖浩德老师引入的斯坦福大学的《编程范式》。该课程的英文版可在 51CTO 学习。https://edu.51cto.com/center/course/lesson/index?id=2258该课程主要讲授数据类型的内存布局、泛型及其实现、 汇编实现、编译和链接、并发程序设计、函数式程序设计等。 就我个人而言,在这门课中收获很大,使我对计算机的底层更加了解,对知识达到了知其然,知其所以然的地步。由于这门课没有最终的期末

2020-05-21 20:59:28 614

原创 Vector 源码解析

一、简介Vector 也是基于数组实现的,是一个动态数组,其容量能自动增长。Vector 是 JDK 1.0 引入的,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。Vector 实现了 Serializable 接口,因此它支持序列化,实现了 Cloneable 接口,能被克隆,实现了 RandomAccess 接口,支持快速随机访问。

2020-05-20 18:44:52 265

原创 LinkedList 源码解析

一、简介上文我们探讨了线性表的顺序存储结构的实现 ArrayList,今天我们来讲链式存储结构的实现 LinkedList。LinkedList 是一个用链表实现的集合,元素有序且可以重复。今天我们来分析一下 LinkedList 的源码。二、继承结构和 ArrayList 集合一样,LinkedList 集合也实现了 Cloneable 接口和 Serializable 接口,分别用来支持克隆以及支持序列化。List 接口也不用多说,定义了一套 List 集合类型的方法规范。相对于 Array

2020-05-18 18:23:38 492 2

原创 ArrayList 源码解析

一、简介ArrayList 是可以动态增长和缩减的索引序列,它是基于数组实现的 List 类,它实现了 List 接口,List 接口继承自 Collection 接口,Collection 是所有集合类的父类,所以 ArrayList 间接实现了 Collection 接口。我们之前学过一门叫做数据结构的课程,线性表是我们学过的第一个数据结构,它有两种存储方式,一种是线性的,另一种是链式的。分析一个集合类的时候,数据结构往往是它的灵魂所在,理解底层的数据结构其实就理解了该类的实现思路,ArrayList

2020-05-16 21:49:24 306

原创 Spring Boot 整合 Rabbit MQ

Spring Boot 为我们提供了 Rabbit MQ 的自动化配置,极大的方便了我们对 Rabbit MQ 的整合,使我们可以方便的操作 Rabbit MQ,下面我们来看一下 Spring Boot 整合 Rabbit MQ。引入 AMQP 场景启动器Rabbit MQ 是基于高级消息队列协议(AMQP)的,所以我们先在 pom.xml 中引入 AMQP 的场景启动器。<depen...

2020-04-12 09:30:16 257 2

原创 Rabbit MQ 进阶

消息应答与消息持久化消息应答boolean autoAck = false;channel.basicConsume(QUEUE_NAME, autoAck, consumer);boolean autoAck = true;(自动确认模式)一旦 Rabbit MQ 将消息分发给消费者,就会从内存中删除,这种情况下,如果杀死正在执行的消费者,就会丢失正在处理的消息boolean au...

2020-04-12 09:26:45 180

原创 Rabbit MQ 入门

消息队列解决了什么问题异步处理我们以用户注册为例,当用户注册成功后,我们首先将用户注册信息写入数据库,我们再给他发送一封邮件,再给他发送一条短信,当都执行成功后,我们再给用户响应,需要 150 ms为了优化程序,我们想到了第二种方式,将用户注册信息写入数据库后,我们采用多线程的方式给用户发送邮件和短信,合起来响应 100 ms这时候我们的消息队列就派上用场了,我们将用户注册信息写入数据...

2020-04-11 21:26:14 213

原创 Java 14 新特性

概述2020年 3 月 17 日, JDK/Java 14 正式 GA(General Available)。这是自从 Java 采用六个月一次的发布周期之后的第五次发布。Java 14 是两个长期支持版本 11 和 17 中间的一个,Java 14 无疑具有着承上启下的作用,从 Java 14 中我们或许能看出 Java 未来的发展趋势。此版本包含的 JEP( Java/JDK Enhan...

2020-04-08 21:54:46 366 2

原创 Redis 实现分布式锁

为什么要用分布式锁假设你现在正在浏览你们学校的二手物品交易网站,你看到了大四学长正在拍卖的一本全新的《Java 编程思想》,你心动了,下单,支付,库存减 1,等待收货。但是,你有没有考虑这样一个问题,你隔壁寝室的哥们也看中了这本《Java 编程思想》,他和你执行着一样的流程,你俩同时完成支付,假如你们这个网站的开发人员没有做并发处理,让你们两个都买到了这本书,但总共只有一本,那这本书到底该归谁。当然...

2020-04-01 22:50:24 241

原创 记一次位运算装逼失败的经历

今天写快排的时候,在交换两个数的 swap 函数中采用了如下的写法:public static void swap(int[] num, int l, int r) { num[l] = num[l] ^ num[r]; num[r] = num[l] ^ num[r]; num[l] = num[l] ^ num[r];}因为这样做可以不申...

2020-03-20 21:30:37 407 4

原创 MyBatis 结果映射

MyBatis 是目前广泛使用的数据持久层框架,它的灵活性是它能让开发者青睐的重要原因之一,而它的自定义结果集 ResultMap 无疑是灵活性的重要体现。今天带大家探索一下 ResultMap 的映射规则。假设我们要做一个博客网站,一共有三张表:作者,文章,类型作者类public class Author { private Integer id; private Stri...

2020-03-18 16:33:03 242

原创 PageHelper 原理解析

PageHelper 是一款基于 MyBatis 的分页插件,我们只需要在调用 mapper 之前调用 startPage() 方法,传入相应的参数,在调用之后将查询结果封装进 PageInfo 对象中,就能按我们的需要进行分页查询。我们先来看一下如何具体如何使用 PageHelper 插件。使用步骤官方网址https://pagehelper.github.io/引入 maven 依...

2020-03-18 12:32:30 7944

原创 Spring Security 常用配置详解

Spring Security 是 Spring 家族为我们提供的一款安全管理的框架,它是一个功能强大并且可以灵活定制的身份验证和访问控制框架。Spring Security 侧重于为 Java 应用程序提供身份验证和授权。与所有 Spring 项目一样,Spring Security 的真正强大之处在于它非常容易扩展来满足我们的不同需求。在 SSM 时代,Spring Security 因为繁...

2020-02-29 13:35:41 6874

原创 Golang 环境配置

Go 语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。Go 语言是编程语言设计的又一次尝试,是对类 C 语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言的用途众多,可以进行网络编程、系统编程、并...

2020-02-25 12:46:13 2395

原创 Spring MVC 中将数据传给页面的四种方法

我们之前用 Servlet + JSP 开发 web 应用的时候,通常使用 Servlet 的四大作用域 request,session,page,application 给页面传值。Spring MVC 当然也支持这些 Servlet 的原生 API,但是,它也为我们提供了更加强大的 API 支持,下面我们我们来探讨一下 Spring MVC 是如何将数据传给页面的。一、Map第一种是 Ma...

2020-02-22 17:34:26 1418

原创 Dubbo 环境搭建

Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。准备工作1.安装 zookeeper进入 zookeeper 的官网http://...

2020-02-15 20:51:09 353

原创 送你三个珍藏已久的网页,一份迟到的情人节祝福

今天是庚子年正月二十一,公历 2020 年 2 月 14 日,一个没有什么特殊意义的日子。好吧,我不欺骗自己了,今天是情人节,虽然没有情人,但是节还是要过的,就在这里送大家我珍藏已久的三个表白页面吧,祝有对象的 999,没有对象的早日脱单!1.爱情树程序员最经典的表白页面,没有之一,我曾经不止一次的见过,就找到了这个的源码存了起来,亲测有效,女生一定会心动的,尤其是非计算机专业的同学。整个树是...

2020-02-14 17:09:17 654

原创 Spring Boot 配置自定义缓存管理器实现对象序列化为 JSON

今天在学习 Spring Boot 整合缓存的时候,遇到了这样的问题,从数据库中查出的数据放到 Redis 中,在 Windows 上用 RedisDesktopManager 打开出现了乱码的问题。查了资料知道原因是 Spring Boot 集成 Redis 时,自动配置了 RedisCacheManager,但是 RedisCacheManager 默认使用的是 JdkSerializationRedis...

2020-02-13 18:43:52 317

原创 Spring Boot 2.x 缓存管理器自动配置原理

Spring Boot 的自动化配置极大地简化了我们的开发,这也是 Spring Boot 能够一统 Java EE 江湖的重要原因之一。Spring Boot 在启动的时候,会把常用的组件全部导入到 Spring 的 ioc 容器中,当然,缓存管理器(CacheManager)也不例外。什么是缓存管理器缓存管理器(CacheManager) 定义了创建、配置、获取、管理和控制多个唯一命名的 ...

2020-02-13 16:51:44 403

原创 逝去的 2019 年,年终总结

今天在和学长聊天的时候我突然感叹道明年我也要找工作了,时间过得真快呀,转眼间就到了 2020 年了,这已经是我进入大学来的第三个年头了。写在前面这篇总结本来应该在去年年底完成的,无奈最近要准备连续三门的期末考试的轰炸,今天考大物,隔一天考线代,再隔一天考设计模式。虽然今天要考试,但是这篇总结不能再鸽了,也算是对我过去一年学习和生活的总结和回顾。既然要写 2019 ...

2020-01-02 02:19:17 486 5

原创 Nginx 入门,看这一篇就够了

Nginx 是一款性能很突出的服务器软件,由俄罗斯人伊戈尔·赛索耶夫开发而成。值得一提的是,这个天才工程师最近竟然因为他一手开发的 Nginx 而入狱,详情读者可百度,这里不做过多的赘述。Nginx 已经成为了世界上使用最广泛的服务器软件,像国内的阿里,腾讯,百度等一线互联网公司都在使用 Nginx,其占有内存少,并发能力强等特点促成了今日的成功。Nginx 简介...

2019-12-31 14:10:36 1337 1

原创 数组越界会导致死循环吗?

今天在牛客网上看到这样一道题,觉得比较有意思,也触及到了我的知识盲区,遂将其记录下来。题目内容如下:在32位系统下运行以下程序,可能的输出结果为()#include <stdio.h>int main() { int i, a[5]; for (i = 0; i <= 30; i++) { a[i] = 0; printf("...

2019-12-23 17:14:03 587 1

原创 你还在 Java 代码中写 set/get 方法?别告诉我你还没用过 Lombok!

前言what?你的 Java 代码中还充斥着大量的 set/get 方法?我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态。在 Java 中,要保证封装性,需要将成员变量私有化,对外提供 set/get 方法来访问,虽然现在的 IDE,像 eclipse,IDEA都提供了快捷键,来生成 set/get 方法,但是在做项目的时候,一个 JavaBean 往往会有...

2019-12-22 18:05:39 3928 14

原创 Spring 常用注解

Spring 中的常用注解@Component把普通 pojo 实例化到 Spring 容器中,相当于配置文件中的<bean id="" class="">泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component 来标注这个类这个简单的注解表明该类会作为组件类,并告知 ...

2019-12-08 17:31:21 512

原创 设计模式之原型模式

一、引例原型模式是GoF23种设计模式的一种,属于创建型模式,用来解决复杂对象的创建问题。《西游记》中,孙悟空拔毛变小猴的故事几乎人人皆知,孙悟空可以用猴毛根据自己的形象,复制出很多个根自己长得一模一样的“身外身”来。我们在使用电脑的时候,对文件最常用的操作有两种,一种是复制,另一种是粘贴,这就是原型模式的应用。在软件系统中,有些对象的创建过程较为复杂,而且有时候需要频繁创建,原型模式通过给出一...

2019-11-28 08:58:48 374

原创 设计模式之单例模式

一、引例单例模式是GoF23种设计模式的一种,也是最简单一种,用来解决对象创建的问题。我们在使用windows操作系统的时候,按下ctrl+alt+del键,可以打开任务管理器,但是大家可以试试多次按下这三个键,能不能打开多个任务管理器,答案当然是否定的,电脑上很多软件,比如一些常见的音乐软件,视频软件都不能同时打开多个,你重复打开的话,显示的是已经在运行的那个程序,为什么要这样做呢?任务管理器就...

2019-11-18 16:05:36 495

原创 汇编语言答案(王爽)第三版

检测点1.1检测点2.1检测点2.2检测点2.3检测点3.1检测点3.2检测点6.1检测点9.1检测点9.2检测点9.3检测点10.1检测点10.2检测点10.3检测点10.4检测点10.5检测点11.1检测点11.2检测点11.3检测点11.4检测点12.1检测点13.1检测点13.2检测点14.1检测点1.1(1)1个CPU的寻址能力为8KB,那...

2019-11-06 20:47:57 2142 3

原创 收藏!关于C语言你绝不知道的黑科技

1.不使用循环、控制语句和公式实现从1加到100#include <stdio.h>#include <stdlib.h>int sum(int n){ int ans = 0; n && (ans = sum(n - 1) + n); return ans;}int main(){ printf("%d\n", sum(100)); re...

2019-09-19 21:18:26 645

原创 MyBatis实现分页查询

分页查询在我们生活中非常常见,当我们做一个内容很多,数据量很大的项目的时候,在一个页面显示不过来,我们便会采取分页的思想,在每个页面上显示固定数量的内容,分多个页面显示。那它是怎么实现的呢?今天我们来讲讲如何用MyBatis来实现分页查询。假设我们要查找的是学生信息,然后将信息分页显示到jsp页面上,首先我们要做的是写实体类,创建一个名为pojo的包,在包下写一个People类,定义属性和对应的...

2019-09-19 17:22:45 2123

原创 浅谈学习的深度和广度

虽然Go语言越来越流行,很多大厂开始使用Go语言做后台开发,但是不可否认的是,Java在业内仍然有着不可撼动的地位。身边不乏有这样的人,相当的努力,所有的课余时间都用在了学习Java上,各种框架甚至Java基础都很精通,但是却不太重视学校开设的专业课,抱着及格就好的心态来学习,不可否认的是,擅长一门语言的确可以让你拿到好的offer,但是我觉得如果知识面太窄了的话不利于我们解决问题能力的培养以及以...

2019-09-10 22:25:59 6361

原创 乘风破浪,迎接大二——暑假生活总结

长风破浪会有时,直挂云帆济沧海1.前言收拾好行李,独自坐在房间里,望着眼前的床,想起今晚是今年在家里睡的最后一晚,便有一点莫名的伤感。时光仿佛回到28天前,因为卓越班要补课到7.31号,所以我订了8.1号的高铁票,G1836号列车开到终点站青岛站的时候,已经是晚上10:52,当回到家的时候,已经是凌晨了,母亲还没睡,早已做好了饭,等着听我讲述这半年的经历。其实理论上的暑假生活是从7月10...

2019-08-30 17:04:06 671 10

原创 LeetCode周赛——拼写单词

博主这半年来一直在主要学习Java的有关知识,疏忽了对算法的训练,偶得一著名刷题网站LeetCode,出于对算法的热爱,便决定开始刷题一段时间,加上前几天给我推送了周赛的消息,便报了名。为了巩固Java的知识,便选择了用Java语言来coding。虽然开始前的紧张中带着几分的憧憬,但是打开第一题便目瞪口呆,有题云:给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) cha...

2019-08-18 21:03:24 435

原创 使用cookie实现记住用户名功能

1.为什么要实现记住用户名功能我们在登陆QQ的时候,需要输入QQ账号和密码,因为QQ号比较长,如果每次登陆都要重新输入一遍的话,会显得格外繁杂,因为我们在自己的电脑上登陆QQ的时候,可以勾选记住用户名功能,这个我们就不用每次都输入账号密码了2.怎样实现记住用户名功能我们之前学过cookie,cookie简单的说就是缓存,它可以将服务器的数据缓存到客户端,我们就用cookie来实现记住登陆用户...

2019-08-16 13:23:28 1239

空空如也

空空如也

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

TA关注的人

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