我在 GitHub 上的开源项目
- quick-start Java 🤩1 ⭐️1 🖖0 springboot+vue quick start 2. fpan-web CSS 🤩1 ⭐️0 🖖0 3. fpan Java 🤩1 ⭐️0 🖖0 网盘后端 4. pan-web-bak CSS 🤩1 ⭐️0 🖖0 网盘前端 5. solo-blog 🤩1 ⭐️0 🖖0 🏠http://www.fyzzz.cn fyzzz 的个人博客 - 记录精彩的程序人生
mac 显示/隐藏文件夹 Command + Shift + . 禁止office自动更新 cd /Library/Application\ Support/Microsoft # 把MAU2.0下的文件移走或删除 Consul 本地启动 consul agent -dev -client=0.0.0.0 mongo 创建root use admin db.createUser({user: "root", pwd: "123456", roles:["root"]}) 查看用户 use admin db.system.users.find() 创建用户 use test db.createUser({ user: "fyzzz", pwd: "123456", roles: [{ role: "dbOwner", db: "test" }] }); db.createCollection("fyzzz") 修改权限 db.grantRolesToUser("fyzzz", [{role:"dbOwner", db:"test"}]) 删除权限 db.revokeRole....
Callable&Future&FutureTask介绍 直接继承Thread或者实现Runnable接口都可以创建线程,但是这两种方法都有一个问题就是:没有返回值,也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景,而Future和FutureTask就可以和Callable接口配合起来使用。 Callable和Runnable的区别 @FunctionalInterface public interface Runnable { public abstract void run(); } @FunctionalInterface public interface Callable<V> { V call() throws Exception; } Runnable 的缺陷: 不能返回一个返回值 不能抛出 checked Exception Callable的call方法可以有返回值,可以声明抛出异常。和 Callable 配合的有一个 Future 类,通过 Future 可以了解任务执行情况,或者取消任务的....
在项目中遇到了存储emoji(?)报错的情况,错误如下: Incorrect string value: '\xF0\x9F\x98\x80' for column 'name' at row 1 我们的项目使用的是springboot2.4.8+mysql5.7 数据库字段的编码已经修改成utf8mb4,并且直接把emoji插入表是可以成功的,所以不是数据库编码的问题。 网上搜了一下资料,有两个解决方案: 设置连接池的connection-init-sql的值为:SET NAMES utf8mb4,这个会在每次执行sql前执行; 升级mysql驱动类版本。升级前我们使用的是5.1.46,升级到5.1.49后问题解决。 为什么升级驱动类后可以了呢,我查看了mysql官网对驱动类的发行说明,发现5.1.47版本就已经解决了这个问题,原文如下: 浏览器翻译后: 参考链接:Changes in MySQL Connector/J 5.1.47 (2018-08-17)
官方文档 本文记录常用的一些命令和场景 1、获取HttpServletRequest对象 watch -x 3 -n 1 org.springframework.web.servlet.DispatcherServlet doDispatch '@org.springframework.web.context.request.RequestContextHolder@currentRequestAttributes().getRequest().xxx()' 注:xxx替换为实际方法,如getRequestParameterMap()可以查看请求入参; -n 1表示只取1次。 2、反编译 参考 # 反编译类 jad demo.MainGame # 反编译指定方法 jad demo.MainGame main 3、sc/sm 查看已加载的类 sc sc 命令可以查找到所有JVM已经加载到的类。 如果搜索的是接口,还会搜索所有的实现类。比如查看所有的 Filter实现类 sc javax.servlet.Filter 通过 -d参数,可以打印出类加载的具体信息,很方便查找类加载问题。....
在 kubernetes 中将 DNS 设置配置在 dnsConfig 配置项中, 而 dnsConfig 包含在 PodSpec 配置项中,因此 Pod 内所有容器都共享相同的 Network Namespace 。 helm中:
概述 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机 制. MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。接下来,我们会深入讲解这些机 制,让大家彻底理解数据库内部的执行原理。 事务及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。 原子性(Atomicity) :事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent) :在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。 隔离性(Isolation) :数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。 持久性(Durable) :事务完成之后,它对于数....
以下顺序为启动过程中的调用顺序 BeanDefinitionRegistryPostProcessor void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException; 注册BeanDefinition BeanFactoryPostProcessor void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException; 扩展beanFactory InstantiationAwareBeanPostProcessor Object postProcessBeforeInstantiation(Class 实例化前,返回非null的话,就不走默认的实例化逻辑 Supplier T get(); 这是Spring提供给开发者的扩展点,如果我们要自己来实现创建对象的过程, 那么就可以提供一个Supplier的实现类, 当一个BeanDefi....
Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL 注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中 Explain分析示例 参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html 示例表: -- ---------------------------- -- Table structure for actor -- ---------------------------- DROP TABLE IF EXISTS actor
; CREATE TABLE actor
( id
int(11) NOT NULL AUTO_INCREMENT, name
varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_....
一、索引定义 索引是帮助MySQL高效获取数据的排好序的数据结构。 二、索引数据结构 二叉树:单向递增时效果低 红黑树:每个节点只能存一个数据,树太深,意味着从磁盘读取数据的次数多 Hash表 B-Tree B+Tree B-Tree 叶节点具有相同的深度,叶节点的指针为空 所有索引元素不重复 节点中的数据索引从左到右递增排列 B+Tree(B-Tree变种) 非叶子节点不存储data,只存储索引(冗余),可以放更多的索引 叶子节点包含所有索引字段 叶子节点用指针连接,提高区间访问的性能 mysql每页大小为16KB,查询语句:show GLOBAL STATUS like 'Innodb_page_size'; 如果主键是BigInt,占8个字节,中间指针约6字节,那么一页可以存放161024/14 = 1170 假设数据为1KB,那么三层的树可以存放:11701170*16=21902400条数据。 Hash 对索引的key进行一次hash计算就可以定位出数据存储的位置 很多时候Hash索引要比B+ 树索引更高效 仅能满足 “=”,“IN”,不支持范围查询 h....
Jetbrains系列产品重置试用方法 本站惯例:本文假定你知道Jetbrains家的产品。不知道可以问问搜索引擎。 没错,jetbrains-agent这个项目停止了。市面上漫天飞的各种最新都是其他大神的魔改版本。[/斜眼] 我不是要专门写个博文来说明 jetbrains-agent项目已经停止,然后缅怀感叹一番。这篇文章是想和大家聊聊另一种思路。 ## 0x0. 项目背景 Jetbrains家的产品有一个很良心的地方,他会允许你试用 30天(这个数字写死在代码里了)以评估是否你真的需要为它而付费。 但很多时候会出现一种情况:IDE并不能按照我们实际的试用时间来计算。 我举个例子:如果我们开始了试用,然后媳妇生孩子要你回去陪产!陪产时我们并无空闲对IDE试用评估,它依旧算试用时间。(只是举个例子,或许你并没有女朋友) 发现了吗?你未能真的有 30天来对它进行全面的试用评估,你甚至无法作出是否付费的决定。此时你会想要延长试用时间,然而Jetbrains并未提供相关功能,该怎么办? 事实上有一款插件可以实现这个功能,你或许可以用它来重置一下试用时间。但切记不要无休止的一直试用,这并不是这....
nginx转发,swagger请求地址错误 proxy_set_header Host $host:$server_port; #添加:$server_port proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://xxx;
设置IP访问 K8s默认通过域名访问,如果需要设置ip访问,可以通过以下方案配置。 方案一: 在任意ingress中,做如下修改: ... apiVersion: extensions/v1beta1 kind: Ingress metadata: generation: 1 labels: app.kubernetes.io/name: control-web name: control-web namespace: ipes-sjz annotations: #这是新增的 nginx.ingress.kubernetes.io/server-alias: ~^.*$ #这是新增的 spec: rules: - host: ipes-sjz.fpi-inc.site ... 注:这个方案不是一定能生效,可以采取第二种方案。 方案二: 通过nginx转发 修改/etc/host....
修改默认目录 mkdir -p /data/docker/lib systemctl stop docker.service rsync -avz /var/lib/docker/ /data/docker/lib/ mkdir -p /etc/systemd/system/docker.service.d/ vim /etc/systemd/system/docker.service.d/devicemapper.conf 创建文件: [Service] ExecStart= ExecStart=/usr/bin/dockerd --graph=/data/docker/lib/ systemctl daemon-reload systemctl restart docker docker info | grep "Dir" 查看占用 docker system df 清除空间 docker system prune
离线安装docker 下载离线安装包:https://download.docker.com/linux/static/stable/x86_64/ 把离线包上传到服务器解压: 把命令放到/usr/bin下, 在/etc/systemd/system下添加docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for....