
java
文章平均质量分 74
卑微小童
痴迷于技术无法自拔
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JUC并发编程-ReentrantLock原理
ReentrantLockReentrantlock 是并发包中一个可重入的锁,是基于AQS(AbstractQueuedSynchronized)实现的,它有公平锁和不公平锁两种实现方式。Reentranlock 中有一个内部抽象类 Sync 继承自 AbstractQueuedSynchronized ,主要是它来实现锁的功能, Sync 在 ReentrantLock 中有两种实现类:NonfairSync、FairSync,正好对应了ReentrantLock的非公平锁、公平锁两大类型。原创 2021-08-24 13:53:47 · 267 阅读 · 0 评论 -
JUC并发编程-ThreadFuture
FutureTask1. Futurefuture接口定义了获取任务线程执行信息以及取消线程运行的接口方法public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException原创 2021-08-24 09:51:00 · 319 阅读 · 0 评论 -
Spring-Import注解
Import注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Import { //Import注解常用于导入spring component Class<?>[] value();}@Import注解的使用主要与ConfiguretionClassPostProcessor有关。ConfigurationClassPostProcessor是Sp原创 2021-08-10 18:05:49 · 556 阅读 · 0 评论 -
Mybatis基本原理及整合Spring
Mybatis基本原理及整合SpringMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MyBatis 以及与Spring的整合过程中需要解决以下问题xml文件中的sql语句如何与接口映射mappe原创 2021-08-10 17:36:50 · 270 阅读 · 0 评论 -
Thread类
Thread 线程1. 重要的知识概念1.1 锁池假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B、c想要调用这个对象的某个synchronized方法(或者块),由于B、c线程在进入对象的synchronized方法(或者块)之前必须先获得该对象锁的拥有权,而恰巧该对象的锁目前正被线程A所占用,此时B、c线程就会被阻塞,进入一个地方去等待锁的释放,这个地方便是该对象的锁池1.2 等待池(等待队列)假设线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,同时线程A就进入到了该原创 2021-02-23 23:02:29 · 4942 阅读 · 1 评论 -
JUC并发编程-ConcurrentHashMap
ConcurrentHashMapConcurrentHashMap 同样也分为 1.7 、1.8 版,两者在实现上略有不同。1.7 /** * Segment 数组,存放数据时首先需要定位到具体的 Segment 中。 */ final Segment<K,V>[] segments; transient Set<K> keySet; transient Set<Map.Entry<K,V>> en原创 2021-02-19 15:46:49 · 148 阅读 · 0 评论 -
JUC并发编程-AQS原理
AQS1.概述谈到并发, 不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer (AQS)! 类如其名,抽象的队列式同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类都依赖于他,如常用的 ReentrantLock/Semaphore/CountDownLatch…。AQS的核心思想:如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,原创 2021-02-06 00:14:04 · 436 阅读 · 0 评论 -
ThreadLocal与ThreadLocalMap
ThreadLocal与ThreadLocalMap【jdk 1.8】使用场景每个线程需要一个独享的对象(通常是工具类)每个线程内需要保存全局变量,可以在不同的地方直接获取,避免参数传递的麻烦作用让某个需要用到的对象在线程间隔离(每个线程都有自己独享的对象)任何方法中都可以轻松获取其对象好处可以达到线程安全不需要加锁,提高效率高效利用内存,相比于每个任务都新建一个对象,用ThreadLocal可以节省内存和开销免去传递参数的繁琐,降低了程序耦合度主要方法1)in原创 2021-02-04 23:07:16 · 2451 阅读 · 0 评论 -
springboot *.jar中没有主清单属性 解决办法
创建springboot的一般会依赖springboot的parent或者导入pring-boot-dependencies如果是依赖springboot的parent项目遇到 *.jar中没有主清单属性 解决办法则需要添加此插件<properties> <start-class>com.lmt.springcloud.EurekaServerMain7001</start-class></properties> <buil原创 2021-01-28 19:28:58 · 334 阅读 · 0 评论 -
Tomcat部署war包应用
tomcat主要目录bin:包含启动关闭程序等conf:配置文件目录lib:库logs:日志存储目录webapps:默认的项目存储目录work:Catalina生成的文件部署将war包放在webapps目录下在conf目录下的server.xml文件里有这样一个默认配置<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">原创 2021-01-28 12:34:54 · 1020 阅读 · 0 评论 -
HashMap JDK1.8
HashMap JDK1.8在分析HashMap之前,我们先看一下Map接口java.util.Map在Map接口中我们主要观察三个地方首先时两个方法Set<K> keySet();Collection<V> values();ketSet方法可以看出其采用的是set来维护其key值,可以推出其key值是唯一的而values()方法的返回值可以看出其采用的Collection,可以看出其value值是不唯一的我们所需要看的另一个地方是在Map内部定义了一个Ent原创 2021-01-27 15:45:30 · 186 阅读 · 0 评论 -
JUC并发编程-线程池之ThreadPoolExecutor使用和原理
解决问题:提升性能 :它们通常在执行大量异步任务时,由于减少了每个任务的调用开销,并且它们提供了一种**限制和管理资源(包括线程)**的方法,使得性能提升明显;统计信息:每个ThreadPoolExecutor保持一些基本的统计信息,例如完成的任务数量。参数:corePoolSize 核心线程池大小maximumPoolSize 最大线程池大小线程池会根据corePoolSize和maximumPoolSize自动调整线程池的大小规则: 1. 当正在执行的线程数量少于core.原创 2021-01-26 21:10:07 · 179 阅读 · 0 评论 -
Spring security登录解析
AbstractAuthenticationProcessingFilterpublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (Ht原创 2020-12-18 15:03:58 · 373 阅读 · 0 评论 -
mybatis-Plus 通用枚举
通用枚举1、声明通用枚举属性方式一:使用 @EnumValue 注解枚举属性public enum StatusEnum { DISABLED(0,"禁用"),ENABLE(1,"正常"); StatusEnum(Integer code, String descp) { this.code = code; this.descp = descp; } @EnumValue//指明字段的值为code private Int原创 2020-11-29 11:26:55 · 559 阅读 · 0 评论 -
mybatis-Plus 逻辑删除
逻辑删除第一步:配置mybatis-plus: global-config: db-config: logic-delete-field: isDeleted #实体名称 logic-delete-value: 1 # 已经删除标志值 logic-not-delete-value: 0 #未删除标志值第二步:数据库字段类型支持说明:支持所有数据类型(推荐使用 Integer,Boolean,LocalDateTime)如果数据库字段使用dat原创 2020-11-29 10:33:13 · 974 阅读 · 0 评论 -
mybatis-Plus(Spring boot版)
一、配置pom文件<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version></dependency>配置数据源spring: datasource: type: com.alib原创 2020-11-29 10:05:58 · 1030 阅读 · 1 评论 -
HttpServlet
HttpServlet类首先看一下HttpServlet类的继承关系我们发现HttpServlet继承自GenericServlet类,而GenericServlet类是实现的Servlet和ServletConfig接口所以我们先看一下GenericServlet类的定义GenericServletpackage javax.servlet;import java.io.IOException;import java.io.Serializable;import java.util.E原创 2020-07-10 23:24:09 · 198 阅读 · 0 评论 -
ServletConfig
ServletConfig接口简介在运行 Servlet 程序时,可能需要一些辅助信息,例如,文件使用的编码、使用 Servlet 程序的共享信息等,这些信息可以在 web.xml 文件中使用一个或多个 <init-param>元素进行配置。当 Tomcat 初始化一个 Servlet 时,会将该 Servlet 的配置信息封装到 ServletConfig 对象中,此时可以通过调用 init(ServletConfig config)方法将 ServletConfig 对象传递给Servl原创 2020-07-10 17:46:58 · 258 阅读 · 0 评论 -
Java Servlet
Servlet简介Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。优势Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以原创 2020-07-09 23:24:00 · 144 阅读 · 1 评论 -
三层架构
三层架构 三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为 表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL) 三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。 三层架构区分层次的目的是为了原创 2020-07-08 10:28:08 · 369 阅读 · 0 评论 -
POJO
pojo POJO(Plain Ordinary Java Object)简单的Java对象。但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类*。 POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用原创 2020-07-08 09:29:09 · 141 阅读 · 0 评论 -
javabean
javabean JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。功能 用户可以使用JavaBean将功能、原创 2020-07-08 09:27:32 · 131 阅读 · 0 评论 -
java反射
package limengtong.com;/** * @author * @date 2020/7/2 - 19:15 */public class user { public int age; private String name; String add; public user(){ System.out.println("空的构造方法被调用"); } public user(int age, String nam.原创 2020-07-02 22:26:29 · 764 阅读 · 0 评论 -
对字符串拼接的使用陷阱:
对字符串拼接的使用:public class TestStringqubie { public static void main(String[] args) { //使用String 进行字符串的拼接 String s1= ""; for(int i=0;i<1000;i++) { s1 = s1 + i; //i会自动变为字符串,相当于产生了2000个对象 ...原创 2019-09-21 22:52:11 · 127 阅读 · 0 评论 -
StringBuilder/StringBuffer类
区别:String:不可变字符序列StringBuilder:可变,线程不安全,效率高(一般使用它)StringBufer:可变,线程安全效率低常用方法:与String相似的方法:public int index(String str)public int index(String str,int fromIndex)public String subString(int sta...原创 2019-09-21 22:25:27 · 122 阅读 · 0 评论 -
String类
String 类代表不可变的Unicode字符序列,我们称String对象为“不可变对象" 。原因:定义String 时候实际上是将String对象赋值给字符数组value[],并且数组使用final定义,所以Sring 对象不可变。常用方法:toString:String toString()返回此对象本身equals:boolean equals(Object anOb...原创 2019-09-21 21:41:22 · 93 阅读 · 0 评论