心得
boslm
这个作者很懒,什么都没留下…
展开
-
了解常见技术和前沿技术的必要性
拓宽常见技术,并实践,了解那些公认能提升人们效率的技术,因为这些技术发明出来,就是为了实际解决各类问题、提升效率。 最前沿的许多技术之所以要被研究,是因为它们如果能投入使用,确实能解决人们当前的效率问题,解决效率问题是人们进步的方式之一。...原创 2021-06-25 10:28:28 · 1172 阅读 · 0 评论 -
PHP实现队列和测试
<?php/** * Class MyList * 队列,先进先出,头部出,尾部入 * * */class MyList{ //队列头索引 private $head_index = 0; //出队的内容 private $out_value; //入队的内容 private $in_value; //队列数组 private $list_arr = []; //队列最大值(满了不能入队) .原创 2021-05-19 11:44:56 · 180 阅读 · 0 评论 -
栈的操作状态撤回思路
* 栈,后进先出,永远在栈顶操作* 可用于记录最后一步操作,逐步撤回。* 如果维持一个栈表,里面的内容指向某些具体的操作日志记录id,* 当新增操作记录时,把id插入到最后一行,当要回退到最后一个状态时,读取最后一个操作记录id,对应的操作内容,对该操作做等幂撤销操作(在记录该操作时,就记录了相应的撤销操作指令。可以参考PHP的Yii框架的Migrate),让当前系统回到上一步的状态,然后删除栈表最后一行操作记录id* 这样就完成了系统的操作回退** 如果是在redis里面做,可以根据上述原理.原创 2021-05-19 11:18:09 · 249 阅读 · 0 评论 -
修改windows终端编码
chcp 65001原创 2021-05-19 10:56:53 · 648 阅读 · 3 评论 -
时间管理
为什么有的人能拥有很多时间?1、他们效率高2、他们效率高的根本原因是他们处事方式和绝大多数人都不一样1、懂得投资 和金钱管理一样,时间管理也存在消费、投资之分。 现在每投下的一点时间,都会为将来多倍的节省时间。 一次播种,多次收获。 现在做的事情,是未来做的事情的基础。2、减少消费比例 消费是指投入时间或金钱之后,只能得到暂时的效果、快乐,对未来的影响小。 吃饭花费的金钱是消费,买书花费的金钱是投资。 打游戏花费的时间是消费,看书花费的时间...原创 2021-04-27 18:39:40 · 81 阅读 · 0 评论 -
从计算机的多级缓存设计出发得到的一些生活工作方法思考
1、如果能预见到可能性很大的操作,那么做提前处理 比如,读取当前页内容之后,很大可能要读取下一页,那么可以提前读取下一页。但是读取下一页的动作,是用户正在阅读当前页的期间去做的,异步去做,可以在用户阅读的同时同步进行。 发散思考: 1、流程步骤已经触发,还有后续步骤等着触发记录,那么期间就可以通过异步提前生成好下一步要保存的内容,用户点击的一瞬间就已经生成完毕。 2、用户保存数据后,可能存在领导审批的步骤,这个步骤的数据准备可以在保存之后就生成,也可...原创 2021-04-25 11:19:43 · 52 阅读 · 0 评论 -
消息队列-削峰
MYSQL单机处理请求是有上限的,因此需要把请求限制在一定数量上。一般的MYSQL每秒2K请求处理是中上水平,达到5K就处理不过来。通过消息队列来削峰,把请求的处理堆积在队列中,或队列满到10K或某个值,就不加入队列都可以,按顺序每秒2K的进行处理,达到削峰目的。...原创 2021-04-23 10:12:27 · 1290 阅读 · 0 评论 -
消息队列-异步
用户发起请求之后,不要求实时得到结果的业务,都可以考虑使用异步,这样就能立马得到返回结果。比如秒杀成功之后,不需要马上生成订单,只需要告诉他秒杀资格成功了。原创 2021-04-23 10:07:34 · 410 阅读 · 0 评论 -
IIS服务器SSL证书配置打开HTTPS
1、拿到IIS证书2、在电脑开始-》运行-》MMC,增加编辑管理项目-》证书-》编辑本地计算机证书-》导入证书-》输入IIS证书密码,导入完成3、IIS服务器站点-》绑定-》443端口-》选择证书-》确定...原创 2021-04-10 11:08:12 · 128 阅读 · 0 评论 -
高德地图API地图展示、输入搜索、选择修改地图内容
function initGDMap() { console.log('初始化地图'); var center =[22.538184,113.95148]; var map = new AMap.Map('container', { center:center, zoom:11 }); var placeSearch = new AMap.PlaceSearch({ map: map }); //构造地点.原创 2021-04-08 14:28:53 · 434 阅读 · 1 评论 -
解耦,可扩展代码
改造前/** * 这里目前是写死的,每次增减都要改动这里的代码 * @desc 更好的做法之一是,在对应的模型里面写一个方法changeLimitRowsWhere, * 这样未来有多少个表都能不修改这边的算法模板,却又能灵活控制这里的条件 * @param $table * @param $where * @return mixed|string */public function getWhere($modenum,$where){ if(strpos($modenum,'m.原创 2021-03-31 15:55:59 · 87 阅读 · 0 评论 -
解耦
/** * 假设未来不同的模块要增加或者删减跟进时间字段,就得动这边的代码,也就是说,这里每一行的灵活性,都不足 * 可以改成getTableWhiteNameAndKey,返回可通过的表、对应的公司名称 * @param $rs * @param $table * @return mixed */private function addData($rs,$table){ if($table=='customer'||$table=='wdxsc'||$table=='custome.原创 2021-03-30 20:41:06 · 70 阅读 · 0 评论 -
关于效率和代码设计的思考
今天在考虑一个项目究竟为什么好做、为什么不好做的原因时,得到一些感悟。在做一个满是前端js代码的项目时,感觉为了修改一个小功能,却要花费很大的代价,时间都花在读懂代码上。“同一个文件里面代码多,且一个小函数里面做的事情太多,并且没有注释它到底是为了什么而做这一步,短短的6行代码,都是为别处的函数做伏笔,没法判断每一行的目标。”变量的来源不好追踪、变量定义后的用途不明,变量命名没有意义,所有的代码很难理解。解决办法是:1、对于某块功能,要有对应的流程步骤说明文档2、相关函数..原创 2021-03-23 20:19:11 · 59 阅读 · 0 评论 -
关于订单代码设计的思考
//获取一大堆入参,这些入参是否能减少?是否一定是到了当前页面才要填的东西,是否有的不需要填,在之前已经确定了,是否有a可以得到b//也就是考虑职责的转移,减少客户的职责,增加代码的职责//哪些参数以前已经有了,哪些参数即将要得到的结果以前已经有了,如何快速拿到//购物车信息//地址信息//发票信息//支付类型//活动信息//订单类型//自提类型//门店信息//积分信息//优惠券信息//其他各类活动信息//不同的支付类型,要做的特殊处理不同,但是大部分是相同的,可以提前识别相同.原创 2021-03-15 17:12:56 · 301 阅读 · 0 评论 -
关于快速决定扩展对象
在不改动原有系统代码的情况下,可以采用增加扩展对象的方式,去扩展添加你要的功能,实现目标,不需要考虑系统原本到底怎样,只要达到你的目标。原创 2021-03-15 16:28:17 · 38 阅读 · 0 评论 -
htaccess修改后样式崩溃
重写后,里面的目录层级改变,导致css、js等等相对路径改变了,无法找到href="css/sp_bufen.css" 错误写法,一旦当前页面是被别的页面引入的,相对路径就会改变href="/css/sp_bufen.css" 正确写法,一开始就应该写上多一撇,相对于根目录开始找起href="<?php echo SITE_URL;?>/css/sp_bufen.css" 绝对路径...原创 2021-02-04 16:17:10 · 53 阅读 · 0 评论 -
htaccess失效
本地可以 服务器失效考虑是服务器或浏览器原因,浏览器勾选disable cache 和清空浏览器缓存都没用,然后故意访问一个目录下不存在的文件,再次访问符合规则的地址,就可以了。(没明白原理,但是这样似乎可以刷新对规则的重新定义)...原创 2021-02-04 14:34:34 · 166 阅读 · 0 评论 -
记录htaccess实战写法
<IfModule mod_rewrite.c>RewriteEngine onRewriteBase /itRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)\.html$ /it/solution/index.php?rewrite_param=$1 [L]RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1.原创 2021-02-04 10:41:13 · 154 阅读 · 0 评论 -
甲方上线一拖再拖的原因
有的甲方在交付测试时,才会突然抛出交付要求,让你措不及手,到了交付时期的时候才提出验收标准,然后针对此标准要重新调整的,导致交付时间远超计划。因此应当在开始开发时,就问清楚有什么验收标准或变更,否则只能按照默认的来,可能出现的情况是你做出来了对方从各个角度提出新的要求,认为不符合,然后再调整,再交付,再提新的要求,一直交付不了。另外一种解决办法就是,客户提出两个要求,你把十个可做的要求都提前做了,你比客户更明白他可能有什么要求。...原创 2021-02-04 09:18:30 · 123 阅读 · 0 评论 -
静态文件下载速度慢的问题
服务器开启对某类文件的缓存启用,如针对css和js的缓存启用,设置好过期时间。前端代码在请求文件时,设置允许缓存即可,包括ajax的缓存启用。浏览器的控制台把disable cache开关去掉。原创 2021-02-02 10:44:48 · 376 阅读 · 2 评论 -
微信环境url特殊字符被转义的解决办法
URI中的特殊字符需要encodeURI原创 2021-01-30 14:28:04 · 1954 阅读 · 0 评论 -
在已有内容的基础上发展速度更快
在编程工具中,已有的变量、函数、类提示,可以加快开发速度。在项目开发中,已有的功能、板块直接使用、调整。在代码插件中,直接使用已有插件、库、代码块。原创 2021-01-30 11:33:09 · 50 阅读 · 0 评论 -
代码片段复用思路记录
export_params.count_total_by_daqu_xs_export_do = that.clueDataParam1;export_params.count_new_by_daqu_xs_export_do= that.clueDataParam2;export_params.count_total_by_sales_xs_export_do = that.clueDataParam3;export_params.count_new_by_sales_xs_export_do =.原创 2021-01-30 11:15:43 · 78 阅读 · 0 评论 -
PHP类中在所有方法被调用前执行一段代码
<?phpclass Controller { public function __call($method, $args) { $this->checkAccess(); return call_user_func_array([$this, $method], $args); } protected function actionFoo() {} protected function action.原创 2021-01-30 10:55:40 · 893 阅读 · 0 评论 -
PHP获取当前类名、方法名
__CLASS__ 获取当前类名__FUNCTION__ 当前函数名(confirm)__METHOD__ 当前方法名 (bankcard::confirm)__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是...原创 2021-01-30 10:47:39 · 1226 阅读 · 1 评论 -
当变量本质相同,而不同情况需要的又有区别时
把变量加上前缀区分,如都是搜索地区字段,area,但是线索和商机的又要同时得到时,xs_area,customer_area原创 2021-01-30 10:34:01 · 86 阅读 · 0 评论 -
识别变化部分复用
that.businessDataParam1 = formData;that.businessDataParam2 = formData;that.businessDataParam3 = formData;that.clueDataParam1 = formData;that.clueDataParam2 = formData;that.clueDataParam3 = formData;识别变化部分:clue 3function set_pre_nu...原创 2021-01-30 10:26:54 · 72 阅读 · 0 评论 -
js中定义一个变量,由其他变量组成的办法
可以使用window[name] = " " 这种方式来定义变量:可以使用对象的形式:var test = {}; for(var i = 0; i < 3; i++){ test['test_'+i]='我是字符串'+i; console.log(test['test_'+i]); //输出:我是字符串0, 我是字符串1, 我是字符串2 }console.log(test_0); //输出:ReferenceError: test_0...原创 2021-01-30 10:22:41 · 328 阅读 · 0 评论 -
变量控制变量推算编程思路
只要有一个点是可以推算出其他的点,那么有一组公共算法,输入该点,得出其他的点然后进行同样的计算流程完成计算,只不过出发的点不同而已(此时脑海想到了模板设计模式)如:clueFormData1、clueDataParam1、cluechartData1、clueChartSettings1clueFormData2、clueDataParam2、cluechartData2、clueChartSettings2clueFormData3、clueDataParam3、cluechartData原创 2021-01-30 10:16:55 · 180 阅读 · 0 评论 -
系统中各处需要共用同一组数据时要做的事情
在做统计功能时发现,页面在统计时进行筛选,页面上有个导出按钮,要求导出当前页面的统计数据,筛选项要取当前的。因此把页面上当前筛选的状况保存到一个对象存储起来,导出的时候直接用该对象即可,不需要再重新去每个筛选项页面节点取、然后拼接。把一些内容放到一个对象存储起来,可以使代码逻辑更清晰,已经进行过的各操作的状态得到记录和便于后续的使用。符合一次计算,多次使用的原则。产品的设计也是如此,一旦有过某种产品设计的经验,未来无论去何种公司、何种生产线,可以通过对已有模型进行微调即可快速投产。...原创 2021-01-30 10:06:32 · 84 阅读 · 0 评论 -
js this 心得
this需要做变量,否则this指的是jq,导致找不到对应变量var that = this;this.open = truevar url=js.getajaxurl('export','export','main');switch (this.activeName) { case '线索统计': var export_arr = ['count_total_by_daqu_xs','count_new_by_daqu_xs','count_total_by_...原创 2021-01-29 17:26:54 · 206 阅读 · 0 评论 -
从视图获得的启发
视图通过把复杂的语句封装,其他人直接使用处理好的结果,这可以控制权限、减少其他人的失误。同样的,在程序中把某些复杂的内容封装,如封装复杂的算法,可以减少别人的失误,他们只要用就行了。封装复杂的东西,提供简单的接口给他人用,可以减少失误。...原创 2021-01-29 09:49:21 · 47 阅读 · 0 评论 -
mysql 视图
将复杂查询语句封装起来表面上看起来形成了一个表。后续直接查询该视图,而不需要重复写复杂的查询语句。简化了复杂语句的复用。原创 2021-01-29 09:07:32 · 33 阅读 · 0 评论 -
mysql 连表更新字段
update oa_customer2 a,oa_admin b set a.xzfzr = b.name where a.uid=b.id and a.xzfzr ='';原创 2021-01-28 11:52:23 · 284 阅读 · 0 评论 -
同一件事只做一次
做过的事情把做过的步骤记录下来,同一件事,永远只做一次,那么就会有更多的时间花在做新的事物上。原创 2021-01-28 09:50:41 · 68 阅读 · 0 评论 -
稀缺-如何解决组织中的时间稀缺
组织的“赘肉”一点一点地被雪貂,随之一同被带走的,还有余闲。在这种情况下,组织很希望有一位干将,不是整天想着如何将一分钱掰成两半花,而是能超脱于每日的管窥心态,确保组织拥有足够的余闲。他所关注的不是今天需要完成什么工作,而是明天可能会出现什么样的突发事件,而这些突发事件又会如何影响紧张的工作计划。他的存在,能够保证专注于当下目标工作的人们,不会向未来的项目借用资源。并因此耗尽余闲,讲组织拉入未来的带宽陷阱。...原创 2021-01-28 09:27:09 · 99 阅读 · 2 评论 -
代码复用总结
1、某一个函数如果能只做核心业务,达成它的根本目标的流程动作,那么就是最好的。2、函数为达成某个目标需要的辅助动作,交给其他类去处理,这样主线会清晰,函数职责分明,更容易解耦。 因此写程序时,每个类的职责就需要关注,如果一个类的职责过多,那么就得考虑拆分。有经验的开发者能在写之前就意识到要进行一定的拆分。...原创 2021-01-26 18:16:49 · 367 阅读 · 0 评论 -
js 把对象转为数组
a_values = Object.values(a); a_keys = Object.keys(a); var arr = [] for (let i in a_values) { arr[a_keys[i]] = a_values[i]; }原创 2021-01-20 18:23:52 · 174 阅读 · 0 评论 -
页面改变筛项,推荐文章列表跟着改变总结
这可以归结为一类问题:某个值改变,其他值改变。因此可以抽象出类似以下方法x.change = function(){do_achange();do_bchange();}//优化灵活配置x.change = function(){do_somechange();}so_somechange = function(set_need){if(!set_need.no_need_a){do_achange();}if(!set_need.no_need...原创 2021-01-20 10:35:46 · 34 阅读 · 0 评论 -
直播期间主播强制关闭软件的处理办法
1、主播关闭直播软件后,直播间依然存在,1分钟后会自动关闭该直播间,但是期间用户需要被提示主播暂时不在2、主播需要在1分钟内能重新继续本次直播3、提供一个编辑接口,允许在读取存在的直播间,并重新编辑内容开播...原创 2021-01-20 09:45:58 · 1124 阅读 · 0 评论