自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (4)
  • 收藏
  • 关注

原创 孕育知识图谱

孕育

2022-10-23 21:39:27 387 1

转载 git分支设置upstream

Preface 如果本地的分支没有和远程的分支进行关联,在git pull/fetch的时候,会抛出大致如下的错误信息123456789There is no tracking information for the current branch.Please specify which branch you want to merge with.See git-pull(1) for details.git pull <remote> <branch>If you w...

2021-12-24 21:51:44 8950 1

转载 详解布隆过滤器的原理,使用场景和注意事项

原文链接:https://zhuanlan.zhihu.com/p/43263751在进入正文之前,之前看到的有句话我觉得说得很好:Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different facility and ben

2021-11-29 17:42:24 280

原创 架构漫谈读书笔记

什么是架构架构实际上是人类生产生活过程中,遇到了具体问题,针对该问题做定义,划分问题边界,做分析,分解,拆分子问题并约定每个拆解部件的职责及各部件间交流规则并且每个部件相互协作形成一个整体共同完成系统目标因此架构一定解决的人的问题认识概念是理解架构的基础每个概念其实背后都代表了某个具体问题所对应的解决方案。概念也是充当了交流媒介。根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础

2021-08-19 13:57:09 135

原创 解析极限编程(第2版)

极限编程(XP)定义XP是关于每个人自己如何成为最好的开发者的。项目成功需要技术和人际关系的和谐 XP致力于解决这两方面的问题

2021-06-08 14:03:35 178

原创 架构师技能图谱

领域知识架构师通常具备某个领域的知识,持续深耕领域,熟悉领域问题,常见解决方案。这个是领域架构师。是基础。成功的架构师必然在某个领域是专家架构设计知识诸如常见架构模式(分层,微服务),整洁架构,架构设计方法学。比如4+1视图,DDD等需求分析,分解能力,沟通协调能力及项目管理,软件工程能力扎实的计算机系统知识。包括语言,系统结构,操作系统等...

2021-04-30 13:26:30 138

原创 敏捷需求分析过程

用户原始需求得到总体方案构想(即系统原理)以及关键技术方案(阐述关键需求实现技术)。最后基于系统总体方案及关键技术实现方案分解系统需求即SR,最后到AR,Story,task。注意在单个子系统的当前所有AR明确之后,需要对子系统作详细设计。即软件模块化或组件化设计也可以直接从SR到Story,task。这种情况就基于story做软件设计。story的粒度通常较小。要求开发人员能够在10天内完成开发。我们讨论大型系统的需求分析方法。通常大型系统采用用例加上用户故事的需求分析方法用例是对系统之间或

2021-04-22 14:01:16 1331 2

原创 LD_PRELOAD实现API劫持

API劫持主要是利用动态链接技术,通过预先加载SO,隐藏符号。达到动态替换API的功能。API劫持技术可用于热补丁等领域。

2021-04-17 17:46:36 1405

原创 设计原则

SOLIDYANGIKISSSLAP(Single Level Abstract Principle)REP(Release-Reuse Equivalency Principle)CRP(Common Reuse Principle)CCP(Common Closure Principle)ADP(Acyclic Dependency Principle)SDP(Stable Dependency Principle)10.SAP (Stable Abstract Principle).

2021-04-14 19:10:27 77

原创 CPU IPC

IPC: Instructions per cycle 衡量CPU每个指令周期执行的指令数。该值是重要的CPU性能指标

2021-03-17 16:10:41 153

原创 软件设计之道

前言计算机科学的根本问题是如何分解问题,然而这门技艺却很有少学校会教。本书内容是作者多年实践经验的结晶,也是斯坦福的大学课程本书根本目的是要解决软件设计的复杂性,提供了一系列软件设计原则,观点,读者可结合个人实际情况实践。引言复杂性是现代软件系统开发不可回避的问题。原因在于随着系统规模越大,复杂性也会快速增加,从而降低开发效率。作者从两个维度简化复杂度:1 代码本身诸如一致的命名风格,清晰准确的命名等2 封装复杂性即模块化设计最后作者提倡了增量式,演进式设计。以及在演进式设计下如何减少复

2021-03-17 00:23:46 163

原创 架构整洁之道

Main组件Main组件们于系统最外层,知道最多的细节。只有操作系统依赖于main组件main组件负责系统初始化,对象创建,相关资源申请,协调各组件的依赖关系。main组件作为系统的插件,可以专门针对测试环境,生产环境,开发环境创建不同的main组件服务:宏观与微观这里的服务指:面向服务的架构与微服务主要观点:微服务或者面向服务的架构并不能够称之为架构。作者认为,架构设计的主要任务是要找到高层策略与底层细节之间的架构边界,并确保这些边界遵守依赖关系规则。服务本质上是比函数调用成本稍高的,分

2021-01-17 22:17:51 245 2

原创 用户故障与敏捷方法

Kent 序用户故事是一种需求管理方法,它和需求规格分析,用例,场景分析等方法一样。都是为了解决如何更好的确定系统需求及如何与人沟通需求的问题。不同需求分析方法的差异点在于写什么及何时写。用户故事是一种敏捷的需求管理方法,它仅在一开始确定系统目标及实现该目标的大致成本。在真正实现需求时才去确定具体细节。这种方式带来的好处是: 1. 让你首先关注价值最高的需求 2. 早期评估成本助力合理安排故事的优先级译者序软件失败通常最主要的根源在于软件需求识别错误。这导致需求文档往大而全,更加细致的方向发展。进而

2021-01-12 00:17:25 142

转载 SSH 认证原理

原文链接:https://www.jianshu.com/p/d31de2601368中间人攻击SSH 之所以能够保证安全,原因在于它采用了公钥加密。整个过程是这样的:远程主机收到用户的登录请求,把自己的公钥发给用户。用户使用这个公钥,将登录密码加密后,发送回来。远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像 https 协议,

2021-01-06 17:26:41 421

原创 tar常用操作

去除目录结构加上 --strip-components N如: 压缩文件eg.tar 中文件信息为 src/src/src/eg.txt运行 tar -xvf eg.tar --strip-components 1结果:src/src/eg.txt如果运行 tar -xvf eg.tar --strip-components 3解压结果为: eg.txt在解压的时候,如果想指定解压目录,可以加参数-C 目标目录如: 如我们解压eg.tar, 该文件在/data/src下面,如果需要将基解压到

2020-12-08 15:48:58 157

转载 git pull --rebase

 使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase现在来看看git merge和git rebase的区别。假设有3次提交A,B,C。在远程分支origin的基础上创建一个名为"mywork"的分支并提交了,同时有其他人在"origin"上做了一些修改并提交了。其实这个时候E不应该提交,因为提交后会发生冲突。如何解决这些冲突呢?有以下两种方法:...

2020-10-14 22:58:15 203

转载 git技巧之stash

[时间:2016-10] [状态:Open][关键词:git,版本控制,版本管理,stash,git储藏]缘起今天在看一个bug,之前一个分支的版本是正常的,在新的分支上上加了很多日志没找到原因,希望回溯到之前的版本,确定下从哪个提交引入的问题,但是还不想把现在的修改提交,也不希望在Git上看到当前修改的版本(带有大量日志和调试信息)。因此呢,查查Git有没有提供类似功能,就找到了git stash的命令。综合下网上的介绍和资料,git stash(git储藏)可用于以下情形:发现有...

2020-09-28 11:11:27 559

转载 git使用技巧之压缩commit

原文——Squash commits into one with Git本篇介绍一个很棒的能将多次修改合并起来的方法,尤其是在将他们共享出去之前在 Git 中,你可以使用强大的 interactive rebase(交互式 rebase)将多次提交合并成一次。这是我常用的一个很方便的工具;我经常通过将多个临时的小的提交合并成一次提交,然后将整理好的代码 push 给远端。步骤 1: 选择你的起始提交第一步就是让 git 开始一次交互式 rebase 会话:1git rebase --interactive

2020-09-27 15:48:58 1778 1

原创 二分查找题目-转变数组后最接近目标值的数组和

题目给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。class Solution: def findBestValue(self, arr, target): n = len(arr)

2020-08-09 20:12:36 168

转载 cland-tidy简介

最近几天在关注clang-tidy,有一些体会,简单做一些笔记。分享给感兴趣的朋友们,也是给将来的自己看。1、clang-tidy是基于AST的静态检查工具。因为它基于AST,所以要比基于正则表达式的静态检查工具更为精准,但是带来的缺点就是要比基于正则表达式的静态检查工具慢一点。也是因为它基于AST,所以clang-tidy运行的时候需要知道编译命令。2、clang-tidy不仅仅可以做静态检查,还可以做一些修复工作。3、clang-tidy是基于LibTooling的工具。而LibTooling是一个库,

2020-08-07 20:15:34 752

原创 strStr实现-rabin-karp

class Solution: def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ return self.rabin_karp(haystack, needle) def rabin_karp(self, haystack, needle):

2020-08-04 00:20:11 77

原创 字符串匹配-构造DFA

class Solution(object): def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ return self.search(haystack, needle) def get_dfa(self, pat): M = len(pat)

2020-08-03 23:36:19 255

转载 c++实现pimpl

原文链接:https://blog.csdn.net/lihao21/article/details/47610309 Pimpl(pointer to implementation, 指向实现的指针)是一种常用的,用来对“类的接口与实现”进行解

2020-08-03 10:18:15 186 1

原创 kmp算法实现

class Solution(object): def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ return self.kmp(haystack, needle) def kmp(self, haystack, needle): """ km

2020-07-30 23:21:37 96

原创 c++编译error: declaration of anonymous class must be a definition

错误原因想声明一个匿名类,却没有一个类体结构。比如如果有下面的代码,就会出现这样的错误#define optional#include <iostream>#include <map>class optional;int main(int argc, char *argv[]){ std::cout<<"1111"<<std::endl;}常见导致该问题的错误在作类前置声明的时候,若有宏定义和类名冲突,即会导致该问题解决当

2020-07-20 20:47:37 5727

转载 代码覆盖工具(gcov、lcov)的使用

转载至原文:https://www.cnblogs.com/fnlingnzb-learner/p/6943512.html一、安装gcov:是随gcc一起发布的,并不需要独立安装;lcov:其他博客说是随ltp发布的,结果下载下ltp之后编译了10多分钟,最后也没见lcov,最后到sourceforge下载了lcov单独的代码:1 wget http://ncu.dl.sourceforge.net/project/ltp/Coverage Analysis/LCOV-1.12/lcov-1.12

2020-07-16 11:22:47 898 1

原创 leetcode子数组和问题综述

一维数组子数组和类问题出现频率非常多,比如560. 和为K的子数组561. 和可被 K 整除的子数组562. 连续的子数组和1477. 找两个和为目标值且不重叠的子数组这类问题有一个共同点,即均存在求数组A[0, 1,2, … n- 1]内任意子数组的和问题。如果暴力求解,将是O(n^2)。这里可以采用hash数组,将前缀和作为为key.数组下标作为value。利用sum(i + 1, j) = pre_sum(j) - pre_sum(i)的方式去求解。可将复杂度由O(n^2) 将为O(n).

2020-07-12 18:50:58 176

原创 位运算-用法汇总

用位运算表示元素组合比如给定数组A = [a0, a1, a2, a3, a4]。为了表示从数组A中选择任意个元素的组合状态。组合总和为2的n次方。可以通过位运算达成。设 bits = 1 << len(A).用bits中的每i位来代表A[i]是否已选。bits的每一个不同的值代表了一种组合。这个在求线性列表的组合数里面非常有用。也可以用bits来表示具体的选择状态。参见leetcode 698. 划分为k个相等的子集 官方题解的动态规划算法。就是用到了bits来表达选择状态。...

2020-07-01 02:06:31 167

转载 linux aio + epoll实践

Linux的io机制Buffered-IO 和Direct-IOLinux磁盘I/O分为Buffered IO和Direct IO,这两者有何区别呢?对于Buffered IO:当应用程序尝试读取某块数据的时候,如果这块数据已经存放在了页缓存(page cache)中,那么这块数据就可以立即返回给应用程序,而不需要经过实际的物理读盘操作。当然,如果数据在应用程序读取之前并未被存放在页缓存中,那么就需要先将数据从磁盘读到页缓存中去。对于写操作来说,应用程序也会将数据先写到页缓存中去,数据是否被立即写到

2020-06-29 22:27:05 1340

原创 python3标准算法库

from itertools import combinations

2020-06-24 19:24:39 329

原创 哈希应用-523连续的子数组和

题目描述:给定一个包含 非负数 的数组和一个目标 整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,且总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。示例 1:输入:[23,2,4,6,7], k = 6输出:True解释:[2,4] 是一个大小为 2 的子数组,并且和为 6。示例 2:输入:[23,2,6,4,7], k = 6输出:True解释:[23,2,6,4,7]是大小为 5 的子数组,并且和为 42。解答:应用 (i - j) % k

2020-06-23 23:12:21 110

原创 滑动窗口-窗口大小不固定

题目:209. 长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。实现:class Solution: def minSubArrayLen(self, s: int, nums: List[int]) -> int: length = len(nums) + 1 cur_sum = 0 left = right

2020-06-10 21:02:02 612

原创 vim常用

windows上代码粘贴到linux vim中,缩进会乱。解决:Vim的编辑模式中,有一个Paste模式,在该模式下,可将文本原本的粘贴到Vim中,以避免一些格式错误。通过“:set paste”和“:set nopaste”进入和退出该模式...

2020-06-04 10:56:56 110

原创 回溯基础算法

不重复元素的子集枚举对应leetcode 78题class Solution(object): def subsets(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ stack = [] ret = [] def compute(stack, seq): ret.app.

2020-06-03 19:00:12 163

原创 经典算法之二分查找

寻找旋转排序数组中的最小值 II元素可能重复class Solution: def findMin(self, nums: List[int]) -> int: left = 0 right = len(nums) - 1 while left < right: if nums[left] < nums[right]: return nums[left] .

2020-05-21 00:41:44 129

原创 经典算法之-寻找欧拉路径

leetcode题目:332. 重新安排行程题目要求:从JFK出发,遍历所有的边,且边不重复,输出按字母序最小的行程方案。class Solution: def findItinerary(self, tickets: List[List[str]]) -> List[str]: graph = collections.defaultdict(list) for s, t in tickets: graph[s].append(t)

2020-05-20 22:23:05 759

原创 经典算法之二叉树中序遍历-栈

以下算法实现验证二叉树是否是二叉搜索树。采用了中序遍历,用栈实现。import sysclass Solution: def isValidBST(self, root: TreeNode) -> bool: stack = [] before = -sys.maxsize while stack or root: while root: stack.append(root)

2020-05-16 23:01:26 379

原创 经典算法模板-层次遍历、广度优先搜索

def level_order(root): levels = [] if not root: return [] cur_level = list() cur_level.append(root) while len(cur_level) > 0: cur_eles = [] next_level =...

2020-05-05 22:15:12 247

原创 经典算法模板-拓扑排序、深度优先排序

class Solution(object): WHITE = 0 GREY = 1 BLACK = 2 def __init__(self): self.top_order = list() def findOrder(self, numCourses, prerequisites): """ :typ...

2020-05-05 21:39:46 289

原创 经典算法模板-并查集实现

class UF: def __init__(self, n): self.count = n self.parent = [i for i in range(n)] def find(self, p): while p != self.parent[p]: self.parent[p] = self.par...

2020-05-05 21:24:14 133

基于android终端的考勤系统

基于android终端的考勤软件,方便的数据导入与导出,绚丽的操作界面,直接与读卡器相连进行刷卡考勤,完成开放源代码,可用作毕业设计,课程设计,学习之用,老师也可直接用于考勤。(注:解决登录问题)

2014-03-09

单片机模拟4路pwm信号

本工程文件通过串口接收数据,转为四路pwm信号输出,所用单片机为 stc11f32xe,晶振 32M,可用于四旋翼飞行器控制信号(T=20ms,控制信号1~2ms)

2013-06-02

汽车销售管理系统

数据库课程设计-汽车销售管理系统完整代码,在exlipse+sql2005开发环境下完成;

2013-03-05

数据库系统概论答案

本书是数据库系统概论书籍的配套答案,里面讲解详细,是学习数据库不可多得的好资料.

2013-03-05

空空如也

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

TA关注的人

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