自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 log4j2日志的使用

一、日志框架之间的关系SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,而是通过Facade Pattern提供一些Java logging API,实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。应该如下面代码这样写,好处是如果后面想要换具体的日志框架是,记日志代码的地方不用变动。import org.apach

2022-02-11 21:45:00 1922

原创 Oracle表空间相关SQL操作

一、临时表空间查看表空间占用情况SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使用比",F.TOTAL_BYTES "空闲空间(M)",F.M

2022-02-11 17:32:14 229

原创 手写Redis分布式锁需注意的问题-理论

为什么需要分布式锁?首先,为了确保分布式锁可用个,至少要确保锁的实现同时满足下面四个条件:**互斥性。**在任何时刻,只有一个客户端能持有。**不会发生死锁。**即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。**具有容错性。**只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。解铃还需系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人家的锁给解了。在开始讲分布式锁之前,有必要简单介绍一下,为什么需要分布式锁?与分布式锁相对应的是「单机锁」

2022-02-11 17:31:19 391

原创 手写Redis分布式锁需注意的问题-实践

实现普通Redis分布式锁过程会遇到的问题问题1:使用Syschronize或者ReentrantLock,在分布式环境下会出现超买的情况。上redis分布式锁setnx:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annota

2022-02-11 17:30:49 656

原创 Spring事务失效的12种场景

​ 某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到spring事务。确实,spring事务用起来贼爽,就用一个简单的注解:@Transactional,就能轻松搞定事务。我猜大部分小伙伴也是这样用的,而且一直用一直爽。​ 但如果你使用不当,它也会坑你于无形。一、事务不生效1. 访问权限问题众所周知,Java的访问权限主要有四种:private、default、protected、public,

2022-02-11 17:30:09 132

原创 自定义参数校验器

1. 应用层如何使用package com.ken.business.protocol.input;import com.fasterxml.jackson.annotation.JsonFormat;import com.ken.business.protocol.vaildhandler.BirthdayVaildHandler;import com.ken.common.web.vaild.annotation.KenVaild;import lombok.Data;import org

2022-02-11 17:28:47 1023

原创 接口多版本的实现

1. 接口多版本的使用在Controller类上或者方法上加上@ApiVersion注解。package com.ken.business.demo.controller;import com.ken.business.demo.service.StudentService;import com.ken.business.protocol.input.StudentInput;import com.ken.common.core.result.R;import com.ken.common.c

2022-02-11 17:28:06 995 2

原创 自定义Spring线程池使用

1. 自定义Spring线程池使用business_demo业务工程依赖下面的common_web工程(jar工程)。DemoApplication中使用@EnableAsync启动异步。package com.ken.business.demo.application;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplicat

2022-02-11 17:27:26 809

原创 Java面试_周阳

一、 请谈谈你对volatile的理解1. volatile是Java虚拟机提供的轻量级额同步机制保证可见性;不保证原子性;禁止指令重排2. 谈一谈JMM(Java内存模型)Java内存模型本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定:(1). 线程解锁前,必须把共享变量的值刷新会主内存(2). 线程加锁前,必须读取主内存的最新值到自己的工作内存中(3). 加锁

2021-09-30 11:15:59 354

原创 算法-LRU-缓存

LRU-缓存题目:代码如下:import java.util.HashMap;/** * LRU * 节点为 Node<K, V> */public class Code_02_LRU2 { public static class Node<K, V> { public K key; public V value; public Node<K, V> last; public Node<K,

2021-04-28 11:57:17 101

原创 算法-猫狗队列

猫狗队列题目如下:代码如下:package com.jujuxiaer.zuoshen2018.class_03;import java.util.LinkedList;import java.util.Queue;public class Code_04_DogCatQueue { public static class Pet { private String type; private String petName; public Pet(String type, S

2021-04-28 11:21:10 115

原创 手写深拷贝(JS)

手写深拷贝(JS)代码const oldObj = { name: "Jujuxiaer", age: 20, colors: ['orange', 'red', 'blue'], friends: { name: "小可" }}const newObj1 = oldObj;newObj1.name = "小华";console.log(oldObj);console.log(newObj1);function deepClone

2021-04-27 14:11:02 107

原创 原型(JS)

原型(JS)代码:class Student { constructor(name, score) { this.name = name; this.score = score; } introduce() { console.log(`我是${this.name}, 考了${this.score}分。`); }}const student = new Student("Jujuxiaer, 92");console.log('student', s

2021-04-27 14:08:45 76

原创 Sping系列课程--工厂

Sping系列课程–工厂第一章 引言4. 工厂设计模式4.1 什么是工厂设计模式1. 概念:通过工厂类,创建对象 User user = new User(); UserDAO userDAO = new UserDAOImpl(); 2. 好处: 解耦合 耦合:指的是代码间的强关联关系,一方的改变会影响到另一方 问题:不利于代码维护 UserService userService = new UserServiceImpl();4.2 简单的工厂实现package com.ju

2021-04-19 15:47:17 203

原创 Spring系列课程--AOP编程

Spring系列课程–AOP编程第一章 静态代理设计模式1. 为什么需要代理设计模式1.1 问题在JavaEE分层开发中,哪个层次对于我们来说最重要DAO --> Service --> ControllerService层最重要,业务逻辑都写在了Service层Service层中包含了哪些代码?Service层 = 核心功能(几十行 上百行代码) + 额外功能(附加功能)1. 核心功能 业务运算 DAO调用2. 额外功能 1)不属于业务 2)可有可无 3

2021-04-19 15:45:14 120

原创 Spring系列--持久层整合

Spring系列–持久层整合第一章 持久层整合1. Spring框架为什么要与持久层技术进行整合1. JavaEE开发需要持久层进行数据库的访问操作2. JDBC Hibernate MyBatis进行持久开发过程存在大量的代理冗余3. Spring基于模板设计模式对于上述的持久层技术进行了封装1. JDBC |- JDBCTemplate2. Hibernate(JPA) |- HibernateTemplate3. Mybatis |- SqlSessionFactoryBean

2021-04-19 15:44:05 187

原创 P5-最长回文子串

题目描述class Solution { public String longestPalindrome(String s) { int len = s.length(); if (len < 2) { return s; } int maxLen = 1, begin = 0; // db[i][j]表示s[i, j]是否为回文串 boolean[][] dp = ne

2020-08-05 23:07:22 110

原创 P3-无重复字符的最长子串

题目描述代码如下:import java.util.HashMap;//leetcode submit region begin(Prohibit modification and deletion)class Solution { public int lengthOfLongestSubstring(String s) { if (s.length() == 0) { return 0; } HashMap<

2020-08-05 22:12:47 116

原创 PLSQL中的存储过程和函数

PLSQL中的存储过程和函数语法:create [or replace] procedure procedure_name [(parament1 [model1] datatype1, parament2 [model2] datatype2, ...)]is|asPL/SQL Block; 举例:create or replace proc...

2018-07-24 15:42:31 2290

原创 PLSQL中的SQL语句

PLSQL中的SQL语句## select into 语句:用于把从数据库中查询出的内容存入变量declare v_hire_date employees.hire_date%TYPE; v_salary empployees.salary%TYPE;begin select hire_date,salary into v_hire_date,v...

2018-07-24 08:24:59 3339

原创 PLSQL变量

PLSQL变量PLSQL 的变量类型系统内置的常规简单变量类型:比如说大多数数据库表的字段类型都可以作为变量类型用户自定义复杂变量类型:比如记录类型保存了一个指针值大对象类型(LOB):保存了一个指向大对象的地址PLSQL本身没有输入输出功能,如果要想 像命令行运行C程序那样可以接收输入值,那你必须依赖执行环境 把值传给PLSQL块,比如 iSQL Plus执行环境或者P...

2018-07-24 08:23:35 2088

原创 第十八单元:SQL进阶功能

分析函数提供一系列比较高级的SQL功能。分析函数是建立再数据窗口(over再一定范围进行数据分析),再一定的数据范围进行排序,汇总等.查询当前员工所在部门的平均工资,最高工资和最低工资,即可通过分析函数来实现。select e.last_name,e.salary,d.department_name, avg(e.salary) over(partition by d....

2018-07-24 08:22:50 194

原创 第十七单元:INSERT 增强

一个来源插入多个目标表(无条件):insert all into sal_history values(empid,hiredate,sal) into mgr_history values(empid,mgr,sal) select employee_id empid,hire_date hi redate,salary sal,manager_id mg...

2018-07-19 09:08:16 244

原创 第十五单元:子查询进阶

非相关子查询当作一张表来用:select e.last_name,e.salary,e.department_id,b.salavgfrom employees e,(select department_id,avg(salary) salavg from employees group by department_...

2018-07-18 15:43:43 175

原创 第六单元:子查询

子查询需求场景: 语法:select select_listfrom tablewhere expr operator (select select_list from table);举例:select last_name from employeeswhere salary &gt; (sele...

2018-07-18 14:35:54 189

原创 SQL练习题

创建表以及初始化数据:grant create table to sutdent1;-- Create table 学生信息create table HAND_STUDENT( STUDENT_NO VARCHAR2(10) not null, STUDENT_NAME VARCHAR2(20), STUDENT_AGE NUMBER(2), STUD...

2018-07-18 11:03:48 709

原创 实现监听器的四种方式

分别如下:一. 创建成员内部类 二. 创建匿名内部类 三. Activity直接实现监听器接口 四. 通过XML布局文件定义onClick属性一. 创建成员内部类 MainActivity.javapackage com.example.android.ui_button;import android.support.v7.app.AppCompatActivit...

2018-03-23 09:53:56 5272

原创 LinearLayout相关小知识点

1.gravity与layout_gravityandroid:gravity: 用于设置该控件中内容相对于该控件的对齐方式(可以不考虑当前布局的方向)android:layout_gravity: 用于设置该控件相对于父控件的对齐方式(需要考虑当前布局的方向) PS:如果当前线性布局的方向为垂直方向,那么layout_gravity中使用的对齐方式,只能是水平位置对齐 (l...

2018-03-22 14:11:40 296

原创 为控件添加监听器

步骤:1.布局文件中定义控件 2.Activity中获取代表控件的对象 3.定义一个类,来实现监听器接口,并重写其抽象方法 4.生成监听器对象 5.为控件添加监听器acitvity_main.xml&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;android.support.constraint.ConstraintLayou...

2018-03-22 12:36:40 1776

原创 Activity的生命周期

Activity的生命周期图如下: MainActivity.java主要代码段:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sav

2018-01-17 15:45:48 153

原创 产品族(例子)

实验内容: 产品族类图: 产品等级结构图: 代码目录结构: 结果:factory包IAutoFactory.javapackage factory;import product.ISUV;import product.ISport;public interface IAutoFactory { public ISport createSport(); public I

2017-09-25 23:21:05 2484

原创 工厂方法模式(例子)

Factory.javapackage com.jzh.Factory;/** * Created by nameJuzhihua on 2017/9/10. */public interface Factory { public Animal createAnimal();}Animal.javapackage com.jzh.Factory;/** * Created by

2017-09-14 13:38:27 755

原创 单例模式

饿汉式单例模式:package com.jzh.singleTon;/** * 饿汉式单例模式 * Created by nameJuzhihua on 2017/9/14. */public class SingletonHungry { //类初始化时,立即加载这个对象(没有延时加载的优势)。加载类时,线程安全 private static SingletonHungry

2017-09-14 13:31:06 215

原创 简单工厂

Animal.javapackage simpleFactory;/** * Created by 华帅 on 2017/9/10. */public abstract class Animal { public abstract void eat();}animalFactory.javapackage simpleFactory;/** * Created by 华帅 on

2017-09-14 13:26:12 219

原创 抽象工厂(例子)

CarFactory.javapackage com.jzh.abstractFactory;/** * Created by nameJuzhihua on 2017/9/10. */public interface CarFactory { Engine createEngine(); Seat createSeat(); Tyre createTyre();}L

2017-09-14 13:22:10 672

原创 BNUOJ 1006-Primary Arithmetic

#include<iostream>using namespace std;int main(){ int a, b, x, y, c; int result; while (cin >> a >> b) { if (a == 0 && b == 0) { break; }//或者跟whil

2016-10-20 22:13:55 248

原创 杭电OJ 1002 A+B Problem II

#include <iostream> #include <string> using namespace std;void Add(string a, string b, char sum[], int& count){//大数加法 int len1 = a.length();//数a的长度 int len2 = b.length();//数b的长度 int i =

2016-09-12 15:01:03 727

转载 数组实现的队列

队列的思路和栈差不多,他只是先进先出(FIFO)的方式。他的主要操作和栈有:IsEmpty判断空,EnQueue入队,(栈是push,不过没有什么大的区别)。DeQueue出队。其核心数据也是很相似,也有一个数据区域nData,不过他是队头nHand和队尾nTail。对头定位着将要出队的元素,队尾对应着入队的元素。 实现细节:也是为了能使操作简单一些,我们开始都从0开始,nTail指向的是入队时候

2016-09-09 20:13:19 396

原创 交换两个int指针

#include<iostream>using namespace std;//既不交换指针,也不交换指针所指的内容void SwapPointer1(int *p, int *q){ int *temp = p; p = q; q = temp;}//交换指针所指的内容void SwapPointer2(int *p, int *q){ int te

2016-09-09 15:38:32 427

原创 函数比较int的值和int类型指针所指的值,返回较大的那个

//编写一个函数,令其接受两个参数:一个是int类型的数,另一个是int类型的指针。函数比较int的值和指针所指的值,返回较大的那个。/*1.写一个myCompare()函数 2.随机产生一组100以内的数放在一个数组a[]里,输入要比较的数j 3.调用myCompare()函数输出j和数组a[]首元素中最大者 4.利用范围for循环输出数组中所有元素*/#include<iostre

2016-09-09 14:50:00 1206

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除