程序设计
给我一个自信的表情
每天一点点
展开
-
实习问题小总结2
1.Lambda的嵌套使用:简单介绍一个Lambda表达式:Lambda可以理解为一个匿名的实现类,它是函数式接口的实现,它可以作为参数传递个方法,这里主要的思想即:行为参数化。行为参数化:即将一个行为传递作为参数传递出去,然后该方法内部就可以使用该行为进行特定的逻辑处理。Lambda表达式是一个实现类,而我们在给目标方法传入该实现类时,直接写入Lambda表达式即可。Lambda表达式参...原创 2019-12-29 21:55:01 · 220 阅读 · 0 评论 -
Java8函数方法和Lambda感悟
为了更清楚的理解为什么需要函数方法和Lambad,我们一步一步的以实际的场景案例来进行分析;1.我们有很多钱,但是钱的面额有10,50,100,我们为了统计100元的有多少,我们的做法如下:创建一个A类,A类有一个A'方法,该方法可以统计出100元的个数;即该类将功能(筛选百元钞票的个数)进行了内嵌,如果需要则只需要创建该实例,调用该方法即可。2.但当我们还需要筛选出特定要求的百元...原创 2019-12-16 13:25:06 · 176 阅读 · 0 评论 -
实习问题小总结
11月问题总结:1.安装Centos操作系统网络配置Centos7默认安装后是不启动网络的,需要进行一定的配置;进入/etc/sysconfig/network-script/ifcfg-eth0进行进行配置静态IP;BOOTPROTO=dhcpDEVICE=eth0HWADDR=52:54:00:4d:75:86NM_CONTROLLED=noONBOOT=yesTYPE...原创 2019-12-03 17:22:02 · 214 阅读 · 0 评论 -
回调
模块的调用回调是一种双向的调用模式,即被调用的接口被调用时,也会调用对方的接口,eg:A调用B的某个方法,B执行完后又调用A的某个方法。⑴调的用途:一般用于层间协作,上层将函数安装在下层,下层在一定的条件下出发回调,例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。⑵Ja...原创 2019-10-17 08:54:41 · 111 阅读 · 0 评论 -
计数排序解析
对于排序,对于第一次看计数排序代码,则会被数组的嵌套绕晕,最好的方式就是,将数组代入,一步一步执行,便能更好的理解代码。计数排序的代码为:package com.dong.counting;public class Counting { public static void countSort(int array[],int size,int result[],int K) {5...原创 2019-02-21 10:49:03 · 141 阅读 · 0 评论 -
Java错题知识点整理
1.方法重写与重载?答:方法重写遵循以下几个原则:三同,一小,一大:三同:重写方法的函数名,参数类型,返回值类型相同;一小:即子类方法声明抛出的异常比父类方法声明抛出的异常更小或者相等;一大:即子类方法的访问修饰符比父类方法更大或相等。重载即在一个类中有多个函数名相同的函数,重载的条件是:函数名相同,参数类型不同,参数个数不同,参数次序不同,但注意,对参数的返回值没有要求,可以...原创 2019-02-26 09:24:08 · 362 阅读 · 0 评论 -
Java8理解流一
流介绍流,一个抽象的概念,当我听到流这个词时,第一想到的画面是流动的水,如何在程序中理解它,我的理解是:流,动态的,具有方向性,而不是静态的,对于Java8之前的输入流,输出流的理解,流的方向取决于数据与内存;其二,流是数据的一种状态,流的本质是数据,输入流,输出流中包含着想要传输的数据。流这个概念在Java8之后,它成为Java的API,Java8实战的定义是”从支持数据处理操作的源...原创 2019-01-28 19:56:08 · 334 阅读 · 0 评论 -
StringTokenizer类
StringTokenizerStringTokenizer类允许应用程序将字符串拆分成令牌,StringTokenizer方法不区分标识符,数字和引用的字符串,也不识别和跳过注释。在创建StringTokenizer实例时,可以指定一组分隔符。创建StringTokenizer实例: //创建实例,使用空格作为分隔符 StringTokenizer st = n...原创 2018-12-06 19:58:32 · 348 阅读 · 0 评论 -
虚拟机安装Centos设置网络问题
当使用VM安装完Centos后,默认网络不是启动的,需要手动配置网络设置。1.VM中的三种网络配置模式⑴桥接模式 VMware桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络⑵NAT模式NAT,是Network Address Translation的缩写,意即网络地址转换。NAT...转载 2018-12-12 16:26:55 · 210 阅读 · 0 评论 -
List阅读
List:一种线性的数据结构,在Java中,List是一个接口,在接口中定义了相关的操作,它的父类是Collection接口,它的子类有:quentialList , ArrayList , AttributeList , CopyOnWriteArrayList , LinkedList , RoleList , RoleUnresolvedList , Stack , Vector.常...原创 2019-03-21 15:47:45 · 287 阅读 · 0 评论 -
Set,HashSet,TreeSet解析
Set前面写过一篇有关Set的笔记,发现写的过于基础,没有说明重点,在此重新更新一篇。Set是一个不允许有重复元素出现的线性数据结构,它的实现类有:AbstractSet , ConcurrentHashMap.KeySetView , ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet , HashSet , JobStateRea...原创 2019-03-23 16:23:56 · 176 阅读 · 0 评论 -
For循环
问题:经常看网上两种写法,在循环中,1.将变量i定义在for循环中,2.提前定义,直接在循环中使用.这两者有没有差距了?package com.dong.acm;public class testFor { public static void testfor() { int i ; for(int i = 0 ;i<800 ;i++) System.out...原创 2019-05-28 14:23:13 · 265 阅读 · 0 评论 -
有趣的i++
今天看到关于a[i]=i++的标题,内容也没看,就自己在这练习了一下,觉得挺有趣第一种情况package com.dong.test;import org.junit.jupiter.api.Test;public class Testadd { @Test public void test1() { int [] array =new int[10]; for(in...原创 2019-06-18 16:30:03 · 136 阅读 · 0 评论 -
动态代理和静态代理
代理当存在不能直接访问某个对象,事务,服务,接口等,通过别的对象来代替自己完成相关操作。例如:代理模式,代理服务器,静态|动态代理。Java中的代理⑴静态代理静态代理,这里的静态代理指的是代理类在程序运行前就已经存在,即已经在Java代码中被明确指出。Java中代理的实现是委托类和代理类实现相同的接口,然后通过聚合的方式,在代理类中引用委托类,并调用委托类的方法。这种模式和装饰器模...原创 2019-10-09 15:09:38 · 158 阅读 · 0 评论 -
日志简单介绍
日志简单介绍当在项目的编写中,我们使用最多的是使用输入输出语句,可以输出程序运行的进度,也间接的推断出BUG的大致位置。当代码比较多的时候,则需要添加过多的输出语句,同时对于调试比较麻烦。因此引入日志,可以记录程序在运行状态,并进行控制台输出或者存储在特定文件中。日志的介绍日志门面一组使用facade设计模式设计的一组接口应用;日志门面有:Jcl(commons-loggings)...原创 2019-10-09 15:25:13 · 207 阅读 · 0 评论 -
Java序列化
什么是序列化与反序列化?Java的序列化是JDK1.1中引入的,其目的时为了将Java对象转换为字节数组,便于存储或传输。反序列化即将字节数组转换回Java对象保存时的状态。解析Java中的Serializable接口是一个空接口,没有任何实现。序列化的实际过程需要自己进行code,假设我们将对象写入到文件中,可以通过ObjectOutputStream将对象写入到文件中,然后可通过O...原创 2019-10-10 10:16:41 · 95 阅读 · 0 评论 -
Java中字符的运算
字符Char:字符编码:字符编码:也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。通俗的讲就是一套规则,将字符和响应的对象进行一一匹配,以便于在特定的场合使用,例如在计算机低层,使用二进制存储数据,因此使用高级语言编写的程序,最终会被转换为二进制,而这个转换规则,就是使用相应的字符编码。...原创 2018-11-19 11:24:11 · 2506 阅读 · 1 评论 -
字符串算法
字符串匹配算法字符串匹配:在字符串中查找子串,或者查找符合某种模式的字符组合。字符串匹配的算法有:字符串T为主串,P为需要匹配的模式或者固定的字符串,T与P的长度分别为n,m,即字符数组的T的下标是0-n-1,P的下标是0-m-1, 蛮力法 Rabin-Karp字符串匹配算法 采用有限状态机实现的字符串匹配算法 KMP算法 Boyer-M...原创 2018-11-15 14:11:58 · 222 阅读 · 0 评论 -
栈
定义:插入和删除都发生在同一端的有序列表,操作这端称为栈顶,先插入的元素会被最后移除,栈的特点是先进后出栈操作:push()向栈中推入元素pop()从栈中移除元素下溢:从空栈中弹出元素;上溢:向满栈中推入元素;栈的运用:1.符号或标签匹配问题2.中缀表示法转换为后缀表示法3.求后缀表达式的值,4.函数调用 5.浏览器的回退机制6.树的遍历充当...原创 2018-11-09 10:07:24 · 114 阅读 · 0 评论 -
Git笔记(一)
Git是一个分布式版本控制,个人在自己PC上工作,提交,当需要将工作分享的时候,只需连接到特定仓库即可,每个人都是独立开发,不存在强制性集中管理,同时不会因为中央服务器崩溃而导致的整个版本系统的崩溃. Git的几种工作模型:⑴访问模型:当使用Git时,对于你的电脑来说你使用的是集中式系统开发方式,仓库中的更改全部存放在你的机器上,当你完成一些工作,然后将这些工作保存到你本地的仓库,当你...原创 2018-08-10 11:09:18 · 136 阅读 · 0 评论 -
Java知识要点
Java简介:Java由詹姆斯.高斯林(James Gosling)带领团队开发,应用于家用电器,因为家电用器由很多不同的计算机处理器控制的,所以Gosling设计语言需要适应所有这些不同的处理器,为了简化编译,Gosling设计了中间语言,独立于所有的家电类型,中间语言即字节码(Java byte-code),然后由Java VM进行运行。字节码和Java虚拟机:计算机能直接识别和执...原创 2018-08-08 10:46:57 · 159 阅读 · 0 评论 -
封装继承多态
封装:将对象的属性方法进行隐藏,只对特定的对象提供访问权限,通过权限修饰符,方法的参数隐藏来实现隐藏具体的实现过程,从而达到保护数据隐私,计算思维中有一个重要的概念是抽象,即忽略具体,关注重点,这个思想在封装中也有体现, 在接口的定义和实现方式,也有封装的思想,将具体的方法实现进行封装,对外只提供方法的定义,实现了对具体操作的隐藏。继承:简单的理解就是以现有类为基础,复制它,然后通过添...原创 2018-08-08 11:03:46 · 4081 阅读 · 0 评论 -
HashSet,LinkedSet,TreeSet简单探索:
HashSet内部使用HashMap来实现,HashMap类 继承AbstractSet 类,实现Map接口;HashMap的基本操作有: add,remove,contains,size,clear,clone,isEmpty,iterator, …HashMap的构造方法有:HashSet();HashSet(Collection <? extends E> c);Hash...原创 2018-08-08 12:27:12 · 2271 阅读 · 0 评论 -
Java中的null和初始化
最近在学习Java8的过程中,在写行为参数化以及lambad表达式的例子中,一个将数组中的偶数输出保存到一个ArrayList中,出现的问题?具体代码如下:package com.dong.java8;import java.util.ArrayList; public class testLambda2 { public static void main(Str...原创 2018-10-19 08:41:40 · 2462 阅读 · 0 评论 -
再度思考lambda表达式
lambda表达式,在《Java8实战》中,将Lambda的理解为简洁地可传递的匿名函数,这里重要强调简洁,可传递,匿名,函数,从字面可以清楚的了解lambda是什么,但是需要了解透彻liambda的实质,还需要思考为什么引用他?任何程序语言,实现目标功能所需的代码越少,说明其对低层的封装越多,这里的低层并不仅仅是指硬件,机器语言,而是指将原有的东西进行封装,实现更少代码,更精简的api;...原创 2018-10-19 14:43:05 · 112 阅读 · 0 评论 -
Java高并发理论篇
作为IT程序猿,掌握多线程是作为服务器开发人员不可缺少的技能之一,同时在单核CPU的情况下,为了模拟多核的情况,我们也必须掌握多线程编程的问题,下来我们了解一下并行编程:一:前提知识的相关概念同步、异步:同步异步通常形容方法调用,同步:在方法调用中,同步方法指的是方法的执行必须有序进行,当前方法的执行必须在上一个方法的结束;即有序执行异步:在方法调用中,方法的执行在另一个线程中...原创 2018-10-25 14:42:35 · 219 阅读 · 0 评论 -
Java高并发代码篇
一、创建线程: package com.dong.testThread;/** * * 1.线程的创建 * 2.线程的方法 * * @author liuD * */public class MultiThread { public static void main(String[] args) throws InterruptedException { //创建...原创 2018-10-26 09:56:33 · 1493 阅读 · 0 评论 -
Fork/Join框架
线程池:简单的理解就是拥有很多线程的容器,为什么需要线程池?因为线程是一个轻量级的工具,其创建和关闭依然需要花费时间,当需要创建线程的时候,就可以从线程池获得空闲线程,关闭线程变成了向线程池归还线程。在Java.util.concurrent包中,ThreadPoolExecutor表示一个线程池,Excutors类则扮演线程池工厂的角色,通过Executors可以取得一个拥有特定功能的线...原创 2018-10-29 11:29:50 · 173 阅读 · 0 评论 -
ThreadLocal和无锁
线程安全线程安全,一般指的是某个对象,变量在进行多线程操作的时候,得到的结果与期望的结果一致。当我们使用线程去访问一个对象时,由于对象内部的某些操作原因,而导致的线程的最终结果不符合期望,就是线程不安全,例如:ArrayList是一个线程不安全的容器,如果在多线程中使用ArrayList,程序有可能出现隐藏的错误。例如:package com.dong.testThread;impo...原创 2018-10-31 11:36:31 · 261 阅读 · 0 评论 -
Java并发包
重入锁:java.util.concurrent.locks.ReentrantLock特点:⑴显式加锁,解锁⑵可以多次加锁,重入锁,但是,解锁次数必须与加锁次数相同;package com.dong.testThread;/** * 重入锁的使用 * * author:liuD */import java.util.concurrent.locks.Reentra...原创 2018-10-26 16:54:16 · 307 阅读 · 0 评论 -
JavaNIO代码篇
传统的I/O:传统的服务器的I/O是阻塞的,即当服务器端开启后,它会监听端口,直到有客户端发来请求,否则一直将是堵塞的,NIO(非阻塞I/O):基础概念:通道:用于建立客户端和服务端的连接,可以将输入/输出流写入到通道,通道将缓冲区的数据块移入或移出到各种I/O源,如文件,socket,数据报。对于网络编程,只有三类通道类:SocketChannel,ServerSocketCha...原创 2018-10-29 22:46:00 · 794 阅读 · 2 评论 -
自我感觉良好的代码书写格式(献丑了)
一直用传统的代码书写格式,感觉有的代码很乱,突发奇想,可不可以即追求技术,又追求艺术了,所以就自己在那瞎排了一个代码的书写格式,目前只是初步的想法而已,,还需要很多改进;小二,上代码(这段代码的内容是有关Java网络编程的,内容无所谓,咱们主要看书写的格式)package com.dong.Address;import java.net.InetAddress;import jav...原创 2018-10-24 20:20:57 · 470 阅读 · 0 评论 -
锁优化
当使用synchronzied关键字修饰实例变量或者方法的时候,它会为临界资源上锁,只有访问的线程获得锁后才可以使用临界资源,在单核CPU上,并行算法不一定优于串行算法,因为单核CPU需要不停的在线程之间切换和调度,在并行算法中,合理的使用锁可以降低线程之前对锁的竞争导致的时间的浪费。使用锁的建议:⑴在同步方法中,减少锁的持有时间,最简单的是对于不需要同步的方法或者变量,我们不需要将其放在...原创 2018-10-30 15:02:37 · 112 阅读 · 0 评论 -
ReaWriteLock应用
java.util.concurrent.locks.ReentrantReadWriteLock 使用Java提供的读写锁实现读和写操作;package com.dong.testThread;import java.util.Random;import java.util.concurrent.locks.Lock;import java.util.concurrent.lo...原创 2018-10-27 21:10:06 · 100 阅读 · 0 评论 -
Java8笔记(一)
1996年JDK1.0发布,不同版本的更新,直到Java8的发布,它所做的改变比以往的版本改动巨大,让程序编写容易,同时充分利用多核CPU的性能;Java8新增特性:⑴提供了一个新的API,Stream,支持许多处理数据的并行操作,使用内部迭代方法遍历集合;⑵行为参数化,即把方法作为参数传递给另一个方法的能力;⑶lamdba表达式,简化方法作为参数传递的写法,直接使用一种新的记法来...原创 2018-08-09 08:51:04 · 323 阅读 · 0 评论