自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大头虾!!

知道的越多,不知道的越多

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

原创 JVM知识总结

JVM总结一、JVM的介绍JVM是一种规范,也是Java能跨平台运行的基础JVM有很多实现,像HotSpot,Jrocket(曾号称世界上最快的JVM,后被Oracle公司收购,合并于HotSpot中),J9,TaobaoVM,zing(zual公司开发的很牛的非开源商业产品,很贵但是回收速度非常快,其内垃圾回收算法被HotSpot吸收后才有了ZGC)。同一种实现在不同平台的实现细节是不一样的,就像Windows系统的HotSpot和Linux的HotSpot就不一样,所以才能根据同一份clas

2021-07-08 22:56:43 375 4

原创 redis的事件驱动模型(redis如何处理客户端连接和命令的)epoll 多路复用IO NIO

redis的事件驱动模型今天来说说redis的事件驱动模型,这是redis能hold住10w的ops的原因之一下面用一张图表示整个过程(一直坚信画图是理解和讲明白一件事最容易的方式)redis底层用的是多路复用IO事件驱动模型,至于多路复用IO,内核逐渐提供了命令select,epoll,kqueue做为多路复用IO的实现,至于redis调用什么命令,还得看平台和内核,有的内核提供了epoll命令就用epoll,没有就用select,Mac平台是kqueue,这里我以linux系统,epoll命令为

2021-05-13 09:59:50 300

原创 算法模块学习之位运算

这里记录几个位运算,防止自己忘记1.a^b--------无进位相加,跟我们平时加法一样,只不过这个不会有进位信息比如:6^5---->00000…00000000110--------------------00000…00000000101----------------- = 00000…00000000011 也就是3所有就有:0^a=a ; a^a=02.a & ((~a) + 1) --------把一个int类型的数,提

2021-04-29 17:55:56 189

原创 算法模块学习之二叉树- 前序排序、中序排序、后序排序

目的:分别打印二叉树- 前序排序、中序排序、后序排序结果public static class Node { Node left; Node right; int value; public Node(int value) { this.value = value; } }首先了解一下前序排序、中序排序、后序排序是怎样的前序排序:对于每个节点都要满足,先打印节点,再打印左树,再打印右树

2021-04-28 17:52:03 1378

原创 Caused by: java.sql.SQLException: Data truncated for column at row 1

Caused by: java.sql.SQLException: Data truncated for column ‘TEMPLATE_MOULD’ at row 1这种是插入数据有问题,像我这里TEMPLATE_MOULD字段是enum类型的,只能传几个值,但是前端传的值漏了个字母,然后后端这里也没做校验就插入数据库了,所以会报这个错;比如这个字段只能存aa,bb,cc,结果传了个ab就保存不了了...

2021-04-28 10:37:42 867

原创 ThreadLocal源码深入解析-----弱应用使用场景

我们都知道ThreadLocal可以做到每个线程独有一份副本,相互之间不影响,怎么做到的呢?a.先来看看ThreadLocal的set方法a.1 来看看set方法的大概轮廓:首先拿到当前线程,获取当前线程的threadlocalmap;如果map不为空,就将this作为key,set进去map,这里的this是set()方法的调用者,也就是threalloacl本身;如果为空,就以当前线程为参数创建一个新的map。a.1.1 来看看getMap(t)方法,这里很简单,就是获取当前线程的一个成员变量

2021-04-27 18:56:31 117

原创 AQS源码深入解析-----ReentrantLock源码深入分析解读

今天来讲一下AQS中的一个类:ReentrantLock首先了解一下ReentrantLock的大致结构,它实际上是维护了一个双向等待链表作为等待队列,然后定义了volatile修饰的state变量作为锁的标志位,具体为0代表锁没有被使用,1或者1以上(锁重入就有大于1的情况)代表锁被使用了由于ReentrantLock有公平锁和非公平锁之分,源码上也分为fair和nonfair两个支流,但二者相差不大,区别只是nonfair模式争抢锁的时候没有询问队列上有没有等待者,也就是没有在等待队列排队,一上来

2021-04-19 17:35:52 153

原创 设计模式模块学习之责任链模式、装饰器模式

责任链模式有点像工厂的加工工序,每个加工工序都有自己的责任,各个工序从头到尾顺序执行,责任链之间也可以聚合,实际使用场景为java的过滤器filter,下面是图解下面是类图装饰器模式相当于加强类,在原本基础上加点其他装饰,比如在人的基础上,加个帽子,加个尾巴等实际使用场景为io流FileInputStream fileInputStream = new FileInputStream(new File(""));InputStreamReader inputStreamReader = new

2021-04-07 18:01:52 275

原创 设计模式模块学习之门面模式、调停者模式

门面模式和调停者模式都是解耦的过程以下定义一个群众去政府办事情的场景,我们都知道平常去办一件事,要跑好几个部门,这个部门改完章要去别的部门签字,签字前还要开xx证明等这里的群众与各个部门就是完全耦合的,这时候多想政府开一个部门,办任何事,就和这个部门打交道就行了,至于事情怎么办好的,群众不用管。这就是门面模式了,将视图层面和数据模型层面分离,也就是mvc中的mv分离,各司其职但是各个部门内部之间还是有耦合的,因为各个部门之间要打交道,这时候要是有个中间者,也就是调停者,各个部门只需要和它打交道,就

2021-04-07 17:37:05 118

原创 设计模式模块学习之工厂模式

工厂模式有三种:简单工厂,工厂方法,抽象工厂简单工厂简单工厂比较简单,就是封装一层生成对象的类,所有生成对象都放在这个类,可以把生成对象的任意类称为简单工厂工厂方法:工厂方法跟简单工厂不一样的地方在于每个对象都有其对应的工厂类生成,利于扩展,遵循开闭原则,单一原则以下模拟场景,人开车,开飞机定义交通工具抽象类public abstract class Vehicles { abstract void go();}定义工厂抽象类public abstract class Vihe

2021-04-02 17:33:52 138

原创 设计模式模块学习之策略模式

这里模拟一个排序大小的场景,定义一个Cat类,有height,weight属性,Cat类里面定义了Cat类按height比较大小,即height值大Cat就大,代码如下定义一个比较接口,所有要比较的类都要实现这个接口,规范化,便于后面代码编写,多态使用public interface Comparable<T>{ int compare(T t);}定义Cat类实现Comparable接口public class Cat implements Comparable<Ca

2021-04-02 16:44:20 89

原创 算法新手模块学习之单链表实现队列,栈 双链表实现双端队列

单链表实现队列,栈首先定义一个单链表Node static class Node<V> { Node next; V value; public Node(V value) { this.value = value; } }单链表实现队列,遵循先进先出,后进后出简单画图说一下解法思路,这里拿inPutTail方法为例(我觉得链表问题画画图就好理解好多了)第一次插入的时候,因为是从尾

2021-03-31 18:37:10 134

原创 设计模式模块学习之单例模式

1.平常写法之饿汉式:缺点是不管用到与否,类加载时就实例化对象public class SingleTon { private static SingleTon INSTENCE = new SingleTon(); private SingleTon() { } public static SingleTon getInstence(){ return INSTENCE; } }2.平常写法之懒汉式:public class LazyS

2021-03-28 15:05:17 89

原创 算法新手模块学习之等概率返回随机数

/** * 1.已知fOrinal()函数可以等概率返回1~5(整数类型),要求等概率返回 1~7 */ //模拟系统给的fOrinal()函数,等概率返回1~5 public static int fOrinal() { return (int) (Math.random() * 5) + 1; }//第一步:利用fOrinal()函数等概率返回0和1(注意不是范围0~1,是返回数字0和数字1)//思路:因为fOrinal()函数等概率..

2021-03-25 09:22:16 350

原创 算法新手模块学习之 选择排序,冒泡排序,插入排序

/*给个数组,按从大到小排序* */public static void main(String[] args) { int[] arr1 = {5, 9, 8, 2, 7, 3, 7, 2, 1, 4, 3}; int[] arr2 = {5, 9, 8, 2, 7, 3, 7, 2, 1, 4, 3}; int[] arr3 = {5, 9, 8, 2, 7, 3, 7, 2, 1, 4, 3}; printArr(arr1); selectSor

2021-03-19 10:06:14 112

原创 算法新手模块学习之打印int类型变量的二进制

/*给一个数字,打印出它的二进制* */public static void main(String[] args) { int num = -5; int num2 = -num; int num3 = ~num+1; print(num); print(num2); print(num3);}public static void print(int num){ for (int i = 31; i >=0 ; i--) {

2021-03-18 10:07:47 505

原创 Java word(doc/docx)转pdf 无水印/免费

最近项目有个需求需要将word转为pdf。网络上有好多种方案:spire,aspose,jacob等,由于jacob需要在jdk添加dll文件,有点束缚,所以在这里就不讲这个方案了一.spire.doc1.引入jar包e-icebluespire.doc.free3.9.0 <repositories> <repository> <id>com.e-iceblue</id> <u

2021-01-10 16:26:33 3408 5

转载 jxl 操作excle (读取,导出)相比 poi 优缺点

1 开发调研1.1 需求描述MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。作为办公文档,势必要涉及到的电子文档的交换,Excel是一种在企业中非常通用的文件格式,打印和管理也比较方便。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。1.2 Excel开发常用开源工具在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。1.3 比较开源工具的优缺点1.3.1 Jxl优缺点Jxl特征有如下

2020-12-30 14:28:40 1116

原创 mysql索引,索引结构,索引类型,索引失效

索引:索引就是一个数据结构,是数据库引擎为了查询快捷而建立的.我的理解是:相当于一个图书馆,在没有编排类目之前,书是随机放置的,查找一本书,只能是遍历,一本本找,但是编排之后,会分为科学类,文学类,技术类等标签,这样找书就方便好多了,索引就相当于标签,用于快速查找。索引结构:考虑了范围查询,查询速度,正确率,节省内存等,mysql InnoDB大部分选用B+树做索引。InnoDB和MyISAM的B+树索引实现不一样:InnoDB主索引根节点存的是主键,叶子节点存的data,而MyISAM存的是da

2020-10-22 17:39:32 246

原创 mysql数据库一个快速简单造百万数据的方法

提供一张表:CREATE TABLE `actor` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL, `lastname` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL, `firstnam` varchar

2020-10-22 17:17:06 1784

原创 Java简单版贪吃蛇游戏开发代码

代码如下:public class TanChiShe { public static void main(String[] args) { new Map().addGame(new Game()); }}/** * 蛇身 */class Snake { Node head; Node tail; Node hid = null; int dir = 1 ; int nextDir = 1 ; /**

2020-10-10 17:53:15 642 7

原创 springboot整合mybatisplus配置多数据源

话不多说,直接上代码例子pom文件: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.sprin

2020-10-10 17:31:26 239 1

原创 记一次springboot整合mybatisplus自定义datasource数据源吐血总结

背景:springboot整合mybatisplus自定义datasource(不用自动注入的datasource)产生的吐血问题是:整合好了,mapper里面自己写的sql可以操作数据库,但是用mybatis本身的方法(我想用basemapper里面的selectList方法)用不了,一直报以下错误org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.pratice.mapper.User

2020-10-10 16:59:38 6233 4

原创 算法概念与入门

什么是算法:能解决问题的指令集合都可以称为算法算法的重要概念:public void test(){ int i = 3; i +=i; System.out.println(i); } public void test1(){ for (int i = 0; i < 5; i++) { System.out.println(i);

2020-09-09 18:41:45 180

原创 linux之curl命令模拟http get/post请求

curl----get请求 curl address如:curl 127.0.0.1:8080## curl-----post请求1,参数在header```bashcurl -d "aa=bb&cc=dd" "address"比如:curl -d “startTime=2019-11-25 10:00:00&endTime:2020-05-30 10:00:00” “http://127.0.0.1:8082/test”2,参数在bodycurl -H "Co

2020-06-03 17:04:10 707

原创 分享几个java开发实用的工具(一)

在开发中,一个好的顺手的工具,能让你工作顺畅且快速准确的进行,下面分享两个实用的工具:1,Snipaste (截图工具)这一款截图工具是我用过最舒服的工具了,在实际开发中,肯定会有页面切换和信息共享情况,copy不了的情况下,只能切来切去,看的眼都花了,还好这个工具有贴图功能,这样左右可以对比,是不是很方便2,sublime_text(文本工具)这个工具最大的特点就是可以快速打开比较大的文件。而且里面字体,颜色,样式都是可以弄成跟idea一样的,java,python等语言切换...

2020-05-29 17:23:03 310

原创 liunx 从一台服务器ssh到另一台机器

前奏:1,两台服务器a,b,所在位置:a2,ssh已经安装判断在a ping一下b,能ping通的情况下,通过命令:ssh 用户名@服务器地址 ,然后输入密码即可,如 ssh root@127.0.0.1

2020-05-29 17:06:34 1329

原创 linux ssh的安装与卸载

判断首先判断ssh有没有安装:`rpm -qa | grep ssh安装没有openssh******的话,就代表没有安装,可以使用命令安装:yum install openssh-clients -y卸载卸载命令:rpm -e ***** 这里的-e 后面接的是上图`rpm -qa | grep ssh查出来的openssh开头的名称:如rpm -e openssh-7.4p1-21.el7.x86_64...

2020-05-29 17:01:22 1728

原创 datax执行命令动态赋值(传值)

使用datax采集数据时,想用不同参数执行,但是又不想改变配置文件,这时,就需要在执行命令动态传参进去配置文件,具体步骤如下:1,目的:动态赋值去采集数据,部分配置文件如下"content": [ { "reader":{ "name":"mysqlreader", "parameter":{ "username":"ro

2020-05-14 21:03:51 7736 1

原创 datax使用示例(以mysql到mysql为例)

首先,得先知道,如何使用datax。其实很简单,首先准备好jdk和Python环境,然后准备一个json(比如mysqlTomysql.json)文件,最后用命令在服务器或者本地执行python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_JSON_PATH}/mysqlTomysql.json即可实现异构数据源之间数据的传递。当然,这里最重要的是要准备好这...

2020-05-06 22:09:29 1889

原创 datax简单入门介绍以及部分概念

datax初步认识:1,我们先来了解一下,datax是什么,它是用来干嘛的?datax是一个离线采集异构数据源工具,支持将源头数据源(后面简称reader)数据采集到目标数据源(后面简称writer),主要作用是将数据从一头拉倒另外一头,期间支持简单数据过滤,规整,,目前datax支持多种reader和writer,包括但不仅限于mysqlreader,oraclereader,ftprea...

2020-05-06 21:37:38 3569

原创 IntelliJ IDEA 如何设置背景颜色(豆沙绿为例)

效果图第一步:点击file的setting第二步:点击Editor—>Color Scheme—>General第三步:点击Text—>Default text,然后将Background的色码改为自己想要的即可,豆沙绿色码为C7EDCC;搞定!...

2020-03-20 18:05:52 4788

原创 如何设置博客背景皮肤

第一步:鼠标滑移至头像处,点击“管理博客”第二步:点击左边菜单栏的“博客设置”第三步:即可根据自身情况选择模板点击保存即可;

2020-03-20 17:08:32 133

bat脚本,用于启动发出某个信号

bat脚本,用于启动发出某个信号

2023-08-31

著名的kmp算法,包含部分算法解释

kmp算法,常用于判断str中是否有子串等于match,理解KMP算法的核心主要是理解KMP算法是如何加速判断str中是否有子串等于match,理解前缀和后缀数组的生成逻辑,理解前缀和后缀数组中间的比对可以跳过的证明,如有不明白之处,请留言

2022-10-28

双指针算法实现有序数组地合并

算法没想象中那么难,只要系统学过,算法几乎就等同与脑筋急转弯。 这次,利用双指针算法优雅地实现有序数组地合并。 看完后,你会觉得原来算法这么简单。

2022-10-28

如何优雅地将二叉树进行按层遍历

算法没想象中那么难,只要系统学过,算法几乎就等同与脑筋急转弯。 这次,利用额外的数据结构,优雅地将二叉树进行按层遍历。 看完后,你会觉得原来算法这么简单。

2022-10-28

空空如也

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

TA关注的人

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