二分法排序
本文由 简悦 SimpRead 转码, 原文地址 https://www.cnblogs.com/bugY/archive/2011/04/28/2032293.html
算法思想简单描述:在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。 二分法排序最重要的一个步骤就是查找要插入元素的位置,也就是要在哪一个位置上放我们要准备排序的这个元素。当我们查找到位置以后就很好说了,和插入排序一样,将这个位置以后的所有元素都向后移动一位。这样就实现了二分法排序。 然后是怎么查找着一个位置呢,就是不断的比较已排序的序列中的中间元素和要排序元素,如果大于的话,说明这个要排序的元素在已排序序列中点之前的序列。123456789101112131415161718192021222324252627282
...
夯实基础系列一:Java 基础总结
本文由 简悦 SimpRead 转码, 原文地址 https://segmentfault.com/a/1190000016461719
前言大学期间接触 Java 的时间也不短了,不论学习还是实习,都让我发觉基础的重要性。互联网发展太快了,各种框架各种技术更新迭代的速度非常快,可能你刚好掌握了一门技术的应用,它却已经走在淘汰的边缘了。
而学习新技术总要付出一定的时间成本,那么怎么降低时间成本呢?那就是打好基础,技术再怎么革新,底层的东西也很少会变动,牢固的基础会帮助你在各种新技术的学习中游刃有余,快速上手。
因为我选择的方向是后台开发,所以谈谈我认为的基础有哪些。其他方向肯定也有自己的体系,从低层到高层,可以自己摸索。后台的话,我觉得网络知识,各种协议,web 知识,数据库知识,Linux 基本操作以及自己选择的后台语言知识,这些是最基础最需要牢固掌握的。
所以从今天起,会出一系列与后台基础相关的博文,一是对自己过去学习的一个总结,二是分享出来,希望可以帮助到需要的人。
概要Jav
...
Redis 持久化(persistence)
本文由 简悦 SimpRead 转码, 原文地址 https://segmentfault.com/a/1190000015897415
本文首发于 Redis 持久化(persistence)技术口袋书,转载请注明出处。
本文讲解 Redis 数据库的数据持久化解决方案。
测试环境:
Windows 7
Redis 4.0.2.2 去下载 Windows 版本
RDB 和 AOF 持久化解决方案Redis 提供两种持久化解决方案:RDB 持久化和 AOF 持久化。
要点:
RDB 持久化:可以在指定时间间隔内,生成数据集在这个时间点的快照。AOF 持久化:通过记录服务器执行的所有写操作命令,在服务器重启时,通过重新执行这些命令来还原数据。
RDB 持久化方案采用 RDB 持久化方案时,Redis 会每隔一段时间对数据集进行快照备份,换句话说这种方案在服务器发生故障时可能造成数据的丢失。所以,如果对数据的完整性有比较强烈的要求,可能不太适用这种备份方案,即它适用于做数据的备份
...
MyBatis 理解与掌握(关联查询)
本文由 简悦 SimpRead 转码, 原文地址 https://segmentfault.com/a/1190000016438167
MyBatis 理解与掌握(关联查询)@(MyBatis)[Java, 框架, MyBatis]
一对一查询案例:查询所有订单信息,关联查询下单用户信息
从 Order 的角度,一个订单对应一个用户:order—–>user (一对一)从 User 的角度,一个用户可以有多个订单:user——>order (多对一)
场景需求:查询订单,同时关联查询用户信息——————————- 表设计 ——————————————在 t_orders(多方表) 中增加一个字段 user_id,作为外键
——————————- 类设计 ——————————————
1234567891011public class Order { private int oId; private int number; private User us
...
MyBatis 理解与掌握(动态 SQL)
本文由 简悦 SimpRead 转码, 原文地址 https://segmentfault.com/a/1190000016424222
MyBatis 理解与掌握(动态 SQL)@(MyBatis)[Java, 框架, MyBatis]
ifif 就是简单的条件判断 ,利用 if 语句我们可以实现某些简单的条件选择。先来看如下一个例子:
12345678910<select id="selectUserByUserNameAndSex" resultType="com.george.pojo.User" parameterType="com.george.pojo.User"> select * from user where <if test="userName != null"> username=#{userName
...
JAVA 多线程与并发学习总结
本文由 简悦 SimpRead 转码, 原文地址 https://segmentfault.com/a/1190000016041898
1、计算机系统使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行;当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。
缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的运算任务都设计到同一块内存区域时,将可能导致各自的缓存数据不一致的情况,则同步回主内存时需要遵循一些协议。
乱序执行优化:为了使得处理器内部的运算单位能尽量被充分利用。
2、JAVA 内存模型目标是定义程序中各个变量的访问规则。(包括实例字段、静态字段和构成数组的元素,不包括局部变量和方法参数)
1. 所有的变量都存储在主内存中 (虚拟机内存的一部分)。
2. 每条线程都由自己的工作内存,线程的工作内存中保存了该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内
...
Docker CheatSheet | Docker 配置与实践
本文由 简悦 SimpRead 转码, 原文地址 https://juejin.im/post/5ba11f635188255c8473a134?utm_source=gold_browser_extension
📖 节选自 Awesome CheatSheet/Docker CheatSheet,对来自官方文档及 Docker Links 中链接内容的归档整理,包含了日常工作中常用的 Docker 概念与命令,如果对于 Linux 常用操作尚不熟悉的可以参考 Linux Commands CheatSheet。
Docker CheatSheet | Docker 配置与实践清单Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
虚拟机最大的瓶颈在于其需要特殊硬件虚拟化技术支持,并且携带完整的操作系统;而 D
...
详细领悟ThreadLocal
本文由 简悦 SimpRead 转码, 原文地址 https://juejin.im/entry/5b9dca7cf265da0a9223a056?utm_source=gold_browser_extension
关于对 ThreadLocal 变量的理解,我今天查看一下午的博客,自己也写了 demo 来测试来看自己的理解到底是不是那么回事。从看到博客引出不解,到仔细查看 ThreadLocal 源码(JDK1.8),我觉得我很有必要记录下来我这大半天的收获,
今天我研究的最多的就是这两篇文章说理解。我在这里暂称为 A 文章和 B 文章。以下是两篇博文地址,我是在看完 A 文章后,很有疑问,特别是在 A 文章后的各位网页的评论中,更加坚定我要弄清楚 ThreadLocal 到底是怎么一回事。
A 文章:http://blog.csdn.net/lufeng20/article/details/24314381B 文章:http://www.cnblogs.com/dolphin05
...
二叉树遍历
本文由 简悦 SimpRead 转码, 原文地址 https://www.jianshu.com/p/456af5480cee
二叉树有多种遍历方法,有层次遍历、深度优先遍历、广度优先遍历等。
本文只涉及二叉树的先序、中序、后序的递归和非递归遍历。
涉及到的代码都用 Java 编写。
首先给出二叉树节点类:树节点:
1234567891011class TreeNode { int val; //左子树 TreeNode left; //右子树 TreeNode right; //构造方法 TreeNode(int x) { val = x; }}
无论是哪种遍历方法,考查节点的顺序都是一样的 (思考做试卷的时候,人工遍历考查顺序)。只不过有时候考查了节点,将其暂存,需要之后的过程中输出。
如图 1 所示,三种遍历方法 (人工) 得到的结果分别是:
先序:1 2 4 6 7
...