自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yan1less的小窝

这只是一只萌新

  • 博客(50)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何手写一个简易的SpringMVC框架

背景为了练习手写一个简易的SpringMVC框架,实现了ioc以及Request和对应注解方法映射思路1.我们知道SpringMVC是基于Servlet实现的,所以首先要在web.xml中配置一个类,拦截所有的请求2.这个类分别有init方法和doGet/doPost方法。在init方法中实现ioc。在doPost方法中执行url和ioc中定义类的映射。 init: 1 加载配置文件 springmvc.properties ...

2021-03-25 14:16:29 186

原创 自定义简易MyBatis

背景写了一个简易的mybatis,实现了通过mybatis代理增强Dao层的基本逻辑,这里梳理一下这个Demo的执行流程核心流程1.用户通过加载核心配置文件获得输入流,放在内存中2.通过流信息构建工厂3.通过工厂打开SqlSession对象4.SqlSession对象通过getMapper方法获得被代理的接口对象5.那个被代理的接口对象有增强的方法,通过这个对象操作数据库实现细节包结构 1.自定义mybatis包结构 confi...

2021-03-23 11:08:00 147

原创 关于mysql版本从5.7升级到8的那些事儿

背景之前在家里做了一个mybatis自定义框架,是使用mysql5.7作为数据库的。这些天在公司重新拉取了这个项目发现跑不起来报了这个错:Connections could not be acquired from the underlying database!原因当然这个错误的原因有很多,之前在家是因为密码不对出了这个错,但这次讨论的是版本不同(5.7->8)所造成的影响。解决方案1.Jar包2.数据源信息解决Jar包问题这块儿只要把Maven中关于数据..

2021-03-23 09:31:25 669

原创 搭建MySQL主从模式和双主模式

背景已经搭建好了多台服务器的mysql环境,详情见https://blog.csdn.net/qq_41488523/article/details/112723759搭建MySQL主从主库编辑my.cnf文件,windows下是my.inivi /etc/my.cnf添加以下内容#logbinlog_bin=mysql-bin #开启binlogserver-id=1 #设置ID全局唯一sync-binlog=1 #写入操作就与磁盘同步binlog-...

2021-01-17 16:48:19 106

原创 在Vmware中创建多台Mysql虚拟机

简介本文背景是要在VMWare上搭建Mysq环境。以此记录一下过程。创建虚拟机1.首先下载好Vmware和一个CentOs的镜像文件。2.文件->新建虚拟机->自定义->无脑下一步(1.光盘映像文件选择下载的镜像文件)(2.在网络那块儿选择桥接模式)->创建完成3.点击创建好的虚拟机进行安装:最好在Software Selection 中选择ServerForGui(图形界面)->Installation Destionation中选择自动分配磁盘->

2021-01-16 20:58:10 293

原创 滑动窗口

本文主要解释leetcode 的第三题:无重复字符的最长子串原链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/虽然原题也有答解,但由于个人理解起来较为困难所以在这里记录下理解过程,也探究一下滑动窗口的思想以下是代码:String s = "applepie"; Map<Character,Integer> map = new HashMa.

2020-09-04 10:06:52 160 1

原创 Java中的动态代理和静态代理

本文面向初接触动态代理的学者,代码贴在最后静态代理其实现思路:从前有A,B商家注册到了C平台上,A提供一些初级的服务,B对A的服务进行了一些封装从而能实现更厉害的服务。(写到这里我突然发现和SpringCloud咋这么像。。。。。)其映射在Java中就是:C是一个接口,A,B都实现了该接口,B中持有A的引用,B调用方法都是通过A来实现,只不过在实现前后增加了一些操作。(...

2019-05-01 16:07:32 126

原创 使用NIO搭建一个聊天室

搭建一个一台服务端多台客户端连接的聊天室首先梳理一下核心点: 服务端有一个本地Map,记录了所有连接的信息,以达到给所有人发送的效果编码时的公共流程:1.先打开各自的channel和selector,然后channel注册到selector上,注册事件C:CONNECT;S:ACCEPT2.然后进行一个死循环,第一行是selector.select()该事件会阻塞自己...

2019-04-21 15:16:14 340

原创 用Java写K站爬虫

背景近些日子对java爬虫有兴趣,所以又做了一个K站的爬虫,只实现基础功能对请求头没有什么封装(初衷是爬些图片做壁纸),因为以前又做过D站的爬虫,所以这次就一起总结一下吧。不放源码,想要的同学在git上找:https://github.com/Yan1less/MySpriders梳理关系写爬虫主要是逻辑梳理清楚,总站->输入检索标签->每个匹配的图片连接入队->...

2019-04-17 10:24:39 239

原创 Timer

java中Timer是起到定时器的作用,实际执行的事件是由TimerTask类决定的,模板代码如下package com;import java.util.Timer;import java.util.TimerTask;public class EXAM{ public static void main(String[] args) { Timer a...

2019-03-16 10:47:11 127

原创 HashMap之put

我们明白hashmap其基本组成原理是数组+单项链表+红黑树这次来看put方法: public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }其中有hash(key)和putVal,那么什么是hash()方法呢 static final ...

2019-03-15 16:42:39 125

原创 你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

前言: 我为什么会过来解这道数学题呢?我的脑回路大概是这样的 读hashmap源码-&gt;发现大量位运算-&gt;发现这道题也是位运算的典型。问题:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?解释:该问题与三只老师喝8瓶...

2019-03-15 10:10:24 402

原创 Lock的使用

java中明明有synchronized 保留字,但是为什么又要诞生出ReentrantLock,ReentrantReadWriteLock类呢?其实该类出现并不奇怪,因为java都是面向对象的,锁当然也是一个对象,凭什么就不能有一个专门的类呢ReentrantLock 该类采用lock()与unlock()来代替获得锁与释放锁的方法;其经常与Condition配合使用 在...

2019-03-14 16:28:27 157

原创 Thread的使用

本文只是初步介绍java中的线程,仅了解其重要方法的用法和需要注意的点。join():比如在A线程中调用B.join()。那么在B线程执行完之前A会一直阻塞;底层是用wait实现,所以会释放锁wait():阻塞线程notify():唤醒线程,这两个方法会成对出现,这两个方法的使用要在锁中或同步块中sleep():休眠一段时间;不会释放锁interrupt():打断线程,强制结束...

2019-03-14 15:05:16 229

原创 理解NIO中的Selector

Selector是选择器是NIO技术中的核心组件,可以将通道注册进选择器中,其主要作用就是使用一个线程来对多个通道中的已就绪通道进行选择,然后就可以对选择的通道进行数据处理,属于一对多的关系。这种机制在NIO技术中心称为“IO多路复用”。其优势是可以节省CPU资源说的简单点就是一个线程通过选择器可以连接多个通道,从而完成高效的I/O在Selector中有三个核心类:Selector:主...

2019-03-10 16:43:54 868

原创 理解NIO中的Socket

Socket通信是计算机之间常用的通信技术,http传输协议底层就是靠它的,它的底层用c++实现,Java中对其进行了重量级的封装。我们先来学习Java中Socket怎么使用,下面例子是传输图片的(从C-&gt;S)服务端package socket;import java.io.File;import java.io.FileOutputStream;import ...

2019-03-10 13:08:32 375

原创 理解NIO中的Buffer与Channel

本节主要讲Socket与NIO 首先Socket,他不是协议,而是计算机之间的通信技术,HTTP才是应用层协议。Socket与HTTP的关系是Socket是HTTP的底层实现,HTTP对Socket进行封装,所以我们学习Socket技术还是很有必要的 Socket底层是用C++实现的,当然最底层都是直接与硬件进行通信,这里不做探究。各个语言如:Java,C#都对Socket都有不同程...

2019-03-09 12:24:51 540

原创 理解Java中的序列化与反序列化

序列化即将运行在内存中的数据存储到硬盘上,这样下次再启动程序的时候数据就不会丢失。反序列化是将磁盘上的数据直接载入内存,可能会免去一些计算实现序列化与反序列化可以通过网络进行,这意味着序列化机制可以自动弥补不同操作系统之间的差异。而Java中实现序列化很简单,只需实现Serializable接口,实现接口之后需要在添加一个变量private static final long...

2019-03-06 21:43:10 190

原创 理解JavaIO

JavaIO从其出生的时候就存在了,其主要包含 面向字节的输入输出流:InputStream,OutputStream 面向字符的输入输出流:Reader,Writer(这四个都是抽象类,不能直接实例化)字节是计算机的存储单位,8位;而字符只是在内存中才存在的,16位;由于Java本身Char就是16位的Unicode,所以一开始也有人说Reade...

2019-03-06 20:21:46 185

原创 UniyAR

Unity开发AR需要引入第三方的SDK: Lesson 2:GameObject-&gt;Vuforia-&gt;AR Carema 第一次会提示导入信息。进入官网,点击develope -&gt;GetDevelopeKey-&gt;输入项目名字。注册可以使用这个Vuforia的许可。注册成功后得到一串文本信息,复制。现在的AR Carema还有警告不能正常使用 进入:File-&gt;Bui...

2018-05-10 17:20:56 128

原创 JDBC由浅入深解析(C3P0)(DBUtils)

1.自定义链接池        首先是最不常用的连接池,但对于新手理解JDBC很友好的        只需要在项目导入java和数据库链接的jar包即可,导入之后:        1.首先定义一个文件夹,格式为XXX.properties                在文件夹里写入连接信息,如:                                                   ...

2018-05-10 17:18:05 253

原创 JS常用内容

1. (onfocus/onblur)聚焦/离焦事件(onsubmit)登录事件(onload)载入事件(onmouseover/onmouseout)鼠标悬停/离开事件2.最好id用小写,这样调用脚本的时候可以通过拼字符串来实现查找3.var 变量用之定义则为局部变量,不用之定义为全局变量,var为弱类型。弱类型:定义的时候没有明确的类型,可以多次被赋值,类型以最后一次赋值为准4. BOM常用对...

2018-05-10 16:21:40 148

原创 关于C# out与ref参数的使用

1.ref:ref 即refence,又叫引用,类似于c++中的&amp;,会将值和变量一起传入方法2.out:主要用于函数返回多个值,在有out参数方法内,相应的值必须初始化,不然无法通过编译using System;namespace Book{ class Program { static void Main(string[] args) ...

2018-04-15 21:29:05 194

原创 关于Unity如何连接MySQL

Unity和MySQL是连接的,是通过c#的脚本进行交互的,所以只要回了c#与数据库的连接的话,那么Unity的其实也差不多,不过很关键的一点是添加引用集,需要将三个配置文件放在Unity的Asset目录下,不然是无法进行引用的System.Data.dll   和    System.Dawing.dll  是在Unity的安装目录下,我的具体在:D:\新建文件夹\Editor\Data\Mon...

2018-04-11 23:37:24 664 1

原创 Z字形转换(LeetCode06)

题目如下:解读先来研究一下题目:这个Z字体现在吧Z逆时针旋转90度,按这种顺序来排列:比如传入行数是5A                H                    PB            G  I                OC         F     G        ND    E          K    ME                 L思考我的想法是用一...

2018-03-31 16:31:18 203

原创 Uniyt UI界面初步解读(一)

首先说一下这个锚点的问题: 在不按alt的时候就是设置锚点,锚点的意思是改变carvas的大小之后的对齐方式。 按住alt之后就和锚点没关系,这个代表当前组件的位置,比如当前就中间右对齐  Text组件: Font Style:默认,黑体,斜体,黑斜体Line Spacing :行间距,设置为1的话可以同时显示多行,默认是1,如果是0的话会显示一行,多余的会重叠。Horizontal/Vertic...

2018-03-29 22:11:16 575

原创 css基础

CSS声明总是以分号(;)结束,声明组以大括号({})括起来:p {color:red;text-align:center;}  Id实例&lt;style&gt;#para1{ text-align:center; color:red;} &lt;/style&gt; Class实例&lt;style&gt;p.center{ text-align:center;}&lt;/style&gt; ...

2018-03-29 20:16:41 133

转载 无重复字符的最长子串之用map解决

问题:给定一个字符串,找出不含有重复字符的 最长子串 的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。#include "s

2018-03-29 10:11:26 277

原创 通过map来读取文件中的数据并特例输出

单词转换程序:从文本中读取一段单词,其中会有u(you),thk(thanks)等简写,需要把他们都转成正式体。建立映射Map,把需要特例输出的特别string存入map当中map&lt;string, string&gt; buildMap(ifstream &amp;map_file)        //返回map{ map&lt;string, string&gt; trans_map;...

2018-03-24 22:53:57 1221

转载 c++map的用法

Map是一种关联容器,特点是增删节点对迭代影响很小。Map由建(First)和值(second)构成。其键是无法更改的(const)Map的声明map&lt;string, int&gt; strMap;    一个键为string,值为int的mapMap的添加元素(注意是类似栈一样的,先添加的元素在最后面,即如果iter.begin()-&gt;first = david) strMap[st...

2018-03-24 20:42:09 237

原创 C++指针

指针的用途:跨函数改变一个变量(间接改变数据)不运行改变原来数据的情况下事项交换数据的功能空指针类型Void *p 合法,任何类型地址都一样,可以分配空间。即它可以存储任何类型的地址不能在下面直接访问内存,即cout&lt;&lt;*p,访问的时候需要强制类型转换*(double *)p指针类型决定了指针的长度和解析方式空指针空指针是空类型的0,也不能间接赋值 空指针的意义:防止野指针,标记在内存...

2018-03-22 20:53:07 96

原创 io流迭代器

创建一个流迭代器的时候必须指定迭代器将要读写的对象类型。istream_iterator: istream_iterator&lt;int&gt; in_iter(cin); //从cin读取int istream_iterator&lt;int&gt; eof; //尾后迭代器通过流迭代器读入数据的例子: while (in_iter != eof) { vec.push_bac...

2018-03-22 20:32:00 231

原创 数据表的基本操作

展示: Show databases;删除: Drop database +””;创建: Create database + “”;选择数据库: USE + “”;建立数据表: CREATE TABLE+””(字段名称 数据类型,字段名称 数据类型,Name VARCHAR(25));数据类型后面“是,不是;”,这个习惯一定要改。数据类型的声明长度要用圆括号,最后一个数据类型后面不用加逗号。展...

2018-03-11 19:59:35 142

原创 初识java(3)异常

throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。throw则是明确了这个地方要抛出这个异常。throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。 throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知...

2018-03-09 16:40:05 97

原创 初识Java(2)String的详细介绍

String 方法下面是 String 类支持的方法,更多详细,参看 Java String API 文档:SN(序号)    方法描述1    char charAt(int index)返回指定索引处的 char 值。2    int compareTo(Object o)把这个字符串和另一个对象比较。3    int compareTo(String anotherString)按字典顺序比...

2018-03-09 16:39:29 79

原创 java初识(1) 一切万物皆对象,方法与属性是互通的

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。下面是一个构造方法示例:public class Puppy{    public Puppy(){    }     public Puppy(String name){        // 这个构造...

2018-03-09 16:38:36 217

原创 JQuery初识(2)

text("可以放一些文本") - 设置或返回所选元素的文本内容html() - 设置或返回所选元素的内容(包括 HTML 标记)val() - 设置或返回表单字段的值            val与输入框连用,前两个与button连用jQuery attr() 方法用于获取属性值。$("button").click(function(){  alert($("#w3s").attr("href"...

2018-03-09 16:36:21 110

原创 JQuary初识(1)

引入jQuery   getElementById("1")   可以写成 $("#=2")前提是后面的id为&lt;h id="2"&gt;&lt;script&gt;function myFunction(){$("#h01").attr("style","color:red").html("Hello jQuery")}$(docu

2018-03-09 16:35:55 128

原创 JavaScript初识

x=document.getElementById("demo");  // 找到元素x.innerHTML="Hello JavaScript!";    // 改变内容if(element.src.match("bulbon"))if后面有match我们把 JavaScript 放到了页面代码的底部,这样就可以确保在 &lt;p&gt; 元素创建之后再执行脚本。\是折行var z=123e-5...

2018-03-09 16:34:18 99

原创 HTML初识

1.表格&lt;table&gt;,标题&lt;th&gt;,内容&lt;td&gt;,换行&lt;tr&gt;,占位符&amp;nbsp,colspan横向夸两格,rowpan纵向跨格,frame=box(一个框),above,below,hisides(上下两条线),visides(左右两条线)。2.插入图片有绝对路径有相对路径,相对路径要在一个文件下。3.align=“center”4.在h...

2018-03-09 16:32:03 88

空空如也

空空如也

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

TA关注的人

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