自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java 小先

专注 Java、分布式技术

  • 博客(35)
  • 收藏
  • 关注

原创 Kafka笔记|02-Kafka 生产者客户端开发

这一小节主要内容是如何编写 Java 版的 “Hello World” 生产者客户端,实践如何通过 Java 客户端向 Kafka 发送消息。

2021-04-05 22:53:31 461

原创 Kafka笔记|01-Kafka 服务端安装和配置!

本小节主要为安装和运行 Kafka,并使用自带的命令行工具使用 Kafka 最核心的功能–消息的发送和消费。作为 Kafka 笔记的“Hello World”。

2021-03-28 22:19:02 1018

原创 实用小技巧|如何加速 Gradle、Maven 的依赖下载

加速 Gradle、Maven 的依赖下载的小妙招!

2021-03-18 07:55:38 2545

原创 Kafka笔记|00-什么是Kafka?

介绍了 Kafka 起源、一些基本术语及其概念和 Kafka 的特点与使用场景,方便大家能够快速了解 Kafka,并对 Kafka 有个初步的印象。下一小节将围绕 Kafka 的安装和使用展开!

2021-03-11 08:49:45 186

原创 Redis 过期数据怎么处理

在 Redis 中,是可以设置过期数据的,Redis 提供了两种的方式,用于删除过期的数据!定期删除惰性删除1、定期删除Redis 默认 100ms 随即抽取部分设置过期时间的 key,过期了就删除。优点是避免长时间的在扫描过期 key,缺点是有些过期 key 无法被删除。不扫描全部 key 的原因是,当设置了过期时间的 key 太多的情况下,会很耗时间,O(n) 的时间复杂度。2、惰性删除如果查询了某个过期 key,但定期删除没有删除掉,那就将其删除了。key 没过期就正常返回。R

2020-08-23 11:39:25 4388

原创 Redis 缓存雪崩、击穿、穿透

1、Redis 缓存雪崩一句话就是:大面积的缓存失效,Redis 相当于没有了,直接将查询请求打到数据库,然后数据库顶不住,崩了。例如:设置缓存更新时间为12:00, 但恰好有秒杀、促销活动,一下涌进很多的请求,本来 Redis 还可以抗住,但因为此时缓存失效了,所以直接打到数据库,但数据扛不住这么多的请求,然后崩了。解决方法:缓存失效时间可以设置为凌晨三四点钟这段流量比较少的时候,另外 Redis 缓存失效时间加个随机值,避免同一时间大面积的缓存失效。2、缓存击穿(数据存在的)、穿透(请求不存在

2020-08-23 10:29:04 114

原创 Java 锁

**什么是线程安全?在多线程环境下,共享数据(也就是 JVM 堆内存的数据)可以被进程中的多个线程访问到,共享数据可能同时被多个线程修改而导致破坏,造成数据不一致或者出现脏数据,数据不一致常常会导致程序出现错误结果乃至异常崩溃。而线程安全就是避免这种情况的发生,在一个线程访问某个共享数据的时候,通过加锁的方式阻止其他线程修改这个共享数据,直到释放了锁。例如:银行多个工作窗口(多个线程)的叫号,如果在线程不安全的情况下,会导致重复叫号、遗漏某个号码、号码超过最大值。在秒杀场景下,如果扣库存时候没有加锁,

2020-08-21 23:26:33 243

原创 Redis基础

Redis 特性:速度快,数据在内存中,通过 key 查找,时间复杂度 O(1)支持多种数据类型,string,list,hash,set,sort set 等支持事物,操作都是原子性的丰富的特性,可用于缓存等Redis 是单线程还多线程?答:Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO 多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。参考和图片链

2020-08-21 17:51:34 190

原创 Netty 笔记-手写一个 RPC 程序

源代码仓库 https://github.com/zhshuixian/netty-notesRPC(Remote Proceduce Call 远程过程调用) 一般用来实现部署在不同机器上的系统之间的方法调用,使程序能够像访问本地系统资源一样,通过网络传输过去访问远端系统资源。这里将使用 Netty 编写一个非常简单的 RPC 程序,项目大概的示意图如下:在上一个项目的基础上,新建子项目 03-netty-rpc ,项目的依赖和 Maven 配置见 GitHub 的项目仓库。1、Proto

2020-08-03 17:08:12 257

原创 Netty 笔记-手写 HTTP 服务器

源代码仓库 github.com/zhshuixian/netty-notes这里将使用 Netty 编写一个简单的 HTTP 服务,可以自定义配置 Servlet,使用浏览器访问返回对应的响应。项目大体示意图如下:启动 Netty 的服务,负责监听 HTTP 请求,设置 HTTP 编码和解码器,并把请求交给 Handler 处理Handler 解析 Http Request 请求的 URI 信息,根据 URI 查找对应的 Servlet 或者返回 404 错误Servlet 是实际的业务代码

2020-08-03 17:04:51 500

原创 Netty 笔记-第一个 Netty 程序

源代码仓库 https://github.com/zhshuixian/netty-notes这里将编写一个简单的 Netty 程序 Ping-Pong(乒乓球) ,客户端向服务端发送一个信息,服务端将此信息返回给客户端。这里 demo 项目使用 Maven,使用 Gradle 只需要引入相关依赖即可,如果网络的原因无法下载相关依赖,可以切换为国内的镜像源。项目环境IDEA 或者 Eclipse (IDE)Maven 或者 Gradle (构建工具)JDK 1.8 或者 111、第一个

2020-08-03 17:00:29 341

原创 Netty 笔记--Netty 简介

Netty是一个异步和事件驱动的网络应用程序框架,用于快速开发可维护的高性能网络服务器和客户端。Netty 是一个基于 Java NIO 服务端、客户端开源(Apache License 2.0)框架,是用于创建高性能、高可用的网络应用程序的框架,其极大的简化 Java 网络编程,使得程序员无需使用原生的 Java API 编写复杂的网络应用程序。许多公司和项目都使用了 Netty 作为网络通信框架,例如我们熟知的 Dubbo,Spark,Elasticsearch 等。Netty 的特性统.

2020-08-03 16:56:27 433

原创 Spring Boot 2.X 实战--实现一个简单的分布式锁

源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2码云:https://gitee.com/ylooq/learn-spring-boot-2在 Spring Boot 整合 Redis 中提到,对于进程间共享的数据,需要通过锁的方式避免脏数据的产生,可以利用 Redis 单线程的特性,实现共享数据的加锁和释放。本章主要介绍如何实现一个简单的分布式的锁。在开发 Java 应用的时候,多线程需要对共享数据资源的修改可以通过 synchron.

2020-08-03 16:32:28 334

原创 Spring Boot 2.X 实战--Actuator 监控工具

源代码仓库:github.com/zhshuixian/learn-spring-boot-2Spring Boot 作为提高开发效率的框架,集成了许多的附加功能,例如 Spring Boot Actuator 监控工具,可以作为你在生产环境监视和管理的工具。使得开发者可以用个 HTTP 或者 JMX 的方式,审核、收集生产环境中的运行状况等指标。开始使用 Spring Boot Actuator新建 项目 14-spring-boot-actuator ,引入 Actuator 工具的 star.

2020-08-03 16:28:09 275

原创 Spring Boot 2.X 实战--WebFulx Reactive 编程初探

源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2码云:https://gitee.com/ylooq/learn-spring-boot-2Spring 5 中最重要的更新是支持 Reactive (反应式)编程,反应式编程是非阻塞的,意味着无需阻塞等待业务处理完成,可以减少服务器资源的占用,提高并发处理速度和并发量。非常适合低延迟、高吞吐量的项目。可以用来构建非阻塞的、异步的、弹性和事件驱动的企业级服务。Spring WebFlux .

2020-08-03 16:27:30 573

原创 Spring Boot 2.X 实战--Spring Boot 整合 MongoDB

源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2码云:https://gitee.com/ylooq/learn-spring-boot-2《Spring Boot 2.X 实战》全文在线阅读 – 微信平台码云 Git Pages https://ylooq.gitee.io/learn-spring-boot-2/#/在数据量日益暴涨的今天,用户的个人信息如浏览点击记录、商品购买记录等成倍增加,传统的 SQL 数据库已经无法很好的存.

2020-08-03 16:25:58 924

原创 Spring Boot 2.X 实战--RESTful API 全局异常处理

源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2在上一节"Shiro (Token)登录和注册"中,主要介绍了 Spring Boot 整合 Shiro 实现 Token 的登录和认证,这一小节中,我们将实现 Spring Boot 的全局异常处理,将异常成封装统一样式的 JSON 返回前端。小先有次在开发 React + Spring Boot 的应用的时候,因为没有加统一的异常处理,被 React 的 debug 搞得很崩溃。(对 R.

2020-08-03 16:24:53 449

原创 Spring Boot 2.X 实战--Spring Boot 整合 Redis

Spring Boot 整合 Redis 实现数据库缓存。

2020-04-27 16:29:49 583

原创 Spring Boot 2.X 实战--Shiro(Token)登录和注册

源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2在上一节"Spring Security (Token)登录和注册"中,主要介绍了 Spring Boot 整合 Spring Security 实现 Token 的登录和认证,这一小节中,我们将实现 Spring Boot 整合 Shiro 实现 Token 的登录和认证。1)A...

2020-04-16 01:06:47 788

原创 Spring Boot 2.X 实战--Spring Security (Token)登录和注册

博客主页:https://me.csdn.net/u010974701源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2在上一节《Spring Boot 2.X 实战–Spring Security 登录和注册》中,我们主要整合 Spring Security,实现了用户的注册、登录和权限控制。在这一节中,我们将实现基于 Tok...

2020-04-12 09:29:15 2688 3

原创 Spring Boot 2.X 实战--Spring Security 登录和注册

作者:小先博客主页:https://me.csdn.net/u010974701源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2对于 Web 系统来说,对页面和 API 接口的访问权限进行安全控制是必须的,例如需要阻止非系统用户的访问,控制不同页面或接口的访问权限。在 Java 开发中,常用的安全框架有 Spring Secu...

2020-04-12 09:27:42 943

原创 Spring Boot 2.X 实战--消息队列(RocketMQ)

作者:小先博客主页:https://me.csdn.net/u010974701源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2在上一小节《实战 SQL 数据库(MyBatis)》中,主要介绍了 MyBatis 如何连接数据库,实现数据的增删改查等操作。这一小节,将实战 Spring Boot 整合 RocketMQ。消息中间...

2020-04-12 09:25:18 721

原创 Spring Boot 2.X 实战--SQL 数据库(MyBatis)

小先博客主页:https://me.csdn.net/u010974701源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2

2020-04-12 09:22:34 211

原创 Spring Boot 2.x 实战--SQL数据库(Spring Data JPA)

小先博客主页:https://me.csdn.net/u010974701源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2文章目录1、什么是 Spring Data JPA2、Spring Data JPA 的配置2.1、依赖引入...

2020-04-12 09:20:35 274 1

原创 Spring Boot 2.x 实战--日志打印与输出到文件

小先博客主页:https://me.csdn.net/u010974701源代码仓库:https://github.com/zhshuixian/learn-spring-boot-2文章目录1、Java 日志框架和日志门面1.1、常用的日志框架1.2、日志门面2、实战 Log4j2 与 S...

2020-04-12 09:17:31 1921

原创 Python 实现 WSL 2 自动 Windows 主机IP和端口转发,可远程 SSH 登录和访问

WSL 2 自动 Windows 主机IP和端口转发,实现 SSH 远程登录和访问,解决 WSL 2 IP 地址变动无法直接 SSH 登录。 WSL 2 的一个神坑是,每次重启后的 IP 地址不一样,通过此方法实现 SSH 远程登录 WSL 2。

2020-04-12 00:21:36 7855 3

原创 Spring Boot 2.x 实战--第一个Spring Boot程序

实战 Spring Boot 2.X 创建、运行和打包你的第一个 Spring Boot 项目,创建 RESTful API 接口并对接口进行单元测试。

2020-03-10 23:50:10 391

原创 Spring Boot 2.x 实战–什么是 Spring Boot?

主要介绍了 Spring Boot 和如何创建 Spring Boot 的项目。Spring Boot是 Pivotal 团队开发的、用于简化 Spring 应用的开发的开源框架。其通过自动配置和习惯优于配置的理念,使得 Spring Boot 应用程序几乎不需要繁琐的 Spring 配置,极大的提高开发效率。

2020-02-04 15:29:32 336

原创 Python3 pytesseract识别简单的验证码

Python3 pytesseract识别简单的验证码

2019-03-16 11:24:46 701

原创 Python3 selenium保存网页base64编码图片

Python selenium保存网页base64编码图片:from selenium import webdriverfrom base64 import b64decodeimport timeurl = "url"driver = webdriver.Chrome()driver.maximize_window()driver.get(url)time.sleep(0.5)...

2019-03-16 11:12:39 3559 3

原创 Ant Design构建完成后与Spring Boot集成部署

Ant Design构建完成后只有一个index.html页面和一些js、css文件,当使用browserHistory,如果直接放在Spring Boot的resource/static文件夹下面,当浏览器直接访问或者在非 "/ “,”/index"路径刷新时,由于服务器无法正确响应,会直接触发404报错。

2019-02-12 21:17:48 9198

原创 umi.js proxy设置https请求不验证证书-- 解决SELF_SIGNED_CERT_IN_CHAIN

在使用Ant Design Pro时候,服务器端使用了自己keytool生成的证书,在config.js设置代理请求的时候报错:[HPM] Error occurred while trying to proxy request /myapi/user/login from localhost:8000 to https://localhost:8443 (SELF_SIGNED_CERT...

2019-02-10 23:34:35 8541

原创 Linux安装MySQL8

所有命令在root权限下执行。1.下载MySQL下载MySQL 8.0 https://dev.mysql.com/downloads/mysql/在这我们选择Linux 32位或者64位的 .tar.xz 压缩包:开始下载:2.安装依赖2.1 APT安装> apt-cache search libaio # 可忽略 搜索软件包信息> apt-get install...

2019-01-02 17:01:51 804

原创 Windows源码安装PyTorch 0.4

在Windows安装源码安装PyTorch 0.4。 Windows 10 Home Visual Studio 2017 Community CUDA 9.0 + cuDNN 7.0 Anaconda 5,Python 3.6.41、安装软件1.1、安装Visual Studio需要安装Visual Studio 2017,免费的Community...

2018-04-03 18:06:25 2815 2

原创 Android学习笔记--控件事件绑定方式

Android常用的控件事件绑定的方式有四种:匿名内部类作为事件监听器内部类作为事件监听器Activity作为事件监听器layout布局文件的控件属性绑定事件  首先,打开Android Studio新建一个BindingEvents项目。

2017-03-17 10:54:39 1238

空空如也

空空如也

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

TA关注的人

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