自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis Dynamic SQL

问题1、pom.xml中plugin配置不同,会导致Mapper文件中生成缺少如下的几个xxxxPrimaryKey方法。

2023-07-26 14:45:38 179

原创 虚拟机搭建k8s集群

1、连接方式:host-only networks,关联之前手动创建的LAN网络(k8s集群节点内部通信)ip范围不要和k8s内部一些默认ip重叠,否则后续搭建集群、集群通信可能有问题。2、连接方式:桥接网卡,关联物理机的无线网卡(连接外网,安装k8s等)

2023-06-02 19:25:24 253

原创 k8s入门学习

k8s入门

2023-04-02 15:32:27 97

原创 Docker学习总结

docker

2023-02-09 01:12:05 131 1

原创 跨域那些事儿

跨域相关问题

2023-01-30 01:15:19 91

原创 MapUtil

@Slf4jpublic class MapUtil { private static BiConsumer<Map<String, String>, String> saveNullField = (map, key) -> map.put(key, null); private static BiConsumer<Map<String, String>, String> ignoreNullField = (map, key).

2021-10-07 19:43:32 208

原创 Java随笔7-stream api

jdk8 stream api的常见用法:public class Student { private Integer id; private Integer age; private String name; //getter and setter}public class Clbum { private List<Student> students; //getter and setter}List<Clbu

2021-10-07 19:38:46 75

原创 vue随笔-踩坑

1、select选择器回显到页面失败原因:后端接口返回的选项类型(item.value)与选中值(selectedValue)类型不一致<el-select v-model="selectedValue" placeholder="请选择"> <el-option v-for="item in cities" :key="item.value" :label="item.label" :value="item.value"&

2021-09-15 10:58:55 125

原创 Java随笔6-并发-AtomicXxxxFieldUpdater

一个对象的属性 x 只是用基本数据类型或者引用类型声明,通过getter、setter等方式修改变量的值,在并发情况下无法保证原子化。一种常规的解决思路是将该属性修改成AtomicXxxx等原子类型,例如:public class Product { public int stock = 0; public int getStock() { return stock; } public void setStock(int stock) {

2021-08-31 01:18:02 118

原创 Java随笔5-引用

设定虚拟机参数:-Xmx20m,执行以下代码:public class ReferenceTest { @Test public void test() { SoftReference<byte[]> softReference = new SoftReference<>(new byte[1024 * 1024 * 10]); System.out.println("软引用,gc前:" + softReference.get(

2021-07-18 17:16:33 52

原创 Java随笔4-lombok使用注意(持续补充)

1.@Data注解(1)自动生成boolean equals(final Object o)、int hashCode()方法,但是equals、hashCode方法仅使用当前类声明的属性,不使用父类的属性参考:Lombok的@Data生成的hashCode和equals方法坑

2021-07-14 15:03:50 75

原创 Java随笔3-TransmittableThreadLocal

阅读本文前,需要了解① ThreadLocal的特性,参考:Java随笔1-ThreadLocal② InheritableThreadLocal的特性,参考:Java随笔2-InheritableThreadLocal③ transmittable:adj.可传送的,可传播的④ TransmittableThreadLocal 是Alibaba开源的,需配合TtlRunnable 和 TtlCallable 使用<dependency> <groupId&.

2021-07-11 16:33:09 264

原创 Java随笔2-InheritableThreadLocal

Inheritable:adj. 可继承的;会遗传的1、特性相比ThreadLocal,InheritableThreadLocal有什么特性?可从以下demo窥探一二:import org.junit.Test;import java.util.concurrent.CountDownLatch;public class InheritableTLTest { InheritableThreadLocal<String> inheritableTL = new

2021-07-10 20:30:31 142

原创 (反)序列化方式

jdk、msgpack、protobuf的(反)序列化1. Protobuf的准备工作参考:https://hi-dhl.com/2020/10/28/android/05-probuff-mac/① mac安装protobuf:brew install protobuf② idea的resource目录下编写Person.proto文件:syntax = "proto3";option java_package = "com.phei.encode";option java_o

2021-05-07 14:20:37 353

原创 Java的IO

本文根据《Netty权威指南(第2版)》第2章关于时间服务器的demo程序,概括地描述各种IO的主要用法,站在更宏观的角度看清差异。一. 传统的BIO1. 时间服务器的设计(1)客户端①. 构建Socket(阻塞,直到与服务器建立连接)②. 通过socket获取输出流、写入请求信息③. 通过socket获取输入流、读出响应信息(阻塞,直到读取到指定大小or指定结束符)(2)服务端①. 构建ServerSocket②. 监听请求(阻塞,直到读取到客户端请求)③. 监听到

2021-05-02 16:54:55 67

原创 Kafka学习笔记1

1. 主题与分区(1)每个主题分为若干分区,同一个分区存在多个副本,副本分为两类:领导者副本(Leader Replica)、追随者副本(Follower Replica)。副本们分散在不同的Broker上,保存了相同的消息序列,从而避免部分Broker宕机带来的数据不可用。(2)追随者副本不能响应消费者和生产者的读写请求,优点:①实现Read-your-writes:如果读取追随者副本,可能读取不到最新消息②实现单调读(Monotonic Reads):如果读取追随者副本,各追随...

2021-02-13 12:33:06 163 1

原创 zookeeper-配置中心

平常工作中经常使用公司的配置中心修改特定服务的配置,修改配置后,部署在不同机房不同机器的服务都能够及时跟随配置的变化。这个功能就是通过zookeeper实现的,同时结合了spring、java自定义注解,便于业务根据线上情况灵活调整。本文介绍通过zookeeper的api实现简单的服务监听配置功能。代码包括如下三个部分:配置客户端类ConfigClient、应用服务类Service、本地配置类MyConfig,关系如下:ConfigClient通过与zookeeper服务器交互,修改MyConf

2021-01-18 11:11:33 751

原创 zookeeper-基础

作为学习笔记,本文记录了《Zookeeper分布式过程协同技术详解》学习过程中的一些基础知识。一、概念1. 是什么,有什么用?zookeeper = 运行在一组服务器上的zookeeper服务 + 客户端API。通过zookeeper的客户端API,能够帮助构建分布式系统,实现分布式系统的一些核心功能:数据发布/订阅、群首选举、分布式锁等。2. 什么叫帮助构建?zookeeper没有直接实现满足协作需求的功能,比如没有直接提供分布式锁机制的3个基本方法:创建锁、获取锁、释放锁。但是通过z

2021-01-17 21:57:14 231

原创 递归与非递归的二叉树遍历

import java.util.ArrayList;import java.util.List;import java.util.Stack;import org.junit.Test;public class BinaryTreeTraverse { class TreeNode { int val; TreeNode left; TreeNode right; public TreeNode(int val) .

2021-01-12 00:56:39 79 1

原创 二叉搜索树

import java.util.ArrayList;import java.util.List;public class BinarySearchTree<Key extends Comparable<Key>, Value> { Node<Key, Value> root; Node get(Node node, Key k) { if (node == null) { return null; .

2021-01-12 00:11:21 55

原创 排序算法

import org.junit.Test;import java.util.Random;/** * 从小到大的排序算法 */public class SortMain { private void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } private static int lengt.

2021-01-09 15:59:41 57 1

原创 spring系列7-事务的实现

目录1. demo代码2. 实现原理2.1 如何生成代理2.2 如何执行事务逻辑本文按照《spring源码深度解析》的思路,学习spring基于注解实现声明书事务的原理。1. demo代码(1)结构:(2)代码package com.dbtest.pojo;import java.util.Date;public class Employee { private Integer id; private String name; private int

2021-01-03 21:54:21 101

原创 IDEA随笔

1. debug的自动调用toString()如下图,是否开启toString()会影响同一段源码在debug下执行的中间过程: vs.

2021-01-02 21:59:04 88

原创 Maven随笔

目录一、生命周期和阶段二、配置三、依赖四、插件五、指令一、生命周期和阶段maven有以下三个标准的生命周期: clean:项目清理的处理,包含3个阶段:pre-clean、clean、post-clean default(或 build):项目部署的处理,包含23个阶段:validate、...、compile(编译)、...、package(打包)、...、deploy(部署) site:项目站点文档创建的处理 二、配置优先级:项目的pom.x

2021-01-02 21:57:55 121

原创 Java随笔1-ThreadLocal

1. Java内存模型Java内存模型定义了多线程访问Java内存的规范:Java内存模型将内存分为了主内存和工作内存。类的状态是存储在主内存中的,每次Java线程需要主内存中的变量时,都会读一次主内存中的变量,并将这些变量在自己的工作内存中保存一份拷贝,当运行本线程的代码时候,操作的都是自己工作内存中的变量副本。在线程代码执行完毕之后,会将最新的值更新到主内存中去。2. ThreadLocal import org.junit.Test;import java.util.Ra...

2021-01-02 21:04:28 136

原创 AOP实践-Spring AOP与Aspectj

目录一、对比二、spring-aop三、aspectj1、编译期织入(无lombok)(1)基于Intellij编译(2)基于maven编译2、编译后织入(解决lombok冲突)一、对比 spring-aop aspectj 实现代理的方式 动态代理: 运行时织入 静态代理: ① 编译期织入:把切面类和目标类放在一起用ajc编译; ② 编译后织入:已生成.class文件或打成jar包,再做增强处.

2021-01-02 21:02:35 621 2

原创 spring系列6-springmvc的实现初探

1. web服务器的启动与ioc容器的初始化(1)根IOC容器初始化在web环境中使用ioc容器,需要将ioc容器的初始化与web服务器的启动集成在一起,关键在于web.xml配置文件中的监听器:<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h...

2020-12-19 22:19:46 436 2

原创 spring系列5-IOC的三级缓存

1. demo//Child类依赖Mother类public class Child { private Mother mother; public Mother getMother() { return mother; } public void setMother(Mother mother) { this.mother = mother; }}//Mother类依赖Child类public class Mother { private Child chil

2020-12-01 18:29:47 1304

原创 spring系列3-IOC的实现初探

protected void autowireByType( String beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs) { TypeConverter converter = getCustomTypeConverter(); if (converter == null) { converter = bw; } //对于java容器类属性,autowiredBean.

2020-12-01 00:51:09 253 3

原创 spring系列1-基于源码搭建普通工程&web工程

ps:尝试过编译不同版本的spring源码,各种报错,各种搜索,有些没解决。这里记录了成功编译5.0.x版本的过程1. 集成开发工具-idea2. 获取源码(1)通过idea导入源码(2)仓库地址① 直接填入github的spring-framework项目地址:https://github.com/spring-projects/spring-framework.git如果github无法访问,参考:https://www.jianshu.com/p/eea7e1276d2

2020-11-25 01:18:50 1047

原创 spring系列4-AOP的实现

目录1. Demo2. AOP过程解析2.1 生成代理2.2 执行代理逻辑1. Demo首先是大家很熟悉的spring aop应用:(1)准备工作://工人接口public interface Worker { void work();}//普通工人类public class OrdinaryWorker implements Worker { @Override public void work() { System.out.println("*.

2020-11-12 01:21:19 294 4

原创 spring系列2-beanDefinition的载入与解析

1. BeanDefinition的Resource定位ResourceLoader定义方法:Resource getResource(String location)ResourcePatternResolver定义方法:Resource[] getResources(String locationPattern)因此,所有ApplicationContext都具备的能力:从location解析单个资源(从DefaultResourceLoader继承)、从locationPattern解析多

2020-11-02 01:07:28 138 2

空空如也

空空如也

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

TA关注的人

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