- 博客(16)
- 收藏
- 关注
原创 商品和活动的二维组合全排列
商品和活动的二维组合全排列场景:有m个商品,每个商品有0-n个活动(立减或优惠券),每个商品只能使用一种活动,A商品的A1活动可能和B商品的B2活动存在冲突。求出优惠金额最大的组合?思路:先求出所有组合的全排列,再根据规则过滤有冲突的组合,对剩余组合对优惠金额排序,求出目标值。重点:求出所有组合全排列的算法。为了简化算法,假定每种商品都有n个活动(不足补空值),则所有组合数为 m^n,再获取每种组合的具体组合信息即可。为了说明思路,用整型二维数组演示(实际应用可将m个商品的所有活动转为二维数组):
2020-05-28 13:43:38
337
原创 面试集合
已经看过,还需要温习的:spring+mybatis配置读写分离 两种方式SpringBoot + MyBatis + MySQL 读写分离实战
2020-03-27 21:44:26
200
原创 分布式锁
package lock;/** * Created with IDEA * author:liuhaotian * Date:2019/9/14 15:51 * Description: 分布式锁 */public class DistributedLock { /** * 基于redis实现分布式锁 * 基于 REDIS 的 SETNX()、GET(...
2020-03-11 23:17:37
143
原创 Java高阶学习
一、JVM1.方法区作用:存放加载的类信息,常量,静态变量,JIT编译后的代码数据。GC:会OOM,存在垃圾回收,但回收效率低,主要针对常量池的回收和类型的卸载。2.堆作用:存放对象实例,几乎所有的对象,数组。GC:最容易OOM。-Xms -Xmx引用计数法:存在两个对象相互引用的问题。可达性分析算法:(主流)GC Root可以是:虚拟机栈,方法中静态属性引用的对象,方法区中常量......
2020-03-09 20:21:56
746
原创 缓存相关
一.缓存常见问题:1.缓存雪崩:指多台服务器设置缓存时采用了相同的过期时间,导致缓存在某一时间全部失效,请求全部转发到DB。解决方法:设置缓存时间为 基数+随机数2.缓存穿透:指查询一个不存在的key,因为容错机制(先查缓存,没有再查DB)可能导致不存在的key频繁请求DB。解决方法:拦截空缓存请求3.热key可以在应用端处理。...
2019-11-19 19:31:41
87
原创 Mysql常见问题总结
MySQL常见的七种锁详细介绍 :https://blog.youkuaiyun.com/Saintyyu/article/details/91269087
2019-11-19 19:00:31
116
原创 JVM调优
1.jvm堆栈初始化参数-Xss 每个线程堆栈的大小。一般情况下256K是足够了。影响此进程中并发线程数大小。-Xms初始的Heap的大小。-Xmx最大Heap的大小。在很多情况下,-Xms和-Xmx设置成一样的。这么设置,是因为当Heap不够用时,会发生内存抖动,影响程序运行稳定性。...
2019-11-12 15:29:20
125
1
原创 Java系统(非tomcat部署)启动/终止脚本
1.启动脚本#!/bin/shexport JAVA_HOME=/export/servers/jdk1.8.0_60export JAVA_BIN=/export/servers/jdk1.8.0_60/binBIN_DIR=`dirname $0`/..BIN_DIR=`(cd "$BASEDIR"; pwd)`BASE_DIR=`(cd ../; pwd)`CONF_DIR...
2019-11-12 15:21:40
258
原创 设计模式-工厂模式/抽象工厂模式
工厂模式的应用场景和实现代码适用场景:用来向使用者屏蔽创建对象的细节如果不用工厂模式,就要亲自关注如何创建对象,造成创建对象的代码和使用对象的代码耦合度很高,不易后续修改和测试。实现代码:一个业务父类,N个业务子类一个工厂接口N个工厂接口实现类-具体的工厂通过具体的工厂创建业务子类实例class Book { public Book(){ } } ...
2019-10-22 18:24:48
123
原创 设计模式-单例模式
单例模式的应用场景和实现代码在创建对象时,通过单例模式可以保证只有一个实例存在 。 例如项目中有多处都从同一个配置文件中读取发送邮件的列表,那么我们就可以用单例模式来创建这个读配置文件的类 。MailListReader 双重检查的线程安全类一个静态的成员变量一个私有的构造函数一个共有的静态函数public class MailListReader { private st...
2019-10-22 17:59:16
90
原创 设计模式-总结(设计模式的思想来自日常生活)
1. 设计模式的分类:根据适用方式分为三大类:创建型,结构型,行为型。创建型:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式。结构型:适配器模式 、装饰器模式、代理模式、外观模式、桥接模式、组合模式和享元模式 。行为型:策略模式、模板万法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。2.学习路线1.设计模式的特...
2019-10-22 17:47:46
153
原创 软件疑难杂症的解决药方
1.IDEA Tomcat Server日志中文乱码 https://blog.youkuaiyun.com/DJH2717/article/details/88876430修改 Tomact 的 conf 目录下的 logging.properties 中的所有 UTF-8 改成 GBK:如:java.util.logging.ConsoleHandler.encoding = utf-8改为:...
2019-10-21 15:38:07
199
原创 设计模式-代理模式-动态代理
Service接口package spring.aop.DynamicProxy;/** * Created with IDEA * author:liuhaotian * Date:2019/9/1 23:03 * Description: */public interface Service { String sellCar(String carName);}...
2019-09-02 23:13:32
82
原创 HTTP TCP学习三 HTTP POST GET调用Util
常用POST,GET请求maven: <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version...
2019-08-29 12:00:52
116
原创 关于Java中异常处理
1.抛出异常有三种形式一是throw,一个throws,还有一种系统自动抛异常。 ①系统自动抛异常:当程序语句出现一些逻辑错误、主义错误或类型转换错误时,系统会自动抛出异常。例如:除数为0时 ②throw:一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常。例如: public static void main(String[] args) { S...
2018-03-19 13:00:59
152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人