自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

r91987的专栏

用勇气改变可以改变的事情,用胸怀接受不能改变的事情,用智慧分辨两者的不同!

  • 博客(150)
  • 资源 (4)
  • 收藏
  • 关注

原创 Java 8 stream 实战

概述平时工作用python的机会比较多,习惯了python函数式编程的简洁和优雅。切换到java后,对于数据处理的『冗长代码』还是有点不习惯的。有幸的是,Java8版本后,引入了Lambda表达式和流的新特性,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读。幸福感爆棚,有没有!本文主要列举一些stream的使用例子,并附上相应代码。实例先...

2019-12-29 12:50:18 271

原创 I/O网络模型

概述本文从I/O网络模型出发,介绍目前主流的几种网络模型,然后对同步阻塞I/O、同步非阻塞I/O、I/O多路复用的机制和流程做了详细的阐述,最后通过一个生活中的例子加深对这3中网络模型机制的理解。I/O操作网络IO的本质是socket的读取,socket在linux中被抽象为流,IO操作可以理解为对流的操作。为了操作系统的安全性等考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内...

2019-12-22 15:29:09 314

原创 【spring boot 系列】spring data jpa 全面解析(实践 + 源码分析)

前言本文将从示例、原理、应用3个方面介绍spring data jpa。以下分析基于spring boot 2.0 + spring 5.0.4版本源码概述JPA是什么?JPA (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。他的出现主要是为了简化现有的持久...

2019-12-22 01:07:12 524

原创 Spring Boot 多数据源 Redis 配置

概述本文基于spring boot 2.0.7,讲解如何配置多数据源redis,采用lettuce做为redis客户端,并附上示例代码。redis配置配置文件skyarthur: redis1: host: 127.0.0.1 port: 6378 lettuce: pool: min-idle: 5 max-idle...

2019-12-22 00:58:25 1583

原创 【深入浅出spring】Spring MVC 流程解析

前言其实一年前就想系统地记录下自己阅读spring源码的收获,搞一个深入浅出spring的系列文章,但是因为工作原因,迟迟没有下笔。今天终于可以开始自己一年前的计划了,言归正传,首先开始spring mvc相关的内容。文本主要从流程角度介绍spring mvc的整个工作原理,对spring mvc有一个整体的了解,具体实现细节不在本文的介绍范畴中。概述Spring MVC 是目...

2018-04-09 23:09:56 623

原创 flask快速入门

概述:Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 (类似于php中的smarty,旨在让程序实现界面与数据分离)。Flask使用 BSD 授权。WSGI(Python Web Server Gateway Interface),是Python应用程序或框架和Web服务器之间的一种接口

2015-02-08 21:20:45 6961 1

原创 flask环境搭建

概述:Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 (类似于php中的smarty,旨在让程序实现界面与数据分离)。Flask使用 BSD 授权。WSGI(Python Web Server Gateway Interface),是Python应用程序或框架和Web服务器之间的一种接口,已经被

2015-01-07 21:23:44 7141

原创 Hibernate的延迟加载

hibernate中,延迟加载大致可以分为两类,一类是延迟属性加载,另一类是延迟关联实体加载。普通属性:分两种情况,一种是集合属性,一种是非集合属性(如String、Integer......)集合属性的延迟加载通过PersistentSet、 PersistentList、PersistentBag、PersistentMap、PersistentSortedMap、Persistent

2015-01-02 20:13:51 5996 1

转载 为mysql ibdata1瘦身

mysql ibdata1文件存放数据,索引等。如果不把数据库中数据分开存放的话,这个文件的大小很容易就上了G,甚至几十G。对于某些应用、磁盘较小的server来说,并不是太合适。因此要把此文件缩小。方法:每张表的数据文件单独存放。步骤:1. 备份数据库从命令行进入MySQL Server 5.5/bin备份全部数据库,执行命令mysqldump -q -uusername

2014-12-21 13:16:32 1795

原创 Hibernate flush理解

问题:在没有事务的情况下,通过hibernate的session.save(entity),无法将数据持久化至数据库中,即使强制刷新后(flush())后也同样如此。原因:对于增删改操作,必须commit后才能持久化至数据库。若不commit,只有在同一个连接中才能看到最新的更改,对其他连接不可见。Hibernate的flush:执行时会清除session缓存并向数据库发送SQL语句并

2014-12-20 17:40:22 2357

转载 synchronized使用说明

在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。采用synchronized修饰符实现的同步机制叫做互斥锁机制,它所获得的锁叫做互斥锁。每个对象都有一个monitor(锁标记),当线程拥有这个锁标记时才能访

2014-12-20 17:19:04 1773

转载 fix the Ubuntu GPG Error BADSIG

If you are seeing Ubuntu GPG Error BADSIG use the one of the following methods to fixError MessageW: GPG error: http://archive.canonical.com intrepid Release: The following signatures were invalid

2012-12-04 21:17:56 2809

转载 apache配置

Ubuntu Linux下apache基于域名的虚拟主机配置的详细步骤: 最近在学习linux,今天在linux下配置了下虚拟主机,下面是步骤: 要配置的网站http://www.myhack58.com 虚拟主机文件 myweb 1、首先在 /etc/apache2/sites-available 目录下新建一个空的虚拟主机文件myweb cd /etc/apache

2012-11-12 14:16:55 1883

转载 从源码打包DEB的简单方法

DEB是ubuntu的二进制安装包,但有时候我们从网站上只能得到源码包,这就需要自己编译安装了,但我们也可以把源码打包成DEB,其实这是一件非常简单的事情。首先安装checkinstall,源中有sudo apt-get install checkinstall然后进入要打包的源代码目录./configuremakecheckinstall -D make install

2012-11-06 11:19:28 4220 3

转载 Ubuntu下安装latex (支持中文CJK环境)

转载于点击打开链接This guide explains how to install LaTeX in Ubuntu Linux. LaTeX is a document preparation system for high-quality typesetting. It is most often used for medium-to-large technical or sci

2012-11-02 15:46:59 8006

转载 C++ 对象的内存布局 (转载至陈皓 http://blog.csdn.net/haoel)

前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图一些表达上方便和简单。不想,这篇文章成为了打开C++对象模型内存布局的一个引子,引发

2012-08-22 18:25:04 8378

转载 C++ 虚函数表解析(转载至陈皓 http://blog.csdn.net/haoel)

前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。  关于虚函数的使

2012-08-22 18:23:57 8449

转载 Ubuntu12.04 改造指南

升级12.04已经有一段时间了。作为一个从08年就开始用Ubuntu的老用户,我觉得作为一个LTS版本,12.04无疑是不太符合我的期望的。说这话不代表我不建议升级12.04,只是我觉得12.04不像以前各版本直接装好就能用得很顺手。所以,我开始改造我的Ubuntu。经过一段时间的调整与使用,我对现在的系统基本表示满意,于是打算写一片文章来介绍一下我的改造。一、逃离Unity,拥抱Gnom

2012-06-26 11:20:31 2345

转载 C++对象内存布局

所有的分析均针对|gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux X86_64)|这一版本。最简单的类先从一个简单的类开始吧。如下,此简单类,非常简单,两个int成员,通过printf很容易了解到它的内存布局,本质就是一个C结构体,两个成员依次排列。对象:|成员1 | 成员2 |

2012-06-21 12:22:21 2000

转载 gst-launch & gst-inspect 介绍

用gstreamer架构做对媒体开发时,gst-inspect 和gst-launch是两个非常使用的小工具,前者是用于查询库中已经包含的所有element以及他们的详细信息,后者用于快速构建一条pipeline,这个命令最爽,因为只要一句话,你就可以感受到播放的快感。废话不多说,直接看示例:1 gst-inspect用法:首先进入命令行下,然后键入:gst-inspect

2012-06-13 22:40:37 9941

转载 Linux Source命令及脚本的执行方式解析

当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录;这时就想到用source命令,如:source /etc/profile对source进行了学习,并且用它与sh 执行脚本进行了对比,现在总结一下。source命令:source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。功能:使Shell读入指定的Shell程序文件并依次

2012-06-13 22:23:20 1845

转载 理解:虚拟内存,虚拟内存地址,物理内存,物理内存地址

在解释第一个问题之前,先说明一下计算机内存管理的中的四个名词:虚拟内存,虚拟内存地址,物理内存,物理内存地址。先说说为什么会有虚拟内存和物理内存的区别。正在运行的一个进程,他所需的内存是有可能大于内存条容量之和的,比如你的内存条是256M,你的程序却要创建一个2G的数据区,那么不是所有数据都能一起加载到内存(物理内存)中,势必有一部分数据要放到其他介质中(比如硬盘),待进程需要访问那部分数

2012-06-02 14:51:10 2385

转载 nandflash启动理解

有很多同学在移植u-boot时,都会对s3c2440从Nandflash启动的过程非常迷惑。这里发这个帖子给大家介绍一下它的启动流程。   大部分ARM9的CPU内部都集成有一个SRAM,SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们在外部扩展的大容量的SDRAM是不一样的,外部大

2012-06-02 14:41:20 6448 1

转载 SD卡mmc.bin的理解

对于普通的SD卡,我有个2g的sd卡,拿它作为例子:(1)使用本站提供的windows工具完全格式化一次你的sd卡(2)进到ubuntu的环境下查看SD卡扇区数量:zswan@zswan-laptop-ubuntu:~/tmp$ sudo fdisk /dev/sdb1WARNING: DOS-compatible mode is deprecated. I

2012-06-02 14:40:30 6130 2

转载 解释Linux init.d

本文包括3部分内容  1、 Linux的引导过程  2、 运行级别  3、 /etc/rc.d/ 与/etc/rc.d/init.d的关系  都仅限于自身的理解,如有差错和不足的地方请指正和补充!一起学习,一起进步。  “/etc/rc.d/init.d/目录下的脚本就类似与windows中的注册表,在系统启动的时候某些指定脚本将被执行”。开始之前,先引用李善明经理昨天晚上

2012-06-02 10:05:40 14309

转载 WinEdt 6.0 的注册提示框

解决方法:在options菜单下点options...,在advanced configuration...下Event Handlers...下点Exit,如下图所示: 在End;前添加一行代码:        RegDeleteValue('HKEY_CURRENT_USER', 'Software\WinEdt 6', 'Inst'); 保存后

2012-05-26 15:09:10 1431

转载 C++ 私有、保护、公有继承

一、公有(Pulic)继承“继承”是类的重要特性。A类继承B类,我们称B类为“基类”,也称为“父类”,A类则相应地被称为“派生类”或“子类”。A类继承了B类之后,A类就具有了B类的部分成员。那么,究竟从基类那儿得到了哪些成员,这由2方面决定,①继承方式,②基类成员的访问权限(即public/private/protected)。继承有三种方式,即公有(Public)继承、私有(Pr

2012-05-12 23:13:26 951

转载 DBUS-GLIB Binding,GLIB事件与DBUS事件是如何关联的

DBus有两种API接口,一种是直接使用DBUS的 low-level API,一种是使用Binding,Bindings有不同的类型,有PERL Binding、PYTHON Binding、GLIB Binding等。这里主要关注使用GLIB binding。和low-level API不同的是,GLIB binding则能够完成GLIB OBJECT的本地事件(native signal)与

2012-04-22 17:04:16 1989

转载 使用dbus-glib (发送signal例子)

dbus-glib是dbus底层接口的一个封装。本讲我们用dbus-glib做一个dus接口,并写一个客户程序。1、接口1.1、编写接口描述文件首先编写接口描述文件。我们要实现的连接的公共名是"org.freesmartphone.ogsmd",接口描述文件如下:$ cat smss.xml

2012-04-22 16:50:38 4133

原创 打造属于自己的uboot

对bootloader我一直是很敢兴趣的,之前上嵌入式课的时候由于抽不出时间一直没有好好研究当时使用的vivi。幸好最近忙里偷闲,以ok6410开发板为平台,对于uboot进行了一番不算很深入的研究。我对bootloader基本上没啥了解,所以本质上是从0开始学起。一开始不知道从哪里入手,幸好有一些开发板的资料,当然包括移植好的uboot,可惜版本有点老,是1.1.6的,不过不失为很好

2012-02-12 12:22:50 2876 3

转载 S3C6410启动模式介绍

目前的ARM处理器都支持多种启动模式,S3C6410和以前的Samsung的ARM处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410的User Manual并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下面就我个人的理解,介绍一下S3C6410的启动。 先读一下S3C6410 User Manual的第3章 Syste

2012-01-27 17:09:19 1091

转载 ARM汇编指令集

一、跳转指令。跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC写入跳转地址值。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。ARM指令集中的跳转指令可以

2012-01-25 14:43:44 774

转载 Ubuntu 挂载ISO文件

ISO镜像是一张cd或者DVD的镜像文件,它能被储存在你的电脑里,并且能用来写入一张新的光盘里。在UBUNTU下挂载并使用它是很简单的。  使用指南  在linux下默认的ISO挂载点位于"/media"目录,下面是挂载一个ISO文件的方法:  sudo mkdir /media/cdimage #建立一个文件夹作为ISO挂载点  sudo mount -o loo

2012-01-23 15:43:19 1350

转载 Python中class的内置函数__str__

在python中,如果我们定义一个class:class Friend():def __init__(self, name):self.name = nameif __name__ == '__main__':friend = Friend('Liang')print friend那么在申明一个实例对象friend并打印其信息时,python返回的是它的存储地址

2012-01-23 14:54:16 17173

转载 C语言编译全过程剖析

C语言编译全过程    编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。    编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.ex

2012-01-23 14:53:18 693

转载 python 正则表达式

参考文献 点击打开链接

2011-12-15 13:12:22 543

转载 绝对路径的文件名去掉目录或者去掉后缀名的简单做法

如果我们拿到一个绝对路径的文件名,如/home/somebody/demo/long.name.txt,我只想取得long这个文件名shell中的模式匹配运算符非常的好用。file_name=/home/somebody/demo/long.name.txt第一步去掉路径名file_name=${file_name##/*/}结果是long.name.txt

2011-12-10 19:20:45 6310

转载 linux 下软件管理大全

apt-get update ——在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。 apt-get install packagename ——安装一个新软件包(参见下文的aptitude) apt-get remove packagename ——卸载一个已安装的软件包(保

2011-11-01 11:20:43 772

转载 ubuntu下http代理设置

方法一    这是一种临时的手段,如果您仅仅是暂时需要通过http代理使用apt-get,您可以使用这种方式。    在使用apt-get之前,在终端中输入以下命令(根据您的实际情况替换yourproxyaddress和proxyport)。    export http_proxy=http://yourproxyaddress:proxyport 方法二这种

2011-10-28 08:43:27 18284

原创 ubuntu下ssh安装与连接

什么是SSHSSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额 外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。SSH客户端与服务器端通讯时,用

2011-10-27 21:02:22 1467

Independent Component Analysis

独立元分析,书很基础很经典,包括的知识有数字信号处理,线性代数,神经网络

2010-05-06

vivi20030929.tar.bz2

bootloader--vivi,本人在实践中已证明此版本可以使用,不会出现蜂鸣器叫的现象

2009-11-28

LCD12864硬件连接图

提供了LCD12864的连接方法,非常有用

2009-06-29

C8051F340 中文资料

详细的介绍了C8051F340单片机的各个构造及性能,解释清楚详尽。

2009-06-29

空空如也

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

TA关注的人

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