自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

原创 spring mvc中后端传值的方式

目录一,问题探索二,问题解决1,事前准备1.1 前端调试工具准备1.2 后端接口准备2,开始测试2.1 简单测试2.2 post方式传值2.2.1 发送表单数据2.2.2 发送json数据2.2.3 后端接收对象2.2.4 多值传递问题2.2.5 多值传递的其他情况三,总结一,问题探索 在spring boot开发中,面向...

2019-08-23 00:04:33 407

原创 mybatis多数据源

1,简介在实际开发中很容易就遇到需要多数据源的情形,比如说,在新增数据时除了给自己的库保留一份,还需要同步到别人的库;转移程序需要将A库的数据转到B库等等。使用mybatis配置多数据源我接触过的一般有两种方式,一种是通过java config的方式手动配置两个数据源,另一种方式便是使用mybatis-plus-dynamic。2,具体使用2.1 手动配置多个数据源2.1.1 代码示例项目基于springboot和mybatis-plus,首先引入相应的依赖:<?xml ve

2021-07-11 18:41:43 18832 4

原创 设计模式之装饰模式(二)

一,背景 喝咖啡是现代年轻人很喜欢的一种休闲方式。按种类,咖啡可以分为摩卡(Mocha),拿铁(Latte)等,而每一种咖啡又可以添加一种或多种佐料就成了新的口味,比如说有的人喜欢加糖,而有的人喜欢加糖的同时又加牛奶。隔壁街的咖啡馆马上就要开张了,老板听说你是一位优秀的“设计师”,所以想把他们家点咖啡的系统交给你来做,好处就是以后你来点咖啡都可以享受七折的优惠。于是,为了拿下这喝咖啡的好处,你开始思考如何完成这个系统,首先咖啡肯定包含有其描述信息,表明这到底是哪种咖啡?同时还应该有一个方法返...

2020-08-23 09:52:20 212

原创 jdk1.8-什么是lambda表达式

目录一,什么是lambda表达式二,lambda表达式的语法2.1 lambda表达式的语法规定2.2 jdk1.8自带的函数式接口2.2.1 Consumer接口2.2.2 Supplier接口2.2.3 Function接口2.2.4 Predicate接口三,lambda表达式的使用3.1 方法引用3.2 构造器引用3.3 数组引用3.4 谓词复合3.5 函数复合四,lambda表达式使用注意事项4.1 lambda表达式内使用方法体外.

2020-05-24 11:05:21 366

原创 Spring Boot的使用(一)

目录一,spring boot简述二,spring boot项目的搭建2.1 pom文件2.2 主配置类2.3 @SpringBootApplication三,总结一,spring boot简述springboot是什么?简单地理解它是一个工具箱。它不是重复的造轮子,底层用的还是spring的那一套,不同的是它让spring的使用更为简单,让开发者真正的做到...

2020-04-19 17:14:52 200

原创 设计模式之单例模式(一)

目录一,什么是单例模式。二,实现方式。2.1 使用普通的方式改进2.2 使用加锁的方式改进2.2.1 直接加锁2.2.2 双重检查三, 总结一,什么是单例模式。 举个最简单的例子,一山容不得二虎,简单地说就是一座山不能同时生活两只老虎,以此引入到oop的世界也就是一个类只能有一个实例化的对象,再多就不行了。那么什么时候会有这种需求呢?比较常见的...

2020-01-18 19:11:53 179

原创 git常用操作

目录一,缘由。二,git简介。三,git常用命令。1,初始化方式2,仓库操作3,分支操作5,.gitignore文件四,总结。一,缘由。 在多人开发中,为了控制版本迭代,常常需要使用svn或git,这不我们就使用的git,虽然就那几个常用的命令,但是使用的时候还是遇到了很多坑,比如冲突。。。于是便有这篇博客,谁让我老是犯同一个错误呢,好记性不如烂笔...

2019-09-15 21:10:11 126

原创 Iterable接口的使用

一,介绍。在对List遍历时,通常有三种方式:List<String> lists = Arrays.asList("aaa","bbb","ccc","ddd");//第一种 for(int i = 0; i < lists.size(); i++){ System.out.println(lists.get(i));}//第二种 ...

2019-08-11 23:34:31 847

原创 指针与数组

一,前言 提起指针与数组,大家可能都再熟悉不过,尤其是指针,令许多人既喜欢,又害怕;当然除此之外在面试中我们也经常会遇到关于指针与数组操作的问题;这篇文章便是为了弄清楚指针与数组的关系而出现的。 二,指针与数组的不同 这个问题一般人都会这样回答:指针是一种变量,它存储相应类型变量的地址,在定义一个指针时编译器只会为指针本身申请存储空间,而对于数组而言,编译器需要为数组中的每一个元素都申请相应

2019-02-24 22:33:02 1176

原创 js中toFixed方法使用时的坑

一,简要介绍toFixed(number)是js中一个用于将小数转换为指定位数的方法,但是在工作中使用它时遇到了一些坑,特此进行记录.二,问题(1)小数转换问题 在刚开始转换的时候一直以为转换过后返回的结果应该也是小数,结果偶然发现,在比较时很明显的比较竟然错了,才发现原来toFixed方法转换后返回的是字符串...请看例子:/*以下结果是直接在console里main进行验...

2019-02-24 22:25:28 5317

原创 Hibernate的使用(四)--疑难篇

一,本节内容上一节搭建了基于spring+springmvc+hibernate的项目,现在看来其实也没有什么复杂的,但是当初我自己搭建的过程中可是吃了不少苦头,所以这一章将用来记录我在搭建的过程中所遇到的难点,记录下来,防止以后又踩坑了。。。二,坑的组成我遇到的坑主要有两个,1是在spring配置文件中设置hibernate的包扫描路径时老是报错;2是使用spring基于注解的事务失...

2019-01-01 21:33:44 242

原创 Hibernate的使用(三)

一,本节内容上一节记录了hibernate通过xml配置的使用,本节将记录hibernate注解功能的使用,通过注解可以很方便的使用hibernate,减少了配置文件xml的使用量。另外本节将搭建一个Spring+Hibernate+SpringMvc的项目,本文假设读者都已经对spring等已经有啦很好的认识,好了正式开始。二,开始前的准备工作本人在搭建整个环境时出了好多问题,所以在开始前...

2018-12-31 23:23:19 279

原创 Hibernate的使用(二)

一,回顾上一节介绍了hibernate如何使用xml文件来配置使用,我们发现除过hibernate的基本配置文件(hibernate.cfg.xml)外,每有一个实体类需要与数据库的中的表进行映射就需要建一个*.hbm.xml文件进行字段的映射,这是十分繁琐的一件事。幸好,hibernate提供了基于注解的功能来使用,减少了繁琐的配置文件的使用。二,hibernate注解功能的使用(1)新建...

2018-12-23 17:47:00 98

原创 Hibernate的使用(一)

一,hibernate的介绍hibernate是一款基于ORM的数据库开源框架,所谓的ORM即Object Realational Mapping(对象关系映射),简单的说就是可以让使用该框架的人通过面向对象的语言去操控关系型数据库。与传统的通过JDBC来完成数据库的操作相比,使用该框架可以大大降低开发者的工作量,使其从关系型数据库的各种操作中脱离出来(加载驱动,创建连接等)。JAVA中一个P...

2018-12-22 22:44:42 506

原创 一些关键字的使用解析

一,前言平时在使用时,我们或多或少都会有疑惑,一个类型前加一个const到底有什么作用呢?类似的还有static,volatile,extern,extern “C”等,今天我便会把自己总结的知识,记录在这里。 二,主要内容2.1 const与不加const 关键字const并不能把变量变成常量,在一个符号前加上const限定符只是表明这个符号不能被赋值,也就是说它的值对于这个符号来说是只读的,

2017-12-02 17:57:50 278

原创 ping命令的实现

/*注意:1,由于本人技术有限,所以如果你是技术的狂热追求者,我觉得你不用看我写的了,这是因为我很菜。。。我主要是帮助与我一样,想做一些事,但不知道从哪里做起的人的。 2,为了叙述简洁,以下内容可能并经不起推敲(可能还有错误),也有很多省略,所以,希望读者能够在看完本文后再看其他相应书籍,以对其深入的知识进行全面了解。 */ 一,前言为了判断与对方主机的连通性,不论是Linux系统还是Wind

2017-11-22 18:13:41 6815 1

原创 如何将域名转换为ip

一,前言 这篇文章主要讲述了如何将域名如“www.baidu.com”转换为类似“127.0.0.1”的IP地址,转换的过程主要使用了DNS协议相关的内容,但我们的重点并不是这里,有兴趣的可自行了解。我主要讲的是如何使用,主要包括以下几个内容: 1,hostent结构体 2,gethostbyname函数的用法 以上内容全都是在Linux环境里。二,详细内容 1,hostent结构体 s

2017-11-22 14:50:56 27453

原创 哈希表

一,简介 哈希表,又称散列表,是一种容器,它的底层一般是数组实现,它可以快速定位一个元素,具有O(1)的时间复杂度。说到这就不得不提,哈希表的原理:哈希表是采用了函数映射的原理,设有函数f(x) (x>=0),则对于任意一个数m(m>=0) ,则有key=f(m),其中key值便是数组中的下标(key>=0),则f(x)便称为哈希函数,在查找一个元素的时候我们便可以通过哈希函数,找到该元素所在的下

2017-10-07 21:09:39 1227

原创 ICMP协议

一,介绍。ICMP协议全称:Internet Control Message Protocol ,即网际控制报文协议。该协议在网络层使用,众所周知,IP协议是不可靠的数据传输服务,它是尽最大努力交付的,不保证数据报到达的顺序,是否重复,以及是否丢失等问题,(这些问题由运输层负则),有了ICMP协议,便是为了有效地转发IP数据报和提高交付成功的机会。。二,其作用。ICMP报文分两种,一种是ICMP 差

2017-10-06 20:39:13 1920

原创 链表的相应操作

一,目的 本节内容主要包括链表的排序,以及两个单链表的合并。二,分析。 在对链表排序的时候,可以采用选择排序等方法,对比原来的对数进行排序,此时的不同便是如今要对结点进行排序。而合并两个单链表,前提是两个单链表是有序的,这样合并完的单链表便也是有序的。三,代码实现struct Node{ int _data; Node* _next; Node(const int& x

2017-10-05 21:28:01 149

原创 双向链表

一,目的。实现无头双链表,并完成其基本的操作,包括插入,删除等。二,为什么有单链表了还要有双向链表?双向链表,顾名思义,相对于单链表,每个节点不仅要有指向其后继的指针,还有指向其前驱的指针。首先我们来看节点的定义:template<class T>struct Node{ T data; //节点的数据 Node<T>* _prev; //其前驱 Node<T>* _

2017-10-05 20:00:45 452

原创 主要排序算法的比较及其优化

一,目的 本节内容主要讲了冒泡排序,插入排序,希尔排序,快速排序,并且提供了它们排序速度的比较,以及各自的优化。二,主要排序算法 1,冒泡排序 冒泡排序又称起泡排序(bubble),之所以称为起泡排序,是因为每次排序关键字较小的元素像水中的气泡一样逐步向上漂浮,而关键字较大的元素像石块一样下沉。 请看下图: 从上图我们可以看到:第一次,挑出9

2017-09-29 18:38:25 719

原创 迭代器失效问题

1,问题的产生 请看下面这段代码:#pragma once#include<vector>#include<iostream>using namespace std;void test(){ vector<int> v1; v1.push_back(1); v1.push_back(3); v1.push_back(3); v1.push_back(

2017-09-24 19:09:15 285

原创 插入排序

一,目标 本节内容主要讲述了插入排序,包括直接插入排序与其改进版希尔排序(默认递增排列)。二,原理 //注:这里只提供算法相应的解释与实现过程,并不讲解其来历,以及一些具体的计算(如时间复杂度等),如有兴趣,请读者自行了解2.1 插入排序讲起插入排序,我想对于打过扑克牌的童鞋来讲是再熟悉不过了,每次揭牌的时候,为了使牌序清晰,你都会把最小的牌放到最左边(假定),然后比它大的次之。此刻你新揭了一张

2017-09-17 18:27:55 273

原创 string类的实现

一,目标 此次目的很明显,实现string类中的主要方法,包括:构造函数,拷贝构造函数,+,+=运算符的重载等。 在实际的面试中,关于string的问题会很多,因此自己实现一遍很有必要。二,代码实现 1,首先看声明#pragma once#include<iostream>using namespace std;class MyString{ MyString(const cha

2017-09-14 17:01:30 462 4

原创 堆的创建

一,什么是堆? 堆,是二叉树(完全二叉树)(除过叶子节点所在的层,其余层都是满的)的一种,它同时又分为大堆和小堆。 大堆便是指:任意一个节点的值(非叶子节点)都大于它的左右孩子节点的值。 小堆:任意一个节点的值(非叶子节点)都小于它的左右孩子节点的值。 如下图: 二,堆的应用 常用的有堆排序,数据的查找;它也常被称为优先级队列,堆的性能与其高度有关

2017-09-08 20:22:33 423

原创 shell脚本实现进度条功能

一,什么是shell脚本。一个 shell 脚本就是一个包含一系列命令的文件。shell 读取这个文件,然后执行 文件中的所有命令,就好像这些命令已经直接被输入到了命令行中一样。Shell 有些独特,因为它不仅是一个功能强大的命令行接口,也是一个脚本语言解释器。我们将会看到, 大多数能够在命令行中完成的任务也能够用脚本来实现,同样地,大多数能用脚本实现的操作也能够 在命令行中完成。另外shell里面

2017-07-02 22:49:47 4228

原创 TCP_Server

一,socket编程在TCP/IP协议中,IP地址+TCP/UDP的端口号,唯一地标识了网络通讯中的一个进程,“IP地址+端口号”就称为socket。二,TCP_Server2.1 基于多线程#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>

2017-07-02 19:07:08 2793 1

原创 eval ,倒引号 及$( ) 使用调研

一,什么是 evaleval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。 说明:该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。 如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实

2017-06-27 23:52:38 437

原创 TCP 握手与挥手

注:以下内容部分来自谢希仁老师的《计算机网络》 第六版一,TCP TCP是面向连接的协议,运输连接是用来传送TCP报文的,它的运输连接的建立与释放是每一次面向连接的通信中必不可少的过程。因此运输连接就有三个阶段,即:连接建立,数据传送和连接释放。二,TCP的连接建立(三次握手)TCP首部(图片来自网络): 假设有主机a与主机b,其中a运行TCP客户程序,而b运行TCP服务器程序。最初两端的TCP

2017-06-25 10:55:15 305

原创 c语言字符转换

一,概括 在实际应用中,我们会遇到将整型转换为字符型,或者将字符型转换为整型的时候,在c语言中提供了一套接口用来实现上述要求,它们分别为:int atoi(char * arry); //将字符串转换为整型 float atof(char * arry); //将字符串转换为float char *itoa(int value,char *string,int radix

2017-06-22 00:03:29 3964

原创 URG / PSH 及计时器

一,什么是URG,什么是PSH。 URG与PSH都是TCP报文中的控制位,其中URG(URGent)是紧急的意思,当URG为1时表示紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不是按照原来的排队顺序进行来传送。 当URG置为1后,发送应用进程就告诉发送方的TCP有紧急数据需要传送,于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后

2017-06-19 17:52:25 311

原创 端口分类调研

一,什么是端口?简言之,端口就是主机与外界进行信息交换的通道。一个端口号便唯一标识了主机上的某个网络进程。二,一共有多少有效端口?端口号为16位,一共有2^16个不同端口,但是一般使用的只有少数几个,因为在一个主机上无法运行太多的网络进程,而且这也是没有必要的。端口主要分为如下几类:1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明

2017-06-19 17:00:08 240

转载 路由选择协议调研

一,路由选择协议概述。 路由选择协议,也就是用来讨论路由表中的路由是怎样得出的。路由选择算法是路由选择协议的核心,需要遵守一下几个要求: 1,算法必须是正确的和完整的 2,算法在计算上应简单 路由选择的计算不应该使网络通信量增加太多的额外开销。 3,算法应能适应通信量和网络拓扑的变化 这就是说,要有自适应性。当网络中的通信量产生变化时,算法能自适应地改变路由以达到均衡各链路负载的作用。当

2017-06-18 22:19:15 318

原创 NAT技术与代理服务器

一,什么是NAT。 NAT,即Networ Address Translation,可译为网络地址转换或网络地址翻译。 当前的Internet面临两大问题,即可用IP地址的短缺和路由表的不断增大,这使得众多用户的接入出现困难。 使用NAT技术可以使一个机构内的所有用户通过有限的数个(或1个)合法IP地址访问Internet,从而节省了Internet上的合法IP地址;另一方面,通过地址转换

2017-06-18 16:53:56 1084

转载 C++ 20道基础知识题

转载自:http://www.cnblogs.com/dongzhuangdian/p/5096900.html问1:请用简单的语言告诉我C++ 是什么? 答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是最受广大程序员受用的最强大编程语言之一,支持类:类、封装、

2017-06-18 16:04:02 1634

原创 CRC校验

一,什么是crc校验? crc校验全称为:循环冗余校验码(Cyclic Redundancy Check),它是用来校验数据在传输过程中是否发生改变的。其原理为:在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生

2017-06-18 15:36:45 1146 2

原创 c++ map/multimap,set/multiset的使用(续)

一,set的使用 上节我们主要讲了map的主要用法,这节将继续学习set的相关知识 有了map的使用心得,使用set就变得较为简单,需要强调的是,set是key结构,并且也不无法插入相同kay值的节点,另外需要注意的是,在访问set中的数据时我们使用其定义好的迭代器,其次set并没有对“【】”进行重载,在使用时我们需要注意这一点,请看代码,及运行结果:#pragma once#include<

2017-06-18 10:53:28 214 1

原创 c++ map/multimap,set/multiset的用法及比较

一,相关介绍 map/multimap,set/multiset都为c++中的标准容器,它们的底层都是用红黑树实现的,因此在进行查询,修改,删除等操作上具有很高的效率,可以达到O(logN)。 那么它们的区别是什么呢? 1,其中map/multimap是kay-value结构,意思为它存储的是一对数据,其中kay为关键字信息,而value为相应的键值;而set/multiset为kay结构,

2017-06-15 18:35:16 1607

原创 线程安全与可重入函数

一,什么是线程安全? 所谓的线程安全是指在多线程中,即使有多个进程访问同一份代码也不会造成不确定的结果。 即:多个线程完成一个任务与一个线程去完成的结果总是一样的,并且不会产生预料之外的结果,那么这样的线程便是安全的。 二,怎么保证线程是安全的? 对于多线程的程序访问冲突的问题十分常见,而最简单的方法便是引入互斥锁,通过互斥锁可以实现拿到锁的线程可以正常执行,而没有拿到的,只有等待,不能访问

2017-06-14 22:27:06 231

Python实现对图片的抓取

使用Python实现的爬虫,包括源码以及打包好的可以在windows10中直接运行的包,主要使用了selenium,requests,以及BeautifulSoup,Python版本3.6,欢迎大家下载学习...

2019-03-03

cplusplus函数库

c++函数库,各个函数的使用方法,包括STL,每个方法中都有例子,并且包含相应的例子,chm格式,十分方便日常的学习与使用

2017-09-29

c++实现的文件压缩(Huffman)

包括Huffman树的生成,堆的建立,编码的形成,以及压缩与解压缩的实现。开发环境vs2015,用户在使用的时候为了防止环境的不同而造成的偏差,可新建相应文件复制即可。(基于c++模板)

2017-09-14

空空如也

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

TA关注的人

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