- 博客(256)
- 资源 (1)
- 收藏
- 关注
原创 java之equals()方法(一般的包装类当中都有equals方法Integer...)
/** * Compares this string to the specified object. The result is {@code * true} if and only if the argument is not {@code null} and is a {@code * String} object that represents the same sequence...
2018-09-17 13:55:54
1139
原创 java成神之路(慢慢啃)
一、基础篇JVMJVM内存结构堆、栈、方法区、直接内存、堆和栈区别Java内存模型内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定JVM参数及调优Java对象模型oop-klass、对象头HotSpot即时编译器、编译优化类加载机制classLoade...
2018-09-05 18:01:23
237
原创 关于java中不确定参数个数(这个方法也适用获取数组)
//最近用到不确定参数个数方法/** *@author zzsnail * *@method 不确定参数个数函数 */ public static void fun(int... a){ for(int aa:a){ System.out.print(aa+" "); } System.out.println(); } public static ...
2018-08-17 11:34:16
3686
原创 aspectj的aop操作+基于aspectj的注解aop操作
首先对于面向切面编程的两个点要清楚:1.切入点:类中实际被增强的方法称为切入点。2.通知/增强:增强的逻辑。(比如扩展日志功能)--通知:前置增强,后置增强,环绕增强3.切面:把“通知/增强”用到“切入点”当中。//下面的代码有两个类:Book, MyBook。通过MyBook类的方法增强Book类,Book是切入点。下面首先是不用注解版的代码,手工配置:package ...
2018-08-09 00:17:23
240
原创 Spring中关于注解注入属性(含代码+项目截图)
1.创建service类,创建dao类,在service中得到dao对象注入属性第一个注解@Autowired(1)创建service和dao对象(2)在service中定义dao类型的属性 上面是对象注解的两个注解@Autowired没有属性,@Resource有属性name这个要求和UserDao类中Component中的value属性值相同,这个要注意。...
2018-08-06 20:36:48
1031
原创 Spring整合WEB项目原理
1.加载核心配置文件,new对象可以实现但是效率很低。2.实现思想:把加载配置文件和创建对象过程,在服务器启动的时候完成。3.实现原理: (1)servletContext对象 (2)监听器 (3)具体使用: --在服务器启动的时候,为每个项目创建一个ServletContext对象 --在ServletContext对...
2018-08-06 01:13:05
246
原创 Spring中三种创建对象的方式
这三种方式分别为:使用静态工厂创建对象,使用实例工厂创建对象,使用无参构造函数创建对象。下面见代码:静态工厂创建对象:package cn.itcast.beans;public class Bean1 { public void add(){ System.out.println("bean1 ........"); }}package cn.itcast.bea...
2018-08-05 17:17:10
1746
原创 关于spring ioc底层原理(图解)+ 代码样例以及对IOC的简单理解
对IOC的理解:这是一种设计思想,目的为了降低类与类之间的耦合度。IOC也叫“”控制反转“”,所以理解他从两方面:1.控制(谁控制谁,控制什么)--首先控制是容器控制了对象。控制了外部资源获取(资源不只是对象还有文件等)2.反转(什么是反转)--在本来的程序设计上,我们都会再类中设计对象,都是我们主动创建对象或者直接通过对象进行获取东西,这就相当于是正转。而当从IOC的设计角度来思...
2018-08-04 11:09:43
4697
3
原创 Spring框架的简单概念总结
1.Spring是开源的轻量级框架。2.Spring核心主要两部分:(1)aop:面向切面编程,扩展功能不是修改源代码实现。(2)ioc:控制反转-比如有一个类,在类里面有方法(不是静态方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程需要new出来对象。-框架中对象的创建不是通过new方式实现,而是交给spring配置创建类的对象3.Spring是...
2018-08-04 09:54:26
232
原创 java的加载与执行(图解)
加载:首先对于加载来说,首先对写好的.java源文件进行编译生成.class文件,这里java源文件中有几个class那么硬盘中就有几个.class文件生成,这里都是主要对语言的判定语法是否有错,此时没有错那么语法通过。 运行:当语法没错误后通过环境变量classpath找到class文件通过类装载器装载到虚拟机内,虚拟机对.class文件解释在操作系统执行并与硬件平台进行交互。...
2018-08-03 10:01:39
659
原创 java定时器Timer对象
//这是一个每间隔10秒运行一次的代码,期中日期可自定义该你想改的时间到时候会自动运行,见代码:package ThreadTest;import java.text.*;import java.util.*;class LogTimerTask extends TimerTask{ public void run(){ System.out.println(new Sim...
2018-08-02 16:26:53
509
原创 设置守护线程通过setDDaemon()
//守护线程当其他用户线程运行结束,守护线程结束运行,见代码:package ThreadTest;class Processor13 implements Runnable{ @Override public void run() { // TODO Auto-generated method stub while(true){ try{ Thread.sle...
2018-08-02 15:41:07
584
原创 一个简单的死锁样例
//关于死锁写法有很多,下面是一个简单的死锁,这里一定要注意若锁是一个对象所,那么多线程的锁的对象一定要是同一个所谓共享的通一把锁,这里刚开始学很容易定义线程对象的时候连续new两个Runnable的对象那么共享的锁不一样。见代码:package ThreadTest;class Processor12 implements Runnable{ Object o1 = new Obj...
2018-08-02 13:12:46
926
原创 通过synchronized简单实现线程同步保证数据安全性(两例)
//【注意】:何时需要线程同步:1.有共享数据;2.对共享数据有写的操作;3.多线程环境//例一:模拟银行取款,对同一账户两个人一个通过ATM一个通过人工同时取款,此时相当于两个线程,那么此时对同一共享数据余额有写的操作,且是多线程则需要使用线程同步,见代码:package ThreadTest;class Picket{ private double num; public v...
2018-08-01 10:59:29
609
原创 线程的让位yield与合并join
//这里要知道yield是一个静态让位方法,什么意思呢?当有两个优先级相同的线程时可以通过yield给另一个线程让位,你可以自定义让位的条件,但是让位的时间是不确定的,定义了让为条件后在该条件下一定会让位但同样有可能在其他条件下也会让位,下面是代码,当一个数能整出20时便让位给主线程,这个条件是一定会执行的,但是并不意味着一定是20的整数倍才让位。见代码:package ThreadTest...
2018-07-31 15:27:49
355
原创 终止一个简单线程的方法
//下面代码是在5秒后终止线程,通过一个实现Runnable接口的类的对象的成员变量控制线程的运行,见代码:package ThreadTest;class Processor08 implements Runnable{ public boolean flag = true; @Override public void run() { // TODO Auto-gener...
2018-07-31 14:39:07
256
原创 线程静态方法sleep()详解以及唤醒线程方法interrupt
//java多线程中的sleep方法,这是一个手动给线程加阻塞的一个方法,当调用sleep方法后线程从运行到阻塞等阻塞时间过后到就绪状态。sleep是一个静态方法因此直接通过Thread调用他与线程对象名无关。//下面代码中有一个注意点:在main方法中有一句t1.sleep(2000),是t1线程启动后2s才运行吗?不是,这里就要注意因为sleep是一个静态方法,因此和线程对象是无关的,要看...
2018-07-31 10:26:01
8814
原创 java多线程给线程设置优先级
//给线程设置优先级,那么优先极高的相对来说获得时间片就更容易,但不绝对,一般情况是在所有线程都会被执行的情况下,会先执行优先极高的线程,但事无绝对。package ThreadTest;class Processor05 implements Runnable{ @Override public void run() { // TODO Auto-generated metho...
2018-07-31 09:30:24
3559
原创 线程的调度与控制
通常我们的计算机只有一个cpu,cpu在某个时刻只能执行一条指令,线程只有得到cpu时间片也就是使用权,才可以执行指令。在单个cpu的机器上线程并不是并行运行的,只有多个cpu上线程才可以运行。java虚拟机要负责线程的调度,取得cpu的使用权,目前有两种调度模式:分时调度模式和抢占调度模式,java属于抢占调度模式。分时调度模式:所有线程轮流使用cpu的试用权,平均分配每个线程占用cpu时间...
2018-07-30 18:38:10
334
原创 关于主线程和其他线程之间的关于栈内存的一些问题(含图解)
//首先要明确java程序的运行原理:java命令调用虚拟机,此时虚拟机相当于一个应用程序,该程序启动主线程,主线程调用某个类的main方法。//其次明确一个线程一个栈内存//所以在下面的代码中有两个线程一个是主线程,一个是t线程,t.start()启动线程后告诉jvm分配一块儿栈内存,也就是此时有两块儿栈内存,一块儿是主线程的栈内存,一块儿是t线程的栈内存。即使当main方法运行完毕,程...
2018-07-30 17:21:55
1172
原创 关于java多线程的一些知识
进程:一个进程对应一个应用程序。多进程的作用:多进程不是提高cpu的处理速度,而是提高cpu的使用率,当然对于多核处理器。进程与进程之间的内存是独立的。线程:进程的一个执行场景,一个进程可以启动多个线程。多线程的作用:多线程是提高应用程序的使用率的。线程和线程共享堆内存和方法区的内存,栈内存独立,一个线程一个栈。java程序运行的原理:java命令会启动虚拟机,此时虚拟机相...
2018-07-30 16:48:49
140
原创 java死锁
//继上篇文章java中多线程同步函数this锁的证明以及静态同步函数的锁之后,这里写一个多线程的死锁,思路是每个线程总共用两把锁,开始时第一个线程用第一把锁紧接着用第二把锁,第二个线程用第二把锁然后紧接着用第一把锁,这样但凡有一个线程没有释放锁,此时程序就产生了死锁。见代码:package Thread01;class Thread02 implements Runnable{ ...
2018-07-29 17:00:49
204
原创 java中多线程同步函数this锁的证明以及静态同步函数的锁
//首先是对多线程this锁的证明,这里是看大牛博客的然后自己理解了的学习笔记,这里模拟两个窗口进行车票的售卖,当两个窗口对同一资源车票在竞争过程中产生的同步问题,因此通过加锁解决数据安全问题,代码中若将sale1中的synchronized中的this锁换为obj也就是再类中的域定义的锁的时候会出现数据安全问题。//如何证明:对于两个线程,同时启动,一个线程使用同步函数,另一个使用同步代码块...
2018-07-29 11:51:35
802
原创 java通过静态内部类获取随机生成数组中最大值和最小值
//在主函数中生成一个double数组,在类中对其最大值最小值进行筛选,然后通过静态内部类中的get方法获取到最大最小值,完全的面向对象考虑。package static_class;class MaxMin{ public static class Result{ private double min; private double max; public Resu...
2018-07-28 16:12:21
1435
原创 关于java对象的假克隆,浅克隆,深克隆
//java中对于基本类型可以使用“=”进行克隆,此时两个变量除了相等没有其他联系。对于引用类型不能通过简单的“=”进行克隆。这因为java内存空间的试用有关。//java将内存分为栈和堆。栈中是基本类型和应用类型。堆中保存对象。栈中变量用后会立即回收,对象有虚拟机进行管理,回收时间有不确定性。这里要知道一个引用是可以指向一个对象的,注意引用是可以用“=”克隆的,但是这里克隆的是引用不是对象。...
2018-07-27 11:56:34
325
原创 java汉诺塔递归算法
//规则:有A,B,C三个柱子,在A柱子上有n个圆盘从小到大摞起来,要求每次移动一个圆盘,最终将所有圆盘按照从小到大移动到C柱子上,每次大的不能压小的。//思路:若f(n)->C,则f(n-1)->B,f(n-2)->C,f(n-3)->B,以此类推可以推出f(1)首先去哪个柱子。那么每当确定一个柱子那么下一个柱子位置也确定,加入f(1)->C,那么f(2)-&g...
2018-07-16 16:43:53
2123
原创 java单例模式的应用
//要保证一个类仅有一个实例,就需要其他的类不能实例化该类,即构造方法要使用private修饰,同时类中提供静态方法,改方法的返回值是该类的一个实例,这样就能保证唯一性。//单例模式好处可以控制对象的数量从而节约资源,如数据库的连接池就使用单例模式创建。package EmperorTest;public class EmperorTest { public static void mai...
2018-07-16 10:57:24
523
原创 java中的equals方法与==适用范围
//对于==这个在学c++时就知道这是比较内存首地址的,也就是判断两个变量若内存首地址相同那么他们的值必然相同。而如果定义对象则不然,如下面代码中:String s = new String("123"); String ss = new String("123");这两个相当于是两个对象,那么此时这两个对象就是两块儿内存地址的引用,因此如果直接通过 s == ss这样比较内存首地址那肯定不同,对...
2018-07-15 11:01:46
528
原创 java中的方法和实例变量被static修饰后的不同
//static修饰后的类中的实例变量也叫做类变量在加载类的时候就对其进行加载,所有对象共有的变量。调用时可以直接通过类名调用,被static修饰的方法同样如此,因此调用的多的公共实例变量和方法可以用static修饰package java_static_s;public class java_static_s { private String name; static String s...
2018-07-15 09:18:40
709
原创 python中yield简单理解(斐波那契数列)
###对于yield通过下面一段代码做一个简单描述:#python3def fib(n): cnt = 1 a,b = 0,1 while cnt <= 10: cnt += 1 yield b a, b = b, a+bfor i in fib(10): print(i)这是一段前n个斐波那契数列的代码,...
2018-07-03 21:08:17
1563
原创 HackerRank Triangle Quest 2
###给你一个正整数n,例如n=5,则输出:1121123211234321123454321###思路:这就是1,11,111,1111...的平方,题目不让用字符串做,或者代码不能超过一行见代码:for i in range(1,int(input())+1): #More than 2 lines will result in 0 score. Do not leave a blan...
2018-06-22 10:29:34
313
原创 HackerRank Piling Up!
###题意:多组输入一个n个数字,灭个数字代表正方体的边长,要求每次从这给定的n个正方体中的最左边或者最右边拿一个正方体放置将他们摞起来,要保证下面的正方体时钟比上面的大。###思路:题目告诉要每次从最左或者最右拿,那么我们用两个指针分别指向列表头和列表尾部,每次从头和尾两个中选取一个大的,若选中的头则头指针+1,若选中的尾尾指针-1,当然每次应该将选出来的与当前已经摞好的最小值比较若大于最小值结...
2018-06-22 09:35:50
439
原创 HackerRank Company Logo
###题意:任意给定一个字符串,求输出出现次数最多的三个字符,并输出次数,当次数相同时按照字典序输出###思路:通过可以排序的映射collections.OrderedDict(),对映射进行排序,排序用到了sorted函数,对相等用字典序是使用到了lambda表达式,先按照值排序,若相等则按照字符字典序。见代码:import collectionsif __name__ in "__main_...
2018-06-21 22:01:05
185
原创 HackerRank Compress the String!
###题意:给你一个由数字组成的串,输出每段连续出现的字符,及其出现次数,最少出现次数可以是1次###思路:记录第一次出现下标,每次将当前的和之前一个字符比较看是否一样,一样+1,不一样初始化为1.(这里还是沿用c++的思路,所以代码比较长),见代码:if __name__ in '__main__': str = input() #由于有重复的键不能申请dict,目前能想到的只有...
2018-06-21 11:22:22
214
原创 HackerRank Word Order
//题意:多组输入多个字符串,判断不重复的字符串的个数,并按照所给顺序输出字符串出现的次数//思路:用一个dict统计每个出现的次数,并输出即可,但是要注意按照原输入顺序,此时用到OrderedDict,它里面的元素是按照自己插入的顺序,dict按照hash是乱序的,见代码:import collectionsif __name__ in '__main__': n = int(inpu...
2018-06-20 22:42:34
223
原创 HackerRank No Idea!
//题意:给你n个数为一个列表lst,在给一个a列表,给一个b列表,若lst中的数字出现在a则+1分,出现在b则-1分,求总分//思路:遍历if __name__ == '__main__': n, m = input().split() lst = input().split() a = set(input().split()) b = set(input().s...
2018-06-20 11:20:37
313
原创 HackerRank Time Delta(python)
//题意:多组输入,发表一个东西,给你两个区时,计算差,可能为负,abs//思路:c++是相当的麻烦,若果考虑全的话几百行代码,用python的库函数from datetime import datetime as ffmt = '%a %d %b %Y %H:%M:%S %z'#格式化for i in range(int(input())): print(int(abs((f.str...
2018-06-20 10:19:35
240
原创 python列表元素的删除
#今天看到有人说列表删除元素会碰到index out of range的问题:lst = [0, 1, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 44, 1, 0]for i in range(len(lst)): if(lst[i] == 0): del lst[i]#list index out of ra...
2018-06-07 20:36:45
967
原创 HackerRank Lists
//题意:题目自定一种对list操作的简单方法,每次告诉你一个操作,以及一些操作规则,按照操作规则完成即可//思路:按照最简单思路,将所有操作枚举出来,当然还有一种用eval的方法这种很简便,见代码(还是按照c++思路写的,没有switch,就只能用if了):# python3if __name__ == '__main__': N = int(input()) lst = []...
2018-06-05 21:47:11
687
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅