- 博客(17)
- 收藏
- 关注
原创 sql语句复习总结(视图篇)
视图有点像ps当中的图层,每一个图层可以由用户自己定义,用户可以决定这张图层中应该显示什么样的内容,在《数据库系统概论》中说,视图就像窗口,透过这个窗口可以看到数据库中用户自己感兴趣的数据或者变化,这其中有个关键的地方,就是视图是给用户“看”的,对于数据的真正操作,还是基本表,所以关于视图,首先需要明确的是视图只是一张虚表,视图只是一种定义,而没有存储数据,相对而言,数据库中真正存在的表则是基本表...
2019-08-24 10:42:14 830
原创 char与varchar的区别
复习数据库的时候,注意到一个比较有意思的,之前没怎么注意的问题,就是char与varchar的区别。在此做小小的一个学习记录两者最根本的区别是:char的长度是确定好的,而varchar的长度是可变的,比如说存“abc”,则char(10)表示存储的字符串将占10个字节,其中包括7个空字符,也就是下面这样而对于同样的varchar(10)只占了4个字节,增加一个字节来存储字符串本身的长...
2019-08-22 08:35:06 215
原创 sql语句复习总结(单表篇)
本文主要总结了那些我认为需要(没记住)再好好复习一遍的sql语句,有些语句虽然简单,但是还是有些细节需要注意,要不然一上手还是容易写错,复习中发现之前没有理解或者不记得的点,比如说为啥where不能跟聚集函数一起用,group by跟having有啥区别~,借此文做一个学习记录,我没有对这些语句做严格的分类,主要包含了alter相关,update相关,模糊查询,删除,聚集函数,group by跟h...
2019-08-21 17:24:22 277
原创 交换类排序算法总结(代码+数据测试)
交换类的排序思想就是通过交换逆序元素进行排序的方法。冒泡排序通过相邻元素的交换消除逆序,而快排则通过不相邻的元素交换消除逆序,效率相对较高。接下来说说这两种排序算法,以及算法的优化。1.冒泡排序算法:遍历整个待排序列,遍历过程当中顺次比较相邻两个元素的大小,如果逆序就交换,所以,每一躺遍历之后,最大(假设是升序)的元素一定在最后面,像是“冒泡泡”。代码(算法的实现细节都有标注释)如下:/...
2019-08-16 13:28:28 343
原创 插入类排序算法总结(代码+数据测试+稳定性分析)
资料表明,在当今计算机上,排序占用计算机CPU时间已经高达30%—50%,排序是计算机程序设计中的一种基础性操作,研究以及掌握各种排序算法非常重要,今天就总结一下插入类的三种排序算法 下面主要是插入类排序算法的代码总结以及测试对比。其实描述一个算法用文字是相对比较抽象的,如果对这些算法不太熟悉,建议对于排序算法的具体学习推荐B站韩顺平老师讲的《数据结构与算法》...
2019-08-15 17:38:06 389
原创 LeetCode:用栈实现二叉树的前中后序遍历
第144题:前序遍历package test;import java.util.ArrayList;import java.util.List;import java.util.Stack;class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}...
2019-08-09 20:39:14 479 1
原创 实现一个自己的哈希表Hashtable(数组+TreeMap)
这个哈希表的实现是相关数据结构的学习记录,简单实现了一个哈希表,跟Java api中的Hashtable是不相同的,这个哈希表底层用的是数组和TreeMap,对于这个哈希表来说,有几个比较重要的地方,首先是hash值的运算方法,采用的是模除哈希表的长度M // 计算每个key对应的hash值 private int hash(K key) { ...
2019-08-09 09:27:30 282
原创 二分搜索树-实现代码以及详细注释
提供添加,删除,搜索,和三种遍历方式,可重点看这些方法的注释 package bst; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; public class BST<E extends Comparable<E>> { ...
2019-08-02 10:34:46 249
原创 生产者消费者问题(多生产多消费,java实现)
生产者消费者问题有多种,本文阐述的是多个生产者生产商品,多个消费者消费商品,缓冲区中有多个商品,这种情况下应该怎么处理线程安全问题首先,具体用一张图描述一下这种情形,达到的效果是,多个生产者一边生产,多个生产者一边消费。需要注意两个临界情况 1.缓冲区满的时候,生产者不能继续生产 2.缓冲区空的时候,消费者不能继续消费测试效果展示:...
2019-07-29 12:33:45 2625
原创 进程的由来以及跟程序的区别
说到进程的由来,就不得不提早期的未配置OS的计算机系统以及后来的单道批处理系统,在这种系统中的程序是顺序执行的,比如说在没有配置操作系统的计算机系统采用的人工操作方式,,程序员将事先已经穿孔的纸带,装入纸带输入机,输入机将这些程序与数据输入,然后启动计算机运行,这时就会有一个问题,就是cpu的速度与I/O设备的速度时严重不匹配的,同时还有一个更严重的问题,在进行输入输出操作的时候,cpu与其他计算...
2019-07-26 21:37:43 482
原创 谈谈网站注册功能的数据封装(jsp+servlet)
首先说一下注册功能的实现思路,注册账户的意思是什么呢,比如你访问了京东网,来到注册页面,你会填写一些基本信息,后台代码读取这些信息,最后写入数据库,并返回给你一个注册成功或者失败的结果,对于网站开发来说,注册功能的实现其实算是比较基础的内容,因为它并不涉及复杂的业务逻辑,但是,实现注册功能的过程中,有一些我觉得好的点,比如说对于数据的封装,是值得去注意的地方。(文章最后给出核心代码)比如像下面...
2019-07-24 21:59:42 364
原创 将一个数组转化成最大堆的方法实现
本片是对上一篇的补充,实现的是一个小方法,就是将用户传来的数组变成堆,其实有一种比较简单的方法,就是将数组的元素进行遍历,然后将其一个一个加入到堆当中,但此做法时间复杂度为O(nlogn),相对于第二种做法时间比较长,第二中做法叫做heapify,时间复杂度为O(n),实现的思路还是挺容易的,就是先将用户传来的数组转换成动态数组,因为我的最大堆底层用的是自定义的动态数组类,然后此时,数组中的元素排...
2019-07-23 12:47:51 3330
原创 最大堆以及堆排序(Java实现)
二叉堆是本质是一棵完全二叉树,完全二叉树简单而言就是元素按照顺序一层一层的加入树中,除了最后一层之外,每一层上的节点数均达到最大值,只有在最后一层右下侧缺少若干个节点。图片引自百度百科那最大堆的意思就是堆中父节点一定会大于它的孩子节点,相反就是最小堆,其实二叉堆就是元素按照顺序(这里的顺序不是指元素的大小顺序,而是指存放顺序)一层一层的放进树中,所以二叉堆完全可以用数组来表示。如下...
2019-07-22 18:10:26 554
原创 LRU算法(使用自定义双向链表实现)
LRU算法:最近最少使用算法 核心思想:淘汰掉最近访问次数最少的字块 举一个例子:假设缓存有4个字块 1 2 3 4 此时该四个字块被访问并加载到缓存中,假设此时,cpu第二次访问,访问到3这个字块,LRU算法会把3这个字块置换到序列的最前面,此时,序列顺序变成 3 1 2 4,假设此时,cpu第三次访问,访问了内存当中的第5个字块,但...
2019-07-21 19:27:17 2074
原创 获取子目录所有内容- 使用队列与递归两种方式实现
//使用递归 public static void getDirByRecur(File dir) { File[] childDirs=dir.listFiles(); if(childDirs==null) { return; } for (File childDir : childDirs) ...
2019-07-16 21:00:05 150
原创 进程的创建之Unix环境fork一个进程
如果运行的是父进程,则返回的pid号为非负,如果为子进程,pid返回为0,在Unix系统中,父进程创建子进程之后,先运行子进程,再执行父进程int main(){pid_t pid;pid=fork();//创建子进程if(pid<0){fprintf(stderr,"Fork Failed");exit(-1);}else if(pid==0){execlp("/bin/ls","ls"...
2018-06-09 21:33:07 363
原创 Java版 将数组中的数逆序存放
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。输入格式:输入在第一行中给出一个正整数n(1)。第二行输入n个整数,用空格分开。输出格式:在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。输入样例:410 8 1 2输出样例:2 1 8 10程序: import java.util.Scanner;public...
2018-06-09 21:16:15 12174 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人