自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Code by persistence

吟风弄月,观海听涛。

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

原创 查找算法及查找常用数据结构总结

每一个结点分支数≤m;根结点分支数≥2(要求此根结点不为叶子结点);其余分支结点的分支数≥ m/2;所有叶子结点在同一层;每一个结点的结构如下:满足A0K1A1KmAmA0​K1​A1​...Km​Am​,其中Ai表示其中的所有关键字;

2024-03-31 12:42:23 827

原创 Mybatis-plus学习与实践——从繁琐的CRUD中解放出来

Mybatis-plus学习与实践——从繁琐的CRUD中解放出来1. 源起在日常的开发过程中,ORM框架是再熟悉不过的东西。在早些年的SSH时代,使用的是Hibernate,其是全自动的ORM框架,功能强大,可以完全通过代码实现sql语句的构造和查询。但这也导致其过于笨重,随着互联网技术的迭代和微服务技术概念的兴起,它的老对手Mybatis逐渐走到历史前台,其以简单,轻量化和面向sql而逐渐成为了主流的ORM框架。虽然Mybatis使用起来灵活且轻量,但是也正由于它是半自动化的ORM框架,导致了需要编

2021-01-17 16:21:23 816 1

原创 序列化浅析

1. 概念序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。简单地说,序列化是将对象的状态信息转换为可以存储或传输的形式的过程。依照序列化格式重新获取字节的结果时,可以利用它来产生与原始对象相同语义的副本。从一系列字节提取数据结构的反向操作...

2019-09-29 11:35:24 597 1

原创 一文弄懂字符串编码

抽象字符是字符的抽象,它不仅包括了通常意义上的字符,还包含了计算机中的一些特殊字符。在计算机中,有许多的字符是空白的,甚至是不可打印的。比如ASCII字符集中的0,就是NULL,它就是一个抽象字符。另外控制字符也是一类抽象字符,它是指:对应到语言中一些用来处理文句的概念(类似排版)。例子为打印机或其它显示设备的命令,如Enter或Tab。

2019-07-29 19:18:04 11572

原创 Java Cron表达式详解

Cron表达式:Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:秒分时日期月星期年(可选)SecondsMinutesHoursDayofMonthMonthDayofWeekYear按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你...

2019-04-08 17:34:44 8234 1

原创 贷款计算器的简单实现(C++)

1. 等额本金当月还款 = (当前未还总额)*(月化利率) + (固定每月还款本金)例如,借款12万元,分12期还,年化利率为6%(月化利率为0.5%)那么固定每月还款本金为1万元,利息为:a_1 = 120000*0.5\% + 10000 = 10600a_2 = 110000*0.5\% + 10000= 10550a_3 = 100000*0.5\% + 10000= 105...

2019-03-03 23:29:54 4718

原创 Java编程思想读书笔记(5):访问控制权限

五、访问权限控制访问权限控制的等级。从最大到最小权限依次是:public、protected、包访问权限(无关键字,friendly)、private。Java可运行程序是一组可以打包并压缩为一个Java文档文件(JAR,使用java的jar文档生成器)的.class文件。Java解释器负责这些文件的查找、装载和解释。package和import关键字的主要作用,是将单一的全局名...

2019-01-27 12:29:42 190

原创 Java编程思想读书笔记(4):初始化与清理

四、初始化与清理执行构造函数实际上分为三阶段:调用父类的构造函数用这些字段的初始器和初始化块来初始化它们;执行构造函数体如果我们为类编写了一个或多个构造器那么jvm就不会生成默认构造器了。Java中区分重载方法的规则:每个重载的方法都必须有一个独一无二的参数类型列表。(参数顺序的不同也可以,但这样会使代码难以维护);不能使用返回值来区分重载方法。涉及基本类型的...

2019-01-26 10:55:12 208

原创 Java编程思想读书笔记(3):操作符与控制流程

Java编程思想读书笔记(3)三、操作符与控制流程三、操作符与控制流程Java操作符。几乎所有的操作符都只能操作“基本类型”,例外的是“=”,“==”和“!=”,这些操作符能够操作所有的对象,除此之外,String类支持“+”和“+=”。2.赋值“=”的意思是:取得右边的值(右值rvalue),把它复制给左边(左值lvalue)。右值可以是任何常数、变量或者表达式(只要它能生成一个值就...

2018-10-03 00:37:37 143

原创 Java编程思想读书笔记(2):对象

二.对象把一切都当成是对象来处理,用reference来操控对象。reference可单独创建,使用时需使其跟某个对象相关联。使用new来创建对象使其同reference相关联。数据可以存储在以下六个地方:寄存器:在处理器里,反应最快,由编译器分配,数量有限,不能直接控制。栈:在常规内存区里,通过栈指针对其进行访问,速度仅次于寄存器,存储的数据的大小和生命周期必须是已知的。...

2018-10-01 00:13:04 136

原创 Java编程思想读书笔记(1):简介

Java编程思想读书笔记(1)一. 简介一. 简介OOP应该以问题的形式来描述问题,而不应是以执行解决方法的计算机的形式描述问题。面向对象编程方法的特征:万物皆是对象。程序就是一组相互之间传递消息,告诉对方该干些什么的对象。每个对象都利用别的对象来组建它自己的记忆。对象都有类型。所有属于同一类型的对象能接受相同的消息。简而言之,对象有状态,行为和标识。对...

2018-09-30 20:33:18 164

原创 C++ STL之查找函数总结

STL中更有很多函数十分常用,其中查找是使用最高频的函数之一,以下针对C++11的查找进行总结。1.查找(find)1.1 std::find()1.1.1 常用形式//C++20前template< class InputIt, class T >InputIt find( InputIt first, InputIt last, const T&...

2018-09-16 00:24:31 3928 1

原创 C++ STL之排序函数总结

STL中更有很多函数十分常用,其中排序是使用最高频的函数之一,以下针对C++11的排序进行总结。1. 排序(sort)1.1 std::sort1.1.2 常用形式//用 operator< 比较元素。template< class RandomIt >void sort( RandomIt first, RandomIt last );/...

2018-09-16 00:23:44 2749

转载 C++ 严格弱序

1.什么是严格弱序?C++ 关联容器的有序容器对元素关键字的类型有要求,元素关键字的类型必须定义了严格弱序(stick weak ordering)拿内置类型来说,C++都定义了“<”操作符,这就是一个严格弱序,而“<=”就不是一个严格弱序。2.严格弱序有什么用?对于内置类型我们自然可以有<、>、=来判断两个值的大小关系,而对于自定义的类类型,为它定义三种比...

2018-09-15 00:47:07 864

转载 boost.spirit之解析C++头文件

环境:win7_64旗舰版,VS2008场景:C++与lua交互是比较繁琐的,当我们编写一个C++类后,如果要给lua使用,就必须写一个lua包装类,将lua与原始C++类关联起来。其实这部分代码编写完全可以通过工具生成,前提是我们能解析C++头文件,然后根据解析出来的”类”和“函数”信息就可以自动生成相关的代码。cpp_class_grammar.h#pragma once#de...

2018-09-03 00:52:07 586

原创 自定义C++容器之LinkedHashMap

1. 背景虽然C++标准库提供了很多容器以供使用,但是实际上有时候其不能很好地满足一些较为特殊的需求,这时就需要自定义一些容器以满足实际的需要。在自定义一个容器之前,有必要先了解STL。因为STL中提供的容器的完备而优秀的设计,是容器代码的最好范本。2. STL六大组件容器(containers):各种数据结构,如vector,list,deque,set,map等,用来存放数据...

2018-08-23 13:21:01 5309 1

原创 mac 安装与配置boost

1. 下载并解压boost安装包以boost 1.46.1为例: 在 https://www.boost.org/users/history/version_1_46_1.html 下载tar包并解压;2. 安装boost一部分组件在完成1和2以后就能直接用,因为很多是直接写在hpp的inline函数,但是要利用其它功能,需要build boost库里面的各个组件。2.1...

2018-07-16 17:41:03 1425

原创 IntelliJ IDEA for mac 快捷键整理

Mac键盘符号和修饰键说明 符号 解释 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ↓ 下箭头 ← 左箭头 → 右箭头...

2018-06-26 17:47:55 2387

原创 mac安装JDK和maven及环境变量配置

默认配置的是jdk8,如果要切换jdk11,则在终端中执行命令:jdk11。如果要切换回jdk8,则执行命令:jdk8。1.从maven官网 http://maven.apache.org/download.cgi 下载对应版本的压缩包并解压,假设解压后的目录为。1.从oracle官网上下载mac对应版本的jdk安装包进行安装,以jdk1.8.0_151为例;如果想确定当前配置的是哪个版本,可以执行命令:java -version进行查看。4.在文件尾追加以下内容并保存。3.在文件尾追加以下内容并保存。

2018-05-29 11:58:02 7716 1

原创 C++11之智能指针

为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer)。智能指针的原理是,接受一个申请好的内存地址,构造一个保存在栈上的智能指针对象,当程序退出栈的作用域范围后,由于栈上的变量自动被销毁,智能指针内部保存的内存也就被释放掉了(除非将智能指针保存起来)。C++11提供了三种智能指针:std::shared_ptr, std::unique_ptr,std::we...

2018-03-27 17:42:20 281

原创 C++设计模式(一):单例模式

单例模式单例模式: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决: 一个全局使用的类频繁地创建与销毁。何时使用: 想控制实例数目,节省系统资源的时候。如何解决: 判断系统是否已存在单例,如果有则返回,没有则创建。关键代码: 构造函数是私有的。单例大约有两种实现方法:懒汉与饿汉。懒汉: 故名思义,不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化,所以上边的经

2018-03-14 22:08:46 272

原创 遍历二叉树总结

1.递归遍历struct bnode{ char data; struct bnode *lchild,*rchild;};typedef bnode* bitre;//递归先序遍历void PreOrderRec(bitre root){ cout << root->data; PreOrderRec(root->lchild); PreOrder

2018-03-08 00:24:15 272

原创 排列组合算法总结(基于C++实现)

1.排列全排列n!1.1 递归法设一组数p = {r1, r2, r3, … ,rn}, 全排列为perm(p),pn = p – {rn}。则perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), … , rnperm(pn)。当n = 1时perm(p} = r1。如:求{1, 2, 3, 4, 5}的全排列1、首先看最后两个数4, ...

2018-03-06 00:19:05 39201 7

原创 LeetCode之Coin Change 和 Coin Change 2

1.Coin ChangeLeeCode链接:https://leetcode.com/problems/coin-change/description/你有不同面额的硬币和总金额。写一个函数来计算你所需要的最少的硬币数。如果这笔钱不能由硬币的任何组合构成,则返回-1。Example 1:coins = [1, 2, 5], amount = 11return 3 (11 = ...

2018-03-03 20:16:21 857

转载 值得推荐的C/C++框架和库

值得学习的C语言开源项目Libeventlibev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。下载链接:https://github.com/lib

2018-02-06 17:42:07 591

原创 常见排序算法总结(基于C++实现)

主流排序算法总结,插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、树形选择排序、归并排序;

2018-01-16 18:30:37 3417 1

原创 C++ 类型转换

在C++中,如果两种类型有关联,那么就可以相互转换(conversion)。以加法运算为例,C++不会将两个不同类型的值相加,而是先根据类型转换规则设法先将运算对象统一后在求值。上述的类型转换是自动执行的,无须程序员的介入,因此被称为隐式转换(implicit conversion)。算术类型之间的隐式转换被设计得尽可能避免损失精度,例如,如果表达式中既有整数类型也有浮点数类型,那么整型会

2017-12-27 15:13:59 322

原创 C++11之多线程初探

C++11在标准库中加入了std::thread以支持多线程编程,主要要用的头文件是: - :该头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该头文件中。 - :该头文件主要声明了与互斥量(mutex)相关的类,包括 std::mutex 系列类,std::lock_guard, std::unique_lock, 以及其他的类型和函数。1.创

2017-12-20 18:35:12 204

原创 C++ 定义和使用接口类的简单模式

以一个Person类为接口类,Student类为实现类的代码为例:1. Person.h声明了Person类,PersonCreator类,并定义了一个全局变量用来创建Student对象#pragma onceclass Person{public: virtual ~Person() {} virtual void Eat() = 0; virtual void Slee

2017-12-14 14:13:10 2939

原创 C++命名规则

C++命名规则有很多种匈牙利命名法,即在变量和函数名中加入前缀以增进人们对程序的理解。1. 变量 类型 前缀 int n(i) unsigned int u(n) float或double f char和char* 表示字符串时用sz,表示指向单个字符的指针时可以用p String str Vector v Matrix mat Color clr

2017-12-05 12:15:36 802 1

原创 DirectX11之3D渲染管线

1. 输入集成阶段(Input Assembler Stage)     这个阶段的主要目的是根据用户提供的顶点及索引信息,构建多边形,主要有点、线段、三角形。2. 顶点着色阶段(Vertex Shader Stage)重点阶段     这是一个完全可编程的阶段,即完全由程序员自己来实现。     主要工作:模型空间->世界空间->视角空间->投影空间。3. 曲

2017-06-09 15:26:29 904

原创 字符串匹配(Boyer-Mooer 算法)

题目描述: 给定一个目标串str和模式串ptr,要求寻找ptr第一次在str出现的位置,并返回其下标,匹配不到则返回-1。1. 算法思想 在当前用于查找子字符串的算法中,BM(Boyer-Moore)算法是当前有效且应用比较广的一中算法,各种文本编辑器的“查找”功能(Ctrl+F),大多采用Boyer-Moore算法。比KMP算法快3~5

2017-05-23 00:03:36 699 1

原创 字符串匹配(KMP算法)

题目描述:给定一个目标串str和模式串ptr,要求寻找ptr第一次在str出现的位置,并返回其下标,匹配不到则返回-1。1. 算法思想显然暴力算法的时间复杂度比较高,那么为了简化时间复杂度:需要充分利用模式串ptr的性质(比如里面部分字符串的重复性,即使不存在重复字段,在比较时,实现最大的移动量)。考察模式串ptr:ababaca 
这里我们要计算一个长度为模式

2017-05-22 00:03:04 446

原创 字符串匹配(暴力匹配)

题目描述:给定一个目标串str和模式串ptr,要求寻找ptr第一次在str出现的位置,并返回其下标,匹配不到则返回-1。暴力匹配(Brute force)暴力匹配的思路很简单,开始时用模式串ptr从匹配串str的第一个字符开始向后匹配,当出现不同字符时,从匹配串str的下一个字符开始重新匹配,即原搜索位置+1开始重新匹配。代码如下:

2017-05-22 00:02:26 759

转载 大规模优化算法 - LBFGS算法

L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源。本文主要通过对于无约束最优化问题的一些常用算法总结,一步步的理解L-BFGS算法,本文按照最速下降法 - 牛顿法 - 共轭梯度法 - 拟牛顿法 - DFP矫正 - BFGS 矫正 - LBFGS算法这样一个顺序进行概述。(读了一些文章之后,深感数学功

2016-12-20 18:34:17 1000

转载 对线性回归,logistic回归和一般回归的认识

1 摘要      本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识。前四节主要讲述了回归问题,回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型,然后将该数学模型用于预测或者分类。该方法处理的数据可以是多维的。     讲义最初介绍了一个基本问题,然后引出了线性回归的解决方法,然后针对误差问题做了概率解释。之后介绍了logist

2016-12-16 21:25:30 688 1

原创 回溯法经典问题-八皇后

题目描述:会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。给出一个数b,要

2016-09-10 22:15:14 542

转载 数据结构专题——线段树

线段树转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326 持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操

2016-01-17 21:50:23 390

原创 镜像树(XCOJ 1214)

问题描述:一棵二叉树,若其与自己的镜像完全相同,就称其为镜像树(即这棵二叉树关于根完全对称)。例如是一棵镜像树;而不是镜像树。现给你一棵二叉树,请你判断其是不是镜像树。输入:第一行是一个整数数T,表示测试数据有多少组每组数据第一行是一个正整数n(1下面n行,每行有三个正整数a b c(1=1(保证数据中给出的二叉树拓扑结构是合法的

2016-01-14 20:34:40 860

原创 VS2012 +MFC+ OPenGL环境搭建

这里以MFC单文档程序为例。框架的代码是基于NEHE的OPenGL教程的,应该放在负责视图的View.cpp中,笔者的项目名叫迷宫,故类名为C迷宫View,下面是主要步骤:一. 在MFC中的View.cpp中添加函数BOOL SetupPixelFormat(void)来设置像素格式:BOOL C迷宫View::SetupPixelFormat(void){ static PIXE

2015-12-23 19:48:00 1857

空空如也

空空如也

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

TA关注的人

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