- 博客(73)
- 收藏
- 关注
原创 SpringBoot 下使用 @Import、ImportSelector 实现自定义规则 Bean 注册
springboot 下使用 @Import 、ImportSelector 实现自己的包扫描器,不必依赖于 Spring 的 @Service @Component 等注解
2020-07-09 17:08:11
1201
原创 MySQL 搭建主从高可用
如何搭建 MySQL 高可用并对解决普通主从复制延迟不理想提供了解决方案,最后借助 MHA 实现了主从的自动切换
2020-06-15 11:15:20
2914
1
原创 JDK 11 部分亮点特性
Java 11 相较于现在使用面最大的 java8 有一定的功能和性能提示,可能得话,可以把工程迁移到 java 11 中
2020-06-04 17:52:17
630
原创 Python 进阶学习笔记之十二:数据压缩与归档
python 本身对场景的数据压缩算法提供支持,包括 zip、bz2等,也对文件压缩算法 tar 提供了单独的模块实现。
2019-10-23 14:49:30
691
原创 Python 进阶学习笔记之十一:日志支持
使用标准库提提供的 logging API 最主要的好处是,所有的 Python 模块都可能参与日志输出,包括你的日志消息和第三方模块的日志消息。
2019-10-21 15:57:15
284
原创 Python 进阶学习笔记之十:一般加密支持
本文主要介绍使用 Python 模块 hashlib 来实现常见的 Hash 加密算法实现,并介绍类基于 hashlib 实现的 hmac。以及安全的随机串实现模块 secrets
2019-10-16 17:29:40
359
原创 Python 进阶学习笔记之九:IO 编程
IO 操作是所有高级编程语言中的重点,本文章详细介绍来 Python 中关于常见 IO 操作的相关接口,包括基本的文件读写、StringIO/BytesIO、目录操作等
2019-10-16 14:37:39
407
原创 快速应用 Linux VI 编辑器
Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本 Linux 的标配。虽然 vi 大多数功能都是依靠键盘输入来完成,但是一旦你熟悉后,会发现 vi 的功能和效率是其他图形界面编辑器无法比拟的。你可以使用 vi 编辑器编辑现有的文件,也可以创建一个新文件,还能以只读模式打开文本文件。进入 vi 编辑器可以通过以下方式进入 vi 编辑器:命令 描述 vi fil...
2019-10-12 16:21:05
302
原创 Python 进阶学习笔记之八:面向对象高级编程
Python 支持的面向对象有其独有的一些特点,除了常规的继承和多态特性外,其支持动态绑定属性的特性也很有用处。
2019-10-10 14:11:31
451
原创 Python 进阶学习笔记之七:互联网支持
本文主要介绍常见的互联网交互实现,包括常见互联网数据编码和JSON数据解析,mail 发送,http 请求实现等本文基于 python 3.7 撰写
2019-09-29 14:48:42
283
原创 Python 基础学习笔记之:切片、迭代、列表生成式、生成器、迭代器
Python中,对序列的操作可以说是最最常见的操作了,熟悉相应序列(可迭代对象)的操作,能大大加快编码的效率
2019-09-25 15:11:29
349
原创 Python 基础学习笔记之:函数的参数
Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
2019-09-24 18:25:01
197
原创 Python 进阶学习笔记之六:多线程编程
基于 Python3 threading 的多线程编程实现,涉及 threading 模块中 Lock、RLock、Condition、Semaphore、Event、Barrier的实际应用代码示例
2019-09-10 11:20:52
458
原创 Python 进阶学习笔记之五:异步 IO
Python 进阶相关知识体系。本篇文章专门介绍了 3.7 版本 异步IO 模块 asyncio 中主要功能的使用方式
2019-09-04 14:25:32
720
1
原创 Springboot 2.x + Mybatis 基本实现以及多数据源实现
springboot 2.x + mybatis 基本实现,以及多数据源下的注意要点
2019-07-18 11:44:48
635
原创 Mac 安装配置 pyqt5 5.12
安装环境Mac Python3需要安装的QT SIP PyQt5开始安装安装QT▶ brew install qt==> Downloading https://homebrew.bintray.com/bottles/qt-5.12.3.mojave.bottle.tar.gzAlready downloaded: /Users/leon/Library/C...
2019-05-28 16:20:07
7632
转载 SpringBoot JVM参数调优
各种参数参数名称含义默认值说明-Xms初始堆大小物理内存的1/64(<1GB)默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制.-Xmx最大堆大小物理内存的1/4(<1GB)默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms...
2019-05-16 16:15:51
13921
1
原创 使用Java的InvocationHandler实现动态代理
java.lang.reflect API 提供了一个叫Proxy的类和一个叫InvocationHandler,下面我们使用这两个API来实现Java的动态代理。Proxy Class in Javajava.lang.reflect.Proxy 类中有个静态方法newProxyInstance被用来创建动态代理类,这个方法的定义如下:public static Object newPr...
2019-05-15 18:08:11
1677
原创 Scrapy 之中间件(Middleware)
Scrapy 结构概述:一、下载器中间件(Downloader Middleware)如上图标号4、5处所示,下载器中间件用于处理scrapy的request和response的钩子框架,如在request中设置代理ip,header等,检测response的HTTP响应码等。scrapy已经自带来一堆下载器中间件。{ 'scrapy.downloadermiddlewares....
2019-05-10 18:11:36
7132
转载 数据库之分库分表-垂直?水平?
一、数据库瓶颈↑不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网络IO...
2019-05-08 12:53:05
655
原创 Scrapy: xpath与css选择器
CSS 选择器表达式说明*所有节点#ElementIdID为ElementId的节点.clsNameclass为clsName的节点li ali元素下所有a元素ul + pul下第一个P元素div#eId > ulid为eId的元素下所有ul元素div.clsNameclsss为clsName的div元素ul ~ ...
2019-04-23 15:56:08
563
原创 常用的 Maven 命令
maven 命令除了常用的几个,大部分经常记不住,整理一下,方便查询。maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下。-D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试;-P 指定 Profile 配置,可以用于区分环境;-e 显示maven运行出错的信息;-o 离线执行命令,即不去远程仓库更新包;...
2019-04-23 14:52:29
185
转载 MySQL 索引B+树原理,以及建索引的几大原则
一、Mysql中的索引在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引。Archive 引擎直到 MySQL 5.1 才支持索引,而且只支持索引单个 AUTO_...
2019-04-19 16:34:13
725
原创 Maven项目使用本地Jar资源
项目开发过程中,可能会遇到合作方提供的非公开jar包资源,Maven项目使用时就得先处理一下,不然maven可不知道如何去找不在库中的Jar文件。本文列出列三种方式,大家酌情使用。1. 将jar包安装到本地repository这种方法,自己开发没什么问题,如果团队开发,所有人都需要执行一次,有版本变化,所有人又得执行一次,比较不推荐mvn install:install-file -Dfi...
2019-04-11 11:43:57
688
原创 springboot 自定义starter:带条件启动器
前一篇(点这里)文章中介绍了简单的starter的基本组成,本篇文章就介绍一下带约束的starter如何搞。使用@ConditionalOnMissingBean在上篇文章中使用的自动配置bean修改后如下:@Configurationpublic class LogCollectorAutoConfig { @Bean(name = "logCollector") @C...
2019-04-03 15:06:32
836
原创 定制自己的Springboot Starter
在学习Spring Boot的过程中,接触最多的就是starter。使用者可以把starter当成是一种服务——使得使用某个功能时不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入bean。而自动装配就是Springboot最大的特性。举个例子,spring-boot-starter-jdbc这个starter...
2019-04-02 20:14:43
586
原创 spring-boot 实现单次执行程序
spring-boot做为spring的集大成框架,大部分时候作为WEB服务被集成使用,但某些情况下,需要手动执行一些逻辑的情况下,单次运行的类似脚本的程序也是很有用的。
2019-03-19 19:42:41
2932
原创 Mongo操作脚本笔记
// =================== 批量更新,更新数组中对象 =================== var cursor = db.language.find({});cursor.forEach(function(x){ var subSet = db.subscription.find({}); subSet.forEach(function(s...
2019-02-21 14:04:28
590
原创 MongoDB数据导入导出
导出数据:1.导出为json格式文件:mongoexport -d &amp;amp;lt;数据库名称&amp;amp;gt; -c &amp;amp;lt;collection名称&amp;amp;gt; -o &amp;amp;lt;输出文件名称&amp;amp;gt;mongoexport -u user -p pwd! -d dbName -c users -o /data/date.json2.
2018-12-27 17:09:29
3517
原创 zookeeper集群搭建
前言zookeeper是什么就不用介绍了,很多分布式集群组件都使用zookeeper来实现集群化,它本身也能帮助我们实现一些诸如动态配置、分布式锁、消息推送等功能,这篇笔记简单记录一下一个简单的zookeeper集群如何搭建。zookeeper本身可以以standalone模式(单节点状态)安装运行,不过它的长处在于通过分布式zookeeper集群(一个leader,多个follower),基...
2018-10-16 16:35:44
329
原创 为什么在分布式环境下使用Redis
阅读目录1、为什么使用 Redis性能:并发:使用 Redis 的常见问题2、单线程的 Redis 为什么这么快3、Redis 的数据类型及使用场景4、Redis 的过期策略和内存淘汰机制5、Redis 和数据库双写一致性问题6、如何应对缓存穿透和缓存雪崩问题缓存穿透解决方案缓存雪崩解决方案7、如何解决 Redis 的并发竞争 Key 问题8、总结1、为什么使用 Redis在项目中使用 Red...
2018-10-09 11:58:59
490
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人