java
红丶
Stay hungry, stay foolish.
展开
-
JavaApi操作MongoDB
本文讲解java客户端对mongodb的CURD操作pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.原创 2020-10-21 21:33:31 · 387 阅读 · 0 评论 -
java工具包Lombok
为什么要使用lombok?lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码,尤其是针对pojo,在 MybatisPlus中使用lombox。官网:https://projectlombok.org/配置安装导入依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>原创 2020-10-18 20:20:48 · 466 阅读 · 2 评论 -
java FutureTask Callable
前言我们在工作中经常会遇到一个业务需要调用多个系统的http接口,然后所有的结果合并返回。如果我们串行一个接一个的调用,那么随着业务所需接口的增加(调用每个接口都需要一定的时间),耗时也会越来越长,这无疑是不合理的,这时候就需要使用多线程,但是Runnable接口并没有返回值,这时候该怎么办呢?从jdk 1.5开始,官方就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Callable接口public interface Callable<V> {原创 2020-10-15 16:18:38 · 277 阅读 · 0 评论 -
Java 锁
java中锁的概念自旋锁: 为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直至成功。悲观锁: 假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。乐观锁: 假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,重试修改。独享锁(写锁): 给资源加上写锁,线程可以修改资源,其他线程不能再加锁。共享锁(读锁):给资源加上读锁后只能读不能改,其他线程也只能- - 加读锁,不能加写锁。可重入锁/不可重入锁:线程拿到一把锁之后,是否可以自由进入同一把锁原创 2020-10-13 12:12:43 · 201 阅读 · 0 评论 -
Java 线程安全之原子性
原子操作定义原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可被打乱,也不可以被切割而执行其中的一部分(不可中断)。将整个操作视为一个整体是原子性的核心特征。线程安全问题首先看下面这样一段代码,两个线程都对count变量进行自加操作10000次public class ThreadSecurityDemo { private long count = 0; public void test() throws InterruptedException { for原创 2020-10-12 22:16:01 · 182 阅读 · 1 评论 -
Java 线程间通信
要实现多个线程之间的协同,需要涉及到线程之间相互通信,线程间通信分为以下四类:文件共享网络共享共享全局变量jdk提供的线程协调API本文只讲解jdk提供的API。三种线程协作通信的方式:suspend/resume(已弃用)wait/notifypark/unparksuspend/resume示例(生产者—消费者模型):线程1买包子,发现没有包子,停止执行,线程2生产出包子,通知线程1继续执行。public class Test { /** 包子 */ pu原创 2020-10-10 21:01:57 · 137 阅读 · 0 评论 -
Java NIO 编程
NIOjava.nio 全称 javanon-blockingIO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了 一系列改进的输入/输出的新特性,被统称为 NIO(即 NewIO)。新增了许多用于处理输入输出的类,这些类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写,新增 了满足 NIO 的功能。NIO 和 BIO 有着相同的目的和作用,但是它们的实现方式完全不同,BIO 以流的方式处 理数据,而 NIO 以块的方式处理数据,块 I/O原创 2020-09-14 22:54:25 · 183 阅读 · 0 评论 -
Lucene(全文检索)
什么是全文检索在我们生活中的数据可分为结构化数据和非结构化数据结构化数据格式固定、长度固定、数据类型固定。如数据库中的数据,查询方法:SQL语句。特点:简单、速度快。非结构化数据格式不固定、长度不固定、数据类型不固定。如word文档、txt、图片、XML、HTML、pdf文档、邮件、图像和音频/视频信息等查询方法:(1)顺序扫描法(Serial Scanning)所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的找,对于每一个文档,从头找到尾,如果此文档包含此字原创 2020-08-17 16:38:07 · 147 阅读 · 0 评论 -
java 基于接口的动态代理
动态代理特点:字节码随用随创建,随用随加载。 它与静态代理的区别也在于此。因为静态代理是字节码一上来就创建好,并完成加载。 装饰者模式就是静态代理的一种体现。基于接口的动态代理提供者:JDK 官方的 Proxy 类。要求:被代理类最少实现一个接口。案例我们在购买电脑时一般是在当地电脑经销商购买,而经销商的电脑是从生产商进货而来的,经销商通过差价来盈利,比如一台电脑从厂家以4000元买进,6000元卖出。在这个案例中,经销商就是代理对象,厂家就是被代理对象。代码演示IProxy接口原创 2020-07-27 18:30:14 · 486 阅读 · 0 评论 -
工厂模式java实现
程序的耦合耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立 性)。耦合性存在于各个领域,而非软件设计中独有的,但是我们只讨论软件工程中的耦合。在软件工程中,耦合指的就是就是对象之间的依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的原创 2020-07-25 16:40:19 · 363 阅读 · 0 评论 -
java redis连接池
NOSQL数据库NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。NOSQL数据库的优缺点优点:原创 2020-07-08 15:42:03 · 3831 阅读 · 0 评论 -
Socket网络编程(附java,python代码)
软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。网络通信协议网络通信协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守原创 2020-07-07 16:15:24 · 502 阅读 · 0 评论 -
java数据库连接池
什么是数据库连接池数据库连接池其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。连接池优势:1. 节约资源2. 用户访问高效实现连接池标准接口:javax.sql包下的DataSource方法:获取连接:getConnection()归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Conn原创 2020-06-24 18:57:18 · 639 阅读 · 0 评论 -
java连接数据库
什么是JDBCJDBC(Java DataBase Connectivity)是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。为什么要使用JDBC程序员如果要开发访问数据库的程序,只需要会调用 JDBC 接口中的方法即可,不用关注类是如何实现的。使用同一套 Java 代码,进行少量的修改就可以访问其他 JDBC 支持的数据库 。博主为大家提供了m原创 2020-06-16 12:26:43 · 573 阅读 · 0 评论 -
java线程和线程池
并发与并行并发:指两个或多个事件在同一个时间段内发生。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每 一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分 时交替运行的时间是非常短的。并行:指两个或多个事件在同一时刻发生(同时发生)。在多个 CPU 系统中,这些可以并发执行的程序便可以分配到多个处理器上(CPU),实现多任务并行执行,即利用每个处理器来处理一个可以并发执行的程序,这样多个原创 2020-06-13 11:17:07 · 606 阅读 · 0 评论 -
java读写文件的几种方式
java中是通过文件流来进行读写文件的,由于java面向对象的特性,在java中有专门的对象来进行文件的读写操作,下面通过代码一一为大家展示。通过FileReader和FileWriter进行文件的读写(以字符方式读写)常用于读写文本文件的最方便的读写方式import java.io.*;public class Fileiotest { public static void main(String[] args) throws IOException { //创建一个Fi原创 2020-06-12 08:25:59 · 1989 阅读 · 0 评论 -
java中String对象作为参数传递问题
问题java中将对象作为参数传递究竟是值传递还是引用传递?1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的。2、对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。且看下面代码首先我们有一个Student类,它有两个成员变量name和agepackage test_code;public class Student { String name; int age;}Student对象进行参数传递,运行如下代码package原创 2020-06-03 15:24:04 · 3799 阅读 · 0 评论