- 博客(194)
- 资源 (1)
- 收藏
- 关注
原创 pd之数据模型
数据模型数据模型权限数据模型介绍导入表结构pd_common_login_log表pd_common_opt_log表pd_auth_menu表pd_auth_resource表pd_auth_role表pd_auth_user表pd_core_station表pd_core_org表pd_auth_user_role表pd_auth_role_org表pd_auth_role_authority表导入实体类认证和鉴权流程认证流程鉴权流程数据模型权限数据模型介绍在项目中要进行权限控制,需要有一套权限相
2022-05-31 07:19:39
958
原创 log+jwt+user+common+j2cache
log+jwt+user+common+j2cachepd-tools-loglogbacklogback介绍logback层级logback日志输出等级logback初始化步骤logback入门案例案例一案例二Spring EventSpring Event介绍Spring Event入门案例pd-tools-log使用pd-tools-jwt认证机制介绍HTTP Basic AuthCookie-Session AuthOAuth10.1.4 Token AuthJWTJWT介绍JWT的数据结构JWT头
2022-05-29 23:23:52
914
原创 项目搭建+swagger2+dozer+validator+xss
这里写目录标题项目搭建pd-tools-swagger2pd-tools-dozerpd-tools-validatorpd-tools-xsspd-tools-logpd-tools-jwtpd-tools-userpd-tools-corepd-tools-commonpd-tools-databasepd-tools-j2cache数据模型认证和鉴权流程项目搭建pd-tools-swagger2pd-tools-dozerpd-tools-validatorpd-tools-xsspd-t
2022-05-29 11:56:15
6881
原创 项目介绍和Spring Boot starter使用
品达通用权限系统项目概述项目介绍业务架构技术架构技术要求Spring Boot starterstarter介绍stater原理起步依赖自动配置基于java代码的Bean的配置自动配置条件依赖Bean 的参数获取Bean的发现Bean 的加载自动配置总结自定义staterlombok项目搭建pd-tools-swagger2pd-tools-dozerpd-tools-validatorpd-tools-xsspd-tools-logpd-tools-jwtpd-tools-userpd-tools-cor
2022-05-27 21:34:39
355
原创 LockSupport
AQSLockSupportLockSupport是什么线程等待唤醒机制(wait/notify)三种让线程等待和唤醒的方法Object类中的wait和notify方法实现线程等待和唤醒代码Condition接口中的await和signal方法实现线程的等待和唤醒传统的synchronized和lock实现等待唤醒通知的约束LockSupport类中的park等待和唤醒是什么方法demo重要说明LockSupportLockSupport是什么java.util.concurrent.locks下的一
2022-05-25 19:28:54
170
原创 intern()和两数之和
Java基础面试题intern()两数之和暴力破解算法优化intern()/* 两个String类型,默认比较的是内存地址 intern() 如果字符串池中存在,则直接取,否则,创建一个新的对象,放入池中 */ String str1 = new StringBuilder("58").append("tongcheng").toString(); System.out.println(str1); Sys
2022-05-25 17:55:12
124
原创 线程池与死锁定位分析
线程池为什么使用线程池?优势为什么使用线程池?优势查看本机的cpu核数:Runtime.getRuntime().availableProcessors()、线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后再线程创建后启动这些任务,如果线程数量超过了最大数量 超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行他的主要特点:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过复用利用已创建的线程降低线程创建和销毁造成的消耗第二:提高响应速度。当任
2022-05-25 13:08:45
733
原创 线程之阻塞队列
阻塞队列synchronized与lock的区别队列+阻塞队列为什么用?有什么好处?架构梳理+种类分析BlockingQueue的核心方法?SynchronousQueue用在哪里生产者消费者模型lock版阻塞队列版线程池消息中间件synchronized与lock的区别原始构成synchronized是关键字属于jvm层面monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步块或方法中才能进行调用wait/noti
2022-05-23 11:01:29
345
原创 CountDownLatch/CyclicBarrier/Semaphore
CountDownLatch/CyclicBarrier/SemaphoreCountDownLatchCyclicBarrierSemaphoreCountDownLatch火箭倒计时让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其他线程调用CountDown方法会将计数器减1(调用CountDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续
2022-05-22 14:24:03
102
原创 公平锁/非公平锁/可重入锁/独占锁/共享锁/自旋锁
@TOC公平锁/非公平锁是什么公平锁 是指多个线程按照申请锁的顺序来获取锁,类似于排队打饭,先来后到非公平锁 是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能会造成优先级反转或饥饿现象两者区别公平锁/非公平锁并发包中ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或非公平锁,默认是非公平锁二者区别公平锁:安装FIFO的规则从队列中取到自己非公平锁:上来就直接尝试占有锁,如果
2022-05-22 01:17:32
277
原创 集合不安全
集合不安全ArrayListHashSetHashMapArrayListArrayList线程不安全 底层原理数组ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < 30; i++) { new Thread(()->{
2022-05-21 22:50:47
107
原创 CAS && ABA
111CAS比较并交换CAS底层原理?如果知道,谈谈对UnSafe的理解atomicInteger.getAndIncrement()UnSafeCAS 是什么CAS 缺点ABA问题什么是ABA?原子引用 AtomicReferenceABA问题规避面试:CAS — UnSafe — CAS底层原理 — ABA —原子引用更新 — 如何规避ABA问题CAS比较并交换CAS 是什么? 比较并交换AtomicInteger atomicInteger = new AtomicInteger(5);
2022-05-21 10:35:53
271
原创 volatile
阳哥面试题volatile的理解volatile是java虚拟机提供的轻量级的同步机制JMM理解可见性原子性有序性volatile的理解volatile是java虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排序JMM理解JMM (Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念,并不证实存在,他描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的方访问方式JMM关于同步的规定:线
2022-05-20 23:16:23
185
原创 面试题-回忆往昔
面试题-回忆往昔1. @autowired与@resource的区别2. 单例模式3 new 对象1. @autowired与@resource的区别@autowired首先尝试通过类型注入,然后通过名字注入当有多个子实现类时:可以改为注入类型的名字或者通过@qulifier指定名称或者在其中一个实现类使用@primary (优先使用@resource首先通过名字进行注入,然后通过类型注入当有多个子实现类:可以改为注入类型的名字2. 单例模式恶汉式:不存在线程安全问题
2022-05-19 22:57:45
195
原创 EMQ基础功能
认证认证简介身份认证是大多数应用的组成部分,MQTT协议支持用户名和密码认证,启用身份认证能够有效阻止非法客户端的连接EMQ X中的认证指的是 当一个客户端连接到EMQX的时候,通过服务器的配置来控制客户端连接到服务器的权限EMQX 的认证包括两个层面:MQTT协议本身在CONNECT报文中指定用户名和密码,EMQX以插件形式支持基于Username、ClientID、Http、JWT、LDAP及各类数据库如MongoDB、MySQL、PostgreSQL、Redis等多种形式的认证在传输层上
2022-05-19 00:32:25
1372
原创 线程 安全
线程安全例子:public class Test {private static int num = 0;public static void main(String[] args) { Thread thread1 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 100000000; i++) {
2021-12-25 23:43:21
2344
1
原创 发送 邮件
/** * @author zhj * @Title: * @Package * @Description: * @date */public class Test { public static void main(String[] args) throws Exception { // 1 下载 mail包, 2 导包 // 邮件协议 // SMTP (Simple Mail Transfer Protocol)简单传输协议,中转站
2021-12-23 21:39:29
1214
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅