
Java基础
java基础
程序员楂楂
知道的越多,不知道的越多
展开
-
Java之网络编程UDP和TCP
推荐理由:通俗易懂,讲解全面传送带:https://www.cnblogs.com/xujingyang/p/6486046.html原创 2020-08-20 17:08:45 · 233 阅读 · 0 评论 -
Java获取当前时间的四种方式
面试时被问到如何获取系统当前时间,平时没有怎么注意这个问题,这里整理一下import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 获取当前时间的4种方式 */public class TimeTest { public static void main(String[] args) { //第一种 Date date=new Da原创 2020-05-27 14:32:32 · 1441 阅读 · 0 评论 -
ThreadPoolExecutor execute() 工作原理
自定义线程池:public class ThreadPoolTest { public static void main(String[] args) { //创建等待队列 BlockingQueue<Runnable> bqueue= new ArrayBlockingQueue<Runnable>(20); //创建线程池,池中保存的线程数为3,允许的最大线程数为5 ThreadPoolExecuto原创 2020-05-26 19:51:12 · 2097 阅读 · 0 评论 -
java并发编程(初识):Executor、ExecutorService、Executors
Executor:public interface Executor { void execute(Runnable command);}一、Executor:一个接口,其定义了一个接收Runnable对象的方法execute(Runnable command),该方法接收一个Runable实例,它用来执行一个任务,任务即一个实现了Runnable接口的类,一般来说,Runnable任务开辟在新线程中的使用方法为:new Thread(new RunnableTask())).star原创 2020-05-26 16:04:32 · 346 阅读 · 0 评论 -
多线程实现四种方式以及源码分析
实现 Java 多线程的方式有四种:继承Thread类,重写run方法 实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的参数 通过Callable和FutureTask创建线程 通过线程池创建线程第一种:继承 Thread 类,重写 run 方法package com.example.thread;public c...原创 2019-11-28 11:42:13 · 473 阅读 · 0 评论 -
计算两个经纬度之间的距离(java和数据库实现)
java实现:package com.example.util;public class LocationUtils { /** * 赤道半径 */ private static double EARTH_RADIUS =6378.137; private static double rad(double d) { return d...原创 2019-11-07 14:53:48 · 1066 阅读 · 0 评论 -
Java序列化的二三事(Serializable接口)
此篇文章来自《编写高质量代码:改善java程序的151个建议》学习记录。引入:类实现Serializable接口的目的是为了持久化,比如网络传输或者本地存储,为系统的分布和异构部署提供先决支持条件。若没有序列化,远程调用、对象数据库都不可能存在。序列化第一事:对于实现了Serializable接口的类应该显示的声明UID。代码示例:package com.example.test...原创 2019-02-22 11:04:28 · 532 阅读 · 0 评论 -
Java 随机数(Random VS SecureRandom)
生成随机数的几种方法Math.random()一随机数 java.util.Random伪随机数(线性同余法生成) java.util.concurrent.ThreadLocalRandom 工具类 java.security.SecureRandom 真随机数 Apache Commons-Lang 包中的RandomStringUtils类Math.random():(...原创 2019-06-03 10:25:41 · 1852 阅读 · 0 评论 -
java敏感词处理(分词工具,DFA算法)
引入:敏感词是许多网站需要处理的功能点,以下介绍两种处理办法。敏感词过滤,系统会有一个敏感词库,需要做的功能是发送的语句中是否包含敏感词,包含哪些敏感词,将语句中的敏感词进行替换。方法一:语句采用分词工具进行分词,再与敏感词库进行匹配查找。方法二:采用DFA算法进行敏感词匹配。方法一:采用分词工具实现敏感词过滤(IKAnalyzer3.2.5Stable.jar)package com....原创 2019-06-03 16:04:31 · 3540 阅读 · 0 评论 -
String & StringBuilder & StringBuffer
三者的区别:String:不可变字符串,适用于少量字符串操作的情况。StringBuilder:可变字符串,适用于单线程下在字符缓冲区进行大量操作的情况。StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况。为什么??String 是不可变的字符串,每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 Str...原创 2019-07-02 14:40:35 · 205 阅读 · 0 评论 -
线程安全(上)--彻底搞懂volatile关键字
转载:https://www.cnblogs.com/kubidemanong/p/9505944.html对于volatile这个关键字,相信很多朋友都听说过,甚至使用过,这个关键字虽然字面上理解起来比较简单,但是要用好起来却不是一件容易的事。这篇文章将从多个方面来讲解volatile,让你对它更加理解。计算机中为什么会出现线程不安全的问题volatile既然是与线程安全有关的问题...转载 2019-07-04 09:21:15 · 368 阅读 · 0 评论 -
java:视频帧截图
程序所需要的java包:https://download.youkuaiyun.com/download/tobe_coder/11484718代码实现:package com.example;import org.bytedeco.javacv.FFmpegFrameGrabber;import org.bytedeco.javacv.Frame;import org.bytedec...原创 2019-08-07 09:29:07 · 1166 阅读 · 0 评论 -
Java基础学习笔记(简单的设计模式细节剖析基础知识点)
单例模式(饿汉式):/** * 饿汉式的单例模式 * 优点:不能延迟加载,只要此类一被调用,对象立即创建 * 缺点:线程安全---天然的线程安全 * */public class HungrySinglton { //因为此实例只有一个,所以使用final修饰;因为此实例对象需要被getInstance()方法使用,所以使用static修饰 //此实例对象对于外部是不可见的...原创 2018-08-02 21:01:41 · 197 阅读 · 0 评论 -
Java基础知识(面向对象——学习笔记二)
查漏补缺:变量: 根据变量声明的位置不同 将变量分为局部变量 成员变量(实例变量 、 全局变量) 局部变量:声明在方法中的 或者是代码块中的变量 称之为局部变量(方法中的形参也是隶属于方法的局部变量) 只能在当前方法中有效 出了这个方法无效 局部变量 要在声明且赋值 才能够正常使用 代码块: ...原创 2018-08-05 16:36:58 · 254 阅读 · 0 评论 -
Java单例模式(适合在面试时写)
面试题中编写单例: public class Lazy implements Serializable{ /** * 设置默认版本号 */ private static final long serialVersionUID = 1L; //volative禁止指令重排,创建出多个对象-------->涉及到原子性操作问题 private static volati...原创 2018-08-11 10:57:50 · 2506 阅读 · 0 评论 -
Java代理模式实现总结
代理是一种设计模式,代理分成三种:静态代理,动态代理,CGLIB动态代理。代理的概念:1、代理对象存在的价值主要是用于拦截真实业务对象的访问。2、代理对象应该具有和目标对象(真实业务对象)相同的方法。静态代理: 1、需要定义接口或者父类。 2、被代理的对象与代理对象一起实现相同的接口或者继承相同的父类。静态代理小案例: public class Test { ...原创 2018-08-16 00:18:04 · 365 阅读 · 0 评论 -
Java模拟实现服务器(Version _1.0)
自己动手写一个服务器,不能说水平会有多大的提升,但是让我知道servlet是如何与服务器进行交互的。现在将简单的模拟实现记录下来。(此处记录的是服务器模拟的简易版本,以后还会写一个利用注解实现的服务器版本)分析图: Request代码:public class Request { private static final String BLANK=" "; private ...原创 2018-08-26 15:01:30 · 689 阅读 · 0 评论 -
Java记录一个工具类(递归扫描指定包下面的.class文件)
为什么说是记录呢?因为这段程序并不是我编写的,只是看别人的博客,想记录一下原创博客:https://my.oschina.net/huangyong/blog/158360/* * 一个工具类,获取指定包下的所有文件 */public class MyClassUtil { /** * 给我一个包名,获取该包下的所有class文件 * @param packageName...转载 2018-08-27 14:28:55 · 1256 阅读 · 0 评论 -
Java模拟服务器——使用注解处理(Vesion_2.0)
上一篇Java模拟服务器(Java模拟服务器(Version_1.0)),对比Version_2.0版本的区别Java模拟服务器version_1.0中的WebApp类维护的映射其实就是在写JavaWeb时写的web.xml配置文件:<?xml version="1.0" encoding="UTF-8"?><web-app> <servlet>...原创 2018-08-27 15:17:38 · 315 阅读 · 0 评论 -
数据库表映射成对象 (上课学习笔记)
分析图:数据库连接使用封装的数据库操作。查看上一篇:https://blog.youkuaiyun.com/ToBe_Coder/article/details/81916224User类:public class User { private Integer uid; private String upwd; private String uname; public User() ...原创 2018-08-24 18:47:50 · 1291 阅读 · 0 评论 -
Java模拟编写简易数据库连接池
数据库连接池的好处:对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库应用,频繁的建立、关闭连接,会极大的降低系统的性能,因为数据库的连接是非常耗时的操作,所以可能对于数据库连接就成了系统性能的瓶颈。 此处,编写一个简单的数据库连接池,理解数据库连接池...原创 2018-08-23 20:29:59 · 1314 阅读 · 0 评论 -
Java自己封装一个DBUtils的Demo
1、我们先将数据库连接相关的字段放在配置文件当中:# .properties文件,#代表注释#对于mysql的字段driver=com.mysql.jdbc.Driver#rewriteBatchedStatements=true 设置批处理url=jdbc:mysql://localhost:3306/test?useSSL=true&rewriteBatchedSta...原创 2018-08-21 23:14:35 · 834 阅读 · 0 评论 -
JDBC(有趣的sql语句带来的漏洞以及解决办法)
数据库查找(漏洞 bug)小案例: public class Test01 { public static void main(String[] args) { Connection conn=null; //建立连接 try { conn=DriverManager.g...原创 2018-08-16 21:46:22 · 538 阅读 · 0 评论 -
Java原子操作小案例(线程,并发)
分析以下案例:public class Test06 { public static void main(String[] args) { MyThread run=new MyThread(); for(int i=0;i<5;i++){ new Thread(run).start(); } //等待线程执行完毕 try { TimeUnit.SEC...原创 2018-08-11 16:07:32 · 243 阅读 · 2 评论 -
Java基础知识补充(io小案例笔记)
1、字符流分析以下程序:public static void out() throws IOException{ //1、创建流 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d.txt"))); //3、写出 bw.write("hello w...原创 2018-08-11 15:19:50 · 338 阅读 · 0 评论 -
反射(基础知识+案例)
反射 为什么需要反射? 反射指的是在运行时根据名字获取一个类的属性和方法信息,创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展 。尤其在一些框架中,框架的作者事先并不知道使用者要创建什么对象,所以由使用者告诉框架类的名称,然后框架通过反射来创建对象,调用方法。注意:通过反射创建对象与直接new产生对象相比,反射创...原创 2018-08-11 14:49:03 · 1133 阅读 · 1 评论 -
Java基础知识(抽象类,接口,内部类)笔记三
抽象类,接口,内部类笔记抽象类:1. 将一个类通过abstract修饰 那么这个类称之为抽象类2. 抽象类可以定义:1、成员变量 2、构造器 3、普通方法 4、抽象方法3. 思考:抽象类不能实例化,那为什么抽象类中可以定义构造器? 答:抽象类中的构造器不是给自身使用的,而是用来给子类使用,当子类实例化的时候会先加载父类的构造器再加载自身的构造器。4. ...原创 2018-08-05 00:21:34 · 406 阅读 · 0 评论 -
Java基础知识(学习笔记一)
标识符:1、组成——字母/_/$开头+字母/_/$/数字2、严格区分大小写3、不能是java中的关键字关键字:1、java中已经用作他途的,不能再继续使用2、goto等虽然java中没有使用,但是后期有可能会用,称之为保留字,也不可以用作标识符。2、null false true虽然不是关键字,但是不能作为标识符java采用的字符集合为:Unicode(万国码,统一...原创 2018-08-01 23:20:53 · 313 阅读 · 0 评论