自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 swagger2超快速入门

Swagger2超快速入门swagger是一款非常好用的自动生成接口文档的插件,实现API文档与API定义同步更新。项目中使用swagger1.新建一个springboot项目2.导入相关依赖 <!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2&

2021-10-09 12:23:20 188

原创 转前端的第二天

转前端的第二天Vue写一个记事本记事本应该有如下功能1.增加一条待办事项2.待办事项定时任务 (未完成)3.添加待办事项完成情况 (未完成)4.删除待办事项5.修改待办事项 (未完成)6.待办事项的权重 (未完成)7.待办事项完成后的奖励 (未完成)ok,今天是国庆的第二天,昨天打了一整天的雀魂,确实是有点无聊,无聊就想了解一下前端的框架,把这个系列的博客叫做转前端的第二天系列吧。新增一条待办事项待办事项会有多个的情况,需要用v-for来生成列表结构,同时需要用v-mo

2021-10-08 15:12:13 274

原创 转前端的第一天

转前端的第一天国庆好无聊呀,莫事干只好敲一敲代码,原计划跟朋友准备去看panda,想了想两个人会不会很尴尬,还是等人多起来再去吧。1.准备工作准备好环境1.nodejs2.vue/cli使用powershell创建一个vue项目cd + 项目存放路径vue create + 项目名出现以上问题不要慌张输入以下命令,修改其执行策略。set-ExecutionPolicy RemoteSigned根据提示创建好项目后,进入到项目目录,把项目先跑起来npm run serve

2021-10-02 15:37:44 476 2

原创 我对ConcurrentHashMap一无所知

我对ConcurrentHashMap一无所知上期讲到HashMap,很明显它里面的所有方法,都是不支持多线程抢占执行的,一旦在并发场景下,就可能会出现以下问题。//环形链表问题//在多个线程执行put时,假如同时触发了resize,而恰好一个线程停在了next = e.next位置,线程2此时来执行void transfer(Entry[] newTable, boolean rehash) { int newCapacity = newTable.length; for (En

2021-09-03 16:37:19 141

原创 我对HashMap一无所知

我对HashMap一无所知HashMap作为java常用集合之一,仅仅停留在只会用是远远不够的,整个源码读起来简直是不要太爽,直呼NB。下面开启我们的一无所知系列——HashMap,笔者选取其中重要的几个方法来谈谈对HashMap的理解,食用之前请先知道HashMap的基本用法,以及HashMap的数据结构。成员变量部分成员变量如下://初始值,为16,必须为2的次幂static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //当

2021-09-02 21:45:05 220 5

原创 Mysql引擎MyIsam与InnoDB

Mysql引擎MyIsam与InnoDB存储引擎是第一个表存储、组织数据的一个方式,不同的引擎存储数据的方式不一样。查看表的引擎show create table + 表名mysql> show create table user;+-------+-------------------------------------------------------------------------------------------------------------------------

2021-08-18 21:17:54 102

原创 下雨天读源码——String、StringBuilder、StringBuffer

下雨天读源码——String、StringBuilder、StringBufferString源码类定义public final class String implements java.io.Serializable, Comparable<String>, CharSequence ​ 这是string源码的类定义,首先是一个final类型的不可变类型,其次string实现了可比较、可序列化接口,主要说一下为什么是final的吧。这是顶级大佬设计string时的智慧啊,我们知道ja

2021-08-17 17:09:45 179

原创 mysql事务及事务隔离级别实践

mysql事务事务是指一个完整的业务逻辑。A向B转账时,A-100;B+100,这是一个完整的业务逻辑,是最小的工作单元,要么同时成功,要么同时失败,不可再分,如此才能保证正确性。只有DML语句才有事务概念,其他的与事务无关insert\delete\update涉及到数据的增删改,数据的安全就需要考虑,就需要使用事务。事务实现机制InnoDB提供了一组用来记录事务性活动的日志文件。事务开启了:insertinsertdeletedelete事务结束了;在事务的执行过程中,每一条

2021-08-15 21:56:03 132

原创 Mysql基础

Mysql基础基本操作导入sql文件在进入到mysql数据库中后,使用命令source + sql文件的路径;就可以将sql文件导入到数据库中。查看数据库表结构desc + 表名查看版本号select version();查看当前使用的数据库select database();终止一条命令\cDQL简单查询select loc from dept;select deptno,dname from dpet;查询表中所有字段1.select * from de

2021-08-15 15:38:46 82

原创 BIO与NIO总结

BIO与NIO说明:本文讨论的io模型都是基于网络通讯socket上讨论的BIO——阻塞IO模型在网络通讯中,客户端先与服务端建立连接,由于服务端不知道客户端什么时候会发来数据,所以服务端不得不开启一个线程来接收客户端发来的消息,所以这个io过程中服务端会阻塞起来。在java传统的bio模型中,连接一旦建立,就会一直监听这个socket是否有数据传过来,下面看代码以及注释帮助理解。package BIO;import java.io.IOException;import java.io.Inp

2021-08-15 11:22:57 191

原创 消息发送模块--netty实现IM即时通讯

消息发送模块按照笔者的想法,一个消息发送模块,要思考以下几个问题:1.消息如何存储?2.如何设计离线消息?3.怎么保证用户及时收到消息?4.消息如何保证不丢失?5.如何解决大文件类型消息占用带宽问题?6.请求消息接口是通过websocket还是http?首先,要先清楚以下几个流程:1.用户上线2.用户发送消息一个用户要给另一个用户发送消息,流程大概如下,3.接收方接收消息的具体流程第一种:用户不在线,刚上线收到消息第二种:用户在线,收到新消息4.性能分析​ yok

2021-08-14 13:01:35 1326 1

原创 TCP可靠数据传输原理

TCP可靠数据传输原理传输的可靠概念数据在传输过程中,不错位,不丢包,不乱序。信道的不可靠特性由于数据在传输过程中,可能存在丢包、可能存在路由缓存溢出等现象,导致数据出现丢包等不确定现象,这样就决定了可靠传输协议的复杂 性。如何处理传输中的位错位假设现在有一个信道,在传输过程中可能会产生位错误,那么接收方就需要做两件事:一是辨别数据是否正确,二是如何从错误中恢复过来。首先解决第一个问题:​ 利用校验和检测位错误!什么是校验和:https://blog.csdn.net/qq_349024

2021-06-27 22:46:50 844

原创 一张图分析浏览器输入URL后会发生什么

一张图分析浏览器输入URL后会发生什么

2021-06-26 10:53:42 117

原创 springboot注解表格

SpringBoot中常见注解以及作用(下次忘记了方便来这找)注解意义用法@SpringBootApplication声明让springboot进行必要的自动配置,相当于@Configration,@EnableAutoConfiguration,@ComponentScan三个配置合在一起@Configuration相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration作为项目的配置主类,可以理解为手动配置@Enabl

2021-06-25 22:14:12 162

原创 Socket+TCP粘包现象以及解决方案

Socket+TCP粘包现象以及解决方案粘包现象​ tcp在传输过程中为了保证效率,会在连接建立以后,将传往同一地址的包合并在一起,同时发送过去(Nagle算法)。因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。​ 具体过程如下:​​ 假设现在有三个100b的数据分三次要发,调用socket的策略是每次可以发1024b,这时,根据nagle算法的优化原则,会将三个数据打成一个包一起发给server,假如server没有对应的策略去处理的话,就会出现三个数据在一个包中显现出

2021-06-23 16:30:17 1127 2

原创 java中文件按行写入

java中文件按行写入,每次写在文件最后一行,而不是覆盖。需要在定义FileOutputStream定义时加一个true,表示示每次写文件时新内容附加在原来的内容后面,不而不是覆盖。//将每次计算的结果写入到文件最后一行,而不是覆盖 File file = new File("result.txt"); try(BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStrea

2021-06-19 09:25:15 7129

原创 并发编程学习笔记一

并发编程学习笔记CPU三级高速缓存机制现在的cpu基本都是多核多线程的,怎样保证它们之间协调运作呢?我们知道cpu运行速度很快,IO操作很慢,为了解决IO冲突,我们需要引入高速缓存区,那么问题来了,多核多线程的CPU如何保证高速缓存数据一致呢?这里就引入了三级缓存机制。首先L1是单线程独享,L1的数据取自L2,L2保证了单核里多线程之间的通信,L2的数据又取自L3,L3保证了多核之间的数据互通,L3来自于内存,这样的缓存机制,就很好的解决了多核多线程CPU之间的协调。JMM数据八大原子操作rea

2021-06-10 16:56:26 100

原创 centos7 部署nodejs后台的命令

centos7 部署nodejs后台的命令在四班心理委员的帮助下,成功将后台部署到服务器上,以下是用到的命令。[root@iZbp12p848bx8mfa8pteszZ /]# history 1 cd .. //进入根目录 2 mkdir music //根目录下创建一个music文件夹 3 cd music 4 ls 5 rz -E // xshell上传文件 6 **0ls 7 ls //显示当前路径下的文件 8

2021-06-10 16:53:37 365

原创 java调用百度语音接口

五子棋调用百度语音接口实现语音识别Step1前端上传语音到后端前端通过ajax进行数据传输<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>五子棋</title> <style> * { margin: 0; padding: 0; } body { margin-

2021-06-09 09:19:26 755 1

原创 java多线程之生产者-消费者模型

java多线程之生产者-消费者模型模型图解​ 首先来看一张图,明白消费者-生产者里都有哪些角色。数据单元每次生产者放到缓冲区的,就是一个数据单元;每次消费者从缓冲区取出的,也是一个数据单元。此处的数据单元为一个product缓存区此处指的是仓库生产者生产产品消费者消费产品模型意义解 耦假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者对于消费者就会产生依赖(也就是耦合)。将来如果消费者的代码发生变化,可能会影响到生产者。而如果两者都依赖于某个缓冲区

2021-06-08 16:36:58 203

原创 基于flask的五子棋小游戏

基于flask的五子棋小游戏前言​ 首先说明一下,本人方向是java后端,只因老师布置了一个作业,要用flask来做一个五子棋,没办法被逼上梁山,程序不太美观,但是应付作业还是够了的。​ 废话不多说,下面开锤!​ 首先整个程序是一个web应用,前端html+css+javaScript(有用到jquery)(基本都是现学的,所以程序很多注释也很丑),后端用的flask框架。准备工作​ **1.**python环境、安装flask​ **2.**导入需要用到的包pip install fl

2021-05-23 16:23:17 8252 8

原创 JavaScript 语法笔记

JS前端笔记1.如何在JS中创建数组,以及数组常见方法//创建数组:const numbers = new Array(1,2,3,4,5);//js中一个数组可以存放的不同类型的语言const fruits = ['apples','oranges',10,true];fruits.push('mango');fruits.unshift('strawberries');fruits.pop();Array.isArray(fruits);fruits.indexOf(

2021-05-20 10:39:53 102

原创 Integer.valueOf()与Integer.getInteger()源码分析

Integer.valueOf()与Integer.getInteger()源码分析Integer.valueOf():static IntegervalueOf(int i) 返回一个 Integer指定的 int值的 Integer实例。static IntegervalueOf(String s) 返回一个 Integer对象,保存指定的值为 String 。static IntegervalueOf(String s, int radix) 返回一

2021-05-17 14:20:40 353

原创 Token验证

Token验证学妹最近写项目,卡在了token认证上面,正好之前写过类似的,就乘此契机整理一份。整个模块主要完成token认证、授权以及使用redis进行缓存。很多内容都在代码里面的注释中,本文主要讲细节实现,在食用之前,请务必要对token验证流程有一个大致的印象。话不多说,下面开锤!pom.xml配置如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0

2021-04-19 15:42:51 394 1

原创 java泛型擦除

java泛型擦除前文介绍​ java中的泛型实际上是伪泛型,因为在编译过程中,所有的泛型信息都会被擦除,这里涉及到一个概念——类型擦除(java的泛型基本上是在编译器生成字节码时,使用泛型的时候加上类型参数,整个过程就是类型的擦除)。泛型可以理解为将数据类型作为参数的一种手段。通过例子来理解泛型擦除介绍到这里,我们开始整活。如何在一个list中存一个Integer 一个 String呢?我们使用反射机制,可以实现。import java.lang.reflect.InvocationTargetE

2021-04-10 20:12:20 430 3

原创 动态规划之爬楼梯问题

动态规划爬楼梯问题题目是这样婶的,说一个人上楼梯,一次可以上一层,也可以上两层,问上n层的台阶有多少种上法。正常人来说,上楼梯要不就是一步一层,要不就是一步两层,或者一下一层一下两层,那会有人1433223这种上楼梯方法,搁那国服元歌呢?言归正传,这个问题很显然从正面推是不好推的,每一次出脚都有两种可能,那么我们不妨从反面来推。当我们已经在第n层时,无论怎么走,都可以回到第一层,这样我们就可以知道,第n层回退的情况有两种,一种是回退到n-1,还可以回退到n-2。这样我们就很容易推出一下方程: F(

2021-04-08 20:56:19 496 2

原创 java面试错题集积累

面试刷题笔记最优二叉树(哈夫曼树)哈夫曼树的定义:是一种带权路径长度最短的二叉树,也称为最优二叉树。带权路径长度达到最小,就是最优二叉树由权值为9,5,2,7的四个叶子节点构造一棵最优二叉树,该树的带权路径长度为:44构建哈夫曼树的算法:​ 1.叶子结点先从小到大排序​ 2.选取最小的两个节点作为最深的叶子节点​ 3.计算两叶子节点的和​ 4.将和加入到排序中去​ 4.重复上面的操作​ 5.直至最后一个叶子结点排完题目1.牛客网,货拉拉此题答案有争议,已提交答案有误,有

2021-04-08 12:06:03 308

原创 冒泡排序与快速排序、二分查找

冒泡、快排、二分查找算法冒泡排序新手最先接触到的排序算法,对一个数组进行遍历,遍历过程中进行比较,如果该位置的元素大于后一位置的元素,则将两元素交换。public static int[] bubbleSort(int[] a) { for(int i = 0;i < a.length;i++) { for(int j = 0; j < a.length-1-i;j++) { if(a[j] > a[j+1]) { int tmp = 0; t

2021-04-05 18:42:21 873 9

原创 有穷自动机解决字符问题

有穷自动机解决字符问题leetCode 第八题8. 字符串转换整数 (atoi)请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的

2021-04-03 17:23:14 278

原创 代理模式与动、静态代理

代理模式与动、静态代理​ 最近正在纠结考研还是找工作,数学与数据结构都不想学,烦心之下,学点jvav冷静一下,本篇博文主要是讲代理模式以及java中如何用反射机制实现动态代理,大部分瞎比分析都在代码注释里面哈!代理模式的概念:Proxy Pattern,是23种经典模式种的一种。在调用方与被调用方中间增加一层代理对象,从而实现调用方与被调用方之间的解耦。为目标对象提供一个代理,这个代理可以控制对目标对象的访问,外界不用直接访问目标对象,而是访问代理对象,代理对象再调用目标对象。且代理对象中可以添

2021-03-29 21:26:55 168 2

原创 HTTP协议

HTTP协议HTTP的一次数据包括:数据行头部信息数据实体http请求数据头如下(此处是截取的一个HTTPS协议的请求数据,对照着书上的http请求数据来参看的):GET /favicon.ico HTTP/1.1请求方法 /URI HTTP/版本号Host: www.baidu.com用于指定资源所在的主机号和端口号Connection: keep-alivePragma: no-cacheCache-Control: no-cacheUser-Agent: Mozil

2021-03-02 11:11:51 451 1

原创 Java多线程创建、启动、信息共享问题

Java多线程创建、启动、信息共享问题java多线程的创建、启动java为多线程创建提供两种方案:​ 一:继承Thread类​ 二:实现Runnable接口。说明:由于Thread类实现了Runnable接口,故而继承Thread类,本质上也是实现Runnable接口不同:在启动方式上不一样,继承Thread类后,线程只需要调用start方法即可,实现Runnable接口需要借助Thread类进行包装后才能调用start方法。下面看代码public class Thread2 impleme

2021-01-31 23:24:19 80

原创 Java处理JSON、图片文件、xml

Java处理JSONJSON(JavaScript Object Notation):JS对象标识法。是一种轻量级的数据交换格式,类似于xml,更小,更快,更容易解析。接下来看一看json格式的数据长什么样:{ "scores":[60,70,80], "name":"Tom", "age":20}//一对大括号括起来,用k-v对形式表示数据,每个数据之间用“,”隔开,最后一个数据后不用加“,”。JSON数据在java里可以与java bean数据交互,下面看一个dem

2021-01-29 22:40:20 360

原创 java字符操作及正则表达式

Java正则表达式+字符串操作有诗云:手持两把锟斤拷,口中疾呼烫烫烫。脚踏千朵屯屯屯,笑看万物锘锘锘。上回咱们说到java中String以及其常用方法,今天咱们聊一聊字符串相关的其他知识。字符乱码文件读取需要注意,在编码格式上要保持一致,否则会出现乱码现象。(按照什么格式写入的数据,就应该按照什么格式读取)import java.io.*;import java.nio.charset.Charset;import java.util.Set;import java.util.Sorte

2021-01-28 23:56:04 209

原创 java数据结构

java数据结构数组是一个存放多个数据的容器数据是同一种类型所有的数据是线性规则排序可以通过位置索引来快速定位访问数据需要明确容器的长度int[] a = new int[5]{};JCF(java collection framework)容器:能够存放数据的空间结构容器框架:有一些容器,并且在这些容器上有算法实现,提高数据存储效率,避免程序员的重复劳动。主要分为三大类:列表List、散列集合Set 以及映射MapJCF的集合接口是Collectioncollection下的方法

2021-01-23 23:45:52 168

原创 java常用类

java常用类数字相关类Short: 16位 2字节 有符号的以二进制补码表示的整数(32768)Int :32位(范围:10位数 开头是2)Long: 64位Float :32位Double:64位(float和double都不能表示很精确的数字)BigInteger :无限长的整数BigDecimal:无限长的小数(bigdecimal做除法时,需要注意截断,防止出现无限循环小数)BigDecimal num1 = new BigDecimal("10");BigDecimal nu

2021-01-23 17:51:14 118

原创 常量池

常量池:相同的值只储存一份,节省内存,共享访问保存在编译期间就已经确定的数据是一块特殊的内存设置有常量池的基本类型的包装类:boolean、byte、short、integer、long、character基本类型包装类没有设置常量池的:float、doubleInteger n1 = 127;Integer n2 = 127;System.out.pringln(n1 == n2);//输出trueInteger n3 = 128;Integer n4 = 128;System

2021-01-23 15:04:32 363

原创 数据库复习

Oracle数据库复习练习题实验一:创建数据环境用户及权限1、创建用户utest,密码为utest1。create user utest identified by utest1;identified by后接密码 如果创建用户失败 请在用户名前+c##(oracle12)2、为utest用户赋予connect权和dba权。grant connect,dba to utest;dba:拥有dba权限的用户可以创建数据库结构,可以创建授权用户 *resource: 拥有resource

2021-01-02 23:12:27 1055

原创 Mycat数据库中间这一篇博文就够了

Mycat数据库中间件问题1:java程序与数据库紧耦合,一旦数据库挂掉,整个程序就不能正常运行为了解决这些问题,在Cobar的基础上开发了mycat)]读写分离双主双从数据分片多数据源整合mycat的读写分离是建立在两个及以上的数据库上实现的,那么两个数据库中的数据就要保持一致,这就要求我们熟知mysql是怎样实现主从复制的,以及如何保证数据的可靠性。准备工作1.安装虚拟机CentOs7​ 因为mycat是运行在linux环境下的,所以我们要去安装linux环境。​ 这里选

2020-11-24 13:19:24 349

原创 JAVA学习笔记 day8 画笔

JAVA学习笔记 day81.画笔package paint;import java.awt.*;public class TestPaint { public static void main(String[] args) { // TODO Auto-generated method stub new MyPaint().loadFrame(); }}class MyPaint extends Frame{ public void loadFrame() {

2020-05-18 00:17:07 187

空空如也

空空如也

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

TA关注的人

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