
编程思想
文章平均质量分 59
王者丶丿风范
亦是习惯,亦是信仰
展开
-
从简单算法改进说起算法优化中数学的作用
简单算法优化思路原创 2022-07-18 17:13:16 · 230 阅读 · 0 评论 -
桥梁模式+反射+枚举实现多维度组合代码优化实践
一种基于枚举配置类名,通过反射获取服务类,依靠桥梁模式连接两个维度,最终获取数据的java实践。原创 2021-07-15 17:57:45 · 224 阅读 · 0 评论 -
给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组
给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组示例1输入复制[4,5,1,6,2,7,3,8],4返回值复制[1,2,3,4]用list做数据结构,利用其add(index,value)的自移动特性减少循环手工移动数据操作,使用插入排序排序排序整个数组后取前ki个数放入新的list中实现获取最大的k值。import java.util.*;public cla原创 2021-03-19 16:23:42 · 1911 阅读 · 2 评论 -
枚举代替switch并实现O(1)时间复杂度获取名称值
枚举代替switch并实现和switch同级别O(1)时间复杂度获取名称值最近边做边玩,看着一个新功能要每个方法写一个switch心生不爽,就给他列巴列巴,看着已经使用了枚举类型,干脆一不做二不休,把枚举搞一搞,说来也巧,枚举搞switch很简单。数组就行,如果有字符串那就加个哈希。自己写呗。我希望通过输入的类型(输入的类型是数字,数字与实际含义通过指定规则对应)直接获取到指定的规则名称。代码如下/** * 公告类型:1-公告1;2-公告2;3-公告3;4-公告4 * */ @AllArgs原创 2020-06-28 15:34:44 · 949 阅读 · 0 评论 -
迁移web资源到webapp目录过程及注意事项
刚入职一家公司,项目时新搭建的,main目录下只有java和resource目录,没有webapp目录。emmm,没有webapp目录tomcat怎么监测页面的变动,怎么热加载吗????技术负责人告诉我写完代码重启。这操作简直丧尽天良,改一段代码想看效果就要重启???觉得996不够要007吗?作为一个优秀的程序猿(hhh,老脸一红),我们要避免做重复的和毫无意义的工作,不仅提高开发效率,提高公司...原创 2020-05-08 14:45:16 · 873 阅读 · 0 评论 -
mysql的几种日志工作原理
mysql的几种日志工作原理redo logInnoDB引擎层日志,属于物理日志,从5.5.5版本开始加入,记录每次操作的行为,用于宕机恢复。它的空间是固定的, 所以会用完。binlogserver层日志,采用增量写入方式,主要用于备份数据库或恢复数据库undo log回滚日志,用于事务提交失败回滚或其他错误回滚。redo log和binlog的两阶段提交:在update操作中,s...原创 2020-03-04 21:09:36 · 628 阅读 · 0 评论 -
磁盘调度算法
磁盘调度算法来自不同进程的磁盘 I/ 0 请求会构成一个随机分布的请求队列。磁盘 I/ 0 调度的主要目标就是减少请求队列中对应的平均柱面定位时间。目前常用的磁盘调度算法有:先来先服务最短寻道时间优先扫描算法循环扫描算法。先来先服务算法( First Come First Served, FCFS) 算法这是一种最简单的磁盘调度算法,它根据进程请求访问磁盘的先后次序进 行调度...转载 2020-03-04 11:46:40 · 466 阅读 · 0 评论 -
页面置换算法
页面置换算法1. 总述为提高内存利用率,解决内存供不应求的问题,更加合理的使用内存,人们创造了分页式内存抽象。同时有一个虚拟内存的概念,是指将内存中暂时不需要的部分写入硬盘,看上去硬盘扩展了内存的容量,所以叫做“虚拟”内存。使用虚拟内存,应用程序可以使用比实际物理内存更大的内存空间。可以认为这个更大的内存空间就在硬盘上,只有将某一部分需要被用到时,才被写入真实内存;当它暂时不再被用到时,又被写...转载 2020-03-03 23:13:39 · 296 阅读 · 0 评论 -
进程通信方式
进程通信方式1、管道(BIO)例举一个我最常用的linux命令ps -ef|grep java其中 | 就是管道的意思,它的作用就是把前面的输出 ps -ef(列出所有进程),作为 grep java 的输入。最终完成列出所有包含java字符的进程信息。由于这条竖线是没有名字的,所以它被定义为匿名管道。而且它只能单向传递,所以它也叫单向管道。如果想创建一个命名管道可以通过 mkfifo...原创 2020-03-03 23:11:53 · 189 阅读 · 0 评论 -
解决哈希冲突的三种方法(拉链法、开放地址法、再散列法)
什么是哈希冲突,其实就是再采用哈希函数对输入域进行映射到哈希表的时候,因为哈希表的位桶的数目远小于输入域的关键字的个数,所以,对于输入域的关键字来说,很可能会产生这样一种情况,也就是,一个关键字会映射到同一个位桶中的情况,这种情况就就叫做哈希冲突,解决哈希冲突的有三种方案,一种叫做拉链法(也叫作链接法、链地址法,一个意思),另外三种分别为开发地址法和再散列法。一、拉链法上篇博文我们举的例子,H...转载 2020-01-10 14:42:59 · 1835 阅读 · 0 评论 -
java Volatile 关键字
Volatile :1.保证可见性说起这个特性必须要提一下JMM内存模型每个线程的工作内存中会生成主内存的变量副本,这一特性可能会导致变量延迟,在高并发情形下可能会导致数据读取错误的问题。而volatile可以做到 每次读取前必须先从主内存刷新最新的值。 每次写入后必须立即同步回主内存当中。这样就可以保证并发情形下数据的一致性2.不保证原子性(原子性:不可分割,完整性,也即某个线...原创 2019-10-17 11:23:56 · 159 阅读 · 0 评论 -
docker安装步骤
1.安装工具包yum install -y yum-utils执行结果2.设置远程仓库(当然是官方的高质量仓库了)yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo执行结果3.安装(100M文件)这里可能会下载失败,重新执行命令即可,或者换个网络,文件支持断点...原创 2019-09-18 11:03:25 · 297 阅读 · 0 评论 -
java8lambad能做什么
java8lambad能做什么较系统的学习了lambad导言Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正在将自己变的更高(Sha)级(Gua),更人性化。--------可以这么说lambda表达式其实就是实现SAM接口的语法糖。lambda写的好可以极大的减...转载 2019-09-16 11:49:01 · 286 阅读 · 0 评论 -
钻钻 “单例模式” 的牛角尖!你写的安全吗?
枚举很适合用来实现单例模式。实际上,在 Effective Java 中也提到过(果然英雄所见略同):单元素的枚举类型经常成为实现 Singleton 的最佳方法 。首先什么是单例?就一条基本原则,单例对象的类只会被初始化一次。在 Java 中,我们可以说在 JVM 中只存在该类的唯一一个对象实例。在 Android 中,我们可以说在程序运行期间,该类有且仅有一个对象实例。说到单例模式的实现,...转载 2019-06-28 09:56:44 · 266 阅读 · 0 评论 -
正排索引(前向索引) 和 倒排索引
正排索引也称为"前向索引"。它是创建倒排索引的基础,具有以下字段。(1)LocalId字段(表中简称"Lid"):表示一个文档的局部编号。(2)WordId字段:表示文档分词后的编号,也可称为"索引词编号"。(3)NHits字段:表示某个索引词在文档中出现的次数。(4)HitList变长字段:表示某个索引词在文档中出现的位置,即相对于正文的偏移量。由于一篇文章中的某些词可能出现多次,而...转载 2019-06-25 12:14:22 · 1953 阅读 · 0 评论 -
迁移eclipse项目到idea
经常把项目在两个工具里做迁移。一直没有记录,今天又迁移了一次想起确实有几个注意点,就记录下来分享给大家了。这是一个eclipse项目仅添加了git,由于项目需要给小白用,就没用Maven,免得再配置个maven,蜗牛一般的下载依赖。迁移到idea1.修改项目构建源和构建版本我们打开idea点击File–》open找到你硬盘中要导入的项目单击选中,再点ok然后需要确认的时候可...原创 2019-06-20 21:58:18 · 5615 阅读 · 0 评论 -
为什么要前后端分离?各有什么优缺点?
一、前端前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端html页面通过ajax调用后端的restuful ...转载 2019-05-22 10:29:42 · 796 阅读 · 0 评论