
JAVA
文章平均质量分 69
Moon_treee
为什么要审核啊!还要好久的那种。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【11月8日】排序算法总结
第一次写博客,很慢很慢很不适应,但是感觉不错,可以记录自己的学习成果,也算是变相监督自己学习吧。首次尝试,也不敢整高大上的内容,先从最简单的排序算法开始吧。铁甲依然在,--九州在各种算法问题中,排序算法是最基本的问题,貌似很多面试笔试都要问道这个=-=。排序(Sort)是指按照一定的规则(一般是递增或者递减)将数据进行排列。常见的排序算法有:交换(冒泡排序、快速排序),选择(选择排序、原创 2016-11-08 11:06:24 · 674 阅读 · 0 评论 -
【3月27日】手撕架构(一)使用IDEA创建Maven项目
创建Maven项目Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项原创 2017-03-28 00:33:23 · 794 阅读 · 0 评论 -
【3月28日】手撕架构(二)人工编写工具类以及业务开发初次迭代
本次项目主要分为以下几层:controller,model,service以及view。在标准的MVC架构中,是没有服务层的,然而实际中很少按照标准的来,可以将service层作为衔接controller与数据库的桥梁,可以使用接口和实现类来表达。在一些简单的应用中,无须使用接口,直接用类就可以了。下面就通过服务层的优化过程来体会代码重构的”艺术”。一:创建CustomerService和单元测试用原创 2017-03-28 13:15:48 · 454 阅读 · 0 评论 -
【3月28日】手撕架构(三)service的优化之路,从三十行到两行
在上文中,已经完成了getCustomerList功能的基本实现并顺利通过了的单元测试。但是也遗留了两个问题: 1.在CustomerService类中读取config.properties文件,这是不合理的。一个项目中不可能只有一个service,如果每个service都需要读取config,一来造成不必要的冗余,也存在安全风险。 2.执行一条select语句真的是好累啊,需要编写一大推代码原创 2017-03-28 15:05:57 · 650 阅读 · 0 评论 -
【3月30日】手撕架构(四)从两行到一行--SQL语句封装以及连接“池”化
从两行到一行-利用反射机制自动完成 model–table的映射在上一文中,已经完成了对getCustomerList方法的优化。但是同样也暴露出来了问题。 在此方法中,直接使用String常量作为sql语句 String sql = "SELECT * FROM customer";这给数据库的操作带来了限制,因为是静态的常量,无法动态的实现数据库的查询。随着开发的推进,数据库里面不可能只有c原创 2017-03-30 12:14:48 · 724 阅读 · 0 评论 -
【3月17日】Java 监听器
1. 认识监听器(Listener)监听器实际是实现了特定接口的类,这个类在web.xml中进行描述。服务器启动时,这个类可以监听一些关键事件的发生,如ServletContext的初始化和撤销、使用初始化参数查找名建立数据库连接、吧数据库连接存储为一个属性,使得web应用的各个部分可以访问等。 2. 监听器分类及用途接口监听内容Se原创 2017-03-17 10:59:15 · 349 阅读 · 0 评论 -
【4月21日】单例模式:饿汉和懒汉
要写的话都在程序的注释里面写了,就不啰嗦了直接上代码!首先创建用于测试的饿汉模式的单例package com;/* * 单例模式 singleton * 应用场景:对象只需要一个就可以了,如日志等 * 作用:保证程序中特定的实例有且只有一个 * 类型:饿汉模式、懒汉模式 * 以下是饿汉模式:不管用户是否需要,只要类加载,就会去创建单例模式的对象,即假设总是处于饥饿状态 * 第一步:修改原创 2017-04-21 19:57:42 · 434 阅读 · 0 评论 -
【7月3日】设计模式:观察者模式
本系列主要是《head first 设计模式》的阅读笔记以及实验结果观察者模式观察者模式定义了一些列对象之间的一对多的关系;当一个对象改变状态,其他依赖的对象都会收到通知。认识观察者模式我们先看看报纸和杂志的订阅是怎么回事: 1.报社的业务就是出版报纸。 2.向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订阅用户,就会一致收到新报纸。 3.当你不想再看报纸的时候,取消订原创 2017-07-04 00:13:13 · 415 阅读 · 0 评论 -
【12月20日】LeetCode刷题日志(四):Min Cost Climbing Stairs
题目描述 On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay the cost, you can either climb one or two steps. You need to find minimum cost to reach the t原创 2017-12-20 16:36:27 · 328 阅读 · 0 评论 -
【12月22日】LeetCode刷题日志(五):Min Cost Climbing Stairs
题目描述 On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay the cost, you can either climb one or two steps. You need to find minimum cost to reach原创 2017-12-25 19:32:02 · 312 阅读 · 0 评论 -
【12月22日】LeetCode刷题日志(六):132 Pattern
题目描述 Given a sequence of n integers a1, a2, …, an, a 132 pattern is a subsequence ai, aj, ak such that i < j < k and ai < ak < aj. Design an algorithm that takes a list of n numbers as input and chec原创 2017-12-25 21:14:25 · 292 阅读 · 0 评论 -
【1月25日】从java集合框架的角度看数据结构
基本的数据结构 JAVA集合概述JAVA集合框架的四个主要体系:Set,List,Queue和Map1. 基本数据结构数据结构是指计算机存储、组织数据的方式。这里面有两个内涵,一是数据的逻辑结构;二十数据的物理结构。 数据的逻辑结构反映了元素之间的逻辑关系,逻辑结构主要包括: (1).线性结构 元素存在着一对一的相互关系。数组就是最简单暴力的线性结构,此外还有链表,再增原创 2018-01-25 19:53:48 · 386 阅读 · 0 评论 -
【3月6日】源码阅读日记(1):HashMap
前言首先,致敬下几位authors@author Doug Lea@author Josh Bloch@author Arthur van Hoff@author Neal GafterHashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红原创 2018-03-07 01:17:44 · 567 阅读 · 1 评论 -
【3月19日】JUnit4单元测试
引用块内容JUnit4使用实践创建包视图如下: 首先编写被测试类:package com.tree.util;public class Calculate { public int add(int a,int b){ return a+b; } public int subtract(int a,int b){ return a-b;原创 2017-03-20 00:32:19 · 545 阅读 · 0 评论 -
【2月2日】设计模式:静态代理
最近在并发实践中,发现在具体的事件中,使用了一种java的设计模式:静态代理。想起来,代理模式的视频去年的暑假也有看过,但是那时候刚刚接触java,准确的说,是刚刚接触面向对象的编程,所以基本上什么都不懂。半年之后再看,有种苏卡斯乃的感觉。Proxy Pattern:Provide a surrogate or placeholderfor another object to control原创 2017-02-02 12:46:32 · 378 阅读 · 0 评论 -
【2月1日】并发(六):run()和start()
package com.tree.thread;public class MyThread extends Thread { private String name; public MyThread (String name){ this.name =name; } public void run(){ for(int i = 0;i<100;i++){ Syst原创 2017-02-01 14:40:45 · 473 阅读 · 0 评论 -
【11月11日 】排序算法续--快速排序+彩蛋一
双十一小小的shopping了一把,终于上了ssd,居然有人屯颗粒导致价格上涨,表示简直不能忍。好在可以报销,不然真的真的吃土了。前面介绍了集中基本的算法,大多数效率都不怎么高,除了shell。今天再来介绍一种比较高效的算法--快速排序算法,然后顺便就排序算法的效率做一个总结。快速排序法(Quick Sort)快速排序法的思想和冒泡算法类似,都是基于交换排序的思想。可以将快速排序法看成原创 2016-11-11 22:27:34 · 577 阅读 · 0 评论 -
【11月13日】排序算法的效率问题+彩蛋
这几天断断续续,讲了很多种基本的排序算法。学习的奇妙之处在于,即使是再简单不过的问题,总有人思解出新奇的巧妙来。譬如除了以前介绍的排序算法外,还有基于树结构的堆排序算法,基于有序数表合并的合并排序算法等等等。既然排序算法纷繁多态,那么究竟哪一种算法算是“好的”呢?这就涉及到对算法的评价。公欲搞评价,必先放指标。一般来说,可以从以下几个方面判断排序算法的优劣。1.系统的资源占用(空间原创 2016-11-14 00:42:57 · 479 阅读 · 0 评论 -
【11月18日】JVM之运行时数据区
呼呼,突然有种感觉,研究生只读三年真是太短了,或者应该说,本科生阶段虚度了太多大好的时间,于我心有戚戚焉 ~~~以前自学的写码的时候比较注重结果,以为只要把程序写出来,结果搞出来就万事大吉了。最近重新去看java的一些经典书籍,才发现之前的学习过程根本就是囫囵吞枣,忽视了实现过程中很多的细节。去copy网上现成的代码,没有自己调试的过程,就很难去理解一个程序的内涵。在此多言,以为警醒。接下原创 2016-11-18 23:26:11 · 610 阅读 · 0 评论 -
【11月22日】听说下雪了!--ICATCLAS分词系统使用初探
}最近有用一个中科院的中文分词系统,感觉蛮颇爽。NLPIR汉语分词系统(又名ICTCLAS2013),主要功能包括中文分词;词性标注;命名实体识别;用户词典功能;支持GBK编码、UTF8编码、BIG5编码(此处是个坑,我的txt文件都是默认ASC编码,不转码的话就会出现乱码。上万个文件,目前尚没有找到满意的解决方案)。新增微博分词、新词发现与关键词提取;张华平博士先后倾力打造十余年,内原创 2016-11-22 23:14:59 · 633 阅读 · 2 评论 -
【12月6日】类的初始化(一):构造器和this关键字
构造器:JAVA中通过构造器确保类的初始化。类的设计者可以在类创建时定义类的构造器,即使没有显示的构造构造器,JVM也会为类默认构造一个无参构造器。也可以构造多个构造器,JAVA会根据具体的情境(参数类型和数量)来选择合适的构造器—多态。this关键字:this关键字只能在方法的内部进行调用,表示对“调用方法的那个对象”的引用。package com.tree.thread;clas原创 2016-12-06 20:30:28 · 541 阅读 · 0 评论 -
【12月13日】一道有趣的小题目
在很久很久以前,曾经看过这么一道题目;package com.tree.thread;class Singleton { private static Singleton singleton = new Singleton(); public static int counter1 ; public static int counter2 = 0; Singleton原创 2016-12-13 15:49:01 · 486 阅读 · 0 评论 -
【12月7日】类的初始化(二):构造器初始化
构造器初始化 Public class Counter{int I;Counter(){i=7;}}可以用构造器来进行初始化,但是无法阻止自动初始化的进行,因为自动初始化会在构造器被调用之前发生。因此,假如使用一下代码:那么i首先会被置为默认值0,然后再变成7。对于所有基本类型(都有初始值)和对象的引用(初始值是null),包括在定义时已经指定初始值的变量,这种情况都原创 2016-12-07 13:45:59 · 591 阅读 · 0 评论 -
【1月24日】并发(一):线程与线程风险
1.线程的基本概念线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一原创 2017-01-24 18:15:43 · 433 阅读 · 0 评论 -
【1月25日】并发(二):线程安全
1.线程安全1.1 什么是线程安全不知道是对文字的敏感还是愚钝,总觉得“下定义”是一件很难的事情。由是,特别对于那些简明扼要的定义,细细品味,竟也能衍生出优美。这一点看,自然科学未必就是那么纯粹的、无情感的。编写线程安全的代码,本质上就是管理对状态的访问,而且通常都是共享的、可变的状态。通俗的说,一个对象的状态,就是它的数据,存储在状态变量中(state variables)中,比如实例域原创 2017-01-25 17:08:26 · 413 阅读 · 0 评论 -
【1月27日】并发(三):锁--/*新春快乐*/
通过线程安全对象来管理Servlet的全部状态,可以维护Servlet的线程安全性。如上一篇博客所提及。但是这样的限制是,只能在Servlet中加入一个状态变量。如果加入更多的状态变量,就可能引发潜在的安全问题。《java并发编程实践》针对前文中提到的完成因数分解的Servlet提出了一个新的需求:我们缓存最新的计算结果,以应对两个连续的客户请求相同的数字进行因数分解。要实现这个需求,需要同时缓存原创 2017-01-27 00:32:34 · 352 阅读 · 0 评论 -
【1月31日】并发(四):活跃度与性能
SynchronizedFactorizer.classpackage com.tree.thread;import java.math.BigInteger;public class SynchronizedFactorizer implements Servlet { private BigInteger lastNumber; private BigInteger[] las原创 2017-01-31 23:02:19 · 456 阅读 · 0 评论 -
【2月1日】并发(五):Thread和Runable
JDK中,已经自带了对多线程技术的支持,可以方便的进行多线程编程。实现的方式主要有两种:继承Thread类和实现Runable接口。Runable接口仅需要实现一个run()的无参方法。类Thread实现了Runable接口,此时观察Thread类,有一个构造方法:public Thread(Runnable targer)此构造方法接受Runnable的子类实例,原创 2017-02-01 14:02:27 · 351 阅读 · 0 评论 -
【3月15日】BIO、伪异步IO以及NIO编程实践
1.引言从java的I/O体系发展的历史看,先有java.io,后有java.nio。前者一般称之为IO,后者称之为NIO(New IO)。但是又由于其特性前者又成为BIO(Block IO),后者对应为NIO(No-block IO)。2. IO,NIO,NIO2.02.1 IOjava的IO通过java.io包下的接口和类来支持。在jav.io包下,主要包括输入、输出两种IO流,每种输入、输出流原创 2018-03-16 00:43:18 · 429 阅读 · 0 评论