博客园 - ert999
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=18907
2018-12-08T05:34:18Z
ert999
https://www.cnblogs.com/shaohsiung/
feed.cnblogs.com
https://www.cnblogs.com/shaohsiung/p/10087441.html
photoshop钢笔工具简单记录 - ert999
1. 移动锚点 Ctrl + 左键 2. 增加、删除锚点 左键(显示+、-) 3. 直线曲线相互转换 Alt + 左键(注意提示) 默认情况下为直线,按住Alt鼠标左键点击目标锚点,目标锚点两边的直线变为曲线,同时出现三个点,调整中间的点会导致两条边发生变化, 调整左右两边的点只会导致一条边发生变化
2018-12-08T05:34:00Z
2018-12-08T05:34:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】1. 移动锚点 Ctrl + 左键 2. 增加、删除锚点 左键(显示+、-) 3. 直线曲线相互转换 Alt + 左键(注意提示) 默认情况下为直线,按住Alt鼠标左键点击目标锚点,目标锚点两边的直线变为曲线,同时出现三个点,调整中间的点会导致两条边发生变化, 调整左右两边的点只会导致一条边发生变化 <a href="https://www.cnblogs.com/shaohsiung/p/10087441.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/10084054.html
springmvc之json交互406异常(Not Acceptable)和415异常(Unsupported Media Type) - ert999
一. 406异常(Not Acceptable) 1. 没有添加jackson-databind包2. 请求的url的后缀是*.html。在springmvc中如果请求的后缀是*.html的话,是不可以响应一个json数据的,将url中的*.html改成*.action即可。 二. 415异常(Un
2018-12-07T09:27:00Z
2018-12-07T09:27:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】一. 406异常(Not Acceptable) 1. 没有添加jackson-databind包2. 请求的url的后缀是*.html。在springmvc中如果请求的后缀是*.html的话,是不可以响应一个json数据的,将url中的*.html改成*.action即可。 二. 415异常(Un <a href="https://www.cnblogs.com/shaohsiung/p/10084054.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/10015833.html
代码重构技巧 - ert999
1. 封装重复法当有两个方法及以上出现了相同作用的代码块,应该将这些代码块封装成一个独立的功能模块,然后在这些方法里调用。 2. 分割冗余法一个大方法 = 子功能1 + 子功能2 + ... 所以要给每个子功能起一个好名字。 3. 嵌套条件分支优化(1)卫语句法使用if... ,尽量避免使用if..
2018-11-25T07:42:00Z
2018-11-25T07:42:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】1. 封装重复法当有两个方法及以上出现了相同作用的代码块,应该将这些代码块封装成一个独立的功能模块,然后在这些方法里调用。 2. 分割冗余法一个大方法 = 子功能1 + 子功能2 + ... 所以要给每个子功能起一个好名字。 3. 嵌套条件分支优化(1)卫语句法使用if... ,尽量避免使用if.. <a href="https://www.cnblogs.com/shaohsiung/p/10015833.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/10015806.html
Dao层结合Service层处理异常 - ert999
1. 接口存在异常不利于解耦。 2. 将编译时异常转化为运行时异常或其子类,通知上层,上层可以根据自身能力选择处理或向上抛出。 举例: 将UserDao中的SQLException转化为DaoException, 其中SQLException属于编译时异常, DaoException继承Runtim
2018-11-25T07:35:00Z
2018-11-25T07:35:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】1. 接口存在异常不利于解耦。 2. 将编译时异常转化为运行时异常或其子类,通知上层,上层可以根据自身能力选择处理或向上抛出。 举例: 将UserDao中的SQLException转化为DaoException, 其中SQLException属于编译时异常, DaoException继承Runtim <a href="https://www.cnblogs.com/shaohsiung/p/10015806.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/10015790.html
HttpUrlConnection类基本使用 - ert999
这个类用来模拟浏览器向服务器发送请求和接收响应 注意: HttpUrlConnection对象简称huc对象 1)获取huc对象向url构造中传递url字符串,并调用openconnection方法即可获取huc对象。 2)接收响应调用huc对象的getinputstream方法获取消息体,使用in
2018-11-25T07:31:00Z
2018-11-25T07:31:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】这个类用来模拟浏览器向服务器发送请求和接收响应 注意: HttpUrlConnection对象简称huc对象 1)获取huc对象向url构造中传递url字符串,并调用openconnection方法即可获取huc对象。 2)接收响应调用huc对象的getinputstream方法获取消息体,使用in <a href="https://www.cnblogs.com/shaohsiung/p/10015790.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/10012760.html
三种Spring加载机制 - ert999
方法一. 在main方法中启动Spring 方法二. 利用Spring自带的Servlet启动, 配置好Servlet, 加载Servlet的时候, 就初始化了WebApplicationContext 方法三. 利用Spring自带的Listener启动, 装配好Listener, 加载Liste
2018-11-24T09:17:00Z
2018-11-24T09:17:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】方法一. 在main方法中启动Spring 方法二. 利用Spring自带的Servlet启动, 配置好Servlet, 加载Servlet的时候, 就初始化了WebApplicationContext 方法三. 利用Spring自带的Listener启动, 装配好Listener, 加载Liste <a href="https://www.cnblogs.com/shaohsiung/p/10012760.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/10002014.html
使用EditPlus批量修改文件编码格式 - ert999
步骤一: 步骤二: 步骤三: 步骤四:
2018-11-22T08:40:00Z
2018-11-22T08:40:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】步骤一: 步骤二: 步骤三: 步骤四: <a href="https://www.cnblogs.com/shaohsiung/p/10002014.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9984588.html
Linux统计根分区使用率 - ert999
1 #!/bin/bash 2 3 # 统计根分区使用率 4 # 作者: shaohsiung 5 # 时间: 2018/11/19 6 7 rate=$(df -h | grep "dev/sda3" | awk '{print $5}' | cut -d "%" -f1) 8 9 if [ $rate -ge 80 ] 10 then 11 e...
2018-11-19T10:21:00Z
2018-11-19T10:21:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】1 #!/bin/bash 2 3 # 统计根分区使用率 4 # 作者: shaohsiung 5 # 时间: 2018/11/19 6 7 rate=$(df -h | grep "dev/sda3" | awk '{print $5}' | cut -d "%" -f1) 8 9 if [ $rate -ge 80 ] 10 then 11 e... <a href="https://www.cnblogs.com/shaohsiung/p/9984588.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9984531.html
Linux批量解压缩脚本 - ert999
ls.log文件的输出内容
2018-11-19T10:10:00Z
2018-11-19T10:10:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】ls.log文件的输出内容 <a href="https://www.cnblogs.com/shaohsiung/p/9984531.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9983856.html
操作系统之互斥记录 - ert999
忙等待: while (1); // 占用CPU资源 饥饿: 高个子(进程1)和矮子(进程2)抢篮板(CPU执行权), 矮子抢不到篮板, 矮子饥饿. 一. 临界区的四个特点 1. 互斥2. 前进3. 有限等待4. 无忙等待(可选)临界区很短时, 允许忙等待临界区很长时, 考虑基于上下文切换实现无忙等
2018-11-19T08:34:00Z
2018-11-19T08:34:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】忙等待: while (1); // 占用CPU资源 饥饿: 高个子(进程1)和矮子(进程2)抢篮板(CPU执行权), 矮子抢不到篮板, 矮子饥饿. 一. 临界区的四个特点 1. 互斥2. 前进3. 有限等待4. 无忙等待(可选)临界区很短时, 允许忙等待临界区很长时, 考虑基于上下文切换实现无忙等 <a href="https://www.cnblogs.com/shaohsiung/p/9983856.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9977690.html
读者写者问题 - ert999
1. 读者写者问题读者优先: 只要有一个Reader处于活动状态, 那么后面来的Reader都会被接纳. 若Reader源源不断, 那么Writer就会一直处于阻塞状态, 即写者被饿死. 写者优先: 一旦Writer就绪, 就会先执行Writer, 写者优先级高于读者, 若Writer源源不断, 那
2018-11-18T05:34:00Z
2018-11-18T05:34:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】1. 读者写者问题读者优先: 只要有一个Reader处于活动状态, 那么后面来的Reader都会被接纳. 若Reader源源不断, 那么Writer就会一直处于阻塞状态, 即写者被饿死. 写者优先: 一旦Writer就绪, 就会先执行Writer, 写者优先级高于读者, 若Writer源源不断, 那 <a href="https://www.cnblogs.com/shaohsiung/p/9977690.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9977633.html
哲学家就餐问题 - ert999
1. 使用PV信号量使就餐互斥方案的缺点 将就餐看成必须互斥访问的临界资源, 这样会造成资源(叉子)的浪费.五把叉子, 一次应该有两个不相邻的哲学家同时进餐. 2. 算法实现 数据结构 主函数 功能: 尝试获取两把叉子, 获取不到便阻塞 功能: 放下两把叉子, 并尝试唤醒邻居 拿叉子策略
2018-11-18T05:14:00Z
2018-11-18T05:14:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】1. 使用PV信号量使就餐互斥方案的缺点 将就餐看成必须互斥访问的临界资源, 这样会造成资源(叉子)的浪费.五把叉子, 一次应该有两个不相邻的哲学家同时进餐. 2. 算法实现 数据结构 主函数 功能: 尝试获取两把叉子, 获取不到便阻塞 功能: 放下两把叉子, 并尝试唤醒邻居 拿叉子策略 <a href="https://www.cnblogs.com/shaohsiung/p/9977633.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9977621.html
理解中断 - ert999
一. 三种中断 1. 外中断 2. 异常 3. 系统调用 二 . 比较三种中断 三. 外中断 中断使能标志 -> CPU处理中断(CPU初始化时设置)中断向量表 -> 中断源编号中断嵌套 四. 系统调用和库函数调用 系统调用 int 和 iret 存在堆栈切换函数调用 call 和 ret 没有堆栈
2018-11-18T05:10:00Z
2018-11-18T05:10:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】一. 三种中断 1. 外中断 2. 异常 3. 系统调用 二 . 比较三种中断 三. 外中断 中断使能标志 -> CPU处理中断(CPU初始化时设置)中断向量表 -> 中断源编号中断嵌套 四. 系统调用和库函数调用 系统调用 int 和 iret 存在堆栈切换函数调用 call 和 ret 没有堆栈 <a href="https://www.cnblogs.com/shaohsiung/p/9977621.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9977598.html
理解处理机调度 - ert999
一. 进程上下文切换 进程切换 -> 处理机调度(挑选就绪队列中的一个PCB) -> 调度程序 -包含-> 1) 调度时机(什么时候挑?) -> 可抢占(时钟中断和优先级) 和 非抢占(退出和转等待)2) 调度策略(如何挑?) -> 调度准则 调度算法 二. 调度准则 1. CPU使用率2. 吞吐量
2018-11-18T05:04:00Z
2018-11-18T05:04:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】一. 进程上下文切换 进程切换 -> 处理机调度(挑选就绪队列中的一个PCB) -> 调度程序 -包含-> 1) 调度时机(什么时候挑?) -> 可抢占(时钟中断和优先级) 和 非抢占(退出和转等待)2) 调度策略(如何挑?) -> 调度准则 调度算法 二. 调度准则 1. CPU使用率2. 吞吐量 <a href="https://www.cnblogs.com/shaohsiung/p/9977598.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9977587.html
理解死锁 - ert999
一. 死锁 理解模型: 单向桥模型, 单身狗模型 二. 死锁的4个必要条件 1. 互斥 2. 非持有并等待 3. 非强占 4. 循环等待 三. 资源 1. 可重用资源 CPU, 数据库, 信号等 2. 消耗资源 中断, 信号等 四. 处理死锁的三种方法 由应用程序处理死锁, 操作系统忽视死锁. 1.
2018-11-18T04:58:00Z
2018-11-18T04:58:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】一. 死锁 理解模型: 单向桥模型, 单身狗模型 二. 死锁的4个必要条件 1. 互斥 2. 非持有并等待 3. 非强占 4. 循环等待 三. 资源 1. 可重用资源 CPU, 数据库, 信号等 2. 消耗资源 中断, 信号等 四. 处理死锁的三种方法 由应用程序处理死锁, 操作系统忽视死锁. 1. <a href="https://www.cnblogs.com/shaohsiung/p/9977587.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9938511.html
理解进程 - ert999
一. 什么是Process 源代码(静态的)经过编译连接之后形成可执行程序(例如.exe后缀), 双击运行程序, 程序通过操作系统加载到内存单元中, 操作系统将CPU执行权转交给程序, CPU执行程序中一条条指令, 处理相应的数据, 并完成一定的功能, 这个执行过程就是进程(动态的). 二. Pro
2018-11-10T02:14:00Z
2018-11-10T02:14:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】一. 什么是Process 源代码(静态的)经过编译连接之后形成可执行程序(例如.exe后缀), 双击运行程序, 程序通过操作系统加载到内存单元中, 操作系统将CPU执行权转交给程序, CPU执行程序中一条条指令, 处理相应的数据, 并完成一定的功能, 这个执行过程就是进程(动态的). 二. Pro <a href="https://www.cnblogs.com/shaohsiung/p/9938511.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9924530.html
Linux CentOS 6.7 挂载U盘 - ert999
1. 首先查看U盘是否成功安装fdisk -l 2. 在/mnt下创建U盘目录mkdir /mnt/usb 3. 挂载U盘mount -t vfat /dev/sdb1 /mnt/usb 4. 卸载U盘umount/usb 或 umount /dev/sdb1
2018-11-07T10:19:00Z
2018-11-07T10:19:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】1. 首先查看U盘是否成功安装fdisk -l 2. 在/mnt下创建U盘目录mkdir /mnt/usb 3. 挂载U盘mount -t vfat /dev/sdb1 /mnt/usb 4. 卸载U盘umount/usb 或 umount /dev/sdb1 <a href="https://www.cnblogs.com/shaohsiung/p/9924530.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9923314.html
家庭-养老院模型理解IOC和DI - ert999
控制反转 IOC 1. 概念 应用内部不负责依赖对象的创建和维护, 由第三方负责, 这样控制权就由应用内部转移到外部容器, 控制权的转移就是所谓的反转. 2. 比喻 有一户家庭(应用)有个老人(依赖对象), 家庭需要负责老人的吃喝住行(依赖对象的创建和维护), 但因家里的年轻人需要上班赚钱, 没有时
2018-11-07T08:24:00Z
2018-11-07T08:24:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】控制反转 IOC 1. 概念 应用内部不负责依赖对象的创建和维护, 由第三方负责, 这样控制权就由应用内部转移到外部容器, 控制权的转移就是所谓的反转. 2. 比喻 有一户家庭(应用)有个老人(依赖对象), 家庭需要负责老人的吃喝住行(依赖对象的创建和维护), 但因家里的年轻人需要上班赚钱, 没有时 <a href="https://www.cnblogs.com/shaohsiung/p/9923314.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9921888.html
Bash基础 - ert999
一. Bash基础 # history 1. 查看缓冲区历史命令history 2. 清空缓冲区历史命令history -c 3. 将缓冲区历史命令写入历史命令记录文件history -w # 默认历史命令记录文件为.bash_historyhistory -w history.log 4. 配置历
2018-11-07T04:36:00Z
2018-11-07T04:36:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】一. Bash基础 # history 1. 查看缓冲区历史命令history 2. 清空缓冲区历史命令history -c 3. 将缓冲区历史命令写入历史命令记录文件history -w # 默认历史命令记录文件为.bash_historyhistory -w history.log 4. 配置历 <a href="https://www.cnblogs.com/shaohsiung/p/9921888.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/shaohsiung/p/9883599.html
JVM之类加载过程 - ert999
# 类的生命周期 1. 加载 loading2. 验证 verification3. 准备 preparation4. 解析 resoluation5. 初始化 initialization6. 使用 using7. 卸载 unloading # 加载 Step1 通过类的全限定名获取类的二进制字节
2018-10-31T10:32:00Z
2018-10-31T10:32:00Z
ert999
https://www.cnblogs.com/shaohsiung/
【摘要】# 类的生命周期 1. 加载 loading2. 验证 verification3. 准备 preparation4. 解析 resoluation5. 初始化 initialization6. 使用 using7. 卸载 unloading # 加载 Step1 通过类的全限定名获取类的二进制字节 <a href="https://www.cnblogs.com/shaohsiung/p/9883599.html" target="_blank">阅读全文</a>