自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 java流对象

文章目录java流对象定义输入流实现子类FileInputStreamByteArrayInputStramBufferedInputStreamjava流对象定义IO,简单来说,就是输入输出,包括IO设备和IO接口。从发生IO的位置来说,分为系统IO和网络IO;从不同实现方式来分,有BIO,NIO以及AIO。输入流实现子类直接实现FileInputStreamByteArrayInputStream间接实现FilterInputStreamBufferedInputSt

2020-09-13 18:05:12 242

原创 mybatis之自定义TypeHandler

mybatis之自定义TypeHandlertypehandler有什么用?首先来讨论下mybatis sql查询回来的结果集如何封装pojo类。在jdbc里,查询回来的结果集是封装在ResultSet里,需要映射成相应的实体类。mybatis配置里提供了两种方式,提供给我们做结果集的转换resultType:pojo类与结果集里的字段名必须一样(经过简单的处理后一样,比如去除表字段中的下划线,或大小写转换) <select id="selectBook" resultType="boo

2020-07-10 23:27:03 737

原创 Mybatis入门

Mybatis入门什么是mybatismybatis官网定义mybatis是一个优秀的持久层框架,它支持自定义SQL、存储过程和高级映射。mybatis免除了所有JDBC代码以及设置参数和获取结果集的工作。mybatis可以通过简单的xml配置或注解来配置和映射原始类型、接口和java POJO为数据库中的对象。mybatis加载流程读取mybatis的配置文件流当入参把配置流对象解析成Configuration对象,并返回一个SqlSessionFactory对象SqlSes

2020-07-10 23:26:12 161

原创 程序员的算法趣题Q08:优秀的扫地机器人

题目现在市面上有很多扫地机器人,能够为我们分担家务,但是我们很难理解,有时候扫地机器人会重复清扫同一块地方。假设现在有一款扫地机器人,不会重复扫过的地方,如果它要走四步,在走了第一步后,移动三步有如下9种路径;第一步可以走4种路径,总共情况有 9*4=36 种路径。思路:1.可以(0,0)来表示初始位置,每次可以有四个方向可以选择 上(1,0),下(-1,0),左(0,-1),右(0,1)2.用一个集合保存所有已经走过的位置,过滤重复走的位置实现public class Floormo

2020-05-28 13:30:16 326

原创 程序员算法趣题之考兹曼猜想

题目考兹曼猜想:一个正整数,无论它为多少1.如果它是偶数,就除以22.如果它是基数,就乘以3+1一直重复运算,最后结果一定为1例子:5 16 8 4 2 1现在改进考兹曼猜想:一个正整数,无论它为多少1.首先将它乘以3加12.如果它是偶数,就除以23.如果它是基数,就乘以3+1重复运算,最后结果等于自己本身例子:4 13 40 20 10 5 16 8 4思路现在实现考兹曼猜想改进版,统计2到10000,有多少符合特征的数遍历运算并比较,运算结果为1,或者与自己本身相

2020-05-26 11:21:45 149

原创 springboot实战系列之集成mybatis

前言springboot是当前业界最流行的后台框架之一,提供人们快速构建spring应用的能力。这里不对它的特性做过多的介绍,只讲实战。环境idea2019 jdk1.8 springboot2.1.3.RELEASE搭建环境目录结构数据库初始化脚本CREATE TABLE `pms_brand` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(64) DEFAULT NULL, `first_lett

2020-05-23 10:16:36 189

原创 面试之前必须要了解的java8新特性

前言java8新增了很多新的特性,今天就跟大家聊一聊函数式编程。所谓的函数式编程,就是为了简化java8之前的匿名方法,提高java8的可读性。当然,提供了一些方法,可以更简便的去过滤、汇总集合数据。oracle官网上的what‘s new上列出的下面几点:Lambda Expressions, a new language feature, has been introduced in this release. They enable you to treat functionality a

2020-05-21 23:08:55 179

原创 多线程基础之常见概念的理解

多线程基础之常见概念的理解我这里从线程的关键概念入手,介绍一下多线程,并且结合代码说下自己的理解。线程安全我们怎么理解这个线程安全?什么样的程序是线程安全的?首先,关于线程安全的理解,当程序的返回结果始终与你预期的一致时,那这段代码就是线程安全的。那么什么样的程序是线程安全的呢?就我个人的理解,多线程安全的程序有几种情况:程序中不存放共享的数据域,多个线程访问时根本不会访问共享的数据域,这样的程序是线程安全的。比如java中的String对象,它的类变量都是final的,它不可以修改,就不会

2020-05-16 18:03:09 131

原创 切分木棒

文章目录切分木棒题目思路切分木棒题目假设要把长度为n 厘米的木棒切分为1 厘米长的小段,但是1 根木棒只能由1 人切分,当木棒被切分为3 段后,可以同时由3 个人分别切分木棒。(如图2)求最多有m 个人时,最少要切分几次。譬如n = 8,m = 3 时如下图所示,切分4 次就可以了。*解题要点如果人数足够,每次都对半切分所有木棒应该是最快的。因为存在人数限制,所以诀窍在于要尽量不让人空闲下来。思路这样的问题用递归最容易描述,切分后的木棒还会像切分前的木棒继续被切分。packa

2020-05-16 11:00:26 454

原创 单链表实现

文章目录链表1.链表的定义2.链表的分类2.1单链表2.1.1单链表的实现2.2 循环链表2.3 双联表链表的应用小结链表1.链表的定义链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。

2020-05-16 09:52:28 104

转载 十款好用的idea插件

十款好用的idea插件这一期内容搞 Gif 动态图花了很久,很多 Gif 图片上传到微信还提示过大,所以很多地方重新又录制了一遍 Gif 图。概览:IDE Features Trainer—IDEA 交互式教程RestfulToolkit—RESTful 服务开发Key Promoter X— 快捷键Presentation Assistant— 快捷键展示Codota— 代码智能提示Alibaba Java Code Guidelines— 阿里巴巴 Java 代码规范GsonForm

2020-05-16 08:08:39 5267 1

原创 守护线程

守护线程什么是守护线程?守护线程:一种特殊的线程,驻守在线程后台,完成系统性的工作,当启动守护线程的线程结束时,守护线程也会随之结束。用户线程:只有当完成自己的业务工作时,才会结束。守护线程有什么作用?比如jvm在运行的时候,会启动很多守护进程。例如垃圾回收的线程以及JIT即时编译的线程。如果当jvm只有守护线程时,jvm会自然退出。show me codepublic clas...

2020-04-18 10:16:50 222

原创 关于线成暂停和恢复的那些事儿

关于线成暂停和恢复的那些事儿suspend()和resume()这是一对相反的操作,suspend可以挂起当前线成,而resume可以恢复当前线成。 乍一看这对操作非常有用,但是如果对jdk源码稍微有点了解,会发现这两个方法早就废弃了。为什么会废弃呢?因为如果resume操作,出现在suspend之前的话,线成会永久阻塞,会影响到后面访问当前临界区的所有线成。最误导人的是,当前线成的状态是...

2020-04-18 09:56:48 250

原创 Java基础之枚举

枚举类在java中,我们可能需要常量类来表示,比如星期,天气,月份。下面我们星期来做演示。常量类public class Weekday { public final static int MON = 0; public final static int TUS = 1; public final static int WED = 2; public fina...

2020-04-18 09:00:27 167

原创 Guava基础用法(一)

Guava基础什么是Guava?​ Guava是Google开源的一个涵盖了字符串处理、缓存、并发库、事件总线、IO等常用操作的Java核心库,也是google自己很多java项目依赖的工具库。​ 总的来说,就是google对java api优化,自己实现的工具库。核心方法 //测试代码的公共部分 @Before public void setUp() throws Excep...

2019-12-15 21:09:19 251

原创 整数反转

整数反转题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解题思路...

2019-12-14 13:47:49 78

原创 java8新特性之Stream

流是一个新的抽象层中引入Java8。使用流,可以处理数据的声明方式类似于SQL语句。例如,考虑下面的SQL语句。SELECT max(salary), employee_id, employee_name FROM Employee上面的SQL表达式自动返回最大的受薪雇员的详细信息,没有做任何计算。使用集合框架在Java中,开发人员必须使用循环和重复检查。另一个问题是效率;随着多核处理器可用...

2019-11-15 14:36:13 101

原创 重构第二章读书笔记

文章目录何为重构为何重构何时重构重构的挑战延缓新功能开发代码所有权分支测试重构与软件开发过程何为重构重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。动词形式的定义是:重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。重构的关键在于运用大量微小且保持软件行为的步骤,一步步达成大规模的修改。...

2019-11-07 16:42:07 287

转载 Java基础之LocalDateTime

时间基本概念日期和时间日期2000-11-12 2018-12-23时间20:23:21日期是指某一天,他是离散的。而时间有两种,一种是带日期的,比如:2018/11/12 15:02:23,这种能确定唯一的时刻。 另一种是不带日期的,比如12:23:21,他只能确定某个时间点。本地时间我们通常说的时间,是指北京时间,也就是本地时间。在同一时刻,不通地...

2019-10-28 11:03:54 354

原创 java基础之类的创建与销毁

文章目录构造器方法重载为什么需要方法重载方法重载的定义this关键字类的初始化顺序类的终结处理与回收finalize方法构造器每个对象都需要有个初始化方法,已保证每个类的域都能正确的初始化。构造器方法怎么命名?构造器方法的命名参考c++,与类名相同,并且没有返回值调用构造是编译器的责任方法重载为什么需要方法重载方法重载是解决方法名冲突的问题,如果方法名一样,编译器如何知道你调用...

2019-10-20 13:27:41 411

原创 十大排序算法

插入排序算法描述插入排序是一种简单直观的算法。算法主要思想就是通过构造有序数列,对于未排序的数,从后向前扫描,找到相应的位置插入。实现步骤算法实现步骤描述:把待排序的数组分为已排序和未排序两部分,初始化的时候认为数组的第一个元素是已排序好的。从第二个元素开始,在已排序好的数组中找到合适的位置插入元素。重复第二个过程,直到最后一个元素排序完。public static void ...

2019-10-16 17:04:33 64

原创 Java并发编程之线程之间的共享与协作(一)

共享资源的安全使用线程运行多个任务时,可以通过加锁(互斥)来保证共享资源的安全。jdk5以后主要有两种方式,synchronized和lock。wait和notify在保证线程安全访问共享资源后,我们要思考,多个线程之间的协作的问题。比如我们生活中的炒菜,炒菜之前要把菜切好,并且把相关的调料准备好,才能开始炒菜。这样,线程之间就有了依赖关系。java里面提供了wait和notify来实现...

2019-10-13 21:09:26 360

原创 线程池在实际互联网项目中的案例

Servlet线程的设计一个客户端请求,服务器就会创建一个新的线程来处理。Server端新建一个socket连接监控客户端请求,理论上一个新建一个线程来处理。servlet分成三个生命周期,如下图所示。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bzPGCSZC-1570799220834)(https://i.loli.net/2019/10/10/hU...

2019-10-11 21:08:18 1119

原创 至少是其他数字两倍的最大数

在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例 1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.示例 2:输入: nums = [1, 2, 3, 4...

2019-09-14 13:27:44 109

原创 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。解题思路:...

2019-09-14 13:22:46 102

原创 寻找数组的中心索引

给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入: nums = [1, 7, 3, 6, 5, 6]输出: 3解释: 索引3 (nums[3]...

2019-09-14 11:52:05 86

转载 394. Decode String Medium

The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note that k is guaranteed to be a positive integer.You may assume that ...

2019-09-07 19:48:12 65

转载 20. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输...

2019-09-05 21:16:01 63

转载 641. Design Circular Deque

Design your implementation of the circular double-ended queue (deque).Your implementation should support following operations:MyCircularDeque(k): Constructor, set the size of the deque to be k.inse...

2019-08-23 21:58:49 86

转载 933. 最近的请求次数-leetcode刷题

写一个 RecentCounter 类来计算最近的请求。它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。返回从 3000 毫秒前到现在的 ping 数。任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。保证每次对 ping 的调用都使用比之前更大的 t 值。题目分析:建一个队列来存放t值,...

2019-08-23 21:53:26 514

原创 多线程安全(一)

文章目录多线程安全类的线程安全定义怎么才能做到类的线程安全?死锁其他安全问题性能和思考多线程安全类的线程安全定义类在多线程环境下运行,始终保持正确的行为,就是线程安全的。怎么才能做到类的线程安全?栈封闭简单的说,就是把变量定义在方法里面,因为方法是线程私有的。无状态类线程不安全主要是因为资源竞争,如果类没有属性,就不会有线程安全的问题。不发布修改属性的方法定义类属性...

2019-08-22 22:09:04 98

原创 单链表之lru算法实现

什么时lru算法内存淘汰机制:FIFO(First in,First out):队列,也就是先进先出的数据结构LFU(Least Frequently Used):访问最常用的LRU(Least Recently Used):访问最近访问过的,热点命中单链表实现实现一个单链表,包括增删查改的方法。/** * @Auther: allen * @Date: 2019/8/22 ...

2019-08-22 18:21:04 340

原创 ThreadPoolExecutor之初始线程池(二)

JDK中的线程池和工作机制初始化线程池都是用ThreadPoolExecutor来初始化。jdk预定义了一些线程池模板,可以用Executors来获取。各个参数的含义corePoolSize:线程池初始化时,核心线程数大小。maximumPoolSize:线程池最大线程数。当核心线程用完了,队列里也装满了,会创建新的线程来执行任务,但不能超过最大线程数。keepAliveTime:线...

2019-08-21 19:45:02 611

原创 java多线程之初识线程池(一)

线程池的优势降低资源消耗,提高响应速度。比如创建线程时间为T1,执行任务时间为T2,销毁线程时间为T3.使用线程池省去了T1和T3的时间。提高线程的可管理性。实现自定义线程池线程必须在池子已经创建好了,并且可以保持住,要有容器保存多个线程;线程还要能够接受外部的任务,运行这个任务。容器保持这个来不及运行的任务./** * @Auther: allen * @Date: 20...

2019-08-21 10:56:07 402

转载 leetcode之sql篇-获取第n高的薪水(一)

编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。IdSalary110022003300例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。...

2019-08-20 18:11:39 395

原创 java core之ArrayList

arraylist源码解析arrayList是线性表的一种具体实现,底层使用数组存储数据的。类关系结构]关键属性 //默认初始化容量 private static final int DEFAULT_CAPACITY = 10; //默认为空时的数组 private static final Object[] EMPTY_ELEMENTDATA = new ...

2019-08-17 13:35:24 83

原创 tomcat学习之性能优化

tomcat性能优化环境准备压测工具jmeter5.1.1或者postmanjvm监控工具、java自带的jconsole或者jprofiletomcat7.0优化思路jvm调优调整永久带、年轻代以及老年代的比例在应用稳定运行时,统计堆中存活类的大小,取多个时间的求均值,可以用jconsle来观察[外链图片转存失败(img-HNYGdhXi-1565711955821...

2019-08-14 00:02:02 89

原创 嵌入式tomcat

嵌入式tomcat背景随着微服务的流程,后台框架springboot越来越流行,前端框架也是html + 模板引擎,慢慢的传统的用tomcat部署的web项目会越来越少。springboot里面集成的是嵌入式的tomcat。嵌入式tomcat实现maven引入tomcat依赖包括tomcat的所有api,我们可以面向接口开发。<!-- 引入Maven的Tomcat --&gt...

2019-08-09 09:20:10 141

原创 tomcat学习(一)

初始tomcat什么是tomcatTomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。–摘自百度百科tomcat总览Server是Tomcat最顶层的容器,代表着整个服务器Service 逻辑业务组件Connector使用ProtocolHandler来处理请...

2019-08-09 00:25:32 80

原创 初识FutureTask

FutureTask什么是FutureTask?FutureTask集成了RunnableFuture接口,能够封装runnable和callable线程,用线程池提交或者线程提交,获取线程异步计算的结果。关键源码解析关键属性private volatile int state;private static final int NEW = 0;private st...

2019-08-07 12:15:13 125

护眼软件,定时休息

定时护眼软件 软件功能:定时,不会锁屏,颜色渐变 直到覆盖屏幕 很有创意很不错的小软件

2018-01-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除