2014/2015及2016的总结

上大学之后断了写日记的习惯,2年来只写过极少的几篇短文。放假以后回到家感觉很多事物都陌生起来,想想这两年自己不小的变化,只觉得有一种“少小离家老大回,乡音无改鬓毛衰”的错觉。 ​ 回头看在沙坡的两年半时间,不由得不感慨万分。 ​ 从小学时就想学建筑,后来因为一点点运气而难以去到同济,于是带着“曾经沧海难为水”的心情再也不想去看与建筑有关的东西。这样随便地来了软件工程多少有一点先天不足,好
阅读本文

策略模式——小白入门

一、在这里我先简单介绍一下策略模式(Strategy Pattern) 好比如我要去一个地方,由于时间充裕,我可以用乘坐公交车这种策略出行;但是如果时间稍微在紧一点,我就要乘坐地铁这种策略出行;在紧一点,我就要呼叫滴滴这种策略了。所以策略模式的意义就是根据不同的实际情况,选择不同的策略以解决方法。 二、为什么我们要使用策略模式?——因为策略模式有以下几种优点 1、策略模式使开发人员能够开发出由
阅读本文

Python-装饰

装饰介绍装饰器功能是软件设计模式。它们动态地改变函数,方法或类的功能,而不必直接使用子类或改变修饰函数的源代码。当使用正确时,装饰器可以成为开发过程中强大的工具。本主题涵盖了Python中装饰器函数的实现和应用。 装饰器功能装饰器增强其他函数或方法的行为。这需要一个函数作为参数,并返回一个增强功能的任何功能可以用作装饰。# This simplest decorator does nothing
阅读本文

一个风控计算负载过高到mysql主从拆分暴露的各种设计复杂性问题以及解决方法总结

在很多系统(包括金融类和非金融类)中,其实有大量的系统在很长的一段时间内(具体多长时间视业务的成功与否而定)都是混合型系统,也就是同时具有OLTP+OLAP的业务。我们说任何形式的存在在特定阶段都是合理的,这无可厚非,但是对于明知会发生但仅仅只是时间问题的那些问题,如果不吸取以前的经验教训,仅仅是为了快速上线而阉割再阉割,事后补救的成本必定是高昂而且痛苦的。在我们最近的这一次因为实时风控计算导致关
阅读本文

条码打印软件调用数字分组分隔符的教程

在使用BarTender设计条码标签打印时,有些上手没多久的小伙伴可能偶尔会遇到一些问题自己不会解决。比如标签中一个数值打印的时候能自动添加千位分隔符吗?这个问题用到了BarTender数字分组分隔符,下面小编就教教大家如何具体操作。在BarTender 2016中,标签中一个数值打印的时候自动添加千位分隔符,简单来说就是1234怎么格式化成1,234.00输出?“使用数字分组分隔符”若是没有勾上
阅读本文

软件开发--依赖注入

控制反转(Inversion of Control,缩写为IoC),是面向对象编程的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做 依赖注入(Dependency Injection,简称DI). 还有一种方式叫做 “依赖查找“ (Dependency Lookup). 通过控制反转,对象在被创建时,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以
阅读本文

一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别以下是上述协议的简单介绍:BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布
阅读本文

Spring Boot 日志记录(Logback)

@author StormMa @date 2017-01-19 生命不息,奋斗不止! Logback描述 Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个
阅读本文

行为型模式--责任链模式

责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 介绍 意图:避免请求发送者与接
阅读本文

#ifndef/#define/#endif使用详解

想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?     其实“被重复引用”是指一个头文件在同一个cpp文件中被i
阅读本文

五大原则 (单一职责、开放封闭、里氏代换、接口隔离、依赖倒置)

单一职责原则-SRP-Single responsibility principle    就一个类而言,应该只有一个导致其变化的原因。一个职责就是一个变化的轴线,一个类如果承担的职责过多,就等于将这些职责耦合在一起。一个职责的变化可能影响到其他职责。        什么是职责?            职责是“变化的原因”                例如某一个类现在同时具有“连接”和“通信”两
阅读本文

[转]PCB布线设计

一、PCB布线设计1 1.1 自动布线的优缺点以及模拟电路布线的注意事项 设计PCB时,往往很想使用自动布线。通常,纯数字的电路板(尤其信号电平比较低,电路密度比较小时)采用自动布线是没有问题的。但是,在设计模拟、混合信号或高速电路板时,如果采用布线软件的自动布线工具,可能会出现一些问题,甚至很可能带来严重的电路性能问题。   例如,图1-1中显示了一个采用自动布线设计的双面板的顶层。此双面板的
阅读本文

V-rep学习笔记:碰撞检测与距离计算

V-REP可以在几何组件中快速判断各种干扰与碰撞,以及计算多个组件间的最小距离。碰撞检测  V-REP可以检测两个碰撞体实体(Collidable objects are objects that can be tested for collision against other collidable objects)之间的碰撞,类似于SolidWorks等三维设计软件中的干涉检查。碰撞检测只
阅读本文

BarTender创建不同形状的条形码的方法

客户的要求可以说是千奇百怪,我们需要根据他们的要求,用BarTender 2016创建各式各样的条码。那么除了一些常规形状的条码,我们还可以在BarTender 2016创建特别形状条形码吗?接下来,小编就来介绍下如何在BarTender 2016创建一个特别的条码。在 BarTender 2016中,创建一个特别形状的BarTender 2016条形码,我们可以通过对标签形状的改变,以及对对象添
阅读本文

程序设计-分模分块

(0)意义与价值简单来讲,分模分块是将代码分开写,每个模、块是一个高内聚低耦合的个体,个体间通过接口通讯(public方法),这需要分化好每个模块需要做什么。这样做可以带来以下好处  1.代码的可复用性    当一个类成为一个可自立更生的个体后,我们只需要按照之前设定的使用方式去调用即可。     当然类的抽象层次越低,越接近具体实现时,它的可复用性也就越低、复用的成本也就越高。  2.代码的可维
阅读本文

FreeSouth的学习osg小贴士

http://www.osgchina.org/index.php?option=com_content&view=article&id=150&catid=91&Itemid=4933 读函数注释 看见代码中有注释,是必须要警示的,因为很可能里面提示的有重要的信息,使用方法等。 4 查看 OpenGL 调用 定位简单的渲染问题,可以使用一些OpenGL跟踪工具查看OpenGL的调用情况。这几个工
阅读本文

Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序

前言 基本思路相信大家在本科学习数据结构课程(严蔚敏版)的时候都接触过huffman编码吧,课本中的例子给了若干个字符,以及每个字符的出现次数,并以此构造了一颗huffman树。然后从huffman树的根节点到每一个叶子节点走一条路径,如果约定往左编码0,往右编码1,那么每一个叶子便可以得到一个由一串0和1表示的串。现在我们回到实际问题上来,我们要压缩的文件格式多种多样,可能是图片,也可能是各种格
阅读本文

Node+MongoDb+Express简单实例

安装Node以及Express前往官网https://nodejs.org 下载安装NodeJs,跟常规的软件安装类似,安装成功测试代码:$ node -v成功如下图所示: 当前显示我的NodeJs版本是5.10.0,安装Node的同时,系统会自带NPM工具,我们可以利用NPM下载我们所需的强大的node开源框架——Express,安装命令如下:npm install -g express其中-g
阅读本文

Neural Network Virtual Machine

深度学习Stack为什么提出NNVM?深度学习框架现状 - “碎片化”目前,深度学习应用框架呈现出高度的“碎片化(fragmentation)”倾向,这主要是由于下述两个原因:  1. 深度学习正处于商业应用的前期阶段并具有诱人的商业想象力。诱人的商业前景且尚未出现事实标准的现状,使得有相应实力的公司竞相推出或赞助自己的应用框架,以期在后续的竞争中谋得一席。比如,Google主推TensorFlo
阅读本文

arm架构与体系结构

1.cpu与soc内核版本号与soc版本号由arm公司确定。芯片型号由各半导体公司确定。soc包括cpu与一些基本内设。(一般提到CPU都指的是soc,实际上cpu只是soc的一部分)。  RISC与CISCRISC复杂指令集:指令繁多,但是效率高。Intel等桌面pc使用这种指令集。功耗大。CISC精简指令集: 指令少,但是效率略低。优点是功耗低适合嵌入式设备。 统一编址&独立编址  内存通过C
阅读本文