摘要: 前言 在上一篇中我们学习了结构型模式的外观模式和装饰器模式。本篇则来学习下组合模式和过滤器模式。 组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 简单来说的话,就 阅读全文
posted @ 2020-03-18 18:30 xiaoshen666 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 前言 在上一篇中我们学习了结构型模式的适配器模式和桥接模式。本篇则来学习下结构型模式的外观模式和装饰器模式。 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 简单的来说就是对外 阅读全文
posted @ 2020-03-18 18:27 xiaoshen666 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 前言 在上一篇中我们学习了创建型模式的建造者模式和原型模式。本篇则来学习下结构型模式的适配器模式和桥接模式。 适配器模式 简介 适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 简单的来说就是通过某个接口将不兼容的两个类进行兼容,俗称转换器。 阅读全文
posted @ 2020-03-18 18:23 xiaoshen666 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 建造者模式 简介 建造者模式是属于创建型模式。建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。简单的来说就是将一个复杂的东西抽离出来,对外提供一个简单的调用,可以在同样的构建过程创建不同的表示。和工厂模式很相似,不过相比而言 阅读全文
posted @ 2019-09-03 13:19 xiaoshen666 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 在上一篇中我们学习了单例模式,介绍了单例模式创建的几种方法以及最优的方法。本篇则介绍设计模式中的工厂模式,主要分为简单工厂模式、工厂方法和抽象工厂模式。 简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。调用只需要告诉工厂类 阅读全文
posted @ 2019-09-03 08:40 xiaoshen666 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 什么是单例模式 保证一个系统中的某个类只有一个实例而且该实例易于外界访问。例如Windows界面的任务管理器就可以看做是一个单例。 单例模式的使用场景 需要频繁的进行创建和销毁的对象; 创建对象时耗时过多或耗费资源过多,但又经常用到的对象; 工具类对象; 频繁访问数据库或文件的对象。 在程序中比较常 阅读全文
posted @ 2019-09-03 08:32 xiaoshen666 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 前言 设计模式不论是在我们学习编程,还是在工作和面试过程中,都会涉及到的一个问题,所以了解和学习好设计模式,是我们每一位码农必须要具备的技能,对以后的发展和自己技能的提升都有好处. 什么是设计模式(Design Patterns)? 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计 阅读全文
posted @ 2019-09-03 08:25 xiaoshen666 阅读(597) 评论(1) 推荐(0) 编辑
摘要: 最近做一些表格一直用到jqGrid,今天遇到一个问题: 最近做一些表格一直用到jqGrid,今天遇到一个问题: 最近做一些表格一直用到jqGrid,今天遇到一个问题: 最近做一些表格一直用到jqGrid,今天遇到一个问题: 1.就是页面加载的时候数据不显示,点击搜索才根据请求从服务器返回并显示内容. 阅读全文
posted @ 2019-08-28 16:23 xiaoshen666 阅读(1254) 评论(0) 推荐(0) 编辑
摘要: 原文 博客园博客排版(js样式实例) 昨天在博客园中看到一位大神发的博客园样式排版博客,我一看。妈呀,太漂亮了,二话不说赶快学起,昨天我花了一天的时间,终于把我的博客也弄得有一丢丢像样了,有好东西,当然要分享给各位; 大神的链接:https://www.cnblogs.com/hafiz/p/927 阅读全文
posted @ 2019-08-27 15:01 xiaoshen666 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 原文传送门 给博客添加能动的看板娘(Live2D)-将其添加到网页上吧 实验室 浮动小人 开源 Live2D 看板娘 December 1, 2017 实验室 浮动小人 开源 Live2D 看板娘 December 1, 2017 此文章最后修订于 528 天前,其中的信息可能已经有所发展或是发生改 阅读全文
posted @ 2019-08-27 14:54 xiaoshen666 阅读(1063) 评论(0) 推荐(1) 编辑
摘要: 1.单参数List的类型: 上述collection的值为list,对应的Mapper是这样的 2.单参数array数组的类型: 上述collection为array,对应的Mapper代码: 3.自己把参数封装成Map的类型 上述collection的值为ids,是传入的参数Map的key,对应的 阅读全文
posted @ 2019-08-26 08:22 xiaoshen666 阅读(1087) 评论(0) 推荐(0) 编辑
摘要: 问题? 如何在Java MyBatis 插入数据库返回主键? 最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记。 类似下面这段代码一样获取插入后的主键 User user = new User(); user.setUserNam 阅读全文
posted @ 2019-08-15 17:22 xiaoshen666 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 转载: https://blog.csdn.net/u013278099/article/details/52692008 转载: https://blog.csdn.net/u013278099/article/details/52692008 转载: https://blog.csdn.net/ 阅读全文
posted @ 2019-08-15 16:45 xiaoshen666 阅读(10799) 评论(0) 推荐(0) 编辑
摘要: 我们经常说JS是单线程的,比如Node.js研讨会上大家都说JS的特色之一是单线程的,这样使JS更简单明了,可是大家真的理解所谓JS的单线程机制吗?单线程时,基于事件的异步机制又该当如何,这些知识在《JavaScript权威指南》并没有介绍,我也一直困惑了,直到看到一篇外文,才有了些眉目,这里与大家 阅读全文
posted @ 2019-08-15 16:40 xiaoshen666 阅读(898) 评论(0) 推荐(0) 编辑
摘要: 遇到一个MySQL小问题 Data truncation: Out of range value for column 'huid' at row 1 遇到一个MySQL小问题 Data truncation: Out of range value for column 'huid' at row 阅读全文
posted @ 2019-08-15 15:47 xiaoshen666 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 在开发过程中我们有时候在用户删除时候保存一些信息在用户下次安装应用时候使用,这个时候我们可以使用剪切版UIPasteboard的FindUIPasteboard和钥匙串keychain的使用 剪切版剪切版主要分为以下两种 UIPasteboardNameGeneral和UIPasteboardNam 阅读全文
posted @ 2019-08-15 09:04 xiaoshen666 阅读(1257) 评论(0) 推荐(0) 编辑
摘要: 前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证, 那么这就需要用户提供一些信息,比如用户名密码等,但是为了安全起见让用户暴露的明文密码次数越少越好,我们一般在web项目中,大多数采用保存的sess 阅读全文
posted @ 2019-08-11 10:31 xiaoshen666 阅读(1075) 评论(0) 推荐(0) 编辑
摘要: 一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的 而在Spring中,基于Filter这种方式可以实现Bean预处理、后处理。 比如注入FilterRegistrationBean,然后在这个Bean上传递自己继承Filter实现的自定义Filter进入即可。 而Spring MVC也 阅读全文
posted @ 2019-08-11 09:28 xiaoshen666 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 只要在该input标签后添加autofocus="autofocus"即可 代码实例: <html> <head></head> <body> 用户名:<input type="text" id="username" name="username" autofocus="autofocus"/><b 阅读全文
posted @ 2019-08-11 09:26 xiaoshen666 阅读(3372) 评论(0) 推荐(0) 编辑
摘要: 区别:1,数组创建时间不同,静态的是一定义出来就创建了,动态的则是定义时不创建,使用时才创建,一定意义上节省了内存空间。2,使用场景不同,一开始就知道数组长度的使用静态初始化,反之,动态初始化。 静态数组根本不能满足我们编程的实际需要,比方说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静 阅读全文
posted @ 2019-08-09 14:59 xiaoshen666 阅读(4907) 评论(0) 推荐(0) 编辑
摘要: 第一个js文件(被引入的js文件),文件名one.js,内容如下 function alertInOne(){ alert('in one');} 第二个js文件,文件名two.js,内容如下 //注意这个地方document.write("<script language='javascript' 阅读全文
posted @ 2019-08-09 12:29 xiaoshen666 阅读(17912) 评论(0) 推荐(0) 编辑
摘要: <a href="ddrb/090630.asp" target="_blank" style="text-decoration:underline;">30</a> <a href="ddrb/090630.asp" target="_blank" style="text-decoration:u 阅读全文
posted @ 2019-08-09 12:21 xiaoshen666 阅读(16752) 评论(0) 推荐(1) 编辑
摘要: MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。 1.MD5算 阅读全文
posted @ 2019-08-07 10:44 xiaoshen666 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 今天是星期几的4种JS代码写法,有需要的朋友可以参考一下 第一种写法 代码如下: var str = ""; var week = new Date().getDay(); if (week == 0) { str = "今天是星期日"; } else if (week == 1) { str = 阅读全文
posted @ 2019-08-07 10:40 xiaoshen666 阅读(2609) 评论(0) 推荐(0) 编辑
摘要: 引用:http://blog.csdn.net/m0_38099607/article/details/72864684 HTTP与HTTPS的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了We 阅读全文
posted @ 2019-07-30 08:18 xiaoshen666 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: 1 2 3 4 5 6 7 8 9 10 11 12 .title{ font-size: .7rem; line-height: 1.5rem; overflow: hidden; /** 隐藏超出的内容 **/ word-break: break-all; text-overflow: elli 阅读全文
posted @ 2019-07-28 17:11 xiaoshen666 阅读(1877) 评论(0) 推荐(0) 编辑
摘要: 生产者消费者模型 生产者消费者模型可以描述为: ①生产者持续生产,直到仓库放满产品,则停止生产进入等待状态;仓库不满后继续生产; ②消费者持续消费,直到仓库空,则停止消费进入等待状态;仓库不空后,继续消费; ③生产者可以有多个,消费者也可以有多个; 生产者消费者模型 对应到程序中,仓库对应缓冲区,可 阅读全文
posted @ 2019-07-28 13:19 xiaoshen666 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 场景分析 在分布式缓存的伸缩性设计中,最主要的目标就是在新加入缓存服务器后,应该使整个服务器集群中已经缓存的数据尽可能还被访问到。对于服务器集群管理,路由算法至关重要,它决定着客户端究竟该访问集群中的哪台服务器。 余数Hash 简单的路由算法可以使用余数Hash: 用服务器数目除缓存数据key的Ha 阅读全文
posted @ 2019-07-28 13:07 xiaoshen666 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 1、开启MySQL查询的缓存功能(Query Cache) 通过show variables like "%query_cache%"查看与查询缓存相关的参数: mysql> show variables like "%query_cache%"; + + + | Variable_name | V 阅读全文
posted @ 2019-07-28 13:06 xiaoshen666 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 设计模式有啥用 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种 阅读全文
posted @ 2019-07-28 12:59 xiaoshen666 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 概念模型上,典型的帧栈结构如下(栈是线程私有的,也就是每个线程都会有自己的栈)。 典型的帧栈结构 局部变量表 存放方法参数和方法内部定义的局部变量。在编译阶段,就在Class文件的Code属性的max_locals数据项中确定了该方法所需要分配的局部变量表的最大容量。(仅仅是变量,不包括具体的对象) 阅读全文
posted @ 2019-07-28 12:58 xiaoshen666 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 什么是类加载 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 《【JVM】类文件结构》讲的是Class文件结构,即我们编写的Java代码(.java文件)经过编译后生成Class文件(.cla 阅读全文
posted @ 2019-07-28 12:57 xiaoshen666 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 概念及定义 概念 在完成某一功能时,有时需要根据不同环境采取不同的策略或行为。将这些不同的策略或行为(称为算法)一一封装起来,而不是使用if--else,从而在使用的时候,可以将这些算法任意替换。这就是策略模式。 使用场景 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式 阅读全文
posted @ 2019-07-28 12:55 xiaoshen666 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 概念与定义 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 即先定义一个抽象类,该抽象类中定义一个模板方法,在该模板方法中,定义算法的步骤,而每一个步骤中的具体实现,可以在该抽象类中实 阅读全文
posted @ 2019-07-28 12:54 xiaoshen666 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 比如,主线程创建线程池,提交n个任务,想让主线程在任务全部结束之后再继续做其他的事情。 1、使用awaitTermination方法 public static void main(String[] args) { ExecutorService executor = Executors.newFi 阅读全文
posted @ 2019-07-28 12:53 xiaoshen666 阅读(1052) 评论(0) 推荐(0) 编辑
摘要: 主要有两类 ①并发流程控制相关:CountDownLatch、CyclicBarrier、Semaphore ②线程间交换数据相关:Exchanger; CountDownLatch 作用:允许一个或多个线程等待其他线程完成操作 使用步骤: ①定义一个CountDownLatch(称为计数器),并指 阅读全文
posted @ 2019-07-28 12:51 xiaoshen666 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 锁的概念 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程并发的访问共享资源,如读写锁)。 在JDK1.5之前,Java是通过synchronized关键字实现锁功能的:隐式地获取锁和释放锁,但不够灵活。 在JDK1.5,java.u 阅读全文
posted @ 2019-07-28 12:50 xiaoshen666 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 从JDK1.5开始,Java提供了java.util.concurrent.atomic包,该包中的原子操作类提供了一种使用简单、性能高效(使用CAS操作,无需加锁)、线程安全地更新一个变量的方式。 `java.util.concurrent.atomic`包中的类.png 根据变量类型的不同,At 阅读全文
posted @ 2019-07-28 12:49 xiaoshen666 阅读(356) 评论(0) 推荐(0) 编辑
摘要: @GetMapping 用于将HTTP GET请求映射到特定处理程序方法的注释。 具体来说,@GetMapping是一个作为快捷方式的组合注释@RequestMapping(method = RequestMethod.GET)。 @PostMapping 用于将HTTP POST请求映射到特定处理 阅读全文
posted @ 2019-07-28 12:28 xiaoshen666 阅读(2448) 评论(0) 推荐(0) 编辑
摘要: DOM2级事件处理程序 DOM2级事件定义了两个方法用于处理指定和删除事件处理程序的操作: addEventListener removeEventListener 所有的DOM节点都包含这两个方法,并且他们都接受三个参数: 1.事件类型 2.事件处理方法 3.布尔参数,默认false (true捕 阅读全文
posted @ 2019-07-25 17:55 xiaoshen666 阅读(141) 评论(0) 推荐(0) 编辑