自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZMyths的博客

你和别人的不同,就是多了一点桀骜和自命不凡

  • 博客(72)
  • 资源 (8)
  • 问答 (2)
  • 收藏
  • 关注

原创 浅谈领域事件及其应用

前言:好久没更新博客啦。这阵子刚忙完,稍微空暇,就想分享下在开发中用过的领域事件。因为大家做微服务的,基本上都会用DDD去进行领域驱动设计。而领域事件是领域模型里一个很重要的概念。下面开搞,放心,不只是理论哦,有我实战的可运行demo,你可以照着这个模板去开发,领域的对象可以自己去抽象和建模哦~~ 阿信觉得这期是干货。前两节的理论部分借鉴了别的文章,但第三节开始全是个人工作中的实战,简化了核心代码,把核心框架抽成demo分享一下。0.领域事件的优势先说说领域事件的优势。让你明白为啥用它。事件驱.

2020-05-24 12:26:28 1458 2

原创 递归和尾递归的区别和原理

                             递归和尾递归的区别和实现             基本上大多数C的入门教材里都会说简单的递归,例如求阶乘n!,经典的本科入门书籍谭浩强的《C语言程序设计》,但后来看了《代码大全2》这本书,关于进阶和编码规范的书中提到了,这些计算机教材用愚蠢的例子阶乘和斐波那契数列来讲解阶乘,因为递归是强有力的工具,但用阶乘去计算阶乘之类的,很不明智...

2017-08-14 00:08:07 46278 26

原创 Erlang服务端与微信登录和微信支付接口的交互

,需要定义三个record。字段可以自己命名,Body就是解析http请求回复的数据,然后先将binary文件转化成list, 再通过xmerl_scan:string(Str)方法,提取出XML的节点元素。再通过xmerl_xpath:string("/xml", XmlElt)方法,提取出XML节点下的所有数据。 再通过下面的[#xmlElement{content=Content}]= xmerl_xpath:string("/xml/prepay_id", Item)方法,找到prepay_id

2017-04-20 11:12:52 2131

原创 网络协议分层

而TCP/IP的协议分层的5层网络架构: 应用层(第五层) 传输层(第四层) 互联网层(第三层) 网络接口层(第二层)物理层(第一层)

2017-04-06 16:36:50 2366

原创 C++中的四种类型转换

首先C中的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: Type b = (Type)a而C++中的四种转换类型如下:1.static_cast 2.const_cast 3.dynamic_cast 4.reinterpret_cast.1. static_cast <Type*> (x) 静态转换(在编译期间处理)类似于C风格的强制转换最常用的类型转换符,在正常状况下的类型转换。主要用于C++中内置的基本数据类型之间的转换.但是没有运行时类型的检测来保证转换的

2016-11-25 23:09:41 795

原创 C/C++中的内联函数和宏定义区别

内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。(但节约时间的同时增加了空间的消耗)我们用inline来定义内联函数,在C++中,在类的声明部分定义了函数体的函数,被默认为是内联函数。而不管你是否有inline关键字。(不过编译器会决定要不要将它内联)。我们也可以将定义在类的外部

2016-10-26 16:52:53 2015

原创 C/C++的八种排序算法及实现

几个基本常见的排序,插入排序 (包括 直接插入,希尔插入,折半插入等),交换排序(包括 冒泡排序,快速排序) ,选择排序(简单选择,堆排序,树形排序等),归并排序,基数排序(多关键字,链式基数)。

2016-10-08 22:43:10 16208 4

原创 C++的多态及实现

当不同对象调用相同名称的成员函数时,可能引起不同的行为(即执行不同的代码)。这种现象称为多态性。将函数调用连接相应函数体的代码的过程称为函数联编(简称联编)。C++中根据联编时刻不同,分为静态联编和动态联编。静态联遍:不同的类可以有相同名称的成员函数,编译器在编译时对他们进行函数联编,这种在编译时刻进行的联编称为静态联编。静态联编所支持的多态性就是编译时多态性(也称编译期多态性、静态多态性)。函数重载就属于编译时多态性。动态联编:在动态联编中,在程序运行时才能确定调用哪个函数。这种在运行时的函数联编

2016-09-07 21:16:57 1131

原创 C和C++中全局变量,局部变量,静态变量和常量

C/C++中常量,静态变量,全局变量和局部变量的区别和作用。把局部变量改变为静态局部变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态全局变量是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。一旦定义了常量,就不能再去修改它的值。如果初始化没给常量赋值,那它就是一个随机数,并且以后也不能给它赋值。全局变量、静态全局变量、静态局部变量都是在静态存储区(全局数据区)中分配空间的,而局部变量是在栈上分配空间的。常量存储在常量区。全局/静态存储区,

2016-08-14 22:54:15 11733 2

原创 C++中构造函数,拷贝构造函数和赋值函数的区别和实现

C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。 构造函数就是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。拷贝构造函数是一种特殊的构造函数,用基于同一类的一个对象构造和初始化另一个对象。当一个类的对象向该类的另一个对象赋值时,就会用到该类的赋值函数。拷贝构造函数是一个对象初始化一块内存区域,这块内存就是新对象的内存区,而赋值函数是对于一个已经被初始化的对象来进行赋值操作。拷贝构造函数首先是一个构造函数,它调用时候是通过参数的对象初始化产生一个对象。

2016-08-05 21:54:00 64701 22

原创 如何利用github+hexo搭建个人博客

背景为了搭建个人在GitHub上的博客,看了几个帖子,方便自己后续使用,记录下自己搭建的过程,整合成一个帖子。一、安装环境 & 流程步骤1.安装环境搭建node.js环境 搭建git环境 和 搭建Github个人仓库 搭建本地hexo2.发布博客将hexo和GitHub Pages关联起来 编写md文档,并且用hexo操作发布二、环境搭建和操作1. 安装n...

2019-03-30 14:28:56 450

原创 ibatis转mybatis

插件下载地址https://github.com/mybatis/ibatis2mybatis步骤destination文件夹:第一个区域为目标文件夹,即最后得到的Mybatis mapper文件都会在该目录下; source文件夹:第二个区域为源文件夹,也就是将我们需要转换的Ibatis mapper文件放在该目录下即可; Ant Build:第三个区域为Ant Build区(如...

2019-03-30 14:27:08 1757 1

原创 java中的多线程实现

最近因为业务原因,一个接口不同的字段都要调不同的服务来拿,串行调用肯定会超时。那么只有通过异步调用或者多线程来实现。于是把五花八门的多种实现方式整理了一下。1.继承Thread 类,实现run 方法 。 用start方法启动package com.dianping.cip.region.biz.utils;public class ThreadDemo extends Thread ...

2019-01-19 20:45:58 692

原创 批量插入更新的SQL实现

昨天需要实现一个mybatis+MySQL的数据层接口,一条可以批量插入、更新的SQL语句,插入整个list,设置一个唯一的key,当表中有该条记录,就更新该记录,没有的就插入一条新纪录。下面给出具体的SQL语句:&lt;insert id="batchRefresh" parameterType="java.util.List"&gt; insert into Fanxing_Te...

2018-12-07 11:59:22 1694

原创 上传EXCEL文件到后端,导入并解析EXCEL的前后端实现(Vue.js + java后端)

vue.js前端,Java后端,如何导入excel文件,并且解析,本文给了前后端代码的实现,以及完美实践OK之后的分享。前端主要用了element-ui的upload组件。关于这个组件的官方文档很少:http://element-cn.eleme.io/#/zh-CN/component/upload ,也没仔细给个完整的demo,所以踩完坑写个完整的博客。1.VUE前端demo...

2018-11-27 21:16:12 43975 20

原创 mybatis批量查询sql

在用mybatis需要批量查询,且需要返回一个List的时候,该怎么写?demo如下:&lt;resultMap id="userIdList" type="java.lang.String"&gt;    &lt;result column="ret" property="ret" /&gt;&lt;/resultMap&gt;&lt;select

2018-10-10 17:24:25 6980 1

原创 java中的一些数据类型转换

整理下经常用到的数据类型的转换,用到最多的一般是数字类型之间的转换,以及数字类型和字符串之间的转换。1. int ,Double,Float,Long to String (1)String s = String.valueOf(i); (2)String s = Integer.toString(i); (3)String s = "" + i;如上三种方法都可以,而且Dou...

2018-10-10 16:58:07 162

原创 VUE 页面跳转

关于VUE中的页面跳转的几种方式1.通过Vue的router做页面跳转,demo如下:this.$router.push({name: "worksheet_detail",params: {worksheetId: this.worksheetId}});如上,就可以在params中带入参数,跳转你的目标页,但这样跳转会覆盖当前的标签页,有时不能满足需求 ...

2018-10-10 16:29:04 687

原创 List如何在遍历时删除元素

背景:业务中经常会涉及遍历list时对集合进行插入或者删除操作一、 错误方式先看看下面几段代码,1是foreach的方式去遍历list并删除元素,2是用迭代器的方式遍历list并删除元素,3是下标遍历1. foreach  public void testDel(){ List&lt;Integer&gt; list = Lists.newArrayL...

2018-09-20 17:44:25 43473 11

原创 Tomcat的安装和配置

1.下载tomcat安装包链接:https://tomcat.apache.org/download-70.cgi 点击如图的标记,下载 2.解压安装包到指定目录1) 直接将安装包拷贝到指令目录,再手动点击解压即可2)通过如下指令进行解压tar -zxvf apache-tomcat-7.0.90.tar.gz -C ~/UserApplications/ ...

2018-08-06 20:17:41 359

原创 JDK的安装配置

1.下载JDK下载链接 : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.安装JDK点击安装,和Windows下安装软件没区别,按提示不停的下一步。最终JDK的安装目录如下:而JDK的根目录: 3.配置JDK的环境变量在终端中输入...

2018-08-06 19:41:09 234

原创 ES6中的数据转换(JSON、Map、String)

需求: 如何将输入的json字符串转换成一个map对象,传入到向后端的request中 ?具体问题描述: 项目需要从vue前端传一个Json对象到request中,而后端的接口参数类型是Map对象。所以需要先json解析转成Map,但ajax的序列化又会给Map对象外面套上一层数组,所以会与后端接口中的参数类型不匹配。具体解决方法如下。 1. 先判断输入的是否是合法的json字符串...

2018-08-06 19:08:25 7996

原创 Git安装和配置

1.安装git软件在终端上,输入git会提示安装git软件,确认安装。安装完成后打开终端,使用git --version或者which git命令查看安装版本,有就是安装成功了。 2.生成公钥cd ~/.ssh/ssh-keygen -t rsa -C '你的邮箱' 3.先拷贝生成的公钥cat ~/.ssh/id_rsa.pub 再 登录到GitHub,点击右...

2018-07-29 20:18:59 449

原创 Maven的安装和配置(MAC机)

1.下载maven压缩包(apache-maven-3.5.4-bin.tar.gz)官方下载地址:http://apache.communilink.net/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz2. 解压安装包到自定义的安装目录3. 打开终端,输入如下命令,设置maven pathvim ~/....

2018-07-25 21:03:21 2422

原创 如何删除.DS_Store文件

MAC下会自动为项目生成.DS_Store文件。而这些冗余的文件是不需要传到Git仓库上的。如果项目中还没有自动生成的 .DS_Store 文件,那么直接将 .DS_Store 添加到 .gitignore 文件就可以了。如下:/.DS_Store如果项目中已经存在 .DS_Store 文件,那就需要先从项目中将其删除,再将它加入到 .gitignore。如下:删除项目中的所...

2018-07-23 20:17:05 9060 1

原创 git常用基本指令

git checkout //查看当前本地的修改,以及当前分支 git checkout -b name //创建为名为name 的分支 git branch -d name //删除本地分支,-D强行删除分支 git branch //显示分支一览表,同时确认当前所在的分支 git status //查看仓库状态,可以看到哪些文件有修改,哪些内容需要add和com...

2018-07-17 21:56:59 228

原创 MQTT服务器性能测试

MQTT代理程序的高并发性能测试方案 代理程序的选择:mosquitto 和 EMQ2.21.代理程序安装1.EMQ2.2 的安装环境和需要的库 Erlang:otp R19,EMQ2.2:emqttd-windows7-v2.2-beta.3.zip,python3.6,MQTT库:paho.mqtt.python-master 安装教程(欧阳有写,给个链接)

2018-06-14 15:22:36 16506 4

原创 linux的bashrc脚本编写

linux的bashrc脚本编写 最近整理以前的笔记时候,翻到这点记录,里面的内容是实习时师父教我的,可以说都是师父的干货,分享一点点。 linux的profile和bashrc文件通常被用来配置用户自己的个性化设置或者开发环境。 login shell代表用户登入, 比如使用 “su -“ 命令, 或者用 ssh 连接到某一个服务器上, 都会使用该用户默认 sh...

2018-06-14 15:00:11 2813

原创 Python实现linux下服务器的监控

Python实现linux下服务器的监控因为课题写的就是服务器架构相关的东西,最后实验需要监控整个服务器持续运行状态下的各项性能指标。最近得空,就把之前用过的简单方法分享出来。如何用Python脚本实现对服务器的自动监控,具体步骤如下(代码可直接使用):1 建立 test.py文件,具体代码如下:------------------------------------------#!/usr/bi...

2018-04-26 19:37:56 9584 3

原创 未完,待续

因为17年9月之后,忙着校招,然后又是毕业论文,就再没更博了。等写完论文再好好分享些整理的东西。之前看到抖音的一句话,为了我的2个粉丝,我也是操碎了心。哈哈哈。快毕业出道啦,C++转Java了。然后呢,一起学习一起进步吧。here we go!...

2018-03-08 12:55:11 186

原创 C++不同类型字符串之间的相互转换

C++中字符串的类型有,char [],char *,以及类的:String ,MFC中的Cstring,QT中的Qstring 以及字符串和整数之间的转换,他们之间的转换方法或者函数如下2. 字符串间的转化1 string to CString CString.format("%s",string.c_str()); 2 CString to stringstring str(CString.GetBuffer(str.GetLength()));3 st

2017-10-11 16:46:49 989 3

原创 Linux下进程间通信的方式

Linux进程间通信的方式IPC是进程间通信的简称,是运行在某操作系统之上的不同进程间各种消息传递的方式。进程间通信的方法主要有以下几种: (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先(父子进程关系)的进程之间进行通信。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建

2017-10-11 15:00:26 360

原创 C/C++中基本数据类型所占内存大小

C中不同数据类型所占的字节大小,在不同的操作系统和编译器下,是不同的,一般主要说gcc下,32位或64位系统的,红色部分是32 和64位系统不同的,做了个表如下:char 1 1 -128~127unsigned char(当byte使用) 1 1 0~255short int /short  2 2 –32,768~32,767unsigned short   2 2 0~65,535int 4 4 -2,147,483,648~2,147,483,647unsigned int 4

2017-09-11 17:49:29 21911

原创 TCP和UDP的详细区别

UDP与TCP的区别:UDP是不面向连接的,TCP是面向连接的,那么为什么? 首先有个信道复用的概念: 1、频分复用 2、时分复用 3、波分复用 4、码分复用 5、空分复用 6、统计复用 7、极化波复用 。不同的信道复用技术,使用不同的复用技术,目的就是创建“虚拟信道”。 一个TCP协议连接其实就是在物理线路上创建的一条“虚拟信道”。这条“虚拟信道”建立后,在TCP协议发出FIN包之前(TCP断开连接时两个终端都会向对方发送一个FIN包),是不会释放的。正

2017-09-09 12:04:48 1260

原创 Linux下freeradius-server和freeradius-client的安装和验证

Linux下freeRadius server和radius client的安装.从 http://freeradius.org 下载freeradius-server-3.0.15.tar.gz 安装包 一般缺少libtalloc 库,需要安装talloc-2.1.7.tar.gz 先从 https://www.samba.org/ftp/talloc/talloc-2.17.tar.gz 下载 talloc-2.1.7.tar.gz 解压安装如下: $

2017-08-21 18:41:29 13108 5

原创 C++中为什么有时基类的析构函数必须写为虚函数

在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。编译器总是根据类型来调用类成员函数。但是一个派生类的指针可以安全地转化为一个基类的指针。这样删除一个基类的指针的时候,C++不管这个指针指向一个 基类对象还是一个派生类的对象,调用的都是基类的析构函数而不是派生类的。如果你依赖于派生类的析构函数的代码来释放资源,而没有重载析构函数,那么会有资源泄漏。所以通常是将析构函数声明为虚函数。一个基类的函数一旦声明为虚函数,那么不管你是否加上virtual修饰符,它在所有派生类中都成为虚

2017-08-10 22:08:14 1706

原创 Docker的常用操作指令

开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序。Docker 的三个名词,仓库,镜像,容器仓库:用来存储docker镜像的,可以理解为物理存储镜像:docker镜像是一个只读的模板。(可以将你的开发环境集成在镜像里)容器:用镜像创建容器,相当于镜像的一个实例,所以容器是在内存中的,虚拟化的环境,当你exit 后,容器就会被释放掉Docker的相关操作指令:1.获取镜像 (从仓库下载)

2017-08-02 19:04:53 383

原创 数组下标的巧用(约瑟夫环等)

最近在牛客网看到华为的笔试题,如下一题,不难,但觉得遇到好多可以巧用数组下标来存储数据的案例,觉得可以列在一起分享一下。题1:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

2017-06-24 16:54:07 1342

原创 图的深度遍历和广度遍历算法

假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。  图的深度优先遍历类似于树的前序遍历。采用的搜索方法的特点是尽可能先对纵深方向

2017-06-20 16:54:54 3040

原创 VS系列+QT5开发遇到的部分问题以及解决方案

 VS2010+QT5开发所踩过的坑        最近因为项目需要,vs中写QT,各种踩坑,就想把最后解决的,各种错误和对应的解决方法分享出来,有些是百度别人的,这里把自己成功解决的问题和方案贴出来。     1.错误: C1083          fatal error C1083: 无法打开预编译头文件:“Debug\xxx.pch”: No such file or directory“...

2017-06-14 11:20:03 4978

moodle完整安装包(已配置)

本人安装配置成功的完整moodle安装包和对应版本可以配置成功的xampp安装包。主要是分享给博客里的那些同学

2018-03-31

点名小程序(MFC可直接使用)

同学生日就临时找个源码调了下,改成了她英语课可以用的点名小程序,使用说明和PPT 添加都写在里面了。在别人的代码上改的,现在用起来很方便

2018-03-25

MFC简单的视频捕捉

简单可用的摄像头视频捕捉。Debug1里的是可以直接运行的exe(包含需要的库),工程的话需要添加DirectShow 就可以编译

2017-06-30

qt-vs-addin

vs 2010中开发QT5需要的addin 插件

2017-06-30

nsi打包程序

可用的nsi,用了自己的实例。按照实例,在nsis_skin\SetupScripts 里改动别人的,加上自己的nsi代码,替换别人的图片和logo.记得将skin.zip 压缩文件包含在里,不然编译会错。然后用nsi工具编译,nsis_skin\Output 输出在这里

2017-06-30

SCORM标准的课件包

三个SCORM标准的课件包,有单个SCO和多个SCO的实例,还有用软件制作的

2016-08-12

SCORM标准课件制作和学习资料

这是本人结合很多资料,自己总结的关于SCORM标准的学习资料,前面为理论部分,中间为SCORM标准课件的制作工具和使用教程,后面为moodle测试平台的安装和使用教程。(因为原创,所以将本人的PPT转化成PDF上传的)

2016-08-09

SCORM标准学习和标准课件制作

笔者自己总结各个官网学习资料,做的总结了重点的PPT,以及一些课件制作工具的使用,以及测试平台moodle的安装和使用等。

2016-08-04

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

TA关注的人

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