解决使用 bootstrap 更新操作时-模态框回显传值问题

回顾 ModelAndView

之前的印象中,我使用 ModelAndView 的场景是在需要重定向页面时带上参数。最近在做博客系统开发时学到了新的一招,就是 ModelAndView 不仅可以跳转页面,还可以”跳转”页面的部分内容!比如这样:new ModelAndView("users/list :: #user_div",map); —— 这句话的意思是找到 user/list.html 将其中的指定 div 的 html 代码作为字符串返回值输出出去(如果这个 div 有取值标签将会被赋值)。如果是同步请求将会输出到浏览器实现刷新,如果是异步则会作为 data 的字符串文本数据(html代码)

如何给通过脚本添加的 元素注册事件

前端弱渣,记录一下问题解决:

1
2
3
4
// 事件冒泡:给动态添加的 html 元素注册事件
$("body").on("click", ".blog-edit-user", function () {
// .blog-edit-user 是需要被注册事件的元素标签
}

参考:https://www.jb51.net/article/120018.htm

Git 实用指南

版本控制系统(VCS)

版本控制 / 主动提交 / 中央仓库 构成了一个最核心的版本控制系统。

版本控制:最基本的功能

版本控制系统最基本的功能是版本控制。版本控制,简单的理解就是在文件中的修改历程中保存修改历史,我们可以方便的撤销之前对文件的修改。

在普通文本编辑器中,我们可以使用 Undo 操作回退到上一次的操作;在程序编码,我们可以通过 VCS 回退到指定的一次操作,而不仅仅是上一次操作。

主动提交机制:VCS 与普通文本编辑器的区别

使用普通文本编辑器的时候,一次保存就是一次改动,对版本的 控制 仅仅是回退到上一次操作。而正常情况下,我们的程序代码修改的生命周期十分长,一次代码的修改,在几天后、几个月后、甚至几年后都可能被翻出来。此时像普通编辑器的“自动保存提交”的功能在对历史代码审查、回退中会变得非常繁琐和无章可循。所以和普通文本编辑器的“撤销”功能不同,VCS 保存修改历史,使用 主动提交改动 的机制。

所谓 主动提交改动 ,是指每次代码的修改和保存不会自动提交,需要手动提交(commit)到仓库,VCS 会把这次提交记录到版本历史中,当往后需要回退到这个版本,可以在 VCS 的历史提交纪录中找到这条记录。

NIO

Java Non blocking IO 学习笔记

Java NIO 简介

Java NIO(Non blocking IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。

线程高级

Java并发编程包 java.util.concurrent 的学习笔记

简介

在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collection 实现等。

volatile 关键字-内存可见性

内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。

算法第二章 排序

第二章 排序

待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。

定义算法模板类API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public abstract class Example {

/**
* 具体排序算法实现
*/
public abstract void sort(Comparable[] a);

/**
* 对元素进行比较
* @return first < second ? true : false
*/
public static boolean less(Comparable first, Comparable second) {
return first.compareTo(second) < 0;
}

/**
* 把两个元素交换位置
*/
public static void exch(Comparable[] a, int i, int j) {
Comparable tem = a[i];
a[i] = a[j];
a[j] = tem;
}

/**
* 返回序列是否有序(asc)
*/
public static boolean isSorted(Comparable[] a) {
for (int i = 1; i < a.length; i++) {
if (less(a[i], a[i - 1])) {
// 后面的元素 < 前面的元素 不是升序排列 返回false
return false;
}
}
return true;
}

public static void show(Comparable[] a) {
for (int i = 0; i < a.length; i++) {
StdOut.print(a[i] + " ");
}
StdOut.println();
}
}

算法第一章 基础

第一章 基础

基础编程模型

格式化输出

从标准输出流中打印随机生成的数值,“%.2f\n”表示输出两位小数精度的浮点型数值并换行。

cmd运行需要注意的几个地方:

  1. 我们的工程一般使用utf-8编码,但是windows系统默认gbk编码,所以编译javac会出现“找不到gbk编码的字符映射”。解决办法:编译时指定参数 -encoding utf-8

  2. “找不到某个类”,程序中引用了非当前目录的jar文件,在本路径编译会找不到jar包,需要执行参数:-Djava.ext.dirs=jar包作为路径

  3. “无法运行主类”,检查是否配置了classpath环境变量,CLASSPATH=".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;"

  4. 如果被编译类有包,需要在该包下执行编译和运行,最终该类的编译和运行命令:

    javac -Djava.ext.dirs=D:\IdeaProjects\Algorithms\lib -encoding utf-8 chapter_1/programming_model/RandomSeq.java
    java -Djava.ext.dirs=D:\IdeaProjects\Algorithms\lib chapter_1/programming_model/RandomSeq 10 1 100

IDEA+Maven+Tomcat插件实现热部署

傻了吧唧的

其实不是什么大问题,但是这几天脑子有点混乱,情绪很低迷,搞得自己很郁闷。😔
切记戒骄戒躁,遇到问题不要心急,静下心来,佛系调bug~~😵

一直都把热部署的概念搞错了,热部署是指项目发布到服务器之后,以不重启服务器为前提本地重新打包发布到服务器上面运行。

说起来很好理解,但是本地tomcat热部署和Maven的Tomcat插件热部署还是有些区别的,一直没走出这个误区,静下心来想下真傻😔

Tomcat本地热部署

本地启动服务器,本地重新打包发布,run和redeploy是同一个工具
本地启动tomcat服务,不重启服务器的前提下更新war包资源。
配置很简单
Alt text
当需要更新资源时点击右上角选择redeploy重新发布即可。

分布式技术入坑指南(六)

15. SSO单点登陆系统搭建

模块划分:

  • sso.taotao.interface
  • sso.taotao.service
  • sso.taotao.web

两个问题:

  • 不同域名之间Cookie是不能共享的,这也意味着用户在 sso.taotao.com 系统登陆之后,跳转到 taotao.com 后记录用户登陆凭证(token)的Cookie不存在,访问某些个人信息时提示重新登陆。
  • 不同域名之间的跨域请求是不会返回数据的,比如 item.taotao.com 下一个订单需要发送一个请求到 sso.taotao.com 校验当前用户是否登陆,请求发送成功并且会被处理,但是数据是返回不到 item.taotao.com 系统的。

解决办法:

  • 设置Cookie的doMain属性
  • 以JSONP的方式请求获得数据
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×