![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程语言
文章平均质量分 50
穷目楼
白日依山尽,黄河入海流。欲穷千里目,更上一层楼。
展开
-
Python Hash操作-MD5-SHA-HMAC
Python标准库提供了计算数据Hash的功能,支持许多不同的算法,常见的MD5, SHA1, SHA256, HMAC均在其中。MD5, SHA1, SHA256在hashlib模块中,HMAC在hmac模块中,但均有一样的接口。通用的使用模式为:构造所需算法的Hash对象通过update方法填入消息数据调用digest或hexdigest获取结果两个模块中均存在new方法用于创建Hash对象,hashlib中还存在和算法同名的构造方法如md5,sha1可直接创建Hash对象,直接通过算法原创 2021-08-16 16:28:34 · 523 阅读 · 0 评论 -
Python 日志打印
核心概念Python标准库自带日志模块logging,logging中涉及到4个核心组件,这些组件构建了logging体系。Logger: 应用程序直接使用的接口对象,通过logger操作完成表达日志输出要求.Handler: 交付由Logger创建的日志记录(logRecord)到其对应的目的地,比如控制台,文件,网络。Filter:对日志记录(logRecord)进行更细粒度过滤,控制是否应该输出对应的日志记录Formatter: 控制日志输出的格式日志有重要性区分,对应不同的应用场景,原创 2021-08-06 17:31:05 · 849 阅读 · 1 评论 -
Python全局变量不被共享的原因
习惯了其它语言开发方式,可能会对Python中全局变量不被共享的感到困惑。“Python中全局变量不被共享”其实是不存在的,造成这个“感觉”的原因是没意识到多进程环境的存在。在Web领域使用较多的Java平台上,一个Web站点启动后可能就只有一个进程,程序环境很可能是一个进程+多个线程,此时全局变量的变更很自然被程序里的所有代码看到。来到CPython世界,由于GIL(全局解释器锁)的存在,无法充分利用CPU的利用效率,生产部署的时候会采用多进程的机制,也就是启动多个CPython来充分使用硬件资源,这原创 2021-07-26 18:09:41 · 326 阅读 · 0 评论 -
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 · 202 阅读 · 0 评论 -
Python的C扩展源码编译不太易
Python生态的优势之一轮子多,轮子分两类,一类是完全用Python本身写的,另一类是结合或者说使用了C/C++扩展的,由于Python的跨平台,前者安装无忧,后者如果能用到包管理自动搞定也无忧,但是如果没有包管理器,也找不到预编译好的版本,只有源码,那么就可能有点忧愁了,这种情况在Windows平台上比较常见,一些小众的包只有源码,没有预编译的程序。忧愁一:32位还是64位Python本身现在也有32位和64位之分,如果操作系统是32位,那就没问题了,因为Python肯定是32位,但如果操作系统是6原创 2020-05-08 17:56:46 · 437 阅读 · 0 评论 -
Spring限定性依赖注入-@Primary @Qualifier
Spring自动匹配Bean注入的机制在有多个可选的Bean存在时是不可用的,需要进一步进行相关配置明确消除多个可选Bean存在的歧义性。基于Java注解的注入可通过@Primary 或@Qualify完成。@Primary注解符合@Autowired连接的候选bean有多个,如果依赖注入只需要一个bean, 在只有其中一个bean声明了@Primary的情况下,该bean将会被注入。@Co...原创 2020-04-30 14:45:55 · 444 阅读 · 0 评论 -
Java I/0流的概念
流(stream)代表了来自某个输入源,或者将要流向某个输出源的一系列数据。按流向,可以分为输入流和输出流。输入流(input stream)通过输入流,数据流入程序,程序读取输入流中的数据。输出流(output stream)通过输出流,数据流出程序,程序写输出流中的数据到数据的接收端。按对数据的处理方式,在比较抽象的层次上可以分为字节流(byte stream)和字符流(...原创 2020-04-28 15:02:25 · 255 阅读 · 0 评论 -
Java Servlet环境中获取完整的客户端请求地址
客户端请求服务的地址中除了基本的协议,主机,端口信息外,还可能包含查询串,若想获取完整的请求地址,则需要考虑到存在查询串的可能性。一个获取完整客户端请求地址的方法:public static String getFullURL(HttpServletRequest request) { StringBuffer requestURL = request.getRequestURL();...原创 2020-04-24 10:27:24 · 387 阅读 · 0 评论 -
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 · 741 阅读 · 0 评论 -
RestTemplate访问RESTful服务
Spring本身提供了访问RESTFul服务的的工具RestTemplate,在Spring Android项目中也提供了该工具。正如其名所示,其概念上和JdbcTemplate, JmsTemplate类似,虽然RestTemplate看似主要在于和遵循RESTful架构的服务交互,但是其实RestTemplate可以作为一个通用的http访问工具使用。RestTemplate 的底层默认使用...原创 2020-03-31 09:55:48 · 169 阅读 · 0 评论 -
Spring Security的Servlet集成
Spring Security 对 Servlet API 提供了一些集成支持。Servlet 2.5+获取当前用户的username,对其进行null检查可以得知用户是否通过认证。HttpServletRequest.getRemoteUser()等价于SecurityContextHolder.getContext().getAuthentication().getName()...原创 2020-03-30 16:39:18 · 332 阅读 · 0 评论 -
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 · 692 阅读 · 0 评论 -
服务提供者接口(SPI)
SPI的概念在一些文章里经常能遇见,SPI(Service Provider Interface)顾名思义即服务提供者接口,其是一组将被服务提供方(第三方)实现,扩展的应用程序接口(API),服务提供方通过实现SPI实现具体服务。SPI本身是一个一般化的概念,可以应用于不同的平台中。Java平台中,一项服务定义了一组已知的接口和(abstract)类,服务提供者实现,扩展了定义在服务本身内的接...原创 2020-03-25 10:02:39 · 679 阅读 · 0 评论 -
配置枚举类型在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 · 3035 阅读 · 0 评论 -
面向切面编程AOP
面向切面编程(Aspect-Oriented Programming-AOP)以另一种对程序结构的思考方式对面向对象做了补充。AOP中模块化的核心单元为切面(Aspect),Aspect使程序的关注点(事物,日志,认证,消息发送…)模块化。基本概念切面 (Aspect)横切多个方面(类,对象)的关注点模块连接点(Join point)程序执行过程的某一点(异常处理,方法执行…)增强(...原创 2020-03-24 11:07:54 · 86 阅读 · 0 评论 -
利用Axis访问rpc/encorded风格的Web Service
Soap 基于的Web Service在演化,实现其的技术栈也在随之变化。Java领域出现了许多了Web Service相关的技术,从早期的Apache Axis,xfire到今天的Apache Axis2, Apache CXF, Metro,Spring WS。Java对Soap Web Service在早期提出了JAX-RPC的模型,今天JAX-RPC则被JAX-WS代替,这也体现了业界正在...原创 2020-03-23 10:16:13 · 199 阅读 · 0 评论 -
同时使用Spring Data Jpa与Spring Data MongoDB
Spring Data Jpa 提供了Jpa存储的支持,而Spring data MongoDB则提供了MongoDB的抽象,有时候会有跨结构的存储需要,需要同时使用这两种存储技术。当同时使用两者的时候,由于其提供的Repository都是基于Spring Data Common的,所以两种存储方案的Repository声明可能很像,都是继承自PagingAndSortingRepository...原创 2020-03-21 22:15:12 · 1229 阅读 · 1 评论 -
Java由于生成随机内容被阻塞
VM环境下的Linux平台上,Java程序启动速度可能会很慢,表现为启动过程中日志突然停止输出,暂停执行。根据具体的环境,可能稍等会儿后,一切恢复正常,日志开始继续输出,程序继续执行,也可能等待很长的时间也没有结果。导致该问题的原因是Java程序对Linux平台/dev/random的调用,该调用为阻塞调用,所以如果没有足够的entropy让该调用返回,Java程序将会一直wait。解决方法:...原创 2020-03-21 22:02:28 · 209 阅读 · 0 评论 -
Java Servlet环境中获取客户端IP
由于用户可能采用了代理,或者服务器处于负载均衡的环境下,只调用HttpServletRequest.getRemoteAddr()得到的地址不一定是想要的数据。某些代理会在HTTP请求中加入一些头信息,通过这些头信息可以获取到客户端原始的IP地址。一种考虑了有代理存在的情况的获取客户端IP的方法:private static final String[] HEADERS_TO_TRY = { ...原创 2020-03-21 21:36:50 · 516 阅读 · 0 评论 -
Python 学习简册
Python是一门诞生于20世纪90年代初的计算机语言,经过多年的发展,已经从"脚本"演进为了可用于运维程序,视窗软件,网络服务,科学计算等多方面的通用型语言。在Python的发展过程中,一些新的功能被不断加入,同时一些看起来一样的功能,背后的实现机制也有了变化,此外就语言层面来说也随着时间的推移存在一些不同。这些变化从近些年从python2到python3的迁移过程中也能看到。这份文档是在查看...原创 2020-03-20 22:59:50 · 148 阅读 · 0 评论 -
Python的迭代器与生成器
for的本质容器对象都可以直接用于for语句迭代for element in [1, 2, 3]: print(element)for element in (1, 2, 3): print(element)for key in {'one':1, 'two':2}: print(key)for char in "123": print(char)for...原创 2020-03-19 09:44:12 · 111 阅读 · 0 评论 -
Python的编码风格与文档字符串
代码风格Python社区有自己的代码风格建议,遵守它可以使代码更加易读易懂。用四个空格做缩减,不用制表符每行不超过79个字符函数和类之间,以及大块的代码之间用空行隔开如果可能,把注释放于独立的行使用文档字符串操作符周围,以及逗号之后使用空格,但是不要在直接在括号两边使用空格 a = f(1, 2) + g(3, 4)类和函数的命名风格一直保持一致,惯例是,驼峰方式 CamelCa...原创 2020-03-18 09:38:01 · 216 阅读 · 0 评论 -
Python读写文件
文件读写open()函数用于创建文件对象,最常使用两个参数: flename, modeopen(filename, mode)f = open('workfile', 'w') #以写模式打开workfile文件filename为文件名字符串mode为文件的使用模式字符串mode 为 ‘r’ 表示只读, ‘w’ 表示只写,如果文件已存在会被清空, ‘a’ 表示追加写, 数...原创 2020-03-17 17:16:09 · 179 阅读 · 0 评论 -
用zt-zip Java库进行zip文件处理
Java 标准库本身自带java.util.zip包,利用该包可以解决zip文件的处理问题。但是该包提供的功能相对底层,想要实现zip文件的处理,需要写一 些代码,该包并没有封装API到调用一个方法就实现了压缩或者解压功能的层次。zt-zip库提供了这种上层的封装,只需要调用一个方法,可以很方便的实 现zip压缩与解压,zt-zip在底层也利用了java.util.zip包。maven中央仓库里...原创 2020-03-16 11:27:42 · 2452 阅读 · 3 评论 -
使用Apache Commons IO实现文件系统监听服务
Apache Commos IO中的org.apache.commons.io.monitor包提供了文件系统监听的功能。以FileAlterationObserver为核心,配合FileAlterationListener,FileAlterationMonitor,可以实现对文件系统的事件监听。创建事件监听的过程大体如下:创建FileAlterationListener实现对文件与目录的...原创 2020-03-13 11:40:51 · 1641 阅读 · 0 评论 -
Python字符串的格式化方法
Python字符串格式化有多种方法。完全手工构造配合使用切片,连接,以及一些str的方法,完全手工的方式构造字符串。常用的字符串排版方法:str.rjust(width[, fillchar]) 返回用空格或指定字符右对齐str到指定宽度的新strstr.ljust(width[, fillchar]) 返回用空格左对齐str到指定宽度的新strstr.center(width[, ...原创 2020-03-12 22:52:45 · 197 阅读 · 0 评论 -
Python异常处理
异常处理try…except语句用于异常处理。>>> while True:... try:... x = int(input("Please enter a number: "))... break... except ValueError:... print("Oops! That was no ...原创 2020-03-09 20:36:05 · 156 阅读 · 0 评论 -
Python面向对象编程
Python中的类和其他部分一样,也是动态的,类被动态创建,创建后还可以修改。Python中变量的赋值和传递,操作的总是对象的引用。一个对象可以绑定多个名字,多个变量可以指向同一个对象。Python的对象更加强调鸭子类型,特定情况下看起来像鸭子,就是鸭子。命名空间和作用域命名空间是名字到对象的映射。目前大部分命名空间在python中都是以字典的形式存在的。命名空间在不同的时刻被创建,同时...原创 2020-03-08 15:06:24 · 283 阅读 · 0 评论 -
Python的模块系统
Python通过模块,划分不同的逻辑到不同的文件,便于复用即维护管理。一个模块就是一个文件,模块名即python文件名去除.py后缀。模块内部的全局变量__name__可用获取模块名。模块的文件中包含Python对象的定义,以及可执行的语句,可执行语句可用于初始化模块,模块中的内容在首次被导入时执行一次。每个模块都有自己的私有的符合表,所以不同模块之间同名变量互不影响。导入模块fibo的...原创 2020-03-07 14:31:41 · 265 阅读 · 0 评论 -
Python内建的常用数据结构
列表列表除了支持索引访问,切片外,还有自己的方法>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']>>> fruits.count('apple')2>>> fruits.count('tangerine')0>>&...原创 2020-03-06 14:12:07 · 159 阅读 · 0 评论 -
Python的函数
函数定义通过def function_name(parameters...): pass的结构定义函数。每次函数被执行时,都会有一个新的符号表被创建用于存储函数的本地变量,所有函数内部的赋值,包括调用函数时候传入的实参都会被存于符号表中。查找变量时,先查找本地符号表,然后是外围的符合表,然后是全局符合表,最后是内建符号表。所有全局变量如果不使用global关键字,则不可能在函...原创 2020-03-05 18:21:12 · 522 阅读 · 0 评论 -
shell通配符的工作原理
通配符在shell中的使用,让你可以用模式匹配目录,文件名,不用挨个目录,文件指定具体的名字。三个通配符常用通配符:*?[]把这些通配符结合"ls"使用时可以对文件,目录进行匹配,看起来像是"ls"理解通配符后输出了相应的文件,目录。果真是这样吗?肯定不是呀!,标题都叫shell通配符,没叫ls的通配符使用方式,这是有原因的......瞧,...原创 2019-09-04 21:28:51 · 197 阅读 · 0 评论 -
让日常操作轻松点的shell通配符-范围与模式匹配
通配符在shell中的使用,让你可以用模式匹配目录,文件名,不用挨个目录,文件指定具体的名字。通配符[]代表了一定范围内的字符,范围由其中中括号中的内容决定。[abc]表示a或b或c[a-z]表示任意一个小写字母[A-Z]表示任意一个大写字母[0-9]表示任意一个小写字母[^x]除x之外的任意一个字符[^y]除y之外的任意一个字符...原创 2019-09-03 22:47:56 · 492 阅读 · 0 评论 -
让日常操作轻松点的shell通配符-单字符匹配
通配符在shell中的使用,让你可以用模式匹配目录,文件名,不用挨个目录,文件指定具体的名字。通配符?代表了任意一个字符。常用的“ls”就可直接用来测试通配符。...原创 2019-08-31 08:34:34 · 453 阅读 · 0 评论 -
让日常操作轻松点的shell通配符-任意字符匹配
通配符在shell中的使用,让你可以用模式匹配目录,文件名,不用挨个目录,文件指定具体的名字通配符*代表了零个或多个任意字符。常用的“ls”就可直接用来测试通配符。...原创 2019-08-30 23:43:22 · 1400 阅读 · 0 评论 -
天天用Bash?看看这几个快捷键是否知道(二)
Bash(Bourne-again shell)作为大部分Linux系统的默认shell,是平常在使用linux时最容易碰到的shell。既然经常与bash打交道,看看下面的这些小技巧是否全都知道? CTRL + D 删除光标后的字符/退出当前会话 ALT + D 删除光标后的词 CTRL + F...原创 2019-08-27 20:20:34 · 176 阅读 · 0 评论 -
天天用Bash?看看这几个快捷键是否知道(一)
Bash(Bourne-again shell)作为大部分Linux系统的默认shell,是平常在使用linux时最容易碰到的shell。既然经常与bash打交道,看看下面的这些小技巧是否全都知道? TAB 补全当前文本 TAB TAB 实现补全候选项 CTRL + K ...原创 2019-08-26 21:46:08 · 150 阅读 · 0 评论 -
PL/SQL 的包
PL/SQL包是一组相关的过程,函数,类型,游标等元素的组织单元,包存储于数据库中。包提升了PL/SQL的代码组织逻辑,使程序的组织更有逻辑性,也使PL/SQL的封装性更强,对外暴露接口,隐藏具体的实现细节,同时由于包在第一次使用时就被加载入内存,包级别的数据就是一个会话(SESSION)级数据,所以对程序性能也有提升,此外由于不同程序组件直接看到的只是彼此暴露的接口,所以如果修改了包的实现逻辑,依原创 2017-02-24 10:16:23 · 595 阅读 · 0 评论 -
PL/SQL 游标
游标是一个指向存储有SELECT或DML语句处理信息的私有SQL区域的指针。在使用SQL时数据库在大部分时候自动维护游标,但是也可以人为的操作游标。显式的定义游标通过在DECLARE区域使用CURSOR IS声明游标,和表与视图一样,可以基于游标声明记录类型的变量。DECLARE CURSOR cursor_name IS SELECT *原创 2017-02-23 10:01:25 · 334 阅读 · 0 评论 -
PL/SQL 集合类型
PL/SQL支持集合的概念,在PL/SQL中集合就是一维数组,其可存储一个或多个元素,或者直接为空,通过索引可以访问这些元素,集合里的元素必须是同样的类型。集合类型属于复合类型,除了作为数据结构本身的需要,集合类型的使用有益于提高程序的效率。集合类型的类别PL/SQL共有三类集合类型:关联数组, 嵌套表, 可变长数组。关联数组关联数组是PL/SQL最早提供的集合类型,索引可以数值也可以是字符串,只能原创 2017-02-21 16:32:18 · 813 阅读 · 0 评论