<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[好好活着,因为我们会死很久...]]></title><description><![CDATA[biu biu biu~ boom! piu~ piu~]]></description><link>https://blog.youkuaiyun.com/softwarenb</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; softwarenb]]></copyright><item><title><![CDATA[20条开发规范,写出诗一样的代码]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/121752507</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/121752507</guid><author>softwarenb</author><pubDate>Mon, 06 Dec 2021 18:00:46 +0800</pubDate><description><![CDATA[文章目录简介命名1.命名的长度,多长合适2.利用上下文简化命名2.1 利用类class上下文简化命名2.2 利用函数function上下文简化命名3. 命名可读、可搜索3.1 命名可读3.2 命名可搜索方法命令-”关键字联想“命名接口和抽象类注释注释是不是越多越好？函数多大合适一行代码多长合适善用空行分割代码块四行缩进还是两行缩进大括号是否要另起一行类中成员的排列顺序代码分割成更小的代码块避免参数过多勿用函数参数来控制逻辑函数设计要职责单一移除过深嵌套层次学会使用解释性变量
简介
写出诗一样的代码，不要写出]]></description><category></category></item><item><title><![CDATA[程序员命名缩写]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/121636646</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/121636646</guid><author>softwarenb</author><pubDate>Tue, 30 Nov 2021 16:39:47 +0800</pubDate><description><![CDATA[命名缩写
address	addr	地址	
calendar	cdr	日历
application	app	应用程序	
messageDialog	msgdlg	消息框
asynchronization	asyn	异步	
drawer	drw	抽屉
average	avg	平均数	
buttonGroup	btngrp	按钮分组
bitmap	bmp	位图	
checkBox	chk	复选框
buffer	buf	缓冲区	
container	cntr	容器
character	char	字符	
butto]]></description><category></category></item><item><title><![CDATA[什么是继承，向上下转型，多态？]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/121577750</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/121577750</guid><author>softwarenb</author><pubDate>Sat, 27 Nov 2021 15:23:55 +0800</pubDate><description><![CDATA[简介
继承？向上下转型？多态？，都是什么鬼，其实三者是有联系的，终于理解清楚了
什么是继承
继承是用来表示类之间的 is-a 关系：狗是动物，电脑是机器
继承的分类
1.单继承
2.多继承
​	一个子类可以继承多个父类，比如猫即使猫科动物，也是哺乳动物
Java是支持单继承的
继承解决了什么问题？
假如两个类有一些相同的属性和方法，我们就可以将这些相同的部分，抽取到父类中，让两个子类继承父类。
这样，两个子类就可以重用父类中的代码，避免代码重复写多遍
1.减少重复代码
2.从设计的角度来说，也有一种结构美感]]></description><category></category></item><item><title><![CDATA[什么是抽象？]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/121545695</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/121545695</guid><author>softwarenb</author><pubDate>Thu, 25 Nov 2021 19:43:30 +0800</pubDate><description><![CDATA[封装是如何隐藏信息、保护数据
抽象：抽象是隐藏方法的具体实现
抽象到底是什么？
抽象及其前面讲到的封装都是人类处理复杂性的有效手段。在面对复杂系统的时候，人脑能承受的信息复杂程度是有限的，所以我们必须忽略掉一些非关键性的实现细节。
而抽象作为一种：
只关注功能点不关注具体实现的设计思路，
这样的好处：​正好帮我们的大脑过滤掉许多非必要的信息
举例
图片存储功能的Interface:
package p2.code.obj.lab_05_02;

import p2.code.obj.lab_05_02.mo]]></description><category></category></item><item><title><![CDATA[封装的魅力]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/121545242</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/121545242</guid><author>softwarenb</author><pubDate>Thu, 25 Nov 2021 19:22:31 +0800</pubDate><description><![CDATA[简介
以前创建一个model，全都设置为private 属性，然后都是无脑的getter和setter来获取和设置值,自从看了一篇文章后对封装有了新的了解
封装的意义是什么
1.信息隐藏
2.类通过保留有限的访问接口，外部访问仅能通过类提供的方式（或函数）来访问内部信息或者数据
通过访问权限控制，隐藏内部数据，外部仅能通过类提供的有限的接口访问、修改内部数据
反例
public class Wallet {
    private String id;
    private long createTime]]></description><category></category></item><item><title><![CDATA[git -- Question:fatal: refusing to merge unrelated histories]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/118808705</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/118808705</guid><author>softwarenb</author><pubDate>Fri, 16 Jul 2021 17:00:13 +0800</pubDate><description><![CDATA[今天遇到个这个错误
fatal: refusing to merge unrelated histories
$ git pull
fatal: refusing to merge unrelated histories

解决方案：
$git pull origin master --allow-unrelated-histories


–allow-unrelated-histories:允许不关联histories,强制合并

...]]></description><category></category></item><item><title><![CDATA[mysql 找到重复的数据]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/118498917</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/118498917</guid><author>softwarenb</author><pubDate>Mon, 05 Jul 2021 21:17:53 +0800</pubDate><description><![CDATA[简介
工作中测试反馈-页面上显示了两个相同的数据，于是叫我把两条相同的数据找出来。
其实这就是当初表设计时，没对唯一字段（比如phone）添加 唯一约束 导致的坑，现在首先要把数据找出来，然后再填坑，在找出数据的时候又踩了一些坑，下面开始正式的填坑之路
申明 以下所有数据和数据库表结构为自己模拟数据，并非公司真实数据
找出相同的数据的SQL
SELECT id,onlyid FROM 
(
SELECT * FROM TEST_TABLE a WHERE a.onlyid in 
(select onlyi]]></description><category></category></item><item><title><![CDATA[linux 常用命令，持续更新中~]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/118409492</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/118409492</guid><author>softwarenb</author><pubDate>Fri, 02 Jul 2021 11:42:27 +0800</pubDate><description><![CDATA[文章目录文件操作相关ls -- listpwd -- print working directorycd --change directorymkdir -- make directoriesrmdir -- remove directoriestouchrm  -- removeecho&gt;和&gt;&gt;命令&lt;文件操作相关
ls – list
ls – list
ls -l 可指定目录或文件 不指定就是列出当前目录下的文件信息

ls -a 显示所有文件 包含隐藏文件

ls -R 递归显示]]></description><category></category></item><item><title><![CDATA[x86实模式清屏玩具程序]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/118214983</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/118214983</guid><author>softwarenb</author><pubDate>Fri, 25 Jun 2021 11:24:19 +0800</pubDate><description><![CDATA[介绍
由于mac bochs在启动后会输出一堆不需要的字符，小手一抖写了一个玩具清屏程序
代码
    mov ax,0xb800
    mov es ,ax ;附加段基地址   
    mov cx,2000
    xor di,di	 ;偏移地址
    jmp near clear
 clear:
       mov byte [es:di],0x20	;设置文本模式内容
       inc di
       mov byte [es:di],0x00  ;设置文本属性
       in]]></description><category></category></item><item><title><![CDATA[MySQL配置test_db数据库]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/118151209</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/118151209</guid><author>softwarenb</author><pubDate>Wed, 23 Jun 2021 13:35:09 +0800</pubDate><description><![CDATA[说明
employees是mysql官方提供的测试数据库，具体介绍如下：
The original data was created by Fusheng Wang and Carlo Zaniolo at Siemens Corporate Research. The data is in XML format. http://timecenter.cs.aau.dk/software.htm
Giuseppe Maxia made the relational schema and Patrick Cr]]></description><category></category></item><item><title><![CDATA[x86汇编-01编写MBR,看完后用脚都能写出的教程]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/118035496</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/118035496</guid><author>softwarenb</author><pubDate>Fri, 18 Jun 2021 23:38:24 +0800</pubDate><description><![CDATA[文章目录一. 编写MBR1 实模式下显示字符的基本工作原理1.1 图形模式 原理图形模式的问题1.2 文本模式 原理1.2.1 文本模式 为什么需要引入内存映射1.2.2 显存映射至内存的分布1.2.3 显卡加电自检后的文本模式1.2.4字符显示属性2. 代码 MBR  Master Boot Record3.CPU的特性3.1 段寄存器赋值3.3 为什么需要声明byte?3.4 为什么需要申明[es:0x01]?3.5 为什么mov cx,cs mov ds,cx这里的含义是什么？3.6 为什么是mov ]]></description><category></category></item><item><title><![CDATA[nasm生成list和bin文件并进行分析]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/118030643</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/118030643</guid><author>softwarenb</author><pubDate>Fri, 18 Jun 2021 17:26:55 +0800</pubDate><description><![CDATA[文章目录1.源代码2. 生成.lst文件和bin文件2.1 .lst文件分析2.2 汇编代码对应机器指令3.分析bin文件3.1 加载MBR流程
1.源代码
         ;代码清单5-1 
         ;文件名：c05_mbr.asm
         ;文件说明：硬盘主引导扇区代码
         ;创建日期：2011-3-31 21:15 
         
         mov ax,0xb800                 ;指向文本模式的显示缓冲区
         mov]]></description><category></category></item><item><title><![CDATA[编译基础-从hello.c到hello可执行文件的过程]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/117793288</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/117793288</guid><author>softwarenb</author><pubDate>Thu, 10 Jun 2021 23:25:36 +0800</pubDate><description><![CDATA[文章目录编译的步骤一步一步编译指定编译到某个阶段gcc -E -S -cHelloWorld.i HelloWorld.s HelloWorld.o HelloWorld 每个文件中内容是什么？HelloWorld.i 预处理文件HelloWorld.s 汇编代码文件HelloWorld.o 不可执行二进制文件HelloWorld 可执行二进制文件可能会用到的gcc 指令 -g,-masmgcc -masm 指定汇编风格gcc -g 在可执行文件中加入调试信息反汇编工具 objdumpMacOS 对objd]]></description><category></category></item><item><title><![CDATA[Java 时间 GMT UTC UNIX Timestamp 时区]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/113532426</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/113532426</guid><author>softwarenb</author><pubDate>Mon, 01 Feb 2021 23:49:49 +0800</pubDate><description><![CDATA[文章目录时区格林威治标准时间（GMT）和UTCUNIX时间戳什么是北京时间?时间戳和时区有没有关系编码控制台输出
时区
指地球上的一块区域使用的同一时间定义，以经度划分，每个时区横跨15经度，总共24个时区，东西各12个时区。
格林威治标准时间（GMT）和UTC
GMT 地区：英国 皇家格林尼治天文台 时区：UTC/GMT 0 (零时区)
UTC与格林威治平均时(GMT, Greenwich Mean Time)一样，都与英国伦敦的本地时相同,UTC与GMT基本上等同，误差不超过0.9秒
UNIX时间戳
指]]></description><category></category></item><item><title><![CDATA[Java Maven]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/113523814</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/113523814</guid><author>softwarenb</author><pubDate>Mon, 01 Feb 2021 16:44:11 +0800</pubDate><description><![CDATA[文章目录什么是Maven?IDEA 配置Mavenmac下查找maven全局配置文件生成.m2文件夹maven 仓库远程仓库本地仓库仓库配置maven查找仓库优先级maven配置jdk信息maven 构建工程类型IDEA中使用mavenmaven项目目录结构target编译好的文件存在哪里？Maven项目依赖关系依赖关系IDEA 2020，没有自动导包的设置：依赖的传递性依赖的两个原则依赖范围继承关系聚合关系插件1.编译插件2.资源插件解决非resources文件夹下的xml文件无法被编译打包的问题tomc]]></description><category></category></item><item><title><![CDATA[Java IDEA基础]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/113483310</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/113483310</guid><author>softwarenb</author><pubDate>Sun, 31 Jan 2021 20:18:03 +0800</pubDate><description><![CDATA[文章目录IDEA是什么？IDEA的功能范围IDEA的优势IDEA菜单栏View:IDEA的显示相关Module移除模块删除模块设置IDEA1.设置主题2.设置根据滚轮调节字体3.鼠标悬浮提示4.手动导包-&gt; Alt+Enter5.自动导包6.合并导包类为*7.显示行号，显示方法与方法间分隔符8.忽略大小写9.多个类不隐藏,多个类在多行显示10.设置Font11.设置 注释 颜色12.设置“文档注释”信息13.设置项目文件编码格式14.进行自动编译15.省电模式16.代码展示17.导入项目jar包18.]]></description><category></category></item><item><title><![CDATA[Java 设计模式 接口 组合  委托]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/112359690</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/112359690</guid><author>softwarenb</author><pubDate>Fri, 08 Jan 2021 16:03:09 +0800</pubDate><description><![CDATA[简介
写了几年垃圾代码在设计模式上吃过亏，这次看到一篇文章，觉得讲的太好了，就和讲故事一样，逻辑思路很清晰，来来来 ，玩起来，躁动起来…
看着讲了组合和委托，之前对这个概念不太清晰，现在好好梳理一下，主要研究组合和委托解决的是什么问题
为什么少用继承？
假设： Anmial-&gt;鸟类-&gt;老鹰，大鹏，凤凰
常规认知的情况：鸟类都会飞，
所以class Bird extend Animal{  protected void fly() }
但有一个例外，鸵鸟也是鸟类，但它不会飞！
class Ostr]]></description><category></category></item><item><title><![CDATA[Java 抽象类VS接口VS普通类]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/112339966</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/112339966</guid><author>softwarenb</author><pubDate>Thu, 07 Jan 2021 21:35:15 +0800</pubDate><description><![CDATA[抽象类对比接口
抽象类：is-a的关系, 如果确定是is-a的关系 ,就可以用抽象类.
接口： has-a的关系,如果确定是has-a的关系 ,就可以用interface
两者都具有多态的特性：父类能引用子类，父类能动态调用子类的方法，子类需要实现自己的方法
interface的function和 protected abstract void 的function,都是需要子类重写的，然后父类引用子类，然后父类动态的调用方法，暴露给外部的是小范围的（公共的部分 父类有的）
public class Abst]]></description><category></category></item><item><title><![CDATA[Mysql字符编码导致的错误：Illegal mix of collations (latin1_swedish_ci) and (utf8_general_ci)]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/112305698</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/112305698</guid><author>softwarenb</author><pubDate>Thu, 07 Jan 2021 16:03:07 +0800</pubDate><description><![CDATA[简介
今天在排查BUG的时候，dev环境和production环境代码一致，sql语句也没什么问题，
查看日志发现出现了Mysql字符集的问题
Error: ER_CANT_AGGREGATE_2COLLATIONS: 
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

查看Mysql字符集
直接写一个shell脚本吧
EOF简介
我自己的理]]></description><category></category></item><item><title><![CDATA[Java 封装 抽象 继承 多态]]></title><link>https://blog.youkuaiyun.com/softwarenb/article/details/112299250</link><guid>https://blog.youkuaiyun.com/softwarenb/article/details/112299250</guid><author>softwarenb</author><pubDate>Wed, 06 Jan 2021 22:55:27 +0800</pubDate><description><![CDATA[简介
最近看的书有点杂，看到GeekTime的《设计模式之美》，其中对封装的对我感触很深，花了一天时间研究了一下，方便后面回看，在这里记录一下，回想几年前无脑的getter() setter(),哈哈，真是感觉自己就是一个机器，没有灵魂
印象比较深的一句话

类或对象作为组织代码的基本单元,并将封装，抽象，继承，多态四个特性，作为代码设计和实现的基石

封装
封装的意义是什么
1.信息隐藏
2.类通过保留有限的访问接口，外部访问仅能通过类提供的方式（或函数）来访问内部信息或者数据
import java.m]]></description><category></category></item></channel></rss>