自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (5)
  • 收藏
  • 关注

原创 Mysql表结构导出成.md的表格形式

C:\Users>cd Desktop/mysql_markdown-masterC:\Users\Desktop\mysql_markdown-master>C:\Users\Desktop\mysql_markdown-master>mysql_markdown -hflag needs an argument: -hUsage: mysql_markdown [options...]--help This help text-h host. def.

2021-08-27 09:59:45 605

原创 netty 堆外内存溢出之ByteBuf

在使用netty实现服务端或者客户端读取数据时,我们一般会继承SimpleChannelInboundHandler重写channelRead0方法,这个netty会自动帮我们释放堆外内存。但是我们在业务逻辑中使用类似readBytes方法读取到ByteBuf则需要我们手动调用release()方法去释放,不然就会挤压,jvm的GC也不会对其进行回收,直到netty抛出堆外内存溢出异常。io.netty.handler.codec.DecoderException: io.netty.util.i

2021-01-05 13:57:24 859

原创 自己实现一个自动装配注解@EnableAutoConfiguration

创建工程首先创建一个springboot的工程,maven配置不需要修改添加demo、demo1、demo2三个包,我们将启动类放入demo包中。分别在demo1、demo2中创建测试配置类。MyBatisConfig@Configurationpublic class MyBatisConfig { @Bean public MyBatis getMyBaties(){ return new MyBatis(); }}public class

2020-12-31 16:23:48 291

原创 springboot starter自动装配核心

@SpringBootApplicationSpringBootApplication注解我们进去看源码主要包括@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration,其他都是普通的java注解。@ComponentScanComponentScan是SpringFramework里面的,主要用来扫描包下面的类。这里使用它主要是配合@EnableAutoConfiguration注解来进行自动装载。@SpringBootCon

2020-12-31 15:54:58 114

原创 springboot 自定starter

starter介绍starter可以帮我们配置各种依赖库,解决各种配置信息的困扰。同时starter时springboot的核心之一,实现了springboot的依赖引入,自动装配。核心注解@Configuration 表明是一个配置文件,被注解的类将成为一个bean配置类@Bean 表示将注解的方法返回的bean交给IOC容器管理,可以通过 @Autowired进行DI注入starter编写创建一个新的工程spring-boot–starter-demomaven配置<?xml ve

2020-12-31 15:00:13 66

原创 java ftp 连接池

Ftp连接池maven引入,主要引入ftp的包和连接池的包 其他默认使用spring的包。 <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3</version> </depende

2020-12-31 14:13:56 1502

原创 findBugs 总结

1、 lombok注解的基类 Date Timestamp 数组类型的字段get set问题,findBugs认为这些类型的字段应该副本,手动生成的get set也会有。一般推荐使用副本如:public Date getDate(){ retuen (Date)date.clone();}public void setDate(Date date){ this.date = (Date)date.clone();}2、hashCode 和 equels 方法问题3、

2020-12-01 17:57:57 192

原创 netty 服务端主动向客户端发信息

在使用netty时,有时候会和客户端保持长链接,这个时候服务端既可以接受客户端消息也可以主动发送消息给服务端。我们只需要在服务端保存客户端的ChannelHandlerContext对象,必要的时候通过write和flush方法即可实现服务端和客户端的通信。以下为handler的代码,其他代码和普通的netty一样。public class AcceptServerChannelHandler extends ChannelInboundHandlerAdapter { public s

2020-11-12 18:14:11 7696 7

原创 mybatis 返回两个字段映射成map返回

<resultMap id="daSensorKeyMap" type="java.util.Map"> <result property="key" column="key"/> <result property="value" column="citenum"/> </resultMap> <select id="getDaSensorKeyList" resultMap="daSensor...

2020-09-24 14:21:25 3727 2

原创 win 10 下git报错 Git Pull Failed remote: HTTP Basic: Access denied Authentication failed

修改了git密码以后发现报错Git Pull Failedremote: HTTP Basic: Access denied Authentication failed for 'http://****/gitlab/local-projects/zc-backend.git/' 百度了好久发现是win凭证没有修改。打开控制面板:进入Control Panel\User Accounts\...

2020-01-09 10:42:53 922

原创 springboot 使用线程池,异步执行方法

一、线程池配置类package com.lh.spring.boot.thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotati...

2019-12-09 15:58:48 735

转载 【JVM】探究Java常量本质及三种常量池

一、静态常量池所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。这种常量池主要用于存放两大类常量:字面量(Literal)和符号引用量(Symbolic References),字面量相当于Java语言层面常量的概念,如文本字符串,声明为final的常量值等,符号引用则属于编译原理方面...

2019-09-30 14:40:52 152

原创 Java中线程安全的List

简单说一下java中线程安全的List一、VectorVector是大家熟知的线程安全的List集合,不过他的性能是最差,所有的方法都是加了synchronized来同步,从而保证线程安全。源码也是使用数组来存储数据,有以下构造方法。 /** * Constructs an empty vector with the specified initial c...

2019-09-29 14:06:53 34121 1

原创 TCP的三次握手与四次挥手

TCP的链接建立与终止TCP是面向连接的协议,所以在双方进行数据交互之前,必须先建立连接。而一个TCP连接的建立与断开需要进行交互7个数据包才能完成,也就是常说的“三次握手,4次挥手”。建立与断开连接都是通过TCP首部中的控制字段来实现的,所发送的TCP数据包也都是不包含数据,只有首部信息的。 1. 建立连接(1)首先,客户端发送一个TCP报文段请求建立连接,其中的TC...

2019-09-24 16:59:00 109

原创 Spring JPA 的UUID单独映射查询

接收的一个JPA的框架,以前都是Mybaties,以前代码都是查询所有字段,改代码发现很多并不需要全部字段,只要Id,或者id和name就足够了。然后按照mybaties的方法写了好多代码都不行,最好才发现可以这样...@Repositorypublic interface DashboardRepository extends JpaRepository<Dashboard, U...

2019-09-19 14:40:46 348

原创 PostgreSQL uuid 类型数据使用java String 插入更新问题问题

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.siem...

2019-09-12 14:46:14 962

原创 netty 手动实现tomcat的简单功能

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。现在我们通过netty来实现一些Tomcat的简单功能。//1、启动端口(IP),默认8080 , S...

2019-08-15 15:29:01 677

转载 漫画:什么是冒泡排序?

————— 当天上午 —————什么是冒泡排序?冒泡排序的英文Bubble Sort,是一种最基础的交换排序。大家一定都喝过汽水,汽水中常常有许多小小的气泡,哗啦哗啦飘到上面来。这是因为组成小气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。...

2019-08-12 17:02:22 113

转载 漫画:什么是二分查找?(修订版)

本次修正了周一发布漫画中所存在的两个小问题:1.猜数字游戏中,大黄报出“175”,小灰应该回答“大了”,而不是“小了”。2.代码中,获取中位数下标的逻辑不能写成mid=(start+end)/2,这样写的话,如果start和end值很大,有可能出现溢出。最严谨的写法是:mid=start+(end-start)/2。非常感谢大家的指正!...

2019-08-12 16:57:39 114

转载 漫画:什么是选择排序?

————— 第二天 —————————————————我们假定要获得升序数列,冒泡排序的原理是什么呢?顾名思义,就是把每一元素和下一个元素进行比较和交换,使得较大的元素像气泡一样向右侧移动:这样一来,每一轮操作都可以把一个最大元素移动到最右侧,经...

2019-08-12 16:24:02 143

转载 漫画:什么是插入排序?

————— 第二天 —————人们如何进行扑克牌的排序呢?举个例子,比如我手中有红桃6,7,9,10这四张牌,已经处于升序排列:这时候,我又抓到了一张红桃8,如何让手中的五张牌重新变成升序呢?用冒泡排序,选择排序,亦或是快速排序?恐怕正常人打牌的时候都不会那么做。最自然也最...

2019-08-12 15:36:34 131

原创 基于Netty的Rpc框架的简单实现

RPC是Remote Procedure Call的简称,即远程过程调用,通过rpc,我们可以像调用本地接口一样,调用远程接口。在这个过程中,我们不需要关注接口的实现。实现rpc的框架很多,比如著名的dubbo框架,这里介绍通过netty来实现一个简单的rpc。//1、定义测试Service接口IHelloService//2、定义一个参数传输类,RpcRequestInfo//3、实...

2019-08-09 16:29:01 406

原创 手动实现springMVC的简单功能

1、定义注解类@LhController @LhService @LhAutowired @LhRequestMapping@LhRequestParam 可参考spring的注解定义2、配置 web.xml 主要配置 DispatherServlet3、配置扫描路径scannerPath = com.lh.spring.mvc4、IOC初始化1)从写Servlert的 in...

2019-07-22 15:10:10 183

转载 Synchronized 与 ReentrantLock 的区别

可重入性:从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。锁的实现:Synchronized是依赖于JVM实现的,而ReenTrantLock是JDK实现的,有什么区别,说白了就类似于操作系统...

2019-07-09 16:12:03 81

转载 手撕面试题ThreadLocal

说明面试官:讲讲你对ThreadLocal的一些理解。那么我们该怎么回答呢????你也可以思考下,下面看看零度的思考; ThreadLocal用在什么地方? ThreadLocal一些细节! ThreadLocal的最佳实践! 思考 ThreadLocal用在什么地方?讨论ThreadLocal用在什么地方前,我们先明确下,如果仅仅就一个线程,那...

2019-06-27 20:32:48 132

转载 JVM运行时区域(JVM内存)详解

我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。线程不共享区域每个线程的数据区域包括程序计数器、虚拟机栈和本地方法栈,它们都是在新线程创建时才创建的。程序计数器(Program Counter Rerister)程序计数器区域一块内存较小的区域,它用于存储线程的每个执行指令,每个线...

2019-06-06 15:30:48 140

转载 图解 Java 垃圾回收机制,写得非常好!

什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文...

2019-06-06 15:23:16 102

原创 使用socket手动实现一个简单的RPC框架

RPC要解决的两个问题:解决分布式系统中,服务之间的调用问题。 远程调用时,调用者不必知道服务端的实现逻辑,直接调用即可。首先创建类RpcRequestModel,主要用来传递调用信息。该类需要实现Serializable接口,socket传输的时候可能需要序列化和反序列化。package com.lh.spring.boot.zk.rpc;import java.io.Se...

2019-05-31 16:26:56 336

原创 sql server 模糊查询通配符%和下划线无法匹配问题

在sql server的like中%和下划线类似于通配符%,所以无法使用like '%%'来匹配,可以通过以下两种办法实现匹配1、使用escape 来解决like '%\_%' escape '\' like '%|_%' escape '|'这里的escape就是将后面的字符指定为转义字符,可以使用任意字符来作为转义字符。2、将%或者下划线替换成[%]或[_]来匹配l...

2019-05-30 14:47:22 2159 1

转载 项目中常用的19条MySQL优化

本文总结了19条关于Mysql的优化方案,都是基于 “ Mysql-索引-BTree类型 ” 的优化方案,希望对大家有帮助。1、explain做MySQL优化,我们要善用explain查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索...

2019-05-27 17:20:10 118

转载 花马云10亿无作为,被同事骂的当众落泪,后为阿里创造4500亿价值

那个骗走马云10个亿,被阿里同事指着鼻子让他滚蛋的人,后来怎么样了?后来,他成为阿里巴巴集团首席技术官,而且被公认为,近10年来,中国最好的首席技术官。他叫王坚,被称为“阿里云之父”,阿里最受争议的领导,曾被骂了整整4年,在开会时委屈到流泪。王坚对马云有多重要?他让阿里拥有了自己的技术,帮阿里巴巴在全球拿下超过140万客户,为全球76.5万用户提供云计算和大数据的服务,年营收112...

2019-05-27 13:13:19 322

原创 Java类加载器

从Java虚拟机的角度来说,只存在两种不同的类加载器;一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机的一部分,另一个就是其他类加载器,由Java语音实现,独立于虚拟机外部,并且全部继承抽象类java.lang.ClassLoader。从Java开发者的角度来说,可以更细化的分为启动类加载器(Bootstrap ClassLoader)...

2019-05-22 20:46:44 97

原创 Java中的几种对象引用方式及相对的垃圾回收策略

Java中有几种不同的引用方式,它们分别是:强引用、软引用、弱引用和虚引用,这4种引用强度依次逐渐减弱。强引用(Strong Reference)强引用是java中最普遍的引用,如“Object object = new Object()”。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java 虚拟机宁愿抛出 OutOfMemoryErr...

2019-05-21 20:43:58 258

转载 内存溢出和内存泄漏的区别、产生原因以及解决方案

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导...

2019-05-21 09:20:56 142

转载 MyBatis-Plus 相关注解用法

注解介绍 MybatisPlus 注解包相关类详解(更多详细描述可点击查看源码注释)注解类包:

2019-05-17 20:53:41 2201

转载 mybatis 动态 SQL详情

动态 SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句...

2019-05-17 17:43:06 128

转载 SpringBoot整合MyBatis-Plus快速入门

简介MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。愿景我们的愿景是成为 MyBatis 最好的搭档,就像魂斗罗中的 1P、2P,基友搭配,效率翻倍。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能...

2019-05-17 15:21:59 657

转载 深入了解spring,从零实现IOC容器

IOC (Inversion of Control) 控制反转。熟悉Spring的应该都知道。那么具体是怎么实现的呢?下面我们通过一个例子说明。1. Component注解定义package com.lh.spring.study.ioc;import java.lang.annotation.ElementType;import java.lang.annotation.Ret...

2019-05-16 20:40:04 120

原创 springboot整合简单的quartz定时任务

maven配置文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/...

2019-05-15 21:58:59 123

原创 springboot整合swagger,使用bootstrap的UI

话不多说直接上代码一、maven配置文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc...

2019-05-15 20:39:46 1556 4

手动实现springmvc的简单功能

手动实现springmvc的简单功能

2020-12-31

springboot starter实现包

springboot starter实现包

2020-12-31

netty的rpc协议的简单实现

netty的rpc协议的简单实现

2020-12-31

java 串口jar包和dll文件

java 串口jar包和dll文件

2020-12-31

java 虚拟串口模拟工具

java 虚拟串口模拟工具

2020-12-31

空空如也

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

TA关注的人

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