阿照的日志 - 2018年11月
type: channel
link: https://azhao.net/index.php/2018/11/
description: 阿照日常所思所想
items: winXP连接WIN10打印机最正确的操作
items: int* (*a[5])(int, char*); 是什么意思
items: 关于java初始化的讨论
items: 好书收藏
items: CMS系统功能记录
items: Hutool的相关资料
items: 高老四的博客
items: H5禁止手机自带键盘弹出
items: CMS系统更新记录

winXP连接WIN10打印机最正确的操作
type: item
date: 2018-11-23T08:57:50+08:00

int* (*a[5])(int, char*); 是什么意思
type: item
date: 2018-11-21T23:08:08+08:00
description: 这两天学习C语言，遇到这样一个定义 int* (*a[5])(int, char*); 一眼望去，头大，找了好多解读总算搞明白了，下面把自己的感想记录一下网上的结果我们知道 类型 变量 ；表示的定义一个变量如果是这种形式 类型 变量();表示声明一个函数这个表达式 int* (*a[5])(int, char*); 从轮廓上看，是声明一个函数，函数的返回值是一个整形的指针int* 表示是一个int型指针;(*a[5])(int, char*)中的a[5]表示是一个有5个元素的数组而(*)(int, char*)则表示指向一个函数的指针，该函数有两个参数，第一个参数为int型，第二个是字符指针型结合前面部分，表示这个函数的返回类型为int型，所以(*a[5])(int, char*)为5个返回类型为int型函数组成的数组；整个结合起来 int* (*a[5])(int, char*); 就是指向5个返回类型为int型函数组成的数组的指针变量，变量名为a.本质是指向数组的指针，该数组是函数而已。上面是百度知道找到的我的理解类型为指针5个元素的数组数组的元素为函数的指针函数的参数有两个总结起来是，类型为指针的含有五个元素的数组，注意最终是数组

关于java初始化的讨论
type: item
date: 2018-11-17T08:00:00+08:00
description: 在CSDN论坛上看到的，一个帖子的回复cheuqoi的回复前几天我刚刚买了这本书《疯狂Java：突破程序员基本功的16课@李刚》，我看了前3章，感觉还是相当不错的。尤其是第3章讲的HashMap、HashSet、TreeSet、TreeMap的实现细节，可以说非常透彻。关于楼主提出的2点，我有点疑问第一个说法是楼主自己想出来的？还是没记清？正好我手边有书，我把书上原话敲出来：数组的初始化有两种方式：静态初始化：初始化时由程序员显式指定每个数组元素的初始值，由系统决定数组长度。动态初始化：初始化时程序员只指定数组长度，由系统为数组元素分配初始值。我觉得这个总结很到位啊，不知道这有什么问题？楼主能说说吗？书中的代码：//采用静态初始化方式初始化第一个数组 String[] books = new String[] { "疯狂Java讲义", "轻量级Java EE企业应用实战", "疯狂Ajax讲义", "疯狂XML讲义" }; //采用静态初始化的简化形式初始化第二个数组 String[] names = { "孙悟空", "猪八戒", "白骨精" }; //采用动态初始化的语法初始化第三个数组 String[] strArr = new String[5];与楼主的“所谓动态就是使用用new了”好像不是一回事？我仔细翻了书，好像没看到李刚书中有这句话啊。感觉楼主是自己搞了错误的概念，然后自己“震精”自己啊！至于楼主说的第二个问题，String[] a = {"eee"}; String[] b = a;//这个b没有被初始化就我个人觉得，这种方式我还真不觉得叫初始化！比如我们初始化一个对象，是不是意味着重新分配内存，如果是对象，是不是要调用这个对象的初始化块、构造器进行初始化？但第二条代码还真没有这些过程！！它只是将一个引用指向另一个已经存在的数组。例如我们这样写Object obj1 = new Object(); Object obj2 = obj1;我觉得这里只初始化了一个Java对象！难道楼主认为这里初始化了几个对象？再者！我要告诉楼主一个基本概念：对象（包括数组）才需要初始化！当然，就我个人的感觉，这种概念性的东西其实没必要在名称上纠缠。让我们来看看书中解释：始终记住：Java的数组变量是引用类型的变量，它并不是数组对象本身，只要让数组变量指向有效的数组对象，程序中即可使用该数组变量。...我们说对数组执行初始化，其实并不是要对数组变量执行初始化，而是要对数组对象执行初始化——也就是为该数组对象分配一块内存空间。虽然上面程序中的prices变量看似没有经过初始化，但执行prices = nums;就会让prices变量直接指向一个已经执行初始化的数组。我觉得书中的说明其实很中允（注意文中用的是“看似”），恕我技术不行，我实在看不出这段解释有任何问题。反倒是楼主，你所认为的String[] b = a;语句是初始化！我还真不觉得是初始化！关于对象初始化，我想说下我的观点。 String[] a = {"test"}; String[] b = a; b 是经过初始化的。 ### wakeUpDoNottLazy的回复原因：所谓“初始化”是对“对象 ”而言，而不是对象的引用。 那么 b 这个引用，所引用的对象是什么呢？无疑就是 “{"test"}” 这个数组。也就是说 b 所引用的对象在 String[] a = {"test"}; 时经历了初始化。 对象不初始化是不能使用的啊 我在初学 SSH 的时候看过李刚的一本书，怎么说呢。....不完美，但有所获。总体来说不敢恭维。String[] a = {"test"}; 时经历了初始化。这点我完全同意啊。 我的意思是： String[] b = a; 这条代码。这里是否有经过初始化呢？你说之前就对数组对象初始化了，这也没错啊。 我想问： 这里到底初始化了几个对象？ 只有一个吧！ 我觉得String[] b = a; 这条代码没有任何初始化动作吧？\，它只是让一个引用变量指向另一个已有的对象，谈不上什么初始化吧！要说初始化，也是由String[] a = {"test"}; 这条代码完成的！！与String[] b = a无关！！.

好书收藏
type: item
date: 2018-11-14T11:57:45+08:00
description: 《Maven实战》的原作者许晓斌

CMS系统功能记录
type: item
date: 2018-11-14T10:50:43+08:00
description: CMS系统功能记录栏目需要增加新窗口打开留言购买表单，前端需要做一个共用的可以调用SEO集中设置，可以参考fastadmin后台增加一个在线帮助功能，就用doc.thinklog.net来做

Hutool的相关资料
type: item
date: 2018-11-14T08:23:56+08:00
description: 描述Hutool是一个Java工具包，也只是一个工具包，它帮助我们简化每一行代码，减少每一个方法，让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理，后来慢慢积累并加入更多非业务相关功能，并广泛学习其它开源项目精髓，经过自己整理修改，最终形成丰富的开源工具集。点击查看官网如何下载下载需要到Maven仓库，点击这里下载如何使用官方文档

高老四的博客
type: item
date: 2018-11-14T08:19:00+08:00
description: 高老四的博客描述这个博客是我从微信群（阿里巴巴的《码出高效》）里面获得的，内容非常好，顺便收藏一下

H5禁止手机自带键盘弹出
type: item
date: 2018-11-11T08:05:00+08:00
description: 该解决方案不适用于apicloud这个问题，确实困扰了我好久，但是今天解决了。在网上搜索答案，全都是用DIV模拟input框实现，没有一个真正解决这个问题的，现在我只需要一句代码就可以完完整整的解决这个问题。先看下问题吧：这个是我自制的一个日历，在没有选择日期前她是这个样子的，感觉还可以吧但是好景不长，当我将手放进选择框选日期的时候，手机自带的键盘就弹出来了，完全盖住的页面，好心塞，有么有？ 解决方案：HTML代码 $("#datePicker").focus(function(){ document.activeElement.blur(); }); $("#datePicker2").focus(function(){ document.activeElement.blur(); });接下来见证奇迹的时刻到了，手机自带的键盘，奇迹就不见了。 看下面效果图，6不6，你就说！什么div模拟input方法，你试试就知道………….我就只呵呵了…… 作者：马优晨 来源：CSDN 原文

CMS系统更新记录
type: item
date: 2018-11-02T06:10:23+08:00
description: 背景此次更新变动比较大，优化了模板功能，基本的目标是模板中自定义该模板的所有特性，系统只提供公共特性，如果数据结构方面有要求，需要在模板目录中增加模块/php/里面加载前台后台修改代码。这样做把每个模板都能当成一个独立的，系统提供核心功能，自定义功能全部交由模板提供，自定义数据类型的，单独建表根据模板进行，参考TP的数据库模型或者控制器模型进行修改记录将 /_core/acs移动到/extend/acs目录，并将/apps/commmon/AcsPage.php移动到/extend/acs/Page.php将后台模板目录/template/admin/移动到/apps/admin/template，并修改模板函数调用将/apps/common.php中的get_upload_image()改名为upath()，方便书写将模板目录中theme.xml取消，自定义内容合并包 theme.php中的theme_config()中，以后theme.php文件是模板风格的核心文件增加数据表autoid，与内容相关的 category,article,product等模型的表的ID全部由改模型生成，便于系统路由处理