自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 2022M6学习笔记

笔记整理

2022-06-08 19:42:42 316

原创 重温电商项目完整笔记(Undo)

慕课网17年项目 完成电商web的用户模块、分类模块、商品模块等

2022-06-08 09:47:32 1078

原创 Redis应用Consistent Hash分布式算法原理,连接池及接口封装

Consistent Hash (分布式算法) 将0到2^32-1的数轴首尾相连,key和Cache采用同样的hash算法计算并分布在环行数轴上,每一个key存储在顺时针方向离它最近的一个Cache中。 **hash倾斜性:**导致Cache节点分布不均匀导致有些Server负载过大,有些Server过于空闲。 解决: 引入虚拟节点 命中率公式:(1-n/(n+m))*100% n:服务器台数,m:新增台数 **Redis应用:**使用SharedJedisPool,初始化时指定。 RedisSha

2020-05-19 22:18:16 319

原创 Redis启动、系统命令、键命令、五种数据结构

简介 Remote Dictionary Server远程字典服务,高性能Key-Value数据库,内存数据库,可以导出到硬盘上,支持数据持久化,重启后可以reload回来。 官网:redis.io redis.cn 安装 1.下载压缩文件,解压,根目录执行make编译,make test测试 2.进入src目录 ./redis-server & 后台启动 3. ./redis-cli set a b keys * get b 4. 关闭 kill -9 PID 启动 1.进入

2020-05-19 01:42:12 260

原创 Tomcat集群Nginx负载均衡配置笔记

电商项目中Tomcat集群配置带来的主要问题: 1.session登录信息存取问题 2.服务器定时任务并发问题 解决方案: 1.nginx hash ip 优点:不改变现有架构,直接横向扩展 缺点:分配不平均、IP变化无法服务 2.nginx负载均衡 + session server+分布式锁 单机部署多应用 1.在/etc/profile 配置多个Tomcat环境变量 2.第一个tomcat不变,在第二个tomcat的bin目录下打开catalina.sh,给catalina_base 和 Catalin

2020-05-19 00:15:12 223

原创 Lombok简介

官网:https://peojectlombok.org 作用:通过简单注解,消除冗长代码 优点:提高编码效率,使代码更简洁,避免修改方法字段时忘记修改方法名。 原理:javac支持“JSR 269 API”规范,只要程序实现了这个API就能在javac运行时得到调用。编译程序对源代码进行分析,生成一棵AST抽象语法树,处理过程中运行LomBok注解处理器程序,对AST进行处理,然后Lombok Annotation Handler找到注解所在类对应语法树,修改语法树,输出修改过的抽象语法树并进行解析生成。

2020-05-18 16:05:59 206

原创 Hexo+GitHub博客搭建(Mark,UnComplete待更)

用了别人的模板,试着简单搭了一下 先马克,有时间慢慢琢磨 https://uni2017.github.io/

2020-05-06 22:06:14 238

原创 电商项目笔记(购物车模块)

购物车高复用核心方法 private CartVo getCartVoLimit(Integer userId){ CartVo cartVo = new CartVo(); List<Cart> cartList = cartMapper.selectByUserId(userId); List<CartProductVo>...

2020-05-06 21:57:31 631

原创 电商项目要点笔记(商品模块)

用户模块要点Md5加密横向越权与纵向越权Guava Cache的使用设计和封装无限层级树状数据结构递归处理复杂对象排重重写hashcode和equal静态块PageHelper分页Mybatis 对动态list遍历Mybatis 对where动态拼装pojo、bo、vo 与 pojo、vo Md5加密 横向越权与纵向越权 Guava Cache的使用 分类模块要点Md5加密横向越权与纵向越权Gua...

2020-05-06 21:57:00 461

原创 Maven、Git、VSFTPD、Nginx简介及初级安装使用整理

Maven 3.0.5 Maven是Java项目的构建和管理工具。包含的功能如: 1.基于archetype可以构建多种类型的java项目 2.Maven仓库对jar包进行统一管理,防止jar包重复和版本冲突 3.团队开发,Maven管理项目的RELEASE版本和SNAPSHOT版本,方便多模块开发的集成与测试 中央仓库:search.maven.org Maven的jar包不会传到git上,因为...

2020-05-06 16:33:09 245

原创 电商项目要点笔记(分类模块)

分类模块要点设计和封装无限层级树状数据结构递归处理复杂对象排重重写hashcode和equal 设计和封装无限层级树状数据结构 递归处理复杂对象排重 重写hashcode和equal ...

2020-04-30 15:37:15 406

原创 电商项目笔记(用户模块)

用户模块要点Md5加密横向越权与纵向越权Guava Cache的使用 Md5加密 横向越权与纵向越权 Guava Cache的使用

2020-04-30 15:21:54 331

原创 Java从0-1基础重刷 - 笔记(final与多线程高并发,多线程能否共享成员变量)

1.详解:https://www.cnblogs.com/yuanqinnan/p/11231274.html 2.question:多线程同一对象引用会共享成员变量吗? answer:代码区和数据区是分开的,每个线程独自拥有自己的局部变量。 创建的对象与方法放在堆中,但每个线程有自己的栈存放变量。 ...

2020-02-28 11:06:34 314

原创 Java从0-1基础重刷 - 笔记(基本类和包装类)

一. 基本类和包装类 基本类 包装类 长度 byte Byte 8 char Character 16 short Short 16 int Integer 32 float Float 32 long Long 64 double Double 64 包装类不可被继承。 1.包装类应用: 集合类泛型只能使用包装类 成员变量不允许有默认值时使用包...

2020-02-27 23:04:50 145

原创 题目笔记整理(一)

1.IP地址分类方法: A 1.0.0.0 到126.0.0.0有效 0.0.0.0 和127.0.0.0保留 B 128.1.0.0到191.254.0.0有效 128.0.0.0和191.255.0.0保留 C 192.0.1.0 到223.255.254.0有效 192.0.0.0和223.255.255.0保留 D 224.0.0.0到239.255.255.255用于多点广播 E 240...

2020-02-26 19:42:10 255

原创 Mac 安装Parallels虚拟机Linux来源、步骤、问题及解决记录

Mac安装Parallels虚拟机Linux来源、步骤、问题及解决Step 1 准备Step 2 Parallels Tool安装Step 3 源配置ping: unknown host Step 1 准备 Parallels破译版 找了很多 最后使用来源 https://www.jianshu.com/u/65a711ac412e CentOS镜像 https://developer.aliy...

2020-02-10 11:05:03 1349

原创 JVM虚拟机及线程池学习笔记

线程池 corePoolSize 当前线程数=corePoolSize 阻塞,阻塞队列满时创建新线程,直至macPoolSize,再来任务时,执行reject()。 初始化线程池 newFixedThreadPool() 初始化指定大小,即使没有可执行任务也不会释放线程。阻塞队列:LinkedBlockingQueue newCachedThreadPool() 初始化可以缓存的线程池,默认缓存6...

2019-03-09 11:32:40 262

原创 cookie和session的区别

Session 是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中; Cookie 是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现 Session 的一种方式。...

2019-03-09 11:32:22 154

原创 Java基础 数组、基本类型转换

基本类型转换 基本类型: 浮点型(float、double)、整形(byte、short、int、long)、字符类型(char) 引用类型: 类类型、接口类型、数组类型 从低位到高位排列: byte &amp;amp;gt; short &amp;amp;gt; char &amp;amp;gt; int &amp;amp;gt; long &amp;amp;gt; float &amp;amp;gt; double int[] a

2019-03-09 11:30:31 480

原创 Vector、ArrayList和LinkedList的使用场景、elemenData为什么要用transient修饰

使用场景: (1)如果应用程序对各个索引位置的元素进行大量的存取或删除操作,ArrayList对象要远优于LinkedList对象; ( 2 ) 如果应用程序主要是对列表进行循环,并且循环时候进行插入或者删除操作,LinkedList对象要远优于ArrayList对象;...

2019-03-09 11:30:09 324

原创 C++算法题——洛谷P1309瑞士轮(BUG 待更)

问题:时间复杂度过高。 解决方案:设置A、B两个数组分别存储赢与输的两组,组内顺序不变,最后用merge合并。 待改,待更,欢迎交流。 #include #include using namespace std; int main(){ int N,R,Q; int numQ,keyQ; int size = 0; cin &gt;&gt; N &gt;&gt; R &gt;&gt; Q; k...

2018-11-11 10:00:49 846

原创 恒生电子笔试题数据库及算法整理记录

一、数据库 AccoInfo 账户编号 用户名 余额 id name balance AccoCurrent_201811 账户编号 流水金额 时间 id amount time AccoCurrent_201812 账户编号 流水金额 时间 id amount time 1.账号为“1001“的客户充值200元 UPDATE AccoI...

2018-10-19 11:01:10 5723 4

原创 电商网站横向越权与纵向越权问题解决

横向越权 指攻击者尝试访问与他拥有相同权限的用户的资源,即同等级别的资源访问。如,一个用户试图访问其他用户的个人资料、尝试篡改其他用户的密码。 解决方法: 添加有有效期的token值标识,操作时比对。 解决案例: Q:编码时将重置密码问题与重置密码分为两个接口编写,重置密码传入值为用户名及密码,用户修改密码时进行密保答题,在成功答题后可通过持有其他用户用户名对同级用户进行密码修改。 S:指提交答案...

2018-10-17 11:09:48 1291

原创 Mybatis三剑客——Mybatis Generator、Mybatis plugin、Mybatis

一、Mybatis Generator 作用: 根据数据库自动生成pojo、dao(接口,供service调用)及对应xml文件。 配置: 1.倒入jar包。Maven托管: &amp;amp;amp;lt;plugin&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;org.mybatis.generator&amp;amp;amp;lt;/groupId&amp;amp;amp;

2018-10-12 16:29:05 926

原创 如何判断链表是否相交、判断链表有环、判断相交链表第一个交点、判断环形链表入口节点

判断相交: 设置两个栈,分别将两个链表从第一个节点开始入栈,然后从栈顶开始比较出栈,如果第一个节点相等则相交,交点为最后一个相同节点。 判断有环: 方法一:使用HashSet遍历链表,并存入节点ID,每遍历到一个新节点就将其ID与集合中已有ID进行比较,相同则有环,不同则存入集合继续遍历直至节点指向NULL则证明无环。 方法二:设置两个指针,一个fast每次前进2个节点,slow每次前进一个...

2018-09-13 09:45:00 474

原创 Hibernate与Mybatis的区别、Hibernate一级缓存与二级缓存之间的区别

Hibernate对数据库提供了较为完整的封装,不需要手写SQL语句,自动生成、自动执行,持久层框架,开源的对象关系映射,对JDBC的进一步封装。 Mybatis着力点在于JAVA对象与SQL之间的映射关系,需要编写sql语句,半自动,需要注意的细节更多,但是更有益于sql的优化,移植性弱,缓存机制不如hibernate。 Hibernate优点 (1)不需要编写SQL语句 (2)移植性好...

2018-09-12 18:03:05 3301

原创 微信小程序编写笔记(一)等待更新中……

一、编写启动页 text组件特性 只有text包围的文本才能在真机长按选中 text嵌套可设置两种颜色 支持转义字符解析 eg.\n 背景色填充 为了使背景色填充满,不可以直接在组件处使用100%,原因是只能覆盖到元素所及之处,不能覆盖整个屏幕; 不可以为组件使用固定高度,当屏幕滑动时会造成溢出。 解决方案: 为整个页面设置背景填充 page{ background...

2018-09-11 21:09:43 422

原创 TreeSet的底层实现

使用场景: (1)如果应用程序对各个索引位置的元素进行大量的存取或删除操作,ArrayList对象要远优于LinkedList对象; ( 2 ) 如果应用程序主要是对列表进行循环,并且循环时候进行插入或者删除操作,LinkedList对象要远优于ArrayList对象;...

2018-09-11 21:08:24 1213

原创 线程、线程池、引用及volatile与synchronized的区别

sychronizated 底层实现 自旋锁,偏向锁,轻量级锁,重量级锁的介绍以及升级过程 volatile 底层实现 CAS乐观锁的原理 ASQ 的原理 CountDownLanch 和 CyclicBarrier 的区别和用法 线程池的使用和相关参数 线程池的拒绝策略 FixedThreadPool SingleThreadPool CacheThreadPool 一些细节,比如说用了什么队...

2018-09-11 20:00:26 428

原创 HsahMap、ConcurrentHashMap

个人学习总结整理 资料来源:https://www.itcodemonkey.com/article/1266.html via:程序员小灰(VX公众号) HashMap - 实现原理及冲突解决 HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,数组中每一个元素的初始值都是Null。 执行Put操...

2018-09-10 18:05:25 347

原创 JVM虚拟机

内存模型 线程私有: 程序计数器 记录正在执行的虚拟机字节码指令的地址,本地方法则为空; 虚拟机栈 Java方法在执行时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息,调用至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程; 本地方法栈 本地方法:一般为使用其他语言编写的被编译为基于本机硬件和操作系统的程序,本地方法栈为之服务。 ...

2018-09-07 22:26:07 198

原创 String、StringBuffer、StringBulider的区别

1. String是不可变的字符串常量,StringBuffer和StringBulider是字符串变量; 2. String和StringBuffer是线程安全的,StringBulider是线程不安全的。 所有的不可变类都是线程安全的 StringBuffer中很多方法可以带有synchronized关键字而StringBulider没有 运行速度: StringBulider...

2018-09-07 08:27:37 198

原创 序列化和反序列化的方法及底层实现

个人学习摘抄与反思总结 via:徐刘根 https://blog.youkuaiyun.com/xlgen157387/article/details/79840134 序列化和反序列化的方法 实现了Serializable 或 Externalizable 接口才能被序列化,否则将会抛出异常。 若一个实现了Serializable接口的类对象需要被序列化,则可以通过ObjectOutputStre...

2018-09-06 11:08:32 691

转载 volatile实现原理

via:yzwall技术笔记 https://www.cnblogs.com/yzwall/p/6661528.html volatile变量写,汇编指令会多出Lock前缀,Lock前缀在多核处理器下的作用: 将当前处理器缓存行的数据写回主存; 令其他CPU里缓存该内存地址的数据无效; 针对编译器重排序:JMM针对编译器指定了volatile重排序规则表,规定哪些先后操作不能进行编译...

2018-09-06 08:36:50 295 1

转载 Java中的“堆”,"栈","堆栈","队列"及其区别(笔记整理)

“堆”,”栈”,”堆栈”,”队列”详解及其区别 ** 堆 ** ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即...

2018-09-04 08:54:12 3850

语法分析器

编译原理语法分析器production类 编译原理语法分析器production类 编译原理语法分析器production类 编译原理语法分析器production类 编译原理语法分析器production类 编译原理语法分析器production类 编译原理语法分析器production类 编译原理语法分析器production类 编译原理语法分析器production类

2018-05-21

空空如也

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

TA关注的人

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