首页
专栏 icon
Java各版本特性 Kubernetes in Action笔记
链接 icon
国内常用镜像地址 在线学习资源
关于
  • 本地缓存Caffeine

    Oct 23, 2024 缓存 Caffeine

    介绍 Caffeine 是基于Java 1.8 的高性能本地缓存库,由 Guava 改进而来,而且在 Spring5 开始的默认缓存实现就将 Caffeine 代替原来的Google Guava,官方说明指出,其缓存命中率已经接近最优值。 实际上Caffeine这样的本地缓存和 ConcurrentMap 很像,即支持并发,并且支持O(1)时间复杂度的数据存取。二者的主要区别在于: ConcurrentMap 将存储所有存入的数据,直到你显式将其移除 Caffeine将通过给定的配置,自动移除“不常用”的数据,以保持内存的合理占用。 因此,一种更好的理解方式是:Cache是一种带有存储和移除策略的Map。 Caffeine 基础 使 …

    阅读更多
  • 设计百万链路服务

    Oct 22, 2024 短链 面试 分布式系统

    状态码 301 和 302 的区别 301 301 是永久重定向。301 跳转会默认被浏览器缓存,当用户第一次访问某个短链后,如果服务器返回 301 状态码,则这个用户在后后续多次访问同一短链接地址,浏览器会直接请求缓存中的跳转地址,不会再请求短链服务重新获取地址。这么做的优点是降低了服务器的压力,但是无法统计短链接的点击次数。 302 302 是临时重定向。302 跳转默认不会被浏览器缓存,除非提示浏览器缓存。因此用户每次访问同一短链地址,浏览器都会去短链服务器上重新取长链接的地址。此方式优点是能够统计到短链接被点击的次数,但是服务器的压力变大了。 短链接和长链接映射的是实现方案 哈希法 哈希法推荐 Google …

    阅读更多
  • Kafka 报 InvalidPidMappingException 问题解决

    Jan 16, 2024 kafka 事务

    有个开发组不时地在测试环境中遇到下面的问题: 1Caused by: org.apache.kafka.common.errors.InvalidPidMappingException: The producer attempted to use a producer id which is not currently assigned to its transactional id 经过排查发现,这个开发组在代码中使用了 Kafka 的事务。这个错误的抛出与使用了事务有关系。 Spring kafka 支持一个叫做“僵尸围栏”的机制,用于处理在事务中参与的生产者或消费者与协调器之间的连接丢失或发生故障的情况。这个机制的目的是防止由 …

    阅读更多
  • 通过SpringGateway对接口请求进行加解密

    Jan 9, 2024 Spring Cloud 网关 安全

    有个需求,要求在前端调用接口时,将请求数据与响应数据做加密。做了一下调研,可以用下面的方式来实现: 1public class EncryptGatewayFilter implements GlobalFilter, Ordered { 2 3 private static final String BODY_ENCRYPT_HEADER = "X-ENCRYPTED"; 4 private static final String ENCRYPT_VERSION_1 = "1.0"; 5 6 @Override 7 public int getOrder() { 8 return -99; 9 } …

    阅读更多
  • 不安全的http方法

    Dec 25, 2023 http 安全

    在安全扫描工具中,会验证服务器是否开启了不安全的 http 方法。 从资源的角度看,GET、HEAD、OPTIONS、TRACE,这些方法不会产生什么动作,不会在服务器上产生结果,只是简单获取信息。相对的,能产生动作的方法就会被认为是不安全的HTTP方法。 在上面认为的那些不安全的HTTP方法中,安全界认为 PUT、DELETE、TRACE 是不安全的,另外 WebDAV 中的几个方法,RFC 5789 中的 PATCH 方法也被认为是不安全的。(TRACE容易引发XST攻击,PATCH修改资源的部分内容,PUT/DELETE没有认证机制等原因,不仅仅因为它们会产生结果)。 下面的方法可能会被利用,向应用程序实施有效攻击: PUT: …

    阅读更多
  • 数据查询ES设计演变

    Dec 22, 2023 elastic search

    这里总结一下过去曾参与的一个系统中,对于订单查询设计的演变过程 第一阶段:仅数据库查询 这个是最初始的阶段,数据查询直接走数据库查询。这种方式会完全依赖于数据库的性能,随着数据越来越来,查询效率也会越来越低 第二阶段:hibernate 拦截器检测数据变化并更新 ES 随着订单数据量的增多,原先直接查询数据库的方式已经无法满足对性能的要求。因此引入了 Elastic Search 来作为快速订单查询这个功能的支撑,同时增加了一个ES查询服务,用来对ES做读写操作。 考虑到某些租户的数据量很小,直接查询数据库就满足业务上的客户端响应需求。因此,增加了一个租户级别上的配置,用来开启或者关闭 ES 查询。 写 ES …

    阅读更多
  • Docker挂载文件,宿主机修改后容器里文件没有同步更新

    Dec 13, 2023 docker 挂载

    问题描述 使用 Docker 时,有时需要挂载一个宿主机目录或者文件。但是有时候发现通过 vi 或者 vim 修改完宿主机上的文件之后,容器中对应的文件并没有变化,看不到修改的内容。 问题分析 Docker 中,mount volume 的原理是借用了 Linux Namespace 中的 Mount NameSpace 来隔离系统中不同进程的挂载点视图,实际文件是没有变化。比如,在container中,bash 实际就是一个运行在宿主机上的进程,被 Docker 用 Linux 分别隔离了 Mount Namespace、UTS Namespace、IPC Namespace、PID Namespace、Network …

    阅读更多
  • JVM 参数项区别:-D、-X、-XX

    Dec 7, 2023 jvm

    JVM 包含多种不同类型的参数选项: -D 用来设置系统属性,属于标准选项 -X 设置非标准选项,支持的选项范围跟具体的 JVM 实现有关 -XX 设置高级选项,允许开发者调整 JVM 的行为、性能、输出调试信息,支持的选项范围也跟具体的 JVM 实现有关 标准选项(standard options)-D 标准选项是所有 JVM 实现都会支持。在控制台输入 java 这个命令,除了能看到 java 命令的使用手册,还能看到机器上默认的 JVM 所支持的所有标准选项。 Java 允许我们以 -D= 这种键值对的形式设置系统属性。注意,这个不是环境变量。 可以在命令行中带入参数: 1-Dfoo=bar1 也可以在java代码中,设置或者 …

    阅读更多
  • 企业微信调试工具

    Dec 7, 2023 企业微信 调试 fiddler 抓包

    请参考企业微信开发者中心的文档:常见问题#客户端调试 这个工具目前有个局限性,它只适用于企业微信浏览器加载完页面之后,才能可以介入排查问题,因为在此之前无法打开企微浏览器的开发者工具。如果要测试企微单点登录的问题,还是要借助于 fiddler 等抓包工具。

    阅读更多
  • Spring Boot 自动设置响应头引发的问题

    Nov 29, 2023 Spring Boot

    在某次排查问题的时候,发现接口返回值的 Response Header 中居然多了下面这个值。 1Content-Disposition:inline;filename=f.txt Content-disposition 是 MIME 协议的扩展,它指示 MIME 用户代理如何显示附加的文件。上面的值就相当于告诉客户端将文件内容直接显示在页面,同时这个文件名为 f.txt。 排查了接口代码与 nginx 等设置,并没有发现显式设置它的地方,很疑惑它是什么时候被设置上去的,即使显式设置了 Reponse 的 content-type 也没有用。 最终在查找资料的时候发现,Spring boot 为了修复 CVE-2015-5211 漏 …

    阅读更多
    • ««
    • «
    • 1
    • 2
    • 3
    • 4
    • 5
    • »
    • »»

Paul Zeng

积跬步,至千里
阅读更多

精选文章

  • 本地缓存Caffeine
  • Kafka 报 InvalidPidMappingException 问题解决
  • 通过SpringGateway对接口请求进行加解密
  • 数据查询ES设计演变
  • 阿里云WAF与SNI问题
  • 订单ES查询性能优化
  • Nginx服务器安全加固
  • 利用frp与nginx实现公网访问NAS

最新文章

  • 本地缓存Caffeine
  • 设计百万链路服务
  • Kafka 报 InvalidPidMappingException 问题解决
  • 通过SpringGateway对接口请求进行加解密
  • 不安全的http方法
  • 数据查询ES设计演变
  • Docker挂载文件,宿主机修改后容器里文件没有同步更新
  • JVM 参数项区别:-D、-X、-XX

分类

JAVA 26 KUBERNETES 18 系统设计与优化 14 POSTGRES 10 LINUX 9 MANJARO 8 DOCKER 5 JETTY 3 MAC 3 NGINX 3 算法 3 NODEJS 2 PYTHON 2 TERRAFORM 2
所有分类
CAFFEINE1 CHROME1 DBEAVER1 DOCKER5 ELASTIC-SEARCH1 FIDDLER1 GPT1 HIBERNATE1 JAVA26 JETTY3 KAFKA1 KUBERNETES18 LINUX9 MAC3 MANJARO8 MINIO1 MYBATIS1 NGINX3 NODEJS2 POSTGRES10 PYTHON2 REDIS1 TERRAFORM2 UBUNTU1 ZOOKEEPER2 安全1 车机1 前端1 算法3 系统设计与优化14 硬件1 运维1
[A~Z][0~9]

专栏

JAVA各版本新特性 21 KUBERNETES-IN-ACTION笔记 18

标签

JAVA 25 KUBERNETES 18 JAVA-8 15 POSTGRES 12 MANJARO 8 DOCKER 6 JAVA-9 5 LINUX 5 NGINX 5 JETTY 4 SESSION 4 SHELL 4 排序 4 ELASTIC-SEARCH 3
所有标签
ALPINE2 BASE641 BING1 CAFFEINE1 CHROME2 CLOUDFLARE1 CLUSTER1 CONFIGMAP1 CONTAINER1 CRITERIA-BUILDER1 CURL1 DATE1 DBEAVER1 DECLARE1 DOCKER6 ELASTIC-SEARCH3 EXCEL1 FIDDLER2 FRP1 GITBOOK1 GPT41 GREP2 HIBERNATE1 HOTSPOT1 HTTP1 INPUTSTREAM1 JAVA25 JAVA-71 JAVA-815 JAVA-95 JCONSOLE1 JETTY4 JMX1 JVISUALVM1 JVM2 KAFKA1 KCP1 KUBERNETES18 LAMBDA1 LINUX5 LOCALE1 LOCK1 MAC1 MANJARO8 MIGRATION1 MINIO1 MYBATIS1 NAS1 NGINX5 NODEJS2 OPTIONAL2 PGLOGICAL2 POSTGRES12 PSYCOPG21 PYTHON2 QUARTZ2 REDIS1 RSYSLOG1 SCHEMA2 SECRET1 SECURITY1 SEO1 SERIALIZE1 SESSION4 SHELL4 SNI1 SPRING1 SPRING-BOOT1 SPRING-CLOUD1 SSH1 SSL1 STAMPEDLOCK1 TERRAFORM2 UBUNTU2 UNIX2 VMWARE1 WAF1 WAL-E1 WIFI1 WINCE1 ZOOKEEPER2 阿里云3 安全2 安卓1 本地部署1 车机1 从库1 打印机1 导航1 调试1 短链1 对象存储1 分布式1 分布式系统1 复盘1 挂载1 滚轮1 缓存1 集群1 监控1 截屏1 轮询1 面试1 命令2 排序4 企业微信1 升级1 生产事故1 事务1 鼠标1 数据迁移1 私有云1 算法3 网关1 维修1 线程1 线程池1 性能优化1 序列化1 远程1 长轮询1 证书1 抓包1
[A~Z][0~9]

Copyright © 2018 - 2024 保罗札记. All Rights Reserved