- 博客(101)
- 资源 (5)
- 收藏
- 关注
原创 使用AntDesignPro + Electron构建一个桌面应用的实践
实际上Ant Design Pro和Electron的官网的start已经将各自构建应用的方式讲述的很明白了,本文主要讲解一下在AntDesignPro使用Electron构建一个桌面应用时所遇到的一些需要注意的重点,以及解决方式。
2024-05-17 11:19:29 1224
原创 CSRF Token ‘null‘ 报错解决方案
Spring Security CSRF,默认是开启。CSRF默认支持的方法: GET|HEAD|TRACE|OPTIONS,不支持POST。2.配置控制当然,也可以将excluded配置为/*来规避所有url,达到和关闭一样的效果。
2022-12-04 15:38:29 1201
原创 ThreadLocal原理和使用场景
ThreadLocal是一个关于创建线程局部变量的类。通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多个线程之间彼此并不独立,是共享变量。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将线程公有化变成线程私有化(空间换时间)。
2022-11-23 23:14:00 529
原创 B端和C端
C端:Consumer(也可理解为Customer),通常为消费者、个人终端用户使用的客户端。如:微信、淘宝、网易云音乐等。B端:B端,代表企业用户商家,英文是Business,是互联网产品中的商家界面(即:管理平台)。用户通过它进行日常的商业活动,例如企业库存管理,销售统计,员工出勤考核等等。可以说,用来解决企业需求的产品,都是 B 端产品。
2022-11-15 20:41:57 3920
转载 缓存穿透和布隆过滤器
缓存雪崩缓存雪崩指的是Redis当中的大量缓存在同一时间全部失效,而假如恰巧这一段时间同时又有大量请求被发起,那么就会造成请求直接访问到数据库,可能会把数据库冲垮。缓存雪崩一般形容的是缓存中没有而数据库中有的数据,而因为时间到期导致请求直达数据库。解决方案解决缓存雪崩的方法有很多,常用的有以下几种: 加锁,保证单线程访问缓存。这样就不会有很多请求同时访问到数据库。 key值的失效时间不要设置成一样。典型的就是初始化预热数据的时候,将数据存入缓存时可以采用随机时间来确保不会在同
2022-03-25 18:34:22 457
原创 mysql-innodb汇总
mysql innnodb 详解正在上传…重新上传取消相对于CPU和内存操作,我们可以看到磁盘的操作延时明显要大得多,一次磁盘搜索的延时需要10ms。假入我们某一个业务操作进行了大量磁盘读写,那可以预料到这个服务的性能肯定是非常差的,那么到底是什么原因导致磁盘读写速度这么慢呢?对于机械磁盘来说(这里先抛开SSD),它的速度主要依赖转动磁盘和移动磁头的时间,这是一种机械运动;而CPU和内存(RAM)主要是依赖电信号,这两者肯定不是在同一数量级的。磁盘io远远慢于内存操作...
2022-03-25 18:27:51 947
原创 centos6.10解决中文乱码
1、 查看自己系统有没有安装中文语言包,可使用locale -a命令列出所有可用的语言环境:看里面是否有下面四项:如果有,则不用安装,如果没有,需要重新安装,使用yum install kde-l10n-Chinese2、 修改i18n和locale.conf的配置文件第一,vim/etc/sysconfig/i18n,在里面添加如下两行代码:LANG="zh_CN.UTF-8"LC_ALL="zh_CN.UTF-8"然后执行一下,以使刚修改的文件生效:source/etc/sy
2021-12-22 17:34:29 501
原创 log4j2高危漏洞原理分析
原理分析了解2.15版本前log4j2可输出变量首先新建一个maven项目,加入log4j2的代码,我们用maven方式,只需要引入这两个pom依赖即可<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><ve...
2021-12-22 11:51:32 3362
原创 java agent
java agent实现字节码增强到过程大概是:1.修改字节码、2.加载新到字节码、3.替换旧的字节码第二步可以通过自定义ClassLoader来加载修改的字节码,第三步可以通过JVM加载或运行字节码时进行替换,那么第一步修改字节码该如何进行呢,至少大部分人时不会修改的,那么就需要使用工具来修改,修改字节码的工具主要有ASM、Javassist和byte buddy...
2021-04-13 19:11:04 70
转载 mysql binlog redo和undo日志总结
binlog二进制日志是server层的,主要是左主从复制,时间点恢复使用redo log重做日志是InnoDB存储引擎层的,用来保证事务安全undo log回滚日志保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读事务两阶段提交为每个事务分配一个XID一阶段:事务状态为prepare,redo log和undo log已经记录了对应的日志二阶段:binlog 完成write和fsync后,成功,事务一定提交了,否则回滚 发送co..
2021-04-12 16:56:21 259
原创 linux零拷贝简介
copy on write写时拷贝技术,也算是一种零拷贝技术,其核心思想是:当有多个调用者都需要请求相同资源时,一开始资源只会有一份,多个调用者共同读取这一份资源,当某个调用者需要修改数据的时候,才会分配一块内存,将数据拷贝过去,供这个调用者使用,而其他调用者依然还是读取最原始的那份数据。每次有调用者需要修改数据时,就会重复一次拷贝流程,供调用者修改使用。【传统io】4次用户态和内核态的上下文切换和4次拷贝那么,这里指的用户态、内核态指的是什么?上下文切换又是什么?简单来说,用户空间
2021-04-07 11:15:06 139
原创 zookepper选举机制简介
首先介绍一下两个关键的指标zxidmyid zk的选举主要根据这两个指标的大小来确定leader【zxid】zxid为64位且初始化是 0,也就是这样例如,此时你写入了zk一次,就会变成下图这样前32位变化有以下两种情况1 选举一次前32位加1,后32位重置为02 除了选举以外,当后 32 位彻底用完也会让前 32 位增加 1,因为无地可记。如下图情况,计数器再加一# 00000000000000000000000000000000 11111111111...
2021-03-29 19:46:37 160
原创 java统一异常处理工具记录
public class AjaxResult { //是否成功 private Boolean success; //状态码 private Integer code; //提示信息 private String msg; //数据 private Object data; public AjaxResult() { } //自定义返回结果的构造方法 public AjaxResult(Boolean succe.
2021-03-19 11:38:41 111
原创 mysql诊断步骤,日常问题查询步骤
【查看当前mysql链接状态】show processlist;SHOW PROCESSLIST显示哪些线程正在运行。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程)。如果有线程在update或者insert 某个表,此时进程的status为updating 或者 sending data。如果您不使用FULL关键词,则只显示每个查询的前100个字符(show full proc...
2021-03-18 12:35:31 207
原创 mysql索引相关知识,索引优化,分页查询优化
关于索引在 InnoDB 引擎中有三种索引:B-Tree 索引 哈希索引 (哈希索引在 InnoDB 引擎中叫作自适应哈希索引,它是由数据库自身根据你的使用情况创建的,并不能认为的干预,所以叫作自适应哈希索引,采用的是哈希表数据结构,所以对于字典类型查询就非常的快,但是对于范围查询就无能为力啦。) 全文索引(全文索引是一种比较特殊的索引,一般都是基于倒排索引来实现的,es 也是使用倒排索引。倒排索引跟 B-Tree 索引一样也是一种数据结构,在辅助表中存储了单词与单词自身在一个或多...
2021-03-15 21:04:35 169
原创 python读取redis中文乱码解决
直接用redis-cli ,后边加--raw即可解决。redis-cli -h xxxx -p xxxx -a xxxx --raw使用python#核心代码 r=redis.StrictRedis(host="10.0.147.8",port=6010,db=0,password='w876b@575', decode_responses=True)userInfo = r.get('test')print(userInfo.decode('unicode_escape'))..
2021-03-15 16:37:40 1944
原创 一些日常开发好用的在线工具推荐
Aliyun Java Initializr:https://start.aliyun.com/bootstrap.html覆盖了Spring Initializr的所有功能,又在其基础上增加了很多实用功能,它几乎可以集成当下所有主流技术,只要勾选相应的模块就可以自动集成进来。magicalcoder :http://bbs.magicalcoder.com/自动生成代码的工具,JAVA代码自动生成,还有H5样式布局器。在线正则表达式:http://tool.chinaz.com/tools...
2021-03-10 17:13:51 239
原创 skywalking自己写插件,自定义插件
此分享基于8.5.0版本的源码首先下载源码,导入idea,并且构建成功,如何构建见另一篇https://mp.csdn.net/editor/html/114141447 后边联调先不用管找到apm-sdk-plugin 在下边新建module 项目 。也可以单拉项目,这边我没有新建 直接在skywalking源码项目里建了个项目 方便提交。pom.xml(根据你自己的项目起名即可)<?xml version="1.0"?><!-- ~ Lice...
2021-03-10 16:58:34 1952 3
原创 linux-tcp并发连接数分析
linux可通过五元组唯一确定一个链接:源IP,源端口,目的IP,目的端口,传输层协议。一个端口不允许被两个及以上进程占用(一个进程可同时占用多个端口)【作为客户端】一、对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的连接到来返回给我们的错误是"Socket/File:Can't open so many files"。这时,你需要明白操作系统可以打开最大文件数的限制。默认为1024 可以执行命令 ulimit -n 1000000或修改配置文件ul
2021-03-04 11:49:41 678 2
原创 sed用法记录
代替一行或多行 [root@localhostipm]# sed '1c Hi' ab#第一行代替为Hi [root@localhostipm]# sed '1,2c Hi' ab#第一行到第二行代替为Hi Hi end 替换一行中的某部分 格式:sed's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)[root@localhostipm...
2021-02-26 17:18:19 90
原创 skywalking源码编译和自我开发项目联调
一、 skywalking源码编译 步骤其实很简单,很多博客也写过git clone https://github.com/apache/skywalking.git git submodule init git submodule update 运行./mvnw clean package -DskipTests 所有打出来的包都在目录/dist下 (Linux 下为 .tar.gz, Windows 下为 .zip)但是一般会遇到几个坑,在此说明:1.最新的skywalki...
2021-02-26 17:17:34 734
原创 java常用启动参数和调优
设置JVM内存的参数有四个:GC日志参数有:参数 功能 -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800) -XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信
2021-01-13 16:57:02 656
原创 rocketmq配合docker服务使用不消费问题记录
因为docker启动的服务 有可能出现ip相同的问题所以注册到rocketmq的消费组中的ClientId有可能会出现相同的情况,此情况可能导致消息不被消费,不断阻塞解决方法如下,在java项目中加入配置,使之注册的时候进程id有所改变。import org.apache.rocketmq.common.UtilAll;import org.springframework.stereotype.Component;import javax.annotation.Pos..
2021-01-10 12:11:31 902
原创 Rocketmq操作方式-python
#! /usr/bin/python#encoding:utf-8from rocketmq.client import Producer, Messageimport jsonimport sysimport timereload(sys)sys.setdefaultencoding( "utf-8" )'''rocketmq写入消息'''def send(): producer = Producer('test') producer.set_namesrv_addr('1..
2021-01-06 17:19:08 1081
原创 修改springboot一些三方插件默认配置
常识:在spring同一个配置文件中,不能存在id相同的两个bean,否则会报错。在两个不同的spring配置文件中,可以存在id相同的两个bean,启动时,不会报错。这是因为spring ioc容器在加载bean的过程中,类DefaultListableBeanFactory会对id相同的bean进行处理:后加载的配置文件的bean,[color=darkred]覆盖先加载的配置文件的bean[/color]。DefaultListableBeanFactory类中,有个属性allowBeanD
2020-12-23 15:14:33 191
原创 LongAdder与 AtomicLong使用场景分析
1.AtomicLong 是基于 CAS 方式自旋更新的;LongAdder 是把 value 分成若干cell,并发量低的时候,直接 CAS 更新值,成功即结束。并发量高的情况,CAS更新某个cell值和需要时对cell数据扩容,成功结束;更新失败自旋 CAS 更新 cell值。取值的时候,调用 sum() 方法进行每个cell累加。2.AtomicLong 包含有原子性的读、写结合的api;LongAdder 没有原子性的读、写结合的api,能保证结果最终一致性。3.低并发场景Atomi
2020-12-23 15:14:09 797
原创 springboot2.X 整合pushgateway推送到prometheus,最后以grafana展示
1 pom.xml中添加以下依赖 <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.1.3</version> </dependency>
2020-12-23 15:10:41 5335 2
原创 java内存泄漏的几个简单的原因
生产环境用gc日志导入下两个当中的一个分析MATJProfiler不要用jmap会导致线上服务卡住。常见的java内存泄露1 list不断增加2 new了很多线程 native内存满了3 nio 内存爆了 (Unsafe没设计好)4 System.gc()5 finalize() 大量重写6 jira 源码有问题(调整垃圾回收器为g1 并且扩大内存)7 分库分表 跨服务器查询 join出来的数据太多。 或者查询服务超时 重试 不断的添加到内存导致内存不够...
2020-12-21 21:47:16 211
原创 springboot覆盖配置文件
常识:1、在spring同一个配置文件中,不能存在id相同的两个bean,否则会报错。2、在两个不同的spring配置文件中,DefaultListableBeanFactory默认配置allowBeanDefinitionOverriding为true 会将最后加载的bean覆盖之前的bean,如果该值为false,则不会进行覆盖,而是抛出异常。此操作再allowBeanDefinitionOverriding为true的前提下进行。如此可以自己定义写第三方插件默认的bean属性,而不影
2020-12-18 17:23:17 1604 1
springboot最小demo
2020-04-29
dubbo springboot logback
2018-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人