自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot2.x JPA多数据源配置

一、配置application.yaml文件的datasource,多数据源spring: datasource: primary: jdbcUrl: jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-...

2019-09-29 09:15:54 1296

原创 一. 什么是Elasticsearch,能干什么?

一 什么是Elasticsearch 在解释什么是Elasticsearch之前,让我们来回顾一下我们每天都在网页上面重复做的一件事情--“搜索”。没错,当我们需要了解一个东西的时候,我们会不自觉的打开搜索网站,例如百度,360,搜狗等;或者当我们需要购买一件物品时,我们打开淘宝,京东,唯品会等购物网站,做的第一件事情,仍然还是搜索我们需要的物品的关键词。 搜索已经渗透了我们生活的方方...

2019-07-04 12:20:42 11767 1

原创 SharedPreferences的封装SharedPreferenceUtils

 对SharedPreferences以及SharedPreferences.Editor进行了简单的封装,尽可能的接近两者“原生”的操作方式。数据的保存封装了:putInt,putFloat,putLong,putBoolean,putString,putStringSet数据的获取封装了:getInt,getFloat,getLong,getBoolean,getString,getS...

2018-12-21 08:49:53 492

原创 MyEclipse2017CI下 Maven整合Spring4+Springmvc+HIbernate5详细过程

第一步:新建Web Project1.勾选Add Maven support,添加Maven的支持2.点击两次Next,勾选Generate web.xml,生成web.xml配置文件。3.点击一次Next,选择Standard Maven JEE,标准的JEEMaven工程。4.点击Finish完成工程的创建,工程的目录如下。 第二步:添加pom.xml文...

2018-10-31 17:09:10 1413

原创 smali的文件语法格式

无论是普通类、抽象类、接口类或者内部类,在反编译出来的代码中,他们都以单独的smali文件来存放。一、smali文件的头3行描述了当前类的一些信息,格式如下:.class <访问权限>[修饰关键字]<类名> .super <父类名> .source <源文件名>类名开头的L是遵循Dalvik字...

2018-09-20 10:05:53 659

原创 简要概括dex的打包流程

 第一步:使用打包资源工具appt打包资源文件,生成R.java。将所有的资源与编译生成的resources.arsc文件以及“加密”过的AndroidManifest.xml文件打包压缩成resources.ap_文件第二步:处理aidl文件,生成相应的Java文件,对于没有使用到aidl的Android工程,这一步可以跳过。第三部:编译工程源代码,生成相应的class文件...

2018-09-20 09:38:41 1128 1

原创 Unix/Linux编程-创建守护进程

创建守护进程#include #include #include #include #include #include #include #include #include // 守护进程通过 syslog 输出的日志信息记录在 /var/log/syslog 日志文件中// 创建守护进程void daemonize(const char *cmd){

2017-10-28 09:04:57 155

翻译 Unix/Linux编程-进程

进程6.1 进程的开始与终止6.1.1 mian函数当内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的其实地址,这时由连接编辑器设置的,而连接编辑器则由C编译器调用。启动历程从内核取得命令行参数和环境变量值,然后为按上述方式调用main函数做好安排。6.1.2 进程终止有8种方式使进程终止,其中1-5为正常终止,

2017-10-24 16:24:23 219

翻译 Unix/Linux编程-时间和日期

时间和日期有Unix内核提供的基本时间服务是计算自协调世界时(UTC)公元1970年1月1日00:00:00这一特定时间以来经过的秒数。以数据类型time_t表示。#include time_t time(time_t *calptr);返回值:成功返回时间值,出错返回-1时间值作为函数值返回。如果参数非空,则时间值也存放在由calp

2017-10-24 16:17:39 251

翻译 Unix/Linux编程-文件和目录(二)

文件和目录(二)4.8 更改文件实际用户ID和实际组ID#include int  chown(const char *pathname, uid_t owner, gid_t group);int  fchown(int fd, uid_t owner, gid_t group);int  fchownat(int fd, const char *

2017-10-17 14:18:39 190

翻译 Unix/Linux编程-文件和目录(一)

文件和目录(一)4.1 4个stat函数#include int  stat(const char *pathname, struct stat *buf);int  fstat(int fd, struct stat *buf);int  lstat(const char *pathname, struct stat *buf);int fstat

2017-10-17 14:05:33 169

翻译 Unix/Linux编程-标准I/O库

标准I/O库2.1 标准输入、标准输出和标准错误进程中预定义了这3个流,可以自动地被进程调用。这些流引用的文件与文件描述符中的STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO所引用的相同。这3个标准I/O流通过预定义文件指针stdin、stdout和stderr加以引用,定义在头文件中。2.2 打开标准I/O流#i

2017-10-16 08:58:32 242

翻译 Unix/Linux编程-系统调用I/O

系统调用I/O1.1 文件描述符对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数,当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。在符合POSIX.1的应用程序中,幻数0,1,2虽然已经被标准化,但应当把它们替换成符号常量STDIN_FILENO,STDOUT_FILENO和STDERR_FILENO以提高可读性。这些常量都在头文件中。

2017-10-13 10:24:45 379

原创 C数据结构-几种常见的排序:冒泡,选择,插入,希尔

几种常见的排序实际开发中,我们最常见到最常使用的排序莫过于:冒泡排序、选择排序、插入排序和希尔排序。希尔排序其实就是一种特殊的插入排序。#ifndef ALGORITHM_H#define ALGORITHM_H#define ARRAR_SIZEOF(a) ( sizeof((a)) / sizeof((a[0])) )/** * 直接选择排序 * @par

2017-10-13 10:03:27 224

原创 C数据结构-二叉搜索树BSTree

二叉搜索树BSTeee#ifndef BSTREE_H#define BSTREE_H#ifndef NULL#define NULL 0#endif/* 元素类型 */typedef int elem_t;/* 节点结构体 */typedef struct tag_bstree_node{ elem_t data; /

2017-10-11 16:16:15 844

原创 C数据结构-优化链表与链队

优化链表与链队笔者上一个版本的链表,在尾部插入或删除的操作时,需要使用for循环挪动到尾部,这样时间复杂度就位O(n)。再用其来实现链队的话,那么链队的入队和出队的时间复杂度也会因此受限。如果在链表中加入一个指针,指向尾部元素。那么这个问题就可以迎刃而解。下面是优化过后的链表,和链队的代码。#ifndef LINKEDLIST_H#define LINKEDLIST_

2017-10-10 11:54:56 399

原创 C数据结构-优化顺序队列

优化顺序队列如果直接复用之前的顺序表,那么在队列的入队和出队操作里,势必会有一个操作的时间复杂度是O(n),因为发生了数组元素的挪移操作。下面是优化后的顺序队列,其中使用了一个头位置和一个尾位置来循环的使用数组空间,以达到入队和出队的时间复杂度都是O(1)。#ifndef OPTSEQQUEUE#define OPTSEQQUEUE#ifndef NULL#define N

2017-10-10 11:45:07 186

原创 C数据结构-链栈

链栈链栈的设计依赖于笔者之前设计的链表,详情请看《C数据结构-线性表之单链表 》。#ifndef LINKEDSTACK_H#define LINKEDSTACK_H#include "LinkedList.h"typedef linked_list linked_stack;/** * 创建链表栈 * @return */linked_stack *l

2017-10-09 16:03:18 254

原创 C数据结构-顺序栈

顺序栈顺序栈的实现依赖于笔者之前实现的顺序表,详情请看《C数据结构-线性表之单链表》。#ifndef SEQSTACK#define SEQSTACK#include "SeqList.h"typedef seq_list seq_stack;/** * 顺序栈初始化 * @param size 顺序栈的大小 * @return */seq_stack

2017-10-09 14:52:36 516

原创 C数据结构-线性表之单链表

线性表之单链表单链表的设计之初,笔者在考虑一个首要的问题,就是单链表的节点是在插入的函数内部创建,还是在函数外部创建。考虑到用户在插入的时候,变量生命周期的不确定性以及容易造成内存泄漏等问题,综合考虑之下使用了内部创建节点的方式。笔者设计的单链表中包含了单链表的反转和合并等有趣的操作,其中的奥妙如果读者有兴趣可以细究。比如为什么笔者使用了二级指针来合并单链表,而不直接使用一级指针,比如为什么在

2017-09-29 17:07:22 621

原创 C数据结构-线性表之顺序表

线性表之顺序表顺序表使用C语言的原生数组作为存储结构,用户指定数组的大小,动态的申请堆空间。动态设计的好处比事先用宏定义规定大小更加灵活,而且支持顺序表的重置大小操作。使得使用顺序表的人拥有更大的灵活性,节省运行内存。下面是顺序表的设计。#ifndef SEQLIST_H#define SEQLIST_H#ifndef NULL#define NULL 0#endif/

2017-09-29 09:24:34 327

原创 不一样的C语言-当sizeof遇上数组名

当sizeof遇上数组名一、 sizeof是何方神圣说到sizeof,首先必须知道的一点:sizeof不是函数,sizeof是操作符。sizeof的作用就是,计算一个对象或类型所占的内存字节数。1.1sizeof的语法sizeof():这也正是为什么sizeof会有那么多人误解其为函数。括号里面可以是一个数据对象,也可以是一个数据类型。对于有括号的这种语法来说,

2017-09-28 00:03:54 1887

原创 四、GNUmake命令行参数

GNUmake命令行参数-B/--always-make所有目标都需要重新编译 -C/--directory=指定读取 makefile 的目录--debug[=]输出 make 的调试信息。它有几种不同的级别可供选择,如果没有参数,那就是输出最简单的调试信息。下面是的取值:a :也就是 all,输出所有的调试信息。(会非常的多)b:也就是

2017-09-27 22:21:57 753

原创 三、Makefile使用变量

Makefile使用变量一、变量的命名规则 变量名字可以包含字符、数字(可以用在开头)、下划线,但不可以是: # = 或空字符。 变量是大小写敏感的。二、变量的引用在使用变量时,我们需要使用$符号告知 Makefile 我们即将使用变量,然后跟着变量名字。通常我们在变量名使用 () 或者{} 包裹。三、变量的定义(赋值)1. 递归展开式变量var = val

2017-09-27 22:08:25 546

原创 二、书写Makefile的规则

书写Makefile的规则在上一篇文章《GNUmake与Makefile的简介》中我们了解了make的运行机制以及简单的Makefile规则的书写。那么这篇文章中,我们详细来介绍Makefile的规则的书写。一、规则的组成一个规则通常包含三部分:目标,依赖和命令。目标是我们执行make生成的目标文件,依赖是生成目标文件所参与的文件,命令则是生成我们目标文件的过程。格式:目标

2017-09-27 21:42:08 313

原创 一、GNUmake与Makefile的简介

GNUmake与Makefile的简介一、GNUmakeLinux(Unix)下,使用(GNU)make解释Makefile规则文件来完成工程的编译、链接等构建工作,快速的构建和管理工程。二、MakefileMakefile是make执行时读取的规则文件,通常我们命名为“Makefile”。Makfile文件是由一条一条的规则组合而成的。第一条规则我们称之为终极目标,当

2017-09-27 21:28:03 5234

原创 Shell脚本编程-分支与循环

Shell脚本编程-分支与循环分支与循环是一个编程语言必须具备的结构,在讲解分支与循环之前,我们先要来学习一下控制分支与循环的判断条件。一、条件判断式条件判断分为三大类:文件判断运算符、字符串比较运算符和算术比较运算符。表达式可以使用test命令,也可以使用[  ]中括号将其括起来,但是中括号两边要有且仅有一个空格隔开。1. 判断文件是否存在:[ -e pathname]-

2017-09-26 09:03:27 2908

原创 Shell脚本编程-变量

Shell脚本编程-变量shell脚本中,变量都是字符串,可分为三大类:自定义变量、系统变量和环境变量。一、自定义变量自定义变量是用户自己定义的或者其他脚本文件中定义的变量。1. 自定义变量的定义:varname="varvalue" 或者 varname=varvalue 或者 varname='varvalue'上面三种定义变量的语法都是合法的,为什么会有这几种

2017-09-25 17:35:55 275

原创 Unix/Linux下静态函数库和动态函数库的制作及使用

静态函数库和动态函数库的制作及使用程序在运行过程中,往往需要调用外部写好的函数库。函数库分为两种:静态函数库和动态函数库。静态函数库:静态函数库通常以.a为后缀。在编译的过程中,将函数库的二进制代码与程序代码编译在一起,成为程序中的一个部分。使用静态函数库的优点是能够提高程序的兼容性和执行效率。但缺点也同样明显,假如多个程序都是使用同一套函数库,那么由于其函数库的代码是程序的一部分

2017-09-24 18:08:39 345

原创 Unix/Linux进程在内存中的布局

Unix/Linux进程在内存中的布局对于Linux操作系统之上的程序而言,其运行的进程所使用的内存地址都是虚拟地址,是MMU经过映射后的地址,我们这里所谈及的内存也是虚拟内存,而不是物理内存。如何得到进程在内存中的布局:我们将编写好的程序经过GCC编译得到一个可执行的文件,然后将其运行起来,通过查看进程的命令得到进程ID:ps -aux在得到进程ID之后,我们通过pmap

2017-09-22 13:59:14 572

原创 GDB调试器与Core dump

GDB调试器与Core dumpGDB是Unix/Linux下的一款基于命令行的程序调试工具,其简单的命令和强大的功能是众多开发者喜欢的理由,搭配Core dump对一个程序进行追踪则更能够大显身手。前提条件:一个程序如果想使用GDB调试,则需要在编译过程中加入调试信息。命令如下:gcc -d filename,c -o filename使用 -g 参数,使得编译的程序带上

2017-09-21 22:41:15 284

原创 不一样的C语言-const修饰的变量

const修饰的变量上一篇文章中,笔者讲了auto,register,static,extern修饰符对变量的作用,那么本文中,我们继续来介绍变量的修饰符--const。const是constant的缩写,意为:常量。当变量前面加上const修饰,此时这个变量是一个只读变量。这里应当注意的是,变量还是变量,只不过变量具有了只读的属性。下文中笔者会通过几个简单的例子来分析const修饰符。

2017-09-21 17:02:58 862

原创 不一样的C语言-auto,register,static,extern

auto,register,static,extern《不一样的C语言》开篇中,笔者写出了对变量的认识,本篇文章中,笔者继续来探究与变量相关的auto,register,static,extern修饰符,进一步加深对变量的理解。auto、register修饰的是变量,static和extern既能修饰变量也能修饰函数,本文中对于函数部分一笔带过,待研究函数时再来详细谈论。auto修

2017-09-21 09:30:50 359

原创 不一样的C语言-变量

变量  笔者是一名正在步入嵌入式Linux的程序猿。在巩固C语言之余,笔者认为有必要将其整理成一系列的文章。遐思片刻,为本系列文章取名《不一样的C》。不一样的C并不是说笔者所整理的C非STDC(标准C),而是笔者抛开C语言书籍,根据自己的认识所写的C语言系列文章。也许入C未深的我,对于一些概念有错误的理解,望网名能够多多包涵和指正。话不多说,下面马上开篇!  有一个公式:数据结构 + 算法

2017-09-20 16:46:08 344

空空如也

空空如也

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

TA关注的人

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