PyCharm与python快速开发
PyCharm与python快速开发Python语言作为“胶水语言”,简单易学,开发周期快,功能和扩展性强大,类库丰富 只依赖一门Java并不适用于所有情况,譬如快速开发一次性脚本(修复数据),通过使用Python效率更高,本篇文章旨在介绍本人快速入门Python的一些tips 注意,一些Python的基本语法在此不予介绍,推荐前往廖雪峰的博客查看,博客基于Python3.8版本 关于编译器等配置内容参考PyCharm帮助文档 从Python官网下载Python并安装,配置环境变量,安装PyCharm(这里 我们使用它作为IDE),这里略过 pip是python的包管理与安装工具,当你安装python后,pip也会随之被安装

2021-01-16鱼鱼
ELK实战(Ⅰ) 基于ELK整合分布式业务日志
ELK实战(Ⅰ) 基于ELK整合分布式业务日志大多情况下,我们可能都习惯了使用linux指令查看日志,很多时候一句简简单单的tail、grep能定位绝大多数问题 但是面临复杂的目录结构和分布式系统产生的“分布式日志文件”,如果还要我们一个一个去查日志,就会耗费很多没必要的时间 可以利用ELK这套组件快速搭建一个日志系统 注意此文仅针对可能很多情况下格式不确定的业务日志,对于某些组件日志我们有更好的可视化实践方式,可以参考此系列的其他文章 对于一个日志系统,我们要确认我们的诉求,在不同的场景下采用不同的收集方式: 是否是分布式系统需要合并多个节点的日志 如果需要,则需要用分布式组件收集并合并日志,这也是一个日志系统最基本的要求;

2020-03-14鱼鱼
Servlet线程模型与异步请求
Servlet线程模型与异步请求本篇文章主要意在整理Servlet的线程模型,帮助大家更好的理解请求在广泛使用的web容器下(基于Servlet的Tomcat服务器)的运行原理 Servlet是Java的服务端框架,可以利用Servlet来编写一个动态服务器(动态主要是区别于单纯的html构建的静态页面),主要基于Http协议 通过Servlet提供的API,我们可以轻松的处理网络请求和与其他服务建立连接(相比于基于Socket编程),并且基于Java使得它具有跨平台性、灵活性 简单的说Servlet就是一个封装了操作网络请求的API,它将Http网络请求简化为更容易处理的对象 从某种意义上讲,当我们不适用任何web框架(例如Spring mvc和Struts2)时,我们编写的每一个页面(jsp或是继承于HttpServlet的类)也都可以说是一个Servlet
![Servlet线程模型与异步请求]()
2020-03-23鱼鱼
Rocket MQ的基本应用
Rocket MQ的基本应用消息队列,常用于应用间通信 本篇文章基于RocketMQ官方文档 Topic:消息分类,依靠topic来定义消息类型 Tag:消息二级分类,可选,同个topic用不同的tag区分消息类别 Message : 泛指MQ所传送的消息体 Producer:消息生产者 Consumer:消息消费者 Name Server:有点类似于zookeeper,负责服务的注册与发现,维护Broker与Topic的映射关系 Broker:负责消息的存储与生产者消费者消息接收与分发,与Name Server建立长连接,保持心跳上传负责的topic信息 Producer:消息生产者,从Name Server获取Broker对应Topic映射关系,然后与Broker建立连接发送消息

2019-06-28鱼鱼
DDD领域下的架构模式——CQRS架构
DDD领域下的架构模式——CQRS架构//TODO
![DDD领域下的架构模式——CQRS架构]()
2021-06-24鱼鱼
杂记:Spring与Springboot的本地化配置
杂记:Spring与Springboot的本地化配置利用这篇文章巩固一下Spring框架的基础,因为发现接触到的各种Spring的项目配置杂七杂八,从xml到注解,从properties到json到yaml,他们各有千秋,没有哪一种方式可以绝对取代另一种配置,所以在这里统一介绍一下各种配置方式的内容和利弊,以便随时查看 这并不是一篇Spring框架领域的教程,只是一种技术的补足或是一种投机取巧的学习手段 原始的Spring是采用纯xml进行配置的,我从github上找了一个规范经典的SSM项目,以下是一些常用的配置,从这里就可以看出xml的基本格式: ApplicationContext-test.xml jdbc.properties

2020-03-01鱼鱼
mysql前缀索引
mysql前缀索引有时候需要索引很长的字符列,这会让索引变得大且慢 通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率 但这样也会降低索引的选择性 前面已经说过,使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本 2.1因为前缀索引无法完全等于判断,只是前缀匹配,所以可能需要扫描的所以数会增加 2.2在特殊的查询里面 select id,email from SUser where email='zhangssxyz@xxx.com'; 前缀索引需要回到 id 索引再查一下,因为系统并不确定前缀索引的定义是否截断了完整信息 select count(distinct left(email,4))as L4,

2020-05-15yangwcn
Elasticsearch 入门
Elasticsearch 入门(注:本篇文章基于Elasticsearch7.7.0版本,由于版本的差异性造成的内容不一致我会尽量在文中标出,但是) Elasticsearch是基于Lucene扩展的全文搜索引擎,当我们有对大数据量的处理和搜索时,全文搜索引擎是最佳的选择,同时他提供了高扩展性、高可用性、RestFul风格的API和友好的分布式部署配置,在此我们不予详述 我们日常使用的数据库索引是数据库一种编排数据(逻辑上)从而加快查询的手段,我们暂且将这种索引方式称为正排索引,他通过对待搜索字符寻址从而找到对应的数据 但是这种索引方式对于模糊匹配会出现"断档"现象(模糊符号后的片段无法走索引查找),并且对于海量数据无论在存储上还是在查找上都略显吃力,于是在Elasticsearch中引入了倒排索引来加快查询速度

2020-03-06鱼鱼
排坑指南-异步操作HttpServletRequest丢失Cookie
排坑指南-异步操作HttpServletRequest丢失Cookie遇到了一个很奇怪的bug:请求鉴权失败,因为通过Request对象获取到的Cookie中没有数据 经过debug调用request.getCookies()方法返回了null值,但是header属性的cookie却能拿到用户的有效cookie(request.getHeader("cookie")),其中缘由,且慢慢道来 我们可以在web项目中通过Request对象很方便的获取Cookie对象: 但其内部实现其实有一层缓存逻辑,从名为"cookie"的请求头中读取并处理数据转为Cookie对象并不是个省时事,在org.apache.catalina.connector.Request类中可以看到如下代码实现:

2020-11-11鱼鱼
用Quartz 写定时任务
用Quartz 写定时任务Quartz是OpenSymphony开源组织在Job scheduling领域的一个开源项目,是一款清新友好的任务调度框架 Quartz两大基本功能是job和SimpleTrigger(作业和触发器) 核心的是Scheduler类 有以下几个相关类: Scheduler:定时任务调度; Job:任务类需要实现的接口; JobDetail:Job的实例,被Scheduler执行的是JobDetail,而不是Job; Trigger:触发Job的执行; JobBuilder:定义和创建JobDetail实例的接口; TriggerBuilder:定义和创建Trigger实例的接口;

2019-06-18鱼鱼
造轮子2 灵活运用反射
造轮子2 灵活运用反射//TODO
![造轮子2 灵活运用反射]()
2019-05-25鱼鱼
分布式系统一致性的分类
分布式系统一致性的分类在分布式系统中的CAP理论中有C(一致性),大郅表示分布式系统中节点状态或数据具有一致的特性 但一致性有着不同的分类,例如常见的用于取代CAP理论的BASE中的E,最终一致性,不同于强一致性,他强调着事务最终状态趋于一致,但中间态可能不一致,利用此篇文章总结一下分布式系统的一致性分类 根据实际系统的要求,分布式系统的一致性可以大致分为四类: 严格一致性 强一致性(线性一致/原子一致) 顺序一致性 弱一致性(最终一致性) 一个理想概念上的一致性,节点间数据完全一致,对外可表现为单个节点 由于网络延迟和通信等因素的存在,现实中这种一致性不可能存在 强一致性要求在全局时钟相同的条件下,对任何节点的读都相同且等于最后一次写成功的数据,这也就意味着仅仅在所有节点同步到数据后才会被标记为同步成功

2021-03-13鱼鱼