首页
学习
活动
专区
工具
TVP
发布

我是攻城师

专栏作者
492
文章
945767
阅读量
119
订阅数
正确的使用python调用shell的姿势
python是一门简洁灵活的语言,也是一门胶水语言,能与很多其他的编程语言进行交互,虽然性能差一点,但易用,入门和上手都比较简单,所以一直以来都被使用广泛。
我是攻城师
2020-04-22
7.4K0
如何优化高并发TCP链接中产生的大量的TIME_WAIT的状态
线上有几台QPS每秒几万请求的服务器,大致访问链路如下:client -> nginx -> web 服务器,由于每台机器上混布了多个web服务并通过nginx反向代理统一分发请求,在服务升级的时候经常出现端口被占用的情况,排查问题时,发现系统过存在几万多个 time_wait状态。统计命令如下:
我是攻城师
2020-02-25
22.1K3
关于zookeeper写入数据超过1M大小的踩坑记
某天晚上集群的一个任务提交一直失败,经过排查日志,发现是zk客户端写入的数据包过大,导致报错。我们来看下,这中间发生了什么。
我是攻城师
2019-09-30
12.6K1
深入理解jar包冲突的本质
上篇文章 记一次log4j不打印日志的踩坑记 介绍了遇到的log4j踩坑经历和解决方法,这篇文章我们重点来学习和了解下有关Java中日志组件的内容,在这之前,其实在我的头脑里,并没有形成系统的日志框架知识,原因其实是一直没有重视过这块,之前都是各种拷贝改改能跑就行,并不理解相关的架构和原理,这次趁着这个机会正好来系统了解一下,除了要系统的理解日志框架大多数知识外,我们还要学习一个非常关键的知识,就是关于Java默认的类加载器加载jar包的顺序问题,不夸张的说,只有理解了这个,才能搞明白jar冲突问题发生的本质。
我是攻城师
2019-09-25
2.1K0
记一次log4j不打印日志的踩坑记
前几天一个跑有java应用的生产集群(200多台物理机)升级了一个版本,重启后发现约有50台机器日志不能正常输出,但其程序却能正常的运行,在生产环境中,日志是非常重要的一个监控手段,如果没有日志输出,无疑是非常危险的。
我是攻城师
2019-09-25
9.8K0
优秀攻城师必知的正则表达式语法
最近公司的一个项目,大量用到了正则来处理文本,以前对正则使用仅限于小打小闹,用的也是一知半解,经过本次的深入使用,发现正则表达式真的是每一位开发者都需要具备的一个基础技能,处理文本的功能异常强大。今天我们就来系统的学习一下它。
我是攻城师
2019-08-05
1.2K0
如何动手撸一个LRU缓存
上篇文章介绍了,如何动手实现一个LFU缓存,今天我们来学习下如何动手实现一个LRU缓存,在这之前,我们还是先回顾下关于缓存置换算法的三种策略:
我是攻城师
2019-07-31
5900
如何动手撸一个简单的LFU缓存
关于第一种FIFO策略的实现,比较简单,可采用固定长度的数组和链表来处理,这里就不重点说了。今天我们的重点是LFU缓存的实现。
我是攻城师
2019-07-30
1.1K0
在Java里面如何解决进退两难的jar包冲突问题?
es api组件依赖guava18.0,spark项目由于业务需要写入es所以需要依赖es ,但spark项目的环境又需要依赖guava14.0,如果换成高版本可能会报错,这个决定了你不能都使用统一的低版本或者高版本来规避此问题,因此必须面对现实。
我是攻城师
2019-07-27
3K0
Java基本类型的内存分配在栈还是堆
我们都知道在Java里面new出来的对象都是在堆上分配空间存储的,但是针对基本类型却有所区别,基本类型可以分配在栈上,也可以分配在堆上,这是为什么?
我是攻城师
2019-07-24
2.5K0
什么是缓存置换算法?
前面的文章已经介绍了什么是操作系统的虚拟内存,与本文要介绍的缓存置换算法息息相关,如果还没有看的朋友,建议先读一下上篇文章,链接是:什么是操作系统的虚拟内存?
我是攻城师
2019-07-19
1.6K0
什么是操作系统的虚拟内存?
而虚拟内存归属于操作系统,是操作系统里面非常重要的一个概念,操作系统的主要作用有两个:
我是攻城师
2019-07-17
3.2K0
复盘一个Elasticsearch排序问题的剖析
直接从异常上看,可以得到是因为mapping里面不存在排序字段的时候,而抛出的异常,正常的情况,如果某个索引不存在并且还去查询该索引,我们可以通过对索引名字后面加*通配,来避免查询报错,如下:
我是攻城师
2019-07-17
2.5K0
Java反射从放弃到入门
Java反射特性提供了在运行时可以动态访问和修改类和实例内部的状态的功能。反射是Java语言里面一个高级的话题之一,使用反射我们可以在运行时轻松的内省一个类,接口以及枚举,可以获取他们的结构,方法和字段信息,即使在编译期间没法访问。最后我们也可以通过反射来实例化一个对象,调用对象的方法和修改字段的值等。
我是攻城师
2019-07-12
4650
5分钟轻松理解二叉树的深度遍历策略
我们知道普通的线性数据结构如链表,数组等,遍历方式单一,都是从头到尾遍历就行,但树这种数据结构却不一样,我们从一个节点出发,下一个节点却有可能遇到多个分支路径,所以为了遍历树的全部节点,我们需要借助一个临时容器,通常是栈这种数据结构,来存储当遇到多个分叉路径时的,存暂时没走的其他路径,等走过的路径遍历完之后,再继续返回到原来没走的路径进行遍历,这一点不论在递归中的遍历还是迭代中的遍历中其实都是一样的,只不过递归方法的栈是隐式的,而我们自己迭代遍历的栈需要显式的声明。
我是攻城师
2019-07-08
9150
当高并发遇到限流算法
降级是当服务出现问题或者影响到核心流程时的性能时,需要暂时屏蔽掉,等高峰期过去或者问题解决后再打开。
我是攻城师
2019-07-08
1.1K0
Java反射是什么
Java的反射特性是一项非常强大和有用的功能,它使得我们可以轻松的在运行时观察到类实例的内部状态,并且可以动态的操作实例,从而为Java语言提供更多更灵活的想象空间。随便举几个例子:使用反射可以动态的映射Java对象属性到Json文件属性的操作,这一点无论在FastJson,还是GSON或者是jackson上都体现的淋漓尽致。此外使用反射可以轻松的用在JDBC中完成Java Bean和数据库表的动态适配组装,如我们熟知的hibnate,jpa,等持久化框架也都是利用了这种特性,最后无论是动态代理的AOP,还是OSGI的动态加载都离不开反射的辅助,由此可见反射的强大之处。
我是攻城师
2019-07-08
8170
如何在spark里面使用窗口函数
在大数据分析中,窗口函数最常见的应用场景就是对数据进行分组后,求组内数据topN的需求,如果没有窗口函数,实现这样一个需求还是比较复杂的,不过现在大多数标准SQL中都支持这样的功能,今天我们就来学习下如何在spark sql使用窗口函数来完成一个分组求TopN的需求。
我是攻城师
2019-06-25
4K0
如何通过Java反射获取泛型类型信息
关于Java泛型,很多人都有一个误解,认为Java代码在编译时会擦除泛型的类型,从而在运行时导致没法访问其类型,这其实并不完全正确,因为有一部分泛型信息是可以在运行时动态获取的,这部分信息基本能够满足我们日常开发中的大多数场景,本篇文章我们就来了解相关的知识。
我是攻城师
2019-06-17
8.8K0
Flink1.8源码编译安装
这里我们要介绍的是源码编译的方式,我们需要直接从github上下载最新的relese1.8版本源码或者通过git clone命令来拉取,如下:
我是攻城师
2019-06-17
2.5K0
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
热点技术征文第五期
新风口Sora来袭,普通人该如何把握机会?
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档