
算法
文章平均质量分 63
神州永泰
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
谈一谈强大的C语言
C语言之所以被认为是强大的编程语言,是因为它接近硬件、高效、可移植、拥有强大的库支持、灵活且控制力强,并且历史悠久且广泛应用。这些特点使得C语言在多种编程场景中都能够发挥出色的作用。原创 2024-09-12 17:30:25 · 1267 阅读 · 0 评论 -
Mysql数据库当执行SQL响应比较慢,怎样排查及解决?
一 如果执行SQL响应比较慢,可能有以下四个原因:1 没有索引或者是SOL没有命中索引,导致索引失效。2 单表数据量过多,导致查询遇到瓶颈。3 可能是网络原因,或者机器负载过高。4 热点数据导致单点负载不均衡。原创 2024-08-29 13:09:51 · 797 阅读 · 0 评论 -
讲一讲Netty pipeline的工作原理
讲一讲Netty pipeline的工作原理原创 2024-08-28 14:40:06 · 330 阅读 · 0 评论 -
谈谈双向链表(一)
双向链表的定义:双向链表是线性表的的另一种链式存储结构形式。在该存储结构中,每个节点设置了二个方向的指针,分别指向当前节点的直接前驱和直接后继。原创 2023-02-20 19:46:05 · 277 阅读 · 0 评论 -
二叉树的四种遍历方式(二)
二叉树的四种遍历方式(二),按层次遍历原创 2023-02-11 23:23:57 · 639 阅读 · 0 评论 -
二叉树的四种遍历方式(一)
二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。由二叉树的递归定义可知,一个非空的二叉树由根节点、左子树,右子树三部分组成,如果用L、D、R表示遍历左子树,遍历根节点,遍历右子树,则有DLR、LDR、LRD、DRL、RDL、RLD六种遍历方式,如果限定先左后右的规则,则遍历方案减少为3种,即DLR(先序(根)遍历)、LDR(中序(根)遍历)、LRD(后序(根)遍历),再加上按层次从左到右进行遍历原创 2023-02-06 00:07:02 · 726 阅读 · 0 评论 -
程序员需要知道的几个技术网站
程序员需要知道的几个技术网站原创 2023-01-30 19:27:19 · 423 阅读 · 0 评论 -
关于数据库调优,看这些就够了
数据库调优策略,数据库调优的方法原创 2023-01-29 23:20:26 · 363 阅读 · 0 评论 -
这些低代码平台,你是否知悉?
低代码low-code,无代码no-code,合称LCNC,近年来获得较快发展。低代码和无代码(LCNC)软件应用是当今商业领域最大的技术创新之一。顾名思义,低代码和无代码开发有助于简化开发流程,而不需要复杂的编程工具或专业知识。LCNC对用户的技术知识要求很低,是易于实施的开发解决方案。本文将集中介绍12种低代码平台。原创 2023-01-27 21:17:16 · 22088 阅读 · 13 评论 -
谈谈线程安全问题及其解决方法
三个窗口都卖出票1,一个票被卖了3次,多线程访问共享数据“票”,出现了线程安全问题。原创 2023-01-24 22:23:24 · 1123 阅读 · 0 评论 -
有关Java多线程的几个概念
并发与并行,进程与线程,java多线程机制,java的主线程,sleep与wait原创 2023-01-23 20:19:43 · 813 阅读 · 0 评论 -
说说多线程及创建多线程的四种方式
一、线程是什么?在计算机中当一个程序运行的时候就会创建至少一个进程,例如当我们运行WPS office 的时候,系统就会创建进程来处理我们平时的一些操作,当我们打开任务管理器的时候,在进程的列表里面就可以找到WPS Office.exe的运行程序;原创 2023-01-23 15:27:28 · 2199 阅读 · 0 评论 -
作为java工程师这些概念要理清(一)
作为java工程师这些概念要理清原创 2023-01-16 20:54:27 · 817 阅读 · 0 评论 -
Kettle用法之Windows定时任务
前文提到了kettle的定时任务计划,但这个任务需要开启kettle,本文将利用windows的任务计划实现kettle的定时任务。原创 2023-01-12 20:21:07 · 2844 阅读 · 0 评论 -
Kettle用法之定时任务
前面讲述了kettle调用Restful API接口,当时只生做了一个转换,本文提到的定时任务将调用上文做的转换。原创 2023-01-11 23:28:49 · 6345 阅读 · 1 评论 -
用Kettle调用Restful API 接口
基于组件REST Client 请求 Restful API ,先访问获取token的Restful API,在得到包含token的结果集后,再用组件JSON input 从中抽取token,然后再用另一个组件REST Client 携带得到的token,访问包含业务数据的Restful API,经组件字段选择过滤后,再经组件表输出,将数据写入目标数据库对应的表。原创 2023-01-08 18:25:43 · 6733 阅读 · 2 评论 -
谈谈事务及Spring事务
事务就是一组操作集合,这组集合中的操作要么全部执行,要么全部不执行;这组操作集合是操作数据库的一个单独的程序执行单元,而这个执行单元是用来更新数据库中各项数据的。原创 2022-11-01 16:04:25 · 367 阅读 · 0 评论 -
Java工程师只要掌握这些知识点,就能给面试官一个满意的答案,挑战高薪
以下是我花时间整理的 java各类知识面相关的比较好的博文,如果你是去一家公司面试,无论你是刚入行,还是有多年开发经验,好好掌握学习一下比较好,。毕竟对于面试官来说,如果他问的问题,你回答不上来,肯定会减分,会让你与目标岗位失之交臂。虽然对一些具有多年开发经验的工程师来说,这些知识肯定都用到或者涉猎过,可能认为这些不需要记住,毕竟凭借多年的工作经验,只需用时百度一下,扫上几眼,温习一下,就能解决问题。但我提醒一下,如果你要参加面试一定要记住、理解并能讲出来,否则肯定是减分。原创 2022-10-31 00:00:45 · 686 阅读 · 0 评论 -
一个新的排序算法及实现-双假设排序法
排序是数据处理中经常使用的一种重要运算,在《数据结构》教材中,排序是最后一章,是将数据结构理论用到生产实践中解决实际问题的一个示例。在排序中,会用到《数据结构》中线性表、队列、树等数据结构知识。在生产中,我们经常用到的是内排序,根据内排序是否基于关键字的比较,将内排序算法分为基于比较的排序算法和不基于比较的排序算法。像插入排序(直接插入排序、折半插入排序、表插入排序、希尔排序)、交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、树形选择排序、堆排序)、归并排序(二路归并排序)等都是基于比较的排序;而基原创 2022-04-05 23:59:26 · 1316 阅读 · 0 评论 -
高并发应用的性能优化方案
JVM调优流量优化防盗链处理前端优化3.1. 减少http请求数使用图片地图 /变多次请求为一次使用css 精灵 贴图定位 /变多次请求为一次合并多个css和js /变多次请求为一次使用base64图片 /将图片请求省去3.2. 启用浏览器缓存和文件压缩http缓存机制nginx配置缓存策略前端代码和资源压缩3.3. CDN加速3.4. 建立独立图片服务器服务端优化4.1. 动态语言静态化使用模版引擎利用ob系列函数ob_start 打开输出控制缓冲ob_get.原创 2020-10-08 20:51:00 · 1357 阅读 · 1 评论 -
基于分布式的实时推荐系统的架构设计
这几天,学习了分布式实时推荐系统的相关知识,了解到抖音,阿里这些网站都有这方面比较牛的系统。下面是我经过一番学习后,设计的几个草图,记录下来,留作参考。1 总体架构图2 利用MyCat实现数据库分区分表,读写分离。3 利用Redis 实现查询数据缓存。4 数据库数据量大时,将数据库拆分为实时库集群与历史库集群。...原创 2020-10-08 16:41:53 · 1159 阅读 · 0 评论 -
Cannot find declaration to go to的解决方法
使用IDEA,用@Autowired,@Qualifier注入类时,尝试ctrl+鼠标左键进入该类,提示“Cannot find declaration to go to”或者“Cannot find bean with qualifier ‘*********’” 。笔者总结,解决办法有以下几种:1 导入项目的时候使用的是Open而不是Import Project。File–>close project 重启IDEA,并重新import项目; 2 检查pom文件配置,确认是否引入相应j原创 2020-08-31 22:58:14 · 35860 阅读 · 0 评论 -
打印菱形-最高效的算法之一
1 题目:请写一个程序,它能够打印符合以下规则的任意行数的图形,其中输入为int型参数,代表图形行数,且该行数为大于3的奇数。2 解题思路:思路1:将图形分成2个部分,上部分一个循环,下部分一个循环,分别打印” ”和””;但这种方法效率太低。思路2:将图形分成2个部分,上部分作为一个循环,分别打印” ”和””;并把前(行数-1/2)的打印内容存入栈中,之后再打印栈中的内容,这样效率会很高。3 java代码import java.util.*;/* 用栈实现 */public clas原创 2020-07-16 12:31:16 · 915 阅读 · 0 评论 -
45岁的老程序员被拒,是职场错了吗?
年龄大了,在职场经常遭遇人力的回复:“哥,您年龄超了”、“领导要求招37岁以下的”、“我们大多是90后,岗位leader也才87的”、“不好意思,岗位不是十分匹配”、“很遗憾,这个岗位有年龄限制,希望早日找到满意的工作机会”......; 在企业,领导年轻化,我们要支持,要点赞。毕竟年轻人是时代的脉搏,有贴近社会前进的思想;但员工不能完全年轻化。唐僧西天取经的故事告诉我们,唐僧这位年轻的领导还是需要老员工辅佐的,如孙悟空500多岁,还有更大年龄的猪八戒和沙和尚。对年轻的领导唐僧来说,他只需有“去西天取.原创 2020-06-30 09:00:57 · 1472 阅读 · 0 评论 -
未解之谜之数学的196算法
一 196算法简介一个数正读反读都一样,我们就把它叫做“回文数”。随便选一个数,不断加上把它反过来写之后得到的数,直到得出一个回文数为止。例如,所选的数是 49,两步就可以得到一个回文数 484:49 + 94 = 143143 + 341 = 484把 59 变成一个回文数则需要三步,得到回文数111159+95=154154+451=605605+506=111189 的“回...原创 2020-04-25 23:21:00 · 3935 阅读 · 1 评论 -
大学四年,老哥推荐小伙伴们几个网站
话不多说,老哥给在校的同学们推荐几个网站。1、 菜鸟教程(网址:https://www.runoob.com/)这个网站很好,包含了前后端各种语言的学习,从c,c++、java到html,css,javascript,、php,各类编程相关基础的知识,写的非常详细,很易懂,非常适合刚开始学习编程的小伙伴们。2 w3school(网址:https://www.w3school.com....原创 2020-04-25 22:30:57 · 39291 阅读 · 6 评论 -
阿里2018年面试题之一
1 题目:求一个9位数,这个数由 1 ,2,3,4,5,6,7,8,9 组成,且数字不能重复,使得这个数的第一位能被 1 整除,前两位数能被 2 整除,前三位数能被 3 整除,以此类推,一直到整个九位数能被 9 整除。2 解题思路:思路1:暴力求解,从1123456789到999999999循环,分别计算前2位是否能被2整除,前3位是否能被3整除…,如果能继续,不能则退出,进入下一个循环;感觉...原创 2020-04-25 14:48:45 · 301 阅读 · 0 评论 -
数字黑洞6174(Kaprekar常数)之java演示
1 简介数字黑洞6174,也称“卡谱耶卡常数”(Kaprekar)。任意选一个四位数(数字不能完全相同),把所有的数字从大到小排列,再把所有数字从小到大排列,用前者减去后者,得到一个新的数;重复将新得到的数进行上述操作,7步之内,必然会得到6174。如:任选四位数:3、6、8、88863-3688=5175 (一步)7551-1557=5994 (二步)9954-4599=53...原创 2020-04-23 21:20:53 · 2488 阅读 · 0 评论 -
哈夫曼树之C#实现
关于哈夫曼树的讲解请参考上篇《三步学通哈夫曼树》(https://blog.youkuaiyun.com/helloworldchina/article/details/105210054),这里笔者仅补充一下C#代码的实现。见下:1 c#代码using System;using System.Collections.Generic;using System.Linq;using System.Te...原创 2020-04-22 20:05:37 · 887 阅读 · 0 评论 -
哈夫曼树之C++实现
关于哈夫曼树的讲解请参考上篇《三步学通哈夫曼树》(https://blog.youkuaiyun.com/helloworldchina/article/details/105210054),这里笔者仅补充一下C++代码的实现。见下:1 c++代码#include <iostream>#include <iostream>#include <iomanip>usi...原创 2020-03-30 22:38:20 · 1389 阅读 · 1 评论 -
三步学通哈夫曼树
前言哈夫曼树的历史由来。1951年,哈夫曼在麻省理工学院(MIT)攻读博士学位,他和修读信息论课程的同学得选择是完成学期报告还是期末考试。导师罗伯特•法诺(Robert Fano)出的学期报告题目是:查找最有效的二进制编码。由于无法证明哪个已有编码是最有效的,哈夫曼放弃对已有编码的研究,转向新的探索,最终发现了基于有序频率二叉树编码的想法,并很快证明了这个方法是最有效的。哈夫曼使用自底向上的方...原创 2020-03-30 22:11:25 · 3497 阅读 · 0 评论 -
KMP之C#实现
关于KMP的讲解请参考上篇《三步学通KMP》(https://blog.youkuaiyun.com/helloworldchina/article/details/104465772),这里笔者仅补充一下C#代码的实现,见下:1 next[]数组代码:public static int[] kmpNext(String str){ int[] next = new int[str.Length...原创 2020-03-07 00:00:00 · 433 阅读 · 0 评论 -
KMP之C++实现
关于KMP的讲解请参考上篇《三步学通KMP》,这里笔者仅补充一下C++代码的实现,见下:1 next[]数组代码:int* KmpNext(string str){ int* next = new int[str.size()]; next[0] = 0; for(int j = 1,k = 0; j < str.size(); j++) { ...原创 2020-02-29 11:21:07 · 360 阅读 · 0 评论 -
三步学通KMP
前言谈到字符串模式匹配算法,莫过于最经典的KMP算法,它由D.E.Knuth,J.H.Morris和V.R.Pratt三位大牛于1977年联合发表提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法),KMP算法可以在O(n+m)的时间复杂度以内完成字符串的匹配操作,其核心思想在于:当一趟匹配过程中出现字符不匹配时,不需要回溯主串的指针,而是利用已经得到的“部分匹配”,将模式串尽可能...原创 2020-02-23 20:40:07 · 5197 阅读 · 8 评论 -
求子串在目标串中第一次出现的位置
题目:有一个文本串s=“bacbababadababacambabacaddababacasdsd”,和一个模式串p= “bacaddabab”,现在要计算出p在S中第一次出现的位置解题思路:有简单模式匹配算法(暴力匹配法)和KMP算法,本文用简单模式匹配法实现。简单模式匹配法有人称为BF(Brute-Force)算法。该方法的基本思想是:从主串S="s1 s2 …sn"的第pos(pos为匹...原创 2020-01-31 22:37:05 · 2523 阅读 · 0 评论 -
自建单向链表,自建链栈,反向输出单向链表
题目:反向输出单向链表解题思路:反向输出单向链表方法有很多,但笔者采用自建单向链表,自建链栈,将单向链表中元素输入栈中,在取出栈中元素,输入到新单向链表中代码见下://自定义链表/链栈节点类public class Node<T>{ public Object data; public Node next;}public class LinkList&...原创 2020-01-28 20:44:20 · 468 阅读 · 0 评论 -
请写一个程序,它能够打印符合以下规则的任意行数的图形
题目:1、请写一个程序,它能够打印符合以下规则的任意行数的图形,其中输入为int型参数,代表图形行数,且该行数为大于3的奇数。解题思路:设行数为i,则前(i+1)/2行星号的数量为2i-1,后(i-1)/2行的星号与前(i-1)/2行为对称,如果将前(i-1)/2的每行字符存入栈中,当打印后(i-1)/2行时,输出栈内容即可.代码如下:namespace WindowsExercise{...原创 2020-01-27 00:14:30 · 1318 阅读 · 0 评论 -
求解爱因斯坦数学题
题目:爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在1到N内,有多少个数能满足?解题思路:此题与筐里鸡蛋问题属于一类题目,假设有最少有i个台阶,且假设台阶数小于10000(如果无解,可再增大),利用for循环,取模运算,即可求解;求得台阶最少数为...原创 2020-01-26 00:16:10 · 4197 阅读 · 0 评论 -
关于拿鸡蛋数学题的解法
求解:一筐鸡蛋,1个1个拿正好拿完,2个2个拿,还剩1个,3个3个拿,正好拿完,4个4个拿,还剩1个,5个5个拿,还差1个,6个6个拿,还剩3个,7个7个拿,正好拿完,8个8个拿,还剩1个,9个9个拿,正好拿完,问筐里有多少鸡蛋?解题思路:假设框里有最少有i个鸡蛋,且假设筐里鸡蛋数小于10000(如果无解,可再增大),利用for循环,取模运算,即可求解;求得筐里鸡蛋最少数为1449个。代码如下...原创 2020-01-25 23:48:56 · 3286 阅读 · 0 评论 -
自建队列,利用队列输出杨辉三角
题目:依据数据结构队列知识,编写一个算法,采用队列输出杨辉三角解题思路:1 自建队列,将杨辉三角的数据放入队列队尾;2 打印时,将队列头取出打印,并从队列中删除;代码如下:队列代码package queue; /** * 定义一个队列queue */public class Queue<T> { private Object...原创 2020-01-25 11:04:39 · 1966 阅读 · 0 评论