- 博客(49)
- 资源 (3)
- 收藏
- 关注
原创 一文了解多线程的前世今生
简介1.1 并发简史背景早起的操作系统,非常难用,裸机的环境,不仅很难编写和运行程序,每次只能运行一个程序,非常浪费计算机资源。解决方案由于出现了操作系统,计算机便能运行多个程序,不同的程序都在单独的进程中运行。操作系统为每个进程分配各种资源,包括内存,文件句柄以及安全证书等。如果需要的话,在不同进程之间可以通过一些粗粒度的通信机制来交换数据,包括:套接字,信号处理器,共享内存,信号量...
2020-04-04 19:19:09
344
原创 算法刻意练习第三天--两数相加解题思路
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...
2020-04-01 00:17:11
253
原创 算法刻意练习第二天--数组与链表
数组查找内存连续的存储空间,内存管理器可以实现访问任何一个位置的元素,O(1)的查找。插入[1,2,3,4,5] 在3和4之间插入一个值,6,需要把4,5 往后挪动。平均时间复杂度是O(N),删除也是O(n) 的平均时间复杂度。链表我想改变他的插入和更新的时间复杂度,有没有好的数据结构呢?链表 – linked List本质上,有一个指针,链向下一个节点,整个连成一个表链表的常用...
2020-03-31 02:48:43
240
原创 算法刻意练习第一天--复杂度分析以及学习方法
时间复杂度算法时间复杂度分析,复杂度越低,大数据量,高并发环境下,收益很高1 + 2 + 3+ … + n求和公式: y = n*(n+1)/2Fibonacci 时间复杂度计算F(n) = F(n-1) + F(n-2)时间复杂度:O(2^n) 并不是特别有效的算法查用查找算法的时间复杂度是多少:二分查找 – Log(n)二叉树遍历 O(n)二维度矩阵 O(n)快排 --n...
2020-03-31 00:00:30
227
原创 算法复杂度分析,如何分析,统计算法的执行效率和资源消耗
复杂度分析是整个算法学习的精髓只要掌握了他,数据结构和算法的内容基本上就掌握了一半为什么需要复杂度分析?其实我可以把代码跑一遍,通过统计,监控就能得到算法执行的时间和占用内存大小。其实这是一种事后统计法,这种统计方法局限很大。1、测试结果依赖测试环境和测试机器的配置有关,机器越好,性能越好。2、测试数据受数据规模影响然而,我们需要一个不用具体的测试数据来测试,就可以粗略估算算法的执行...
2019-11-30 13:42:18
472
原创 基于Redis实现分布式锁,解锁原子版
实现思路链接:https://www.processon.com/view/5ca5a76be4b0cfb73427ee0f#map代码:public class RedisLock implements Lock { private static final String LOCK_KEY = "lock"; private ThreadLocal<String...
2019-10-09 16:25:48
896
原创 java并发编程笔记01 --如何避免死锁&资源限制以及volatile实现原理
避免死锁的方法:1、避免一个线程同时获取多个锁2、避免一个线程在锁内同时占用多个资源,尽量保证每一个锁只占用一个资源。3、尝试使用定时锁,用lock.tryLock 代替内部的锁机制。4、对于数据库的锁,加锁和解锁必须在同一个数据库连接里,否则会出现解锁失败的情况。什么事资源限制:1、硬盘的读写速度,CPU的处理速度,带宽资源限制引发的问题:1、受限于资...
2019-08-10 14:50:19
277
原创 观察者模式
观察者模式解析定义: 定义对象之间的一种一对多的依赖关系,当一个对象被修改时,所有依赖于它的对象都得到通知并被自动更新解决的问题: 一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。应用实例: 拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价。 西游记里面悟空请求菩萨降服红孩儿,菩萨洒了一地水招来一个老乌龟,这个乌龟就是观察者,他观...
2019-02-14 15:23:38
227
原创 2019后端java相关学习计划
开篇介绍笔者介绍:18年7月初入职一家业务高速发展的互联网教育公司,专职java后端开发。从入职到现在,似乎一直沉浸在项目的开发上,还没什么时间好好沉淀下,一直都在做项目,每个月的工作基本就是需求评审-开发-测试-上线 ,是时候需要好好沉淀下来,梳理一下方向。从java基础到微服务架构路线学习知识点我理想中的职业发展路线:java基础JDK源码java8编程深入理解java虚...
2019-02-13 15:39:28
4378
1
原创 一起来读《深入理解计算机系统》,开篇!
一起来读深入理解计算机系统19年的flag,一定要读完深入理解计算机系统这本书,准备知识,C语言,汇编语言等等基础知识。事实上,只是通过此书作为衔接,来学习计算机底层相关基础知识!深入理解计算机系统大纲第一章:计算机系统漫游第二章:信息的表示和处理第三章:程序的机器级表示第四章:处理器体系结构第五章:优化程序性能第六章:存储器层次结构第七章:链接第八章:异常控制流第九章:...
2019-01-19 12:16:58
2168
1
原创 95后北漂IT少年的2018年终总结
2018全面回顾上半年年初准备开题报告年初从家里回来,准备基于Elasticsearch垂直搜索引擎的资料调研。准备毕设论文搜集资料,没什么好说的找工作开题答辩完成之后,陷入找工作的时机,每天准备面试,每天学习,每天投简历,持续半个多月,对于应届生来说机会太少,但是抓好就行了,庆幸的是虽然只有两次面试机会,但是,全过了,最终选择一家自己满意的公司!玩了一个月找完工作之后,距离答...
2019-01-03 18:02:37
438
2
原创 AQS源码分析
AQS源码分析CLH同步队列 CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node)并将其加入到CLH同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点唤醒(公平锁),使其再次尝试获取同步状态。在AQS中维护着一个FIF...
2018-12-12 16:05:26
197
原创 python scrapy安装中遇到的问题
1、pip install中UnicodeDecodeError问题处理方法 参考文章:https://blog.youkuaiyun.com/qq_33530388/article/details/68933201#reply 2、Scrapy 安装错误,Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual…… 参考文...
2018-04-16 17:40:35
215
原创 python在pip install 时遇到的问题!
解决问题:You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgrading via the ‘python -m pip install –upgrade pip’ command.解决方法:直接运行命令:python -m pip install –upgrade
2018-04-14 10:48:53
1282
原创 深入理解java类加载之类的初始化时机
先看一段代码,你能说出执行结果吗?public class TestClassLoad { public static void main(String[] args) { //输出结果 //第一个 System.out.println(Test.A); //第二个 System.out.println...
2018-03-28 13:46:52
1575
原创 消息中间件保证消息一致性解决方案
1、消息中间件的应用场景 (1)异步通讯 (2)解耦 (3)并发缓冲 2、消息发送和投递的不可靠性 (1)分布式网络进行就引入了数据传输的不确定性 (2)也就是CAP理论中的P(分区容错性) (3)跨网络通信产生了分布式事务问题 3、消息发送一致性 (1)是指产生消息的业务动作与消息发送的一致 (2)也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去,
2018-01-13 15:25:00
8199
原创 并发编程之Future模式的模拟实现
Future模式的核心就是,使原本需要等待的时间段可以用于处理其他业务逻辑。记住这句话就行了。 先来看一个Future的案列:/** * future的使用 * @author 莱格 * */import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.ut
2018-01-03 15:36:01
744
原创 设计模式之模板方法模式!
定义模板:/** * 定义模板 * @author 莱格 * */public abstract class TeminalMethod { /** * 初始化游戏 */ public abstract void init(); /** * 开始游戏 */ public abstract void play();
2017-12-31 23:54:53
647
原创 手写实现一个可重入锁!
代码如下:public class MyLock implements Lock{ Thread lockBy = null; int lockCount = 0; //锁标志 private boolean isLocked = false; /* * 加锁 * (non-Javadoc) * @see java.util.c
2017-12-31 23:12:43
1464
原创 redis集群事务管理工具类
redis集群对象JedisCluster不支持事务,但是,集群里边的每个节点支持事务。 redis 集群管理事务的工具类public class JedisClusterTransactionManager { private static ThreadLocal<Object> txThreadLocal = new ThreadLocal<>(); private static
2017-12-15 16:31:13
4454
2
原创 从计算机底层来解析java内存结构!
Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。Java内存模型规定了所有的变量都存储在主内存中(Main memory)中。每条线程都有自己的工作内存(可与前面讲的高速缓存做类比),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝。
2017-11-30 23:17:17
860
原创 MyBatis学习总结(3)
MyBatis学习总结大全: - MyBatis学习总结第一天 - MyBatis学习总结第二天 - MyBatis学习总结第三天今日大纲: 使用多表查询四种方式 一对一 一对多 多对多 自关联MyBatis注解开发MyBatis 运行原理多表操作 多表操作,当两个表中的字段名称一致,使用一次查询的时候,数据会混乱,所以在这种情况下,需要在写s
2017-11-28 13:17:19
1041
原创 MyBatis学习总结(02)
MyBatis学习总结大全: - MyBatis学习总结第一天 - MyBatis学习总结第二天 - MyBatis学习总结第三天今日大纲动态sql缓存接口绑定或者叫动态代理 ResultType1、动态sql 相当于条件查询,在代码中使用if语句来拼装sql语句,它会造成资源浪费,而且,不易于维护。If、switch语句是Java代码之罪。 在写sql语句的
2017-11-28 13:02:32
826
原创 MyBatis学习笔记(01)
MyBatis学习总结大全: - MyBatis学习总结第一天 - MyBatis学习总结第二天 - MyBatis学习总结第三天今日大纲MyBatis的CRUDMybatis的传值Mybatis的其他标签使用1.Mybatis的CRUD1.1、UPDATE<!-- 修改数据 使用update语句,id:必要属性,随便写,但要保证在
2017-11-28 12:43:26
778
原创 Linux常用命令以及安装部署项目
Linux的常用命令: 1、linux操作系统的简单应用 linux的文本模式介绍 [root@localhsot`] 第一列代表root当前用户 第二列localhost代表主机名 第三列代表当前按所在的目录 ~home目录 tab键可以自动补全命令。linux的登陆与登出login 登入系统logout 登出系统exit 注销当前用户clear 清屏命令linux的关机shu
2017-11-28 12:04:05
1184
原创 基于SSM的汽车租赁系统
本系统涵盖6个功能模块 1、系统管理 2、用户管理 3、客户管理 4、汽车管理 5、业务管理 6、业务统计这就是本系统的6大功能模块,下面将详细介绍汽车租赁系统的各个模块所具有的功能。 1、系统管理 系统管理中有一个权限管理,登录信息管理,日志管理。 其中权限管理采用RBAC权限管理系统的方式进行开发。 登录信息管理和日志管理,一开始采用AOP,但由于太麻烦,后来采用拦截器来做。
2017-11-17 12:12:44
21330
44
原创 Spring设计模式之JDK的动态代理!
1、我们先编写一个jdk的动态代理的一个demo 我们先创建一个抽象角色:/** * 抽象角色接口 * */public interface AbstractRole { /** * 完成相关业务 * */ void process();}真实角色,被代理对象代理的类/** * 真实角色 * 需要被代理的目标对象 * */public clas
2017-11-02 12:47:44
721
原创 J2EE开发的颠覆者SpringBoot快速入门!
使用“约定优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。
2017-11-01 18:15:53
3886
1
原创 用spring mvc框架的模拟实现来学习反射和注解
1、springmvc架构 2、相应注解详解 2.1、Controller注解 Controlle类上面的注解 2.2、Service注解 业务层对象上面的注解 2.33、Qualitify注解 在controller层里面,扫面含有此注解的字段,然后根据字段注入Service bean对象 2.44、HandlerMapping注解 处理方法上面的注解3、编写流程(这里我们主要写
2017-10-08 23:14:46
2960
原创 深度揭秘原型(深浅克隆)模式!
原型模式: 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。深克隆和浅克隆完美剖析
2017-09-26 21:47:47
1050
原创 快速掌握设计模式之建造者模式!
1.建造者模式? 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,他们通常又叫做产品的内部表象。不同的产品可以有不同的内部表象,也就是不同的零件。 建造者模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件,从而建造出完整的产品对象。 建造者模式将产品的结构和产品的零件建造过程堆客户隐藏起来,把堆建造过程进行指挥的责任和具体建造者零件的
2017-09-26 18:51:33
622
原创 适配器模式---出国需要一个翻译
1、何谓适配器模式? 将一个类的接口转换成客户希望的另外一个接口。Adapter模式是的原本由于接口不能兼容而不能一起工作的那些类可以在一起工作。2、主要解决的问题? 简单的说,你需要的东西就在你面前,但是你却不能使用,而短时间又无法改造它,于是我们就想办法适配它。3、有东西不能用,又不能改造,想办法适配它? 意思就是使得一个东西适合另外一个东西。举个例子:假设现在你是一个老板,你要到美国谈生
2017-09-20 20:53:57
2201
原创 全面解析所有的工厂模式!
从简单工厂-->使用反射-->工厂方法-->抽象方法,一步一步的进化给出具体的uml和代码,详细分析每种模式的优缺点,由简单到复杂的方式分析。
2017-09-19 13:38:29
899
原创 一个请假案例弄懂责任链模式
1、什么是责任链模式? 定义:将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能处理则处理,如果不能则传递给链上的下一个对象。2、应用场景? 场景: ----打牌时轮流出牌 ----接力赛跑 ----大学中,奖学金审批 ----公司中公文审批 3、UML类图描述,以生活当中我们请假为例。先来分析一
2017-09-18 13:09:08
1605
原创 以SpringIoc的模拟实现来学习反射和xml解析
模拟一个简单的SpringIoc容器 我们只实现一个简单的接口。//自定义一个接口public interface BeanFactory { //通过传进来的bean id获得相应的对象 public Object getBean(String id);}我们要解析的是这样的配置文件:<?xml version="1.0" encoding="UTF-8"?><beans
2017-09-16 13:40:43
719
原创 Tomcat服务器的模拟实现学习解析Http协议、反射、xml解析等
模拟tomcat机制手写一个简单的Tomcat服务器,主要功能有可以获得请求参数,还可以对浏览器做出响应,底层采用http协议,通过用户请求信息,解析请求信息,并且封装了响应信息,可以向浏览器响应网页,也可以响应文字,原理就是通过IO流读取本地网页信息,将其转化为字符串输出到浏览器。并且可以针对每一个请求,服务器都会分发一个单独的线程区处理他。 核心代码如下: 源码在最底部。 源码结构:
2017-09-16 12:33:04
1160
原创 一个租房案列透彻理解--静态代理模式
静态代理模式1、代理模式简介? 组成: 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。2、代理模式的优点? (1).职责清晰 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通
2017-09-14 12:57:26
444
原创 对于loader constraint violation问题的解决方案
javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader) previously initiated loading for a different type with name "java
2017-09-13 21:30:10
15791
1
手写http服务器1.0.0版本
2017-09-09
mySpringIoc
2017-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人