自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的的博客

Just hava a little faith.

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

原创 Kafka的消息模型

Kafka的消息模型kafka采用的是标准的发布-订阅模型,主要用在异步、解耦的场景、流量控制(削峰填谷)的场景。生产者和消费者一个典型的发布订阅系统长这个样子,如图1所示。图1 发布-订阅模型在发布 - 订阅模型中,消息的发送方称为发布者(Publisher),消息的接收方称为订阅者(Subscriber),服务端存放消息的容器称为主题(Topic)。发布者将消息发送到主题中,订阅者在接收消息之前需要先“订阅主题”。“订阅”在这里既是一个动作,同时还可以认为是主题在消费时的一个逻辑副本,每份订阅

2021-01-14 22:39:54 1770 2

原创 spring声明式事务@Transactional的那些坑

spring声明式事务@Transactional的那些坑事务有四大特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),把这四大特性的英文首字母拼起来,就是ACID,这个单词对应的中文意思是“酸”,什么东西比较酸呢,柠檬(????),把它们联系起来,就容易记着这几个特性了。在MySQL数据库中,默认的存储引擎Innodb是支持事务的,另一个比较常用的存储引擎MyISAM是不支持事务的。插曲说一下,一直对MyISAM怎

2021-01-07 18:05:43 1000

原创 Java内存模型遇上volatile

内存模型的定义计算机内物理存储结构发展到今日,已经比较复杂了,如图1所示是计算机存储结构的一个简化图,有处理器、多级高速缓存、内存,再往下还有硬盘等,每级之间读写速度和存储容量都是数量级上的差距,速度越高,受限于成本的原因,容量也就越小。由于处理器和内存之间的处理速度差距过大,如果处理器计算的中间结果直接存储于内存上时,会严重拖慢运行速度。加入高速缓存,处理器可以把计算的中间结果放到高速缓...

2020-03-19 13:19:51 184

原创 Kafka的原理和应用分析及和RabbitMQ的对比

1. kafka是什么Kafka 是一个分布式消息流处理平台,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家公司作为多种类型的数据管道和消息系统使用1 2。作为一个消息处理平台,kafka主要有以下功能2:发布和订阅数据流,类似于消息队列或企业级的消息分发系统以容错、持久化的方...

2019-01-04 19:29:52 697

原创 乘积为正数的最长子数组长度

1567 乘积为正数的最长子数组长度给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。请你返回乘积为正数的最长子数组长度。示例 1:输入:nums = [1,-2,-3,4]输出:4解释:数组本身乘积就是正数,值为 24 。示例 2:输入:nums = [0,1,-2,-3,-4]输出:3解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6 。注意,我们不能把 0 也包括到子数组中,因为这.

2021-01-25 20:52:09 537 1

原创 实现Trie树

文章目录应用场景Trie树的结构实现Trie树和哈希表的对比Trie树(发音同“try”),又称为前缀树、字典树,从名字来看,它首先是一种树形的结构,“前缀”、“字典”等字样表明其存储的是数据的前缀,像字典一样,可以实现快速的查找。实际上,Trie树是一种专门处理字符串匹配的数据结构,用来在一批字符串中,快速查找某个指定的字符串或字符串前缀。应用场景搜索建议IP路由,最长前缀匹配输入法-预测Trie树的结构先来看一个例子,比如说我们有一组字符串,分别是 ha、head、h

2021-01-16 14:29:17 198

原创 java常用的时间类转换方法

java8引入了LocalDateTime类,使关于时间的处理更为方便了。在日常的开发中,与其他后端服务(java、php、python等)、前端服务(js)进行交互的时候,由于时间格式的不统一,使用的时间格式也各种各样,有使用时间戳的(单位为ms或s),有使用字符串的,也有使用Date类的,为了和这些系统进行交互,需要对日期进行一些转换,本文列举一些常见的各种时间格式之间的转换方法。在使用的时候可以把这些静态方法放在日期处理的util里,供系统的各个module使用。LocalDateTime转换

2021-01-06 23:19:01 415

原创 链表反转全家桶(二):动画详解两两交换链表中的节点

上回说到面试中的一个高频题目:单链表反转,提到它的“难兄难弟”不是那么简单。今天就来分析一下它的二哥:“两两交换链表中的节点”。题目描述如下。给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.方法一:三指针迭代有了上回单链表反转的双指针迭代法的基础,再来解决它二哥,就相对容易很多了。“巧妇难为无米之炊”。题目中说的

2020-10-01 10:40:37 460

原创 链表反转全家桶(一):动画详解单链表反转

单链表的翻转是一个easy级别的题目,这个题目在力扣上的提交次数达到47万次,而且在面试中也频频出现,可谓是大受欢迎,它的兄弟们也跟着风光了。这道题本身是比较简单的,而它的“难兄难弟”就不是那么简单了。递归是个神奇的...

2020-09-26 22:23:06 786

原创 周赛这道题没做出来,但也很开心

昨天第35周双周赛赛有一道题目,没做出来,事后,通过这个题目在力扣上挖出来另外两道题目,而另外两道题目用到的知识点,综合起来,来解决周赛的题目,就能迎刃而解了,所以,虽然周赛的题目没做出来,但学到两个知识点,同样很开心。周赛题目是这样的。使数组和能被 P 整除给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。子数组 定义为原数组中连续的一

2020-09-22 07:47:06 168

原创 快排算法及其迁移应用

文章目录快排的实现快排的迁移应用上回讲到二分查找算法和它的迁移应用,和查找算法一样,排序算法也是基本且超级常用的算法。而排序算法的思想又能拿来解决很多其他问题,比如归并排序、堆排序和快速排序。话休絮烦,今天主要来说说快速排序的思路怎么应用。“快排,快排”,念起来好似布谷鸟的叫声,“谷谷,谷谷”,声声的叫着夏天。可快排算法一点也不干脆利落,不似降龙十八掌般的摧古拉朽,倒像乾坤大挪移的移形换位,转来转去。快排算法是Tony Hoare大佬在1959年提出的,目前仍然广泛应用,快速排序有时候也叫分割-交换(

2020-09-12 23:52:38 239

原创 二分查找思想的迁移应用

这里写自定义目录标题求根号x二叉搜索树中第K小的元素二分查找算法可以说是很基本的一个算法思想,如果写成题目一般是这样的形式:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。力扣704别看这样一道小题,我在面试的那么多次中还碰到过三次,这样的题目当然是信手拈来,直接默写下来的,最多两分钟搞定。还记得高三物理老师给我说过的一句话:“自信过头了,就会阴沟里翻船。”那时候我对物理的

2020-08-30 09:00:03 818

原创 算法OA 9题

626. Rectangle Overlap给定两个矩形,判断这两个矩形是否有重叠。Example样例 1:输入 : l1 = [0, 8], r1 = [8, 0], l2 = [6, 6], r2 = [10, 0]输出 : true样例 2:输入 : [0, 8], r1 = [8, 0], l2 = [9, 6], r2 = [10, 0]输出 : falseNotice...

2019-04-03 23:02:22 430

翻译 定制Java 8的Parallel Streams使用的线程池

原文链接:https://www.baeldung.com/java-8-parallel-streams-custom-threadpool1. 概述Java 8引入了流的概念去对数据进行复杂的操作,而且使用并行流(Parallel Steams)支持并发,大大加快了运行效率。在这篇小短文中,我们会看一下Stream API的一个最大的限制,并且我们会展示如何让parallel strea...

2018-12-25 18:45:38 14187 2

原创 Java并发编程之Executor框架

# 1. 概述java中实现多线程最直接、最基础的做法是实现Runnable接口、继承Thread类和实现Callable接口。对于每一个任务创建一个线程的方式,如果任务数量过多,过度消耗资源,会引起内存溢出的问题(Out of Memory)。实际上,java线程池的引入也来源于生活中的实际例子。我们去火车站买票,如果每来一人购票,车站就开一窗口,那么很快车站的资源就耗尽了,没有场地,没有资金,去一直开下去。假设车站在平时开设5个窗口,我们称其为核心(core)窗口,那么国庆假期或春运期间,购票人数

2018-12-21 19:53:00 266

原创 快速入门UML时序图

使用UML时序图重构代码使用UML时序图时序图是什么时序图的元素组合块(Combined Fragment)举例使用UML时序图最近,在重构项目中的老代码的时候,业务复杂,文档缺失。抽丝剥茧,沉迷在剪不断理还乱的纷繁的关系中,像是苏东坡诗中的那只高贵的乌鸦先生找不到落脚之处。披沙拣金,终于理出一点头绪,生怕忘了,赶紧记下来,又苦于没有好的方式去表达这些错杂的关系,蓦然发现,UML时序图是表达业...

2018-09-21 16:35:18 9334 8

原创 Ubuntu-14.04下安装TinyOS-2.1.2

Ubuntu-14.04下安装TinyOS-2.1.2参考:http://tinyos.stanford.edu/tinyos-wiki/index.php/Installing_TinyOS_2.1.11. 更新源在 /etc/apt/sources.list 里添加下面一行

2015-07-03 13:28:54 3781

原创 MySQL入门(一)

本学习笔记参考《MySQL必知必会》和官方手册MySQL 5.6 Reference ManualMySQL入门(二) MySQL入门(三)本文内容: - MySQL初体验 - MySQL创建和操作表 - 插入更新删除数据一、MySQL初体验我的 mysql 版本是5.6.24,利用 apt-get 安装在 Ubuntu-12.04LTS上。$ sudo service mysql stop

2015-06-18 11:54:39 2596 3

原创 MySQL入门(三)

本学习笔记参考《MySQL必知必会》和官方手册MySQL 5.6 Reference ManualMySQL入门(一) MySQL入门(二)本文内容: - MySQL存储过程 - MySQL游标 - MySQL触发器六、MySQL存储过程6.1 什么是存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。6.2 使用存储过程(1) 创建存储过程mysql> DELIMIT

2015-06-18 11:30:13 1467

原创 MySQL入门(二)

本学习笔记参考《MySQL必知必会》和官方手册MySQL 5.6 Reference ManualMySQL入门(一)本文内容: - MySQL联结表 - MySQL视图四、MySQL联结表    假设要存储货物的信息,建立一个 products 表,每种货物的信息占一行,包括产品名字,产地以及供应商的信息(供应商名字,电话等)。同一个供应商可能有多种产品,那么这时属于同一供应商的不同产品可能要

2015-06-18 11:10:25 1292

原创 DES加密算法的实现

本文内容:对称加密数据加密标准一、对称加密对称加密也称为常规加密、私钥或单钥加密。 一个对称加密由5部分组成: - 明文(plaintext):这是原始信息或数据,作为算法的输入。 - 加密算法(encryption algorithm):加密算法对明文进行各种替换和转换。 - 密钥(secret key):密钥也是算法的输入。算法进行的具体替换和转换取决于密钥。 - 密文(ciph

2015-06-14 19:15:30 12846 1

原创 Qt下QTableWidget的使用

本文主要内容:QTableWidget的基本设置设置QTableWidget的某些字段不可编辑和背景颜色QTableWidget单元格的插入QTableWidget按字段值排序在QTableWidget单元格中插入checkBoxDemo代码1、QTableWidget的基本设置ui->tableWidget->setColumnCount(11);ui->tableWidget->

2015-06-09 11:07:47 19378 3

原创 android移植pppoe实现拨号上网全过程

硬件环境:Tiny6410开发板软件环境:fedora14 + Android 2.3.4 + linux-2.6.36所需资源:rp-pppoe-3.11.tar.gz http://www.roaringpenguin.com/products/pppoe1、编译内核支持ppp  android自带pppd,所以只需要移植pppoe就行了

2014-06-03 17:07:56 4955

原创 又一个决定。。。

进外企的想法要推迟一下了,包括对进外企做的准备,学习口语和java

2014-04-29 17:11:13 695

原创 Ubuntu密码忘记了解决办法

今天同事的虚拟机的密码忘记了,最后通过进入recovery mode解决了,下面是解决方法:1、普通用户和root用户密码全忘记了重启ubuntu并按着shift键,如下图进入recovery mode然后如下图选择root这样就能进入root用户或者会提示你为root输入新密码在root下,就可以使用passwd  [用户名]设置普通用

2014-04-25 17:40:54 1135

原创 【linux驱动分析】ioctl函数的使用

一、用户空间的ioctl    int  ioctl(int fd, unsigned long cmd, void *data);第一个参数是文件描述符,第二个参数代表传递的命令,它会原样传递给驱动,第三个参数是可选类型的,主要根据第二个参数选择,第三个参数无论是整数还是指针,都会以unsigned long的形式传递给驱动程序。二、内核空间的ioctl

2014-04-23 13:17:43 4632

原创 【linux驱动分析】misc设备驱动

misc设备驱动,又称混杂设备驱动。misc设备驱动共享一个设备驱动号MISC_MAJOR,它在include\linux\major.h中定义:        #define MISC_MAJOR 10miscdevice的结构体如下,它在include\linux\miscdevice.h中定义:struct  miscdevice { int  minor;

2014-04-22 13:49:04 1217

原创 【linux设备模型】之platform设备驱动

一、platform总线、设备和驱动    platform是一种虚拟总线,相应的设备称为platform_device,相应的驱动称为platform_driver。platform_device定义在中: 1 struct platform_device { 2 const char * name; 3 int id; 4

2014-04-22 13:46:33 1535

原创 【linux驱动分析】之dm9000驱动分析(七):dm9000的卸载挂起和恢复以及打开和停止

分析dm9000的卸载,挂起和恢复,以及dm9000的打开和停止。涉及到的函数为: 1 static int __devexit 2 dm9000_drv_remove(struct platform_device *pdev) 3 static int 4 dm9000_drv_suspend(struct device *dev) 5 static int 6 dm9

2014-04-22 13:36:28 1221 2

原创 【linux驱动分析】之dm9000驱动分析(六):dm9000_init和dm9000_probe的实现

一、dm9000_init打印出驱动的版本号,注册dm9000_driver驱动,将驱动添加到总线上,执行match,如果匹配,将会执行probe函数。1 static int __init2 dm9000_init(void)3 {4 printk(KERN_INFO "%s Ethernet Driver, V%s\n", CARDNAME, DRV_VERSION);

2014-04-22 13:35:16 1793

原创 【linux驱动分析】之dm9000驱动分析(五):另外几个重要的结构体

除了sk_buff和net_device,dm9000驱动中用到的另外几个重要的结构体一、platform_driver定义在include/linux/platform_device.h中,代码如下:1 struct platform_driver {2 int (*probe)(struct platform_device *);3 int (*re

2014-04-22 13:33:59 1188

原创 【linux驱动分析】之dm9000驱动分析(四):net_device结构体

net_device结构体,定义在include/linux/netdevice.h中,这是一个很复杂的结构体,先把代码清单列出来,再用到的过程中,逐步分析,最后来这里做个总结。下面的代码是linux-2.6.38中的。 1 /* 2 * The DEVICE structure. 3 * Actually, this whole structure is

2014-04-22 13:31:31 1614

原创 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析

【linux驱动分析】之dm9000驱动分析(一):dm9000原理及硬件分析 【linux驱动分析】之dm9000驱动分析(二):定义在板文件中的资源和设备以及几个宏 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析 【linux驱动分析】之dm9000驱动分析(四):net_device结构体 【linux驱动分析】之dm9000驱动分

2014-04-21 16:30:58 1606

原创 【linux驱动分析】之dm9000驱动分析(一):dm9000原理及硬件分析

【linux驱动分析】之dm9000驱动分析(一):dm9000原理及硬件分析 【linux驱动分析】之dm9000驱动分析(二):定义在板文件中的资源和设备以及几个宏 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析 【linux驱动分析】之dm9000驱动分析(四):net_device结构体 【linux驱动分析】之dm9000驱动分

2014-04-21 16:27:11 1642

原创 【linux驱动分析】之dm9000驱动分析(二):定义在板文件中的资源和设备以及几个宏

【linux驱动分析】之dm9000驱动分析(一):dm9000原理及硬件分析【linux驱动分析】之dm9000驱动分析(二):定义在板文件中的资源和设备以及几个宏【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析【linux驱动分析】之dm9000驱动分析(四):net_device结构体【linux驱动分析】之dm9000驱动分析(五):另外几个重要的结构体【linux驱动分析】之dm9000驱动分析(六):dm9000_init和dm9000_probe的实现【l

2014-04-21 16:18:06 1458

原创 linux块设备驱动

和字符驱动相比 ,在对磁盘,flash等设备进行读写时,块设备驱动可以进行优化合并等操作,提高了操作效率。 以下代码来自linux-2.6.38。LDD3电子书网页版的地址:http://oss.org.cn/kernel-book/ldd3/一、注册这个任务的函数是 register_blkdev(在 中定义):int register_blkdev(unsigned in

2014-04-21 16:01:28 907

原创 第一个java程序

1 import java.util.*;2 public class HelloDate{3 public static void main(String[] args){4 System.out.println("Hello world!!!");5 System.out.println(new Date());6 }7 }第

2014-04-21 15:53:11 617

原创 linux使用进阶(一)

本文根据《应该知道的Linux技巧》coolshell上的一篇文章提到的Linux技巧,结合自己掌握的情况进行扩展和总结得来。主要包括以下内容:    一、日常操作    二、数据处理    三、系统调试    四、网络管理一、日常操作日常操作是在使用Linux进行编程开发中常用的命令,工具的总结。1、ssh

2014-04-21 13:30:01 1556 3

原创 linux下itimer定时器的应用

一、定时器操作Linux 为每一个进程提供了 3 个 setitimer 间隔计时器:1. ITIMER_REAL:减少实际时间,到期的时候发出 SIGALRM 信号。2. ITIMER_VIRTUAL:减少有效时间 (进程执行的时间),产生 SIGVTALRM 信号。3. ITIMER_PROF:减少进程的有效时间和系统时间 (为进程调度用的时间)。这个经常和上面

2014-04-10 23:57:32 1871

原创 linux内核定时器

一、几个概念1、节拍率:HZ    系统定时器频率(节拍率)是通过静态预处理定义的,也就是HZ(赫兹),在系统启动时按照HZ值对硬件进行设置。体系结构或机器不同,HZ值都有可能不同。    内核在文件中定义了这个值。假设一个进程的时间片只剩下2ms了,此时调度程序又要求抢占该进程,然后去运行一个新进程,然而该抢占不会在下一个时钟中断到来前发生。对于频率为100HZ的时钟来说

2014-04-10 23:55:39 1061

空空如也

空空如也

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

TA关注的人

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