
学习资料
王珂_wangke
开开心心搬砖, 高高兴兴挣钱
展开
-
修改 ShiroUser 缓存用户
// 这个用户可能由于框架不同而设计不同ShiroUser user = ShiroKit.getUser();Subject subject = ShiroKit.getSubject();PrincipalCollection principalCollection = subject.getPrincipals();String realmName = principalCollection.getRealmNames().iterator().next();PrincipalCollec原创 2022-03-23 10:36:44 · 493 阅读 · 0 评论 -
LINUX不能ping域名, 能ping ip, 添加DNS解析
1, 检查是否启用DNSvi /etc/nsswitch.conf检查 hosts 是否含有 dnshosts: files dns myhostname修改后重启网卡service network restart2, 添加DNS 解析服务器vi /etc/resolv.conf有就修改, 没有就直接添加以下内容, 修改完成后重启网卡nameserver 114.114.114.114...原创 2021-09-24 08:45:02 · 1099 阅读 · 0 评论 -
同一台服务器,同一个主域名, 不同子域名, 配置不同转发
nginx.conf 参考配置worker_processes 1;user root;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 后台, 多配置 server {原创 2021-08-06 14:28:55 · 703 阅读 · 0 评论 -
小白都能看懂的目前主流加密MD5验签
1, 首先要知道MD5 是一个什么东西简单的说就是就是取模, 比如, 10 % 2, 余零, 2 想得出10, 就很难, 你只能猜.现在有一个字符串 abcd, 下面都是假设假设 a = 1, b = 2, c = 3, d = 4,相加 1 + 2 + 3 + 4 = 10,我们的MD5 算法就是相加%2,那么这段字符串的MD5 值就是 0现在你只知道, abc 和 md5 = 0 你能推算出 我们的d嘛?想知道, 得先知道我们的md5规则然后再一个个去假设d的值,原创 2021-08-06 10:17:25 · 1613 阅读 · 0 评论 -
cn.hutool.poi.excel.ExcelUtil 时不时没有数据列
代码List<WleUserSaleVo> list = reportWleSaleService.wleUserSaleList(null, vo); ExcelWriter excelWriter = cn.hutool.poi.excel.ExcelUtil.getBigWriter(); excelWriter.addHeaderAlias("username", "用户名称"); excelWriter.addHeaderAlias("原创 2021-08-06 09:48:00 · 1407 阅读 · 1 评论 -
cn.hutool.poi.excel.ExcelUtil 只输出指定的标题
ExcelWriter excelWriter = ExcelUtil.getBigWriter();excelWriter.addHeaderAlias("username", "用户名称");excelWriter.addHeaderAlias("userPhone", "用户手机");excelWriter.addHeaderAlias("cityName", "城市名称");// 只输入指定字段excelWriter.setOnlyAlias(true);// 输出数据excelWri原创 2021-08-06 09:42:29 · 1628 阅读 · 0 评论 -
@Data 注解对类静态字段, 无效
测试@Datapublic class HelloA { private String name = "dog"; private String age = "12"; private static String sex = "man";}public static void main(String[] args) { HelloA helloA = new HelloA(); System.out.println(JSON.toJSONSt原创 2021-08-06 09:18:54 · 1062 阅读 · 0 评论 -
Spring 5.0 源码编译, 403, 404 依赖pom 无法下载问题
命令 gradlew.bat cleanIdea :spring-oxm:compileTestJava欧系哦啊原创 2021-06-06 11:30:46 · 1026 阅读 · 0 评论 -
FastRepot 列高自适应,自动换行,
1, 组件, 使用Text, 最基础的那种, Table 组件没有自动换行2, 页面不要留空白3, Text 组件 属性CanRow 能否自动增长, 我们需要它自己开括列高CanBreak 能否跳过, 可以越过框显示GrowToBottom 大家一起到最低, 因为我们没有留空白页面, 商品列又自己增加了列高, 大家一起降到底, 其实就是随, 商品列高同步, 建议, 整列的Text 全部选中WordWrap 自动换行4, 效果...原创 2021-04-30 11:22:26 · 1979 阅读 · 0 评论 -
FastReport 自适应列文字大小
1, 点击cell文字大小自适应, 高度自适应我一直没调出来, 希望有懂的留言.Auto Shrink = FontWidth原创 2021-04-28 15:53:15 · 3297 阅读 · 0 评论 -
(1)搞一搞 seata 之 基础环境搭建
搞一搞 seata 基础环境搭建1, 搭建标准的spring cloud 工程1.1 未集成seata, 简单的远程调用,1.2 业务需求, 注册用户赠送积分, 将对这一个业务流程进行分布式事务控制1.3 工程目录eureka // 注册中心service-user // 微服务A, 用户服务service-active // 微服务B, 积分服务1.4 核心代码/*** 用户注册*/@GetMapping("/register")public Object register原创 2021-04-26 11:44:15 · 226 阅读 · 0 评论 -
mybatis 创建session, 缓存, 执行SQL
案例代码,上一个博客已经分析了 SqlSessionFactory 的 build , 本文内容部分知识基于上篇的文章mybatis 的初始化, build这节我们分析, 开启session, 发送查询public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getR原创 2020-10-28 09:47:14 · 594 阅读 · 0 评论 -
mybatis 源码分析, 初始化
分析版本我们先分析xml配置文件形式的 mybatis, 等我们分析完毕了, 可以去分析 mybatis 和 spring 的对接pom.xml<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version></dependency>案例代码原创 2020-10-27 11:55:04 · 167 阅读 · 0 评论 -
(5.2) Tomcat 8 源码, 初始化组件
上一章, 实例化组件接着我们上一章, 实例化组件之前开始, 不要迷路了// Catalina.javapublic void load() { //... 省略实例化部分代码 // 把Catalina 设置到 Server getServer().setCatalina(this); // -Dcatalina.home=catalina-home getServer().setCatalinaHome(Bootstrap.getCatalinaHomeFile()); // -Dcat原创 2020-09-18 17:09:36 · 157 阅读 · 0 评论 -
(5.1) Tomcat 8 源码, 实例化组件
上一章: 初始化 bootstrap.init()https://blog.youkuaiyun.com/weixin_42209307/article/details/108580214 我们回到,org.apache.catalina.startup.Bootstrap#main 方法daemon.load(args) , daemon 就是我们的bootstrap实例, 在这个里面就会解析server.xml 并且创建各个组件的实例,并且一层一层向下, 初始化组件我们这节只分享组...原创 2020-09-18 09:55:46 · 191 阅读 · 0 评论 -
(5.0) Tomcat 8 源码, 初始化 bootstrap
下载源码https://www.cnblogs.com/grasp/p/10061577.html一般启动tomcat 都是使用 startup.batset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"...call "%EXECUTABLE%" start %CMD_LINE_ARGS%最终调用的是 catalina.bat, 在 270 行设置了tomcat 的启动主类set _EXECJAVA=%_RUNJAVA%se.原创 2020-09-14 16:30:22 · 186 阅读 · 0 评论 -
进阶学习(4.3) JVM 垃圾回收算法
1, 引用计数法Object a = new Object(), 引用计数为0 Object b = a; 计数 +1 a = null 计数为0, 对象将被回收 b 也是垃圾对象引用计数法有很大的缺点, 无法解决循环引用, a = c ; b = a; c = b;java 中的对象引用是非常频繁的, 会操作频繁的计数, 消耗性能2, 标记清除法必须先知道GC Root 是什么, 可以参考我写的另一篇博客https://blog.youkuaiyun.com/weix...原创 2020-09-08 09:39:29 · 205 阅读 · 0 评论 -
进阶学习(4.4) JVM GC Root 判定, 垃圾的判定
要先知道标记清除法, 必须先知道什么是GCRoots,根节点, 常见有类静态字段 常量 静态代码块 第一栈变量, 网上没有案例说明, 都是复制粘贴的也没说清楚什么是Root 虚拟机栈1, 先产生一个垃圾对象这里解释第一栈变量, 理解为就是main 方法中, 中的变量,public static void main(String[] args) { // Root Var User userA = new User(); userA.原创 2020-09-07 22:23:29 · 473 阅读 · 0 评论 -
进阶学习(4.2) JVM 常用配置参数, GC 参数
-XX:+PrintGC 打印GC执行信息-XX:+PrintGCDetails 打印堆使用信息 PSYoungGen 新生代 eden 伊甸区 from 幸存区 to 幸存区 ParOldGen 老年代 Metaspace 元空间, 就是永久代, 1,8 以后使用的本地内存-Xloggc:log/gc.log 使用外部文件记录CG-XX:+TraceClassLoading 记录JVM加载的类-Xmx20m 配置堆最大大小...原创 2020-09-07 20:50:27 · 211 阅读 · 0 评论 -
进阶学习(4.1) JVM结构和原理
1, Java 文件是怎么运行的编译java 成 class文件 执行带有主方法的class文件 找到jvm.cfg, jvm配置文件, 里面配置了JVM.DLL的C++, JVM实现 类加载器开始加载类进入JVM 找到主类然后运行原创 2020-09-06 19:50:31 · 246 阅读 · 0 评论 -
进阶学习(3.14) Strategy Pattern 策略模式
1, 什么是策略模式1.1 未达到预期目的的各种应对方案1.2 程序代码中的每一个分支都可以称之为策略, 而策略模式,则是将行为划分到具体类, 使用类对象区分行为2, 优缺点2.1 减少IF语法使用, 封装代码, 更便于维护2.2 需要更加良好的约定协议, 否则IF语句还是少不了的, 就比如如何生成不同的具体策略, 没有约定的话, IF一个都少不了2.3 策略类的增多, 多个IF ELSE, 优化后的策略类将会更多3, 上代码public abstra...原创 2020-09-06 19:23:08 · 172 阅读 · 0 评论 -
进阶学习(3.13) Proxy Pattern 代理模式
1, 代理模式, 这个地方的代理不是指JDK 动态代理2, 代理模式和策略模式很像, 要注意区分, 区分的特征就是 2.1) 装饰者可以对任何的装饰抽象实例进行装饰, https://blog.youkuaiyun.com/weixin_42209307/article/details/108398449 2.2) 代理模式在编译期的时候就可以确定了被代理的对象, 保护的被代理对象信息3, 案例public interface Operand { void upload(String...原创 2020-09-04 14:40:37 · 157 阅读 · 0 评论 -
进阶学习(3.12) Operand Pattern 装饰器模式
1, 什么是装饰器1.1装饰针对的是某一对象, 它不会改变事物的本质, 比如一个人买了一顶帽子, 它本质还是一个人1.2比如一个Date 对象, 它本质还是一个Object, 这个太抽象了奥, = _ =1.3装饰器也可以实现增强本质事物, 也可以只在表面做一些花里胡哨的事1.4 我觉得我们学习技术不一定全部都是为了面试, 还是靠注重解决问题, 更好解决我们可能遇到的问题2, 案例public interface Operand { void upload(S...原创 2020-09-04 10:00:08 · 134 阅读 · 0 评论 -
进阶学习(3.11) Facade Pattern 门面模式
1, 什么叫门面模式, 也称之为接待员模式1.1 我更愿意称之为阿拉丁模式, 阿拉丁灯神, 你想什么, 它就直接给你实现了, 你别管中间有多少困难, 他就直接给你实现了1.2 好下面介绍门面模式, 打个比方你就懂了,理发店发廊, 虽然大门口只有一个门口, 你的需求是洗头, 或者其他什么的, 都懂=_=, 只要你拿钱进了这个门, 里面会有人实现你进这个门的需求的, 你看, 你只是进了一个门而且, 然后这么多需求, 都是门后面的人帮你做了, 一定要把门和门后拆开理解1.3 门面模式应该是.原创 2020-09-02 16:38:10 · 138 阅读 · 0 评论 -
进阶学习(3.10) Adapter Pattern 适配器模式
1, 什么是适配器1.1 扳手是用来拧螺丝的, 我要想适配到合适的扳手, 我肯定得先知道螺丝的大小1.2 一种约定, 就好比后端Java 写的接口, 每个对外接口都是适配前端的请求1.3 我买一瓶农夫山泉, 你拿一块钱给我, 我肯定不卖, 你给我两块钱我才卖, 这也是适配1.4 大家肯定用过, 你每写的一个if, 都可以抽象理解为对某一种环境参数的适配2, 适配器模式的定义2.1 通过上面的解释, 下面讲白话2.2 就是通过调用者的一些参数, 返回我们约定好的结...原创 2020-09-02 15:16:38 · 178 阅读 · 0 评论 -
进阶学习(3.9) Bridge Pattern 桥接模式
1, 什么是桥接桥, 提供给两方, 或者多方相交汇的作用, 例如, A 函数想调用 B 函数, 常见的方法就是, 直接在A 中显式 调用B, 这样存在高耦合, 如果我们使用一个中间函数C, 在C里面显调用A, 再调用B, 像是这样1.1 A -> B1.2 C -> A -> BA B 耦合就解开了,1.3 更抽象的理解使用, 比如从数据库里面的数据, 怎么就变成了 Java 中的对象呢? 这中间肯定就有桥接模式的使用, 有很多很多的...原创 2020-09-02 09:49:50 · 217 阅读 · 0 评论 -
进阶学习(3.8) Component Pattern 组合模式
1, 什么是组合模式一句话概括, 复杂的实体类, 一个对象里面包含多个对象, 就是一种组合, 完善对象的数据多样性, 其实大部分的设计模式, 我们再日常编程中都会使用, 有些可能使用了完整的思想, 有些只是抽象, 只不过大部分我们不知道名字罢了2, 直接看代码吧public class Component { // 享元案例 private Flyweight flyweight; // 对象1 private HashMap hashMap; ..原创 2020-09-01 22:44:31 · 270 阅读 · 0 评论 -
进阶学习(3.7) Flyweight Pattern 享元模式
1, 前言看完了设计模式发现, 设计模式是一种设计思想, 并不是某种规范, 要是让我去记设计模式的规范, 我是无法记住的, 也无法应用实际, 所以此后的设计模式, 都将注重思想理解, 学会举一反三, 好记性不如烂笔头, 虽然有些设计模式看一遍就会了, 但还是记个笔记好一点2,什么是享元拆开, 分享元数据, 元数据是啥玩意, 就是基础数据, 不变的数据, 给你是一块砖, 给我也是一块砖, 这里是通用想法, 但不一定是常量数据才能设计成享元模式, 对象也可以, 使用对象就更像原型模式了, 走clo.原创 2020-09-01 22:38:18 · 146 阅读 · 1 评论 -
进阶学习(3.6) Prototype Pattern 原型模式
1, 什么是原型模式1.1 通过浅拷贝(Cloneable)或者深拷贝(二进制流), 实现对一个复杂对象的刻复, 减少从零生成对象时消耗的性能2,有什么业务场景2.1 数据缓存, 查询数据库时将此对象存入容器, 下次查询直接从容器中获取对象的clone,当然写操作的时候就可以更新clone 对象了, 还得考虑并发, 多线程操作等2.2 抽取复杂对象的共性, 存入容器, 需要用时直接clone, 将不同的地方, 再单独封装3,案例public class User ...原创 2020-08-29 09:15:51 · 103 阅读 · 0 评论 -
进阶学习(3.5) Singleton Pattern 单例模式
1, 效果1.1 第一次获取时创建对象, 以后获取都是同一个, 这就是单例模式2, 案例代码public class SingletonPattern { private static User user; public static User getInstance() { if (user == null) { synchronized (SingletonPattern.class) { i.原创 2020-08-28 15:43:26 · 148 阅读 · 0 评论 -
进阶学习(3.4) Builder Pattern 建造者模式
1, 解决了什么1.1 按照步骤拆分复杂对象的创建1.2 能快速查找到是哪个步骤出了问题1.2 更换蓝图就可以生产不同的具象对象2, 参与者需求者(Builder), 定义构建的对象实际需求解决者(NfBuilder) 实现Builder构建过程(BluePrint)构建的具体步骤 和 流程具体过程(BluePrintFirst) 生成具象Water抽象产品(Wate...原创 2020-08-28 10:46:05 · 210 阅读 · 0 评论 -
进阶学习(3.3) Abstract Factory Pattern 抽象工厂模式
1, 抽象工厂模式的定义 简单工厂: 将具象操作下放到具象类 工厂方法模式: 将类的创建交给了具象工厂, 调用方法生产不同对象 抽象工厂模式: 对产品版本进行划分, 所有的具象工厂都是实现了抽象工厂的方法, 但是这个过程存在差异, 具体实现具象工厂自己决定2, 例子 抽象工厂: CarFactory, 定义需要生产蚂蚁汽车 具象工厂: ShangQiCarFactory, ...原创 2020-08-26 09:06:53 · 175 阅读 · 0 评论 -
进阶学习(3.2)Factory Method Pattern 工厂方法模式
1 类的实例化不在工厂接口里面实例化, 而是在工厂子类里面实例化2 使用者无需关注子类工厂里面的逻辑是怎么写的, 只需要知道我调用的这个方法能实 现什么功能, 我不管具体实现3 需要添加新功能时, 直接添加一个相关工厂类, 进行实现案例: sqlsession factory 工厂, 可以创建不同数据库的工厂对象, 并不代表真实就是这样写的奥定义工厂接口, 我不管子工厂怎么实现, 我只需要知道, 我能通过这个方法, 获取到一个我想要的对象, 得到预计的结果/** * 抽...原创 2020-08-23 12:31:20 · 200 阅读 · 0 评论 -
进阶学习(3.1) Simple Factory Pattern 简单工厂模式
1,设计原则工厂和工厂对象尽量都是高内聚的, 例如网上最多的例子, 支付案例, 一个支付工厂, 可以创建微信支付对象, 也可以创建支付宝支付对象, 他们都是属于支付这样方便别人理解, 和代码重构, 改一处代码, 修复所有使用此功能的地方2,优势降低耦合, 肯定降低了呀, 你通过工厂方法获取一个工厂对象, 调用一些方法, 方法里面写的都是公用代码,需要替换逻辑的时候, 直接改变参数就可以切换到一个工厂对象了,封装代码, 你写的代码变漂亮了, 恭喜你离面向对象又跟近了一步3,..原创 2020-08-22 21:41:07 · 223 阅读 · 0 评论 -
进阶学习(2) jenkins 使用
1,Jekins 有什么好的?1 简单理解一点就是, 它再牛b, 也只是一个工具,就是替我们做了一些很简单繁琐的 的事情,1.1原来需要自己手动打包的程序,现在只要把项目放到svn 或者 git服务器, jenkins 获取到最新的代码,然后执行脚本进行构建, 打包就完成了1.2原来需要手动去重启tomcat 或者docker 容器, 现在也不需要了, 底层走的就是 shell 脚本嘛, 有linux 使用基础的都东懂, 你也可以自己写一个shell 脚本, 完完 全全不需要使用Je..原创 2020-08-22 08:27:23 · 203 阅读 · 1 评论 -
进阶学习(1) Gradle 项目管理工具的使用
1, Gradle 是什么Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言, 记住了, 以java为主2, Gradle 和 maven 有什么区别, 直白一点.原创 2020-08-21 22:06:31 · 476 阅读 · 0 评论 -
进阶学习(一)
学习路线来自:https://www.processon.com/view/link/5e81e902e4b017c4962f0117只是路线, 本着闲着就是浪费生命, 就去学点东西吧,路线参照, 拓薪教育, 学习资料全部来自互联网, 然后由本人整理. 精华之处, 皆为原创...原创 2020-08-20 17:39:51 · 112 阅读 · 0 评论