自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

穷目楼的博客 - 昨日所记,今日所想,明日所学

白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

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

原创 Python 学习简册

Python是一门诞生于20世纪90年代初的计算机语言,经过多年的发展,已经从"脚本"演进为了可用于运维程序,视窗软件,网络服务,科学计算等多方面的通用型语言。在Python的发展过程中,一些新的功能被不断加入,同时一些看起来一样的功能,背后的实现机制也有了变化,此外就语言层面来说也随着时间的推移存在一些不同。这些变化从近些年从python2到python3的迁移过程中也能看到。这份文档是在查看...

2020-03-20 22:59:50 81

原创 Hive拉拉扯扯的order by,sort by,distribute by, cluster by

Hive支持两个层面的排序:全局排序部分排序全局排序用order by col [ASC | DESC]实现,效果和传统的RDMS一样,保证最后的数据全局有序。部分排序用sort by col [ASC | DESC]实现,保证同一个reducer处理的数据有序,对于结果数据则表现为局部有序。Hive对用户提供的同样是SQL,但底层实现却和传统数据库有天壤区别,底层实现默...

2020-02-18 20:10:57 153

原创 互联网设备安装Linux系统后首先需要做事情是安全加固

一般而言位于互联网的Linux设备在刚安装后如果口令复杂度足够,那么在没有做任何额外的操作,开启额外的服务前也是比较安全的。但是操作系统安装后,不可能不使用,既然使用,那么就可能引发安全问题,为此在系统安装完后我们应该做一些基本的安全加固,确保正常的系统使用不容易引发安全问题。在云计算的时代,阿里云,腾讯云等云服务提供商提供了易于获取的计算资源,分别推出了各种低廉的活动优惠,每月甚至低于10RM...

2019-12-04 15:11:47 143

原创 Git使用-git add

新增变更 "git add"新增工作目录的变更到暂存区,新增到暂存区的变更在接下来执行"git commit"时会被提交到版本仓库。在未执行实际的提交前,"git add"不会对仓库历史有任何影响。git add <file>添加所有在<file>文件中的变更到暂存区,等待提交git add <directory>添加所有在<directory>目录中的变更到暂存区,等待提交git add -p交互式地新增...

2020-08-19 21:38:32 41

原创 Git使用-git clone

克隆仓库 git clone用于克隆一个已有的git仓库。"克隆"暗示了其结果是原始仓库的一个完全对等的镜像,其包括自己的版本历史,是一个和原始仓库完全独立的仓库,而不仅仅是一个工作目录的副本。 git clone命令执行后,一个指向原始仓库的远程链接被创建,默认被命名为“origin”,该链接可用来和原始仓库进行信息交换,比如push本地新的改动到远程仓库。git clone <repo>克隆位于<repo>位置的仓库到本地,克...

2020-08-19 21:30:53 55

原创 Git使用-git init

创建仓库“git init”命令用于创建git仓库,其可以在一个已有的非git项目的根目录下执行,把已有项目初始化成为git仓库,也可以用于初始化一个空的目录为git仓库。执行“git init”后,“.git”目录在根目录下被创建,其包括所有当前git仓库所需要的所有信息。除去".git"目录之外,其它任何目录部分都没有任何改变。git init初始化当前目录为git仓库。git init <directory>在指定的目录<directory>创建

2020-08-19 21:22:52 130

原创 Hive修改Parquet存储的表字段类型

Hive数据表的存储支持多种方式,纯文本和Parque其中的两种。纯文本的优势在于简单,可读,缺点在于无压缩,效率;Parque的优势在于计算高效,可压缩的列存储模式,缺点在于比纯文本多了一层定义带来的复杂性。Hive数据表的字段修改,可以通过alter table name change column column_name new_column_name type;进行重命名和(或)类型修改。文本文件由于其天然的简单性,数据中不含有类型信息,完全为数据本身,类型信息完全由Hive进行维护,所

2020-08-14 10:33:44 441

原创 Java实现删除目录

Java文件处理传统的API是java.io.File这是一个在Java早起就一直有的API。从Java7开始,Java引入了另一套新的API来处理文件。java.nio.file.Files;java.nio.file.Path;java.nio.file.Paths;但无论是File的删除方法File.delete();还是Files的删除方法Files.delete(path);都只能用于删除文件或空目录,如果目录不为空则会抛出异常。为了实现非空目录的删除,需要遍历目录

2020-08-13 15:31:04 54

原创 Linux临时目录/tmp与/var/tmp

Linux有两个公知的临时目录:/tmp与/var/tmp,这两个目录被用户用于存储临时性的文件,亦经常被程读写用户存储临时性数据。两个目录没有本质上的区别,最根本的区别仅仅是系统对其中文件清理的默认时间配置不一致。/tmp 目录默认清理10天未用的文件,系统重启会清空目录/var/tmp 目录默认清理30天未用的文件redhat6系,可在文件 /etc/cron.daily/tmpwatch中查看到清理的配置。#! /bin/shflags=-umc/usr/sbin/tmpwat

2020-08-05 10:30:54 909

原创 jupyter配置密码保护

jupyter提供两种认证控制机制:密码保护和token保护,token保护在4.3版本开始会被默认开启,如需要使用密码保护,需要修改配置文件jupyter_notebook_config.py中的配置c.NotebookApp.password = u'your-pass-str'配置文件配置文件jupyter_notebook_config.py的默认位置为:Windwos : C:\Users\USERNAME.jupyter\jupyter_notebook_config.pyOS

2020-06-02 17:33:25 88

原创 部署django应用

django开发时只需要python就能完成,利用其自带的开发服务,可以方便在开发环境运行起应用,但部署于生产时则需要一些额外的操作。配置修改首先是配置的修改,settings.py里有些最小配置需要修改STATIC_ROOT = os.path.join(os.getcwd(), 'static')ALLOWED_HOSTS = ['127.0.0.1']DEBUG = False如果应用里有图片,样式表资源,需要设置STATIC_ROOT; DEBUG模式必须关掉,否则会暴露过多信息造成安

2020-05-31 09:45:11 93

原创 通用的可扩展数据库设计-Entitty-Atribute-Value(EAV)模式

数据库的设计一般都是面向业务的的,这样能够提供最直接的建模,一般也能提供更快的性能。关系型数据库需要在建库时就固定库的结构,有哪些表,有哪些字段,字段的类型…这种”提前确定“在刻画现实世界的时候会存在一些蹩脚的地方,引出Entitty-Atribute-Value(EAV)模式的一个经典案例就是医学临床记录的存储。临床记录多种多样,有数不尽的指标,各个指标的值也不尽相同,血压,心率,咳嗽?显然是不同的指标,有不同的值。以二维表形式组织数据逻辑结构的关系表怎么表示?不断扩充列?显然是不现实的,最主要的原因是

2020-05-14 17:18:26 227

原创 Excel处理字符的函数

获取子字符串函数功能LEFT(text, [num_chars=1])从文本字符串的第一个字符开始返回指定个数的字符RIGHT(text,[num_chars=1])从文本字符串的最后一个字符开始返回指定个数的字符MID(text, start_num, num_chars)从文本字符串指定字符位置开始返回指定个数的字符拼接函数功能&(操作符)拼接字符CONCATENATE(text1, [text2], …)拼接字符

2020-05-09 16:05:30 56

原创 Python的C扩展源码编译不太易

Python生态的优势之一轮子多,轮子分两类,一类是完全用Python本身写的,另一类是结合或者说使用了C/C++扩展的,由于Python的跨平台,前者安装无忧,后者如果能用到包管理自动搞定也无忧,但是如果没有包管理器,也找不到预编译好的版本,只有源码,那么就可能有点忧愁了,这种情况在Windows平台上比较常见,一些小众的包只有源码,没有预编译的程序。忧愁一:32位还是64位Python本身现在也有32位和64位之分,如果操作系统是32位,那就没问题了,因为Python肯定是32位,但如果操作系统是6

2020-05-08 17:56:46 125

原创 Spring限定性依赖注入-@Primary @Qualifier
原力计划

Spring自动匹配Bean注入的机制在有多个可选的Bean存在时是不可用的,需要进一步进行相关配置明确消除多个可选Bean存在的歧义性。基于Java注解的注入可通过@Primary 或@Qualify完成。@Primary注解符合@Autowired连接的候选bean有多个,如果依赖注入只需要一个bean, 在只有其中一个bean声明了@Primary的情况下,该bean将会被注入。@Co...

2020-04-30 14:45:55 86

原创 Java I/0流的概念

流(stream)代表了来自某个输入源,或者将要流向某个输出源的一系列数据。按流向,可以分为输入流和输出流。输入流(input stream)通过输入流,数据流入程序,程序读取输入流中的数据。输出流(output stream)通过输出流,数据流出程序,程序写输出流中的数据到数据的接收端。按对数据的处理方式,在比较抽象的层次上可以分为字节流(byte stream)和字符流(...

2020-04-28 15:02:25 57

原创 Java Servlet环境中获取完整的客户端请求地址

客户端请求服务的地址中除了基本的协议,主机,端口信息外,还可能包含查询串,若想获取完整的请求地址,则需要考虑到存在查询串的可能性。一个获取完整客户端请求地址的方法:public static String getFullURL(HttpServletRequest request) { StringBuffer requestURL = request.getRequestURL();...

2020-04-24 10:27:24 107

原创 事物并发读写的可能:幻影读-不可重复读-脏读

伴随着事务的不同隔离等级,会出现不同的读取现象。ANSI/ISO 标准 SQL 92指出两个事务并发执行,一个事务读数据,另一个事务写数据时可能出现的三种情况。幻影读(Phantom reads)事务T1进行两次相同的查询,前后2次查询的结果由于事务T2插入了新数据产生了不同的结果。T1        &nb...

2020-04-22 09:39:57 91

原创 事务的隔离

事物的隔离性决定着并发事务处理时数据状态的正确与否,低级别的隔离可以获得更大的并发事务能力,但是同时意味着并发数据错误发生的可能性较高,相反,高级别的隔离可以降低并发数据错误发生可能性,但是也意味着事务的并发能力将会减弱,事务之间更容易互相阻塞。隔离性是ACID中的一员,ANSI/ISO SQL标准定义了四种隔离等级,由高到低分别是:串行化(Serializable)最高隔离等级,事务串行...

2020-04-21 17:15:22 55

原创 事务的四大性质-ACID

事务具有四大性质,其包括可靠性,一致性,隔离性以及持久性,这四大性质一起保证了数据的可靠,一致,完整。原子性(Atomicity)原子性保证了事务的不可再分,一个事务中的操作或者全部成功,或者全部失败,不会出现部分成功,部分失败的情况。如果事务失败,则数据将会处于事务开始前的状态。一致性(Consistency)一致性保证了事务成功执行后,数据将会从一种合规的状态进入另一种合规的状态,不能...

2020-04-10 09:58:42 76

原创 Gogs的配置与使用

基本使用gogs是自包含的程序,把包含gogs的压缩包解压后,无需安装,可直接执行。命令行中输入gogs web可以启动gogs服务,首次启动会自动引导到初始化配置页面,按需配置即可。自定义配置的存储位置为 custom/conf/app.ini,可按需配置修改。配置HTTPS在 custom/conf/app.ini 文件中修改(新增)配置选项[server]PROTOCOL...

2020-04-09 10:36:32 342

原创 版本控制提交规范参考

无规矩不成方圆,在涉及多人协作的项目中,对版本控制系统的提交使用适合于组织的规范,有助于简化后期的管理维护。人生苦短,规范提交提交信息修改规范每次提交,请写明提交信息,并按规定书写提交信息。规范化的提交信息除了便于查阅外,还容易被自动化工具处理。一种参考的格式:修改类型[(影响范围)]: 标题<--空行-->[正文]<--空行-->[页脚]一般而言...

2020-04-08 14:01:18 72

原创 Windows服务的命令行管理

Windows服务除了可以在“服务”组件可视化的管理配置外,也可通过 net 和 sc 工具进行管理。net 控制服务的启停启动服务net start servicename停止服务net start servicenameservicename对每个服务是唯一的,类似ID的作用,而非服务的显示名称。直接输入net可获得使用提示。sc管理服务创建服务sc create se...

2020-04-07 14:53:00 37

原创 JPA中的锁

JPA 2.0开始同时提供了乐观锁(optimistic locking)和悲观锁(pessimistic locking)。乐观锁(optimistic locking)在数据的改变被提交之前,persistence provider检查自从上次读取数据后数据是否被其他事务修改,删除。实体有一个版本属性,与之对应的数据库表中也有一列字段用来表示版本,每次数据被变更,版本号将会被增加,事务在...

2020-04-03 09:31:41 52

原创 MongoDB的文件系统GridFs

MongoDB发展到3.X时代,其一份document的最大尺寸限制为16M,所以超过这个大小的文件是不能作为一个document存储的。MongoDB对于此种需求,提供过了GridFS进行应对。GridFS把文件分割成尺寸较小的块后,再把每一个小块作为一个单独的document进行存储,2.4.10之后的版本默认的块大小为255K,之前的版本为256K。当从GridFS中提取数据时,Mongo...

2020-04-02 17:03:01 60

原创 Git的配置

git可根据使用环境进行一定的配置,git所有的配置信息都是存储在普通的文本文件中的,所以可以通过直接编辑配置文件的方式来配置git。git把分配分为三个层次,分别对应三个层次的配置文件:仓库层次的配置文件 /.git/config用户层次的配置文件 ~/.gitconfig系统层次的配置文件 /etc/gitconfig从下到上,优先级逐步增高。打开任意一个配置文件,可见到类似的...

2020-04-01 09:59:08 41

原创 MongoDB的比较操作符$in

$in操作符用于选择某个域的值等于其后指定的数组中的任意值的文档。{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }域本身可以是数组,此时$in将会选择域数组中有至少任意一值等于其后指定的数组中的任意一个值的文档。单值域的$in匹配db.inventory.find( { qty: { $in...

2020-04-01 09:49:46 128

原创 Spring Xml配置中Bean的引用

Spring最早支持的配置方式是Java系技术很传统的Xml配置方式,通过Xml可以配置bean的声明,引用。如果bean之间有引用,Spring的<property>标签的的ref属性可以用来表达这种引用关系<bean class="com.me.Hello"> <property name="who" ref="people" /></be...

2020-03-31 10:01:54 73

原创 RestTemplate访问RESTful服务

Spring本身提供了访问RESTFul服务的的工具RestTemplate,在Spring Android项目中也提供了该工具。正如其名所示,其概念上和JdbcTemplate, JmsTemplate类似,虽然RestTemplate看似主要在于和遵循RESTful架构的服务交互,但是其实RestTemplate可以作为一个通用的http访问工具使用。RestTemplate 的底层默认使用...

2020-03-31 09:55:48 53

原创 Spring Security的Servlet集成

Spring Security 对 Servlet API 提供了一些集成支持。Servlet 2.5+获取当前用户的username,对其进行null检查可以得知用户是否通过认证。HttpServletRequest.getRemoteUser()等价于SecurityContextHolder.getContext().getAuthentication().getName()...

2020-03-30 16:39:18 115

原创 Web认证Wifi接入-captive portal

captive portal实现了Wifi接入的Web认证,客户端在连接到hotspot后,正常使用Wifi前,访问任何网址都会被强制指向到特定的web页面上完成认证,认证过程可以只是点击一个同意使用条款的按钮,或者是需要输入手机号获取验证码,或者是需要用第三方账号登陆等,在成功完成认证后才能正常使用Internet。captive portal可以在不同的层面上实现,比如DNS层面,IP层面,...

2020-03-30 16:18:33 535

原创 利用Maven的War Overlays实现War包资源共享
原力计划

Maven War plugin提供了overlays功能,overlays提供了多个web应用程序共享资源的途径。通过overlays,可以通过包依赖实现个性化定制开发,而不是直接在已有成熟软件的源码下进行个性化定制开发。overlays 样例假设当前正在构建的项目documentedproject有如下结构 |-- pom.xml `-- src `-- main ...

2020-03-27 16:58:52 197

原创 XML Schema中include和import的区别

复杂的XML Schema一般会分割成多个文件编写,然后通过引用再把彼此联系起来,逻辑上成为一个完成的XML Schema。通过xsd:include和xsd:import都能完成在一个xsd文件中引用其他xsd文件的功能,两者具体的差别在于目标命名空间方面。xsd:include用于引用和当前xsd定义的target namespace一致的xsd文件。<xsd:include sc...

2020-03-27 14:56:22 107

原创 Linux设置环境变量许多种,核心规律就一种

Linux设置环境变量有许多种方法,即使未使用桌面,仅仅有命令行的情况下也有多种方法,不同的分发版本,以及同一个分发版,但是具体版本不一样的情况下可能方法也有所差异,不过总的来说有以下规律:在系统启动过程中,执行某个(或某几个)初始化的文件,在这些文件执行的过程中加载环境变量这些文件分为系统级和用户级别,系统级别的文件影响整个系统,用户级别的文件影响所属用户以CentOS 7为例,在用户...

2020-03-25 10:07:07 34

原创 服务提供者接口(SPI)

SPI的概念在一些文章里经常能遇见,SPI(Service Provider Interface)顾名思义即服务提供者接口,其是一组将被服务提供方(第三方)实现,扩展的应用程序接口(API),服务提供方通过实现SPI实现具体服务。SPI本身是一个一般化的概念,可以应用于不同的平台中。Java平台中,一项服务定义了一组已知的接口和(abstract)类,服务提供者实现,扩展了定义在服务本身内的接...

2020-03-25 10:02:39 52

原创 配置枚举类型在Jackson中的序列化方式

枚举类型public enum Type { TYPE1(1, "Type A"), TYPE2(2, "Type 2"); private Integer id; private String name; private Type(final Integer id, final String name) { this.id = id; ...

2020-03-25 09:54:49 458

原创 nohup让程序在ssh退出后保持运行

SSH远程登录到Linux服务器,执行一个程序,在SSH退出时,该程序也将退出。这是由于SIGHUP信号在SSH退出时被发送到了我们希望保持运行的程序上,结果就是SSH退出后,先前执行的程序也随之退出。有时候我们希望在SSH退出后,让我们执行的程序继续保持运行,很显然的做法是让想要在SSH退出后继续保持运行的程序忽略SIGHUP信号。nohup命令可以实现这个功能,nohup命令让程序忽略SI...

2020-03-25 09:42:37 197

原创 避免Hive和Spark生成HDFS小文件

HDFS是为大数据设计的分布式文件系统,对大数据做了存储做了正对性的优化,但却不适合存储海量小文件。Hive 和 spark-sql是两个在常用的大数据计算分析引擎,用户直接以SQL进行大数据操作,底层的数据存储则多由HDFS提供。对小数据表的操作如果没做合适的处理则很容易导致大量的小文件在HDFS上生成,常见的一个情景是数据处理流程只有map过程,而流入map的原始数据数量较多,导致整个数据处...

2020-03-25 09:11:23 364

原创 面向切面编程AOP

面向切面编程(Aspect-Oriented Programming-AOP)以另一种对程序结构的思考方式对面向对象做了补充。AOP中模块化的核心单元为切面(Aspect),Aspect使程序的关注点(事物,日志,认证,消息发送…)模块化。基本概念切面 (Aspect)横切多个方面(类,对象)的关注点模块连接点(Join point)程序执行过程的某一点(异常处理,方法执行…)增强(...

2020-03-24 11:07:54 27

原创 SOAP协议入门

SOAP(Simple Object Access Protocol)简单对象访问协议,是一种基于XML的交换结构数据的网络通信协议,是W3C推荐标准。SOAP依赖于其他协议实现传输功能,最常见的就是HTTP,SOAP与HTTP组合被广泛应用于Web Services中,此外SMTP,JMS等协议(技术)也可以用于传输SOAP消息。SOAP由于基于XML,所以具有平台独立性,语言独立性,简单,易...

2020-03-23 15:39:36 56

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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