11 2018 档案

摘要:如何实现随机访问? 数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表 线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。 非线性表 在非线性表中,数据之间并不是简单的前后关系。 连续的内存空间和相同类型的数据。 int[] a = 阅读全文
posted @ 2018-11-26 23:55 _sanjun 阅读(474) 评论(0) 推荐(0)
摘要:![](https://img2018.cnblogs.com/blog/1251936/201811/1251936-20181126235244620-174677319.png) 阅读全文
posted @ 2018-11-26 23:53 _sanjun 阅读(138) 评论(0) 推荐(0)
摘要:如何分析、统计算法的执行效率和资源消耗? 执行效率是算法一个非常重要的考量指标。 时间、空间复杂度分析。 为什么需要复杂度分析 1、测试结果非常依赖测试环境 2、测试结果受数据规模的影响很大 我们需要一个不同具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。 大O复杂度表示法 粗略估计,每 阅读全文
posted @ 2018-11-26 14:54 _sanjun 阅读(411) 评论(0) 推荐(1)
摘要:什么是数据结构?什么是算法? 从广义上讲,数据结构就是指一组数据的存储结构,算法就是操作数据的一组方法。 从狭义上讲,数据结构是队列、堆、栈等,算法是二分查找、动态规划等。 数据结构和算法是相辅相成的。 数据结构是为算法服务的,算法要作用在特定的数据结构之上。 比如数组具有随机访问的特点,常用的二分 阅读全文
posted @ 2018-11-25 23:53 _sanjun 阅读(482) 评论(0) 推荐(0)
摘要:面试大厂 无论是校招还是社招,大厂都喜欢让人手撕算法代码。 业务开发工程师 虽然整天都是使用CRUD,但是想要用好,用对类库,就需要了解它们的设计原理(数据结构),时间、空间复杂度分析等。 我们还会使用到各种框架,中间件和底层系统,譬如Spring、RPC框架、消息中间件、Redis等,里面有很多基 阅读全文
posted @ 2018-11-25 23:44 _sanjun 阅读(617) 评论(0) 推荐(0)
摘要:规范设置接口, 有利于项目的可扩展性,提高前后端的交互特性。 请求参数 响应结果 阅读全文
posted @ 2018-11-25 14:51 _sanjun 阅读(351) 评论(0) 推荐(0)
摘要:两个疑问: 1、什么是版本控制? 2、为什么要用版本控制工具? 银联卡的特征: 1、受保护的 2、受约束的 如何与银联卡对应? 1、个人的代码——口袋里的钱 2、版本控制工具中的代码——银联卡里的钱 3、版本控制工具的客户端——银联卡 4、版本控制工具的服务端——银联系统 版本控制工具——SVN S 阅读全文
posted @ 2018-11-24 14:44 _sanjun 阅读(168) 评论(0) 推荐(0)
摘要:主要内容 简单回顾OAuth协议基本原理 接入QQ登录的前置条件以及开放平台账号申请 引入官方SDK SDK参数配置 SDK核心方法解读 整合QQ登录SDK到Web应用中 SDK优化 调用API的开发示例 腾讯开放平台政策、注意事项以及课程总结 OAuth协议简单回顾 接入QQ开放平台的前置条件 一 阅读全文
posted @ 2018-11-24 14:12 _sanjun 阅读(315) 评论(0) 推荐(1)
摘要:什么是OAuth OAuth的应用场景 工作原理 三个重要步骤 第三方登录 获取Request Token 获取Access Token 后续API访问 Refresh Token刷新Access Token 总结 OAuth协议简介 OAuth is short for Open Authoriz 阅读全文
posted @ 2018-11-24 11:14 _sanjun 阅读(587) 评论(0) 推荐(0)
摘要:Shiro RememberMe spring.xml login.html User.java UserController.java 阅读全文
posted @ 2018-11-23 16:12 _sanjun 阅读(959) 评论(0) 推荐(0)
摘要:Shiro缓存管理 CacheManager、Cache Redis实现CacheManager spring.xml RedisCache RedisCacheManager 阅读全文
posted @ 2018-11-23 15:37 _sanjun 阅读(424) 评论(0) 推荐(0)
摘要:Shiro Session管理 SessionManager、SessionDAO Redis实现Session共享 Redis实现Session共享存在的问题 依赖 spring redis.xml spring.xml JedisUtil.java RedisSessionDao.java Cu 阅读全文
posted @ 2018-11-23 15:09 _sanjun 阅读(248) 评论(0) 推荐(0)
摘要:Shiro内置过滤器 anon、authBasic、authc、user、logout perms、roles、ssl、port spring.xml Controller.java RolesOrFilter 阅读全文
posted @ 2018-11-23 13:52 _sanjun 阅读(261) 评论(0) 推荐(0)
摘要:依赖 spring mvc.xml Controller.java 阅读全文
posted @ 2018-11-23 13:03 _sanjun 阅读(244) 评论(0) 推荐(0)
摘要:依赖 web.xml CustomRealm spring.xml spring mvc.xml index.html login.html UserController User Shiro集成Spring——从数据库获取数据 spring dao.xml UserDaoImpl CustomRe 阅读全文
posted @ 2018-11-22 20:42 _sanjun 阅读(240) 评论(0) 推荐(0)
摘要:Shiro散列配置 HashedCredentialsMatcher 自定义Realm中使用散列 盐的使用 代码演示 阅读全文
posted @ 2018-11-22 20:23 _sanjun 阅读(118) 评论(0) 推荐(0)
摘要:Shiro自定义Realm 内置Realm: user.ini IniRealm JdbcRealm 权限表 自定义Realm CustomRealm CustomRealmTest 阅读全文
posted @ 2018-11-22 17:51 _sanjun 阅读(342) 评论(0) 推荐(0)
摘要:授权过程 1、创建SecurityManager 2、主体授权 3、SecurityManager授权 4、Authorizer授权 5、Realm获取角色权限数据 代码演示 阅读全文
posted @ 2018-11-22 17:16 _sanjun 阅读(118) 评论(0) 推荐(0)
摘要:认证过程 1、创建SecurityManager 2、主体提交认证 3、SecurityManager认证 4、Authenticator认证 5、Realm验证 代码演示 1、引入shiro依赖 2、创建AuthenticationTest测试类 阅读全文
posted @ 2018-11-22 17:14 _sanjun 阅读(99) 评论(0) 推荐(0)
摘要:什么是Shiro? Apache的强大灵活的开源安全框架 认证、授权、企业会话管理、安全加密 Shiro与Spring Security比较 Apache Shiro 简单、灵活 可脱离Spring 粒度较粗 Spring Security 复杂、笨重 不可脱离Spring 粒度更细 整体架构 阅读全文
posted @ 2018-11-22 16:42 _sanjun 阅读(128) 评论(0) 推荐(0)
摘要:官网地址: http://www.rabbitmq.com/ 安装Linux必要依赖包 下载RabbitMQ必须安装包 进行安装,修改相关配置文件即可 步骤 1、准备: 2、下载: 3、配置 4、配置文件 5、管理插件:rabbitmq plugins enable rabbitmq_managem 阅读全文
posted @ 2018-11-22 16:20 _sanjun 阅读(121) 评论(0) 推荐(0)
摘要:RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。 特点 RabbitMQ底层采用Erlang语言进行编写 开源、性能优秀,稳定性保障 与SpringAMQP完美的 阅读全文
posted @ 2018-11-22 14:24 _sanjun 阅读(154) 评论(0) 推荐(0)
摘要:ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ECMAScript和JavaScript的关系 一个常见的问题是,ECMAScript 阅读全文
posted @ 2018-11-22 12:45 _sanjun 阅读(524) 评论(0) 推荐(0)
摘要:注:转自文章https://segmentfault.com/a/1190000010426778 node模块 Node里面的模块系统遵循的是CommonJS规范。 那问题又来了,什么是CommonJS规范呢? 由于js以前比较混乱,各写各的代码,没有一个模块的概念,而这个规范出来其实就是对模块的 阅读全文
posted @ 2018-11-22 12:20 _sanjun 阅读(721) 评论(0) 推荐(1)
摘要:注:本文来自:https://blog.csdn.net/xifeijian/article/details/20316775 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。 基本的差别为:MyISAM类型不支持事务处理等高级处理,而I 阅读全文
posted @ 2018-11-21 09:25 _sanjun 阅读(213) 评论(0) 推荐(0)
摘要:注:本文转自:https://www.cnblogs.com/bakari/p/5520860.html 一、 Unix/Linux的体系架构 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层 阅读全文
posted @ 2018-11-20 22:04 _sanjun 阅读(180) 评论(0) 推荐(0)
摘要:注:本文转自https://javadoop.com/post/spring ioc Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 阅读全文
posted @ 2018-11-19 23:41 _sanjun 阅读(143) 评论(0) 推荐(0)
摘要:注:本文来自:https://www.cnblogs.com/developerY/p/3172379.html 算法过程: 1、初始化:构造一个10 n的二维数组,一个长度为n的数组用于存储每次位排序时每个桶子里有多少个元素。 2、循环操作:从低位开始(我们采用LSD的方式),将所有元素对应该位的 阅读全文
posted @ 2018-11-17 10:26 _sanjun 阅读(130) 评论(0) 推荐(0)
摘要:``` public class MinHeapDemo { final static int MAX_LEN = 100; private int[] queue = new int[MAX_LEN]; private int size; public void add(int e) { if ( 阅读全文
posted @ 2018-11-17 10:11 _sanjun 阅读(99) 评论(0) 推荐(0)
摘要:``` public class HeapSortDemo { public static void main(String[] args) { int[] arr = {9, 8, 7, 6, 5, 4, 3, 2, 1}; sort(arr); System.out.println(Arrays.toString(arr)); }... 阅读全文
posted @ 2018-11-17 10:11 _sanjun 阅读(151) 评论(0) 推荐(0)
摘要:``` public class BubbleSortDemo { public static void bubbleSort(int[] a) { //一次遍历,长度a.length 1,主要是第一个最终没影响 for (int i = 1; i a[j + 1]) { int temp = a[ 阅读全文
posted @ 2018-11-17 10:10 _sanjun 阅读(119) 评论(0) 推荐(1)
摘要:``` public class SelectionSortDemo { public static void selectSort(int[] a) { //从小到大,选择待排序的第一个数作为最小的值min int minIndex = 0; //最小值下标 int minTemp = 0; // 阅读全文
posted @ 2018-11-17 10:09 _sanjun 阅读(101) 评论(0) 推荐(0)
摘要:``` public class MergeSortDemo { public static void merge(int[] a, int low, int mid, int high) { //建立一个临时数组,大小为归并后大小 int[] temp = new int[high low + 1 阅读全文
posted @ 2018-11-17 10:08 _sanjun 阅读(102) 评论(0) 推荐(0)
摘要:``` public class QuickSortDemo { public static void quickSort(int[] arr) { sort(arr, 0, arr.length 1); } public static void sort(int[] arr, int low, i 阅读全文
posted @ 2018-11-17 10:07 _sanjun 阅读(96) 评论(0) 推荐(0)
摘要:UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复;union 是取唯一值,记录没有重复。 1、UNION 的语法如下: 2、 UNION ALL的语法如下: 效率: UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 阅读全文
posted @ 2018-11-17 09:57 _sanjun 阅读(242) 评论(0) 推荐(0)
摘要:聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。 我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。 非 阅读全文
posted @ 2018-11-17 09:42 _sanjun 阅读(251) 评论(0) 推荐(0)
摘要:注:本文来自https://blog.csdn.net/zhengzhb/article/details/7359385 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 类型:创建类模式 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建 阅读全文
posted @ 2018-11-17 09:07 _sanjun 阅读(315) 评论(0) 推荐(0)
摘要:注:本文来自https://blog.csdn.net/wyxhd2008/article/details/5597975 定义区别: 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类 抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 区别在于产品,如 阅读全文
posted @ 2018-11-16 23:42 _sanjun 阅读(11322) 评论(0) 推荐(3)
摘要:注:本文来自:https://blog.csdn.net/hairetz/article/details/4168296 linux系统下提供ln指令来进行文件链接。文件链接主要分为硬链接和软链接。 硬链接 由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针,指向 阅读全文
posted @ 2018-11-16 22:16 _sanjun 阅读(8008) 评论(0) 推荐(4)
摘要:注:本文来自:http://www.cnblogs.com/CheeseZH/p/5264465.html 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。 IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、So 阅读全文
posted @ 2018-11-16 20:42 _sanjun 阅读(258) 评论(0) 推荐(0)
摘要:并发 正是系统中的程序能并发执行这一特征,才使得OS能有效地提高系统中的资源利用率,增加系统的吞吐量。 1、并发与并行 2、引入进程 为计算程序和I/O程序分别建立一个进程(Process)后,这两个进程便可并发执行。 若对内存中的多个程序都分别建立一个进程,它们就可以并发执行,这样便能极大地提高系 阅读全文
posted @ 2018-11-16 16:10 _sanjun 阅读(5185) 评论(1) 推荐(3)
摘要:1、单一职责原则 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需要设计人员发现类 阅读全文
posted @ 2018-11-16 15:38 _sanjun 阅读(130) 评论(0) 推荐(0)
摘要:地址:https://blog.csdn.net/LoveLion/article/details/17517213 阅读全文
posted @ 2018-11-16 13:25 _sanjun 阅读(221) 评论(0) 推荐(0)
摘要:注:本文来自http://geeklee.iteye.com/blog/1160949 使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试: 1、使用Statement插入10000 阅读全文
posted @ 2018-11-16 13:13 _sanjun 阅读(14734) 评论(0) 推荐(0)
摘要:注:本文来自http://blog.codinglabs.org/articles/theory of mysql index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此M 阅读全文
posted @ 2018-11-16 09:01 _sanjun 阅读(148) 评论(0) 推荐(0)
摘要:注:本文来自https://www.cnblogs.com/gotodsp/p/6366163.html 1、HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP的长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由 阅读全文
posted @ 2018-11-15 23:34 _sanjun 阅读(218) 评论(0) 推荐(0)
摘要:1、流程图 2、具体步骤: 1、用户发送请求至前端控制器DispatcherServlet; 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器; 3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dispa 阅读全文
posted @ 2018-11-15 22:52 _sanjun 阅读(3537) 评论(0) 推荐(0)
摘要:过程 1、DNS解析 2、TCP连接 3、发送HTTP请求 4、服务器处理请求并返回HTTP报文 5、浏览器解析渲染页面 6、连接结束 阅读全文
posted @ 2018-11-15 22:22 _sanjun 阅读(229) 评论(0) 推荐(0)
摘要:TCP 面向连接 可靠 传输形式:字节流 传输效率:慢 所需资源:多 首部字节:20 60 应用场景:要求通讯数据可靠(如文件传输、邮件传输) UPD 无连接 不可靠 传输形式:数据报文段 传输效率:快 所需资源:少 首部字节:8个字节(4个字段组成) 应用场景:要求通信速度快(如域名转换) 阅读全文
posted @ 2018-11-15 22:15 _sanjun 阅读(125) 评论(0) 推荐(0)
摘要:在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用,则由Java自动进行垃圾回收。 正确理解Spring bean的生命周期非常重要,因为你或许要利用Spring提供的扩展点来自定义bean的创建过程。 阅读全文
posted @ 2018-11-15 21:23 _sanjun 阅读(777) 评论(0) 推荐(0)
摘要:TransactionDefinition接口中定义了五个表示隔离级别的常量: TransactionDefinition.ISOLATION_DEFAULT:使用后端数据库默认的隔离界别,MySQL默认采用的REPEATABLE_READ隔离级别,Oracle默认采用的READ_COMMITTED 阅读全文
posted @ 2018-11-15 20:47 _sanjun 阅读(5121) 评论(0) 推荐(0)
摘要:1、支持当前事务: TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果 阅读全文
posted @ 2018-11-15 20:14 _sanjun 阅读(1028) 评论(0) 推荐(0)
摘要:G1(Garbage First)收集器是一款面向服务端应用的垃圾收集器。HotSpot开发团队赋予它的使命是(在比较长期的)未来可以替换掉JDK1.5中发布的CMS收集器。 与其他GC收集器相比,G1具备如下特点。 并行与并发 G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU(CPU或 阅读全文
posted @ 2018-11-14 18:33 _sanjun 阅读(722) 评论(0) 推荐(0)
摘要:CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。 目前很大一部分的Java应用集中在互联网站或者B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用需求。 从名字(包含 阅读全文
posted @ 2018-11-14 17:20 _sanjun 阅读(489) 评论(0) 推荐(0)
摘要:Java线程中的Thread.yield( )方法,译为线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状 阅读全文
posted @ 2018-11-14 09:24 _sanjun 阅读(913) 评论(0) 推荐(1)
摘要:Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 C/C++直接使用武力硬件和操作系统的内存模型,因此,有可能导致程序在一套平台上并发完全正常,而在另一 阅读全文
posted @ 2018-11-12 21:56 _sanjun 阅读(158) 评论(0) 推荐(0)
摘要:由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓冲中,让运算能快速进行,当运算结束后再从缓冲同步回内存之中,这样处理器就无须等待缓慢的内存读 阅读全文
posted @ 2018-11-12 17:38 _sanjun 阅读(358) 评论(0) 推荐(0)
摘要:虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作到放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类加载器可以说是Java语言的一项创新,也就是Java语言流行的重要原因之一,它最初是为了满 阅读全文
posted @ 2018-11-11 17:26 _sanjun 阅读(146) 评论(0) 推荐(0)
摘要:1、加载 “加载”是“类加载”(Class Loading)过程的一个阶段。在加载阶段,虚拟机需要完成以下3件事情: 1)通过一个类的全限定名来获取定义此类的二进制字节流。 2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3)在内存中生成一个代表这个类的java.lang.Cla 阅读全文
posted @ 2018-11-09 16:38 _sanjun 阅读(227) 评论(0) 推荐(0)
摘要:什么是docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker公司开发,开源,托管在github 跨平台,支持Window 阅读全文
posted @ 2018-11-05 12:51 _sanjun 阅读(137) 评论(0) 推荐(0)
摘要:1、概述 在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 在Java语言里面,类型的加载、连接和初始化过程都是在 阅读全文
posted @ 2018-11-04 23:46 _sanjun 阅读(135) 评论(0) 推荐(0)