自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang笔记-反射reflect-01

反射概念 “反射”一词,对于它的第一印象就是有一面镜子,通过镜子我们能看到在当前光照范围内,镜子所反射出的本质。但是反射在计算机领域,它则是指某一类应用,通过反射,可以得到自身的描述,通过得到描述,从而可以进行自我控制。也就是说,通过反射,我们可以将我们的一些具体的应用采用某种机制和协商来得到自身的行为的描述,依此来实现对自身行为和状态调整和修改,从而达到自我控制的一种机制。 ...

2019-04-30 16:49:48 327

原创 golang并发原理剖析

概述 Go语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言;也正是Go语言的并发特性,吸引了全球无数的开发者。并发并行 并发 两个或两个以上的任务在一段时间内呗执行,我们不必care这些任务在某一个时间点是否同时执行,可能同时执行,也可能不是,我们只关心在一段时间内,哪怕是很短的时间(1秒或者两秒)是否执行解决了两个或两个以上的任务。...

2019-05-08 12:05:43 860

原创 golang的defer机制详解

defer概述 defer用来声明一个延迟函数,把这个函数放入到一个栈上,当外部的包含方法return之前,返回参数到调用方法之前调用,也可以说是运行到最外层方法体时调用。我们经常用他来做一些资源的释放,比如关闭io操作。 defer是golang的一个特色功能,被称为“延迟调用函数”。当外部函数返回后执行defer。类似于其他语言的 try… catch … finally…...

2019-05-07 12:20:51 4728

原创 golang笔记-反射reflect-02-详解

详解概述 在计算机语言中,编译时就知道变量类型的是静态类型;运行时才知道变量类型的叫做动态类型。比如C++中的多态,其实就是一种运行时类型识别。通过学习Golang,我知道,Go是一种静态类型的编程语言,每个变量都内置一个静态类型,这意味着每个变量的类型在编译时都是确定的。golang,也提供了动态类型,interface。下面我们对golang的静态和动态类型进行简单分析。变量类型...

2019-05-07 11:52:32 403

原创 操作系统硬件介绍-处理器(CPU)

1.概述     最近因为工作方向变动,可能以后要从事Linux底层相关的开发工作,所以给自己定制了一个学习计划,系统的学习下操作系统,这门课程作为一个计算机专业的学生都会涉及,但本科毕竟学校学的知识毕竟有限,况且当时自己也是经常打酱油,虽然考试成绩还可以,但只是一知半解,借此机会也奉劝一句在校的学生们,抓住机会好好学习,就算你以后不从事相关工作,也能锻炼自己的学习能力,毕竟操作系统还是有些难...

2018-07-25 19:37:35 10480 1

原创 Linux多线程编程-线程安全的对象生命期管理(2)

    废话不多说,接着上篇文档继续。3.对象析构        针对对象析构的话,分两种情况。在单线程模式下,对象析构显然不会造成问题,最多需要注意一下对象指针是否为空的情况。但是,在多线程模式下,对象析构则会是我们需要重点关注的地方,因为存在太多的竞态条件。对于一般的成员函数,我们只要做到不并发执行(读写不要同时),保证每个成员函数的临界区不重叠,这样就能做到线程安全。但是,保护成员函数临界区...

2018-05-06 23:17:52 200

原创 Linux多线程编程-线程安全的对象生命期管理(1)

导读:    作为开发人员,我们知道编写一个线程安全的类不是难事,只要针对类内部状态信息进行同步保护即可。但是,当前类创造出的对象的声明周期却不能用当前对象自身的同步措施进行保护(常用的mutex)。那么我们应该如何避免在多线程情况下对象析构时所面临的竞态条件,这是我们作为C++程序员需要认真考虑的基本问题。当然,我们可以用标准库(C++11)或者Boost库提供的shared_ptr和weak_...

2018-05-03 00:03:35 205

原创 Linux下I/O模式简介

   1.基本操作系统概念(Linux)    1.1 Linux操作系统运行机制              Linux操作系统采用虚拟存储器来进行寻址操作,而Linux操作系统的主心骨则是内核,那么什么是内核呢,我们知道一个计算机操作系统由硬件和软件组成,它们相互依赖不可分割。硬件的操作软件就称之为操作系统,在Linux中就称之为内核。它主要包括:存储管理、CPU管理、进程管理、文件管理、设备管...

2018-03-28 23:18:39 3465

原创 1-Redis简介

    随着业务的不断扩充,当前公司的基础平台项目已经不能满足当下大并发、高可用等一系列问题。所以决定重新进行设计和开发,已达到当前众多业务的需求,考虑到高并发下对以往数据库的访问压力过大和性能瓶颈,所以决定加入缓存机制。通过对当前流行的几大Nosql数据库进行对比考虑,决定采用redis这个key-value存储系统。和Memcached类似,但它支持储存的value类型相对更加全面,包括str...

2018-03-27 23:48:40 687

原创 Linux进程-2.进程间通信概述

1.进程间通信概述我们知道,每个进程各自有不同的地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核。在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这中机制称为进程间通信(IPC)。本篇文章只介绍其定义,下面回有专门章节进行详细介绍。2.进程间通信方式(1)管道(pipe)和有

2017-10-08 16:00:10 197

原创 Linux进程-1.进程概述

1.进程的概念我们知道在计算机系统中,程序是由一组可执行的静态指令集组成,而进程(process)则是一个执行中的程序实例。我们平时写的源代码放在磁盘空间,经过预编译、编译、链接...等过程编译成计算机可以运行的可执行程序,当我们运行我们所编译的可执行程序时,那么一个进程也就产生了。对于Linux操作系统而言,其利用分时技术,能同时可以运行多个进程。其分时原理:“把CPU的运行时间划分为一

2017-10-04 14:50:25 486

原创 Linux--GDB调试

众所周知,Linux操作系统以其开源、稳定、高效越来越多的被应用到各种IT领域。所以,gcc编译器得应用场景也越来越多。而在开发过程中,我们程序员不可能不会遇到BUG,所以GDB作为调试工具,其基本使用方法我们必须知道,才能在将来的工作上不断进取。下面我们开始吧!GDB即Gundebugger。我们若想使用gdb进行调试,那么在编译过程中必须添加-g选项,以hello.c为例。gcc  -

2017-05-16 09:14:35 236

原创 Linux网络编程-网络字节序转换

网络字节序:我们应该已经知晓,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件内部的偏移地址也有大端和小端之分。同样,网络数据流同样也有大端小端之分。例如:发送端主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接受端主机把从网络上接受到的数据存储在接受缓冲区中,也是按内存地址从低到高的顺序保存,所以,网络数据的地址应该是:先发出的

2017-03-30 10:52:56 1166

原创 数据结构-栈-数制转换

将十进制整数转换为k进制数,在此过程中,k进制数是从低到高位产生的,但最后得到的k进制数是从高位到低位读出的,与生成过程正好相反。因为可以利用一个栈s,按k进制各位的生成顺序进栈,最后再从栈中逐个读取各位数字。 void exchange(int value,int n) { stack s; while(value>0) { s.push(value%n); value=

2017-03-28 13:39:09 591

原创 memcpy函数和memmove函数

memcpy函数是C语言中的库函数。函数原型:void *memcpy(void *dst,const void *src,size_t count);用于把src所指向的内存区域拷贝到dst所指向的内存区域,count控制拷贝多少个。因为拷贝的时候是按字节序拷贝的,所以实际操作的时候要把void *转换成char *,保证准确拷贝void *memmove(void *dst

2017-03-28 10:44:35 429

原创 C++STL之String详解

首先说一下string和char*的区别:1.string是一个类,char*是一个指向字符串的指针2.string封装了char*,是一个管理char*的一个容器3.string不用考虑内存释放和越界,string管理char*所分配的内存,每一次string的复制,取值都由string类负责维护,   不用担心复制越界和取值越界等。string的默认构造函数:strin

2017-03-16 16:20:01 360

原创 Linux oracle-10g安装

1  Red  hat安装过程需要5个安装包,但是只用了四个。2.安装完成后输入在终端输入ifconfig命令,提示bash ifconfig:command not found在输入我们输入命令:#ifconfig回车显示bash: ifconfig: command not found可能是红帽路径问题,然后输入#/sbin/ifconfig  就会显示IP地址等信息。

2017-02-23 17:30:52 412

原创 oracle-约束的使用

===约束是什么?===约束是在数据库中保证数据库里表中数据完整性的手段。在Oracle 11g中使用的约束有主键约束、外键约束、唯一约束、检查约束、非空约束。其中主键约束和唯一约束都被认为是参照约束。---1主键约束---主键约束是在每个数据表中只能有一个,但是一个主键约束可以由多个列组成,通常把由多个列组成的主键又叫做复合主键或组合主键。主键约束可以保证主键列的数据没有重复

2017-02-22 16:50:36 252

原创 oracle-约束的使用

===约束是什么?===约束是在数据库中保证数据库里表中数据完整性的手段。在Oracle 11g中使用的约束有主键约束、外键约束、唯一约束、检查约束、非空约束。其中主键约束和唯一约束都被认为是参照约束。---1主键约束---主键约束是在每个数据表中只能有一个,但是一个主键约束可以由多个列组成,通常把由多个列组成的主键又叫做复合主键或组合主键。主键约束可以保证主键列的数据没有重复

2017-02-22 15:40:01 321

原创 Oracle-表结构操作

首先解释一下DDL语言:DDL是数据库中的一种数据定义语言,是定义数据库中数据是如何存储的。DDL主要包括对数据库中对象的创建、修改、删除的操作。一、===Create创建表结构===1----语法----Create    TABLE     表名字(column_name datatype   [null |not null],column_name datatyp

2017-02-22 09:25:50 452

原创 Linux下用镜像安装g++

1 打开VMWare界面,选择菜单VM--Settings,在对话框中选择CDROM,设置参数为Use ISO image,选择CentOS镜像安装文件;2 启动虚拟机中的CentOS系统,用root登录,在桌面上用鼠标右键新建一终端窗口;3 在终端中输入 cd /media/CentOS_5.5_Final/CentOS 回车gcc:4.接下来安装步骤如下: 

2016-11-25 22:45:06 1420

原创 oracle-linux安装步骤

Oracle在安装和使用中需要特定用户,不能用root用户来安装和运行Oracle推荐使用Oracle用户 添加redhat系统安装包用root用户登录后安装相关的linux系统安装包rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rmprmp -ivh elfutils-libelf-devel-0.152-l.el6.i686.

2016-11-19 01:24:40 330

原创 Oracle基本操作

启动和停止Oracle停止和启动oracle需要切换到oracle用户才可以,其他用户都没有这个权限运行sqlplus但不登陆到oracle:sqlplus /nolog 以系统管理员的权限连接到oracle服务器:conn /as sysdba;启动Oracle:startupOracle的listenerOracle的list

2016-11-09 22:58:48 335

原创 C++深拷贝与浅拷贝

在C++面向对象程序设计中,通过构造函数对对象进程初始化,它可以为对象在计算机内存中开辟内存空间,也可以为对象的数据成员提供初始值。构造函数时一个与类同名,没有返回值的特殊成员函数,每当创建一个对象时(包括使用new动态创建对象),编译系统就会自动调用构造函数。构造函数像类以外的一般函数和类成员函数一样,可以重载和带缺省参数,构造函数的重载为对象的生成提供了各种灵活的手段。

2016-07-08 18:25:42 377

原创 C++继承与派生

《继承》一丶定义:   在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类进程派生的称为多继承。    类的继承,就是新的类从已有类那里得到已有的属性,从已有类产生新类的过程就是类的派生。    原有的类称为基类或者父类,产生的类称为派生类或者子类。二丶继承的方式:

2016-07-08 18:22:30 302

空空如也

空空如也

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

TA关注的人

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