自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(314)
  • 资源 (8)
  • 收藏
  • 关注

原创 Java业务开发常见错误100例【51-70】

2)newCachedThreadPool()方法,最大线程数是Integer.MAX_VALUE,可以认为是没有上限的,而其工作队列SynchronousQueue是一个没有存储空间的阻塞队列,会造成无法创建线程的问题;1)需要根据自己的场景、并发情况来评估线程池的几个核心参数,包括核心线程数、最大线程数、线程回收策略、工作队列的类型,以及拒绝策略,确保线程池的工作行为符合需求,一般都需要设置有界的工作队列和可控的线程数。因为只有一个线程可以拿到锁,所以加锁后的代码中的资源操作是线程安全的。

2024-03-02 17:50:55 420

原创 文生图来啦!一句话即可生成图片,快来发挥你的想像力吧

2、打开“程序员小哲”公众号的对话窗口,直接在输入框中输入:[1]你的想法。注意,必须以 [1] 开头,然后输入你的想法,可参考下图中的示例。如果想体验文生图,则必须以“[1]”开头,当然,如果没有以 "[1]"开头,你还可以体验到“程序员小哲”提供的其他功能哦,比如聊天。3、稍等片刻,直接点击链接即可查看通过你的想法(指令)生成的图片。一句话:二次元,棕色大眼睛,少女,细节光,可爱,唯美,高质量,1080p。1、扫描上方二维码,关注公众号。一句话:中国龙,1080p。一句话:比翼双飞,幸福美满。

2024-03-02 17:49:14 599

原创 chatgpt的流式输出:event-stream,如何使用nginx转发event-stream数据

如果你只需要单向通信,并且不需要处理复杂的实时数据,那么 event-stream 可能是一个更好的选择。:event-stream 使用的是 HTTP 协议,并且保持连接始终打开,以便服务器可以随时发送更新的数据给客户端。而 WebSocket 是一种独立的协议,它通过一个特殊的握手过程建立一个全双工的、持久的连接。:event-stream 的实现相对简单,只需要在服务器端生成事件数据并在客户端订阅这些事件即可。:event-stream 只允许服务器向客户端发送数据,而不能接收来自客户端的数据。

2024-02-28 11:48:55 811

原创 mysql5.7如何允许root用户远程登录

其中"*.*"代表所有资源所有权限, “'root'@%”其中root代表账户名,%代表所有的访问地址,也可以使用一个唯一的地址进行替换,只有一个地址能够访问。如果是某个网段的可以使用地址与%结合的方式,如10.0.42.%。IDENTIFIED BY 'root',这个root是指访问密码。1、修改mysql服务绑定的网卡,mysql默认绑定到127.0.0.1上,这样只能本机连接。修改方法:编辑mysqld.cnf文件,修改其中的bind-address配置项。4、退出mysql,重启mysql服务。

2024-02-28 11:23:19 568

原创 保姆级教程,如何一步步申请Sora账号

这几天 AI 圈最火的事情当属 OpenAI 发布的 Sora了,Sora到底有多厉害(NB),已经有很多大佬进行了解读,这里不再赘述。4、点击Pages选项卡,再点击:OpenAI Red Teaming Network application。申请页面直通车:https://openai.com/form/red-teaming-network。1、打开openai的官网:https://openai.com,点击Research->Sora。3、在输入框内输入:apply,点击Search。

2024-02-21 23:38:00 341

原创 Java业务开发常见错误100例【31-50】

32、使用WeakHashMap不等于不会OOM,Spring提供的ConcurrentReferenceHashMap类可以使用弱引用、软引用做缓存,Key和Value同时被软引用或弱引用包装,也能解决相互引用导致的数据不能释放问题。容量类的参数背后往往代表了资源,设置超大的参数就有可能占用不必要的资源,在并发量大的时候因为资源大量分配导致OOM。1)使用了ConcurrentHashMap,不代表对它的多个操作之间的状态是一致的,是没有其他线程在操作它的,如果需要确保需要手动加锁。

2024-02-17 19:38:11 431

原创 Java业务开发常见错误100例【1-30】

如果每个异步任务都以异常结束,那么线程池可能完全起不到线程重用的作用),execute提交的任务会这样,submit提交的任务,只有在获取执行结果的时候才会抛出异常(既然是以submit方式来提交任务,那么我们应该关心任务的执行结果,否则应该以execute来提交任务)而对于吞吐量较大的计算型任务,线程数量不宜过多,可以是CPU核数或核数*2(理由是,线程一定调度到某个CPU进行执行,如果任务本身是CPU绑定的任务,那么过多的线程只会增加线程切换的开销,并不能提升吞吐量),但可能需要较长的队列来做缓冲。

2024-02-17 19:37:38 500

原创 MySQL中的加锁规则总结

案例四中的session A用字段c来判断,加锁规则跟案例三唯一不同的是:在第一次用c=10定位记录的时候,索引c上加了(5,10]这个next-key lock后,由于索引c是非唯一索引,没有优化规则,就不会蜕变为行锁,因此最终,session A加的锁是,索引c上的(5,10]和(10,15]这两个next-key lock。这里需要注意,首次session A定位查找id=10的行的时候,是当做等值查询来判断的,而向右扫描到id=15的时候,用的是范围查询判断。

2024-01-29 21:13:40 1006

原创 MySQL写入binlog和redo log的流程

一个事务的binlog是不能被拆开的,因此不管这个事务多大,也要确保一次性写入,因此,系统给binlog cache分配了一片内存,每个线程一个,参数binlog_cache_size用于控制单个线程内binlog cache所占内存的大小,如果超过了这个参数规定的大小,就要暂存到磁盘。binlog的写入逻辑是:事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。上图中的fsync,才是将数据持久化磁盘的操作。

2024-01-29 21:12:14 822

原创 Gitlab中的CICD的使用方法

1、哪个分支发生了push或merge事件,则gitlab-runner执行哪个分支下的.gitlab-ci.yml。1、.gitlab-ci.yml 语法:{gitlabHost}/help/ci/yaml/README.md。

2024-01-12 11:25:30 1183

原创 Java代码优化细节

如果指定了一个类为final,则该类所有的方法都是final的,Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,可参见Java运行期优化。13、把一个基本数据类型转为字符串,基本数据数据.toString()是最快的方法、String.valueOf(数据)次之、数据+""最慢。对方法的调用,即使方法中只一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。16、静态类、单例类、工厂类将它们的构造函数置为private。

2024-01-12 10:35:48 953

原创 Jenkins使用随笔

原因是:jenkins在执行sh脚本的时候,如果脚本中有启动后台进程的情况,例如tomcat的关闭和启动,jenkins在job构建结束之后,会kill所有的jenkins里面衍生出的子进程。2、安装在linux上的jenkins可以通过添加节点(Jenkins -> 系统管理 -> 节点管理)调度windows机器。1、如果要部署的springboot程序和jenkins在同一台linux上,需要增加一条。

2024-01-12 10:25:31 1406

原创 MySQL是如何选择使用哪个索引的,它会选错索引吗?

MySQL中索引的基数是通过采样统计得来的,采样统计的时候,InnoDB默认会选择N个数据页,统计这些页面上的不同值,得到一个平均值,然后再乘以这个索引的页面数,就得到了这个索引的基数。而数据表是会持续更新的,索引统计信息也不会固定不变,所以,当变更的数据行数超过1/M的时候,会自动触发重新做一次索引统计。这个统计信息就是索引的“区分度”,一个索引上不同的值的个数,称之后“基数”(cardinality),基数越大,索引的区分度越好。按顺序执行上述语句就会发现,MySQL用错了索引,导致了更长的执行时间。

2024-01-11 22:31:05 504

原创 如何给字符串字段添加索引

也就是需要关注数据的区分度,区分度越高越好,区分度越高,意味着重复的键值越少。如上两个创建索引的语句,index2(email(6))这个索引结构中只取邮箱字段的前6个字节,所以占用的空间会更小,这就是使用前缀索引的优势,但是也同时带来了损失,比如会增加额外的记录扫描次数。MySQL是支持前缀索引的,可以定义字符串的一部分作为索引,如果创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。2、使用hash字段,即在表上再创建一个整数字段,来保存身份证号的校验码,同时在这个字段上创建索引。

2024-01-11 22:28:12 714

原创 平时执行很快的SQL语句,为什么会突然卡一下?

InnoDB的策略是尽量使用内存。第1种,“redo log写满了,要flush脏页”,这种情况InnoDB要尽量避免,因为出现这种情况的时候,整个系统就不能再接受更新了,所有更新都必须堵住,从监控上看,这时候更新数会跌为0。2、系统内存不足,当需要新的内存页,而内存不够用的时候,就要淘汰一些数据页,空出内存给别的数据页使用,如果淘汰的是“脏页”,就要先将脏页写到磁盘。当内存数据页跟磁盘数据页内容不一致的时候,这个内存页称为“脏页”,内存数据写入磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。

2024-01-11 22:27:05 959

原创 为什么删掉MySQL表中一半的数据,表文件大小却不变?

由参数innodb_file_per_table控制,这个参数值为OFF,则表示存放在系统共享表空间里,也就是跟数据字典放在一起,值为ON,则表示每个InnoDB表数据存储在一个以.ibd为后缀的文件中。如果数据是按照索引递增顺序插入的,则索引是紧凑的,但是如果数据是随机插入的,就可能造成索引的数据页分裂,就会造成空洞。在MySQL中当删除一条数据时,InnoDB引擎只会把R4这个记录标记为删除,如果之后要再插入一个ID在300和600之间的记录时,可能会复用这个位置,但是磁盘文件的大小并不会缩小。

2024-01-11 22:25:36 414

原创 使用MySQL的过程中,有没有遇到过count()比较慢的情况?

count()是一个聚合函数,对返回的结果集,一行行的判断,如果count函数的参数不是NULL,累计值就加1,否则不加,最后返回这个累计值。可以采用自己记录总行数的思路,比如把总行数记录到redis或者MySQL中,但是把计数放到redis中,不能够保证计数和MySQL表里的数据精确一致,因为这是两个不同的存储构成的系统,不支持分布式事务,无法拿到精确一致的视图;而对于count(*)这样的操作,遍历哪个索引树得到的结果逻辑上都是一样的,因此,MySQL优化器会找到最小的那棵树来遍历。

2024-01-11 22:17:06 394

原创 MySQL中order by是怎么工作的?

按name排序”这个动作,可能在内存中完成,也可能需要使用外部排序,这取决于排序所需的内存和参数sort_buffer_size。如果要排序的数据量小于sort_buffer_size,排序在内存中完成,否则,内存放不下,不得不利用磁盘临时文件辅助排序,称为外部排序,外部排序一般使用归并排序算法。max_length_for_sort_data参数,是MySQL中专门控制用于排序的行数据长度的一个参数,含意是:如果需要取出来的单行数据的长度超过这个值,MySQL就认为单行太大,要换一个算法。

2024-01-11 22:15:29 967

原创 基于gitlab 12.8.0版本的完整镜像过程

在新服务器执行还原指令:gitlab-backup restore BACKUP=1704341329_2024_01_04_12.8.0 ,注意结尾没有_gitlab_backup.tar。1、在原gitlab服务器上执行:gitlab-backup create 或者仓库比较大的话,可以在后台执行:nohup gitlab-backup create &2、将备份文件 xxx.tar 复制到新服务器:scp xxx.tar user@ip:/var/opt/gitlab/backups。

2024-01-04 14:40:32 1200

原创 gitlab历史版本下载地址

每次想下载gitlab的历史版本,都找好长时间的下载入口,这次在这里记录一下。

2024-01-04 10:25:03 461

原创 MySQL中的事务到底是怎么一回事儿

当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了“隔离级别”的概念。在MySQL中,事务支持是在引擎层实现的,但并不是所有的引擎都支持事务,如MyISAM引擎就不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。可重复读:一个事务在执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的,在此级别下,未提交变更对其他事务也是不可见的;

2024-01-03 22:52:25 495

原创 MySQL是如何做到可以恢复到半个月内任意一秒的状态的?

具体来说,当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log里面,并更新内存,这个时候更新就算完成了,同时,InnoDB引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做的。binlog是逻辑日志,记录的是这个语句的原始逻辑,比如“给ID=2这一行的c字段加1”;binlog还有一种用途:当需要扩容的时候,也就是需要再多搭建一些备库来增加系统的读能力的时候,现在常见的做法也是用全量备份加上应用binlog来实现的。

2024-01-03 22:51:10 949

原创 MySQL的基础架构之内部执行过程

2)查询缓存,执行过的语句及其结果可能会以key-value对的形式,被直接缓存在内存中,key是查询的语句,value是查询的结果。这里有个点需要注意:一个用户成功建立连接后,即使用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限,修改完成后,只有再新建的连接才会使用新的权限设置;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序;5)执行器,开始执行的时候,首先判断对这个表有没有权限,如果没有权限,就会返回没有权限的错误,如果有权限,就打开表继续执行。

2024-01-03 22:50:37 500

原创 快来和我的智能机器人聊聊天吧

微信扫码,即可体验。

2024-01-03 22:41:56 738

原创 如何通过Arthas热更新正在运行中的java代码

注意:redefine重新加载class之后,如果再次使用jad指令,则会将class还原成初始状态。主要涉及以下三个arthas提供的指令:jad mc redefine。2、修改/tmp/UserController.java中的代码。5、通过 mc 指令将java文件编译成class文件。6、通过 redefine 指令重新加载class。然后输入对应的pid,即可进入交互界面。3、通过 sc 指令找到该类的加载器。4、查找所有的类加载器列表。

2024-01-03 22:34:17 712

原创 springcloud-gateway路由中Path的匹配规则

如果uri中的前缀与Path中的前缀一致,则会自动去掉前缀,如下图。如果不一致,则会将前缀带到底层服务的请求中。

2022-09-03 16:57:48 1732

原创 通过@FeignClient调用服务,卡住不动

通过@FeignClient调用底层服务,卡住不动,现象是,底层服务已经正常返回结果,但是FeignClient不返回结果,浏览器中的请求一直pending。原因是我为了测试直接使用了。这个对象,而这个对象是没有无参的构造函数的,会导致FeignClient无法返回,把返回对象换成String,或者其它有无参构造函数的对象,问题解决。

2022-09-03 15:51:55 1077

原创 两个可以连接Hive的可视化工具

dbeaver:DBeaver Community | Free Universal Database Toolsquirrel:SQuirreL SQL Client Home Page使用方法请参考:两个可以连接Hive的可视化工具_Switfy的博客-CSDN博客_hive可视化工具一、dbeaver 这个工具可以说是非常好用的,既可以连接Hive 有可以连接Mysql,如果你还在寻找sqlyog的破解版,我跟你说,这款工具绝对超sqlyog一万倍,强烈推荐!!!!,关键...

2022-02-17 16:54:28 3043

转载 linux 查找所有文件包含指定内容,并替换

很容易忘,记录下:find -name "*.xml"| grep "rCN" | xargs grep 测试字符1 -l | xargs sed -i "s/测试字符1/测试字符2/g"find 就不说了;第一个grep,不需要xargs,为何?因为这个grep查找的不是文件内容,而是路径本身,检查find的取得的文件路径是否包括"rCN";第二个grep,需要xargs,为何?因为这个grep要搜索的是文件内容,而非文件路径,查找文件内容存在"测试字符1"这个字符串,然后,-l ..

2020-09-24 10:36:17 882

原创 day10&day11

1、rm remove2、PATH变量3、修改PATH变量vi /etc/profile在末尾加上:PATH=$PATH:/path/to/add

2019-09-26 23:05:52 168

原创 day10

一、绝对路径、相对路径pwdcd change directorycd -进入上一次的目录cd 或 cd ~进入当前用户的家目录mkdir make directorymkdir -p级联创建目录mkdir -pv显示创建过程rmdir只能删除非空目录...

2019-09-25 22:58:10 157

原创 day8&day9

一、tree 安装:yuminstall treetree -L 2,显示2层目录:/bin/sbin,super bin,一般是root用户用的/usr/bin/usr/sbin/boot 系统启动时用到的文件/dev 设备文件/etc 系统配置文件/home 用户家目录/lib /lib64 系统的库文件,类似于...

2019-09-25 22:38:00 431

原创 day7

一、虚拟机克隆,克隆完成后记得修改下IP地址,否则开机是会报IP冲突。更改主机名:hostnamectl set-hostname xxx二、为了方便做实验可以给虚拟机做一个快照,出现问题时可以随时恢复三、两台linux之间互连1、连接命令:ssh -p 22 [email protected]、生成密钥:ssh-keygen...

2019-09-23 22:38:10 122

原创 day6

一、忘记root用户密码的解决方法:1)单用户模式,类似windows的安全模式1、重启:reboot init 6 shutdown -r now2、关机:init 0 poweroff3、进入grub启动工具界面,找到linux16这一行,在将ro改为下面这一行:rw init=/sysroot/bin/sh/sysroot为自己系统里的文件,切换到自己的...

2019-09-23 22:13:43 176

原创 day5

一、PuTTY或xshell通过密钥登录1、一对密钥,服务器放公钥,本机放私钥2、进入远程服务器:mkdir /root/.sshchmod 700 /root/.sshvi /root/.ssh/authorized_keys将公钥粘贴进去。注:可以同时配置多个公钥。#开头代表注释关闭selinux:setenforce 0禁用密码登录系统:vi /etc/s...

2019-09-20 22:33:05 118

原创 day4

一、xshell使用二、vmware有快照功能三、putty下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html四、杀死dhclient服务:dhclient-r五、查看网关:route -n...

2019-09-19 22:23:35 126

原创 day3

一、IP配置1)dbclient,获取IP地址2)IP配置文件路径:/etc/sysconfig/network-scripts/ifcfg-***静态IP配置方法:BOOTPROTO=staticIPADDR=192.168.1.105NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=114.114.114.1143)重...

2019-09-18 22:10:24 122

原创 day2

一、VMwareWorkstation安装1、创建虚拟机:网络连接:1)桥接模式:和宿主机在同一个网络,相当于连接到了同一台路由器2)NAT模式:vmware充当了路由器的角色,虚拟机连接到了这台路由器上3)仅主机模式:相当于用一根网线直连了宿主机和虚拟机2、安装虚拟机操作系统,Centos7分区:/boot分区,200Mswap分区,内存大小的2倍,最大分8...

2019-09-17 22:48:19 131

原创 day1

一、学习之初1、给自己明确的定位1)学习这个课程的目的是什么?2)学完之后要做的职位是什么?多数可能是运维,还有开发和测试3)学完之后要在哪个城市发展?先把技能打扎实2、给自己设定目标1)何时学完?2)何时跳槽?3)第一份工作薪资?4)一年后薪资多少?两年后呢?3、学习方法1)预习和复习的重要性2)当日事当日华3)记笔记4)利用好资源,如...

2019-09-16 22:53:35 133

原创 记一次服务器(centos7)出现奇怪进程,占用CPU奇高的排查过程

一、现象:通过top命令查看服务器负载,发现特别高,主要原因是由于一个进程特别占用CPU资源,并且这个进程不是我们所需要的进程。此处忘记截图了二、开始排查,怀疑是被人攻击系统,成为肉机了1、通过lastb命令查看系统登录失败的记录,果然发现大量失败记录,并且不停的在增加,如下图:2、然后赶紧修改了远程登录端口:vi /etc/ssh/sshd_config修改其中的po...

2019-07-11 19:03:32 7353

AI破局俱乐部精华贴合集

AI破局俱乐部是一站式AI头部学习社群,是一个涵盖AI相关课程、项目、实战、资源、活动和交流的平台,

2024-01-29

android7.1.2内置讯飞输入法

android7.1.2内置讯飞输入法发,包括FlyIMEjackw.apk和Android.mk 将压缩解压,并将其中的apk解压,然后上传到android_source/packages/apps/

2020-12-23

android7.1.2内置搜狐输入法

android7.1.2内置搜狐输入法,包括SogouInput.apk和Android.mk 将压缩包解压,并将其中的apk解压,然后上传到android_source/packages/apps/

2020-12-23

cas实现单点登录服务端及客户端

cas实现单点登录服务端及客户端,压缩包内提供三个工程,一个cas服务器,两个测试客户端,可同时部署到一个tomcat下,或者分开部署。端口号默认使用的8000

2015-09-17

java通过网络远程开机

通过网卡远程开机,java代码实现。需要在同一个局域网内

2015-08-07

最简单的spring MVC框架搭建

使用spring mvc框架搭建的最简单的网站,没有用到数据库。稍后再上传使用到数据库的

2015-08-07

JPA 与hibernate所需jar包

JPA 与hibernate所需jar包

2011-06-17

hibernate+jpa注解实现最简单的增删改查

hibernate+jpa注解实现最简单的增删改查,采用mysql数据库。解压后直接将/sql/jpa.sql导入数据库,再在myEclipse中导入即可。运行方式,如压缩包内图片所示

2011-05-13

运行中可以使用的命令

一般有人喜欢在运行中直接输入命令,来进行某些操作,下面就来说一些在运行中可用的命令,

2008-12-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除