- 博客(42)
- 资源 (15)
- 收藏
- 关注
原创 MySQL之索引优化
例如下面显示的结果中 customer_id 的选择性比 staff_id 更高,因此最好把 customer_id 列放在多列索引的前面。例如下面的语句中,最好把actor_id 和 film_id 设置为多列索引。如:'%ptd_' 和 '%ptd_%' 都没有用到索引;优化方式:用代码拼装sql时进行判断,没where加where,有where加and。优化方式:如果是连续数值,可以用between代替。优化方式:可以给字段添加默认值0,对0值进行判断。优化方式:可以用union代替or。
2024-07-22 17:31:10
573
原创 CMS收集器原理详解
另外一种情况是没有配UseCMSInitiatingOccupancyOnly,这时候又有两种小的分支情况,一个是当老年代是因为分配对象而成功扩容的,这时候会触发background gc(足以看出-xmx 和 -xms设置成一样的重要性),第二个是一个非常复杂的情况,这个和CMS老年代的空闲链表有关系,复杂的原因是freeList这玩意本身的复杂度就是非常高的,简单的说此时CMS的后台线程判断FreeList中的空间不足以分配新的下一次晋升到老年代的对象时候,就会触发background gc。
2024-07-19 13:17:28
1097
原创 四种垃圾收集算法详解(JVM)
标记整理和标记清除的非常相似,但是标记整理的过程是这样的,首先是标记要清理的对象,然后将剩下所有存活的对象都移动到一端,然后直接清理端边界以外的内存。其实也就是标记-整理-清除算法,多了一个对内存的整理的过程。将活着的内存空间分为两块,每次只使用其中一块,在垃圾回收时将正在使用的内存中的存活对象复制到未使用的内存块中,之后清除正在使用的内存块中的所有对象,交换两个内存的角色,最后完成垃圾回收。:与标记清除算法相同,标记阶段会遍历整个堆内存,找出所有存活的对象(即被引用的对象),并给它们打上标记。
2024-07-19 12:30:25
984
原创 Linux之shell应用(语法进阶)
的值得到的是 0,也就是上一条 echo 命令的结果,而 demoFun1 的返回值被覆盖了。为 0,如果找不到,则返回值 $?之后再用函数的 return 值作为测试,其中 demoFun1 返回值为 0,demoFun2 返回值选择了任意一个和 0 不同的整数,这里为 12。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...将函数作为条件语句交给 if 判断,得出返回值为 0 时,依然为 true,而返回值只要不是 0,条件语句都判断为 false。
2024-07-18 17:21:15
792
原创 Linux之shell应用(语法讲解)
需要注意的是,在 for 循环中,变量的赋值使用的是in关键字,而不是等号(=)。当执行这个命令后,Shell 会将脚本的每一行命令都显示出来,并在命令执行之前先输出该行命令。与单括号不同,双括号内的变量可以不使用引号进行包裹,这意味着在条件测试中可以直接使用变量而不必担心特殊字符的影响。是扩展的条件测试结构,提供了更多的功能和便利性,可以进行更灵活的条件判断。是用于执行算术运算和逻辑运算的结构,在其中可以使用变量和运算符进行数值计算和逻辑判断。的值等于 "abc",则条件被认为是真,输出 "条件满足"。
2024-07-18 13:42:53
1068
原创 Linux文本工具之-Vim(二)
输入命令 :saveas newfile.txt 将会在当前目录下创建一个名为 “newfile.txt” 的副本,并将文本保存到该文件中。在命令模式下,输入 :wq 将会将文本保存到文件中,并退出 Vim 编辑器。:n 或者 :wn:在普通模式下,输入 :n 或者 :wn 可以切换到下一个文件并保存当前文件。:N 或者 :wN:在普通模式下,输入 :N 或者 :wN 可以切换到上一个文件并保存当前文件。U:按下大写的 U 键可以撤销对整行的所有修改,将行恢复到上一次保存时的状态。
2024-07-17 18:33:29
1025
原创 Linux文本工具之-Vim(一)
在普通模式下敲击键盘的 v 键即可进入可视模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。替换模式(Replace mode): 在替换模式下,您可以直接替换光标所在位置的字符。先将光标移动到指定内容的起始位置,按v进入可视模式,通过l向后选择,通过j向下选择,通过h向前选择,直到光标到达选中内容的尾部。Ex 模式是Vim的可选模式,它是命令行模式的扩展。yy是复制光标当前行,p是粘贴复制的行到光标下方行,当光标选中的非行数据时不包含\n,所以p粘贴时在光标后。
2024-07-17 18:05:56
802
1
原创 Nginx编译安装参数详解
它只能从服务器到客户端方向,只有一个字节的字符可以转换。--without-http_autoindex_module 禁用ngx_http_authindex_module,该模块用于在ngx_http_index_module模块没有找到索引文件时发出请求,用于自动生成目录列表。--without-http_gzip_module 禁用ngx_http_gzip_module支持,同--with-http_gzip_static_module功能一样。
2024-07-16 16:49:05
1262
原创 插入排序(Java)
最好情况:序列已经是升序排列了,在这种情况下,需要进行的比较操作需(n-1)次即可。如果目标是把n个元素的序列升序排列,那么采用插入排序存在最好情况和最坏情况如下。最坏情况:序列是降序排列,那么此时需要进行的比较共有n(n-1)/2次。i和j,每一次执行这个回圈,就会将第i个数字放到左边恰当的位置去。4、重复步骤3,直到找到已排序的元素小于或者大于新元素的位置。2、取出下一个元素,在已经排序的元素序列中从后向前扫描。直接插入排序属于稳定的排序,最坏时间复杂度为O(n^2),5、将新元素插入到该位置。
2023-12-07 22:34:20
516
原创 Linux常用命令(二)
locate命令可以在搜寻数据库时快速找到档案,locate为模糊查找,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)grep 命令里的匹配模式,就是你想要找出来的数据,可以是普通的文字符号,也可以是正则表达式;
2023-12-05 23:31:33
1004
原创 JVM的内存结构详解「重点篇」
另外一种退出方式是,在方法执行过程中遇到了异常,并且这个异常没有在方法体内得到处理,无论是Java虚拟机内部产生的异常,还是代码中使用athrow字节码指令产生的异常,只要在本方法的异常表中没有搜索到匹配的异常处理器,就会导致方法退出,这种退出方式称为异常完成出口(Abrupt Method Invocation Completion)。当一个方法刚刚执行的时候,这个方法的操作数栈是空的,在方法执行的过程中,会有各种字节码指向操作数栈中写入和提取值,也就是入栈与出栈操作。6、虚拟机栈是一个后入先出的栈。
2023-12-02 18:42:43
1199
原创 冒泡排序的几种实现(直接源码)
算法专栏主要是实操类源码,都是跑的通的代码,复制即可用,代码都是简单通俗的实现,没有做复杂的封装,易于学习算法的思维逻辑。
2023-11-29 23:12:55
382
原创 linux常用命令(一)
Options:内存单位:默认情况下,free命令以千字节(Kilobytes,KB)为单位显示内存大小。可以使用"-b"参数以字节(Bytes)为单位显示内存大小。可以使用"-k"参数以千字节为单位显示内存大小。可以使用"-m"参数以兆字节(Megabytes,MB)为单位显示内存大小。可以使用"-g"参数以吉字节(Gigabytes,GB)为单位显示内存大小。内存信息:总内存(Total):显示系统的总内存大小。已使用内存(Used):显示当前已被分配和使用的内存大小。
2023-11-29 22:30:15
1315
原创 JVM之引用类型
在实际程序设计中一般很少使用弱引用与虚引用,使用软用的情况较多,这是因为软引用可以加速JVM对垃圾内存的回收速度,可以维护系统的运行安全,防止内存溢出(OutOfMemory)等问题的产生,学好引用类型也是高效编程的基础哦。
2023-11-29 20:23:38
369
原创 JVM配置参数详解
当进行过Metaspace GC之后,会计算当前Metaspace的空闲空间比,如果空闲比小于这个参数,那么虚拟机将增长Metaspace的大 小。在本机该参数的默认值为40,也就是40%。设置该参数可以控制Metaspace的增长的速度,太小的值会导致Metaspace增长的缓 慢,Metaspace的使用逐渐趋于饱和,可能会影响之后类的加载。当进行过Metaspace GC之后, 会计算当前Metaspace的空闲空间比,如果空闲比大于这个参数,那么虚拟机会释放Metaspace的部 分空间。
2023-11-27 20:24:33
3291
原创 linux命令学习之环境准备
基于linux的环境我主要说阿里云的ecs吧,如果为了学习linux最实惠的办法无非就是购买一个包年的ECS,不要求高环境,1核1G+20G存储足够用了,我这里不是给阿里云打广告哈,如果能赶上腾讯云做学生活动有可能能49买一个三年的ECS只不过特别卡。由于本人使用的是mac电脑,开发环境基本在macos环境和centos环境,所以在windows上的安装步骤就无法详细描述了。它是一个在 Windows 上运行 Linux 命令的工具,提供了一个 Linux-like 的终端环境。
2023-11-23 00:53:52
55
原创 JVM之类加载器原理
但并非所有的应用都适合采用 OSGi 作为基础架构,它在提供强大 功能同时,也引入了额外的复杂度,因为它不遵守了类加载的双亲委托模型。加载阶段完成后,虚拟机外部的二进制字节流就按照虚拟机所需的格式存储在方法区之中,而且在Java堆中也创建一个java.lang.Class类的对象,这样便可以通过该对象访问方法区中的这些数据。验证阶段非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用-Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。
2023-11-22 23:57:37
36
原创 找出1000以内的所有完数(Java)
如果一个数恰好等于它的真因子之和,则称该数为“完全数” [2]。大数学家欧拉曾推算出完全数的获得公式:如果p是质数,且2^p-1也是质数,那么(2^p-1)X2^(p-1)便是一个完全数。例如p=5,是一个质数,2^p-1=31也是质数,(2^p-1)X2^(p-1)=31X16=496是完全数。例如p=3,是一个质数,2^p-1=7也是质数,(2^p-1)X2^(p-1)=7X4=28,是完全数。例如p=2,是一个质数,2^p-1=3也是质数,(2^p-1)X2^(p-1)=3X2=6,是完全数。
2023-11-19 21:47:19
332
原创 猴子吃桃问题(Java)
以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,求第一天共摘了多少?
2023-11-19 21:30:18
58
原创 观察者模式的实现(Java)
观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。观察者模式不仅被广泛应用于软件界面元素之间的交互,在业务对象之间的交互、权限管理等方面也有广泛的应用。观察者模式(Observer)完美的将观察者和被观察的对象分离开。
2023-11-19 18:51:17
126
原创 原型模式的实现(Java)
原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
2023-11-18 03:26:54
108
1
原创 水仙花数问题(Java)
在这里先科普下什么是水仙花数,严格意义来说水仙花数是说三位数的,只是大家都认为求所有位的自幂数之和都称为水仙花数。最后再提醒下跑代码不要把最大数设置太大。四位自幂数:四叶玫瑰数。七位自幂数:北斗七星数。九位自幂数:九九重阳数。十位自幂数:十全十美数。三位自幂数:水仙花数。五位自幂数:五角星数。
2023-11-17 16:37:45
87
原创 版本管理之(git)
分支(branch):Git分支是原始代码的一个拷贝,用于开发新功能和修改代码。远程仓库(remote repository):Git远程仓库是存放在远程服务器上的代码仓库,用于多人协作开发。每次提交可以包含多个文件的修改。提交变更:使用git commit命令,将暂存区的文件变更提交到本地仓库。远程仓库操作:使用git remote命令,可以添加、删除和查看远程仓库。初始化仓库:使用git init命令,将当前目录初始化为Git仓库。拉取代码:使用git pull命令,从远程仓库拉取最新的代码。
2023-11-17 15:40:18
41
原创 求最大公约数(Java)
4.辗转相除法 ---递归调用---简化写法。*6.调用函数递归 更相减损法--简化。*3.辗转相除法 ---递归调用。*5.调用函数递归 更相减损法。
2023-11-17 02:46:00
61
原创 通用Http请求的工具类(Java)
在Java开发中很常用的就是调用http请求或者发起http接口请求,这里我把我平时常用的封装类代码贴出来,望留下宝贵意见到评论区;
2023-11-16 18:02:53
544
1
原创 模版模式的实现(Java)
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。· 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
2023-11-16 17:41:00
174
1
原创 桥梁模式的实现(Java)
bridgeMessage.sedMessage("周末有事不能加班","jijun.Deng");System.out.println(toUser+"通过邮件发送消息内容:"+message);System.out.println(toUser+"通过短信发送消息内容:"+message);bridgeMessage.sedMessage("紧急:周一请假","dewen.Li");bridgeMessage.sedMessage("周末加班","dewen.Li");
2023-11-13 00:06:29
42
原创 MySQL基础命令
executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',`trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行',`executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',· 不加-h参数,默认本地连接地址(localhost)
2023-11-12 06:19:40
45
1
原创 适配器设计模式实现(Java)
定义凳子接口类,沙发接口类,椅子实现凳子接口类,并增加自有功能的方法,椅子也可以实现沙发接口类,只实现自有的功能。System.out.println("邓牌沙发躺着不做梦,15秒内能睡着");System.out.println("我选择性继承适配器拥有的功能吧");System.out.println("来自凳子的所有特性");System.out.println("我可以靠着");System.out.println("我可以躺着");System.out.println("当凳子坐");
2023-11-12 04:59:40
67
1
原创 抽象工厂的实现(Java)
System.out.println("包装最新鲜的 核类 水果");* @Date: 2020-05-25 下午4:16。* @Date: 2020-05-25 下午3:05。* @Date: 2020-05-25 下午3:16。* @Date: 2020-05-24 下午4:52。* @Date: 2020-05-25 下午4:19。* @Date: 2020-05-25 下午4:20。* @Date: 2020-05-25 下午4:34。* @Date: 2020-05-25 下午4:48。
2023-11-12 04:35:30
67
1
原创 Java快速排序
对于{5,7,6,1,9,10,4,2,3,8}这个数组,第一次排序我们的Flag是5,我们分别从数组的左右两端开始“探测”。* 数组被划分为两个区,Flag左边是小于Flag的{4,3,2,1},Flag右边是大于Flag的{10,9,6,7,8}。* 假设我们现在要对{5,7,2,1,9,10,4,6,3,8}这个数组进行快速排序,我们应该怎么怎么做呢?* 将3和7交换,数组变为{5,3,2,1,9,10,4,6,7,8}。* 第二次交换结束后数组变为{5,3,2,1,4,10,9,6,7,8}。
2023-11-05 23:07:43
57
jdk-8u421-windows-i586版本,安装后java版本为:1.8.0-421
2024-07-22
版本管理-git(管理约定)
2023-11-19
经典排序代码实现及分析
2022-05-31
struts2+spring2.5+hibernate3.1整合包
2010-12-15
java mail开发所需jar包
2010-12-15
oracle数据库驱动包
2010-12-14
生成exe可执行文件工具
2010-12-09
最新tomcat日志查看包
2010-05-24
最新最全的spring开发包
2010-05-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人